|
|
1.1 root 1: /*
2: Hatari - dlgMemory.c
3:
1.1.1.8 root 4: This file is distributed under the GNU General Public License, version 2
5: or at your option any later version. Read the file gpl.txt for details.
1.1 root 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"
1.1.1.9 root 15: #include "options.h"
1.1 root 16:
17:
1.1.1.11 root 18: #define DLGMEM_256KB 4
19: #define DLGMEM_512KB 5
20: #define DLGMEM_1MB 6
21: #define DLGMEM_2MB 7
22: #define DLGMEM_2_5MB 8
23: #define DLGMEM_4MB 9
24: #define DLGMEM_8MB 10
25: #define DLGMEM_14MB 11
26: #define DLGMEM_TTRAM_LESS 13
27: #define DLGMEM_TTRAM_TEXT 14
28: #define DLGMEM_TTRAM_MORE 15
29: #define DLGMEM_FILENAME 20
30: #define DLGMEM_SAVE 21
31: #define DLGMEM_RESTORE 22
32: #define DLGMEM_AUTOSAVE 23
33: #define DLGMEM_EXIT 24
1.1.1.9 root 34:
35:
36: /* String for TT RAM size */
37: static char sTTRamSize[4];
38:
39: #define DLG_TTRAM_STEP 4
40: #define DLG_TTRAM_MIN 0
1.1.1.12! root 41: #define DLG_TTRAM_MAX 512
1.1 root 42:
43: static char dlgSnapShotName[36+1];
44:
45:
46: /* The memory dialog: */
47: static SGOBJ memorydlg[] =
48: {
1.1.1.11 root 49: { SGBOX, 0, 0, 0,0, 40,25, NULL },
1.1 root 50:
1.1.1.11 root 51: { SGBOX, 0, 0, 1,1, 38,10, NULL },
1.1.1.5 root 52: { SGTEXT, 0, 0, 15,2, 12,1, "Memory setup" },
53: { SGTEXT, 0, 0, 4,4, 12,1, "ST-RAM size:" },
1.1.1.11 root 54: { SGRADIOBUT, 0, 0, 18,4, 9,1, "256 KiB" },
55: { SGRADIOBUT, 0, 0, 18,5, 9,1, "_512 KiB" },
56: { SGRADIOBUT, 0, 0, 18,6, 7,1, "_1 MiB" },
57: { SGRADIOBUT, 0, 0, 18,7, 7,1, "_2 MiB" },
58: { SGRADIOBUT, 0, 0, 29,4, 7,1, "2.5 MiB" },
59: { SGRADIOBUT, 0, 0, 29,5, 7,1, "_4 MiB" },
60: { SGRADIOBUT, 0, 0, 29,6, 7,1, "_8 MiB" },
61: { SGRADIOBUT, 0, 0, 29,7, 8,1, "14 _MiB" },
62: { SGTEXT, 0, 0, 4,9,12,1, "TT-RAM size:" },
63: { SGBUTTON, 0, 0, 18,9, 1,1, "\x04", SG_SHORTCUT_LEFT },
64: { SGTEXT, 0, 0, 20,9, 3,1, sTTRamSize },
65: { SGBUTTON, 0, 0, 24,9, 1,1, "\x03", SG_SHORTCUT_RIGHT },
66: { SGTEXT, 0, 0, 26,9,12,1, "MiB" },
67:
68: { SGBOX, 0, 0, 1,12, 38,10, NULL },
69: { SGTEXT, 0, 0, 12,13, 17,1, "Memory state save" },
70: { SGTEXT, 0, 0, 2,15, 20,1, "Snap-shot file name:" },
71: { SGTEXT, 0, 0, 2,16, 36,1, dlgSnapShotName },
72: { SGBUTTON, 0, 0, 8,18, 10,1, "_Save" },
73: { SGBUTTON, 0, 0, 22,18, 10,1, "_Restore" },
74: { SGCHECKBOX, 0, 0, 2,20, 34,1, "_Load/save state at start-up/exit" },
1.1 root 75:
1.1.1.11 root 76: { SGBUTTON, SG_DEFAULT, 0, 10,23, 20,1, "Back to main menu" },
1.1.1.10 root 77: { SGSTOP, 0, 0, 0,0, 0,0, NULL }
1.1 root 78: };
79:
80:
1.1.1.7 root 81:
82: /**
83: * Show and process the memory dialog.
84: * @return true if a memory snapshot has been loaded, false otherwise
85: */
86: bool Dialog_MemDlg(void)
1.1 root 87: {
1.1.1.9 root 88: int i, memsize;
1.1.1.5 root 89: int but;
1.1 root 90:
1.1.1.5 root 91: SDLGui_CenterDlg(memorydlg);
92:
1.1.1.11 root 93: for (i = DLGMEM_256KB; i <= DLGMEM_14MB; i++)
1.1.1.5 root 94: {
95: memorydlg[i].state &= ~SG_SELECTED;
96: }
97:
1.1.1.11 root 98: switch (ConfigureParams.Memory.STRamSize_KB)
1.1.1.5 root 99: {
1.1.1.11 root 100: case 256:
101: memorydlg[DLGMEM_256KB].state |= SG_SELECTED;
102: break;
103: case 512:
1.1.1.5 root 104: memorydlg[DLGMEM_512KB].state |= SG_SELECTED;
105: break;
1.1.1.11 root 106: case 1024:
1.1.1.5 root 107: memorydlg[DLGMEM_1MB].state |= SG_SELECTED;
108: break;
1.1.1.11 root 109: case 2*1024:
1.1.1.5 root 110: memorydlg[DLGMEM_2MB].state |= SG_SELECTED;
111: break;
1.1.1.11 root 112: case 2*1024+512:
113: memorydlg[DLGMEM_2_5MB].state |= SG_SELECTED;
114: break;
115: case 4*1024:
1.1.1.5 root 116: memorydlg[DLGMEM_4MB].state |= SG_SELECTED;
117: break;
1.1.1.11 root 118: case 8*1024:
1.1.1.5 root 119: memorydlg[DLGMEM_8MB].state |= SG_SELECTED;
120: break;
121: default:
122: memorydlg[DLGMEM_14MB].state |= SG_SELECTED;
123: break;
124: }
1.1.1.11 root 125: memsize = ConfigureParams.Memory.TTRamSize_KB/1024;
126: if (memsize < DLG_TTRAM_MIN)
127: memsize = DLG_TTRAM_MIN;
128: else if (memsize > DLG_TTRAM_MAX)
129: memsize = DLG_TTRAM_MAX;
1.1.1.9 root 130: #if ENABLE_WINUAE_CPU
131: sprintf(sTTRamSize, "%3i", memsize);
132: #else
133: strcpy(sTTRamSize, "N/A");
134: #endif
1.1.1.6 root 135: File_ShrinkName(dlgSnapShotName, ConfigureParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w);
1.1.1.5 root 136:
137:
1.1.1.6 root 138: if (ConfigureParams.Memory.bAutoSave)
1.1.1.5 root 139: memorydlg[DLGMEM_AUTOSAVE].state |= SG_SELECTED;
140: else
141: memorydlg[DLGMEM_AUTOSAVE].state &= ~SG_SELECTED;
142:
143: do
144: {
1.1.1.9 root 145: but = SDLGui_DoDialog(memorydlg, NULL, false);
1.1.1.5 root 146:
147: switch (but)
148: {
1.1.1.9 root 149: #if ENABLE_WINUAE_CPU
150: case DLGMEM_TTRAM_LESS:
151: memsize = Opt_ValueAlignMinMax(memsize - DLG_TTRAM_STEP, DLG_TTRAM_STEP, DLG_TTRAM_MIN, DLG_TTRAM_MAX);
152: sprintf(sTTRamSize, "%3i", memsize);
153: break;
154: case DLGMEM_TTRAM_MORE:
155: memsize = Opt_ValueAlignMinMax(memsize + DLG_TTRAM_STEP, DLG_TTRAM_STEP, DLG_TTRAM_MIN, DLG_TTRAM_MAX);
156: sprintf(sTTRamSize, "%3i", memsize);
157: break;
158: #endif
1.1.1.5 root 159: case DLGMEM_SAVE: /* Save memory snap-shot */
1.1.1.9 root 160: if (SDLGui_FileConfSelect("Save memory snapshot:", dlgSnapShotName,
1.1.1.6 root 161: ConfigureParams.Memory.szMemoryCaptureFileName,
1.1.1.7 root 162: memorydlg[DLGMEM_FILENAME].w, true))
163: {
164: MemorySnapShot_Capture(ConfigureParams.Memory.szMemoryCaptureFileName, true);
165: }
1.1.1.5 root 166: break;
167: case DLGMEM_RESTORE: /* Load memory snap-shot */
1.1.1.9 root 168: if (SDLGui_FileConfSelect("Load memory snapshot:", dlgSnapShotName,
1.1.1.6 root 169: ConfigureParams.Memory.szMemoryCaptureFileName,
1.1.1.7 root 170: memorydlg[DLGMEM_FILENAME].w, false))
171: {
172: MemorySnapShot_Restore(ConfigureParams.Memory.szMemoryCaptureFileName, true);
173: return true;
174: }
1.1.1.5 root 175: break;
176: }
177: }
178: while (but != DLGMEM_EXIT && but != SDLGUI_QUIT
179: && but != SDLGUI_ERROR && !bQuitProgram );
180:
181: /* Read new values from dialog: */
182:
1.1.1.11 root 183: if (memorydlg[DLGMEM_256KB].state & SG_SELECTED)
184: ConfigureParams.Memory.STRamSize_KB = 256;
185: else if (memorydlg[DLGMEM_512KB].state & SG_SELECTED)
186: ConfigureParams.Memory.STRamSize_KB = 512;
1.1.1.5 root 187: else if (memorydlg[DLGMEM_1MB].state & SG_SELECTED)
1.1.1.11 root 188: ConfigureParams.Memory.STRamSize_KB = 1024;
1.1.1.5 root 189: else if (memorydlg[DLGMEM_2MB].state & SG_SELECTED)
1.1.1.11 root 190: ConfigureParams.Memory.STRamSize_KB = 2*1024;
191: else if (memorydlg[DLGMEM_2_5MB].state & SG_SELECTED)
192: ConfigureParams.Memory.STRamSize_KB = 2*1024+512;
1.1.1.5 root 193: else if (memorydlg[DLGMEM_4MB].state & SG_SELECTED)
1.1.1.11 root 194: ConfigureParams.Memory.STRamSize_KB = 4*1024;
1.1.1.5 root 195: else if (memorydlg[DLGMEM_8MB].state & SG_SELECTED)
1.1.1.11 root 196: ConfigureParams.Memory.STRamSize_KB = 8*1024;
1.1.1.5 root 197: else
1.1.1.11 root 198: ConfigureParams.Memory.STRamSize_KB = 14*1024;
199:
200: ConfigureParams.Memory.TTRamSize_KB = memsize*1024;
1.1.1.5 root 201:
1.1.1.6 root 202: ConfigureParams.Memory.bAutoSave = (memorydlg[DLGMEM_AUTOSAVE].state & SG_SELECTED);
1.1.1.7 root 203:
204: return false;
1.1 root 205: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.