From c44819873aeddf5f8982a449aa19896b023b3261 Mon Sep 17 00:00:00 2001 From: zeromus Date: Thu, 14 Apr 2011 21:05:19 +0000 Subject: [PATCH] add boot-up vram randomization for homebrew games, to more accurately mimic being loaded from a flash card that leaves behind some junk --- desmume/src/NDSSystem.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/desmume/src/NDSSystem.cpp b/desmume/src/NDSSystem.cpp index 1cbaf269b..99eedb481 100644 --- a/desmume/src/NDSSystem.cpp +++ b/desmume/src/NDSSystem.cpp @@ -493,11 +493,28 @@ int NDS_LoadROM(const char *filename, const char *logicalFilename) INFO("ROM game code: %c%c%c%c\n\n", gameInfo.header.gameCode[0], gameInfo.header.gameCode[1], gameInfo.header.gameCode[2], gameInfo.header.gameCode[3]); //for homebrew, try auto-patching DLDI. should be benign if there is no DLDI or if it fails - if(!memcmp(gameInfo.header.gameCode,"####",4)) + bool isHomebrew = !memcmp(gameInfo.header.gameCode,"####",4); + if(isHomebrew) DLDI::tryPatch((void*)gameInfo.romdata, gameInfo.romsize); NDS_Reset(); + //put garbage in vram for homebrew games, to help mimic the situation where libnds does not clear out junk + //which the card's launcher may or may not have left behind + if(isHomebrew) + { + u32 w=100000,x=99,y=117,z=19382173; + for(int i=0;i>19))^(t^(t>>8))); + MMU.ARM9_LCD[i] = t; + } + } + memset(buf, 0, MAX_PATH); path.getpathnoext(path.BATTERY, buf);