|
|
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);
1.1.1.5 root 221:
222: extern void check_prefs_changed_custom (void);
223: extern void check_prefs_changed_cpu (void);
224: extern void check_prefs_changed_audio (void);
225: extern int check_prefs_changed_gfx (void);
226:
1.1.1.3 root 227: extern struct uae_prefs currprefs, changed_prefs;
228:
1.1.1.26 root 229: extern struct gfx_params *curr_gfx;
230:
1.1.1.3 root 231: extern void machdep_init (void);
1.1 root 232:
233: /* AIX doesn't think it is Unix. Neither do I. */
234: #if defined(_ALL_SOURCE) || defined(_AIX)
235: #undef __unix
236: #define __unix
237: #endif
238:
1.1.1.2 root 239: #define MAX_COLOR_MODES 5
1.1 root 240:
241: /* #define NEED_TO_DEBUG_BADLY */
242:
1.1.1.2 root 243: #if !defined(USER_PROGRAMS_BEHAVE)
244: #define USER_PROGRAMS_BEHAVE 0
245: #endif
246:
1.1.1.3 root 247: /* Some memsets which know that they can safely overwrite some more memory
248: * at both ends and use that knowledge to align the pointers. */
249:
1.1.1.2 root 250: #define QUADRUPLIFY(c) (((c) | ((c) << 8)) | (((c) | ((c) << 8)) << 16))
251:
252: /* When you call this routine, bear in mind that it rounds the bounds and
253: * may need some padding for the array. */
254:
255: #define fuzzy_memset(p, c, o, l) fuzzy_memset_1 ((p), QUADRUPLIFY (c), (o) & ~3, ((l) + 4) >> 2)
1.1.1.10 root 256: STATIC_INLINE void fuzzy_memset_1 (void *p, uae_u32 c, int offset, int len)
1.1.1.2 root 257: {
1.1.1.3 root 258: uae_u32 *p2 = (uae_u32 *)((char *)p + offset);
1.1.1.2 root 259: int a = len & 7;
260: len >>= 3;
261: switch (a) {
262: case 7: p2--; goto l1;
263: case 6: p2-=2; goto l2;
264: case 5: p2-=3; goto l3;
265: case 4: p2-=4; goto l4;
266: case 3: p2-=5; goto l5;
267: case 2: p2-=6; goto l6;
268: case 1: p2-=7; goto l7;
1.1.1.3 root 269: case 0: if (!--len) return; break;
1.1.1.2 root 270: }
271:
272: for (;;) {
273: p2[0] = c;
274: l1:
275: p2[1] = c;
276: l2:
277: p2[2] = c;
278: l3:
279: p2[3] = c;
280: l4:
281: p2[4] = c;
282: l5:
283: p2[5] = c;
284: l6:
285: p2[6] = c;
286: l7:
287: p2[7] = c;
1.1.1.3 root 288:
1.1.1.2 root 289: if (!len)
290: break;
291: len--;
292: p2 += 8;
293: }
294: }
295:
1.1.1.9 root 296: /* This one knows it will never be asked to clear more than 32 bytes. Make sure you call this with a
297: constant for the length. */
1.1.1.3 root 298: #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 299: STATIC_INLINE void fuzzy_memset_le32_1 (void *p, uae_u32 c, int offset, int len)
1.1.1.2 root 300: {
1.1.1.3 root 301: uae_u32 *p2 = (uae_u32 *)((char *)p + offset);
1.1.1.2 root 302:
303: switch (len) {
304: 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;
305: 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;
306: case 7: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; p2[5] = c; p2[6] = c; break;
307: case 6: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; p2[5] = c; break;
308: case 5: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; break;
309: case 4: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; break;
310: case 3: p2[0] = c; p2[1] = c; p2[2] = c; break;
311: case 2: p2[0] = c; p2[1] = c; break;
312: case 1: p2[0] = c; break;
313: case 0: break;
314: default: printf("Hit the programmer.\n"); break;
315: }
316: }
317:
1.1.1.3 root 318: #if defined(AMIGA) && defined(__GNUC__)
319: #include "od-amiga/amiga-kludges.h"
320: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.