/** * Save 'snapshot' of memory/chips/emulation variables */ void MemorySnapShot_Capture(const char *pszFileName, bool bConfirm) { /* Set to 'saving' */ if (MemorySnapShot_OpenFile(pszFileName, true)) { /* Capture each files details */ Configuration_MemorySnapShot_Capture(true); // STMemory_MemorySnapShot_Capture(true); CycInt_MemorySnapShot_Capture(true); Cycles_MemorySnapShot_Capture(true); M68000_MemorySnapShot_Capture(true); Video_MemorySnapShot_Capture(true); DebugUI_MemorySnapShot_Capture(pszFileName, true); // IoMem_MemorySnapShot_Capture(true); /* And close */ MemorySnapShot_CloseFile(); } else { /* just canceled? */ if (!bCaptureError) return; } /* Did error */ if (bCaptureError) Log_AlertDlg(LOG_ERROR, "Unable to save memory state to file."); else if (bConfirm) Log_AlertDlg(LOG_INFO, "Memory state file saved."); }
/** * Restore 'snapshot' of memory/chips/emulation variables */ void MemorySnapShot_Restore(const char *pszFileName, bool bConfirm) { /* Set to 'restore' */ if (MemorySnapShot_OpenFile(pszFileName, false)) { Configuration_MemorySnapShot_Capture(false); /* Reset emulator to get things running */ IoMem_UnInit(); IoMem_Init(); Reset_Cold(); /* Capture each files details */ // STMemory_MemorySnapShot_Capture(false); CycInt_MemorySnapShot_Capture(false); Cycles_MemorySnapShot_Capture(false); M68000_MemorySnapShot_Capture(false); Video_MemorySnapShot_Capture(false); DebugUI_MemorySnapShot_Capture(pszFileName, false); // IoMem_MemorySnapShot_Capture(false); /* And close */ MemorySnapShot_CloseFile(); /* changes may affect also info shown in statusbar */ Statusbar_UpdateInfo(); } /* Did error? */ if (bCaptureError) Log_AlertDlg(LOG_ERROR, "Unable to restore memory state from file."); else if (bConfirm) Log_AlertDlg(LOG_INFO, "Memory state file restored."); }
/** * Save 'snapshot' of memory/chips/emulation variables */ void MemorySnapShot_Capture(const char *pszFileName, bool bConfirm) { /* Set to 'saving' */ if (MemorySnapShot_OpenFile(pszFileName, true)) { /* Capture each files details */ Configuration_MemorySnapShot_Capture(true); TOS_MemorySnapShot_Capture(true); STMemory_MemorySnapShot_Capture(true); FDC_MemorySnapShot_Capture(true); Floppy_MemorySnapShot_Capture(true); GemDOS_MemorySnapShot_Capture(true); ACIA_MemorySnapShot_Capture(true); IKBD_MemorySnapShot_Capture(true); CycInt_MemorySnapShot_Capture(true); Cycles_MemorySnapShot_Capture(true); M68000_MemorySnapShot_Capture(true); MFP_MemorySnapShot_Capture(true); PSG_MemorySnapShot_Capture(true); Sound_MemorySnapShot_Capture(true); Video_MemorySnapShot_Capture(true); Blitter_MemorySnapShot_Capture(true); DmaSnd_MemorySnapShot_Capture(true); Crossbar_MemorySnapShot_Capture(true); VIDEL_MemorySnapShot_Capture(true); DSP_MemorySnapShot_Capture(true); DebugUI_MemorySnapShot_Capture(pszFileName, true); IoMem_MemorySnapShot_Capture(true); /* And close */ MemorySnapShot_CloseFile(); } else { /* just canceled? */ if (!bCaptureError) return; } /* Did error */ if (bCaptureError) Log_AlertDlg(LOG_ERROR, "Unable to save memory state to file."); else if (bConfirm) Log_AlertDlg(LOG_INFO, "Memory state file saved."); }