mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-23 06:10:03 -06:00
add palette and OAM dirty flag
currently not used anywhere
This commit is contained in:
@ -142,6 +142,9 @@ u8 VRAMFlat_BOBJExtPal[8*1024];
|
|||||||
u8 VRAMFlat_Texture[512*1024];
|
u8 VRAMFlat_Texture[512*1024];
|
||||||
u8 VRAMFlat_TexPal[128*1024];
|
u8 VRAMFlat_TexPal[128*1024];
|
||||||
|
|
||||||
|
u32 OAMDirty;
|
||||||
|
u32 PaletteDirty;
|
||||||
|
|
||||||
bool Init()
|
bool Init()
|
||||||
{
|
{
|
||||||
GPU2D_A = new GPU2D_Soft(0);
|
GPU2D_A = new GPU2D_Soft(0);
|
||||||
@ -272,6 +275,9 @@ void Reset()
|
|||||||
ResetRenderer();
|
ResetRenderer();
|
||||||
|
|
||||||
ResetVRAMCache();
|
ResetVRAMCache();
|
||||||
|
|
||||||
|
OAMDirty = 0x3;
|
||||||
|
PaletteDirty = 0xF;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Stop()
|
void Stop()
|
||||||
|
32
src/GPU.h
32
src/GPU.h
@ -147,6 +147,9 @@ bool MakeVRAMFlat_TexPalCoherent(NonStupidBitField<128*1024/VRAMDirtyGranularity
|
|||||||
|
|
||||||
void SyncDirtyFlags();
|
void SyncDirtyFlags();
|
||||||
|
|
||||||
|
extern u32 OAMDirty;
|
||||||
|
extern u32 PaletteDirty;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
bool Soft_Threaded;
|
bool Soft_Threaded;
|
||||||
@ -509,6 +512,35 @@ T ReadVRAM_TexPal(u32 addr)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
T ReadPalette(u32 addr)
|
||||||
|
{
|
||||||
|
return *(T*)&Palette[addr & 0x7FF];
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void WritePalette(u32 addr, T val)
|
||||||
|
{
|
||||||
|
addr &= 0x7FF;
|
||||||
|
|
||||||
|
*(T*)&Palette[addr] = val;
|
||||||
|
PaletteDirty |= 1 << (addr / VRAMDirtyGranularity);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
T ReadOAM(u32 addr)
|
||||||
|
{
|
||||||
|
return *(T*)&OAM[addr & 0x7FF];
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void WriteOAM(u32 addr, T val)
|
||||||
|
{
|
||||||
|
addr &= 0x7FF;
|
||||||
|
|
||||||
|
*(T*)&OAM[addr] = val;
|
||||||
|
OAMDirty |= 1 << (addr / 1024);
|
||||||
|
}
|
||||||
|
|
||||||
void SetPowerCnt(u32 val);
|
void SetPowerCnt(u32 val);
|
||||||
|
|
||||||
|
20
src/NDS.cpp
20
src/NDS.cpp
@ -1881,7 +1881,7 @@ u8 ARM9Read8(u32 addr)
|
|||||||
|
|
||||||
case 0x05000000:
|
case 0x05000000:
|
||||||
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return 0;
|
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return 0;
|
||||||
return *(u8*)&GPU::Palette[addr & 0x7FF];
|
return GPU::ReadPalette<u8>(addr);
|
||||||
|
|
||||||
case 0x06000000:
|
case 0x06000000:
|
||||||
switch (addr & 0x00E00000)
|
switch (addr & 0x00E00000)
|
||||||
@ -1895,7 +1895,7 @@ u8 ARM9Read8(u32 addr)
|
|||||||
|
|
||||||
case 0x07000000:
|
case 0x07000000:
|
||||||
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return 0;
|
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return 0;
|
||||||
return *(u8*)&GPU::OAM[addr & 0x7FF];
|
return GPU::ReadOAM<u8>(addr);
|
||||||
|
|
||||||
case 0x08000000:
|
case 0x08000000:
|
||||||
case 0x09000000:
|
case 0x09000000:
|
||||||
@ -1946,7 +1946,7 @@ u16 ARM9Read16(u32 addr)
|
|||||||
|
|
||||||
case 0x05000000:
|
case 0x05000000:
|
||||||
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return 0;
|
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return 0;
|
||||||
return *(u16*)&GPU::Palette[addr & 0x7FF];
|
return GPU::ReadPalette<u16>(addr);
|
||||||
|
|
||||||
case 0x06000000:
|
case 0x06000000:
|
||||||
switch (addr & 0x00E00000)
|
switch (addr & 0x00E00000)
|
||||||
@ -1960,7 +1960,7 @@ u16 ARM9Read16(u32 addr)
|
|||||||
|
|
||||||
case 0x07000000:
|
case 0x07000000:
|
||||||
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return 0;
|
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return 0;
|
||||||
return *(u16*)&GPU::OAM[addr & 0x7FF];
|
return GPU::ReadOAM<u16>(addr);
|
||||||
|
|
||||||
case 0x08000000:
|
case 0x08000000:
|
||||||
case 0x09000000:
|
case 0x09000000:
|
||||||
@ -2011,7 +2011,7 @@ u32 ARM9Read32(u32 addr)
|
|||||||
|
|
||||||
case 0x05000000:
|
case 0x05000000:
|
||||||
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return 0;
|
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return 0;
|
||||||
return *(u32*)&GPU::Palette[addr & 0x7FF];
|
return GPU::ReadPalette<u32>(addr);
|
||||||
|
|
||||||
case 0x06000000:
|
case 0x06000000:
|
||||||
switch (addr & 0x00E00000)
|
switch (addr & 0x00E00000)
|
||||||
@ -2025,7 +2025,7 @@ u32 ARM9Read32(u32 addr)
|
|||||||
|
|
||||||
case 0x07000000:
|
case 0x07000000:
|
||||||
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return 0;
|
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return 0;
|
||||||
return *(u32*)&GPU::OAM[addr & 0x7FF];
|
return GPU::ReadOAM<u32>(addr & 0x7FF);
|
||||||
|
|
||||||
case 0x08000000:
|
case 0x08000000:
|
||||||
case 0x09000000:
|
case 0x09000000:
|
||||||
@ -2132,7 +2132,7 @@ void ARM9Write16(u32 addr, u16 val)
|
|||||||
|
|
||||||
case 0x05000000:
|
case 0x05000000:
|
||||||
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return;
|
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return;
|
||||||
*(u16*)&GPU::Palette[addr & 0x7FF] = val;
|
GPU::WritePalette<u16>(addr, val);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case 0x06000000:
|
case 0x06000000:
|
||||||
@ -2150,7 +2150,7 @@ void ARM9Write16(u32 addr, u16 val)
|
|||||||
|
|
||||||
case 0x07000000:
|
case 0x07000000:
|
||||||
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return;
|
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return;
|
||||||
*(u16*)&GPU::OAM[addr & 0x7FF] = val;
|
GPU::WriteOAM<u16>(addr, val);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case 0x08000000:
|
case 0x08000000:
|
||||||
@ -2207,7 +2207,7 @@ void ARM9Write32(u32 addr, u32 val)
|
|||||||
|
|
||||||
case 0x05000000:
|
case 0x05000000:
|
||||||
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return;
|
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return;
|
||||||
*(u32*)&GPU::Palette[addr & 0x7FF] = val;
|
GPU::WritePalette(addr, val);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case 0x06000000:
|
case 0x06000000:
|
||||||
@ -2225,7 +2225,7 @@ void ARM9Write32(u32 addr, u32 val)
|
|||||||
|
|
||||||
case 0x07000000:
|
case 0x07000000:
|
||||||
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return;
|
if (!(PowerControl9 & ((addr & 0x400) ? (1<<9) : (1<<1)))) return;
|
||||||
*(u32*)&GPU::OAM[addr & 0x7FF] = val;
|
GPU::WriteOAM<u32>(addr, val);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case 0x08000000:
|
case 0x08000000:
|
||||||
|
Reference in New Issue
Block a user