diff options
Diffstat (limited to 'src/NDSCart.cpp')
-rw-r--r-- | src/NDSCart.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/NDSCart.cpp b/src/NDSCart.cpp index 216b3fb..03f536a 100644 --- a/src/NDSCart.cpp +++ b/src/NDSCart.cpp @@ -22,6 +22,8 @@ #include "NDSCart.h" #include "ARM.h" +#include "melon_fopen.h" + namespace NDSCart_SRAM { @@ -92,7 +94,7 @@ void LoadSave(char* path) strncpy(SRAMPath, path, 255); SRAMPath[255] = '\0'; - FILE* f = fopen(path, "rb"); + FILE* f = melon_fopen(path, "rb"); if (f) { fseek(f, 0, SEEK_END); @@ -624,7 +626,7 @@ void Write(u8 val, u32 hold) if (islast && (CurCmd == 0x02 || CurCmd == 0x0A) && (SRAMLength > 0)) { - FILE* f = fopen(SRAMPath, "wb"); + FILE* f = melon_fopen(SRAMPath, "wb"); if (f) { fwrite(SRAM, SRAMLength, 1, f); @@ -817,15 +819,14 @@ bool LoadROM(const char* path, bool direct) // TODO: streaming mode? for really big ROMs or systems with limited RAM // for now we're lazy - if (CartROM) delete[] CartROM; - - FILE* f = fopen(path, "rb"); + FILE* f = melon_fopen(path, "rb"); if (!f) { - printf("Failed to open ROM file %s\n", path); return false; } + NDS::Reset(); + fseek(f, 0, SEEK_END); u32 len = (u32)ftell(f); @@ -845,6 +846,11 @@ bool LoadROM(const char* path, bool direct) fclose(f); //CartROM = f; + // generate a ROM ID + // note: most games don't check the actual value + // it just has to stay the same throughout gameplay + CartID = 0x00001FC2; + if (direct) { NDS::SetupDirectBoot(); @@ -853,11 +859,6 @@ bool LoadROM(const char* path, bool direct) CartInserted = true; - // generate a ROM ID - // note: most games don't check the actual value - // it just has to stay the same throughout gameplay - CartID = 0x00001FC2; - u32 arm9base = *(u32*)&CartROM[0x20]; if (arm9base < 0x8000) { |