|
|
1.1 root 1: /*
1.1.1.6 root 2: Hatari - configuration.c
3:
1.1.1.20! 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:
7: Configuration File
8:
1.1.1.6 root 9: The configuration file is now stored in an ASCII format to allow the user
10: to edit the file manually.
1.1 root 11: */
1.1.1.14 root 12: const char Configuration_fileid[] = "Hatari configuration.c : " __DATE__ " " __TIME__;
1.1.1.10 root 13:
14: #include <SDL_keysym.h>
1.1 root 15:
16: #include "main.h"
17: #include "configuration.h"
1.1.1.9 root 18: #include "cfgopts.h"
1.1.1.8 root 19: #include "audio.h"
1.1.1.17 root 20: #include "sound.h"
1.1.1.5 root 21: #include "file.h"
1.1.1.9 root 22: #include "log.h"
23: #include "m68000.h"
1.1.1.12 root 24: #include "memorySnapShot.h"
25: #include "paths.h"
1.1.1.9 root 26: #include "screen.h"
27: #include "vdi.h"
28: #include "video.h"
1.1.1.17 root 29: #include "avi_record.h"
30: #include "clocks_timings.h"
1.1.1.20! root 31: #include "68kDisass.h"
1.1.1.6 root 32:
33:
34: CNF_PARAMS ConfigureParams; /* List of configuration for the emulator */
1.1.1.7 root 35: char sConfigFileName[FILENAME_MAX]; /* Stores the name of the configuration file */
1.1.1.6 root 36:
37:
1.1.1.9 root 38: /* Used to load/save logging options */
39: static const struct Config_Tag configs_Log[] =
40: {
41: { "sLogFileName", String_Tag, ConfigureParams.Log.sLogFileName },
1.1.1.13 root 42: { "sTraceFileName", String_Tag, ConfigureParams.Log.sTraceFileName },
1.1.1.9 root 43: { "nTextLogLevel", Int_Tag, &ConfigureParams.Log.nTextLogLevel },
44: { "nAlertDlgLogLevel", Int_Tag, &ConfigureParams.Log.nAlertDlgLogLevel },
1.1.1.12 root 45: { "bConfirmQuit", Bool_Tag, &ConfigureParams.Log.bConfirmQuit },
1.1.1.20! root 46: { "bNatFeats", Bool_Tag, &ConfigureParams.Log.bNatFeats },
! 47: { "bConsoleWindow", Bool_Tag, &ConfigureParams.Log.bConsoleWindow },
1.1.1.9 root 48: { NULL , Error_Tag, NULL }
49: };
50:
1.1.1.16 root 51: /* Used to load/save debugger options */
52: static const struct Config_Tag configs_Debugger[] =
53: {
54: { "nNumberBase", Int_Tag, &ConfigureParams.Debugger.nNumberBase },
55: { "nDisasmLines", Int_Tag, &ConfigureParams.Debugger.nDisasmLines },
56: { "nMemdumpLines", Int_Tag, &ConfigureParams.Debugger.nMemdumpLines },
1.1.1.20! root 57: { "nDisasmOptions", Int_Tag, &ConfigureParams.Debugger.nDisasmOptions },
! 58: { "bDisasmUAE", Bool_Tag, &ConfigureParams.Debugger.bDisasmUAE },
1.1.1.16 root 59: { NULL , Error_Tag, NULL }
60: };
1.1.1.9 root 61:
1.1.1.6 root 62: /* Used to load/save screen options */
1.1.1.9 root 63: static const struct Config_Tag configs_Screen[] =
1.1.1.6 root 64: {
1.1.1.13 root 65: { "nMonitorType", Int_Tag, &ConfigureParams.Screen.nMonitorType },
66: { "nFrameSkips", Int_Tag, &ConfigureParams.Screen.nFrameSkips },
1.1.1.9 root 67: { "bFullScreen", Bool_Tag, &ConfigureParams.Screen.bFullScreen },
1.1.1.17 root 68: { "bKeepResolution", Bool_Tag, &ConfigureParams.Screen.bKeepResolution },
1.1.1.18 root 69: { "bKeepResolutionST", Bool_Tag, &ConfigureParams.Screen.bKeepResolutionST },
1.1.1.9 root 70: { "bAllowOverscan", Bool_Tag, &ConfigureParams.Screen.bAllowOverscan },
1.1.1.12 root 71: { "nSpec512Threshold", Int_Tag, &ConfigureParams.Screen.nSpec512Threshold },
72: { "nForceBpp", Int_Tag, &ConfigureParams.Screen.nForceBpp },
1.1.1.16 root 73: { "bAspectCorrect", Bool_Tag, &ConfigureParams.Screen.bAspectCorrect },
1.1.1.9 root 74: { "bUseExtVdiResolutions", Bool_Tag, &ConfigureParams.Screen.bUseExtVdiResolutions },
1.1.1.12 root 75: { "nVdiWidth", Int_Tag, &ConfigureParams.Screen.nVdiWidth },
76: { "nVdiHeight", Int_Tag, &ConfigureParams.Screen.nVdiHeight },
1.1.1.9 root 77: { "nVdiColors", Int_Tag, &ConfigureParams.Screen.nVdiColors },
1.1.1.13 root 78: { "bShowStatusbar", Bool_Tag, &ConfigureParams.Screen.bShowStatusbar },
79: { "bShowDriveLed", Bool_Tag, &ConfigureParams.Screen.bShowDriveLed },
1.1.1.17 root 80: { "bCrop", Bool_Tag, &ConfigureParams.Screen.bCrop },
1.1.1.18 root 81: { "bForceMax", Bool_Tag, &ConfigureParams.Screen.bForceMax },
1.1.1.16 root 82: { "nMaxWidth", Int_Tag, &ConfigureParams.Screen.nMaxWidth },
83: { "nMaxHeight", Int_Tag, &ConfigureParams.Screen.nMaxHeight },
1.1.1.9 root 84: { NULL , Error_Tag, NULL }
1.1.1.6 root 85: };
86:
1.1.1.10 root 87: /* Used to load/save joystick 0 options */
1.1.1.9 root 88: static const struct Config_Tag configs_Joystick0[] =
1.1.1.6 root 89: {
1.1.1.10 root 90: { "nJoystickMode", Int_Tag, &ConfigureParams.Joysticks.Joy[0].nJoystickMode },
1.1.1.9 root 91: { "bEnableAutoFire", Bool_Tag, &ConfigureParams.Joysticks.Joy[0].bEnableAutoFire },
1.1.1.15 root 92: { "bEnableJumpOnFire2", Bool_Tag, &ConfigureParams.Joysticks.Joy[0].bEnableJumpOnFire2 },
1.1.1.10 root 93: { "nJoyId", Int_Tag, &ConfigureParams.Joysticks.Joy[0].nJoyId },
94: { "nKeyCodeUp", Int_Tag, &ConfigureParams.Joysticks.Joy[0].nKeyCodeUp },
95: { "nKeyCodeDown", Int_Tag, &ConfigureParams.Joysticks.Joy[0].nKeyCodeDown },
96: { "nKeyCodeLeft", Int_Tag, &ConfigureParams.Joysticks.Joy[0].nKeyCodeLeft },
97: { "nKeyCodeRight", Int_Tag, &ConfigureParams.Joysticks.Joy[0].nKeyCodeRight },
98: { "nKeyCodeFire", Int_Tag, &ConfigureParams.Joysticks.Joy[0].nKeyCodeFire },
1.1.1.9 root 99: { NULL , Error_Tag, NULL }
1.1.1.6 root 100: };
1.1.1.10 root 101:
102: /* Used to load/save joystick 1 options */
1.1.1.9 root 103: static const struct Config_Tag configs_Joystick1[] =
1.1.1.6 root 104: {
1.1.1.10 root 105: { "nJoystickMode", Int_Tag, &ConfigureParams.Joysticks.Joy[1].nJoystickMode },
1.1.1.9 root 106: { "bEnableAutoFire", Bool_Tag, &ConfigureParams.Joysticks.Joy[1].bEnableAutoFire },
1.1.1.15 root 107: { "bEnableJumpOnFire2", Bool_Tag, &ConfigureParams.Joysticks.Joy[1].bEnableJumpOnFire2 },
1.1.1.10 root 108: { "nJoyId", Int_Tag, &ConfigureParams.Joysticks.Joy[1].nJoyId },
109: { "nKeyCodeUp", Int_Tag, &ConfigureParams.Joysticks.Joy[1].nKeyCodeUp },
110: { "nKeyCodeDown", Int_Tag, &ConfigureParams.Joysticks.Joy[1].nKeyCodeDown },
111: { "nKeyCodeLeft", Int_Tag, &ConfigureParams.Joysticks.Joy[1].nKeyCodeLeft },
112: { "nKeyCodeRight", Int_Tag, &ConfigureParams.Joysticks.Joy[1].nKeyCodeRight },
113: { "nKeyCodeFire", Int_Tag, &ConfigureParams.Joysticks.Joy[1].nKeyCodeFire },
114: { NULL , Error_Tag, NULL }
115: };
116:
117: /* Used to load/save joystick 2 options */
118: static const struct Config_Tag configs_Joystick2[] =
119: {
120: { "nJoystickMode", Int_Tag, &ConfigureParams.Joysticks.Joy[2].nJoystickMode },
121: { "bEnableAutoFire", Bool_Tag, &ConfigureParams.Joysticks.Joy[2].bEnableAutoFire },
1.1.1.15 root 122: { "bEnableJumpOnFire2", Bool_Tag, &ConfigureParams.Joysticks.Joy[2].bEnableJumpOnFire2 },
1.1.1.10 root 123: { "nJoyId", Int_Tag, &ConfigureParams.Joysticks.Joy[2].nJoyId },
124: { "nKeyCodeUp", Int_Tag, &ConfigureParams.Joysticks.Joy[2].nKeyCodeUp },
125: { "nKeyCodeDown", Int_Tag, &ConfigureParams.Joysticks.Joy[2].nKeyCodeDown },
126: { "nKeyCodeLeft", Int_Tag, &ConfigureParams.Joysticks.Joy[2].nKeyCodeLeft },
127: { "nKeyCodeRight", Int_Tag, &ConfigureParams.Joysticks.Joy[2].nKeyCodeRight },
128: { "nKeyCodeFire", Int_Tag, &ConfigureParams.Joysticks.Joy[2].nKeyCodeFire },
129: { NULL , Error_Tag, NULL }
130: };
131:
132: /* Used to load/save joystick 3 options */
133: static const struct Config_Tag configs_Joystick3[] =
134: {
135: { "nJoystickMode", Int_Tag, &ConfigureParams.Joysticks.Joy[3].nJoystickMode },
136: { "bEnableAutoFire", Bool_Tag, &ConfigureParams.Joysticks.Joy[3].bEnableAutoFire },
1.1.1.15 root 137: { "bEnableJumpOnFire2", Bool_Tag, &ConfigureParams.Joysticks.Joy[3].bEnableJumpOnFire2 },
1.1.1.10 root 138: { "nJoyId", Int_Tag, &ConfigureParams.Joysticks.Joy[3].nJoyId },
139: { "nKeyCodeUp", Int_Tag, &ConfigureParams.Joysticks.Joy[3].nKeyCodeUp },
140: { "nKeyCodeDown", Int_Tag, &ConfigureParams.Joysticks.Joy[3].nKeyCodeDown },
141: { "nKeyCodeLeft", Int_Tag, &ConfigureParams.Joysticks.Joy[3].nKeyCodeLeft },
142: { "nKeyCodeRight", Int_Tag, &ConfigureParams.Joysticks.Joy[3].nKeyCodeRight },
143: { "nKeyCodeFire", Int_Tag, &ConfigureParams.Joysticks.Joy[3].nKeyCodeFire },
144: { NULL , Error_Tag, NULL }
145: };
146:
147: /* Used to load/save joystick 4 options */
148: static const struct Config_Tag configs_Joystick4[] =
149: {
150: { "nJoystickMode", Int_Tag, &ConfigureParams.Joysticks.Joy[4].nJoystickMode },
151: { "bEnableAutoFire", Bool_Tag, &ConfigureParams.Joysticks.Joy[4].bEnableAutoFire },
1.1.1.15 root 152: { "bEnableJumpOnFire2", Bool_Tag, &ConfigureParams.Joysticks.Joy[4].bEnableJumpOnFire2 },
1.1.1.10 root 153: { "nJoyId", Int_Tag, &ConfigureParams.Joysticks.Joy[4].nJoyId },
154: { "nKeyCodeUp", Int_Tag, &ConfigureParams.Joysticks.Joy[4].nKeyCodeUp },
155: { "nKeyCodeDown", Int_Tag, &ConfigureParams.Joysticks.Joy[4].nKeyCodeDown },
156: { "nKeyCodeLeft", Int_Tag, &ConfigureParams.Joysticks.Joy[4].nKeyCodeLeft },
157: { "nKeyCodeRight", Int_Tag, &ConfigureParams.Joysticks.Joy[4].nKeyCodeRight },
158: { "nKeyCodeFire", Int_Tag, &ConfigureParams.Joysticks.Joy[4].nKeyCodeFire },
159: { NULL , Error_Tag, NULL }
160: };
161:
162: /* Used to load/save joystick 5 options */
163: static const struct Config_Tag configs_Joystick5[] =
164: {
165: { "nJoystickMode", Int_Tag, &ConfigureParams.Joysticks.Joy[5].nJoystickMode },
166: { "bEnableAutoFire", Bool_Tag, &ConfigureParams.Joysticks.Joy[5].bEnableAutoFire },
1.1.1.15 root 167: { "bEnableJumpOnFire2", Bool_Tag, &ConfigureParams.Joysticks.Joy[5].bEnableJumpOnFire2 },
1.1.1.10 root 168: { "nJoyId", Int_Tag, &ConfigureParams.Joysticks.Joy[5].nJoyId },
169: { "nKeyCodeUp", Int_Tag, &ConfigureParams.Joysticks.Joy[5].nKeyCodeUp },
170: { "nKeyCodeDown", Int_Tag, &ConfigureParams.Joysticks.Joy[5].nKeyCodeDown },
171: { "nKeyCodeLeft", Int_Tag, &ConfigureParams.Joysticks.Joy[5].nKeyCodeLeft },
172: { "nKeyCodeRight", Int_Tag, &ConfigureParams.Joysticks.Joy[5].nKeyCodeRight },
173: { "nKeyCodeFire", Int_Tag, &ConfigureParams.Joysticks.Joy[5].nKeyCodeFire },
1.1.1.9 root 174: { NULL , Error_Tag, NULL }
1.1.1.6 root 175: };
1.1.1.5 root 176:
1.1.1.6 root 177: /* Used to load/save keyboard options */
1.1.1.9 root 178: static const struct Config_Tag configs_Keyboard[] =
1.1.1.6 root 179: {
1.1.1.9 root 180: { "bDisableKeyRepeat", Bool_Tag, &ConfigureParams.Keyboard.bDisableKeyRepeat },
181: { "nKeymapType", Int_Tag, &ConfigureParams.Keyboard.nKeymapType },
182: { "szMappingFileName", String_Tag, ConfigureParams.Keyboard.szMappingFileName },
183: { NULL , Error_Tag, NULL }
1.1.1.6 root 184: };
1.1 root 185:
1.1.1.11 root 186: /* Used to load/save shortcut key bindings with modifiers options */
187: static const struct Config_Tag configs_ShortCutWithMod[] =
188: {
189: { "keyOptions", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_OPTIONS] },
190: { "keyFullScreen", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_FULLSCREEN] },
1.1.1.16 root 191: { "keyMouseMode", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_MOUSEGRAB] },
1.1.1.11 root 192: { "keyColdReset", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_COLDRESET] },
193: { "keyWarmReset", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_WARMRESET] },
194: { "keyScreenShot", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_SCREENSHOT] },
195: { "keyBossKey", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_BOSSKEY] },
196: { "keyCursorEmu", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_CURSOREMU] },
1.1.1.13 root 197: { "keyFastForward",Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_FASTFORWARD] },
1.1.1.11 root 198: { "keyRecAnim", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_RECANIM] },
199: { "keyRecSound", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_RECSOUND] },
200: { "keySound", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_SOUND] },
1.1.1.15 root 201: { "keyPause", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_PAUSE] },
202: { "keyDebugger", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_DEBUG] },
1.1.1.11 root 203: { "keyQuit", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_QUIT] },
1.1.1.12 root 204: { "keyLoadMem", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_LOADMEM] },
205: { "keySaveMem", Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_SAVEMEM] },
1.1.1.13 root 206: { "keyInsertDiskA",Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_INSERTDISKA] },
1.1.1.11 root 207: { NULL , Error_Tag, NULL }
208: };
209:
210: /* Used to load/save shortcut key bindings without modifiers options */
211: static const struct Config_Tag configs_ShortCutWithoutMod[] =
212: {
213: { "keyOptions", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_OPTIONS] },
214: { "keyFullScreen", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_FULLSCREEN] },
1.1.1.16 root 215: { "keyMouseMode", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_MOUSEGRAB] },
1.1.1.11 root 216: { "keyColdReset", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_COLDRESET] },
217: { "keyWarmReset", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_WARMRESET] },
218: { "keyScreenShot", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_SCREENSHOT] },
219: { "keyBossKey", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_BOSSKEY] },
220: { "keyCursorEmu", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_CURSOREMU] },
1.1.1.13 root 221: { "keyFastForward",Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_FASTFORWARD] },
1.1.1.11 root 222: { "keyRecAnim", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_RECANIM] },
223: { "keyRecSound", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_RECSOUND] },
224: { "keySound", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_SOUND] },
1.1.1.15 root 225: { "keyPause", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_PAUSE] },
226: { "keyDebugger", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_DEBUG] },
1.1.1.11 root 227: { "keyQuit", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_QUIT] },
1.1.1.12 root 228: { "keyLoadMem", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_LOADMEM] },
229: { "keySaveMem", Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_SAVEMEM] },
1.1.1.13 root 230: { "keyInsertDiskA",Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_INSERTDISKA] },
1.1.1.11 root 231: { NULL , Error_Tag, NULL }
232: };
233:
234:
1.1.1.6 root 235: /* Used to load/save sound options */
1.1.1.9 root 236: static const struct Config_Tag configs_Sound[] =
1.1.1.6 root 237: {
1.1.1.17 root 238: { "bEnableMicrophone", Bool_Tag, &ConfigureParams.Sound.bEnableMicrophone },
1.1.1.9 root 239: { "bEnableSound", Bool_Tag, &ConfigureParams.Sound.bEnableSound },
1.1.1.19 root 240: { "bEnableSoundSync", Bool_Tag, &ConfigureParams.Sound.bEnableSoundSync },
1.1.1.15 root 241: { "nPlaybackFreq", Int_Tag, &ConfigureParams.Sound.nPlaybackFreq },
1.1.1.16 root 242: { "nSdlAudioBufferSize", Int_Tag, &ConfigureParams.Sound.SdlAudioBufferSize },
1.1.1.17 root 243: { "szYMCaptureFileName", String_Tag, ConfigureParams.Sound.szYMCaptureFileName },
244: { "YmVolumeMixing", Int_Tag, &ConfigureParams.Sound.YmVolumeMixing },
1.1.1.9 root 245: { NULL , Error_Tag, NULL }
1.1.1.6 root 246: };
247:
248: /* Used to load/save memory options */
1.1.1.9 root 249: static const struct Config_Tag configs_Memory[] =
1.1.1.6 root 250: {
1.1.1.9 root 251: { "nMemorySize", Int_Tag, &ConfigureParams.Memory.nMemorySize },
1.1.1.12 root 252: { "bAutoSave", Bool_Tag, &ConfigureParams.Memory.bAutoSave },
1.1.1.9 root 253: { "szMemoryCaptureFileName", String_Tag, ConfigureParams.Memory.szMemoryCaptureFileName },
1.1.1.12 root 254: { "szAutoSaveFileName", String_Tag, ConfigureParams.Memory.szAutoSaveFileName },
1.1.1.9 root 255: { NULL , Error_Tag, NULL }
1.1.1.6 root 256: };
257:
258:
259: /* Used to load/save floppy options */
1.1.1.9 root 260: static const struct Config_Tag configs_Floppy[] =
1.1.1.6 root 261: {
1.1.1.10 root 262: { "bAutoInsertDiskB", Bool_Tag, &ConfigureParams.DiskImage.bAutoInsertDiskB },
1.1.1.18 root 263: { "FastFloppy", Bool_Tag, &ConfigureParams.DiskImage.FastFloppy },
1.1.1.10 root 264: { "nWriteProtection", Int_Tag, &ConfigureParams.DiskImage.nWriteProtection },
1.1.1.13 root 265: { "szDiskAZipPath", String_Tag, ConfigureParams.DiskImage.szDiskZipPath[0] },
266: { "szDiskAFileName", String_Tag, ConfigureParams.DiskImage.szDiskFileName[0] },
267: { "szDiskBZipPath", String_Tag, ConfigureParams.DiskImage.szDiskZipPath[1] },
268: { "szDiskBFileName", String_Tag, ConfigureParams.DiskImage.szDiskFileName[1] },
1.1.1.10 root 269: { "szDiskImageDirectory", String_Tag, ConfigureParams.DiskImage.szDiskImageDirectory },
270: { NULL , Error_Tag, NULL }
271: };
272:
1.1.1.6 root 273: /* Used to load/save HD options */
1.1.1.10 root 274: static const struct Config_Tag configs_HardDisk[] =
1.1.1.6 root 275: {
1.1.1.10 root 276: { "bBootFromHardDisk", Bool_Tag, &ConfigureParams.HardDisk.bBootFromHardDisk },
277: { "bUseHardDiskDirectory", Bool_Tag, &ConfigureParams.HardDisk.bUseHardDiskDirectories },
278: { "szHardDiskDirectory", String_Tag, ConfigureParams.HardDisk.szHardDiskDirectories[DRIVE_C] },
1.1.1.20! root 279: { "nGemdosCase", Int_Tag, &ConfigureParams.HardDisk.nGemdosCase },
1.1.1.16 root 280: { "nWriteProtection", Int_Tag, &ConfigureParams.HardDisk.nWriteProtection },
1.1.1.10 root 281: { "bUseHardDiskImage", Bool_Tag, &ConfigureParams.HardDisk.bUseHardDiskImage },
282: { "szHardDiskImage", String_Tag, ConfigureParams.HardDisk.szHardDiskImage },
1.1.1.16 root 283: { "bUseIdeMasterHardDiskImage", Bool_Tag, &ConfigureParams.HardDisk.bUseIdeMasterHardDiskImage },
284: { "bUseIdeSlaveHardDiskImage", Bool_Tag, &ConfigureParams.HardDisk.bUseIdeSlaveHardDiskImage },
285: { "szIdeMasterHardDiskImage", String_Tag, ConfigureParams.HardDisk.szIdeMasterHardDiskImage },
286: { "szIdeSlaveHardDiskImage", String_Tag, ConfigureParams.HardDisk.szIdeSlaveHardDiskImage },
1.1.1.10 root 287: { NULL , Error_Tag, NULL }
288: };
289:
1.1.1.8 root 290: /* Used to load/save ROM options */
1.1.1.9 root 291: static const struct Config_Tag configs_Rom[] =
1.1.1.6 root 292: {
1.1.1.9 root 293: { "szTosImageFileName", String_Tag, ConfigureParams.Rom.szTosImageFileName },
1.1.1.18 root 294: { "bPatchTos", Bool_Tag, &ConfigureParams.Rom.bPatchTos },
1.1.1.9 root 295: { "szCartridgeImageFileName", String_Tag, ConfigureParams.Rom.szCartridgeImageFileName },
296: { NULL , Error_Tag, NULL }
1.1.1.6 root 297: };
298:
299: /* Used to load/save RS232 options */
1.1.1.9 root 300: static const struct Config_Tag configs_Rs232[] =
1.1.1.6 root 301: {
1.1.1.9 root 302: { "bEnableRS232", Bool_Tag, &ConfigureParams.RS232.bEnableRS232 },
303: { "szOutFileName", String_Tag, ConfigureParams.RS232.szOutFileName },
304: { "szInFileName", String_Tag, ConfigureParams.RS232.szInFileName },
305: { NULL , Error_Tag, NULL }
1.1.1.6 root 306: };
307:
308: /* Used to load/save printer options */
1.1.1.9 root 309: static const struct Config_Tag configs_Printer[] =
1.1.1.6 root 310: {
1.1.1.9 root 311: { "bEnablePrinting", Bool_Tag, &ConfigureParams.Printer.bEnablePrinting },
312: { "szPrintToFileName", String_Tag, ConfigureParams.Printer.szPrintToFileName },
313: { NULL , Error_Tag, NULL }
1.1.1.6 root 314: };
315:
1.1.1.7 root 316: /* Used to load/save MIDI options */
1.1.1.9 root 317: static const struct Config_Tag configs_Midi[] =
1.1.1.7 root 318: {
1.1.1.9 root 319: { "bEnableMidi", Bool_Tag, &ConfigureParams.Midi.bEnableMidi },
1.1.1.14 root 320: { "sMidiInFileName", String_Tag, ConfigureParams.Midi.sMidiInFileName },
321: { "sMidiOutFileName", String_Tag, ConfigureParams.Midi.sMidiOutFileName },
1.1.1.9 root 322: { NULL , Error_Tag, NULL }
1.1.1.7 root 323: };
324:
1.1.1.6 root 325: /* Used to load/save system options */
1.1.1.9 root 326: static const struct Config_Tag configs_System[] =
1.1.1.6 root 327: {
1.1.1.9 root 328: { "nCpuLevel", Int_Tag, &ConfigureParams.System.nCpuLevel },
329: { "nCpuFreq", Int_Tag, &ConfigureParams.System.nCpuFreq },
330: { "bCompatibleCpu", Bool_Tag, &ConfigureParams.System.bCompatibleCpu },
331: { "nMachineType", Int_Tag, &ConfigureParams.System.nMachineType },
332: { "bBlitter", Bool_Tag, &ConfigureParams.System.bBlitter },
1.1.1.12 root 333: { "nDSPType", Int_Tag, &ConfigureParams.System.nDSPType },
1.1.1.9 root 334: { "bRealTimeClock", Bool_Tag, &ConfigureParams.System.bRealTimeClock },
335: { "bPatchTimerD", Bool_Tag, &ConfigureParams.System.bPatchTimerD },
1.1.1.18 root 336: { "bFastBoot", Bool_Tag, &ConfigureParams.System.bFastBoot },
1.1.1.13 root 337: { "bFastForward", Bool_Tag, &ConfigureParams.System.bFastForward },
1.1.1.17 root 338:
339: #if ENABLE_WINUAE_CPU
340: { "bAddressSpace24", Bool_Tag, &ConfigureParams.System.bAddressSpace24 },
341: { "bCycleExactCpu", Bool_Tag, &ConfigureParams.System.bCycleExactCpu },
342: { "n_FPUType", Int_Tag, &ConfigureParams.System.n_FPUType },
343: { "bCompatibleFPU", Bool_Tag, &ConfigureParams.System.bCompatibleFPU },
344: { "bMMU", Bool_Tag, &ConfigureParams.System.bMMU },
345: #endif
346: { NULL , Error_Tag, NULL }
347: };
348:
349: /* Used to load/save video options */
350: static const struct Config_Tag configs_Video[] =
351: {
352: { "AviRecordVcodec", Int_Tag, &ConfigureParams.Video.AviRecordVcodec },
353: { "AviRecordFps", Int_Tag, &ConfigureParams.Video.AviRecordFps },
354: { "AviRecordFile", String_Tag, ConfigureParams.Video.AviRecordFile },
1.1.1.9 root 355: { NULL , Error_Tag, NULL }
1.1.1.6 root 356: };
1.1 root 357:
358:
359: /*-----------------------------------------------------------------------*/
1.1.1.12 root 360: /**
361: * Set default configuration values.
362: */
1.1.1.2 root 363: void Configuration_SetDefault(void)
364: {
1.1.1.9 root 365: int i;
1.1.1.12 root 366: const char *psHomeDir;
367: const char *psWorkingDir;
368:
369: psHomeDir = Paths_GetHatariHome();
370: psWorkingDir = Paths_GetWorkingDir();
1.1.1.4 root 371:
1.1.1.9 root 372: /* Clear parameters */
373: memset(&ConfigureParams, 0, sizeof(CNF_PARAMS));
374:
1.1.1.16 root 375: /* Set defaults for logging and tracing */
1.1.1.9 root 376: strcpy(ConfigureParams.Log.sLogFileName, "stderr");
1.1.1.13 root 377: strcpy(ConfigureParams.Log.sTraceFileName, "stderr");
378: ConfigureParams.Log.nTextLogLevel = LOG_TODO;
379: ConfigureParams.Log.nAlertDlgLogLevel = LOG_ERROR;
1.1.1.15 root 380: ConfigureParams.Log.bConfirmQuit = true;
1.1.1.20! root 381: ConfigureParams.Log.bNatFeats = false;
! 382: ConfigureParams.Log.bConsoleWindow = false;
1.1.1.9 root 383:
1.1.1.16 root 384: /* Set defaults for debugger */
385: ConfigureParams.Debugger.nNumberBase = 10;
386: ConfigureParams.Debugger.nDisasmLines = 8;
387: ConfigureParams.Debugger.nMemdumpLines = 8;
1.1.1.20! root 388: /* external one has nicer output, but isn't as complete as UAE one */
! 389: ConfigureParams.Debugger.bDisasmUAE = false;
! 390: ConfigureParams.Debugger.nDisasmOptions = Disasm_GetOptions();
1.1.1.16 root 391:
1.1.1.10 root 392: /* Set defaults for floppy disk images */
1.1.1.15 root 393: ConfigureParams.DiskImage.bAutoInsertDiskB = true;
1.1.1.18 root 394: ConfigureParams.DiskImage.FastFloppy = false;
1.1.1.10 root 395: ConfigureParams.DiskImage.nWriteProtection = WRITEPROT_OFF;
1.1.1.13 root 396: for (i = 0; i < 2; i++)
397: {
398: ConfigureParams.DiskImage.szDiskZipPath[i][0] = '\0';
399: ConfigureParams.DiskImage.szDiskFileName[i][0] = '\0';
400: }
1.1.1.12 root 401: strcpy(ConfigureParams.DiskImage.szDiskImageDirectory, psWorkingDir);
1.1.1.10 root 402: File_AddSlashToEndFileName(ConfigureParams.DiskImage.szDiskImageDirectory);
403:
404: /* Set defaults for hard disks */
1.1.1.15 root 405: ConfigureParams.HardDisk.bBootFromHardDisk = false;
1.1.1.20! root 406: ConfigureParams.HardDisk.nGemdosCase = GEMDOS_NOP;
1.1.1.16 root 407: ConfigureParams.HardDisk.nWriteProtection = WRITEPROT_OFF;
1.1.1.10 root 408: ConfigureParams.HardDisk.nHardDiskDir = DRIVE_C;
1.1.1.15 root 409: ConfigureParams.HardDisk.bUseHardDiskDirectories = false;
1.1.1.13 root 410: for (i = 0; i < MAX_HARDDRIVES; i++)
1.1.1.9 root 411: {
1.1.1.12 root 412: strcpy(ConfigureParams.HardDisk.szHardDiskDirectories[i], psWorkingDir);
1.1.1.10 root 413: File_CleanFileName(ConfigureParams.HardDisk.szHardDiskDirectories[i]);
1.1.1.9 root 414: }
1.1.1.15 root 415: ConfigureParams.HardDisk.bUseHardDiskImage = false;
1.1.1.12 root 416: strcpy(ConfigureParams.HardDisk.szHardDiskImage, psWorkingDir);
1.1.1.16 root 417: ConfigureParams.HardDisk.bUseIdeMasterHardDiskImage = false;
418: strcpy(ConfigureParams.HardDisk.szIdeMasterHardDiskImage, psWorkingDir);
419: ConfigureParams.HardDisk.bUseIdeSlaveHardDiskImage = false;
420: strcpy(ConfigureParams.HardDisk.szIdeSlaveHardDiskImage, psWorkingDir);
1.1.1.9 root 421:
422: /* Set defaults for Joysticks */
1.1.1.11 root 423: for (i = 0; i < JOYSTICK_COUNT; i++)
1.1.1.9 root 424: {
1.1.1.10 root 425: ConfigureParams.Joysticks.Joy[i].nJoystickMode = JOYSTICK_DISABLED;
1.1.1.15 root 426: ConfigureParams.Joysticks.Joy[i].bEnableAutoFire = false;
427: ConfigureParams.Joysticks.Joy[i].bEnableJumpOnFire2 = false;
1.1.1.10 root 428: ConfigureParams.Joysticks.Joy[i].nJoyId = i;
429: ConfigureParams.Joysticks.Joy[i].nKeyCodeUp = SDLK_UP;
430: ConfigureParams.Joysticks.Joy[i].nKeyCodeDown = SDLK_DOWN;
431: ConfigureParams.Joysticks.Joy[i].nKeyCodeLeft = SDLK_LEFT;
432: ConfigureParams.Joysticks.Joy[i].nKeyCodeRight = SDLK_RIGHT;
433: ConfigureParams.Joysticks.Joy[i].nKeyCodeFire = SDLK_RCTRL;
1.1.1.9 root 434: }
1.1.1.10 root 435: ConfigureParams.Joysticks.Joy[1].nJoyId = 0; /* ST Joystick #1 is default joystick */
436: ConfigureParams.Joysticks.Joy[0].nJoyId = 1;
1.1.1.13 root 437: ConfigureParams.Joysticks.Joy[1].nJoystickMode = JOYSTICK_REALSTICK;
1.1.1.9 root 438:
439: /* Set defaults for Keyboard */
1.1.1.15 root 440: ConfigureParams.Keyboard.bDisableKeyRepeat = false;
1.1.1.9 root 441: ConfigureParams.Keyboard.nKeymapType = KEYMAP_SYMBOLIC;
442: strcpy(ConfigureParams.Keyboard.szMappingFileName, "");
1.1.1.11 root 443:
1.1.1.12 root 444: /* Set defaults for Shortcuts */
445: ConfigureParams.Shortcut.withoutModifier[SHORTCUT_OPTIONS] = SDLK_F12;
446: ConfigureParams.Shortcut.withoutModifier[SHORTCUT_FULLSCREEN] = SDLK_F11;
1.1.1.13 root 447: ConfigureParams.Shortcut.withoutModifier[SHORTCUT_PAUSE] = SDLK_PAUSE;
1.1.1.11 root 448:
1.1.1.15 root 449: ConfigureParams.Shortcut.withModifier[SHORTCUT_DEBUG] = SDLK_PAUSE;
1.1.1.12 root 450: ConfigureParams.Shortcut.withModifier[SHORTCUT_OPTIONS] = SDLK_o;
451: ConfigureParams.Shortcut.withModifier[SHORTCUT_FULLSCREEN] = SDLK_f;
1.1.1.16 root 452: ConfigureParams.Shortcut.withModifier[SHORTCUT_MOUSEGRAB] = SDLK_m;
1.1.1.12 root 453: ConfigureParams.Shortcut.withModifier[SHORTCUT_COLDRESET] = SDLK_c;
454: ConfigureParams.Shortcut.withModifier[SHORTCUT_WARMRESET] = SDLK_r;
455: ConfigureParams.Shortcut.withModifier[SHORTCUT_SCREENSHOT] = SDLK_g;
456: ConfigureParams.Shortcut.withModifier[SHORTCUT_BOSSKEY] = SDLK_i;
457: ConfigureParams.Shortcut.withModifier[SHORTCUT_CURSOREMU] = SDLK_j;
1.1.1.13 root 458: ConfigureParams.Shortcut.withModifier[SHORTCUT_FASTFORWARD] = SDLK_x;
1.1.1.12 root 459: ConfigureParams.Shortcut.withModifier[SHORTCUT_RECANIM] = SDLK_a;
460: ConfigureParams.Shortcut.withModifier[SHORTCUT_RECSOUND] = SDLK_y;
461: ConfigureParams.Shortcut.withModifier[SHORTCUT_SOUND] = SDLK_s;
462: ConfigureParams.Shortcut.withModifier[SHORTCUT_QUIT] = SDLK_q;
463: ConfigureParams.Shortcut.withModifier[SHORTCUT_LOADMEM] = SDLK_l;
464: ConfigureParams.Shortcut.withModifier[SHORTCUT_SAVEMEM] = SDLK_k;
1.1.1.13 root 465: ConfigureParams.Shortcut.withModifier[SHORTCUT_INSERTDISKA] = SDLK_d;
466:
1.1.1.9 root 467: /* Set defaults for Memory */
1.1.1.10 root 468: ConfigureParams.Memory.nMemorySize = 1; /* 1 MiB */
1.1.1.15 root 469: ConfigureParams.Memory.bAutoSave = false;
1.1.1.12 root 470: sprintf(ConfigureParams.Memory.szMemoryCaptureFileName, "%s%chatari.sav",
471: psHomeDir, PATHSEP);
472: sprintf(ConfigureParams.Memory.szAutoSaveFileName, "%s%cauto.sav",
473: psHomeDir, PATHSEP);
1.1.1.9 root 474:
475: /* Set defaults for Printer */
1.1.1.15 root 476: ConfigureParams.Printer.bEnablePrinting = false;
1.1.1.12 root 477: sprintf(ConfigureParams.Printer.szPrintToFileName, "%s%chatari.prn",
478: psHomeDir, PATHSEP);
1.1.1.9 root 479:
480: /* Set defaults for RS232 */
1.1.1.15 root 481: ConfigureParams.RS232.bEnableRS232 = false;
1.1.1.9 root 482: strcpy(ConfigureParams.RS232.szOutFileName, "/dev/modem");
483: strcpy(ConfigureParams.RS232.szInFileName, "/dev/modem");
484:
485: /* Set defaults for MIDI */
1.1.1.15 root 486: ConfigureParams.Midi.bEnableMidi = false;
1.1.1.14 root 487: strcpy(ConfigureParams.Midi.sMidiInFileName, "/dev/snd/midiC1D0");
488: strcpy(ConfigureParams.Midi.sMidiOutFileName, "/dev/snd/midiC1D0");
1.1.1.9 root 489:
490: /* Set defaults for Screen */
1.1.1.15 root 491: ConfigureParams.Screen.bFullScreen = false;
1.1.1.17 root 492: ConfigureParams.Screen.bKeepResolution = true;
1.1.1.18 root 493: ConfigureParams.Screen.bKeepResolutionST = false;
1.1.1.13 root 494: ConfigureParams.Screen.nFrameSkips = AUTO_FRAMESKIP_LIMIT;
1.1.1.15 root 495: ConfigureParams.Screen.bAllowOverscan = true;
1.1.1.12 root 496: ConfigureParams.Screen.nSpec512Threshold = 16;
497: ConfigureParams.Screen.nForceBpp = 0;
1.1.1.16 root 498: ConfigureParams.Screen.bAspectCorrect = true;
1.1.1.13 root 499: ConfigureParams.Screen.nMonitorType = MONITOR_TYPE_RGB;
1.1.1.15 root 500: ConfigureParams.Screen.bUseExtVdiResolutions = false;
1.1.1.12 root 501: ConfigureParams.Screen.nVdiWidth = 640;
502: ConfigureParams.Screen.nVdiHeight = 480;
503: ConfigureParams.Screen.nVdiColors = GEMCOLOR_16;
1.1.1.15 root 504: ConfigureParams.Screen.bShowStatusbar = true;
505: ConfigureParams.Screen.bShowDriveLed = true;
1.1.1.17 root 506: ConfigureParams.Screen.bCrop = false;
1.1.1.19 root 507: /* gives zoomed Falcon/TT windows about same size as ST/STE windows */
508: ConfigureParams.Screen.nMaxWidth = 2*(48+320+48);
509: ConfigureParams.Screen.nMaxHeight = 2*NUM_VISIBLE_LINES+24;
1.1.1.18 root 510: ConfigureParams.Screen.bForceMax = false;
1.1.1.9 root 511:
512: /* Set defaults for Sound */
1.1.1.17 root 513: ConfigureParams.Sound.bEnableMicrophone = true;
1.1.1.15 root 514: ConfigureParams.Sound.bEnableSound = true;
1.1.1.19 root 515: ConfigureParams.Sound.bEnableSoundSync = false;
1.1.1.15 root 516: ConfigureParams.Sound.nPlaybackFreq = 44100;
1.1.1.12 root 517: sprintf(ConfigureParams.Sound.szYMCaptureFileName, "%s%chatari.wav",
518: psWorkingDir, PATHSEP);
1.1.1.16 root 519: ConfigureParams.Sound.SdlAudioBufferSize = 0;
1.1.1.17 root 520: ConfigureParams.Sound.YmVolumeMixing = YM_TABLE_MIXING;
1.1.1.9 root 521:
522: /* Set defaults for Rom */
1.1.1.12 root 523: sprintf(ConfigureParams.Rom.szTosImageFileName, "%s%ctos.img",
524: Paths_GetDataDir(), PATHSEP);
1.1.1.18 root 525: ConfigureParams.Rom.bPatchTos = true;
1.1.1.9 root 526: strcpy(ConfigureParams.Rom.szCartridgeImageFileName, "");
527:
528: /* Set defaults for System */
1.1.1.19 root 529: #if ENABLE_WINUAE_CPU
530: /* Default to Falcon with WinUAE CPU core... */
531: ConfigureParams.System.nMachineType = MACHINE_FALCON;
532: ConfigureParams.System.nCpuLevel = 3;
533: ConfigureParams.System.nCpuFreq = 16;
534: ConfigureParams.System.nDSPType = DSP_TYPE_EMU;
535: ConfigureParams.System.bAddressSpace24 = true;
536: ConfigureParams.System.n_FPUType = FPU_NONE;
537: ConfigureParams.System.bCompatibleFPU = true;
538: ConfigureParams.System.bMMU = false;
539: ConfigureParams.System.bCycleExactCpu = true;
540: #else
541: /* ...and to ST with old UAE CPU core */
1.1.1.9 root 542: ConfigureParams.System.nMachineType = MACHINE_ST;
1.1.1.19 root 543: ConfigureParams.System.nCpuLevel = 0;
544: ConfigureParams.System.nCpuFreq = 8;
1.1.1.12 root 545: ConfigureParams.System.nDSPType = DSP_TYPE_NONE;
1.1.1.19 root 546: #endif
547: ConfigureParams.System.bCompatibleCpu = true;
548: ConfigureParams.System.bBlitter = false;
1.1.1.15 root 549: ConfigureParams.System.bPatchTimerD = true;
1.1.1.18 root 550: ConfigureParams.System.bFastBoot = true;
1.1.1.15 root 551: ConfigureParams.System.bRealTimeClock = true;
552: ConfigureParams.System.bFastForward = false;
1.1.1.17 root 553:
554: /* Set defaults for Video */
555: #if HAVE_LIBPNG
556: ConfigureParams.Video.AviRecordVcodec = AVI_RECORD_VIDEO_CODEC_PNG;
557: #else
558: ConfigureParams.Video.AviRecordVcodec = AVI_RECORD_VIDEO_CODEC_BMP;
559: #endif
560: ConfigureParams.Video.AviRecordFps = 0; /* automatic FPS */
561: sprintf(ConfigureParams.Video.AviRecordFile, "%s%chatari.avi", psWorkingDir, PATHSEP);
1.1.1.9 root 562:
563: /* Initialize the configuration file name */
1.1.1.12 root 564: if (strlen(psHomeDir) < sizeof(sConfigFileName)-13)
565: sprintf(sConfigFileName, "%s%chatari.cfg", psHomeDir, PATHSEP);
1.1.1.9 root 566: else
567: strcpy(sConfigFileName, "hatari.cfg");
1.1.1.12 root 568:
569: #if defined(__AMIGAOS4__)
570: /* Fix default path names on Amiga OS */
571: sprintf(ConfigureParams.Rom.szTosImageFileName, "%stos.img", Paths_GetDataDir());
572: #endif
1.1.1.2 root 573: }
574:
575:
576: /*-----------------------------------------------------------------------*/
1.1.1.12 root 577: /**
578: * Copy details from configuration structure into global variables for system,
579: * clean file names, etc... Called from main.c and dialog.c files.
580: */
1.1.1.13 root 581: void Configuration_Apply(bool bReset)
1.1.1.8 root 582: {
1.1.1.9 root 583: if (bReset)
584: {
1.1.1.12 root 585: /* Set resolution change */
1.1.1.9 root 586: bUseVDIRes = ConfigureParams.Screen.bUseExtVdiResolutions;
1.1.1.13 root 587: bUseHighRes = ((!bUseVDIRes) && ConfigureParams.Screen.nMonitorType == MONITOR_TYPE_MONO)
1.1.1.12 root 588: || (bUseVDIRes && ConfigureParams.Screen.nVdiColors == GEMCOLOR_2);
589: if (bUseHighRes)
590: {
591: STRes = ST_HIGH_RES;
592: }
593: if (bUseVDIRes)
594: {
595: VDI_SetResolution(ConfigureParams.Screen.nVdiColors,
596: ConfigureParams.Screen.nVdiWidth,
597: ConfigureParams.Screen.nVdiHeight);
1.1.1.17 root 598: bVdiAesIntercept = true;
1.1.1.12 root 599: }
1.1.1.9 root 600: }
1.1.1.13 root 601: if (ConfigureParams.Screen.nFrameSkips < AUTO_FRAMESKIP_LIMIT)
602: {
603: nFrameSkips = ConfigureParams.Screen.nFrameSkips;
604: }
1.1.1.15 root 605:
1.1.1.17 root 606: /* Init clocks for this machine */
607: ClocksTimings_InitMachine ( ConfigureParams.System.nMachineType );
608:
1.1.1.16 root 609: /* Sound settings */
610: /* SDL sound buffer in ms */
611: SdlAudioBufferSize = ConfigureParams.Sound.SdlAudioBufferSize;
612: if ( SdlAudioBufferSize == 0 ) /* use default setting for SDL */
613: ;
614: else if ( SdlAudioBufferSize < 10 ) /* min of 10 ms */
615: SdlAudioBufferSize = 10;
616: else if ( SdlAudioBufferSize > 100 ) /* max of 100 ms */
617: SdlAudioBufferSize = 100;
618:
1.1.1.9 root 619: /* Set playback frequency */
1.1.1.15 root 620: Audio_SetOutputAudioFreq(ConfigureParams.Sound.nPlaybackFreq);
621:
1.1.1.17 root 622: /* YM Mixing */
623: if ( ( ConfigureParams.Sound.YmVolumeMixing != YM_LINEAR_MIXING )
1.1.1.18 root 624: && ( ConfigureParams.Sound.YmVolumeMixing != YM_TABLE_MIXING )
625: && ( ConfigureParams.Sound.YmVolumeMixing != YM_MODEL_MIXING ) )
1.1.1.17 root 626: ConfigureParams.Sound.YmVolumeMixing = YM_TABLE_MIXING;
627:
628: YmVolumeMixing = ConfigureParams.Sound.YmVolumeMixing;
629: Sound_SetYmVolumeMixing();
630:
631: /* Check/constrain CPU settings and change corresponding
632: * UAE cpu_level & cpu_compatible variables
633: */
634: M68000_CheckCpuSettings();
1.1.1.9 root 635:
636: /* Clean file and directory names */
637: File_MakeAbsoluteName(ConfigureParams.Rom.szTosImageFileName);
1.1.1.11 root 638: if (strlen(ConfigureParams.Rom.szCartridgeImageFileName) > 0)
639: File_MakeAbsoluteName(ConfigureParams.Rom.szCartridgeImageFileName);
1.1.1.10 root 640: File_MakeAbsoluteName(ConfigureParams.HardDisk.szHardDiskImage);
641: File_CleanFileName(ConfigureParams.HardDisk.szHardDiskDirectories[0]);
642: File_MakeAbsoluteName(ConfigureParams.HardDisk.szHardDiskDirectories[0]);
1.1.1.12 root 643: File_MakeAbsoluteName(ConfigureParams.Memory.szMemoryCaptureFileName);
644: File_MakeAbsoluteName(ConfigureParams.Sound.szYMCaptureFileName);
645: if (strlen(ConfigureParams.Keyboard.szMappingFileName) > 0)
646: File_MakeAbsoluteName(ConfigureParams.Keyboard.szMappingFileName);
1.1.1.17 root 647: File_MakeAbsoluteName(ConfigureParams.Video.AviRecordFile);
1.1.1.12 root 648:
649: /* make path names absolute, but handle special file names */
650: File_MakeAbsoluteSpecialName(ConfigureParams.Log.sLogFileName);
1.1.1.13 root 651: File_MakeAbsoluteSpecialName(ConfigureParams.Log.sTraceFileName);
1.1.1.14 root 652: File_MakeAbsoluteSpecialName(ConfigureParams.RS232.szInFileName);
653: File_MakeAbsoluteSpecialName(ConfigureParams.RS232.szOutFileName);
654: File_MakeAbsoluteSpecialName(ConfigureParams.Midi.sMidiInFileName);
655: File_MakeAbsoluteSpecialName(ConfigureParams.Midi.sMidiOutFileName);
1.1.1.12 root 656: File_MakeAbsoluteSpecialName(ConfigureParams.Printer.szPrintToFileName);
1.1.1.8 root 657: }
658:
659:
660: /*-----------------------------------------------------------------------*/
1.1.1.12 root 661: /**
662: * Load a settings section from the configuration file.
663: */
1.1.1.9 root 664: static int Configuration_LoadSection(const char *pFilename, const struct Config_Tag configs[], const char *pSection)
1.1 root 665: {
1.1.1.9 root 666: int ret;
1.1 root 667:
1.1.1.9 root 668: ret = input_config(pFilename, configs, pSection);
1.1 root 669:
1.1.1.9 root 670: if (ret < 0)
671: fprintf(stderr, "Can not load configuration file %s (section %s).\n",
1.1.1.16 root 672: pFilename, pSection);
1.1 root 673:
1.1.1.9 root 674: return ret;
1.1 root 675: }
676:
677:
678: /*-----------------------------------------------------------------------*/
1.1.1.12 root 679: /**
680: * Load program setting from configuration file. If psFileName is NULL, use
1.1.1.16 root 681: * the configuration file given in configuration / last selected by user.
1.1.1.12 root 682: */
1.1.1.9 root 683: void Configuration_Load(const char *psFileName)
1.1 root 684: {
1.1.1.9 root 685: if (psFileName == NULL)
686: psFileName = sConfigFileName;
687:
688: if (!File_Exists(psFileName))
689: {
1.1.1.17 root 690: Log_Printf(LOG_DEBUG, "Configuration file %s not found.\n", psFileName);
1.1.1.9 root 691: return;
692: }
693:
694: Configuration_LoadSection(psFileName, configs_Log, "[Log]");
1.1.1.16 root 695: Configuration_LoadSection(psFileName, configs_Debugger, "[Debugger]");
1.1.1.9 root 696: Configuration_LoadSection(psFileName, configs_Screen, "[Screen]");
697: Configuration_LoadSection(psFileName, configs_Joystick0, "[Joystick0]");
698: Configuration_LoadSection(psFileName, configs_Joystick1, "[Joystick1]");
1.1.1.10 root 699: Configuration_LoadSection(psFileName, configs_Joystick2, "[Joystick2]");
700: Configuration_LoadSection(psFileName, configs_Joystick3, "[Joystick3]");
701: Configuration_LoadSection(psFileName, configs_Joystick4, "[Joystick4]");
702: Configuration_LoadSection(psFileName, configs_Joystick5, "[Joystick5]");
1.1.1.9 root 703: Configuration_LoadSection(psFileName, configs_Keyboard, "[Keyboard]");
1.1.1.11 root 704: Configuration_LoadSection(psFileName, configs_ShortCutWithMod, "[ShortcutsWithModifiers]");
705: Configuration_LoadSection(psFileName, configs_ShortCutWithoutMod, "[ShortcutsWithoutModifiers]");
1.1.1.9 root 706: Configuration_LoadSection(psFileName, configs_Sound, "[Sound]");
707: Configuration_LoadSection(psFileName, configs_Memory, "[Memory]");
708: Configuration_LoadSection(psFileName, configs_Floppy, "[Floppy]");
1.1.1.10 root 709: Configuration_LoadSection(psFileName, configs_HardDisk, "[HardDisk]");
1.1.1.9 root 710: Configuration_LoadSection(psFileName, configs_Rom, "[ROM]");
711: Configuration_LoadSection(psFileName, configs_Rs232, "[RS232]");
712: Configuration_LoadSection(psFileName, configs_Printer, "[Printer]");
713: Configuration_LoadSection(psFileName, configs_Midi, "[Midi]");
714: Configuration_LoadSection(psFileName, configs_System, "[System]");
1.1.1.17 root 715: Configuration_LoadSection(psFileName, configs_Video, "[Video]");
1.1 root 716: }
717:
718:
719: /*-----------------------------------------------------------------------*/
1.1.1.12 root 720: /**
721: * Save a settings section to configuration file
722: */
1.1.1.9 root 723: static int Configuration_SaveSection(const char *pFilename, const struct Config_Tag configs[], const char *pSection)
1.1 root 724: {
1.1.1.9 root 725: int ret;
1.1 root 726:
1.1.1.9 root 727: ret = update_config(pFilename, configs, pSection);
1.1 root 728:
1.1.1.9 root 729: if (ret < 0)
1.1.1.16 root 730: fprintf(stderr, "Error while updating section %s in %s\n", pSection, pFilename);
1.1 root 731:
1.1.1.9 root 732: return ret;
1.1 root 733: }
734:
735:
736: /*-----------------------------------------------------------------------*/
1.1.1.12 root 737: /**
738: * Save program setting to configuration file
739: */
1.1.1.6 root 740: void Configuration_Save(void)
1.1 root 741: {
1.1.1.9 root 742: if (Configuration_SaveSection(sConfigFileName, configs_Log, "[Log]") < 0)
743: {
1.1.1.13 root 744: Log_AlertDlg(LOG_ERROR, "Error saving config file.");
1.1.1.9 root 745: return;
746: }
1.1.1.16 root 747: Configuration_SaveSection(sConfigFileName, configs_Debugger, "[Debugger]");
1.1.1.9 root 748: Configuration_SaveSection(sConfigFileName, configs_Screen, "[Screen]");
749: Configuration_SaveSection(sConfigFileName, configs_Joystick0, "[Joystick0]");
750: Configuration_SaveSection(sConfigFileName, configs_Joystick1, "[Joystick1]");
1.1.1.10 root 751: Configuration_SaveSection(sConfigFileName, configs_Joystick2, "[Joystick2]");
752: Configuration_SaveSection(sConfigFileName, configs_Joystick3, "[Joystick3]");
753: Configuration_SaveSection(sConfigFileName, configs_Joystick4, "[Joystick4]");
754: Configuration_SaveSection(sConfigFileName, configs_Joystick5, "[Joystick5]");
1.1.1.9 root 755: Configuration_SaveSection(sConfigFileName, configs_Keyboard, "[Keyboard]");
1.1.1.11 root 756: Configuration_SaveSection(sConfigFileName, configs_ShortCutWithMod, "[ShortcutsWithModifiers]");
757: Configuration_SaveSection(sConfigFileName, configs_ShortCutWithoutMod, "[ShortcutsWithoutModifiers]");
1.1.1.9 root 758: Configuration_SaveSection(sConfigFileName, configs_Sound, "[Sound]");
759: Configuration_SaveSection(sConfigFileName, configs_Memory, "[Memory]");
760: Configuration_SaveSection(sConfigFileName, configs_Floppy, "[Floppy]");
1.1.1.10 root 761: Configuration_SaveSection(sConfigFileName, configs_HardDisk, "[HardDisk]");
1.1.1.9 root 762: Configuration_SaveSection(sConfigFileName, configs_Rom, "[ROM]");
763: Configuration_SaveSection(sConfigFileName, configs_Rs232, "[RS232]");
764: Configuration_SaveSection(sConfigFileName, configs_Printer, "[Printer]");
765: Configuration_SaveSection(sConfigFileName, configs_Midi, "[Midi]");
766: Configuration_SaveSection(sConfigFileName, configs_System, "[System]");
1.1.1.17 root 767: Configuration_SaveSection(sConfigFileName, configs_Video, "[Video]");
1.1 root 768: }
1.1.1.6 root 769:
1.1.1.12 root 770:
771: /*-----------------------------------------------------------------------*/
772: /**
773: * Save/restore snapshot of configuration variables
774: * ('MemorySnapShot_Store' handles type)
775: */
1.1.1.13 root 776: void Configuration_MemorySnapShot_Capture(bool bSave)
1.1.1.12 root 777: {
778: MemorySnapShot_Store(ConfigureParams.Rom.szTosImageFileName, sizeof(ConfigureParams.Rom.szTosImageFileName));
779: MemorySnapShot_Store(ConfigureParams.Rom.szCartridgeImageFileName, sizeof(ConfigureParams.Rom.szCartridgeImageFileName));
780:
781: MemorySnapShot_Store(&ConfigureParams.Memory.nMemorySize, sizeof(ConfigureParams.Memory.nMemorySize));
782:
1.1.1.18 root 783: MemorySnapShot_Store(&ConfigureParams.DiskImage.szDiskFileName[0], sizeof(ConfigureParams.DiskImage.szDiskFileName[0]));
784: MemorySnapShot_Store(&ConfigureParams.DiskImage.szDiskZipPath[0], sizeof(ConfigureParams.DiskImage.szDiskZipPath[0]));
785: MemorySnapShot_Store(&ConfigureParams.DiskImage.szDiskFileName[1], sizeof(ConfigureParams.DiskImage.szDiskFileName[1]));
786: MemorySnapShot_Store(&ConfigureParams.DiskImage.szDiskZipPath[1], sizeof(ConfigureParams.DiskImage.szDiskZipPath[1]));
787:
1.1.1.12 root 788: MemorySnapShot_Store(&ConfigureParams.HardDisk.bUseHardDiskDirectories, sizeof(ConfigureParams.HardDisk.bUseHardDiskDirectories));
789: MemorySnapShot_Store(ConfigureParams.HardDisk.szHardDiskDirectories[DRIVE_C], sizeof(ConfigureParams.HardDisk.szHardDiskDirectories[DRIVE_C]));
790: MemorySnapShot_Store(&ConfigureParams.HardDisk.bUseHardDiskImage, sizeof(ConfigureParams.HardDisk.bUseHardDiskImage));
791: MemorySnapShot_Store(ConfigureParams.HardDisk.szHardDiskImage, sizeof(ConfigureParams.HardDisk.szHardDiskImage));
792:
1.1.1.13 root 793: MemorySnapShot_Store(&ConfigureParams.Screen.nMonitorType, sizeof(ConfigureParams.Screen.nMonitorType));
1.1.1.12 root 794: MemorySnapShot_Store(&ConfigureParams.Screen.bUseExtVdiResolutions, sizeof(ConfigureParams.Screen.bUseExtVdiResolutions));
795: MemorySnapShot_Store(&ConfigureParams.Screen.nVdiWidth, sizeof(ConfigureParams.Screen.nVdiWidth));
796: MemorySnapShot_Store(&ConfigureParams.Screen.nVdiHeight, sizeof(ConfigureParams.Screen.nVdiHeight));
797: MemorySnapShot_Store(&ConfigureParams.Screen.nVdiColors, sizeof(ConfigureParams.Screen.nVdiColors));
798:
799: MemorySnapShot_Store(&ConfigureParams.System.nCpuLevel, sizeof(ConfigureParams.System.nCpuLevel));
800: MemorySnapShot_Store(&ConfigureParams.System.nCpuFreq, sizeof(ConfigureParams.System.nCpuFreq));
801: MemorySnapShot_Store(&ConfigureParams.System.bCompatibleCpu, sizeof(ConfigureParams.System.bCompatibleCpu));
802: MemorySnapShot_Store(&ConfigureParams.System.nMachineType, sizeof(ConfigureParams.System.nMachineType));
803: MemorySnapShot_Store(&ConfigureParams.System.bBlitter, sizeof(ConfigureParams.System.bBlitter));
804: MemorySnapShot_Store(&ConfigureParams.System.nDSPType, sizeof(ConfigureParams.System.nDSPType));
805: MemorySnapShot_Store(&ConfigureParams.System.bRealTimeClock, sizeof(ConfigureParams.System.bRealTimeClock));
806: MemorySnapShot_Store(&ConfigureParams.System.bPatchTimerD, sizeof(ConfigureParams.System.bPatchTimerD));
1.1.1.17 root 807:
808: #if ENABLE_WINUAE_CPU
809: MemorySnapShot_Store(&ConfigureParams.System.bAddressSpace24, sizeof(ConfigureParams.System.bAddressSpace24));
810: MemorySnapShot_Store(&ConfigureParams.System.bCycleExactCpu, sizeof(ConfigureParams.System.bCycleExactCpu));
811: MemorySnapShot_Store(&ConfigureParams.System.n_FPUType, sizeof(ConfigureParams.System.n_FPUType));
812: MemorySnapShot_Store(&ConfigureParams.System.bCompatibleFPU, sizeof(ConfigureParams.System.bCompatibleFPU));
813: MemorySnapShot_Store(&ConfigureParams.System.bMMU, sizeof(ConfigureParams.System.bMMU));
814: #endif
815:
1.1.1.18 root 816: MemorySnapShot_Store(&ConfigureParams.DiskImage.FastFloppy, sizeof(ConfigureParams.DiskImage.FastFloppy));
1.1.1.12 root 817:
818: if (!bSave)
1.1.1.15 root 819: Configuration_Apply(true);
1.1.1.12 root 820: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.