|
|
1.1 ! root 1: /* ! 2: Hatari - dlgMemory.c ! 3: ! 4: This file is distributed under the GNU Public License, version 2 or at ! 5: your option any later version. Read the file gpl.txt for details. ! 6: */ ! 7: const char DlgMemory_fileid[] = "Hatari dlgMemory.c : " __DATE__ " " __TIME__; ! 8: ! 9: #include "main.h" ! 10: #include "dialog.h" ! 11: #include "sdlgui.h" ! 12: #include "memorySnapShot.h" ! 13: #include "file.h" ! 14: #include "screen.h" ! 15: ! 16: ! 17: #define DLGMEM_512KB 4 ! 18: #define DLGMEM_1MB 5 ! 19: #define DLGMEM_2MB 6 ! 20: #define DLGMEM_4MB 7 ! 21: #define DLGMEM_8MB 8 ! 22: #define DLGMEM_14MB 9 ! 23: #define DLGMEM_FILENAME 13 ! 24: #define DLGMEM_SAVE 14 ! 25: #define DLGMEM_RESTORE 15 ! 26: #define DLGMEM_AUTOSAVE 16 ! 27: #define DLGMEM_EXIT 17 ! 28: ! 29: ! 30: static char dlgSnapShotName[36+1]; ! 31: ! 32: ! 33: /* The memory dialog: */ ! 34: static SGOBJ memorydlg[] = ! 35: { ! 36: { SGBOX, 0, 0, 0,0, 40,22, NULL }, ! 37: ! 38: { SGBOX, 0, 0, 1,1, 38,7, NULL }, ! 39: { SGTEXT, 0, 0, 15,2, 12,1, "Memory setup" }, ! 40: { SGTEXT, 0, 0, 4,4, 12,1, "ST-RAM size:" }, ! 41: { SGRADIOBUT, 0, 0, 18,4, 9,1, "512 KiB" }, ! 42: { SGRADIOBUT, 0, 0, 18,5, 7,1, "1 MiB" }, ! 43: { SGRADIOBUT, 0, 0, 18,6, 7,1, "2 MiB" }, ! 44: { SGRADIOBUT, 0, 0, 29,4, 7,1, "4 MiB" }, ! 45: { SGRADIOBUT, 0, 0, 29,5, 7,1, "8 MiB" }, ! 46: { SGRADIOBUT, 0, 0, 29,6, 8,1, "14 MiB" }, ! 47: ! 48: { SGBOX, 0, 0, 1,9, 38,10, NULL }, ! 49: { SGTEXT, 0, 0, 12,10, 17,1, "Memory state save" }, ! 50: { SGTEXT, 0, 0, 2,12, 20,1, "Snap-shot file name:" }, ! 51: { SGTEXT, 0, 0, 2,13, 36,1, dlgSnapShotName }, ! 52: { SGBUTTON, 0, 0, 8,15, 10,1, "Save" }, ! 53: { SGBUTTON, 0, 0, 22,15, 10,1, "Restore" }, ! 54: { SGCHECKBOX, 0, 0, 2,17, 37,1, "Load/save state at start-up/exit" }, ! 55: ! 56: { SGBUTTON, SG_DEFAULT, 0, 10,20, 20,1, "Back to main menu" }, ! 57: { -1, 0, 0, 0,0, 0,0, NULL } ! 58: }; ! 59: ! 60: ! 61: ! 62: /** ! 63: * Show and process the memory dialog. ! 64: * @return true if a memory snapshot has been loaded, false otherwise ! 65: */ ! 66: bool Dialog_MemDlg(void) ! 67: { ! 68: int i; ! 69: int but; ! 70: ! 71: SDLGui_CenterDlg(memorydlg); ! 72: ! 73: for (i = DLGMEM_512KB; i <= DLGMEM_14MB; i++) ! 74: { ! 75: memorydlg[i].state &= ~SG_SELECTED; ! 76: } ! 77: ! 78: switch (ConfigureParams.Memory.nMemorySize) ! 79: { ! 80: case 0: ! 81: memorydlg[DLGMEM_512KB].state |= SG_SELECTED; ! 82: break; ! 83: case 1: ! 84: memorydlg[DLGMEM_1MB].state |= SG_SELECTED; ! 85: break; ! 86: case 2: ! 87: memorydlg[DLGMEM_2MB].state |= SG_SELECTED; ! 88: break; ! 89: case 4: ! 90: memorydlg[DLGMEM_4MB].state |= SG_SELECTED; ! 91: break; ! 92: case 8: ! 93: memorydlg[DLGMEM_8MB].state |= SG_SELECTED; ! 94: break; ! 95: default: ! 96: memorydlg[DLGMEM_14MB].state |= SG_SELECTED; ! 97: break; ! 98: } ! 99: ! 100: File_ShrinkName(dlgSnapShotName, ConfigureParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w); ! 101: ! 102: ! 103: if (ConfigureParams.Memory.bAutoSave) ! 104: memorydlg[DLGMEM_AUTOSAVE].state |= SG_SELECTED; ! 105: else ! 106: memorydlg[DLGMEM_AUTOSAVE].state &= ~SG_SELECTED; ! 107: ! 108: do ! 109: { ! 110: but = SDLGui_DoDialog(memorydlg, NULL); ! 111: ! 112: switch (but) ! 113: { ! 114: case DLGMEM_SAVE: /* Save memory snap-shot */ ! 115: if (SDLGui_FileConfSelect(dlgSnapShotName, ! 116: ConfigureParams.Memory.szMemoryCaptureFileName, ! 117: memorydlg[DLGMEM_FILENAME].w, true)) ! 118: { ! 119: MemorySnapShot_Capture(ConfigureParams.Memory.szMemoryCaptureFileName, true); ! 120: } ! 121: break; ! 122: case DLGMEM_RESTORE: /* Load memory snap-shot */ ! 123: if (SDLGui_FileConfSelect(dlgSnapShotName, ! 124: ConfigureParams.Memory.szMemoryCaptureFileName, ! 125: memorydlg[DLGMEM_FILENAME].w, false)) ! 126: { ! 127: MemorySnapShot_Restore(ConfigureParams.Memory.szMemoryCaptureFileName, true); ! 128: return true; ! 129: } ! 130: break; ! 131: } ! 132: } ! 133: while (but != DLGMEM_EXIT && but != SDLGUI_QUIT ! 134: && but != SDLGUI_ERROR && !bQuitProgram ); ! 135: ! 136: /* Read new values from dialog: */ ! 137: ! 138: if (memorydlg[DLGMEM_512KB].state & SG_SELECTED) ! 139: ConfigureParams.Memory.nMemorySize = 0; ! 140: else if (memorydlg[DLGMEM_1MB].state & SG_SELECTED) ! 141: ConfigureParams.Memory.nMemorySize = 1; ! 142: else if (memorydlg[DLGMEM_2MB].state & SG_SELECTED) ! 143: ConfigureParams.Memory.nMemorySize = 2; ! 144: else if (memorydlg[DLGMEM_4MB].state & SG_SELECTED) ! 145: ConfigureParams.Memory.nMemorySize = 4; ! 146: else if (memorydlg[DLGMEM_8MB].state & SG_SELECTED) ! 147: ConfigureParams.Memory.nMemorySize = 8; ! 148: else ! 149: ConfigureParams.Memory.nMemorySize = 14; ! 150: ! 151: ConfigureParams.Memory.bAutoSave = (memorydlg[DLGMEM_AUTOSAVE].state & SG_SELECTED); ! 152: ! 153: return false; ! 154: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.