diff options
author | StapleButter <thetotalworm@gmail.com> | 2018-10-23 21:52:41 +0200 |
---|---|---|
committer | StapleButter <thetotalworm@gmail.com> | 2018-10-23 21:52:41 +0200 |
commit | f60ac424660a18e34ce1f50983d2cfd302740ae4 (patch) | |
tree | 06304ab6873a5ea086e90f7809a1feba5a89a5cf | |
parent | a4a9bca5f035c45a246afe31e9a0c1e280c3225e (diff) |
pass savefile name to NDS::LoadROM() instead of having the core generate it.
-rw-r--r-- | src/GPU3D.cpp | 6 | ||||
-rw-r--r-- | src/NDS.cpp | 4 | ||||
-rw-r--r-- | src/NDS.h | 2 | ||||
-rw-r--r-- | src/NDSCart.cpp | 12 | ||||
-rw-r--r-- | src/NDSCart.h | 2 | ||||
-rw-r--r-- | src/libui_sdl/main.cpp | 26 |
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; @@ -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(); } } |