Annotation of previous/src/gui-sdl/dlgMemory.c, revision 1.1.1.2

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: */
                      7: const char DlgMemory_fileid[] = "Hatari dlgMemory.c : " __DATE__ " " __TIME__;
                      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: 
1.1.1.2 ! root       17: #define DLGMEM_8MB      4
        !            18: #define DLGMEM_16MB     5
        !            19: #define DLGMEM_32MB     6
        !            20: #define DLGMEM_64MB     8
        !            21: #define DLGMEM_128MB    9
        !            22: #define DLGMEM_CUSTOM   7
        !            23: 
        !            24: #define DLGMEM_120NS    12
        !            25: #define DLGMEM_100NS    13
        !            26: #define DLGMEM_80NS     14
        !            27: #define DLGMEM_60NS     15
        !            28: 
        !            29: #define DLGMEM_FILENAME 19
        !            30: #define DLGMEM_SAVE     20
        !            31: #define DLGMEM_RESTORE  21
        !            32: #define DLGMEM_AUTOSAVE 22
1.1       root       33: 
1.1.1.2 ! root       34: #define DLGMEM_EXIT     23
1.1       root       35: 
                     36: 
1.1.1.2 ! root       37: void Dialog_MemDlgDraw(void);
        !            38: static char dlgSnapShotName[36+1];
        !            39: char custom_memsize[16] = "Customize";
1.1       root       40: 
                     41: /* The memory dialog: */
                     42: static SGOBJ memorydlg[] =
                     43: {
1.1.1.2 ! root       44:        { SGBOX, 0, 0, 0,0, 41,28, NULL },
        !            45:     { SGTEXT, 0, 0, 14,1, 12,1, "Memory options" },
1.1       root       46: 
1.1.1.2 ! root       47:        { SGBOX, 0, 0, 1,3, 19,10, NULL },
        !            48:        { SGTEXT, 0, 0, 2,4, 12,1, "Memory size" },
        !            49:        { SGRADIOBUT, 0, 0, 3,6, 6,1, "8 MB" },
        !            50:        { SGRADIOBUT, 0, 0, 3,7, 7,1, "16 MB" },
        !            51:        { SGRADIOBUT, 0, 0, 3,8, 7,1, "32 MB" },
        !            52:     { SGRADIOBUT, 0, 0, 3,11, 11,1, custom_memsize },
        !            53:        { SGRADIOBUT, 0, 0, 3,9, 7,1, "64 MB" },
        !            54:        { SGRADIOBUT, 0, 0, 3,10, 8,1, "128 MB" },
        !            55:     
        !            56:     { SGBOX, 0, 0, 21,3, 19,10, NULL },
        !            57:        { SGTEXT, 0, 0, 22,4, 12,1, "Memory speed" },
        !            58:        { SGRADIOBUT, 0, 0, 23,6, 8,1, "120 ns" },
        !            59:        { SGRADIOBUT, 0, 0, 23,7, 8,1, "100 ns" },
        !            60:        { SGRADIOBUT, 0, 0, 23,8, 7,1, "80 ns" },
        !            61:        { SGRADIOBUT, 0, 0, 23,9, 7,1, "60 ns" },
        !            62: 
        !            63:        { SGBOX, 0, 0, 1,14, 39,10, NULL },
        !            64:        { SGTEXT, 0, 0, 2,15, 17,1, "Load/Save memory state (untested)" },
        !            65:        { SGTEXT, 0, 0, 2,17, 20,1, "Snap-shot file name:" },
        !            66:        { SGTEXT, 0, 0, 2,18, 36,1, dlgSnapShotName },
        !            67:        { SGBUTTON, 0, 0, 8,20, 10,1, "Save" },
        !            68:        { SGBUTTON, 0, 0, 22,20, 10,1, "Restore" },
        !            69:        { SGCHECKBOX, 0, 0, 2,22, 37,1, "Load/save state at start-up/exit" },
1.1       root       70: 
1.1.1.2 ! root       71:        { SGBUTTON, SG_DEFAULT, 0, 10,26, 20,1, "Back to main menu" },
1.1       root       72:        { -1, 0, 0, 0,0, 0,0, NULL }
                     73: };
                     74: 
