WinUAE/include/options.h
2021-10-14 18:51:20 +03:00

1011 lines
27 KiB
C

/*
* UAE - The Un*x Amiga Emulator
*
* Stuff
*
* Copyright 1995, 1996 Ed Hanway
* Copyright 1995-2001 Bernd Schmidt
*/
#ifndef UAE_OPTIONS_H
#define UAE_OPTIONS_H
#include "uae/types.h"
#include "traps.h"
#define UAEMAJOR 4
#define UAEMINOR 9
#define UAESUBREV 0
#define MAX_AMIGADISPLAYS 4
typedef enum { KBD_LANG_US, KBD_LANG_DK, KBD_LANG_DE, KBD_LANG_SE, KBD_LANG_FR, KBD_LANG_IT, KBD_LANG_ES } KbdLang;
extern long int version;
#define MAX_PATHS 8
struct multipath {
TCHAR path[MAX_PATHS][PATH_MAX];
};
#define PATH_NONE -1
#define PATH_FLOPPY 0
#define PATH_CD 1
#define PATH_DIR 2
#define PATH_HDF 3
#define PATH_FS 4
#define PATH_TAPE 5
#define PATH_GENLOCK_IMAGE 6
#define PATH_GENLOCK_VIDEO 7
#define PATH_GEO 8
#define PATH_ROM 9
struct strlist {
struct strlist *next;
TCHAR *option, *value;
int unknown;
};
#define MAX_TOTAL_SCSI_DEVICES 8
/* maximum number native input devices supported (single type) */
#define MAX_INPUT_DEVICES 20
/* maximum number of native input device's buttons and axles supported */
#define MAX_INPUT_DEVICE_EVENTS 256
/* 4 different customization settings */
#define MAX_INPUT_SETTINGS 4
#define GAMEPORT_INPUT_SETTINGS 3 // last slot is for gameport panel mappings
#define MAX_INPUT_SUB_EVENT 8
#define MAX_INPUT_SUB_EVENT_ALL 9
#define SPARE_SUB_EVENT 8
#define INTERNALEVENT_COUNT 1
#if 0
struct uae_input_device_event
{
uae_s16 eventid[MAX_INPUT_SUB_EVENT_ALL];
TCHAR *custom[MAX_INPUT_SUB_EVENT_ALL];
uae_u64 flags[MAX_INPUT_SUB_EVENT_ALL];
uae_u8 port[MAX_INPUT_SUB_EVENT_ALL];
uae_s16 extra;
};
#endif
struct uae_input_device {
TCHAR *name;
TCHAR *configname;
uae_s16 eventid[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT_ALL];
TCHAR *custom[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT_ALL];
uae_u64 flags[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT_ALL];
uae_s8 port[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT_ALL];
uae_s16 extra[MAX_INPUT_DEVICE_EVENTS];
uae_s8 enabled;
};
#define MAX_JPORTS_CUSTOM 6
#define MAX_JPORTS 4
#define NORMAL_JPORTS 2
#define MAX_JPORT_NAME 128
#define MAX_JPORT_CONFIG 256
struct jport_custom {
TCHAR custom[MAX_DPATH];
};
struct inputdevconfig {
TCHAR name[MAX_JPORT_NAME];
TCHAR configname[MAX_JPORT_CONFIG];
TCHAR shortid[16];
};
struct jport {
int id;
int mode; // 0=def,1=mouse,2=joy,3=anajoy,4=lightpen
int submode;
int autofire;
struct inputdevconfig idc;
bool nokeyboardoverride;
bool changed;
};
#define JPORT_UNPLUGGED -2
#define JPORT_NONE -1
#define JPORT_AF_NORMAL 1
#define JPORT_AF_TOGGLE 2
#define JPORT_AF_ALWAYS 3
#define KBTYPE_AMIGA 0
#define KBTYPE_PC1 1
#define KBTYPE_PC2 2
#define MAX_SPARE_DRIVES 20
#define MAX_CUSTOM_MEMORY_ADDRS 2
#define CONFIG_TYPE_ALL -1
#define CONFIG_TYPE_DEFAULT 0
#define CONFIG_TYPE_HARDWARE 1
#define CONFIG_TYPE_HOST 2
#define CONFIG_TYPE_NORESET 4
#define CONFIG_BLEN 2560
#define MOUSEUNTRAP_NONE 0
#define MOUSEUNTRAP_MIDDLEBUTTON 1
#define MOUSEUNTRAP_MAGIC 2
#define MOUSEUNTRAP_BOTH 3
#define TABLET_OFF 0
#define TABLET_MOUSEHACK 1
#define TABLET_REAL 2
#ifdef WITH_SLIRP
#define MAX_SLIRP_REDIRS 32
struct slirp_redir
{
int proto;
int srcport;
int dstport;
unsigned long addr;
};
#endif
struct cdslot
{
TCHAR name[MAX_DPATH];
bool inuse;
bool delayed;
bool temporary;
int type;
};
struct floppyslot
{
TCHAR df[MAX_DPATH];
int dfxtype;
int dfxsubtype;
TCHAR dfxsubtypeid[32];
int dfxclick;
TCHAR dfxclickexternal[256];
bool forcedwriteprotect;
};
#define ASPECTMULT 1024
#define WH_NATIVE 1
struct wh {
int x, y;
int width, height;
int special;
};
#define MOUNT_CONFIG_SIZE 30
#define UAEDEV_DIR 0
#define UAEDEV_HDF 1
#define UAEDEV_CD 2
#define UAEDEV_TAPE 3
#define HD_LEVEL_SCSI_1 0
#define HD_LEVEL_SCSI_2 1
#define HD_LEVEL_SASI 2
#define HD_LEVEL_SASI_ENHANCED 2
#define HD_LEVEL_SASI_CHS 3
#define HD_LEVEL_ATA_1 0
#define HD_LEVEL_ATA_2 1
#define HD_LEVEL_ATA_2S 2
#define BOOTPRI_NOAUTOBOOT -128
#define BOOTPRI_NOAUTOMOUNT -129
#define ISAUTOBOOT(ci) ((ci)->bootpri > BOOTPRI_NOAUTOBOOT)
#define ISAUTOMOUNT(ci) ((ci)->bootpri > BOOTPRI_NOAUTOMOUNT)
#define MAX_UAEDEV_BADBLOCKS 8
struct uaedev_badblock
{
uae_u32 first;
uae_u32 last;
};
struct uaedev_config_info {
int type;
TCHAR devname[MAX_DPATH];
TCHAR volname[MAX_DPATH];
TCHAR rootdir[MAX_DPATH];
bool readonly;
bool lock;
bool loadidentity;
int bootpri;
TCHAR filesys[MAX_DPATH];
TCHAR geometry[MAX_DPATH];
int lowcyl;
int highcyl; // zero if detected from size
int cyls; // calculated/corrected highcyl
int surfaces;
int sectors;
int reserved;
int blocksize;
bool chs;
uae_u64 max_lba;
int controller_type;
int controller_type_unit;
int controller_unit;
int controller_media_type; // 1 = CF IDE, 0 = normal
int unit_feature_level;
int unit_special_flags;
bool physical_geometry; // if false: use defaults
int pcyls, pheads, psecs;
int flags;
int buffers;
int bufmemtype;
int stacksize;
int priority;
uae_u32 mask;
int maxtransfer;
uae_u32 dostype;
int unit;
int interleave;
int sectorsperblock;
int forceload;
int device_emu_unit;
bool inject_icons;
int badblock_num;
struct uaedev_badblock badblocks[MAX_UAEDEV_BADBLOCKS];
int uae_unitnum; // mountunit nr
};
struct uaedev_config_data
{
struct uaedev_config_info ci;
int configoffset; // HD config entry index
int unitnum; // scsi unit number (if tape currently)
};
enum { CP_GENERIC = 1, CP_CDTV, CP_CDTVCR, CP_CD32, CP_A500, CP_A500P, CP_A600,
CP_A1000, CP_A1200, CP_A2000, CP_A3000, CP_A3000T, CP_A4000, CP_A4000T,
CP_VELVET, CP_CASABLANCA, CP_DRACO };
#define IDE_A600A1200 1
#define IDE_A4000 2
#define GFX_WINDOW 0
#define GFX_FULLSCREEN 1
#define GFX_FULLWINDOW 2
#define AUTOSCALE_NONE 0
#define AUTOSCALE_STATIC_AUTO 1
#define AUTOSCALE_STATIC_NOMINAL 2
#define AUTOSCALE_STATIC_MAX 3
#define AUTOSCALE_NORMAL 4
#define AUTOSCALE_RESIZE 5
#define AUTOSCALE_CENTER 6
#define AUTOSCALE_MANUAL 7 // use gfx_xcenter_pos and gfx_ycenter_pos
#define AUTOSCALE_INTEGER 8
#define AUTOSCALE_INTEGER_AUTOSCALE 9
#define AUTOSCALE_SEPARATOR 10
#define AUTOSCALE_OVERSCAN_BLANK 11
#define MONITOREMU_NONE 0
#define MONITOREMU_AUTO 1
#define MONITOREMU_A2024 2
#define MONITOREMU_GRAFFITI 3
#define MONITOREMU_HAM_E 4
#define MONITOREMU_HAM_E_PLUS 5
#define MONITOREMU_VIDEODAC18 6
#define MONITOREMU_AVIDEO12 7
#define MONITOREMU_AVIDEO24 8
#define MONITOREMU_FIRECRACKER24 9
#define MONITOREMU_DCTV 10
#define MONITOREMU_OPALVISION 11
#define MONITOREMU_COLORBURST 12
#define OVERSCANMODE_OVERSCAN 3
#define OVERSCANMODE_BROADCAST 4
#define OVERSCANMODE_EXTREME 5
#define MAX_FILTERSHADERS 4
#define MAX_CHIPSET_REFRESH 10
#define MAX_CHIPSET_REFRESH_TOTAL (MAX_CHIPSET_REFRESH + 2)
#define CHIPSET_REFRESH_PAL (MAX_CHIPSET_REFRESH + 0)
#define CHIPSET_REFRESH_NTSC (MAX_CHIPSET_REFRESH + 1)
struct chipset_refresh
{
bool inuse;
int index;
bool locked;
bool rtg;
bool exit;
bool defaultdata;
int horiz;
int vert;
int lace;
int resolution;
int resolution_pct;
int ntsc;
int vsync;
int framelength;
double rate;
TCHAR label[16];
TCHAR commands[256];
TCHAR filterprofile[64];
};
#define APMODE_NATIVE 0
#define APMODE_RTG 1
struct apmode
{
int gfx_fullscreen;
int gfx_display;
int gfx_vsync;
// 0 = immediate flip
// -1 = wait for flip, before frame ends
// 1 = wait for flip, after new frame has started
int gfx_vflip;
// doubleframemode strobo
bool gfx_strobo;
int gfx_vsyncmode;
int gfx_backbuffers;
bool gfx_interlaced;
int gfx_refreshrate;
};
#define MAX_LUA_STATES 16
struct gfx_filterdata
{
int gfx_filter;
TCHAR gfx_filtershader[2 * MAX_FILTERSHADERS + 1][MAX_DPATH];
TCHAR gfx_filtermask[2 * MAX_FILTERSHADERS + 1][MAX_DPATH];
TCHAR gfx_filteroverlay[MAX_DPATH];
struct wh gfx_filteroverlay_pos;
int gfx_filteroverlay_overscan;
int gfx_filter_scanlines;
int gfx_filter_scanlineratio;
int gfx_filter_scanlinelevel;
int gfx_filter_scanlineoffset;
float gfx_filter_horiz_zoom, gfx_filter_vert_zoom;
float gfx_filter_horiz_zoom_mult, gfx_filter_vert_zoom_mult;
float gfx_filter_horiz_offset, gfx_filter_vert_offset;
int gfx_filter_left_border, gfx_filter_right_border;
int gfx_filter_top_border, gfx_filter_bottom_border;
int gfx_filter_filtermodeh, gfx_filter_filtermodev;
int gfx_filter_bilinear;
int gfx_filter_noise, gfx_filter_blur;
int gfx_filter_saturation, gfx_filter_luminance, gfx_filter_contrast;
int gfx_filter_gamma, gfx_filter_gamma_ch[3];
int gfx_filter_keep_aspect, gfx_filter_aspect;
int gfx_filter_autoscale;
int gfx_filter_integerscalelimit;
int gfx_filter_keep_autoscale_aspect;
};
#define MAX_DUPLICATE_EXPANSION_BOARDS 5
#define MAX_AVAILABLE_DUPLICATE_EXPANSION_BOARDS 4
#define MAX_EXPANSION_BOARDS 20
#define ROMCONFIG_CONFIGTEXT_LEN 256
struct boardromconfig;
struct romconfig
{
TCHAR romfile[MAX_DPATH];
TCHAR romident[256];
uae_u32 board_ram_size;
bool autoboot_disabled;
bool inserted;
bool dma24bit;
int device_id;
int device_settings;
int subtype;
void *unitdata;
TCHAR configtext[ROMCONFIG_CONFIGTEXT_LEN];
uae_u16 manufacturer;
uae_u8 product;
uae_u8 autoconfig[16];
struct boardromconfig *back;
};
#define MAX_BOARD_ROMS 2
struct boardromconfig
{
int device_type;
int device_num;
int device_order;
struct romconfig roms[MAX_BOARD_ROMS];
};
#define MAX_RTG_BOARDS 4
struct rtgboardconfig
{
int rtg_index;
int rtgmem_type;
uae_u32 rtgmem_size;
int device_order;
int monitor_id;
};
struct boardloadfile
{
uae_u32 loadoffset;
uae_u32 fileoffset, filesize;
TCHAR loadfile[MAX_DPATH];
};
#define MAX_ROM_BOARDS 4
struct romboard
{
uae_u32 size;
uae_u32 start_address;
uae_u32 end_address;
struct boardloadfile lf;
};
#define MAX_RAM_BOARDS 4
struct ramboard
{
uae_u32 size;
uae_u16 manufacturer;
uae_u8 product;
uae_u8 autoconfig[16];
bool autoconfig_inuse;
bool manual_config;
bool no_reset_unmap;
int device_order;
uae_u32 start_address;
uae_u32 end_address;
uae_u32 write_address;
bool readonly;
bool nodma;
bool force16bit;
struct boardloadfile lf;
};
struct expansion_params
{
int device_order;
};
#define Z3MAPPING_AUTO 0
#define Z3MAPPING_UAE 1
#define Z3MAPPING_REAL 2
#define GFX_SIZE_EXTRA_NUM 6
struct monconfig
{
struct wh gfx_size_win;
struct wh gfx_size_fs;
struct wh gfx_size;
struct wh gfx_size_win_xtra[GFX_SIZE_EXTRA_NUM];
struct wh gfx_size_fs_xtra[GFX_SIZE_EXTRA_NUM];
};
struct uae_prefs {
struct strlist *all_lines;
TCHAR description[256];
TCHAR category[256];
TCHAR tags[256];
TCHAR info[256];
int config_version;
TCHAR config_hardware_path[MAX_DPATH];
TCHAR config_host_path[MAX_DPATH];
TCHAR config_all_path[MAX_DPATH];
TCHAR config_path[MAX_DPATH];
TCHAR config_window_title[256];
bool illegal_mem;
bool debug_mem;
bool use_serial;
bool serial_demand;
bool serial_hwctsrts;
bool serial_direct;
int serial_stopbits;
int serial_crlf;
bool parallel_demand;
int parallel_matrix_emulation;
bool parallel_postscript_emulation;
bool parallel_postscript_detection;
int parallel_autoflush_time;
TCHAR ghostscript_parameters[256];
bool use_gfxlib;
bool socket_emu;
bool start_debugger;
int debugging_features;
TCHAR debugging_options[MAX_DPATH];
bool start_gui;
KbdLang keyboard_lang;
int produce_sound;
int sound_stereo;
int sound_stereo_separation;
int sound_mixed_stereo_delay;
int sound_freq;
int sound_maxbsiz;
int sound_interpol;
int sound_filter;
int sound_filter_type;
int sound_volume_master;
int sound_volume_paula;
int sound_volume_cd;
int sound_volume_board;
int sound_volume_midi;
int sound_volume_genlock;
bool sound_stereo_swap_paula;
bool sound_stereo_swap_ahi;
bool sound_auto;
bool sound_cdaudio;
bool sound_volcnt;
int sampler_freq;
int sampler_buffer;
bool sampler_stereo;
int comptrustbyte;
int comptrustword;
int comptrustlong;
int comptrustnaddr;
bool compnf;
bool compfpu;
bool comp_hardflush;
bool comp_constjump;
bool comp_catchfault;
int cachesize;
TCHAR jitblacklist[MAX_DPATH];
bool fpu_strict;
int fpu_mode;
struct monconfig gfx_monitor[MAX_AMIGADISPLAYS];
int gfx_framerate, gfx_autoframerate;
bool gfx_autoresolution_vga;
int gfx_autoresolution;
int gfx_autoresolution_delay;
int gfx_autoresolution_minv, gfx_autoresolution_minh;
bool gfx_scandoubler;
struct apmode gfx_apmode[2];
int gfx_resolution;
int gfx_vresolution;
int gfx_lores_mode;
int gfx_pscanlines, gfx_iscanlines;
int gfx_xcenter, gfx_ycenter;
int gfx_xcenter_pos, gfx_ycenter_pos;
int gfx_xcenter_size, gfx_ycenter_size;
int gfx_max_horizontal, gfx_max_vertical;
int gfx_saturation, gfx_luminance, gfx_contrast, gfx_gamma, gfx_gamma_ch[3];
bool gfx_blackerthanblack;
int gfx_threebitcolors;
int gfx_api;
bool gfx_hdr;
int gfx_api_options;
int color_mode;
int gfx_extrawidth;
int gfx_extraheight;
bool lightboost_strobo;
int lightboost_strobo_ratio;
bool gfx_grayscale;
bool lightpen_crosshair;
int lightpen_offset[2];
int gfx_display_sections;
int gfx_variable_sync;
bool gfx_windowed_resize;
int gfx_overscanmode;
struct gfx_filterdata gf[2];
float rtg_horiz_zoom_mult;
float rtg_vert_zoom_mult;
bool immediate_blits;
int waiting_blits;
double blitter_speed_throttle;
unsigned int chipset_mask;
bool chipset_hr;
bool keyboard_connected;
bool ntscmode;
bool genlock;
int genlock_image;
int genlock_mix;
int genlock_scale;
int genlock_aspect;
bool genlock_alpha;
TCHAR genlock_image_file[MAX_DPATH];
TCHAR genlock_video_file[MAX_DPATH];
int monitoremu;
int monitoremu_mon;
double chipset_refreshrate;
struct chipset_refresh cr[MAX_CHIPSET_REFRESH + 2];
int cr_selected;
int collision_level;
int leds_on_screen;
int leds_on_screen_mask[2];
int leds_on_screen_multiplier[2];
int power_led_dim;
struct wh osd_pos;
int keyboard_leds[3];
bool keyboard_leds_in_use;
int scsi;
bool sana2;
bool uaeserial;
int catweasel;
int cpu_idle;
int ppc_cpu_idle;
bool cpu_cycle_exact;
int cpu_clock_multiplier;
int cpu_frequency;
bool blitter_cycle_exact;
bool cpu_memory_cycle_exact;
int floppy_speed;
int floppy_write_length;
int floppy_random_bits_min;
int floppy_random_bits_max;
int floppy_auto_ext2;
int cd_speed;
bool tod_hack;
uae_u32 maprom;
int boot_rom;
bool rom_readwrite;
int turbo_emulation;
int turbo_emulation_limit;
bool headless;
int filesys_limit;
int filesys_max_name;
int filesys_max_file_size;
bool filesys_inject_icons;
TCHAR filesys_inject_icons_tool[MAX_DPATH];
TCHAR filesys_inject_icons_project[MAX_DPATH];
TCHAR filesys_inject_icons_drawer[MAX_DPATH];
int uaescsidevmode;
bool reset_delay;
bool crash_auto_reset;
int cs_compatible;
int cs_ciaatod;
int cs_rtc;
int cs_rtc_adjust;
int cs_rtc_adjust_mode;
bool cs_ksmirror_e0;
bool cs_ksmirror_a8;
bool cs_ciaoverlay;
bool cs_cd32cd;
bool cs_cd32c2p;
bool cs_cd32nvram;
bool cs_cd32fmv;
int cs_cd32nvram_size;
bool cs_cdtvcd;
bool cs_cdtvram;
int cs_ide;
bool cs_pcmcia;
bool cs_a1000ram;
int cs_fatgaryrev;
int cs_ramseyrev;
int cs_agnusrev;
int cs_deniserev;
int cs_mbdmac;
bool cs_cdtvcr;
bool cs_df0idhw;
bool cs_slowmemisfast;
bool cs_resetwarning;
bool cs_denisenoehb;
bool cs_dipagnus;
bool cs_agnusbltbusybug;
bool cs_ciatodbug;
bool cs_z3autoconfig;
bool cs_1mchipjumper;
bool cs_cia6526;
bool cs_bytecustomwritebug;
bool cs_color_burst;
bool cs_romisslow;
bool cs_toshibagary;
bool cs_bkpthang;
int cs_unmapped_space;
int cs_hacks;
int cs_ciatype[2];
int cs_kbhandshake;
struct boardromconfig expansionboard[MAX_EXPANSION_BOARDS];
TCHAR romfile[MAX_DPATH];
TCHAR romident[256];
TCHAR romextfile[MAX_DPATH];
uae_u32 romextfile2addr;
TCHAR romextfile2[MAX_DPATH];
TCHAR romextident[256];
TCHAR flashfile[MAX_DPATH];
TCHAR rtcfile[MAX_DPATH];
TCHAR cartfile[MAX_DPATH];
TCHAR cartident[256];
int cart_internal;
TCHAR pci_devices[256];
TCHAR prtname[256];
TCHAR sername[256];
TCHAR a2065name[MAX_DPATH];
TCHAR ne2000pciname[MAX_DPATH];
TCHAR ne2000pcmcianame[MAX_DPATH];
TCHAR picassoivromfile[MAX_DPATH];
struct cdslot cdslots[MAX_TOTAL_SCSI_DEVICES];
TCHAR quitstatefile[MAX_DPATH];
TCHAR statefile[MAX_DPATH];
TCHAR inprecfile[MAX_DPATH];
TCHAR trainerfile[MAX_DPATH];
bool inprec_autoplay;
bool refresh_indicator;
struct multipath path_floppy;
struct multipath path_hardfile;
struct multipath path_rom;
struct multipath path_cd;
int m68k_speed;
double m68k_speed_throttle;
double x86_speed_throttle;
int cpu_model;
int mmu_model;
bool mmu_ec;
int cpu060_revision;
int fpu_model;
int fpu_revision;
int ppc_mode;
TCHAR ppc_model[32];
bool cpu_compatible;
bool cpu_thread;
bool int_no_unimplemented;
bool fpu_no_unimplemented;
bool address_space_24;
bool cpu_data_cache;
bool picasso96_nocustom;
int picasso96_modeflags;
int cpu_model_fallback;
uae_u32 z3autoconfig_start;
struct ramboard z3fastmem[MAX_RAM_BOARDS];
struct ramboard fastmem[MAX_RAM_BOARDS];
struct romboard romboards[MAX_ROM_BOARDS];
struct ramboard z3chipmem;
struct ramboard chipmem;
struct ramboard bogomem;
struct ramboard mbresmem_low;
struct ramboard mbresmem_high;
struct ramboard mem25bit;
uae_u32 debugmem_start;
uae_u32 debugmem_size;
int cpuboard_type;
int cpuboard_subtype;
int cpuboard_settings;
struct ramboard cpuboardmem1;
struct ramboard cpuboardmem2;
int ppc_implementation;
bool rtg_hardwareinterrupt;
bool rtg_hardwaresprite;
bool rtg_more_compatible;
bool rtg_multithread;
struct rtgboardconfig rtgboards[MAX_RTG_BOARDS];
uae_u32 custom_memory_addrs[MAX_CUSTOM_MEMORY_ADDRS];
uae_u32 custom_memory_sizes[MAX_CUSTOM_MEMORY_ADDRS];
uae_u32 custom_memory_mask[MAX_CUSTOM_MEMORY_ADDRS];
int uaeboard;
bool uaeboard_nodiag;
int uaeboard_order;
bool kickshifter;
bool filesys_no_uaefsdb;
bool filesys_custom_uaefsdb;
bool mmkeyboard;
int uae_hide;
bool clipboard_sharing;
bool native_code;
bool uae_hide_autoconfig;
int z3_mapping_mode;
bool autoconfig_custom_sort;
bool obs_sound_toccata;
bool obs_sound_toccata_mixer;
bool obs_sound_es1370;
bool obs_sound_fm801;
int mountitems;
struct uaedev_config_data mountconfig[MOUNT_CONFIG_SIZE];
int nr_floppies;
struct floppyslot floppyslots[4];
bool floppy_read_only;
bool harddrive_read_only;
TCHAR dfxlist[MAX_SPARE_DRIVES][MAX_DPATH];
int dfxclickvolume_disk[4];
int dfxclickvolume_empty[4];
int dfxclickchannelmask;
TCHAR luafiles[MAX_LUA_STATES][MAX_DPATH];
/* Target specific options */
bool win32_logfile;
bool win32_notaskbarbutton;
bool win32_nonotificationicon;
bool win32_gui_alwaysontop;
bool win32_main_alwaysontop;
bool win32_powersavedisabled;
bool win32_minimize_inactive;
bool win32_capture_always;
int win32_statusbar;
bool win32_start_minimized;
bool win32_start_uncaptured;
int win32_active_capture_priority;
bool win32_active_nocapture_pause;
bool win32_active_nocapture_nosound;
int win32_inactive_priority;
bool win32_inactive_pause;
bool win32_inactive_nosound;
int win32_inactive_input;
int win32_iconified_priority;
bool win32_iconified_pause;
bool win32_iconified_nosound;
int win32_iconified_input;
bool win32_rtgmatchdepth;
bool win32_rtgallowscaling;
int win32_rtgscaleaspectratio;
int win32_rtgvblankrate;
bool win32_borderless;
bool win32_ctrl_F11_is_quit;
bool win32_automount_removable;
bool win32_automount_drives;
bool win32_automount_cddrives;
bool win32_automount_netdrives;
bool win32_automount_removabledrives;
int win32_midioutdev;
int win32_midiindev;
bool win32_midirouter;
int win32_uaescsimode;
int win32_soundcard;
int win32_samplersoundcard;
bool win32_norecyclebin;
int win32_guikey;
int win32_kbledmode;
bool win32_blankmonitors;
TCHAR win32_commandpathstart[MAX_DPATH];
TCHAR win32_commandpathend[MAX_DPATH];
TCHAR win32_parjoyport0[MAX_DPATH];
TCHAR win32_parjoyport1[MAX_DPATH];
TCHAR win32_guipage[32];
TCHAR win32_guiactivepage[32];
bool win32_filesystem_mangle_reserved_names;
bool win32_shutdown_notification;
bool win32_warn_exit;
bool right_control_is_right_win_key;
#ifdef WITH_SLIRP
struct slirp_redir slirp_redirs[MAX_SLIRP_REDIRS];
#endif
int statecapturerate, statecapturebuffersize;
int aviout_width, aviout_height, aviout_xoffset, aviout_yoffset;
int screenshot_width, screenshot_height, screenshot_xoffset, screenshot_yoffset;
int screenshot_min_width, screenshot_min_height;
int screenshot_max_width, screenshot_max_height;
int screenshot_output_width, screenshot_output_height;
int screenshot_xmult, screenshot_ymult;
/* input */
struct jport jports[MAX_JPORTS];
struct jport_custom jports_custom[MAX_JPORTS_CUSTOM];
int input_selected_setting;
int input_joymouse_multiplier;
int input_joymouse_deadzone;
int input_joystick_deadzone;
int input_joymouse_speed;
int input_analog_joystick_mult;
int input_analog_joystick_offset;
int input_autofire_linecnt;
int input_mouse_speed;
int input_tablet;
bool tablet_library;
int input_mouse_untrap;
int input_magic_mouse_cursor;
int input_keyboard_type;
int input_autoswitch;
struct uae_input_device joystick_settings[MAX_INPUT_SETTINGS][MAX_INPUT_DEVICES];
struct uae_input_device mouse_settings[MAX_INPUT_SETTINGS][MAX_INPUT_DEVICES];
struct uae_input_device keyboard_settings[MAX_INPUT_SETTINGS][MAX_INPUT_DEVICES];
struct uae_input_device internalevent_settings[MAX_INPUT_SETTINGS][INTERNALEVENT_COUNT];
TCHAR input_config_name[GAMEPORT_INPUT_SETTINGS][256];
int dongle;
int input_contact_bounce;
int input_device_match_mask;
};
extern int config_changed;
extern void config_check_vsync (void);
extern void set_config_changed (void);
/* Contains the filename of .uaerc */
extern TCHAR optionsfile[];
extern void save_options (struct zfile *, struct uae_prefs *, int);
extern void cfgfile_write (struct zfile *, const TCHAR *option, const TCHAR *format,...);
extern void cfgfile_dwrite (struct zfile *, const TCHAR *option, const TCHAR *format,...);
extern void cfgfile_target_write (struct zfile *, const TCHAR *option, const TCHAR *format,...);
extern void cfgfile_target_dwrite (struct zfile *, const TCHAR *option, const TCHAR *format,...);
extern void cfgfile_write_bool (struct zfile *f, const TCHAR *option, bool b);
extern void cfgfile_dwrite_bool (struct zfile *f,const TCHAR *option, bool b);
extern void cfgfile_target_write_bool (struct zfile *f, const TCHAR *option, bool b);
extern void cfgfile_target_dwrite_bool (struct zfile *f, const TCHAR *option, bool b);
extern void cfgfile_write_str(struct zfile *f, const TCHAR *option, const TCHAR *value);
extern void cfgfile_write_str_escape(struct zfile *f, const TCHAR *option, const TCHAR *value);
extern void cfgfile_dwrite_str(struct zfile *f, const TCHAR *option, const TCHAR *value);
extern void cfgfile_dwrite_str_escape(struct zfile *f, const TCHAR *option, const TCHAR *value);
extern void cfgfile_target_write_str(struct zfile *f, const TCHAR *option, const TCHAR *value);
extern void cfgfile_target_dwrite_str(struct zfile *f, const TCHAR *option, const TCHAR *value);
extern void cfgfile_target_dwrite_str_escape(struct zfile *f, const TCHAR *option, const TCHAR *value);
extern void cfgfile_backup (const TCHAR *path);
extern struct uaedev_config_data *add_filesys_config (struct uae_prefs *p, int index, struct uaedev_config_info*);
extern bool get_hd_geometry (struct uaedev_config_info *);
extern void uci_set_defaults (struct uaedev_config_info *uci, bool rdb);
extern void error_log (const TCHAR*, ...);
extern TCHAR *get_error_log (void);
extern bool is_error_log (void);
extern void default_prefs (struct uae_prefs *, bool, int);
extern void discard_prefs (struct uae_prefs *, int);
extern void copy_prefs(struct uae_prefs *src, struct uae_prefs *dst);
int parse_cmdline_option (struct uae_prefs *, TCHAR, const TCHAR*);
extern int cfgfile_yesno(const TCHAR *option, const TCHAR *value, const TCHAR *name, bool *location);
extern int cfgfile_intval(const TCHAR *option, const TCHAR *value, const TCHAR *name, int *location, int scale);
extern int cfgfile_strval(const TCHAR *option, const TCHAR *value, const TCHAR *name, int *location, const TCHAR *table[], int more);
extern int cfgfile_string(const TCHAR *option, const TCHAR *value, const TCHAR *name, TCHAR *location, int maxsz);
extern int cfgfile_string_escape(const TCHAR *option, const TCHAR *value, const TCHAR *name, TCHAR *location, int maxsz);
extern bool cfgfile_option_find(const TCHAR *s, const TCHAR *option);
extern TCHAR *cfgfile_option_get(const TCHAR *s, const TCHAR *option);
extern TCHAR *cfgfile_subst_path(const TCHAR *path, const TCHAR *subst, const TCHAR *file);
extern TCHAR *target_expand_environment (const TCHAR *path, TCHAR *out, int maxlen);
extern int target_parse_option (struct uae_prefs *, const TCHAR *option, const TCHAR *value);
extern void target_save_options (struct zfile*, struct uae_prefs *);
extern void target_default_options (struct uae_prefs *, int type);
extern void target_fixup_options (struct uae_prefs *);
extern int target_cfgfile_load (struct uae_prefs *, const TCHAR *filename, int type, int isdefault);
extern void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type);
extern int target_get_display (const TCHAR*);
extern const TCHAR *target_get_display_name (int, bool);
extern void target_multipath_modified(struct uae_prefs *);
extern void cfgfile_resolve_path_out_load(const TCHAR *path, TCHAR *out, int size, int type);
extern void cfgfile_resolve_path_load(TCHAR *path, int size, int type);
extern void cfgfile_resolve_path_out_save(const TCHAR *path, TCHAR *out, int size, int type);
extern void cfgfile_resolve_path_save(TCHAR *path, int size, int type);
extern struct uae_prefs *cfgfile_open(const TCHAR *filename, int *type);
extern void cfgfile_close(struct uae_prefs *p);
extern int cfgfile_load (struct uae_prefs *p, const TCHAR *filename, int *type, int ignorelink, int userconfig);
extern int cfgfile_save (struct uae_prefs *p, const TCHAR *filename, int);
extern void cfgfile_parse_line (struct uae_prefs *p, TCHAR *, int);
extern void cfgfile_parse_lines (struct uae_prefs *p, const TCHAR *, int);
extern int cfgfile_parse_option (struct uae_prefs *p, const TCHAR *option, TCHAR *value, int);
extern int cfgfile_get_description (struct uae_prefs *p, const TCHAR *filename, TCHAR *description, TCHAR *category, TCHAR *tags, TCHAR *hostlink, TCHAR *hardwarelink, int *type);
extern void cfgfile_show_usage (void);
extern int cfgfile_searchconfig(const TCHAR *in, int index, TCHAR *out, int outsize);
extern uae_u32 cfgfile_uaelib(TrapContext *ctx, int mode, uae_u32 name, uae_u32 dst, uae_u32 maxlen);
extern uae_u32 cfgfile_uaelib_modify(TrapContext *ctx, uae_u32 mode, uae_u32 parms, uae_u32 size, uae_u32 out, uae_u32 outsize);
extern uae_u32 cfgfile_modify (uae_u32 index, const TCHAR *parms, uae_u32 size, TCHAR *out, uae_u32 outsize);
extern void cfgfile_addcfgparam (TCHAR *);
extern int built_in_prefs (struct uae_prefs *p, int model, int config, int compa, int romcheck);
extern int built_in_chipset_prefs (struct uae_prefs *p);
extern int cmdlineparser (const TCHAR *s, TCHAR *outp[], int max);
extern void fixup_prefs_dimensions (struct uae_prefs *prefs);
extern void fixup_prefs (struct uae_prefs *prefs, bool userconfig);
extern void fixup_cpu (struct uae_prefs *prefs);
extern void cfgfile_compatibility_romtype(struct uae_prefs *p);
extern void cfgfile_compatibility_rtg(struct uae_prefs *p);
extern bool cfgfile_detect_art(struct uae_prefs *p, TCHAR *path);
extern const TCHAR *cfgfile_getconfigdata(int *len);
extern bool cfgfile_createconfigstore(struct uae_prefs *p);
extern void cfgfile_get_shader_config(struct uae_prefs *p, int rtg);
extern void check_prefs_changed_custom (void);
extern void check_prefs_changed_cpu (void);
extern void check_prefs_changed_audio (void);
extern void check_prefs_changed_cd (void);
extern int check_prefs_changed_gfx (void);
extern struct uae_prefs currprefs, changed_prefs;
extern int machdep_init (void);
extern void machdep_free (void);
#endif /* UAE_OPTIONS_H */