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

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

unix.superglobalmegacorp.com

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