/** * Command: Store and restore emulation state */ static int DebugUI_DoMemorySnap(int argc, char *argv[]) { const char *file; if (argc > 1) file = argv[1]; else file = ConfigureParams.Memory.szMemoryCaptureFileName; if (strcmp(argv[0], "stateload") == 0) MemorySnapShot_Restore(file, true); else MemorySnapShot_Capture(file, true); return DEBUGGER_CMDDONE; }
/** * Show and process the memory dialog. * @return true if a memory snapshot has been loaded, false otherwise */ bool Dialog_MemDlg(void) { int i; int but; SDLGui_CenterDlg(memorydlg); for (i = DLGMEM_512KB; i <= DLGMEM_14MB; i++) { memorydlg[i].state &= ~SG_SELECTED; } switch (ConfigureParams.Memory.nMemorySize) { case 0: memorydlg[DLGMEM_512KB].state |= SG_SELECTED; break; case 1: memorydlg[DLGMEM_1MB].state |= SG_SELECTED; break; case 2: memorydlg[DLGMEM_2MB].state |= SG_SELECTED; break; case 4: memorydlg[DLGMEM_4MB].state |= SG_SELECTED; break; case 8: memorydlg[DLGMEM_8MB].state |= SG_SELECTED; break; default: memorydlg[DLGMEM_14MB].state |= SG_SELECTED; break; } File_ShrinkName(dlgSnapShotName, ConfigureParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w); if (ConfigureParams.Memory.bAutoSave) memorydlg[DLGMEM_AUTOSAVE].state |= SG_SELECTED; else memorydlg[DLGMEM_AUTOSAVE].state &= ~SG_SELECTED; do { but = SDLGui_DoDialog(memorydlg, NULL); switch (but) { case DLGMEM_SAVE: /* Save memory snap-shot */ if (SDLGui_FileConfSelect(dlgSnapShotName, ConfigureParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w, true)) { MemorySnapShot_Capture(ConfigureParams.Memory.szMemoryCaptureFileName, true); } break; case DLGMEM_RESTORE: /* Load memory snap-shot */ if (SDLGui_FileConfSelect(dlgSnapShotName, ConfigureParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w, false)) { MemorySnapShot_Restore(ConfigureParams.Memory.szMemoryCaptureFileName, true); return true; } break; } } while (but != DLGMEM_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram ); /* Read new values from dialog: */ if (memorydlg[DLGMEM_512KB].state & SG_SELECTED) ConfigureParams.Memory.nMemorySize = 0; else if (memorydlg[DLGMEM_1MB].state & SG_SELECTED) ConfigureParams.Memory.nMemorySize = 1; else if (memorydlg[DLGMEM_2MB].state & SG_SELECTED) ConfigureParams.Memory.nMemorySize = 2; else if (memorydlg[DLGMEM_4MB].state & SG_SELECTED) ConfigureParams.Memory.nMemorySize = 4; else if (memorydlg[DLGMEM_8MB].state & SG_SELECTED) ConfigureParams.Memory.nMemorySize = 8; else ConfigureParams.Memory.nMemorySize = 14; ConfigureParams.Memory.bAutoSave = (memorydlg[DLGMEM_AUTOSAVE].state & SG_SELECTED); return false; }
/** * Check to see if pressed any shortcut keys, and call handling function */ void ShortCut_ActKey(void) { if (ShortCutKey == SHORTCUT_NONE) return; switch (ShortCutKey) { case SHORTCUT_OPTIONS: Dialog_DoProperty(); /* Show options dialog */ break; case SHORTCUT_FULLSCREEN: ShortCut_FullScreen(); /* Switch between fullscreen/windowed mode */ break; case SHORTCUT_MOUSEGRAB: ShortCut_MouseGrab(); /* Toggle mouse grab */ break; case SHORTCUT_COLDRESET: Main_UnPauseEmulation(); Reset_Cold(); /* Reset emulator with 'cold' (clear all) */ break; #if 0 case SHORTCUT_WARMRESET: Main_UnPauseEmulation(); Reset_Warm(); /* Emulator 'warm' reset */ break; case SHORTCUT_SCREENSHOT: ScreenSnapShot_SaveScreen(); /* Grab screenshot */ break; case SHORTCUT_BOSSKEY: ShortCut_BossKey(); /* Boss key */ break; case SHORTCUT_CURSOREMU: /* Toggle joystick emu on/off */ Joy_ToggleCursorEmulation(); break; case SHORTCUT_FASTFORWARD: ShortCut_FastForward(); /* Toggle Min/Max speed */ break; case SHORTCUT_RECANIM: ShortCut_RecordAnimation(); /* Record animation */ break; case SHORTCUT_RECSOUND: ShortCut_RecordSound(); /* Toggle sound recording */ break; #endif case SHORTCUT_SOUND: ShortCut_SoundOnOff(); /* Enable/disable sound */ break; #if 0 case SHORTCUT_DEBUG: ShortCut_Debug(); /* Invoke the Debug UI */ break; #endif case SHORTCUT_PAUSE: ShortCut_Pause(); /* Invoke Pause */ break; case SHORTCUT_QUIT: Main_RequestQuit(); break; #if 0 case SHORTCUT_LOADMEM: MemorySnapShot_Restore(ConfigureParams.Memory.szMemoryCaptureFileName, true); break; case SHORTCUT_SAVEMEM: MemorySnapShot_Capture(ConfigureParams.Memory.szMemoryCaptureFileName, true); break; #endif case SHORTCUT_DIMENSION: ShortCut_Dimension(); break; case SHORTCUT_KEYS: case SHORTCUT_NONE: /* ERROR: cannot happen, just make compiler happy */ default: break; } ShortCutKey = SHORTCUT_NONE; }