|
|
1.1 root 1: /*
2: Hatari
3:
4: Configuration File
5:
6: The configuration file istored in a binary format to prevent tampering.
7: We also store the version number in the file to prevent people from
8: copying old .cfg files between versions.
9: */
10:
11: #include "main.h"
12: #include "configuration.h"
13: #include "dialog.h"
14: #include "video.h"
15: #include "view.h"
16: #include "vdi.h"
17:
18:
19: static FILE *ConfigFile;
20: /*static OFSTRUCT ConfigFileInfo;*/
21: BOOL bFirstTimeInstall=FALSE; /* Has been run before? Used to set default joysticks etc... */
22:
23:
24: /*-----------------------------------------------------------------------*/
25: /*
26: Load program setting from configuration file
27: */
28: void Configuration_Init(void) /* FIXME: Rewrite this! */
29: {
30: /*
31: char sVersionString[VERSION_STRING_SIZE];
32: int i,j;
33:
34: // Set default settings, incase registry does not exist or is invalid
35: Dialog_DefaultConfigurationDetails();
36: View_DefaultWindowPos();
37:
38: // Open configuration file
39: if (Configuration_OpenFileToRead()) {
40: // Version, check matches
41: Configuration_ReadFromFile(sVersionString,VERSION_STRING_SIZE);
42: if (memcmp(sVersionString,VERSION_STRING,VERSION_STRING_SIZE)==0) {
43: // Configure
44: Configuration_ReadFromFile(&ConfigureParams.Configure.nMinMaxSpeed,4);
45: Configuration_ReadFromFile(&WindowInitRect.left,4);
46: Configuration_ReadFromFile(&WindowInitRect.top,4);
47: for(i=0; i<2; i++) {
48: for(j=0; j<MAX_FLOPPY_MENU_IMAGES; j++) {
49: Configuration_ReadFromFile(szPreviousImageFilenames[i][j],MAX_FILENAME_LENGTH);
50: }
51: Configuration_ReadFromFile(&nPreviousImageFilenames[i],4);
52: }
53: for(i=0; i<MAX_TOSIMAGE_COMBO_IMAGES; i++)
54: Configuration_ReadFromFile(szComboTOSImages[i],MAX_FILENAME_LENGTH);
55: // Screen
56: Configuration_ReadFromFile(&ConfigureParams.Screen.bFullScreen,4);
57: Configuration_ReadFromFile(&ConfigureParams.Screen.Advanced.bDoubleSizeWindow,4);
58: Configuration_ReadFromFile(&ConfigureParams.Screen.Advanced.bAllowOverscan,4);
59: Configuration_ReadFromFile(&ConfigureParams.Screen.Advanced.bInterlacedFullScreen,4);
60: Configuration_ReadFromFile(&ConfigureParams.Screen.Advanced.bSyncToRetrace,4);
61: Configuration_ReadFromFile(&ConfigureParams.Screen.ChosenDisplayMode,4);
62: Configuration_ReadFromFile(&ConfigureParams.Screen.bCaptureChange,4);
63: Configuration_ReadFromFile(&ConfigureParams.Screen.nFramesPerSecond,4);
64: Configuration_ReadFromFile(&ConfigureParams.Screen.bUseHighRes,4);
65: // Joysticks
66: Configuration_ReadFromFile(&ConfigureParams.Joysticks.bUseDirectInput,4);
67: Configuration_ReadFromFile(&ConfigureParams.Joysticks.Joy[0].bCursorEmulation,4);
68: Configuration_ReadFromFile(&ConfigureParams.Joysticks.Joy[0].bEnableAutoFire,4);
69: Configuration_ReadFromFile(&ConfigureParams.Joysticks.Joy[1].bCursorEmulation,4);
70: Configuration_ReadFromFile(&ConfigureParams.Joysticks.Joy[1].bEnableAutoFire,4);
71: // Keyboard
72: Configuration_ReadFromFile(&ConfigureParams.Keyboard.bDisableKeyRepeat,4);
73: Configuration_ReadFromFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_SHIFT],4);
74: Configuration_ReadFromFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_CTRL],4);
75: Configuration_ReadFromFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_SHIFT],4);
76: Configuration_ReadFromFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_CTRL],4);
77: Configuration_ReadFromFile(ConfigureParams.Keyboard.szMappingFileName,sizeof(ConfigureParams.Keyboard.szMappingFileName));
78: // Sound
79: Configuration_ReadFromFile(&ConfigureParams.Sound.bEnableSound,4);
80: Configuration_ReadFromFile(&ConfigureParams.Sound.nPlaybackQuality,4);
81: Configuration_ReadFromFile(ConfigureParams.Sound.szYMCaptureFileName,sizeof(ConfigureParams.Sound.szYMCaptureFileName));
82: // Memory
83: Configuration_ReadFromFile(&ConfigureParams.Memory.nMemorySize,4);
84: Configuration_ReadFromFile(ConfigureParams.Memory.szMemoryCaptureFileName,sizeof(ConfigureParams.Memory.szMemoryCaptureFileName));
85: // DiscImage
86: Configuration_ReadFromFile(&ConfigureParams.DiscImage.bAutoInsertDiscB,4);
87: Configuration_ReadFromFile(ConfigureParams.DiscImage.szDiscImageDirectory,sizeof(ConfigureParams.DiscImage.szDiscImageDirectory));
88: // HardDisc
89: Configuration_ReadFromFile(&ConfigureParams.HardDisc.nDriveList,4);
90: Configuration_ReadFromFile(&ConfigureParams.HardDisc.bBootFromHardDisc,4);
91: Configuration_ReadFromFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_C],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_C]));
92: Configuration_ReadFromFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_D],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_D]));
93: Configuration_ReadFromFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_E],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_E]));
94: Configuration_ReadFromFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_F],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_F]));
95: // TOSGEM
96: Configuration_ReadFromFile(ConfigureParams.TOSGEM.szTOSImageFileName,sizeof(ConfigureParams.TOSGEM.szTOSImageFileName));
97: Configuration_ReadFromFile(&ConfigureParams.TOSGEM.bUseTimeDate,4);
98: Configuration_ReadFromFile(&ConfigureParams.TOSGEM.bAccGEMGraphics,4);
99: Configuration_ReadFromFile(&ConfigureParams.TOSGEM.bUseExtGEMResolutions,4);
100: Configuration_ReadFromFile(&ConfigureParams.TOSGEM.nGEMResolution,4);
101: Configuration_ReadFromFile(&ConfigureParams.TOSGEM.nGEMColours,4);
102: // RS232
103: Configuration_ReadFromFile(&ConfigureParams.RS232.bEnableRS232,4);
104: Configuration_ReadFromFile(&ConfigureParams.RS232.nCOMPort,4);
105: // Printer
106: Configuration_ReadFromFile(&ConfigureParams.Printer.bEnablePrinting,4);
107: Configuration_ReadFromFile(&ConfigureParams.Printer.bPrintToFile,4);
108: Configuration_ReadFromFile(ConfigureParams.Printer.szPrintToFileName,sizeof(ConfigureParams.Printer.szPrintToFileName));
109: // Favourites
110: Configuration_ReadFromFile(&ConfigureParams.Favourites.bCheckDiscs,4);
111: Configuration_ReadFromFile(&ConfigureParams.Favourites.bOnlyShowIfExist,4);
112:
113: bUseVDIRes = ConfigureParams.TOSGEM.bUseExtGEMResolutions;
114: bUseHighRes = ConfigureParams.Screen.bUseHighRes || (bUseVDIRes && (ConfigureParams.TOSGEM.nGEMColours==GEMCOLOUR_2));
115: }
116:
117: // And close up
118: Configuration_CloseFile();
119: }
120: else {
121: // No configuration file, assume first-time install
122: bFirstTimeInstall = TRUE;
123: }
124:
125: // Copy details to globals, TRUE
126: Dialog_CopyDetailsFromConfiguration(TRUE);
127: */
128: }
129:
130:
131: /*-----------------------------------------------------------------------*/
132: /*
133: Save program setting to configuration file
134: */
135: void Configuration_UnInit(void)
136: {
137: /* FIXME: Rewrite this, too! */
138: /*
139: int i,j;
140:
141: // Open configuration file
142: if (Configuration_OpenFileToWrite()) {
143: // Version
144: Configuration_WriteToFile(VERSION_STRING,VERSION_STRING_SIZE);
145: // Configure
146: Configuration_WriteToFile(&ConfigureParams.Configure.nMinMaxSpeed,4);
147: ConfigureParams.Configure.nPrevMinMaxSpeed = ConfigureParams.Configure.nMinMaxSpeed;
148: Configuration_WriteToFile(&WindowInitRect.left,4);
149: Configuration_WriteToFile(&WindowInitRect.top,4);
150: for(i=0; i<2; i++) {
151: for(j=0; j<MAX_FLOPPY_MENU_IMAGES; j++) {
152: Configuration_WriteToFile(szPreviousImageFilenames[i][j],MAX_FILENAME_LENGTH);
153: }
154: Configuration_WriteToFile(&nPreviousImageFilenames[i],4);
155: }
156: for(i=0; i<MAX_TOSIMAGE_COMBO_IMAGES; i++)
157: Configuration_WriteToFile(szComboTOSImages[i],MAX_FILENAME_LENGTH);
158: // Screen
159: Configuration_WriteToFile(&ConfigureParams.Screen.bFullScreen,4);
160: Configuration_WriteToFile(&ConfigureParams.Screen.Advanced.bDoubleSizeWindow,4);
161: Configuration_WriteToFile(&ConfigureParams.Screen.Advanced.bAllowOverscan,4);
162: Configuration_WriteToFile(&ConfigureParams.Screen.Advanced.bInterlacedFullScreen,4);
163: Configuration_WriteToFile(&ConfigureParams.Screen.Advanced.bSyncToRetrace,4);
164: Configuration_WriteToFile(&ConfigureParams.Screen.ChosenDisplayMode,4);
165: Configuration_WriteToFile(&ConfigureParams.Screen.bCaptureChange,4);
166: Configuration_WriteToFile(&ConfigureParams.Screen.nFramesPerSecond,4);
167: Configuration_WriteToFile(&ConfigureParams.Screen.bUseHighRes,4);
168: // Joysticks
169: Configuration_WriteToFile(&ConfigureParams.Joysticks.bUseDirectInput,4);
170: Configuration_WriteToFile(&ConfigureParams.Joysticks.Joy[0].bCursorEmulation,4);
171: Configuration_WriteToFile(&ConfigureParams.Joysticks.Joy[0].bEnableAutoFire,4);
172: Configuration_WriteToFile(&ConfigureParams.Joysticks.Joy[1].bCursorEmulation,4);
173: Configuration_WriteToFile(&ConfigureParams.Joysticks.Joy[1].bEnableAutoFire,4);
174: // Keyboard
175: Configuration_WriteToFile(&ConfigureParams.Keyboard.bDisableKeyRepeat,4);
176: Configuration_WriteToFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_SHIFT],4);
177: Configuration_WriteToFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_CTRL],4);
178: Configuration_WriteToFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_SHIFT],4);
179: Configuration_WriteToFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_CTRL],4);
180: Configuration_WriteToFile(ConfigureParams.Keyboard.szMappingFileName,sizeof(ConfigureParams.Keyboard.szMappingFileName));
181: // Sound
182: Configuration_WriteToFile(&ConfigureParams.Sound.bEnableSound,4);
183: Configuration_WriteToFile(&ConfigureParams.Sound.nPlaybackQuality,4);
184: Configuration_WriteToFile(ConfigureParams.Sound.szYMCaptureFileName,sizeof(ConfigureParams.Sound.szYMCaptureFileName));
185: // Memory
186: Configuration_WriteToFile(&ConfigureParams.Memory.nMemorySize,4);
187: Configuration_WriteToFile(ConfigureParams.Memory.szMemoryCaptureFileName,sizeof(ConfigureParams.Memory.szMemoryCaptureFileName));
188: // DiscImage
189: Configuration_WriteToFile(&ConfigureParams.DiscImage.bAutoInsertDiscB,4);
190: Configuration_WriteToFile(ConfigureParams.DiscImage.szDiscImageDirectory,sizeof(ConfigureParams.DiscImage.szDiscImageDirectory));
191: // HardDisc
192: Configuration_WriteToFile(&ConfigureParams.HardDisc.nDriveList,4);
193: Configuration_WriteToFile(&ConfigureParams.HardDisc.bBootFromHardDisc,4);
194: Configuration_WriteToFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_C],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_C]));
195: Configuration_WriteToFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_D],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_D]));
196: Configuration_WriteToFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_E],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_E]));
197: Configuration_WriteToFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_F],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_F]));
198: // TOSGEM
199: Configuration_WriteToFile(ConfigureParams.TOSGEM.szTOSImageFileName,sizeof(ConfigureParams.TOSGEM.szTOSImageFileName));
200: Configuration_WriteToFile(&ConfigureParams.TOSGEM.bUseTimeDate,4);
201: Configuration_WriteToFile(&ConfigureParams.TOSGEM.bAccGEMGraphics,4);
202: Configuration_WriteToFile(&ConfigureParams.TOSGEM.bUseExtGEMResolutions,4);
203: Configuration_WriteToFile(&ConfigureParams.TOSGEM.nGEMResolution,4);
204: Configuration_WriteToFile(&ConfigureParams.TOSGEM.nGEMColours,4);
205: // RS232
206: Configuration_WriteToFile(&ConfigureParams.RS232.bEnableRS232,4);
207: Configuration_WriteToFile(&ConfigureParams.RS232.nCOMPort,4);
208: // Printer
209: Configuration_WriteToFile(&ConfigureParams.Printer.bEnablePrinting,4);
210: Configuration_WriteToFile(&ConfigureParams.Printer.bPrintToFile,4);
211: Configuration_WriteToFile(ConfigureParams.Printer.szPrintToFileName,sizeof(ConfigureParams.Printer.szPrintToFileName));
212: // Favourites
213: Configuration_WriteToFile(&ConfigureParams.Favourites.bCheckDiscs,4);
214: Configuration_WriteToFile(&ConfigureParams.Favourites.bOnlyShowIfExist,4);
215:
216: // And close up
217: Configuration_CloseFile();
218: }
219: */
220: }
221:
222:
223: /*-----------------------------------------------------------------------*/
224: /*
225: Open configuration file to write to
226: */
227: BOOL Configuration_OpenFileToWrite(void)
228: {
229: char szString[MAX_FILENAME_LENGTH];
230:
231: /* Create file */
232: sprintf(szString,"%s/hatari.cfg",szWorkingDir);
233: ConfigFile = fopen(szString, "wb");
234: if (ConfigFile!=NULL)
235: return(TRUE);
236:
237: /* Whoops, error */
238: return(FALSE);
239: }
240:
241:
242: /*-----------------------------------------------------------------------*/
243: /*
244: Open configuration file for reading
245: */
246: BOOL Configuration_OpenFileToRead(void)
247: {
248: char szString[MAX_FILENAME_LENGTH];
249:
250: /* Create file */
251: sprintf(szString,"%s/hatari.cfg",szWorkingDir);
252: ConfigFile = fopen(szString, "rb");
253: if (ConfigFile!=NULL)
254: return(TRUE);
255:
256: /* Whoops, error */
257: return(FALSE);
258: }
259:
260:
261: /*-----------------------------------------------------------------------*/
262: /*
263: Close configuration
264: */
265: void Configuration_CloseFile(void)
266: {
267: fclose(ConfigFile);
268: }
269:
270:
271: /*-----------------------------------------------------------------------*/
272: /*
273: Write entry to configuration file
274: */
275: void Configuration_WriteToFile(void *pData,int nBytes)
276: {
277: fwrite(pData, 1, nBytes, ConfigFile);
278: }
279:
280:
281: /*-----------------------------------------------------------------------*/
282: /*
283: Read entry from configuration file
284: */
285: void Configuration_ReadFromFile(void *pData,int nBytes)
286: {
287: fread(pData, 1, nBytes, ConfigFile);
288: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.