--- hatari/src/includes/configuration.h 2019/04/01 07:11:51 1.1.1.5 +++ hatari/src/includes/configuration.h 2019/04/09 08:55:42 1.1.1.19 @@ -1,35 +1,60 @@ /* Hatari - configuration.h - This file is distributed under the GNU Public License, version 2 or at - your option any later version. Read the file gpl.txt for details. + This file is distributed under the GNU General Public License, version 2 + or at your option any later version. Read the file gpl.txt for details. */ #ifndef HATARI_CONFIGURATION_H #define HATARI_CONFIGURATION_H +/* if header's struct contents depend on configuration options, header must include config.h */ +#include "config.h" + +/* Logging and tracing */ +typedef struct +{ + char sLogFileName[FILENAME_MAX]; + char sTraceFileName[FILENAME_MAX]; + int nExceptionDebugMask; + int nTextLogLevel; + int nAlertDlgLogLevel; + bool bConfirmQuit; + bool bNatFeats; + bool bConsoleWindow; /* for now, used just for Windows */ +} CNF_LOG; + + +/* debugger */ +typedef struct +{ + int nNumberBase; + int nDisasmLines; + int nMemdumpLines; + int nDisasmOptions; + bool bDisasmUAE; +} CNF_DEBUGGER; + /* ROM (TOS + cartridge) configuration */ typedef struct { char szTosImageFileName[FILENAME_MAX]; + bool bPatchTos; char szCartridgeImageFileName[FILENAME_MAX]; } CNF_ROM; /* Sound configuration */ -typedef enum -{ - PLAYBACK_LOW, - PLAYBACK_MEDIUM, - PLAYBACK_HIGH -} SOUND_QUALITIY; - typedef struct { - BOOL bEnableSound; - SOUND_QUALITIY nPlaybackQuality; + bool bEnableMicrophone; + bool bEnableSound; + bool bEnableSoundSync; + int nPlaybackFreq; + int SdlAudioBufferSize; char szYMCaptureFileName[FILENAME_MAX]; + int YmVolumeMixing; } CNF_SOUND; @@ -37,7 +62,7 @@ typedef struct /* RS232 configuration */ typedef struct { - BOOL bEnableRS232; + bool bEnableRS232; char szOutFileName[FILENAME_MAX]; char szInFileName[FILENAME_MAX]; } CNF_RS232; @@ -53,104 +78,207 @@ typedef enum typedef struct { - BOOL bDisableKeyRepeat; + bool bDisableKeyRepeat; KEYMAPTYPE nKeymapType; char szMappingFileName[FILENAME_MAX]; } CNF_KEYBOARD; -/* Memory configuration */ -typedef enum +typedef enum { + SHORTCUT_OPTIONS, + SHORTCUT_FULLSCREEN, + SHORTCUT_MOUSEGRAB, + SHORTCUT_COLDRESET, + SHORTCUT_WARMRESET, + SHORTCUT_SCREENSHOT, + SHORTCUT_BOSSKEY, + SHORTCUT_CURSOREMU, + SHORTCUT_FASTFORWARD, + SHORTCUT_RECANIM, + SHORTCUT_RECSOUND, + SHORTCUT_SOUND, + SHORTCUT_DEBUG, + SHORTCUT_PAUSE, + SHORTCUT_QUIT, + SHORTCUT_LOADMEM, + SHORTCUT_SAVEMEM, + SHORTCUT_INSERTDISKA, + SHORTCUT_JOY_0, + SHORTCUT_JOY_1, + SHORTCUT_PAD_A, + SHORTCUT_PAD_B, + 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; + int nMemorySize; + int nTTRamSize; + bool bAutoSave; char szMemoryCaptureFileName[FILENAME_MAX]; + char szAutoSaveFileName[FILENAME_MAX]; } CNF_MEMORY; /* Joystick configuration */ -typedef struct +typedef enum { - BOOL bCursorEmulation; - BOOL bEnableAutoFire; -} JOYSTICK; + JOYSTICK_DISABLED, + JOYSTICK_REALSTICK, + JOYSTICK_KEYBOARD +} JOYSTICKMODE; +#define JOYSTICK_MODES 3 typedef struct { - JOYSTICK Joy[2]; -} CNF_JOYSTICKS; + JOYSTICKMODE nJoystickMode; + bool bEnableAutoFire; + bool bEnableJumpOnFire2; + int nJoyId; + int nKeyCodeUp, nKeyCodeDown, nKeyCodeLeft, nKeyCodeRight, nKeyCodeFire; +} JOYSTICK; +enum +{ + JOYID_JOYSTICK0, + JOYID_JOYSTICK1, + JOYID_STEPADA, + JOYID_STEPADB, + JOYID_PARPORT1, + JOYID_PARPORT2, + JOYSTICK_COUNT +}; -/* Discimage configuration */ typedef struct { - BOOL bAutoInsertDiscB; - char szDiscImageDirectory[FILENAME_MAX]; -} CNF_DISCIMAGE; + JOYSTICK Joy[JOYSTICK_COUNT]; +} CNF_JOYSTICKS; -/* Hard discs configuration */ -#define MAX_HARDDRIVES 1 -#define DRIVELIST_TO_DRIVE_INDEX(DriveList) (DriveList+1) +/* Disk image configuration */ typedef enum { - DRIVELIST_NONE, - DRIVELIST_C, - DRIVELIST_CD, - DRIVELIST_CDE, - DRIVELIST_CDEF -} DRIVELIST; + WRITEPROT_OFF, + WRITEPROT_ON, + WRITEPROT_AUTO +} WRITEPROTECTION; + +#define MAX_FLOPPYDRIVES 2 + +typedef struct +{ + bool bAutoInsertDiskB; + bool FastFloppy; /* true to speed up FDC emulation */ + bool EnableDriveA; + bool EnableDriveB; + int DriveA_NumberOfHeads; + int DriveB_NumberOfHeads; + WRITEPROTECTION nWriteProtection; + char szDiskZipPath[MAX_FLOPPYDRIVES][FILENAME_MAX]; + char szDiskFileName[MAX_FLOPPYDRIVES][FILENAME_MAX]; + char szDiskImageDirectory[FILENAME_MAX]; +} CNF_DISKIMAGE; + + +/* Hard drives configuration: C: - Z: */ +#define MAX_HARDDRIVES 24 +#define DRIVE_C 0 +#define DRIVE_SKIP -1 typedef enum { - DRIVE_C, - DRIVE_D, - DRIVE_E, - DRIVE_F -} DRIVELETTER; + GEMDOS_NOP, + GEMDOS_UPPER, + GEMDOS_LOWER +} GEMDOS_CHR_CONV; + +typedef struct +{ + int nGemdosDrive; + bool bUseHardDiskDirectories; + bool bUseIdeMasterHardDiskImage; + bool bUseIdeSlaveHardDiskImage; + WRITEPROTECTION nWriteProtection; + GEMDOS_CHR_CONV nGemdosCase; + bool bFilenameConversion; + bool bBootFromHardDisk; + char szHardDiskDirectories[MAX_HARDDRIVES][FILENAME_MAX]; + char szIdeMasterHardDiskImage[FILENAME_MAX]; + char szIdeSlaveHardDiskImage[FILENAME_MAX]; +} CNF_HARDDISK; + +/* SCSI/ACSI configuration */ +#define MAX_ACSI_DEVS 8 +#define MAX_SCSI_DEVS 8 typedef struct { - int nDriveList; - BOOL bBootFromHardDisc; - int nHardDiscDir; - BOOL bUseHardDiscDirectories; - BOOL bUseHardDiscImage; - char szHardDiscDirectories[MAX_HARDDRIVES][FILENAME_MAX]; - char szHardDiscImage[FILENAME_MAX]; -} CNF_HARDDISC; + bool bUseDevice; + char sDeviceFile[FILENAME_MAX]; +} CNF_SCSIDEV; + +/* 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_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 { - BOOL bFullScreen; - BOOL bFrameSkip; - BOOL bAllowOverscan; - BOOL bInterleavedScreen; - int ChosenDisplayMode; - BOOL bUseHighRes; - BOOL bUseExtVdiResolutions; - int nVdiResolution; + MONITORTYPE nMonitorType; + int nFrameSkips; + bool bFullScreen; + bool bKeepResolution; + bool bKeepResolutionST; + bool bAllowOverscan; + bool bAspectCorrect; + bool bUseExtVdiResolutions; + int nSpec512Threshold; + int nForceBpp; int nVdiColors; - BOOL bCaptureChange; - int nFramesPerSecond; + int nVdiWidth; + int nVdiHeight; + bool bMouseWarp; + bool bShowStatusbar; + bool bShowDriveLed; + bool bCrop; + bool bForceMax; + int nMaxWidth; + int nMaxHeight; +#if WITH_SDL2 + int nRenderScaleQuality; + bool bUseVsync; +#endif } CNF_SCREEN; /* Printer configuration */ typedef struct { - BOOL bEnablePrinting; - BOOL bPrintToFile; + bool bEnablePrinting; char szPrintToFileName[FILENAME_MAX]; } CNF_PRINTER; @@ -158,60 +286,101 @@ typedef struct /* Midi configuration */ typedef struct { - BOOL bEnableMidi; - char szMidiOutFileName[FILENAME_MAX]; + bool bEnableMidi; + char sMidiInFileName[FILENAME_MAX]; + char sMidiOutFileName[FILENAME_MAX]; } CNF_MIDI; /* Dialog System */ typedef enum { - MINMAXSPEED_MIN, - MINMAXSPEED_1, - MINMAXSPEED_2, - MINMAXSPEED_3, - MINMAXSPEED_MAX -} MINMAXSPEED_TYPE; + MACHINE_ST, + MACHINE_STE, + MACHINE_TT, + MACHINE_FALCON, + MACHINE_MEGA_STE +} MACHINETYPE; + +typedef enum +{ + DSP_TYPE_NONE, + DSP_TYPE_DUMMY, + DSP_TYPE_EMU +} DSPTYPE; + +#if ENABLE_WINUAE_CPU +typedef enum +{ + FPU_NONE = 0, + FPU_68881 = 68881, + FPU_68882 = 68882, + FPU_CPU = 68040 +} FPUTYPE; +#endif typedef struct { int nCpuLevel; - BOOL bCompatibleCpu; - BOOL bAddressSpace24; - BOOL bBlitter; /* TRUE if blitter is enabled */ - BOOL bPatchTimerD; - BOOL bSlowFDC; /* TRUE to slow down FDC emulation */ - MINMAXSPEED_TYPE nMinMaxSpeed; + int nCpuFreq; + bool bCompatibleCpu; /* Prefetch mode */ + MACHINETYPE nMachineType; + bool bBlitter; /* TRUE if Blitter is enabled */ + DSPTYPE nDSPType; /* how to "emulate" DSP */ + bool bRealTimeClock; + bool bPatchTimerD; + bool bFastBoot; /* Enable to patch TOS for fast boot */ + bool bFastForward; + bool bAddressSpace24; /* Always set to true with old UAE cpu */ + +#if ENABLE_WINUAE_CPU + bool bCycleExactCpu; + FPUTYPE n_FPUType; + bool bCompatibleFPU; /* More compatible FPU */ + bool bMMU; /* TRUE if MMU is enabled */ +#endif } CNF_SYSTEM; +typedef struct +{ + int AviRecordVcodec; + int AviRecordFps; + char AviRecordFile[FILENAME_MAX]; +} CNF_VIDEO; /* State of system is stored in this structure */ /* On reset, variables are copied into system globals and used. */ typedef struct { /* Configure */ + CNF_LOG Log; + CNF_DEBUGGER Debugger; 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_DISKIMAGE DiskImage; + CNF_HARDDISK HardDisk; + CNF_SCSIDEV Acsi[MAX_ACSI_DEVS]; + CNF_SCSIDEV Scsi[MAX_SCSI_DEVS]; CNF_ROM Rom; CNF_RS232 RS232; CNF_PRINTER Printer; CNF_MIDI Midi; CNF_SYSTEM System; + CNF_VIDEO Video; } CNF_PARAMS; -extern BOOL bFirstTimeInstall; extern CNF_PARAMS ConfigureParams; extern char sConfigFileName[FILENAME_MAX]; extern void Configuration_SetDefault(void); -extern void Configuration_WorkOnDetails(BOOL bReset); -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