Skip to content

Commit

Permalink
pass savefile name to NDS::LoadROM() instead of having the core gener…
Browse files Browse the repository at this point in the history
…ate it.
  • Loading branch information
Arisotura committed Oct 23, 2018
1 parent a4a9bca commit f60ac42
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 23 deletions.
6 changes: 0 additions & 6 deletions src/GPU3D.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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++)
{
Expand Down
4 changes: 2 additions & 2 deletions src/NDS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion src/NDS.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
12 changes: 4 additions & 8 deletions src/NDSCart.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion src/NDSCart.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
26 changes: 21 additions & 5 deletions src/libui_sdl/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
{
Expand All @@ -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;
}
}
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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();
}
Expand Down Expand Up @@ -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();
}
}
Expand Down

0 comments on commit f60ac42

Please sign in to comment.