|
|
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: char DlgMemory_rcsid[] = "Hatari $Id: dlgMemory.c,v 1.5 2004/06/11 12:48:49 thothy Exp $"; ! 8: ! 9: #include "main.h" ! 10: #include "dialog.h" ! 11: #include "sdlgui.h" ! 12: #include "memAlloc.h" ! 13: #include "memorySnapShot.h" ! 14: #include "file.h" ! 15: #include "screen.h" ! 16: ! 17: ! 18: #define DLGMEM_512KB 4 ! 19: #define DLGMEM_1MB 5 ! 20: #define DLGMEM_2MB 6 ! 21: #define DLGMEM_4MB 7 ! 22: #define DLGMEM_FILENAME 11 ! 23: #define DLGMEM_SAVE 12 ! 24: #define DLGMEM_RESTORE 13 ! 25: #define DLGMEM_EXIT 14 ! 26: ! 27: ! 28: static char dlgSnapShotName[36+1]; ! 29: ! 30: ! 31: /* The memory dialog: */ ! 32: static SGOBJ memorydlg[] = ! 33: { ! 34: { SGBOX, 0, 0, 0,0, 40,21, NULL }, ! 35: ! 36: { SGBOX, 0, 0, 1,1, 38,7, NULL }, ! 37: { SGTEXT, 0, 0, 15,2, 12,1, "Memory setup" }, ! 38: { SGTEXT, 0, 0, 4,4, 12,1, "ST-RAM size:" }, ! 39: { SGRADIOBUT, 0, 0, 19,4, 8,1, "512 kB" }, ! 40: { SGRADIOBUT, 0, 0, 30,4, 6,1, "1 MB" }, ! 41: { SGRADIOBUT, 0, 0, 19,6, 6,1, "2 MB" }, ! 42: { SGRADIOBUT, 0, 0, 30,6, 6,1, "4 MB" }, ! 43: ! 44: { SGBOX, 0, 0, 1,9, 38,8, NULL }, ! 45: { SGTEXT, 0, 0, 12,10, 17,1, "Memory state save" }, ! 46: { SGTEXT, 0, 0, 2,12, 20,1, "Snap-shot file name:" }, ! 47: { SGTEXT, 0, 0, 2,13, 36,1, dlgSnapShotName }, ! 48: { SGBUTTON, 0, 0, 8,15, 10,1, "Save" }, ! 49: { SGBUTTON, 0, 0, 22,15, 10,1, "Restore" }, ! 50: ! 51: { SGBUTTON, 0, 0, 10,19, 20,1, "Back to main menu" }, ! 52: { -1, 0, 0, 0,0, 0,0, NULL } ! 53: }; ! 54: ! 55: ! 56: /*-----------------------------------------------------------------------*/ ! 57: /* ! 58: Show and process the memory dialog. ! 59: */ ! 60: void Dialog_MemDlg(void) ! 61: { ! 62: int but; ! 63: char *tmpname; ! 64: ! 65: /* Allocate memory for tmpname: */ ! 66: tmpname = Memory_Alloc(FILENAME_MAX); ! 67: ! 68: SDLGui_CenterDlg(memorydlg); ! 69: ! 70: memorydlg[DLGMEM_512KB].state &= ~SG_SELECTED; ! 71: memorydlg[DLGMEM_1MB].state &= ~SG_SELECTED; ! 72: memorydlg[DLGMEM_2MB].state &= ~SG_SELECTED; ! 73: memorydlg[DLGMEM_4MB].state &= ~SG_SELECTED; ! 74: if( DialogParams.Memory.nMemorySize == MEMORY_SIZE_512Kb ) ! 75: memorydlg[DLGMEM_512KB].state |= SG_SELECTED; ! 76: else if( DialogParams.Memory.nMemorySize == MEMORY_SIZE_1Mb ) ! 77: memorydlg[DLGMEM_1MB].state |= SG_SELECTED; ! 78: else if( DialogParams.Memory.nMemorySize == MEMORY_SIZE_2Mb ) ! 79: memorydlg[DLGMEM_2MB].state |= SG_SELECTED; ! 80: else ! 81: memorydlg[DLGMEM_4MB].state |= SG_SELECTED; ! 82: ! 83: File_ShrinkName(dlgSnapShotName, DialogParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w); ! 84: ! 85: do ! 86: { ! 87: but = SDLGui_DoDialog(memorydlg); ! 88: ! 89: switch(but) ! 90: { ! 91: case DLGMEM_SAVE: /* Save memory snap-shot */ ! 92: strcpy(tmpname, DialogParams.Memory.szMemoryCaptureFileName); ! 93: if( SDLGui_FileSelect(tmpname, NULL, TRUE) ) /* Choose file name */ ! 94: { ! 95: if( !File_DoesFileNameEndWithSlash(tmpname) ) ! 96: { ! 97: strcpy(DialogParams.Memory.szMemoryCaptureFileName, tmpname); ! 98: File_ShrinkName(dlgSnapShotName, tmpname, memorydlg[DLGMEM_FILENAME].w); ! 99: MemorySnapShot_Capture(DialogParams.Memory.szMemoryCaptureFileName); ! 100: } ! 101: } ! 102: break; ! 103: case DLGMEM_RESTORE: /* Load memory snap-shot */ ! 104: strcpy(tmpname, DialogParams.Memory.szMemoryCaptureFileName); ! 105: if( SDLGui_FileSelect(tmpname, NULL, FALSE) ) /* Choose file name */ ! 106: { ! 107: if( !File_DoesFileNameEndWithSlash(tmpname) ) ! 108: { ! 109: strcpy(DialogParams.Memory.szMemoryCaptureFileName, tmpname); ! 110: File_ShrinkName(dlgSnapShotName, tmpname, memorydlg[DLGMEM_FILENAME].w); ! 111: MemorySnapShot_Restore(DialogParams.Memory.szMemoryCaptureFileName); ! 112: } ! 113: } ! 114: break; ! 115: } ! 116: } ! 117: while( but!=DLGMEM_EXIT && !bQuitProgram ); ! 118: ! 119: if( memorydlg[DLGMEM_512KB].state & SG_SELECTED ) ! 120: DialogParams.Memory.nMemorySize = MEMORY_SIZE_512Kb; ! 121: else if( memorydlg[DLGMEM_1MB].state & SG_SELECTED ) ! 122: DialogParams.Memory.nMemorySize = MEMORY_SIZE_1Mb; ! 123: else if( memorydlg[DLGMEM_2MB].state & SG_SELECTED ) ! 124: DialogParams.Memory.nMemorySize = MEMORY_SIZE_2Mb; ! 125: else ! 126: DialogParams.Memory.nMemorySize = MEMORY_SIZE_4Mb; ! 127: ! 128: Memory_Free(tmpname); ! 129: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.