diff options
Diffstat (limited to 'src/NDS.cpp')
-rw-r--r-- | src/NDS.cpp | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/src/NDS.cpp b/src/NDS.cpp index 60f7731..7418dca 100644 --- a/src/NDS.cpp +++ b/src/NDS.cpp @@ -385,6 +385,30 @@ void SetupDirectBoot(std::string romname) { MapSharedWRAM(3); + // setup main RAM data + + for (u32 i = 0; i < 0x170; i+=4) + { + u32 tmp = *(u32*)&NDSCart::CartROM[i]; + ARM9Write32(0x027FFE00+i, tmp); + } + + ARM9Write32(0x027FF800, NDSCart::CartID); + ARM9Write32(0x027FF804, NDSCart::CartID); + ARM9Write16(0x027FF808, NDSCart::Header.HeaderCRC16); + ARM9Write16(0x027FF80A, NDSCart::Header.SecureAreaCRC16); + + ARM9Write16(0x027FF850, 0x5835); + + ARM9Write32(0x027FFC00, NDSCart::CartID); + ARM9Write32(0x027FFC04, NDSCart::CartID); + ARM9Write16(0x027FFC08, NDSCart::Header.HeaderCRC16); + ARM9Write16(0x027FFC0A, NDSCart::Header.SecureAreaCRC16); + + ARM9Write16(0x027FFC10, 0x5835); + ARM9Write16(0x027FFC30, 0xFFFF); + ARM9Write16(0x027FFC40, 0x0001); + u32 arm9start = 0; // load the ARM9 secure area @@ -414,28 +438,6 @@ void SetupDirectBoot(std::string romname) ARM7Write32(NDSCart::Header.ARM7RAMAddress+i, tmp); } - for (u32 i = 0; i < 0x170; i+=4) - { - u32 tmp = *(u32*)&NDSCart::CartROM[i]; - ARM9Write32(0x027FFE00+i, tmp); - } - - ARM9Write32(0x027FF800, NDSCart::CartID); - ARM9Write32(0x027FF804, NDSCart::CartID); - ARM9Write16(0x027FF808, NDSCart::Header.HeaderCRC16); - ARM9Write16(0x027FF80A, NDSCart::Header.SecureAreaCRC16); - - ARM9Write16(0x027FF850, 0x5835); - - ARM9Write32(0x027FFC00, NDSCart::CartID); - ARM9Write32(0x027FFC04, NDSCart::CartID); - ARM9Write16(0x027FFC08, NDSCart::Header.HeaderCRC16); - ARM9Write16(0x027FFC0A, NDSCart::Header.SecureAreaCRC16); - - ARM9Write16(0x027FFC10, 0x5835); - ARM9Write16(0x027FFC30, 0xFFFF); - ARM9Write16(0x027FFC40, 0x0001); - ARM7BIOSProt = 0x1204; SPI_Firmware::SetupDirectBoot(false); |