|
|
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.6 ! root 7: const char DlgMemory_rcsid[] = "Hatari $Id: dlgMemory.c,v 1.15 2008/06/08 16:07:40 eerot Exp $";
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:
61: /*-----------------------------------------------------------------------*/
62: /*
63: Show and process the memory dialog.
64: */
65: void Dialog_MemDlg(void)
66: {
1.1.1.5 root 67: int i;
68: int but;
1.1 root 69:
1.1.1.5 root 70: SDLGui_CenterDlg(memorydlg);
71:
72: for (i = DLGMEM_512KB; i <= DLGMEM_14MB; i++)
73: {
74: memorydlg[i].state &= ~SG_SELECTED;
75: }
76:
1.1.1.6 ! root 77: switch (ConfigureParams.Memory.nMemorySize)
1.1.1.5 root 78: {
79: case 0:
80: memorydlg[DLGMEM_512KB].state |= SG_SELECTED;
81: break;
82: case 1:
83: memorydlg[DLGMEM_1MB].state |= SG_SELECTED;
84: break;
85: case 2:
86: memorydlg[DLGMEM_2MB].state |= SG_SELECTED;
87: break;
88: case 4:
89: memorydlg[DLGMEM_4MB].state |= SG_SELECTED;
90: break;
91: case 8:
92: memorydlg[DLGMEM_8MB].state |= SG_SELECTED;
93: break;
94: default:
95: memorydlg[DLGMEM_14MB].state |= SG_SELECTED;
96: break;
97: }
98:
1.1.1.6 ! root 99: File_ShrinkName(dlgSnapShotName, ConfigureParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w);
1.1.1.5 root 100:
101:
1.1.1.6 ! root 102: if (ConfigureParams.Memory.bAutoSave)
1.1.1.5 root 103: memorydlg[DLGMEM_AUTOSAVE].state |= SG_SELECTED;
104: else
105: memorydlg[DLGMEM_AUTOSAVE].state &= ~SG_SELECTED;
106:
107: do
108: {
109: but = SDLGui_DoDialog(memorydlg, NULL);
110:
111: switch (but)
112: {
113: case DLGMEM_SAVE: /* Save memory snap-shot */
114: if (SDLGui_FileConfSelect(dlgSnapShotName,
1.1.1.6 ! root 115: ConfigureParams.Memory.szMemoryCaptureFileName,
1.1.1.5 root 116: memorydlg[DLGMEM_FILENAME].w, TRUE))
1.1.1.6 ! root 117: MemorySnapShot_Capture(ConfigureParams.Memory.szMemoryCaptureFileName, TRUE);
1.1.1.5 root 118: break;
119: case DLGMEM_RESTORE: /* Load memory snap-shot */
120: if (SDLGui_FileConfSelect(dlgSnapShotName,
1.1.1.6 ! root 121: ConfigureParams.Memory.szMemoryCaptureFileName,
1.1.1.5 root 122: memorydlg[DLGMEM_FILENAME].w, FALSE))
1.1.1.6 ! root 123: MemorySnapShot_Restore(ConfigureParams.Memory.szMemoryCaptureFileName, TRUE);
1.1.1.5 root 124: break;
125: }
126: }
127: while (but != DLGMEM_EXIT && but != SDLGUI_QUIT
128: && but != SDLGUI_ERROR && !bQuitProgram );
129:
130: /* Read new values from dialog: */
131:
132: if (memorydlg[DLGMEM_512KB].state & SG_SELECTED)
1.1.1.6 ! root 133: ConfigureParams.Memory.nMemorySize = 0;
1.1.1.5 root 134: else if (memorydlg[DLGMEM_1MB].state & SG_SELECTED)
1.1.1.6 ! root 135: ConfigureParams.Memory.nMemorySize = 1;
1.1.1.5 root 136: else if (memorydlg[DLGMEM_2MB].state & SG_SELECTED)
1.1.1.6 ! root 137: ConfigureParams.Memory.nMemorySize = 2;
1.1.1.5 root 138: else if (memorydlg[DLGMEM_4MB].state & SG_SELECTED)
1.1.1.6 ! root 139: ConfigureParams.Memory.nMemorySize = 4;
1.1.1.5 root 140: else if (memorydlg[DLGMEM_8MB].state & SG_SELECTED)
1.1.1.6 ! root 141: ConfigureParams.Memory.nMemorySize = 8;
1.1.1.5 root 142: else
1.1.1.6 ! root 143: ConfigureParams.Memory.nMemorySize = 14;
1.1.1.5 root 144:
1.1.1.6 ! root 145: ConfigureParams.Memory.bAutoSave = (memorydlg[DLGMEM_AUTOSAVE].state & SG_SELECTED);
1.1 root 146: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.