--- hatari/src/includes/configuration.h 2019/04/01 07:13:41 1.1.1.9 +++ hatari/src/includes/configuration.h 2019/04/09 08:59:26 1.1.1.22 @@ -1,44 +1,65 @@ /* 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 -/* Logging */ +/* 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 nTextLogLevel; int nAlertDlgLogLevel; - BOOL bConfirmQuit; + bool bConfirmQuit; + bool bNatFeats; + bool bConsoleWindow; /* for now, used just for Windows */ } CNF_LOG; +/* debugger */ +typedef struct +{ + int nNumberBase; + int nSymbolLines; + int nMemdumpLines; + int nDisasmLines; + int nExceptionDebugMask; + int nDisasmOptions; + bool bDisasmUAE; + /* load symbols immediately on program start, and keep them after its termination */ + bool bSymbolsResident; + /* whether to match all symbols or just types relevant for given command */ + bool bMatchAllSymbols; +} 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_QUALITY; - typedef struct { - BOOL bEnableSound; - SOUND_QUALITY nPlaybackQuality; + bool bEnableMicrophone; + bool bEnableSound; + bool bEnableSoundSync; + int nPlaybackFreq; + int SdlAudioBufferSize; char szYMCaptureFileName[FILENAME_MAX]; + int YmVolumeMixing; } CNF_SOUND; @@ -46,9 +67,12 @@ typedef struct /* RS232 configuration */ typedef struct { - BOOL bEnableRS232; + bool bEnableRS232; + bool bEnableSccB; char szOutFileName[FILENAME_MAX]; char szInFileName[FILENAME_MAX]; + char sSccBInFileName[FILENAME_MAX]; + char sSccBOutFileName[FILENAME_MAX]; } CNF_RS232; @@ -62,7 +86,7 @@ typedef enum typedef struct { - BOOL bDisableKeyRepeat; + bool bDisableKeyRepeat; KEYMAPTYPE nKeymapType; char szMappingFileName[FILENAME_MAX]; } CNF_KEYBOARD; @@ -71,19 +95,27 @@ typedef struct typedef enum { SHORTCUT_OPTIONS, SHORTCUT_FULLSCREEN, - SHORTCUT_MOUSEMODE, + SHORTCUT_BORDERS, + SHORTCUT_MOUSEGRAB, SHORTCUT_COLDRESET, SHORTCUT_WARMRESET, SHORTCUT_SCREENSHOT, SHORTCUT_BOSSKEY, SHORTCUT_CURSOREMU, - SHORTCUT_MAXSPEED, + 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; @@ -97,8 +129,9 @@ typedef struct typedef struct { - int nMemorySize; - BOOL bAutoSave; + int STRamSize_KB; + int TTRamSize_KB; + bool bAutoSave; char szMemoryCaptureFileName[FILENAME_MAX]; char szAutoSaveFileName[FILENAME_MAX]; } CNF_MEMORY; @@ -111,16 +144,27 @@ typedef enum JOYSTICK_REALSTICK, JOYSTICK_KEYBOARD } JOYSTICKMODE; +#define JOYSTICK_MODES 3 typedef struct { JOYSTICKMODE nJoystickMode; - BOOL bEnableAutoFire; + bool bEnableAutoFire; + bool bEnableJumpOnFire2; int nJoyId; int nKeyCodeUp, nKeyCodeDown, nKeyCodeLeft, nKeyCodeRight, nKeyCodeFire; } JOYSTICK; -#define JOYSTICK_COUNT 6 +enum +{ + JOYID_JOYSTICK0, + JOYID_JOYSTICK1, + JOYID_STEPADA, + JOYID_STEPADB, + JOYID_PARPORT1, + JOYID_PARPORT2, + JOYSTICK_COUNT +}; typedef struct { @@ -137,44 +181,81 @@ typedef enum WRITEPROT_AUTO } WRITEPROTECTION; +#define MAX_FLOPPYDRIVES 2 + typedef struct { - BOOL bAutoInsertDiskB; + 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 */ -#define MAX_HARDDRIVES 1 +/* 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 { - BOOL bBootFromHardDisk; - int nHardDiskDir; - BOOL bUseHardDiskDirectories; - BOOL bUseHardDiskImage; + int nGemdosDrive; + bool bUseHardDiskDirectories; + WRITEPROTECTION nWriteProtection; + GEMDOS_CHR_CONV nGemdosCase; + bool bFilenameConversion; + bool bGemdosHostTime; + bool bBootFromHardDisk; char szHardDiskDirectories[MAX_HARDDRIVES][FILENAME_MAX]; - char szHardDiskImage[FILENAME_MAX]; - BOOL bUseIdeHardDiskImage; - char szIdeHardDiskImage[FILENAME_MAX]; } CNF_HARDDISK; +/* SCSI/ACSI/IDE configuration */ +#define MAX_ACSI_DEVS 8 +#define MAX_SCSI_DEVS 8 +#define MAX_IDE_DEVS 2 + +typedef struct +{ + bool bUseDevice; + char sDeviceFile[FILENAME_MAX]; + int nBlockSize; +} CNF_SCSIDEV; + +typedef enum +{ + BYTESWAP_OFF, + BYTESWAP_ON, + BYTESWAP_AUTO +} BYTESWAPPING; + +typedef struct +{ + bool bUseDevice; + BYTESWAPPING nByteSwap; + char sDeviceFile[FILENAME_MAX]; + int nBlockSize; + int nDeviceType; +} CNF_IDEDEV; + /* 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 @@ -191,33 +272,43 @@ typedef enum /* Screen configuration */ typedef struct { - MONITORTYPE MonitorType; - int FrameSkips; - BOOL bFullScreen; - BOOL bAllowOverscan; - BOOL bZoomLowRes; - BOOL bUseExtVdiResolutions; + MONITORTYPE nMonitorType; + int nFrameSkips; + bool bFullScreen; + bool bKeepResolution; +#if WITH_SDL2 + bool bResizable; +#else + bool bKeepResolutionST; +#endif + bool bAllowOverscan; + bool bAspectCorrect; + bool bUseExtVdiResolutions; int nSpec512Threshold; int nForceBpp; int nVdiColors; int nVdiWidth; int nVdiHeight; - BOOL bCaptureChange; - int nFramesPerSecond; - int nWindowBorderPixelsLeft; - int nWindowBorderPixelsRight; - int nWindowBorderPixelsBottom; - int nFullScreenBorderPixelsLeft; - int nFullScreenBorderPixelsRight; - int nFullScreenBorderPixelsBottom; + bool bMouseWarp; + bool bShowStatusbar; + bool bShowDriveLed; + bool bCrop; + bool bForceMax; + int nMaxWidth; + int nMaxHeight; +#if WITH_SDL2 + bool bUseSdlRenderer; + int nRenderScaleQuality; + bool bUseVsync; +#endif + bool DisableVideo; } CNF_SCREEN; /* Printer configuration */ typedef struct { - BOOL bEnablePrinting; - BOOL bPrintToFile; + bool bEnablePrinting; char szPrintToFileName[FILENAME_MAX]; } CNF_PRINTER; @@ -225,25 +316,21 @@ typedef struct /* Midi configuration */ typedef struct { - BOOL bEnableMidi; - char szMidiOutFileName[FILENAME_MAX]; + bool bEnableMidi; + char sMidiInFileName[FILENAME_MAX]; + char sMidiOutFileName[FILENAME_MAX]; + char sMidiInPortName[FILENAME_MAX]; + char sMidiOutPortName[FILENAME_MAX]; } CNF_MIDI; /* Dialog System */ typedef enum { - MINMAXSPEED_MIN, - MINMAXSPEED_1, - MINMAXSPEED_2, - MINMAXSPEED_3, - MINMAXSPEED_MAX -} MINMAXSPEED_TYPE; - -typedef enum -{ MACHINE_ST, + MACHINE_MEGA_ST, MACHINE_STE, + MACHINE_MEGA_STE, MACHINE_TT, MACHINE_FALCON } MACHINETYPE; @@ -255,21 +342,54 @@ typedef enum 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 enum +{ + VIDEO_TIMING_MODE_RANDOM = 0, + VIDEO_TIMING_MODE_WS1, + VIDEO_TIMING_MODE_WS2, + VIDEO_TIMING_MODE_WS3, + VIDEO_TIMING_MODE_WS4, +} VIDEOTIMINGMODE; + typedef struct { int nCpuLevel; int nCpuFreq; - BOOL bCompatibleCpu; - /*BOOL bAddressSpace24;*/ + bool bCompatibleCpu; /* Prefetch mode */ MACHINETYPE nMachineType; - BOOL bBlitter; /* TRUE if Blitter is enabled */ + 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; + bool bPatchTimerD; + bool bFastBoot; /* Enable to patch TOS for fast boot */ + bool bFastForward; + bool bAddressSpace24; /* Always set to true with old UAE cpu */ + VIDEOTIMINGMODE VideoTimingMode; + +#if ENABLE_WINUAE_CPU + bool bCycleExactCpu; + FPUTYPE n_FPUType; + bool bCompatibleFPU; /* More compatible FPU */ + bool bSoftFloatFPU; + 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. */ @@ -277,6 +397,7 @@ typedef struct { /* Configure */ CNF_LOG Log; + CNF_DEBUGGER Debugger; CNF_SCREEN Screen; CNF_JOYSTICKS Joysticks; CNF_KEYBOARD Keyboard; @@ -285,22 +406,48 @@ typedef struct CNF_MEMORY Memory; CNF_DISKIMAGE DiskImage; CNF_HARDDISK HardDisk; + CNF_SCSIDEV Acsi[MAX_ACSI_DEVS]; + CNF_SCSIDEV Scsi[MAX_SCSI_DEVS]; + CNF_IDEDEV Ide[MAX_IDE_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]; +static inline bool Config_IsMachineST(void) +{ + return ConfigureParams.System.nMachineType == MACHINE_ST || + ConfigureParams.System.nMachineType == MACHINE_MEGA_ST; +} + +static inline bool Config_IsMachineSTE(void) +{ + return ConfigureParams.System.nMachineType == MACHINE_STE || + ConfigureParams.System.nMachineType == MACHINE_MEGA_STE; +} + +static inline bool Config_IsMachineTT(void) +{ + return ConfigureParams.System.nMachineType == MACHINE_TT; +} + +static inline bool Config_IsMachineFalcon(void) +{ + return ConfigureParams.System.nMachineType == MACHINE_FALCON; +} + extern void Configuration_SetDefault(void); -extern void Configuration_Apply(BOOL bReset); +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); +extern void Configuration_MemorySnapShot_Capture(bool bSave); +extern void Configuration_ChangeCpuFreq ( int CpuFreq_new ); #endif