|
|
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.5 root 7: * Copyright 1995-98 Bernd Schmidt
1.1 root 8: */
9:
10: #define UAEMAJOR 0
1.1.1.5 root 11: #define UAEMINOR 8
1.1.1.7 ! root 12: #define UAESUBREV 7
1.1 root 13:
1.1.1.2 root 14: typedef enum { KBD_LANG_US, KBD_LANG_DE, KBD_LANG_SE, KBD_LANG_FR, KBD_LANG_IT, KBD_LANG_ES } KbdLang;
1.1 root 15:
1.1.1.5 root 16: extern long int version;
17:
18: struct uaedev_mount_info;
1.1.1.3 root 19:
1.1.1.7 ! root 20: struct strlist {
! 21: struct strlist *next;
! 22: char *str;
! 23: };
! 24:
1.1.1.3 root 25: struct uae_prefs {
1.1.1.7 ! root 26: struct strlist *unknown_lines;
! 27:
! 28: char description[256];
! 29:
1.1.1.3 root 30: int framerate;
31: int illegal_mem;
32: int no_xhair;
33: int use_serial;
34: int serial_demand;
35: int parallel_demand;
36: int automount_uaedev;
1.1.1.7 ! root 37: int use_gfxlib;
! 38:
! 39: int start_debugger;
! 40: int start_gui;
1.1.1.3 root 41:
1.1.1.7 ! root 42: int jport0;
! 43: int jport1;
1.1.1.3 root 44: KbdLang keyboard_lang;
45: int allow_save;
46: int emul_accuracy;
47: int test_drawing_speed;
48:
49: int produce_sound;
50: int stereo;
51: int sound_bits;
52: int sound_freq;
53: int sound_minbsiz;
54: int sound_maxbsiz;
1.1.1.7 ! root 55: int sound_pri_time;
! 56: int sound_pri_cutoff;
1.1.1.3 root 57:
58: int gfx_width;
59: int gfx_height;
60: int gfx_lores;
61: int gfx_linedbl;
62: int gfx_correct_aspect;
1.1.1.5 root 63: int gfx_afullscreen;
64: int gfx_pfullscreen;
1.1.1.3 root 65: int gfx_xcenter;
66: int gfx_ycenter;
67: int color_mode;
68:
69: int blits_32bit_enabled;
70: int immediate_blits;
71:
72: char df[4][256];
1.1.1.7 ! root 73: char romfile[256];
! 74: char keyfile[256];
! 75: char prtname[256];
! 76:
! 77: char path_floppy[256];
! 78: char path_hardfile[256];
! 79: char path_rom[256];
1.1.1.3 root 80:
81: int m68k_speed;
82: int cpu_level;
83: int cpu_compatible;
84: int address_space_24;
1.1.1.5 root 85:
86: uae_u32 z3fastmem_size;
87: uae_u32 fastmem_size;
88: uae_u32 chipmem_size;
89: uae_u32 bogomem_size;
90: uae_u32 a3000mem_size;
91: uae_u32 gfxmem_size;
1.1.1.7 ! root 92:
1.1.1.5 root 93: struct uaedev_mount_info *mountinfo;
1.1.1.7 ! root 94:
! 95: /* Target specific options */
! 96: int x11_use_low_bandwidth;
! 97: int x11_use_mitshm;
! 98: int x11_use_dgamode;
! 99: int x11_hide_cursor;
! 100: int svga_no_linear;
1.1.1.3 root 101: };
102:
1.1.1.7 ! root 103: /* Contains the filename of .uaerc */
! 104: extern char optionsfile[];
! 105: extern void save_options (FILE *, struct uae_prefs *);
! 106:
! 107: extern void default_prefs (struct uae_prefs *);
! 108: extern void discard_prefs (struct uae_prefs *);
! 109:
! 110: extern int cfgfile_yesno (char *option, char *value, char *name, int *location);
! 111: extern int cfgfile_intval (char *option, char *value, char *name, int *location, int scale);
! 112: extern int cfgfile_strval (char *option, char *value, char *name, int *location, const char *table[], int more);
! 113: extern int cfgfile_string (char *option, char *value, char *name, char *location, int maxsz);
! 114: extern char *cfgfile_subst_path (const char *path, const char *subst, const char *file);
! 115:
! 116: extern int target_parse_option (struct uae_prefs *, char *option, char *value);
! 117: extern void target_save_options (FILE *, struct uae_prefs *);
! 118:
! 119: extern int cfgfile_load (struct uae_prefs *, const char *filename);
! 120: extern int cfgfile_save (struct uae_prefs *, const char *filename);
! 121: struct mount_data;
! 122: extern void cfgfile_parse_line (struct uae_prefs *p, char *, struct mount_data **);
! 123: extern int cfgfile_parse_option (struct uae_prefs *p, char *option, char *value,
! 124: struct mount_data **);
! 125: extern int cfgfile_get_description (const char *filename, char *description);
! 126: extern void cfgfile_show_usage (void);
! 127:
1.1.1.5 root 128: extern void fixup_prefs_dimensions (struct uae_prefs *prefs);
129:
130: extern void check_prefs_changed_custom (void);
131: extern void check_prefs_changed_cpu (void);
132: extern void check_prefs_changed_audio (void);
133: extern int check_prefs_changed_gfx (void);
134:
1.1.1.7 ! root 135: #define JSEM_DECODEVAL(n,v) ((n) == 0 ? (v)->jport0 : (v)->jport1)
! 136: /* Determine how port n is configured */
1.1.1.3 root 137: #define JSEM_ISJOY0(n,v) (JSEM_DECODEVAL(n,v) == 0)
138: #define JSEM_ISJOY1(n,v) (JSEM_DECODEVAL(n,v) == 1)
139: #define JSEM_ISMOUSE(n,v) (JSEM_DECODEVAL(n,v) == 2)
140: #define JSEM_ISNUMPAD(n,v) (JSEM_DECODEVAL(n,v) == 3)
141: #define JSEM_ISCURSOR(n,v) (JSEM_DECODEVAL(n,v) == 4)
142: #define JSEM_ISSOMEWHEREELSE(n,v) (JSEM_DECODEVAL(n,v) == 5)
143: extern const char *gameport_state (int n);
144:
145: extern struct uae_prefs currprefs, changed_prefs;
146:
1.1.1.5 root 147: #if __GNUC__ - 1 > 1 || __GNUC_MINOR__ - 1 > 6
148: extern void write_log (const char *, ...) __attribute__ ((format (printf, 1, 2)));
149: #else
150: extern void write_log (const char *, ...);
151: #endif
152:
1.1.1.3 root 153: extern void machdep_init (void);
1.1 root 154:
155: /* AIX doesn't think it is Unix. Neither do I. */
156: #if defined(_ALL_SOURCE) || defined(_AIX)
157: #undef __unix
158: #define __unix
159: #endif
160:
1.1.1.3 root 161: extern char romfile[], keyfile[], prtname[], sername[];
162:
163: extern int cloanto_rom;
1.1 root 164:
1.1.1.2 root 165: #define MAX_COLOR_MODES 5
1.1 root 166:
1.1.1.2 root 167: extern int fast_memcmp(const void *foo, const void *bar, int len);
168: extern int memcmpy(void *foo, const void *bar, int len);
1.1 root 169:
170: /*
171: * You can specify numbers from 0 to 5 here. It is possible that higher
172: * numbers will make the CPU emulation slightly faster, but if the setting
173: * is too high, you will run out of memory while compiling.
174: * Best to leave this as it is.
175: */
176: #define CPU_EMU_SIZE 0
177:
178: /* #define NEED_TO_DEBUG_BADLY */
179:
1.1.1.2 root 180: #if !defined(USER_PROGRAMS_BEHAVE)
181: #define USER_PROGRAMS_BEHAVE 0
182: #endif
183:
1.1.1.3 root 184: /* Some memsets which know that they can safely overwrite some more memory
185: * at both ends and use that knowledge to align the pointers. */
186:
1.1.1.2 root 187: #define QUADRUPLIFY(c) (((c) | ((c) << 8)) | (((c) | ((c) << 8)) << 16))
188:
189: /* When you call this routine, bear in mind that it rounds the bounds and
190: * may need some padding for the array. */
191:
192: #define fuzzy_memset(p, c, o, l) fuzzy_memset_1 ((p), QUADRUPLIFY (c), (o) & ~3, ((l) + 4) >> 2)
1.1.1.3 root 193: static __inline__ void fuzzy_memset_1 (void *p, uae_u32 c, int offset, int len)
1.1.1.2 root 194: {
1.1.1.3 root 195: uae_u32 *p2 = (uae_u32 *)((char *)p + offset);
1.1.1.2 root 196: int a = len & 7;
197: len >>= 3;
198: switch (a) {
199: case 7: p2--; goto l1;
200: case 6: p2-=2; goto l2;
201: case 5: p2-=3; goto l3;
202: case 4: p2-=4; goto l4;
203: case 3: p2-=5; goto l5;
204: case 2: p2-=6; goto l6;
205: case 1: p2-=7; goto l7;
1.1.1.3 root 206: case 0: if (!--len) return; break;
1.1.1.2 root 207: }
208:
209: for (;;) {
210: p2[0] = c;
211: l1:
212: p2[1] = c;
213: l2:
214: p2[2] = c;
215: l3:
216: p2[3] = c;
217: l4:
218: p2[4] = c;
219: l5:
220: p2[5] = c;
221: l6:
222: p2[6] = c;
223: l7:
224: p2[7] = c;
1.1.1.3 root 225:
1.1.1.2 root 226: if (!len)
227: break;
228: len--;
229: p2 += 8;
230: }
231: }
232:
1.1.1.3 root 233: #define fuzzy_memset_le32(p, c, o, l) fuzzy_memset_le32_1 ((p), QUADRUPLIFY (c), (o) & ~3, ((l) + 7) >> 2)
234: static __inline__ void fuzzy_memset_le32_1 (void *p, uae_u32 c, int offset, int len)
1.1.1.2 root 235: {
1.1.1.3 root 236: uae_u32 *p2 = (uae_u32 *)((char *)p + offset);
1.1.1.2 root 237:
238: switch (len) {
239: 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;
240: 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;
241: case 7: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; p2[5] = c; p2[6] = c; break;
242: case 6: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; p2[5] = c; break;
243: case 5: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; break;
244: case 4: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; break;
245: case 3: p2[0] = c; p2[1] = c; p2[2] = c; break;
246: case 2: p2[0] = c; p2[1] = c; break;
247: case 1: p2[0] = c; break;
248: case 0: break;
249: default: printf("Hit the programmer.\n"); break;
250: }
251: }
252:
1.1.1.3 root 253: #if defined(AMIGA) && defined(__GNUC__)
254: #include "od-amiga/amiga-kludges.h"
255: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.