From 5aa777c46182ce156acda0eaba50636b1e263a37 Mon Sep 17 00:00:00 2001 From: shashclp Date: Wed, 20 Feb 2008 00:04:51 +0000 Subject: [PATCH] =?UTF-8?q?-=20Fix=20for=20the=20freeze=20on=20"New=20Supe?= =?UTF-8?q?r=20Mario=20Bros"=20=20minigames,=20reported=20by=20NHerv?= =?UTF-8?q?=EF=BF=BD=20After=20investigating,=20I=20found=20that=20the=20w?= =?UTF-8?q?hole=20ROM=20header=20wasn't=20copied=20to=20Main=20RAM=20as=20?= =?UTF-8?q?it's=20meant=20to=20be.=20This=20fixes=20"New=20Super=20Mario?= =?UTF-8?q?=20Bros"=20=20minigames,=20and=20probably=20others.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desmume/src/NDSSystem.c | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/desmume/src/NDSSystem.c b/desmume/src/NDSSystem.c index 3691991bf..8dc6228bf 100644 --- a/desmume/src/NDSSystem.c +++ b/desmume/src/NDSSystem.c @@ -486,24 +486,13 @@ void NDS_Reset( void) } } } - - MMU_write32(0, 0x027FFE40, header->FNameTblOff); - MMU_write32(0, 0x027FFE44, header->FNameTblSize); - MMU_write32(0, 0x027FFE48, header->FATOff); - MMU_write32(0, 0x027FFE4C, header->FATSize); - - MMU_write32(0, 0x027FFE50, header->ARM9OverlayOff); - MMU_write32(0, 0x027FFE54, header->ARM9OverlaySize); - MMU_write32(0, 0x027FFE58, header->ARM7OverlayOff); - MMU_write32(0, 0x027FFE5C, header->ARM7OverlaySize); - - MMU_write32(0, 0x027FFE60, header->unknown2a); - MMU_write32(0, 0x027FFE64, header->unknown2b); //merci EACKiX - MMU_write32(0, 0x027FFE70, header->ARM9unk); - MMU_write32(0, 0x027FFE74, header->ARM7unk); - - MMU_write32(0, 0x027FFF9C, 0x027FFF90); // ?????? besoin d'avoir la vrai valeur sur ds + // Copy the whole header to Main RAM 0x27FFE00 on startup. + // Reference: http://nocash.emubase.de/gbatek.htm#dscartridgeheader + for (i = 0; i < ((0x170+0x90)/4); i++) + { + MMU_write32 (0, 0x027FFE00+i*4, ((u32*)MMU.CART_ROM)[i]); + } MainScreen.offset = 0; SubScreen.offset = 192;