--- hatari/src/includes/configuration.h 2019/04/01 07:10:55 1.1.1.3 +++ hatari/src/includes/configuration.h 2019/04/01 07:13:41 1.1.1.9 @@ -8,15 +8,22 @@ #ifndef HATARI_CONFIGURATION_H #define HATARI_CONFIGURATION_H +/* Logging */ +typedef struct +{ + char sLogFileName[FILENAME_MAX]; + int nTextLogLevel; + int nAlertDlgLogLevel; + BOOL bConfirmQuit; +} CNF_LOG; -/* TOS/GEM configuration */ + +/* ROM (TOS + cartridge) configuration */ typedef struct { - char szTOSImageFileName[MAX_FILENAME_LENGTH]; - BOOL bUseExtGEMResolutions; - int nGEMResolution; - int nGEMColours; -} CNF_TOSGEM; + char szTosImageFileName[FILENAME_MAX]; + char szCartridgeImageFileName[FILENAME_MAX]; +} CNF_ROM; /* Sound configuration */ @@ -25,30 +32,23 @@ typedef enum PLAYBACK_LOW, PLAYBACK_MEDIUM, PLAYBACK_HIGH -} SOUND_QUALITIY; +} SOUND_QUALITY; typedef struct { BOOL bEnableSound; - SOUND_QUALITIY nPlaybackQuality; - char szYMCaptureFileName[MAX_FILENAME_LENGTH]; + SOUND_QUALITY nPlaybackQuality; + char szYMCaptureFileName[FILENAME_MAX]; } CNF_SOUND; -/* RS232 configuration - not yet used */ -/* -enum { - COM_PORT_1, - COM_PORT_2, - COM_PORT_3, - COM_PORT_4 -}; -*/ +/* RS232 configuration */ typedef struct { BOOL bEnableRS232; - int nCOMPort; + char szOutFileName[FILENAME_MAX]; + char szInFileName[FILENAME_MAX]; } CNF_RS232; @@ -64,59 +64,89 @@ typedef struct { BOOL bDisableKeyRepeat; KEYMAPTYPE nKeymapType; - char szMappingFileName[MAX_FILENAME_LENGTH]; + char szMappingFileName[FILENAME_MAX]; } CNF_KEYBOARD; -/* Memory configuration */ -typedef enum +typedef enum { + SHORTCUT_OPTIONS, + SHORTCUT_FULLSCREEN, + SHORTCUT_MOUSEMODE, + SHORTCUT_COLDRESET, + SHORTCUT_WARMRESET, + SHORTCUT_SCREENSHOT, + SHORTCUT_BOSSKEY, + SHORTCUT_CURSOREMU, + SHORTCUT_MAXSPEED, + SHORTCUT_RECANIM, + SHORTCUT_RECSOUND, + SHORTCUT_SOUND, + SHORTCUT_QUIT, + SHORTCUT_LOADMEM, + SHORTCUT_SAVEMEM, + SHORTCUT_KEYS, /* number of shortcuts */ + SHORTCUT_NONE +} SHORTCUTKEYIDX; + +typedef struct { - MEMORY_SIZE_512Kb, - MEMORY_SIZE_1Mb, - MEMORY_SIZE_2Mb, - MEMORY_SIZE_4Mb -} MEMORY_SIZE; + int withModifier[SHORTCUT_KEYS]; + int withoutModifier[SHORTCUT_KEYS]; +} CNF_SHORTCUT; + typedef struct { - MEMORY_SIZE nMemorySize; - char szMemoryCaptureFileName[MAX_FILENAME_LENGTH]; + int nMemorySize; + BOOL bAutoSave; + char szMemoryCaptureFileName[FILENAME_MAX]; + char szAutoSaveFileName[FILENAME_MAX]; } CNF_MEMORY; /* Joystick configuration */ +typedef enum +{ + JOYSTICK_DISABLED, + JOYSTICK_REALSTICK, + JOYSTICK_KEYBOARD +} JOYSTICKMODE; + typedef struct { - BOOL bCursorEmulation; + JOYSTICKMODE nJoystickMode; BOOL bEnableAutoFire; + int nJoyId; + int nKeyCodeUp, nKeyCodeDown, nKeyCodeLeft, nKeyCodeRight, nKeyCodeFire; } JOYSTICK; +#define JOYSTICK_COUNT 6 + typedef struct { - JOYSTICK Joy[2]; + JOYSTICK Joy[JOYSTICK_COUNT]; } CNF_JOYSTICKS; -/* Discimage configuration */ +/* Disk image configuration */ + +typedef enum +{ + WRITEPROT_OFF, + WRITEPROT_ON, + WRITEPROT_AUTO +} WRITEPROTECTION; + typedef struct { - BOOL bAutoInsertDiscB; - char szDiscImageDirectory[MAX_FILENAME_LENGTH]; -} CNF_DISCIMAGE; + BOOL bAutoInsertDiskB; + WRITEPROTECTION nWriteProtection; + char szDiskImageDirectory[FILENAME_MAX]; +} CNF_DISKIMAGE; -/* Hard discs configuration */ +/* Hard drives configuration */ #define MAX_HARDDRIVES 1 -#define DRIVELIST_TO_DRIVE_INDEX(DriveList) (DriveList+1) - -typedef enum -{ - DRIVELIST_NONE, - DRIVELIST_C, - DRIVELIST_CD, - DRIVELIST_CDE, - DRIVELIST_CDEF -} DRIVELIST; typedef enum { @@ -128,29 +158,58 @@ typedef enum typedef struct { - int nDriveList; - BOOL bBootFromHardDisc; - int nHardDiscDir; - BOOL bUseHardDiscDirectories; - BOOL bUseHardDiscImage; - char szHardDiscDirectories[MAX_HARDDRIVES][MAX_FILENAME_LENGTH]; - char szHardDiscImage[MAX_FILENAME_LENGTH]; -} CNF_HARDDISC; + BOOL bBootFromHardDisk; + int nHardDiskDir; + BOOL bUseHardDiskDirectories; + BOOL bUseHardDiskImage; + char szHardDiskDirectories[MAX_HARDDRIVES][FILENAME_MAX]; + char szHardDiskImage[FILENAME_MAX]; + BOOL bUseIdeHardDiskImage; + char szIdeHardDiskImage[FILENAME_MAX]; +} CNF_HARDDISK; + +/* Falcon register $FFFF8006 bits 6 & 7 (mirrored in $FFFF82C0 bits 0 & 1): + * 00 Monochrome + * 01 RGB - Colormonitor + * 10 VGA - Colormonitor + * 11 TV + */ +#define FALCON_MONITOR_MASK 0x3F +#define FALCON_MONITOR_MONO 0x00 /* SM124 */ +#define FALCON_MONITOR_RGB 0x40 +#define FALCON_MONITOR_VGA 0x80 +#define FALCON_MONITOR_TV 0xC0 +typedef enum +{ + MONITOR_TYPE_MONO, + MONITOR_TYPE_RGB, + MONITOR_TYPE_VGA, + MONITOR_TYPE_TV +} MONITORTYPE; /* Screen configuration */ typedef struct { + MONITORTYPE MonitorType; + int FrameSkips; BOOL bFullScreen; - BOOL bDoubleSizeWindow; BOOL bAllowOverscan; - BOOL bInterlacedScreen; - BOOL bSyncToRetrace; - BOOL bFrameSkip; - int ChosenDisplayMode; + BOOL bZoomLowRes; + BOOL bUseExtVdiResolutions; + int nSpec512Threshold; + int nForceBpp; + int nVdiColors; + int nVdiWidth; + int nVdiHeight; BOOL bCaptureChange; int nFramesPerSecond; - BOOL bUseHighRes; + int nWindowBorderPixelsLeft; + int nWindowBorderPixelsRight; + int nWindowBorderPixelsBottom; + int nFullScreenBorderPixelsLeft; + int nFullScreenBorderPixelsRight; + int nFullScreenBorderPixelsBottom; } CNF_SCREEN; @@ -159,10 +218,18 @@ typedef struct { BOOL bEnablePrinting; BOOL bPrintToFile; - char szPrintToFileName[MAX_FILENAME_LENGTH]; + char szPrintToFileName[FILENAME_MAX]; } CNF_PRINTER; +/* Midi configuration */ +typedef struct +{ + BOOL bEnableMidi; + char szMidiOutFileName[FILENAME_MAX]; +} CNF_MIDI; + + /* Dialog System */ typedef enum { @@ -173,12 +240,33 @@ typedef enum MINMAXSPEED_MAX } MINMAXSPEED_TYPE; +typedef enum +{ + MACHINE_ST, + MACHINE_STE, + MACHINE_TT, + MACHINE_FALCON +} MACHINETYPE; + +typedef enum +{ + DSP_TYPE_NONE, + DSP_TYPE_DUMMY, + DSP_TYPE_EMU +} DSPTYPE; + typedef struct { int nCpuLevel; + int nCpuFreq; BOOL bCompatibleCpu; - BOOL bAddressSpace24; - BOOL bBlitter; /* TRUE if blitter is enabled */ + /*BOOL bAddressSpace24;*/ + MACHINETYPE nMachineType; + BOOL bBlitter; /* TRUE if Blitter is enabled */ + DSPTYPE nDSPType; /* how to "emulate" DSP */ + BOOL bRealTimeClock; + BOOL bPatchTimerD; + BOOL bSlowFDC; /* TRUE to slow down FDC emulation */ MINMAXSPEED_TYPE nMinMaxSpeed; } CNF_SYSTEM; @@ -188,25 +276,31 @@ typedef struct typedef struct { /* Configure */ + CNF_LOG Log; CNF_SCREEN Screen; CNF_JOYSTICKS Joysticks; CNF_KEYBOARD Keyboard; + CNF_SHORTCUT Shortcut; CNF_SOUND Sound; CNF_MEMORY Memory; - CNF_DISCIMAGE DiscImage; - CNF_HARDDISC HardDisc; - CNF_TOSGEM TOSGEM; + CNF_DISKIMAGE DiskImage; + CNF_HARDDISK HardDisk; + CNF_ROM Rom; CNF_RS232 RS232; CNF_PRINTER Printer; + CNF_MIDI Midi; CNF_SYSTEM System; } CNF_PARAMS; extern BOOL bFirstTimeInstall; extern CNF_PARAMS ConfigureParams; +extern char sConfigFileName[FILENAME_MAX]; extern void Configuration_SetDefault(void); -extern void Configuration_Load(void); +extern void Configuration_Apply(BOOL bReset); +extern void Configuration_Load(const char *psFileName); extern void Configuration_Save(void); +extern void Configuration_MemorySnapShot_Capture(BOOL bSave); #endif