mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-26 15:50:00 -06:00
DSi: add support for SCFG_EXT bit 13 (32-bit VRAM bus)
This commit is contained in:
25
src/DSi.cpp
25
src/DSi.cpp
@ -175,6 +175,8 @@ void DSi::Reset()
|
|||||||
// LCD init flag
|
// LCD init flag
|
||||||
GPU.DispStat[0] |= (1<<6);
|
GPU.DispStat[0] |= (1<<6);
|
||||||
GPU.DispStat[1] |= (1<<6);
|
GPU.DispStat[1] |= (1<<6);
|
||||||
|
|
||||||
|
UpdateVRAMTimings();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DSi::Stop(Platform::StopReason reason)
|
void DSi::Stop(Platform::StopReason reason)
|
||||||
@ -285,6 +287,8 @@ void DSi::DoSavestateExtra(Savestate* file)
|
|||||||
I2C.DoSavestate(file);
|
I2C.DoSavestate(file);
|
||||||
SDMMC.DoSavestate(file);
|
SDMMC.DoSavestate(file);
|
||||||
SDIO.DoSavestate(file);
|
SDIO.DoSavestate(file);
|
||||||
|
|
||||||
|
UpdateVRAMTimings();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DSi::SetCartInserted(bool inserted)
|
void DSi::SetCartInserted(bool inserted)
|
||||||
@ -666,6 +670,8 @@ void DSi::SetupDirectBoot()
|
|||||||
ARM9.CP15Write(0x671, 0x02FFC01B);
|
ARM9.CP15Write(0x671, 0x02FFC01B);
|
||||||
ARM9.CP15Write(0x910, 0x0E00000A);
|
ARM9.CP15Write(0x910, 0x0E00000A);
|
||||||
ARM9.CP15Write(0x911, 0x00000020);
|
ARM9.CP15Write(0x911, 0x00000020);
|
||||||
|
|
||||||
|
UpdateVRAMTimings();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DSi::SoftReset()
|
void DSi::SoftReset()
|
||||||
@ -717,10 +723,11 @@ void DSi::SoftReset()
|
|||||||
SCFG_RST = 0;
|
SCFG_RST = 0;
|
||||||
DSP.SetRstLine(false);
|
DSP.SetRstLine(false);
|
||||||
|
|
||||||
|
|
||||||
// LCD init flag
|
// LCD init flag
|
||||||
GPU.DispStat[0] |= (1<<6);
|
GPU.DispStat[0] |= (1<<6);
|
||||||
GPU.DispStat[1] |= (1<<6);
|
GPU.DispStat[1] |= (1<<6);
|
||||||
|
|
||||||
|
UpdateVRAMTimings();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DSi::LoadNAND()
|
bool DSi::LoadNAND()
|
||||||
@ -1252,6 +1259,20 @@ void DSi::MapNWRAMRange(u32 cpu, u32 num, u32 val)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DSi::UpdateVRAMTimings()
|
||||||
|
{
|
||||||
|
if (SCFG_EXT[0] & (1<<13))
|
||||||
|
{
|
||||||
|
SetARM9RegionTimings(0x06000, 0x07000, Mem9_VRAM, 32, 1, 1);
|
||||||
|
SetARM7RegionTimings(0x06000, 0x07000, Mem7_VRAM, 32, 1, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetARM9RegionTimings(0x06000, 0x07000, Mem9_VRAM, 16, 1, 1);
|
||||||
|
SetARM7RegionTimings(0x06000, 0x07000, Mem7_VRAM, 16, 1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DSi::ApplyNewRAMSize(u32 size)
|
void DSi::ApplyNewRAMSize(u32 size)
|
||||||
{
|
{
|
||||||
switch (size)
|
switch (size)
|
||||||
@ -2565,6 +2586,8 @@ void DSi::ARM9IOWrite32(u32 addr, u32 val)
|
|||||||
//if (newram != oldram)
|
//if (newram != oldram)
|
||||||
// NDS::ScheduleEvent(NDS::Event_DSi_RAMSizeChange, false, 512*512*512, ApplyNewRAMSize, newram);
|
// NDS::ScheduleEvent(NDS::Event_DSi_RAMSizeChange, false, 512*512*512, ApplyNewRAMSize, newram);
|
||||||
Log(LogLevel::Debug, "from %08X, ARM7 %08X, %08X\n", NDS::GetPC(0), NDS::GetPC(1), ARM7.R[1]);
|
Log(LogLevel::Debug, "from %08X, ARM7 %08X, %08X\n", NDS::GetPC(0), NDS::GetPC(1), ARM7.R[1]);
|
||||||
|
|
||||||
|
UpdateVRAMTimings();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -97,6 +97,8 @@ public:
|
|||||||
void MapNWRAM_C(u32 num, u8 val);
|
void MapNWRAM_C(u32 num, u8 val);
|
||||||
void MapNWRAMRange(u32 cpu, u32 num, u32 val);
|
void MapNWRAMRange(u32 cpu, u32 num, u32 val);
|
||||||
|
|
||||||
|
void UpdateVRAMTimings();
|
||||||
|
|
||||||
u8 ARM9Read8(u32 addr) override;
|
u8 ARM9Read8(u32 addr) override;
|
||||||
u16 ARM9Read16(u32 addr) override;
|
u16 ARM9Read16(u32 addr) override;
|
||||||
u32 ARM9Read32(u32 addr) override;
|
u32 ARM9Read32(u32 addr) override;
|
||||||
|
Reference in New Issue
Block a user