|
|
1.1 root 1: /*
2: * UAE - The Un*x Amiga Emulator
3: *
1.1.1.2 root 4: * Stuff
1.1 root 5: *
1.1.1.3 root 6: * Copyright 1995, 1996 Ed Hanway
1.1.1.17 root 7: * Copyright 1995-2001 Bernd Schmidt
1.1 root 8: */
9:
1.1.1.27! root 10: typedef enum { KBD_LANG_US, KBD_LANG_DK, KBD_LANG_DE, KBD_LANG_SE,
! 11: KBD_LANG_FR, KBD_LANG_IT, KBD_LANG_ES } KbdLang;
1.1 root 12:
1.1.1.5 root 13: extern long int version;
14:
15: struct uaedev_mount_info;
1.1.1.3 root 16:
1.1.1.7 root 17: struct strlist {
18: struct strlist *next;
19: char *str;
20: };
21:
1.1.1.27! root 22: struct config_list {
! 23: const char *filename;
! 24: const char *description;
! 25: const char *sortstr;
! 26: };
! 27:
! 28: extern struct config_list *predef_configs;
! 29: extern int n_predef_configs;
! 30:
! 31: struct uae_rect {
! 32: int w, h;
! 33: };
! 34:
! 35: extern struct uae_rect *gfx_fullscreen_modes, *gfx_windowed_modes;
! 36: extern int n_fullscreen_modes, n_windowed_modes;
! 37:
! 38: #define FILTER_SOUND_OFF 0
! 39: #define FILTER_SOUND_EMUL 1
! 40: #define FILTER_SOUND_ON 2
! 41:
! 42: #define FILTER_SOUND_TYPE_A500 0
! 43: #define FILTER_SOUND_TYPE_A1200 1
! 44:
1.1.1.25 root 45: /* maximum number native input devices supported (single type) */
46: #define MAX_INPUT_DEVICES 6
47: /* maximum number of native input device's buttons and axles supported */
48: #define MAX_INPUT_DEVICE_EVENTS 256
49: /* 4 different customization settings */
50: #define MAX_INPUT_SETTINGS 4
51: #define MAX_INPUT_SUB_EVENT 4
52: #define MAX_INPUT_SIMULTANEOUS_KEYS 4
53:
54: struct uae_input_device {
55: char *name;
56: uae_s16 eventid[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT];
57: char *custom[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT];
58: uae_u16 flags[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT];
59: uae_s16 extra[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SIMULTANEOUS_KEYS];
60: uae_u8 enabled;
61: };
62:
1.1.1.27! root 63: typedef enum { DRV_NONE = -1, DRV_35_DD = 0, DRV_35_HD, DRV_525_SD, DRV_35_DD_ESCOM } drive_type;
! 64:
! 65: enum { CP_GENERIC = 1, CP_CDTV, CP_CD32, CP_A500, CP_A500P, CP_A600, CP_A1000,
! 66: CP_A1200, CP_A2000, CP_A3000, CP_A3000T, CP_A4000, CP_A4000T };
! 67:
1.1.1.26 root 68: struct gfx_params {
69: int width;
70: int height;
71: int lores;
72: int linedbl;
73: int correct_aspect;
74: int xcenter;
75: int ycenter;
1.1.1.27! root 76: int leds_on_screen;
1.1.1.26 root 77: };
78:
1.1.1.3 root 79: struct uae_prefs {
1.1.1.7 root 80: struct strlist *unknown_lines;
81:
82: char description[256];
1.1.1.27! root 83: char sortstr[256];
1.1.1.18 root 84: char info[256];
1.1.1.7 root 85:
1.1.1.3 root 86: int illegal_mem;
87: int use_serial;
88: int serial_demand;
89: int parallel_demand;
1.1.1.7 root 90: int use_gfxlib;
1.1.1.9 root 91: int socket_emu;
1.1.1.7 root 92:
93: int start_debugger;
94: int start_gui;
1.1.1.3 root 95:
96: KbdLang keyboard_lang;
97: int allow_save;
98: int emul_accuracy;
99: int test_drawing_speed;
100:
101: int produce_sound;
1.1.1.23 root 102: int sound_stereo;
1.1.1.27! root 103: int sound_stereo_separation;
! 104: int sound_mixed_stereo_delay;
1.1.1.3 root 105: int sound_freq;
106: int sound_maxbsiz;
1.1.1.10 root 107: int sound_interpol;
1.1.1.27! root 108: int sound_filter;
! 109: int sound_filter_type;
1.1.1.3 root 110:
1.1.1.9 root 111: int gfx_framerate;
1.1.1.26 root 112: struct gfx_params gfx_w, gfx_f;
1.1.1.5 root 113: int gfx_afullscreen;
114: int gfx_pfullscreen;
1.1.1.3 root 115: int color_mode;
116:
117: int blits_32bit_enabled;
118: int immediate_blits;
1.1.1.9 root 119: unsigned int chipset_mask;
120: int ntscmode;
1.1.1.15 root 121: int collision_level;
1.1.1.27! root 122:
! 123: int cs_rtc;
! 124: int cs_ide;
! 125: int cs_a1000ram;
! 126: int cs_fatgaryrev;
! 127: int cs_ramseyrev;
1.1.1.3 root 128:
129: char df[4][256];
1.1.1.7 root 130: char romfile[256];
1.1.1.27! root 131: unsigned int rom_crc32;
1.1.1.21 root 132: char romextfile[256];
1.1.1.7 root 133: char keyfile[256];
134: char prtname[256];
1.1.1.18 root 135: char sername[256];
1.1.1.7 root 136:
137: char path_floppy[256];
138: char path_hardfile[256];
139: char path_rom[256];
1.1.1.3 root 140:
141: int m68k_speed;
1.1.1.27! root 142: int cpu_model;
! 143: int fpu_model;
1.1.1.3 root 144: int address_space_24;
1.1.1.9 root 145:
1.1.1.5 root 146: uae_u32 z3fastmem_size;
147: uae_u32 fastmem_size;
148: uae_u32 chipmem_size;
149: uae_u32 bogomem_size;
1.1.1.27! root 150: uae_u32 mbresmem_low_size;
! 151: uae_u32 mbresmem_high_size;
1.1.1.5 root 152: uae_u32 gfxmem_size;
1.1.1.7 root 153:
1.1.1.19 root 154: int kickshifter;
155:
1.1.1.5 root 156: struct uaedev_mount_info *mountinfo;
1.1.1.27! root 157: int bootrom;
1.1.1.7 root 158:
1.1.1.14 root 159: int nr_floppies;
1.1.1.27! root 160: drive_type dfxtype[4];
1.1.1.14 root 161:
1.1.1.7 root 162: /* Target specific options */
163: int x11_use_low_bandwidth;
164: int x11_use_mitshm;
165: int x11_use_dgamode;
166: int x11_hide_cursor;
167: int svga_no_linear;
1.1.1.9 root 168: int win32_middle_mouse;
169: int win32_logfile;
170: int win32_iconified_nospeed;
171: int win32_iconified_nosound;
1.1.1.19 root 172: int win32_no_overlay; /* If this is set, we won't try and use any RGB overlays */
173: int win32_automount_drives;
174:
1.1.1.11 root 175: int curses_reverse_video;
1.1.1.25 root 176:
177: int jport0;
178: int jport1;
179: int input_selected_setting;
180: int input_joymouse_multiplier;
181: int input_joymouse_deadzone;
182: int input_joystick_deadzone;
183: int input_joymouse_speed;
184: int input_autofire_framecnt;
185: int input_mouse_speed;
186: struct uae_input_device joystick_settings[MAX_INPUT_SETTINGS + 1][MAX_INPUT_DEVICES];
187: struct uae_input_device mouse_settings[MAX_INPUT_SETTINGS + 1][MAX_INPUT_DEVICES];
188: struct uae_input_device keyboard_settings[MAX_INPUT_SETTINGS + 1][MAX_INPUT_DEVICES];
1.1.1.3 root 189: };
190:
1.1.1.7 root 191: /* Contains the filename of .uaerc */
192: extern char optionsfile[];
1.1.1.27! root 193: extern void save_options (FILE *, const struct uae_prefs *);
1.1.1.7 root 194:
195: extern void default_prefs (struct uae_prefs *);
196: extern void discard_prefs (struct uae_prefs *);
197:
1.1.1.27! root 198: extern int parse_cmdline_option (struct uae_prefs *, char, char *);
1.1.1.10 root 199:
1.1.1.27! root 200: extern int cfgfile_yesno (const char *option, const char *value, const char *name, int *location);
! 201: extern int cfgfile_uintval (const char *option, const char *value, const char *name, unsigned int *location, int scale);
! 202: extern int cfgfile_intval (const char *option, const char *value, const char *name, int *location, int scale);
! 203: extern int cfgfile_strval (const char *option, const char *value, const char *name, int *location, const char *table[], int more);
! 204: extern int cfgfile_string (const char *option, const char *value, const char *name, char *location, int maxsz);
1.1.1.7 root 205: extern char *cfgfile_subst_path (const char *path, const char *subst, const char *file);
206:
1.1.1.27! root 207: extern int target_parse_option (struct uae_prefs *, const char *option, const char *value);
! 208: extern void target_save_options (FILE *, const struct uae_prefs *);
1.1.1.7 root 209:
210: extern int cfgfile_load (struct uae_prefs *, const char *filename);
211: extern int cfgfile_save (struct uae_prefs *, const char *filename);
1.1.1.8 root 212: extern void cfgfile_parse_line (struct uae_prefs *p, char *);
213: extern int cfgfile_parse_option (struct uae_prefs *p, char *option, char *value);
1.1.1.7 root 214: extern int cfgfile_get_description (const char *filename, char *description);
215: extern void cfgfile_show_usage (void);
216:
1.1.1.27! root 217: extern int cstype_from_prefs (struct uae_prefs *p);
! 218: extern void built_in_chipset_prefs (struct uae_prefs *p, int);
! 219:
! 220: extern int fixup_prefs_dimensions (struct gfx_params *, struct uae_rect *, int);
! 221: extern void fixup_cpu (struct uae_prefs *);
1.1.1.5 root 222:
223: extern void check_prefs_changed_custom (void);
224: extern void check_prefs_changed_cpu (void);
225: extern void check_prefs_changed_audio (void);
226: extern int check_prefs_changed_gfx (void);
227:
1.1.1.3 root 228: extern struct uae_prefs currprefs, changed_prefs;
229:
1.1.1.26 root 230: extern struct gfx_params *curr_gfx;
231:
1.1.1.3 root 232: extern void machdep_init (void);
1.1 root 233:
234: /* AIX doesn't think it is Unix. Neither do I. */
235: #if defined(_ALL_SOURCE) || defined(_AIX)
236: #undef __unix
237: #define __unix
238: #endif
239:
1.1.1.2 root 240: #define MAX_COLOR_MODES 5
1.1 root 241:
242: /* #define NEED_TO_DEBUG_BADLY */
243:
1.1.1.2 root 244: #if !defined(USER_PROGRAMS_BEHAVE)
245: #define USER_PROGRAMS_BEHAVE 0
246: #endif
247:
1.1.1.3 root 248: /* Some memsets which know that they can safely overwrite some more memory
249: * at both ends and use that knowledge to align the pointers. */
250:
1.1.1.2 root 251: #define QUADRUPLIFY(c) (((c) | ((c) << 8)) | (((c) | ((c) << 8)) << 16))
252:
253: /* When you call this routine, bear in mind that it rounds the bounds and
254: * may need some padding for the array. */
255:
256: #define fuzzy_memset(p, c, o, l) fuzzy_memset_1 ((p), QUADRUPLIFY (c), (o) & ~3, ((l) + 4) >> 2)
1.1.1.10 root 257: STATIC_INLINE void fuzzy_memset_1 (void *p, uae_u32 c, int offset, int len)
1.1.1.2 root 258: {
1.1.1.3 root 259: uae_u32 *p2 = (uae_u32 *)((char *)p + offset);
1.1.1.2 root 260: int a = len & 7;
261: len >>= 3;
262: switch (a) {
263: case 7: p2--; goto l1;
264: case 6: p2-=2; goto l2;
265: case 5: p2-=3; goto l3;
266: case 4: p2-=4; goto l4;
267: case 3: p2-=5; goto l5;
268: case 2: p2-=6; goto l6;
269: case 1: p2-=7; goto l7;
1.1.1.3 root 270: case 0: if (!--len) return; break;
1.1.1.2 root 271: }
272:
273: for (;;) {
274: p2[0] = c;
275: l1:
276: p2[1] = c;
277: l2:
278: p2[2] = c;
279: l3:
280: p2[3] = c;
281: l4:
282: p2[4] = c;
283: l5:
284: p2[5] = c;
285: l6:
286: p2[6] = c;
287: l7:
288: p2[7] = c;
1.1.1.3 root 289:
1.1.1.2 root 290: if (!len)
291: break;
292: len--;
293: p2 += 8;
294: }
295: }
296:
1.1.1.9 root 297: /* This one knows it will never be asked to clear more than 32 bytes. Make sure you call this with a
298: constant for the length. */
1.1.1.3 root 299: #define fuzzy_memset_le32(p, c, o, l) fuzzy_memset_le32_1 ((p), QUADRUPLIFY (c), (o) & ~3, ((l) + 7) >> 2)
1.1.1.10 root 300: STATIC_INLINE void fuzzy_memset_le32_1 (void *p, uae_u32 c, int offset, int len)
1.1.1.2 root 301: {
1.1.1.3 root 302: uae_u32 *p2 = (uae_u32 *)((char *)p + offset);
1.1.1.2 root 303:
304: switch (len) {
305: case 9: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; p2[5] = c; p2[6] = c; p2[7] = c; p2[8] = c; break;
306: case 8: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; p2[5] = c; p2[6] = c; p2[7] = c; break;
307: case 7: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; p2[5] = c; p2[6] = c; break;
308: case 6: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; p2[5] = c; break;
309: case 5: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; break;
310: case 4: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; break;
311: case 3: p2[0] = c; p2[1] = c; p2[2] = c; break;
312: case 2: p2[0] = c; p2[1] = c; break;
313: case 1: p2[0] = c; break;
314: case 0: break;
315: default: printf("Hit the programmer.\n"); break;
316: }
317: }
318:
1.1.1.3 root 319: #if defined(AMIGA) && defined(__GNUC__)
320: #include "od-amiga/amiga-kludges.h"
321: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.