--- hatari/src/gui-sdl/dlgMemory.c 2019/04/01 07:13:50 1.1.1.5 +++ hatari/src/gui-sdl/dlgMemory.c 2019/04/09 08:57:06 1.1.1.10 @@ -1,10 +1,10 @@ /* Hatari - dlgMemory.c - This file is distributed under the GNU Public License, version 2 or at - your option any later version. Read the file gpl.txt for details. + This file is distributed under the GNU General Public License, version 2 + or at your option any later version. Read the file gpl.txt for details. */ -const char DlgMemory_rcsid[] = "Hatari $Id: dlgMemory.c,v 1.1.1.5 2019/04/01 07:13:50 root Exp $"; +const char DlgMemory_fileid[] = "Hatari dlgMemory.c : " __DATE__ " " __TIME__; #include "main.h" #include "dialog.h" @@ -12,6 +12,7 @@ const char DlgMemory_rcsid[] = "Hatari $ #include "memorySnapShot.h" #include "file.h" #include "screen.h" +#include "options.h" #define DLGMEM_512KB 4 @@ -20,12 +21,22 @@ const char DlgMemory_rcsid[] = "Hatari $ #define DLGMEM_4MB 7 #define DLGMEM_8MB 8 #define DLGMEM_14MB 9 -#define DLGMEM_FILENAME 13 -#define DLGMEM_SAVE 14 -#define DLGMEM_RESTORE 15 -#define DLGMEM_AUTOSAVE 16 -#define DLGMEM_EXIT 17 - +#define DLGMEM_TTRAM_LESS 11 +#define DLGMEM_TTRAM_TEXT 12 +#define DLGMEM_TTRAM_MORE 13 +#define DLGMEM_FILENAME 17 +#define DLGMEM_SAVE 18 +#define DLGMEM_RESTORE 19 +#define DLGMEM_AUTOSAVE 20 +#define DLGMEM_EXIT 21 + + +/* String for TT RAM size */ +static char sTTRamSize[4]; + +#define DLG_TTRAM_STEP 4 +#define DLG_TTRAM_MIN 0 +#define DLG_TTRAM_MAX 256 static char dlgSnapShotName[36+1]; @@ -33,38 +44,43 @@ static char dlgSnapShotName[36+1]; /* The memory dialog: */ static SGOBJ memorydlg[] = { - { SGBOX, 0, 0, 0,0, 40,22, NULL }, + { SGBOX, 0, 0, 0,0, 40,24, NULL }, - { SGBOX, 0, 0, 1,1, 38,7, NULL }, + { SGBOX, 0, 0, 1,1, 38,9, NULL }, { SGTEXT, 0, 0, 15,2, 12,1, "Memory setup" }, { SGTEXT, 0, 0, 4,4, 12,1, "ST-RAM size:" }, - { SGRADIOBUT, 0, 0, 18,4, 9,1, "512 KiB" }, - { SGRADIOBUT, 0, 0, 18,5, 7,1, "1 MiB" }, - { SGRADIOBUT, 0, 0, 18,6, 7,1, "2 MiB" }, - { SGRADIOBUT, 0, 0, 29,4, 7,1, "4 MiB" }, - { SGRADIOBUT, 0, 0, 29,5, 7,1, "8 MiB" }, - { SGRADIOBUT, 0, 0, 29,6, 8,1, "14 MiB" }, - - { SGBOX, 0, 0, 1,9, 38,10, NULL }, - { SGTEXT, 0, 0, 12,10, 17,1, "Memory state save" }, - { SGTEXT, 0, 0, 2,12, 20,1, "Snap-shot file name:" }, - { SGTEXT, 0, 0, 2,13, 36,1, dlgSnapShotName }, - { SGBUTTON, 0, 0, 8,15, 10,1, "Save" }, - { SGBUTTON, 0, 0, 22,15, 10,1, "Restore" }, - { SGCHECKBOX, 0, 0, 2,17, 37,1, "Load/save state at start-up/exit" }, + { SGRADIOBUT, 0, 0, 18,4, 9,1, "_512 KiB" }, + { SGRADIOBUT, 0, 0, 18,5, 7,1, "_1 MiB" }, + { SGRADIOBUT, 0, 0, 18,6, 7,1, "_2 MiB" }, + { SGRADIOBUT, 0, 0, 29,4, 7,1, "_4 MiB" }, + { SGRADIOBUT, 0, 0, 29,5, 7,1, "_8 MiB" }, + { SGRADIOBUT, 0, 0, 29,6, 8,1, "14 _MiB" }, + { SGTEXT, 0, 0, 4,8,12,1, "TT-RAM size:" }, + { SGBUTTON, 0, 0, 18,8, 1,1, "\x04", SG_SHORTCUT_LEFT }, + { SGTEXT, 0, 0, 20,8, 3,1, sTTRamSize }, + { SGBUTTON, 0, 0, 24,8, 1,1, "\x03", SG_SHORTCUT_RIGHT }, + + { SGBOX, 0, 0, 1,11, 38,10, NULL }, + { SGTEXT, 0, 0, 12,12, 17,1, "Memory state save" }, + { SGTEXT, 0, 0, 2,14, 20,1, "Snap-shot file name:" }, + { SGTEXT, 0, 0, 2,15, 36,1, dlgSnapShotName }, + { SGBUTTON, 0, 0, 8,17, 10,1, "_Save" }, + { SGBUTTON, 0, 0, 22,17, 10,1, "_Restore" }, + { SGCHECKBOX, 0, 0, 2,19, 34,1, "_Load/save state at start-up/exit" }, - { SGBUTTON, SG_DEFAULT, 0, 10,20, 20,1, "Back to main menu" }, - { -1, 0, 0, 0,0, 0,0, NULL } + { SGBUTTON, SG_DEFAULT, 0, 10,22, 20,1, "Back to main menu" }, + { SGSTOP, 0, 0, 0,0, 0,0, NULL } }; -/*-----------------------------------------------------------------------*/ -/* - Show and process the memory dialog. -*/ -void Dialog_MemDlg(void) + +/** + * Show and process the memory dialog. + * @return true if a memory snapshot has been loaded, false otherwise + */ +bool Dialog_MemDlg(void) { - int i; + int i, memsize; int but; SDLGui_CenterDlg(memorydlg); @@ -74,7 +90,7 @@ void Dialog_MemDlg(void) memorydlg[i].state &= ~SG_SELECTED; } - switch (DialogParams.Memory.nMemorySize) + switch (ConfigureParams.Memory.nMemorySize) { case 0: memorydlg[DLGMEM_512KB].state |= SG_SELECTED; @@ -95,32 +111,52 @@ void Dialog_MemDlg(void) memorydlg[DLGMEM_14MB].state |= SG_SELECTED; break; } + memsize = ConfigureParams.Memory.nTTRamSize; +#if ENABLE_WINUAE_CPU + sprintf(sTTRamSize, "%3i", memsize); +#else + strcpy(sTTRamSize, "N/A"); +#endif + File_ShrinkName(dlgSnapShotName, ConfigureParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w); - File_ShrinkName(dlgSnapShotName, DialogParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w); - - if (DialogParams.Memory.bAutoSave) + if (ConfigureParams.Memory.bAutoSave) memorydlg[DLGMEM_AUTOSAVE].state |= SG_SELECTED; else memorydlg[DLGMEM_AUTOSAVE].state &= ~SG_SELECTED; do { - but = SDLGui_DoDialog(memorydlg, NULL); + but = SDLGui_DoDialog(memorydlg, NULL, false); switch (but) { +#if ENABLE_WINUAE_CPU + case DLGMEM_TTRAM_LESS: + memsize = Opt_ValueAlignMinMax(memsize - DLG_TTRAM_STEP, DLG_TTRAM_STEP, DLG_TTRAM_MIN, DLG_TTRAM_MAX); + sprintf(sTTRamSize, "%3i", memsize); + break; + case DLGMEM_TTRAM_MORE: + memsize = Opt_ValueAlignMinMax(memsize + DLG_TTRAM_STEP, DLG_TTRAM_STEP, DLG_TTRAM_MIN, DLG_TTRAM_MAX); + sprintf(sTTRamSize, "%3i", memsize); + break; +#endif case DLGMEM_SAVE: /* Save memory snap-shot */ - if (SDLGui_FileConfSelect(dlgSnapShotName, - DialogParams.Memory.szMemoryCaptureFileName, - memorydlg[DLGMEM_FILENAME].w, TRUE)) - MemorySnapShot_Capture(DialogParams.Memory.szMemoryCaptureFileName, TRUE); + if (SDLGui_FileConfSelect("Save memory snapshot:", dlgSnapShotName, + ConfigureParams.Memory.szMemoryCaptureFileName, + memorydlg[DLGMEM_FILENAME].w, true)) + { + MemorySnapShot_Capture(ConfigureParams.Memory.szMemoryCaptureFileName, true); + } break; case DLGMEM_RESTORE: /* Load memory snap-shot */ - if (SDLGui_FileConfSelect(dlgSnapShotName, - DialogParams.Memory.szMemoryCaptureFileName, - memorydlg[DLGMEM_FILENAME].w, FALSE)) - MemorySnapShot_Restore(DialogParams.Memory.szMemoryCaptureFileName, TRUE); + if (SDLGui_FileConfSelect("Load memory snapshot:", dlgSnapShotName, + ConfigureParams.Memory.szMemoryCaptureFileName, + memorydlg[DLGMEM_FILENAME].w, false)) + { + MemorySnapShot_Restore(ConfigureParams.Memory.szMemoryCaptureFileName, true); + return true; + } break; } } @@ -130,17 +166,20 @@ void Dialog_MemDlg(void) /* Read new values from dialog: */ if (memorydlg[DLGMEM_512KB].state & SG_SELECTED) - DialogParams.Memory.nMemorySize = 0; + ConfigureParams.Memory.nMemorySize = 0; else if (memorydlg[DLGMEM_1MB].state & SG_SELECTED) - DialogParams.Memory.nMemorySize = 1; + ConfigureParams.Memory.nMemorySize = 1; else if (memorydlg[DLGMEM_2MB].state & SG_SELECTED) - DialogParams.Memory.nMemorySize = 2; + ConfigureParams.Memory.nMemorySize = 2; else if (memorydlg[DLGMEM_4MB].state & SG_SELECTED) - DialogParams.Memory.nMemorySize = 4; + ConfigureParams.Memory.nMemorySize = 4; else if (memorydlg[DLGMEM_8MB].state & SG_SELECTED) - DialogParams.Memory.nMemorySize = 8; + ConfigureParams.Memory.nMemorySize = 8; else - DialogParams.Memory.nMemorySize = 14; + ConfigureParams.Memory.nMemorySize = 14; + + ConfigureParams.Memory.nTTRamSize = memsize; + ConfigureParams.Memory.bAutoSave = (memorydlg[DLGMEM_AUTOSAVE].state & SG_SELECTED); - DialogParams.Memory.bAutoSave = (memorydlg[DLGMEM_AUTOSAVE].state & SG_SELECTED); + return false; }