|
|
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.5 ! root 7: const char DlgMemory_rcsid[] = "Hatari $Id: dlgMemory.c,v 1.14 2008/02/24 20:10:47 thothy 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:
! 77: switch (DialogParams.Memory.nMemorySize)
! 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:
! 99: File_ShrinkName(dlgSnapShotName, DialogParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w);
! 100:
! 101:
! 102: if (DialogParams.Memory.bAutoSave)
! 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,
! 115: DialogParams.Memory.szMemoryCaptureFileName,
! 116: memorydlg[DLGMEM_FILENAME].w, TRUE))
! 117: MemorySnapShot_Capture(DialogParams.Memory.szMemoryCaptureFileName, TRUE);
! 118: break;
! 119: case DLGMEM_RESTORE: /* Load memory snap-shot */
! 120: if (SDLGui_FileConfSelect(dlgSnapShotName,
! 121: DialogParams.Memory.szMemoryCaptureFileName,
! 122: memorydlg[DLGMEM_FILENAME].w, FALSE))
! 123: MemorySnapShot_Restore(DialogParams.Memory.szMemoryCaptureFileName, TRUE);
! 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)
! 133: DialogParams.Memory.nMemorySize = 0;
! 134: else if (memorydlg[DLGMEM_1MB].state & SG_SELECTED)
! 135: DialogParams.Memory.nMemorySize = 1;
! 136: else if (memorydlg[DLGMEM_2MB].state & SG_SELECTED)
! 137: DialogParams.Memory.nMemorySize = 2;
! 138: else if (memorydlg[DLGMEM_4MB].state & SG_SELECTED)
! 139: DialogParams.Memory.nMemorySize = 4;
! 140: else if (memorydlg[DLGMEM_8MB].state & SG_SELECTED)
! 141: DialogParams.Memory.nMemorySize = 8;
! 142: else
! 143: DialogParams.Memory.nMemorySize = 14;
! 144:
! 145: DialogParams.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.