1.1.1.2 ! root       75: /* Variable objects */
        !            76: SGOBJ disable_128mb_option = { SGTEXT, 0, 0, 3,10, 8,1, " " };
        !            77: SGOBJ enable_128mb_option = { SGRADIOBUT, 0, 0, 3,10, 8,1, "128 MB" };
        !            78: SGOBJ disable_64mb_option = { SGTEXT, 0, 0, 3,9, 7,1, " " };
        !            79: SGOBJ enable_64mb_option = { SGRADIOBUT, 0, 0, 3,9, 7,1, "64 MB" };
        !            80: 
        !            81: /* Default configuration constants */
        !            82: int defsize[9][4] = {
        !            83:     { 4, 4, 0, 0},  /*  8 MB for monochrome non-turbo */
        !            84:     { 8, 0, 0, 0},  /*  8 MB for turbo and non-turbo color */
        !            85:     {16, 0, 0, 0},  /* 16 MB for monochrome non-turbo */
        !            86:     { 8, 8, 0, 0},  /* 16 MB for turbo and non-turbo color */
        !            87:     {16,16, 0, 0},  /* 32 MB for monochrome non-turbo */
        !            88:     { 8, 8, 8, 8},  /* 32 MB for turbo and non-turbo color */
        !            89:     {16,16,16,16},  /* 64 MB for monochrome non-turbo */
        !            90:     {32,32, 0, 0},  /* 64 MB for turbo */
        !            91:     {32,32,32,32}   /* 128 MB for turbo */
        !            92: };
        !            93: int defsizecount=0; /* Compare defsizes up to this value */
