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