|
|
1.1 root 1: /*
2: Hatari - dlgTosGem.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 DlgTosGem_rcsid[] = "Hatari $Id: dlgTosGem.c,v 1.5 2004/06/11 12:48:49 thothy Exp $";
8:
9: #include "main.h"
10: #include "configuration.h"
11: #include "dialog.h"
12: #include "sdlgui.h"
13: #include "file.h"
14: #include "memAlloc.h"
15: #include "screen.h"
16: #include "vdi.h"
17:
18:
19: #define DLGTOSGEM_ROMNAME 4
20: #define DLGTOSGEM_ROMBROWSE 5
21: #define DLGTOSGEM_GEMRES 8
22: #define DLGTOSGEM_RES640 10
23: #define DLGTOSGEM_RES800 11
24: #define DLGTOSGEM_RES1024 12
25: #define DLGTOSGEM_BPP1 14
26: #define DLGTOSGEM_BPP2 15
27: #define DLGTOSGEM_BPP4 16
28: #define DLGTOSGEM_EXIT 17
29:
30:
31: /* The TOS/GEM dialog: */
32: static SGOBJ tosgemdlg[] =
33: {
34: { SGBOX, 0, 0, 0,0, 40,24, NULL },
35: { SGBOX, 0, 0, 1,1, 38,8, NULL },
36: { SGTEXT, 0, 0, 16,2, 9,1, "TOS setup" },
37: { SGTEXT, 0, 0, 2,5, 25,1, "ROM image (needs reset!):" },
38: { SGTEXT, 0, 0, 2,7, 34,1, NULL },
39: { SGBUTTON, 0, 0, 30,5, 8,1, "Browse" },
40: { SGBOX, 0, 0, 1,10, 38,10, NULL },
41: { SGTEXT, 0, 0, 16,11, 9,1, "GEM setup" },
42: { SGCHECKBOX, 0, 0, 2,13, 25,1, "Use extended resolution" },
43: { SGTEXT, 0, 0, 2,15, 11,1, "Resolution:" },
44: { SGRADIOBUT, 0, 0, 4,16, 9,1, "640x480" },
45: { SGRADIOBUT, 0, 0, 16,16, 9,1, "800x600" },
46: { SGRADIOBUT, 0, 0, 28,16, 10,1, "1024x768" },
47: { SGTEXT, 0, 0, 2,18, 6,1, "Depth:" },
48: { SGRADIOBUT, 0, 0, 11,18, 6,1, "1bpp" },
49: { SGRADIOBUT, 0, 0, 20,18, 6,1, "2bpp" },
50: { SGRADIOBUT, 0, 0, 29,18, 6,1, "4bpp" },
51: { SGBUTTON, 0, 0, 10,22, 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 TOS/GEM dialog.
59: */
60: void Dialog_TosGemDlg(void)
61: {
62: char *tmpname;
63: char dlgromname[35];
64: int but;
65: int i;
66:
67: tmpname = Memory_Alloc(FILENAME_MAX);
68:
69: SDLGui_CenterDlg(tosgemdlg);
70: File_ShrinkName(dlgromname, DialogParams.TOSGEM.szTOSImageFileName, 34);
71: tosgemdlg[DLGTOSGEM_ROMNAME].txt = dlgromname;
72:
73: if( DialogParams.TOSGEM.bUseExtGEMResolutions )
74: tosgemdlg[DLGTOSGEM_GEMRES].state |= SG_SELECTED;
75: else
76: tosgemdlg[DLGTOSGEM_GEMRES].state &= ~SG_SELECTED;
77:
78: for(i=0; i<3; i++)
79: {
80: tosgemdlg[DLGTOSGEM_RES640 + i].state &= ~SG_SELECTED;
81: tosgemdlg[DLGTOSGEM_BPP1 + i].state &= ~SG_SELECTED;
82: }
83: tosgemdlg[DLGTOSGEM_RES640+DialogParams.TOSGEM.nGEMResolution-GEMRES_640x480].state |= SG_SELECTED;
84: tosgemdlg[DLGTOSGEM_BPP1+DialogParams.TOSGEM.nGEMColours-GEMCOLOUR_2].state |= SG_SELECTED;
85:
86: do
87: {
88: but = SDLGui_DoDialog(tosgemdlg);
89: switch( but )
90: {
91: case DLGTOSGEM_ROMBROWSE:
92: strcpy(tmpname, DialogParams.TOSGEM.szTOSImageFileName);
93: File_MakeAbsoluteName(tmpname);
94: if( SDLGui_FileSelect(tmpname, NULL, FALSE) ) /* Show and process the file selection dlg */
95: {
96: strcpy(DialogParams.TOSGEM.szTOSImageFileName, tmpname);
97: File_ShrinkName(dlgromname, DialogParams.TOSGEM.szTOSImageFileName, 34);
98: }
99: break;
100: }
101: }
102: while(but!=DLGTOSGEM_EXIT && !bQuitProgram);
103:
104: DialogParams.TOSGEM.bUseExtGEMResolutions = (tosgemdlg[DLGTOSGEM_GEMRES].state & SG_SELECTED);
105: for(i=0; i<3; i++)
106: {
107: if(tosgemdlg[DLGTOSGEM_RES640 + i].state & SG_SELECTED)
108: DialogParams.TOSGEM.nGEMResolution = GEMRES_640x480 + i;
109: if(tosgemdlg[DLGTOSGEM_BPP1 + i].state & SG_SELECTED)
110: DialogParams.TOSGEM.nGEMColours = GEMCOLOUR_2 + i;
111: }
112:
113: Memory_Free(tmpname);
114: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.