Skip to content

Commit 1db5729

Browse files
authored
Cartridge emulation improvements (#2595)
* refine cart interface implementation to match hardware, including timing fixes * add second cart slot for DSi * fully implement SCFG_MC * move cart classes to subdirectory fixes #2586 fixes #380 (might need extensive testing) fixes Surviving High School (DSiWare)
1 parent cd85f55 commit 1db5729

28 files changed

Lines changed: 3662 additions & 2364 deletions

src/ARMJIT_Memory.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1433,9 +1433,14 @@ static void GPU_WriteVRAM_ARM7(u32 addr, T val) noexcept
14331433
NDS::Current->GPU.WriteVRAM_ARM7<T>(addr, val);
14341434
}
14351435

1436-
u32 NDSCartSlot_ReadROMData()
1437-
{ // TODO: Add a NDS* parameter, when NDS* is eventually implemented
1438-
return NDS::Current->NDSCartSlot.ReadROMData();
1436+
u32 NDSCartSlot_ReadROMData9()
1437+
{
1438+
return NDS::Current->NDSCartSlots[0]->ReadROMData(0);
1439+
}
1440+
1441+
u32 NDSCartSlot_ReadROMData7()
1442+
{
1443+
return NDS::Current->NDSCartSlots[0]->ReadROMData(1);
14391444
}
14401445

14411446
static u8 NDS_ARM9IORead8(u32 addr)
@@ -1505,8 +1510,8 @@ void* ARMJIT_Memory::GetFuncForAddr(ARM* cpu, u32 addr, bool store, int size) co
15051510
switch (addr & 0xFF000000)
15061511
{
15071512
case 0x04000000:
1508-
if (!store && size == 32 && addr == 0x04100010 && NDS.ExMemCnt[0] & (1<<11))
1509-
return (void*)NDSCartSlot_ReadROMData;
1513+
if (!store && size == 32 && addr == 0x04100010)
1514+
return (void*)NDSCartSlot_ReadROMData9;
15101515

15111516
/*
15121517
unfortunately we can't map GPU2D this way

src/CMakeLists.txt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,9 @@ add_library(core STATIC
4141
GPU3D_Soft.cpp
4242
GPU3D_Texcache.cpp
4343
GPU3D_Texcache.h
44-
melonDLDI.h
4544
Mic.cpp
4645
NDS.cpp
4746
NDSCart.cpp
48-
NDSCartR4.cpp
4947
Platform.h
5048
ROMList.h
5149
ROMList.cpp
@@ -67,6 +65,15 @@ add_library(core STATIC
6765
DSP_HLE/G711Ucode.cpp
6866
DSP_HLE/GraphicsUcode.cpp
6967

68+
NDSCart/CartCommon.cpp
69+
NDSCart/CartRetail.cpp
70+
NDSCart/CartRetailNAND.cpp
71+
NDSCart/CartRetailIR.cpp
72+
NDSCart/CartRetailBT.cpp
73+
NDSCart/CartSD.cpp
74+
NDSCart/CartHomebrew.cpp
75+
NDSCart/CartR4.cpp
76+
7077
fatfs/ff.c
7178
fatfs/ffsystem.c
7279
fatfs/ffunicode.c

0 commit comments

Comments
 (0)