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