--- previous/src/includes/configuration.h 2018/04/24 19:25:10 1.1 +++ previous/src/includes/configuration.h 2018/04/24 19:34:16 1.1.1.6 @@ -5,9 +5,26 @@ your option any later version. Read the file gpl.txt for details. */ +#pragma once + #ifndef HATARI_CONFIGURATION_H #define HATARI_CONFIGURATION_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define ENABLE_TESTING 0 + +/* Configuration Dialog */ +typedef struct +{ + bool bShowConfigDialogAtStartup; +} CNF_CONFIGDLG; + /* Logging and tracing */ typedef struct { @@ -19,7 +36,7 @@ typedef struct } CNF_LOG; -/* debugger */ +/* Debugger */ typedef struct { int nNumberBase; @@ -28,34 +45,22 @@ typedef struct } CNF_DEBUGGER; -/* ROM (TOS + cartridge) configuration */ +/* ROM configuration */ typedef struct { - char szTosImageFileName[FILENAME_MAX]; - char szCartridgeImageFileName[FILENAME_MAX]; + char szRom030FileName[FILENAME_MAX]; + char szRom040FileName[FILENAME_MAX]; + char szRomTurboFileName[FILENAME_MAX]; } CNF_ROM; /* Sound configuration */ typedef struct { + bool bEnableMicrophone; bool bEnableSound; - int nPlaybackFreq; - char szYMCaptureFileName[FILENAME_MAX]; - int SdlAudioBufferSize; } CNF_SOUND; - - -/* RS232 configuration */ -typedef struct -{ - bool bEnableRS232; - char szOutFileName[FILENAME_MAX]; - char szInFileName[FILENAME_MAX]; -} CNF_RS232; - - /* Dialog Keyboard */ typedef enum { @@ -66,7 +71,7 @@ typedef enum typedef struct { - bool bDisableKeyRepeat; + bool bSwapCmdAlt; KEYMAPTYPE nKeymapType; char szMappingFileName[FILENAME_MAX]; } CNF_KEYBOARD; @@ -78,19 +83,13 @@ typedef enum { SHORTCUT_MOUSEGRAB, SHORTCUT_COLDRESET, SHORTCUT_WARMRESET, - SHORTCUT_SCREENSHOT, - SHORTCUT_BOSSKEY, SHORTCUT_CURSOREMU, - SHORTCUT_FASTFORWARD, - SHORTCUT_RECANIM, - SHORTCUT_RECSOUND, SHORTCUT_SOUND, - SHORTCUT_DEBUG, + SHORTCUT_DEBUG_M68K, + SHORTCUT_DEBUG_I860, SHORTCUT_PAUSE, SHORTCUT_QUIT, - SHORTCUT_LOADMEM, - SHORTCUT_SAVEMEM, - SHORTCUT_INSERTDISKA, + SHORTCUT_DIMENSION, SHORTCUT_KEYS, /* number of shortcuts */ SHORTCUT_NONE } SHORTCUTKEYIDX; @@ -102,156 +101,187 @@ typedef struct } CNF_SHORTCUT; -typedef struct -{ - int nMemorySize; - bool bAutoSave; - char szMemoryCaptureFileName[FILENAME_MAX]; - char szAutoSaveFileName[FILENAME_MAX]; -} CNF_MEMORY; +/* Dialog Mouse */ +#define MOUSE_LIN_MIN 0.1 +#define MOUSE_LIN_MAX 10.0 +#define MOUSE_EXP_MIN 0.5 +#define MOUSE_EXP_MAX 1.0 +typedef struct +{ + bool bEnableAutoGrab; + float fLinSpeedNormal; + float fLinSpeedLocked; + float fExpSpeedNormal; + float fExpSpeedLocked; +} CNF_MOUSE; -/* Joystick configuration */ -typedef enum -{ - JOYSTICK_DISABLED, - JOYSTICK_REALSTICK, - JOYSTICK_KEYBOARD -} JOYSTICKMODE; +/* Memory configuration */ -typedef struct +typedef enum { - JOYSTICKMODE nJoystickMode; - bool bEnableAutoFire; - bool bEnableJumpOnFire2; - int nJoyId; - int nKeyCodeUp, nKeyCodeDown, nKeyCodeLeft, nKeyCodeRight, nKeyCodeFire; -} JOYSTICK; - -#define JOYSTICK_COUNT 6 + MEMORY_120NS, + MEMORY_100NS, + MEMORY_80NS, + MEMORY_60NS +} MEMORY_SPEED; typedef struct { - JOYSTICK Joy[JOYSTICK_COUNT]; -} CNF_JOYSTICKS; + int nMemoryBankSize[4]; + MEMORY_SPEED nMemorySpeed; +} CNF_MEMORY; -/* Disk image configuration */ +/* Dialog Boot options */ typedef enum { - WRITEPROT_OFF, - WRITEPROT_ON, - WRITEPROT_AUTO -} WRITEPROTECTION; - -#define MAX_FLOPPYDRIVES 2 + BOOT_ROM, + BOOT_SCSI, + BOOT_ETHERNET, + BOOT_MO, + BOOT_FLOPPY +} BOOT_DEVICE; typedef struct { - bool bAutoInsertDiskB; - bool bSlowFloppy; /* true to slow down FDC emulation */ - WRITEPROTECTION nWriteProtection; - char szDiskZipPath[MAX_FLOPPYDRIVES][FILENAME_MAX]; - char szDiskFileName[MAX_FLOPPYDRIVES][FILENAME_MAX]; - char szDiskImageDirectory[FILENAME_MAX]; -} CNF_DISKIMAGE; + BOOT_DEVICE nBootDevice; + bool bEnableDRAMTest; + bool bEnablePot; + bool bExtendedPot; + bool bEnableSoundTest; + bool bEnableSCSITest; + bool bLoopPot; + bool bVerbose; +} CNF_BOOT; /* Hard drives configuration */ -#define MAX_HARDDRIVES 23 +#define ESP_MAX_DEVS 7 +typedef enum { + DEVTYPE_NONE, + DEVTYPE_HARDDISK, + DEVTYPE_CD, + DEVTYPE_FLOPPY, + NUM_DEVTYPES +} SCSI_DEVTYPE; + +typedef struct { + char szImageName[FILENAME_MAX]; + SCSI_DEVTYPE nDeviceType; + bool bDiskInserted; + bool bWriteProtected; +} SCSIDISK; typedef enum { - DRIVE_C, - DRIVE_D, - DRIVE_E, - DRIVE_F -} DRIVELETTER; + WRITEPROT_OFF, + WRITEPROT_ON, + WRITEPROT_AUTO +} WRITEPROTECTION; -typedef struct +typedef struct { + SCSIDISK target[ESP_MAX_DEVS]; + int nWriteProtection; +} CNF_SCSI; + + +/* Magneto-optical drives configuration */ +#define MO_MAX_DRIVES 2 +typedef struct { + char szImageName[FILENAME_MAX]; + bool bDriveConnected; + bool bDiskInserted; + bool bWriteProtected; +} MODISK; + +typedef struct { + MODISK drive[MO_MAX_DRIVES]; +} CNF_MO; + + +/* Floppy disk drives configuration */ +#define FLP_MAX_DRIVES 2 +typedef struct { + char szImageName[FILENAME_MAX]; + bool bDriveConnected; + bool bDiskInserted; + bool bWriteProtected; +} FLPDISK; + +typedef struct { + FLPDISK drive[FLP_MAX_DRIVES]; +} CNF_FLOPPY; + + +/* Ethernet configuration */ +typedef enum { - int nHardDiskDir; - bool bUseHardDiskDirectories; - bool bUseHardDiskImage; - bool bUseIdeMasterHardDiskImage; - bool bUseIdeSlaveHardDiskImage; - WRITEPROTECTION nWriteProtection; - bool bBootFromHardDisk; - char szHardDiskDirectories[MAX_HARDDRIVES][FILENAME_MAX]; - char szHardDiskImage[FILENAME_MAX]; - char szIdeMasterHardDiskImage[FILENAME_MAX]; - char szIdeSlaveHardDiskImage[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 + ENET_SLIRP, + ENET_PCAP +} ENET_INTERFACE; + +typedef struct { + bool bEthernetConnected; + bool bTwistedPair; + ENET_INTERFACE nHostInterface; + char szInterfaceName[FILENAME_MAX]; +} CNF_ENET; typedef enum { - MONITOR_TYPE_MONO, - MONITOR_TYPE_RGB, - MONITOR_TYPE_VGA, - MONITOR_TYPE_TV + MONITOR_TYPE_DUAL, + MONITOR_TYPE_CPU, + MONITOR_TYPE_DIMENSION, } MONITORTYPE; /* Screen configuration */ typedef struct { MONITORTYPE nMonitorType; - int nFrameSkips; + int nMonitorNum; bool bFullScreen; - bool bAllowOverscan; - bool bAspectCorrect; - bool bUseExtVdiResolutions; - int nSpec512Threshold; - int nForceBpp; - int nVdiColors; - int nVdiWidth; - int nVdiHeight; bool bShowStatusbar; bool bShowDriveLed; - bool bCaptureChange; - int nMaxWidth; - int nMaxHeight; } CNF_SCREEN; /* Printer configuration */ +typedef enum +{ + PAPER_A4, + PAPER_LETTER, + PAPER_B5, + PAPER_LEGAL +} PAPER_SIZE; + typedef struct { - bool bEnablePrinting; - bool bPrintToFile; + bool bPrinterConnected; + PAPER_SIZE nPaperSize; char szPrintToFileName[FILENAME_MAX]; } CNF_PRINTER; - -/* Midi configuration */ -typedef struct +/* Dialog System */ +typedef enum { - bool bEnableMidi; - char sMidiInFileName[FILENAME_MAX]; - char sMidiOutFileName[FILENAME_MAX]; -} CNF_MIDI; + NEXT_CUBE030, + NEXT_CUBE040, + NEXT_STATION +} MACHINETYPE; +typedef enum +{ + NCR53C90, + NCR53C90A +} SCSICHIP; -/* Dialog System */ typedef enum { - MACHINE_ST, - MACHINE_STE, - MACHINE_TT, - MACHINE_FALCON -} MACHINETYPE; + MC68HC68T1, + MCCS1850 +} RTCCHIP; typedef enum { @@ -260,51 +290,92 @@ typedef enum DSP_TYPE_EMU } DSPTYPE; +typedef enum +{ + FPU_NONE = 0, + FPU_68881 = 68881, + FPU_68882 = 68882, + FPU_CPU = 68040 +} FPUTYPE; + typedef struct { + bool bColor; + bool bTurbo; + bool bNBIC; + SCSICHIP nSCSI; + RTCCHIP nRTC; int nCpuLevel; int nCpuFreq; - bool bCompatibleCpu; - /*bool bAddressSpace24;*/ + bool bCompatibleCpu; /* Prefetch mode */ MACHINETYPE nMachineType; - bool bBlitter; /* TRUE if Blitter is enabled */ + bool bRealtime; /* TRUE if realtime sources shoud be used */ DSPTYPE nDSPType; /* how to "emulate" DSP */ + bool bDSPMemoryExpansion; bool bRealTimeClock; - bool bPatchTimerD; - bool bFastForward; + FPUTYPE n_FPUType; + bool bCompatibleFPU; /* More compatible FPU */ + bool bMMU; /* TRUE if MMU is enabled */ } CNF_SYSTEM; +/* Floppy disk drives configuration */ +#define ND_MAX_BOARDS 3 +typedef struct +{ + bool bEnabled; + int nMemoryBankSize[4]; + char szRomFileName[FILENAME_MAX]; +} NDBOARD; + +typedef struct { + bool bI860Thread; + bool bMainDisplay; + int nMainDisplay; + NDBOARD board[ND_MAX_BOARDS]; +} CNF_ND; /* 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_DISKIMAGE DiskImage; - CNF_HARDDISK HardDisk; - CNF_ROM Rom; - CNF_RS232 RS232; - CNF_PRINTER Printer; - CNF_MIDI Midi; - CNF_SYSTEM System; + CNF_CONFIGDLG ConfigDialog; + CNF_LOG Log; + CNF_DEBUGGER Debugger; + CNF_SCREEN Screen; + CNF_KEYBOARD Keyboard; + CNF_SHORTCUT Shortcut; + CNF_MOUSE Mouse; + CNF_SOUND Sound; + CNF_MEMORY Memory; + CNF_BOOT Boot; + CNF_SCSI SCSI; + CNF_MO MO; + CNF_FLOPPY Floppy; + CNF_ENET Ethernet; + CNF_ROM Rom; + CNF_PRINTER Printer; + CNF_SYSTEM System; + CNF_ND Dimension; } CNF_PARAMS; extern CNF_PARAMS ConfigureParams; extern char sConfigFileName[FILENAME_MAX]; -extern void Configuration_SetDefault(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); +void Configuration_SetDefault(void); +void Configuration_SetSystemDefaults(void); +void Configuration_Apply(bool bReset); +int Configuration_CheckMemory(int *banksize); +int Configuration_CheckDimensionMemory(int *banksize); +void Configuration_CheckDimensionSettings(void); +void Configuration_CheckEthernetSettings(void); +void Configuration_Load(const char *psFileName); +void Configuration_Save(void); +void Configuration_MemorySnapShot_Capture(bool bSave); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ #endif