1.1       root       94: 
                     95: /**
                     96:  * Show and process the memory dialog.
                     97:  * @return  true if a memory snapshot has been loaded, false otherwise
                     98:  */
                     99: bool Dialog_MemDlg(void)
                    100: {
                    101:        int but;
                    102: 
                    103:        SDLGui_CenterDlg(memorydlg);
1.1.1.2 ! root      104:     
        !           105:     /* Remove 64 and 128MB option if system is non-Turbo Slab,
        !           106:      * remove 128MB option if system is not Turbo */
        !           107:     if (ConfigureParams.System.bTurbo) {
        !           108:         memorydlg[DLGMEM_64MB] = enable_64mb_option;
        !           109:         memorydlg[DLGMEM_128MB] = enable_128mb_option;
        !           110:         defsizecount = 9;
        !           111:     } else if (ConfigureParams.System.bColor ||
        !           112:                ConfigureParams.System.nMachineType == NEXT_STATION) {
        !           113:         memorydlg[DLGMEM_64MB] = disable_64mb_option;
        !           114:         memorydlg[DLGMEM_128MB] = disable_128mb_option;
        !           115:         defsizecount = 6;
        !           116:     } else {
        !           117:         memorydlg[DLGMEM_64MB] = enable_64mb_option;
        !           118:         memorydlg[DLGMEM_128MB] = disable_128mb_option;
        !           119:         defsizecount = 8;
        !           120:     }
1.1       root      121: 
1.1.1.2 ! root      122:     /* Draw dialog from actual values */
1.1       root      123: 
1.1.1.2 ! root      124:     Dialog_MemDlgDraw();
1.1       root      125: 
                    126:        do
                    127:        {
                    128:                but = SDLGui_DoDialog(memorydlg, NULL);
1.1.1.2 ! root      129:         
1.1       root      130:                switch (but)
                    131:                {
1.1.1.2 ! root      132:             case DLGMEM_8MB:
        !           133:                 if (ConfigureParams.System.bColor || ConfigureParams.System.bTurbo) {
        !           134:                     memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[1],
        !           135:                            sizeof(ConfigureParams.Memory.nMemoryBankSize));
        !           136:                 } else {
        !           137:                     memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[0],
        !           138:                            sizeof(ConfigureParams.Memory.nMemoryBankSize));
        !           139:                 }
        !           140:                 sprintf(custom_memsize, "Customize");
        !           141:                 break;
        !           142:             case DLGMEM_16MB:
        !           143:                 if (ConfigureParams.System.bColor || ConfigureParams.System.bTurbo) {
        !           144:                     memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[3],
        !           145:                            sizeof(ConfigureParams.Memory.nMemoryBankSize));
        !           146:                 } else {
        !           147:                     memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[2],
        !           148:                            sizeof(ConfigureParams.Memory.nMemoryBankSize));
        !           149:                 }
        !           150:                 sprintf(custom_memsize, "Customize");
        !           151:                 break;
        !           152:             case DLGMEM_32MB:
        !           153:                 if (ConfigureParams.System.bColor || ConfigureParams.System.bTurbo) {
        !           154:                     memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[5],
        !           155:                            sizeof(ConfigureParams.Memory.nMemoryBankSize));
        !           156:                 } else {
        !           157:                     memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[4],
        !           158:                            sizeof(ConfigureParams.Memory.nMemoryBankSize));
        !           159:                 }
        !           160:                 sprintf(custom_memsize, "Customize");
        !           161:                 break;
        !           162:             case DLGMEM_64MB:
        !           163:                 if (ConfigureParams.System.bTurbo) {
        !           164:                     memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[7],
        !           165:                            sizeof(ConfigureParams.Memory.nMemoryBankSize));
        !           166:                 } else {
        !           167:                     memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[6],
        !           168:                            sizeof(ConfigureParams.Memory.nMemoryBankSize));
        !           169:                 }
        !           170:                 sprintf(custom_memsize, "Customize");
        !           171:                 break;
        !           172:             case DLGMEM_128MB:
        !           173:                 memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[8],
        !           174:                        sizeof(ConfigureParams.Memory.nMemoryBankSize));
        !           175:                 sprintf(custom_memsize, "Customize");
        !           176:                 break;
        !           177:             case DLGMEM_CUSTOM:
        !           178:                 Dialog_MemAdvancedDlg(ConfigureParams.Memory.nMemoryBankSize);
        !           179:                 Dialog_MemDlgDraw();
        !           180:                 break;
        !           181:             case DLGMEM_SAVE:              /* Save memory snap-shot */
        !           182:                 if (SDLGui_FileConfSelect(dlgSnapShotName,
        !           183:                                           ConfigureParams.Memory.szMemoryCaptureFileName,
        !           184:                                           memorydlg[DLGMEM_FILENAME].w, true))
        !           185:                 {
        !           186:                     MemorySnapShot_Capture(ConfigureParams.Memory.szMemoryCaptureFileName, true);
        !           187:                 }
        !           188:                 break;
        !           189:             case DLGMEM_RESTORE:           /* Load memory snap-shot */
        !           190:                 if (SDLGui_FileConfSelect(dlgSnapShotName,
        !           191:                                           ConfigureParams.Memory.szMemoryCaptureFileName,
        !           192:                                           memorydlg[DLGMEM_FILENAME].w, false))
        !           193:                 {
        !           194:                     MemorySnapShot_Restore(ConfigureParams.Memory.szMemoryCaptureFileName, true);
        !           195:                     return true;
        !           196:                 }
        !           197:                 break;
1.1       root      198:                }
                    199:        }
                    200:        while (but != DLGMEM_EXIT && but != SDLGUI_QUIT
1.1.1.2 ! root      201:            && but != SDLGUI_ERROR && !bQuitProgram );
1.1       root      202: 
                    203:        /* Read new values from dialog: */
                    204: 
1.1.1.2 ! root      205:     if (memorydlg[DLGMEM_120NS].state & SG_SELECTED)
        !           206:         ConfigureParams.Memory.nMemorySpeed = MEMORY_120NS;
        !           207:     else if (memorydlg[DLGMEM_100NS].state & SG_SELECTED)
        !           208:         ConfigureParams.Memory.nMemorySpeed = MEMORY_100NS;
        !           209:     else if (memorydlg[DLGMEM_80NS].state & SG_SELECTED)
        !           210:         ConfigureParams.Memory.nMemorySpeed = MEMORY_80NS;
        !           211:     else
        !           212:         ConfigureParams.Memory.nMemorySpeed = MEMORY_60NS;
        !           213:     
