|
|
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: */
1.1.1.7 ! root 7: const char DlgMemory_fileid[] = "Hatari dlgMemory.c : " __DATE__ " " __TIME__;
1.1 root 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
1.1.1.3 root 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
1.1.1.5 root 26: #define DLGMEM_AUTOSAVE 16
27: #define DLGMEM_EXIT 17
1.1 root 28:
29:
30: static char dlgSnapShotName[36+1];
31:
32:
33: /* The memory dialog: */
34: static SGOBJ memorydlg[] =
35: {
1.1.1.5 root 36: { SGBOX, 0, 0, 0,0, 40,22, NULL },
1.1 root 37:
1.1.1.5 root 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" },
1.1 root 55:
1.1.1.5 root 56: { SGBUTTON, SG_DEFAULT, 0, 10,20, 20,1, "Back to main menu" },
57: { -1, 0, 0, 0,0, 0,0, NULL }
1.1 root 58: };
59:
60:
1.1.1.7 ! root 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)
1.1 root 67: {
1.1.1.5 root 68: int i;
69: int but;
1.1 root 70:
1.1.1.5 root 71: SDLGui_CenterDlg(memorydlg);
72:
73: for (i = DLGMEM_512KB; i <= DLGMEM_14MB; i++)
74: {
75: memorydlg[i].state &= ~SG_SELECTED;
76: }
77:
1.1.1.6 root 78: switch (ConfigureParams.Memory.nMemorySize)
1.1.1.5 root 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:
1.1.1.6 root 100: File_ShrinkName(dlgSnapShotName, ConfigureParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w);
1.1.1.5 root 101:
102:
1.1.1.6 root 103: if (ConfigureParams.Memory.bAutoSave)
1.1.1.5 root 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,
1.1.1.6 root 116: ConfigureParams.Memory.szMemoryCaptureFileName,
1.1.1.7 ! root 117: memorydlg[DLGMEM_FILENAME].w, true))
! 118: {
! 119: MemorySnapShot_Capture(ConfigureParams.Memory.szMemoryCaptureFileName, true);
! 120: }
1.1.1.5 root 121: break;
122: case DLGMEM_RESTORE: /* Load memory snap-shot */
123: if (SDLGui_FileConfSelect(dlgSnapShotName,
1.1.1.6 root 124: ConfigureParams.Memory.szMemoryCaptureFileName,
1.1.1.7 ! root 125: memorydlg[DLGMEM_FILENAME].w, false))
! 126: {
! 127: MemorySnapShot_Restore(ConfigureParams.Memory.szMemoryCaptureFileName, true);
! 128: return true;
! 129: }
1.1.1.5 root 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)
1.1.1.6 root 139: ConfigureParams.Memory.nMemorySize = 0;
1.1.1.5 root 140: else if (memorydlg[DLGMEM_1MB].state & SG_SELECTED)
1.1.1.6 root 141: ConfigureParams.Memory.nMemorySize = 1;
1.1.1.5 root 142: else if (memorydlg[DLGMEM_2MB].state & SG_SELECTED)
1.1.1.6 root 143: ConfigureParams.Memory.nMemorySize = 2;
1.1.1.5 root 144: else if (memorydlg[DLGMEM_4MB].state & SG_SELECTED)
1.1.1.6 root 145: ConfigureParams.Memory.nMemorySize = 4;
1.1.1.5 root 146: else if (memorydlg[DLGMEM_8MB].state & SG_SELECTED)
1.1.1.6 root 147: ConfigureParams.Memory.nMemorySize = 8;
1.1.1.5 root 148: else
1.1.1.6 root 149: ConfigureParams.Memory.nMemorySize = 14;
1.1.1.5 root 150:
1.1.1.6 root 151: ConfigureParams.Memory.bAutoSave = (memorydlg[DLGMEM_AUTOSAVE].state & SG_SELECTED);
1.1.1.7 ! root 152:
! 153: return false;
1.1 root 154: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.