aboutsummaryrefslogtreecommitdiff
path: root/src/NDSCart.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/NDSCart.cpp')
-rw-r--r--src/NDSCart.cpp23
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)
{