From 5df651b562b9c15ce4573cfc399bd81b10bc1f74 Mon Sep 17 00:00:00 2001 From: dborth Date: Wed, 15 Apr 2009 05:55:17 +0000 Subject: [PATCH] corrections/improvements to game saving --- source/ngc/freeze.cpp | 49 +++++++++++++++--------------- source/ngc/gui/gui_savebrowser.cpp | 8 ++--- source/ngc/input.cpp | 2 +- source/ngc/menu.cpp | 10 +++--- 4 files changed, 35 insertions(+), 34 deletions(-) diff --git a/source/ngc/freeze.cpp b/source/ngc/freeze.cpp index c046bba..69640fa 100644 --- a/source/ngc/freeze.cpp +++ b/source/ngc/freeze.cpp @@ -135,6 +135,31 @@ NGCFreezeGame (char * filepath, int method, bool silent) if(method == METHOD_AUTO) return 0; + // save screenshot - I would prefer to do this from gameScreenTex + if(gameScreenTex2 != NULL && method != METHOD_MC_SLOTA && method != METHOD_MC_SLOTB) + { + AllocSaveBuffer (); + + IMGCTX pngContext = PNGU_SelectImageFromBuffer(savebuffer); + + if (pngContext != NULL) + { + imgSize = PNGU_EncodeFromGXTexture(pngContext, screenwidth, screenheight, gameScreenTex2, 0); + PNGU_ReleaseImageContext(pngContext); + } + + if(imgSize > 0) + { + char screenpath[1024]; + strncpy(screenpath, filepath, 1024); + screenpath[strlen(screenpath)-4] = 0; + sprintf(screenpath, "%s.png", screenpath); + SaveFile(screenpath, imgSize, method, silent); + } + + FreeSaveBuffer (); + } + S9xSetSoundMute (TRUE); S9xPrepareSoundForSnapshotSave (FALSE); @@ -185,30 +210,6 @@ done: FreeSaveBuffer (); - // save screenshot - I would prefer to do this from gameScreenTex - if(gameScreenTex2 != NULL && method != METHOD_MC_SLOTA && method != METHOD_MC_SLOTB) - { - AllocSaveBuffer (); - - IMGCTX pngContext = PNGU_SelectImageFromBuffer(savebuffer); - - if (pngContext != NULL) - { - imgSize = PNGU_EncodeFromGXTexture(pngContext, 640, 480, gameScreenTex2, 0); - PNGU_ReleaseImageContext(pngContext); - } - - if(imgSize > 0) - { - char screenpath[1024]; - filepath[strlen(filepath)-4] = 0; - sprintf(screenpath, "%s.png", filepath); - SaveFile(screenpath, imgSize, method, silent); - } - - FreeSaveBuffer (); - } - if(offset > 0) // save successful! { if(!silent) diff --git a/source/ngc/gui/gui_savebrowser.cpp b/source/ngc/gui/gui_savebrowser.cpp index bdf8693..c951a16 100644 --- a/source/ngc/gui/gui_savebrowser.cpp +++ b/source/ngc/gui/gui_savebrowser.cpp @@ -22,10 +22,10 @@ GuiSaveBrowser::GuiSaveBrowser(int w, int h, SaveList * s, int a) action = a; selectable = true; - if(action == 0) // save + if(action == 0) // load listOffset = 0; else - listOffset = -2; + listOffset = -2; // save - reserve -2 & -1 for new slots selectedItem = 0; focus = 0; // allow focus @@ -199,13 +199,13 @@ void GuiSaveBrowser::ResetState() int GuiSaveBrowser::GetClickedSave() { - int found = -1; + int found = -3; for(int i=0; iGetState() == STATE_CLICKED) { saveBtn[i]->SetState(STATE_SELECTED); - found = i; + found = listOffset+i; break; } } diff --git a/source/ngc/input.cpp b/source/ngc/input.cpp index 131d134..ecc24fb 100644 --- a/source/ngc/input.cpp +++ b/source/ngc/input.cpp @@ -606,7 +606,7 @@ void SetControllers() else if (Settings.SuperScopeMaster == true) { S9xSetController (0, CTL_JOYPAD, 0, 0, 0, 0); - S9xSetController (1, CTL_SUPERSCOPE, 1, 0, 0, 0); + S9xSetController (1, CTL_SUPERSCOPE, 0, 0, 0, 0); } else if (Settings.MouseMaster == true) { diff --git a/source/ngc/menu.cpp b/source/ngc/menu.cpp index 0c08523..2ef695d 100644 --- a/source/ngc/menu.cpp +++ b/source/ngc/menu.cpp @@ -1626,7 +1626,7 @@ static int MenuGameSaves(int action) ret = saveBrowser.GetClickedSave(); // load or save game - if(ret >= 0) + if(ret > -3) { int result = 0; @@ -1647,7 +1647,7 @@ static int MenuGameSaves(int action) } else // save { - if(ret == 0) // new SRAM + if(ret == -2) // new SRAM { for(i=1; i < 100; i++) if(saves.files[FILE_SRAM][i] == 0) @@ -1660,7 +1660,7 @@ static int MenuGameSaves(int action) menu = MENU_GAME_SAVE; } } - else if(ret == 1) // new Snapshot + else if(ret == -1) // new Snapshot { for(i=1; i < 100; i++) if(saves.files[FILE_SNAPSHOT][i] == 0) @@ -1675,8 +1675,8 @@ static int MenuGameSaves(int action) } else // overwrite SRAM/Snapshot { - MakeFilePath(filepath, saves.type[ret-2], method, saves.filename[ret-2]); - switch(saves.type[ret-2]) + MakeFilePath(filepath, saves.type[ret], method, saves.filename[ret]); + switch(saves.type[ret]) { case FILE_SRAM: SaveSRAM(filepath, GCSettings.SaveMethod, NOTSILENT);