1.1       root      214:        ConfigureParams.Memory.bAutoSave = (memorydlg[DLGMEM_AUTOSAVE].state & SG_SELECTED);
                    215: 
                    216:        return false;
                    217: }
1.1.1.2 ! root      218: 
        !           219: 
        !           220: void Dialog_MemDlgDraw(void) {
        !           221:     int i;
        !           222:     int memsum, memsize;
        !           223:     
        !           224:     sprintf(custom_memsize, "Customize");
        !           225:     
        !           226:     for (i = DLGMEM_8MB; i <= DLGMEM_128MB; i++)
        !           227:        {
        !           228:                memorydlg[i].state &= ~SG_SELECTED;
        !           229:        }
        !           230:     
        !           231:     for (i = DLGMEM_120NS; i <= DLGMEM_60NS; i++)
        !           232:     {
        !           233:         memorydlg[i].state &= ~SG_SELECTED;
        !           234:     }
        !           235: 
        !           236:     /* Check memory configuration and find out if it is one of our default configurations */
        !           237:     memsum = Configuration_CheckMemory(ConfigureParams.Memory.nMemoryBankSize);
        !           238:     
        !           239:     for (i=0; i<defsizecount; i++) {
        !           240:         if (memcmp(ConfigureParams.Memory.nMemoryBankSize, defsize[i],
        !           241:                    sizeof(ConfigureParams.Memory.nMemoryBankSize))) {
        !           242:             memsize = 0;
        !           243:         } else {
        !           244:             memsize = memsum;
        !           245:             break;
        !           246:         }
        !           247:     }
        !           248: 
        !           249:     switch (memsize)
        !           250:     {
        !           251:         case 8:
        !           252:             memorydlg[DLGMEM_8MB].state |= SG_SELECTED;
        !           253:             break;
        !           254:         case 16:
        !           255:             memorydlg[DLGMEM_16MB].state |= SG_SELECTED;
        !           256:             break;
        !           257:         case 32:
        !           258:             memorydlg[DLGMEM_32MB].state |= SG_SELECTED;
        !           259:             break;
        !           260:         case 64:
        !           261:             memorydlg[DLGMEM_64MB].state |= SG_SELECTED;
        !           262:             break;
        !           263:         case 128:
        !           264:             memorydlg[DLGMEM_128MB].state |= SG_SELECTED;
        !           265:             break;
        !           266:         default:
        !           267:             memorydlg[DLGMEM_CUSTOM].state |= SG_SELECTED;
        !           268:             sprintf(custom_memsize, "Custom (%i MB)", memsum);
        !           269:             break;
        !           270:     }
        !           271:     
        !           272:     switch (ConfigureParams.Memory.nMemorySpeed) {
        !           273:         case MEMORY_120NS:
        !           274:             memorydlg[DLGMEM_120NS].state |= SG_SELECTED;
        !           275:             break;
        !           276:         case MEMORY_100NS:
        !           277:             memorydlg[DLGMEM_100NS].state |= SG_SELECTED;
        !           278:             break;
        !           279:         case MEMORY_80NS:
        !           280:             memorydlg[DLGMEM_80NS].state |= SG_SELECTED;
        !           281:             break;
        !           282:         case MEMORY_60NS:
        !           283:             memorydlg[DLGMEM_60NS].state |= SG_SELECTED;
        !           284:             break;
        !           285:             
        !           286:         default:
        !           287:             ConfigureParams.Memory.nMemorySpeed = MEMORY_100NS;
        !           288:             memorydlg[DLGMEM_100NS].state |= SG_SELECTED;
        !           289:             break;
        !           290:     }
        !           291:     
        !           292:     File_ShrinkName(dlgSnapShotName, ConfigureParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w);
        !           293:     
        !           294:     
        !           295:     if (ConfigureParams.Memory.bAutoSave)
        !           296:         memorydlg[DLGMEM_AUTOSAVE].state |= SG_SELECTED;
        !           297:     else
        !           298:         memorydlg[DLGMEM_AUTOSAVE].state &= ~SG_SELECTED;
        !           299: }

unix.superglobalmegacorp.com

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