--- uae/src/include/options.h 2018/04/24 16:41:12 1.1.1.4 +++ uae/src/include/options.h 2018/04/24 17:14:49 1.1.1.25 @@ -4,79 +4,187 @@ * Stuff * * Copyright 1995, 1996 Ed Hanway - * Copyright 1995-97 Bernd Schmidt + * Copyright 1995-2001 Bernd Schmidt */ #define UAEMAJOR 0 -#define UAEMINOR 7 -#define UAEURSAMINOR 6 +#define UAEMINOR 8 +#define UAESUBREV 25 -typedef enum { KBD_LANG_US, KBD_LANG_DE, KBD_LANG_SE, KBD_LANG_FR, KBD_LANG_IT, KBD_LANG_ES } KbdLang; +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 int version; +extern long int version; + +struct uaedev_mount_info; + +struct strlist { + struct strlist *next; + char *str; +}; + +/* maximum number native input devices supported (single type) */ +#define MAX_INPUT_DEVICES 6 +/* 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 MAX_INPUT_SUB_EVENT 4 +#define MAX_INPUT_SIMULTANEOUS_KEYS 4 + +struct uae_input_device { + char *name; + uae_s16 eventid[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT]; + char *custom[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT]; + uae_u16 flags[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT]; + uae_s16 extra[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SIMULTANEOUS_KEYS]; + uae_u8 enabled; +}; struct uae_prefs { - int framerate; + struct strlist *unknown_lines; + + char description[256]; + char info[256]; + int illegal_mem; int no_xhair; int use_serial; int serial_demand; int parallel_demand; - int automount_uaedev; + int use_gfxlib; + int socket_emu; + + int start_debugger; + int start_gui; - int fake_joystick; KbdLang keyboard_lang; int allow_save; int emul_accuracy; int test_drawing_speed; int produce_sound; - int stereo; + int sound_stereo; + int mixed_stereo; int sound_bits; int sound_freq; int sound_minbsiz; int sound_maxbsiz; + int sound_pri_time; + int sound_pri_cutoff; + int sound_interpol; + int gfx_framerate; int gfx_width; int gfx_height; int gfx_lores; int gfx_linedbl; int gfx_correct_aspect; + int gfx_afullscreen; + int gfx_pfullscreen; int gfx_xcenter; int gfx_ycenter; int color_mode; - /* X11 specific options */ - int use_low_bandwidth; - int use_mitshm; - int blits_32bit_enabled; int immediate_blits; + unsigned int chipset_mask; + int ntscmode; + int collision_level; + int leds_on_screen; char df[4][256]; + char romfile[256]; + char romextfile[256]; + char keyfile[256]; + char prtname[256]; + char sername[256]; + + char path_floppy[256]; + char path_hardfile[256]; + char path_rom[256]; int m68k_speed; int cpu_level; int cpu_compatible; int address_space_24; -}; -#define JSEM_DECODEVAL(n,v) (((v) >> (n*8)) & 255) -/* Determine how port n is configured with the value v in fake_joystick */ -#define JSEM_ISJOY0(n,v) (JSEM_DECODEVAL(n,v) == 0) -#define JSEM_ISJOY1(n,v) (JSEM_DECODEVAL(n,v) == 1) -#define JSEM_ISMOUSE(n,v) (JSEM_DECODEVAL(n,v) == 2) -#define JSEM_ISNUMPAD(n,v) (JSEM_DECODEVAL(n,v) == 3) -#define JSEM_ISCURSOR(n,v) (JSEM_DECODEVAL(n,v) == 4) -#define JSEM_ISSOMEWHEREELSE(n,v) (JSEM_DECODEVAL(n,v) == 5) -extern const char *gameport_state (int n); + uae_u32 z3fastmem_size; + uae_u32 fastmem_size; + uae_u32 chipmem_size; + uae_u32 bogomem_size; + uae_u32 a3000mem_size; + uae_u32 gfxmem_size; + + int kickshifter; + + struct uaedev_mount_info *mountinfo; + + int nr_floppies; + int dfxtype[4]; + + /* Target specific options */ + int x11_use_low_bandwidth; + int x11_use_mitshm; + int x11_use_dgamode; + int x11_hide_cursor; + int svga_no_linear; + int win32_middle_mouse; + int win32_logfile; + int win32_iconified_nospeed; + int win32_iconified_nosound; + int win32_no_overlay; /* If this is set, we won't try and use any RGB overlays */ + int win32_automount_drives; + + int curses_reverse_video; + + int jport0; + int jport1; + int input_selected_setting; + int input_joymouse_multiplier; + int input_joymouse_deadzone; + int input_joystick_deadzone; + int input_joymouse_speed; + int input_autofire_framecnt; + int input_mouse_speed; + struct uae_input_device joystick_settings[MAX_INPUT_SETTINGS + 1][MAX_INPUT_DEVICES]; + struct uae_input_device mouse_settings[MAX_INPUT_SETTINGS + 1][MAX_INPUT_DEVICES]; + struct uae_input_device keyboard_settings[MAX_INPUT_SETTINGS + 1][MAX_INPUT_DEVICES]; +}; -/* These preferences make sense only at startup. */ -extern int no_gui, use_debugger, use_gfxlib; +/* Contains the filename of .uaerc */ +extern char optionsfile[]; +extern void save_options (FILE *, struct uae_prefs *); + +extern void default_prefs (struct uae_prefs *); +extern void discard_prefs (struct uae_prefs *); + +extern int parse_cmdline_option (char, char *); + +extern int cfgfile_yesno (char *option, char *value, char *name, int *location); +extern int cfgfile_intval (char *option, char *value, char *name, int *location, int scale); +extern int cfgfile_strval (char *option, char *value, char *name, int *location, const char *table[], int more); +extern int cfgfile_string (char *option, char *value, char *name, char *location, int maxsz); +extern char *cfgfile_subst_path (const char *path, const char *subst, const char *file); + +extern int target_parse_option (struct uae_prefs *, char *option, char *value); +extern void target_save_options (FILE *, struct uae_prefs *); + +extern int cfgfile_load (struct uae_prefs *, const char *filename); +extern int cfgfile_save (struct uae_prefs *, const char *filename); +extern void cfgfile_parse_line (struct uae_prefs *p, char *); +extern int cfgfile_parse_option (struct uae_prefs *p, char *option, char *value); +extern int cfgfile_get_description (const char *filename, char *description); +extern void cfgfile_show_usage (void); + +extern void fixup_prefs_dimensions (struct uae_prefs *prefs); + +extern void check_prefs_changed_custom (void); +extern void check_prefs_changed_cpu (void); +extern void check_prefs_changed_audio (void); +extern int check_prefs_changed_gfx (void); extern struct uae_prefs currprefs, changed_prefs; -extern void write_log (const char *); extern void machdep_init (void); /* AIX doesn't think it is Unix. Neither do I. */ @@ -85,23 +193,8 @@ extern void machdep_init (void); #define __unix #endif -extern char romfile[], keyfile[], prtname[], sername[]; - -extern int cloanto_rom; - #define MAX_COLOR_MODES 5 -extern int fast_memcmp(const void *foo, const void *bar, int len); -extern int memcmpy(void *foo, const void *bar, int len); - -/* - * You can specify numbers from 0 to 5 here. It is possible that higher - * numbers will make the CPU emulation slightly faster, but if the setting - * is too high, you will run out of memory while compiling. - * Best to leave this as it is. - */ -#define CPU_EMU_SIZE 0 - /* #define NEED_TO_DEBUG_BADLY */ #if !defined(USER_PROGRAMS_BEHAVE) @@ -117,7 +210,7 @@ extern int memcmpy(void *foo, const void * may need some padding for the array. */ #define fuzzy_memset(p, c, o, l) fuzzy_memset_1 ((p), QUADRUPLIFY (c), (o) & ~3, ((l) + 4) >> 2) -static __inline__ void fuzzy_memset_1 (void *p, uae_u32 c, int offset, int len) +STATIC_INLINE void fuzzy_memset_1 (void *p, uae_u32 c, int offset, int len) { uae_u32 *p2 = (uae_u32 *)((char *)p + offset); int a = len & 7; @@ -157,8 +250,10 @@ static __inline__ void fuzzy_memset_1 (v } } +/* This one knows it will never be asked to clear more than 32 bytes. Make sure you call this with a + constant for the length. */ #define fuzzy_memset_le32(p, c, o, l) fuzzy_memset_le32_1 ((p), QUADRUPLIFY (c), (o) & ~3, ((l) + 7) >> 2) -static __inline__ void fuzzy_memset_le32_1 (void *p, uae_u32 c, int offset, int len) +STATIC_INLINE void fuzzy_memset_le32_1 (void *p, uae_u32 c, int offset, int len) { uae_u32 *p2 = (uae_u32 *)((char *)p + offset); @@ -177,36 +272,6 @@ static __inline__ void fuzzy_memset_le32 } } -/* - * Frame rate hack. Currently only implemented for Pentium (P6?) CPUs. - */ -#if !defined __GNUC_MINOR__ -#undef HAVE_RDTSC -#endif - -#undef HAVE_INLINE_RPT -#ifdef HAVE_RDTSC -#define FRAME_RATE_HACK - -typedef unsigned long frame_time_t; -static inline frame_time_t read_processor_time (void) -{ - frame_time_t foo; - /* Don't assume the assembler knows rdtsc */ - __asm__ __volatile__ (".byte 0x0f,0x31" : "=a" (foo) :); - return foo; -} -#define HAVE_INLINE_RPT -#else -typedef int frame_time_t; -#endif - -#if defined FRAME_RATE_HACK && !defined HAVE_INLINE_RPT -extern frame_time_t read_processor_time (void); -#endif -extern frame_time_t vsynctime, vsyncmintime; - #if defined(AMIGA) && defined(__GNUC__) #include "od-amiga/amiga-kludges.h" #endif -