Annotation of hatari/src/configuration.c, revision 1.1.1.17

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

unix.superglobalmegacorp.com

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