Annotation of hatari/src/gui-sdl/dlgMemory.c, revision 1.1.1.12

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.