aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStapleButter <thetotalworm@gmail.com>2018-10-23 21:52:41 +0200
committerStapleButter <thetotalworm@gmail.com>2018-10-23 21:52:41 +0200
commitf60ac424660a18e34ce1f50983d2cfd302740ae4 (patch)
tree06304ab6873a5ea086e90f7809a1feba5a89a5cf
parenta4a9bca5f035c45a246afe31e9a0c1e280c3225e (diff)
pass savefile name to NDS::LoadROM() instead of having the core generate it.
-rw-r--r--src/GPU3D.cpp6
-rw-r--r--src/NDS.cpp4
-rw-r--r--src/NDS.h2
-rw-r--r--src/NDSCart.cpp12
-rw-r--r--src/NDSCart.h2
-rw-r--r--src/libui_sdl/main.cpp26
6 files changed, 29 insertions, 23 deletions
diff --git a/src/GPU3D.cpp b/src/GPU3D.cpp
index 7aa7142..6e4d26a 100644
--- a/src/GPU3D.cpp
+++ b/src/GPU3D.cpp
@@ -403,12 +403,6 @@ void DoSavestate(Savestate* file)
file->Var32(&VertexNum);
file->Var32(&VertexNumInPoly);
file->Var32(&NumConsecutivePolygons);
- /*Vertex TempVertexBuffer[4];
-u32 VertexNum;
-u32 VertexNumInPoly;
-u32 NumConsecutivePolygons;
-Polygon* LastStripPolygon;
-u32 NumOpaquePolygons;*/
for (int i = 0; i < 4; i++)
{
diff --git a/src/NDS.cpp b/src/NDS.cpp
index 042b625..8528307 100644
--- a/src/NDS.cpp
+++ b/src/NDS.cpp
@@ -542,9 +542,9 @@ bool DoSavestate(Savestate* file)
return true;
}
-bool LoadROM(const char* path, bool direct)
+bool LoadROM(const char* path, const char* sram, bool direct)
{
- if (NDSCart::LoadROM(path, direct))
+ if (NDSCart::LoadROM(path, sram, direct))
{
Running = true;
return true;
diff --git a/src/NDS.h b/src/NDS.h
index 98e507e..99d80b4 100644
--- a/src/NDS.h
+++ b/src/NDS.h
@@ -111,7 +111,7 @@ void Stop();
bool DoSavestate(Savestate* file);
-bool LoadROM(const char* path, bool direct);
+bool LoadROM(const char* path, const char* sram, bool direct);
void LoadBIOS();
void SetupDirectBoot();
diff --git a/src/NDSCart.cpp b/src/NDSCart.cpp
index 84e1564..ab2a5f9 100644
--- a/src/NDSCart.cpp
+++ b/src/NDSCart.cpp
@@ -138,7 +138,7 @@ void DoSavestate(Savestate* file)
file->Var32(&Addr);
}
-void LoadSave(char* path)
+void LoadSave(const char* path)
{
if (SRAM) delete[] SRAM;
if (Discover_Buffer) delete[] Discover_Buffer;
@@ -1040,7 +1040,7 @@ void ApplyDLDIPatch()
}
-bool LoadROM(const char* path, bool direct)
+bool LoadROM(const char* path, const char* sram, bool direct)
{
// TODO: streaming mode? for really big ROMs or systems with limited RAM
// for now we're lazy
@@ -1121,12 +1121,8 @@ bool LoadROM(const char* path, bool direct)
// save
- char savepath[256];
- strncpy(savepath, path, 255);
- savepath[255] = '\0';
- strncpy(savepath + strlen(path) - 3, "sav", 3);
- printf("Save file: %s\n", savepath);
- NDSCart_SRAM::LoadSave(savepath);
+ printf("Save file: %s\n", sram);
+ NDSCart_SRAM::LoadSave(sram);
return true;
}
diff --git a/src/NDSCart.h b/src/NDSCart.h
index e99e938..d00d40e 100644
--- a/src/NDSCart.h
+++ b/src/NDSCart.h
@@ -44,7 +44,7 @@ void Reset();
void DoSavestate(Savestate* file);
-bool LoadROM(const char* path, bool direct);
+bool LoadROM(const char* path, const char* sram, bool direct);
void WriteROMCnt(u32 val);
u32 ReadROMData();
diff --git a/src/libui_sdl/main.cpp b/src/libui_sdl/main.cpp
index 3cb37d3..6072804 100644
--- a/src/libui_sdl/main.cpp
+++ b/src/libui_sdl/main.cpp
@@ -73,6 +73,8 @@ volatile int EmuStatus;
bool RunningSomething;
char ROMPath[1024];
+char SRAMPath[1024];
+char PrevSRAMPath[1024]; // for savestate 'undo load'
bool ScreenDrawInited = false;
uiDrawBitmap* ScreenBitmap = NULL;
@@ -775,15 +777,26 @@ void Stop(bool internal)
uiAreaQueueRedrawAll(MainDrawArea);
}
+void SetupSRAMPath()
+{
+ strncpy(SRAMPath, ROMPath, 1023);
+ SRAMPath[1023] = '\0';
+ strncpy(SRAMPath + strlen(ROMPath) - 3, "sav", 3);
+}
+
void TryLoadROM(char* file, int prevstatus)
{
char oldpath[1024];
+ char oldsram[1024];
strncpy(oldpath, ROMPath, 1024);
+ strncpy(oldsram, SRAMPath, 1024);
strncpy(ROMPath, file, 1023);
ROMPath[1023] = '\0';
- if (NDS::LoadROM(ROMPath, Config::DirectBoot))
+ SetupSRAMPath();
+
+ if (NDS::LoadROM(ROMPath, SRAMPath, Config::DirectBoot))
Run();
else
{
@@ -792,6 +805,7 @@ void TryLoadROM(char* file, int prevstatus)
"Make sure the file can be accessed and isn't opened in another application.");
strncpy(ROMPath, oldpath, 1024);
+ strncpy(SRAMPath, oldsram, 1024);
EmuRunning = prevstatus;
}
}
@@ -841,7 +855,7 @@ void LoadState(int slot)
}
else
{
- char* file = uiOpenFile(MainWindow, "melonDS savestate|*.ml1;*.ml2;*.ml3;*.ml4;*.ml5;*.ml6;*.ml7;*.ml8;*.mln", NULL);
+ char* file = uiOpenFile(MainWindow, "melonDS savestate (any)|*.ml1;*.ml2;*.ml3;*.ml4;*.ml5;*.ml6;*.ml7;*.ml8;*.mln", NULL);
if (!file)
{
EmuRunning = prevstatus;
@@ -889,7 +903,7 @@ void SaveState(int slot)
}
else
{
- char* file = uiSaveFile(MainWindow, "melonDS savestate|*.ml1;*.ml2;*.ml3;*.ml4;*.ml5;*.ml6;*.ml7;*.ml8;*.mln", NULL);
+ char* file = uiSaveFile(MainWindow, "melonDS savestate (*.mln)|*.mln", NULL);
if (!file)
{
EmuRunning = prevstatus;
@@ -1052,7 +1066,7 @@ void OnReset(uiMenuItem* item, uiWindow* window, void* blarg)
if (ROMPath[0] == '\0')
NDS::LoadBIOS();
else
- NDS::LoadROM(ROMPath, Config::DirectBoot);
+ NDS::LoadROM(ROMPath, SRAMPath, Config::DirectBoot);
Run();
}
@@ -1460,7 +1474,9 @@ int main(int argc, char** argv)
strncpy(ROMPath, file, 1023);
ROMPath[1023] = '\0';
- if (NDS::LoadROM(ROMPath, Config::DirectBoot))
+ SetupSRAMPath();
+
+ if (NDS::LoadROM(ROMPath, SRAMPath, Config::DirectBoot))
Run();
}
}