|
|
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.6 ! root 12: #define UAESUBREV 6
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:
20: struct uae_prefs {
21: int framerate;
22: int illegal_mem;
23: int no_xhair;
24: int use_serial;
25: int serial_demand;
26: int parallel_demand;
27: int automount_uaedev;
28:
29: int fake_joystick;
30: KbdLang keyboard_lang;
31: int allow_save;
32: int emul_accuracy;
33: int test_drawing_speed;
34:
35: int produce_sound;
36: int stereo;
37: int sound_bits;
38: int sound_freq;
39: int sound_minbsiz;
40: int sound_maxbsiz;
41:
42: int gfx_width;
43: int gfx_height;
44: int gfx_lores;
45: int gfx_linedbl;
46: int gfx_correct_aspect;
1.1.1.5 root 47: int gfx_afullscreen;
48: int gfx_pfullscreen;
1.1.1.3 root 49: int gfx_xcenter;
50: int gfx_ycenter;
51: int color_mode;
52:
53: /* X11 specific options */
54: int use_low_bandwidth;
55: int use_mitshm;
1.1.1.5 root 56: int use_dgamode;
1.1.1.3 root 57:
58: int blits_32bit_enabled;
59: int immediate_blits;
60:
61: char df[4][256];
62:
63: int m68k_speed;
64: int cpu_level;
65: int cpu_compatible;
66: int address_space_24;
1.1.1.5 root 67:
68: uae_u32 z3fastmem_size;
69: uae_u32 fastmem_size;
70: uae_u32 chipmem_size;
71: uae_u32 bogomem_size;
72: uae_u32 a3000mem_size;
73: uae_u32 gfxmem_size;
74:
75: struct uaedev_mount_info *mountinfo;
1.1.1.3 root 76: };
77:
1.1.1.5 root 78: extern void fixup_prefs_dimensions (struct uae_prefs *prefs);
79:
80: extern void check_prefs_changed_custom (void);
81: extern void check_prefs_changed_cpu (void);
82: extern void check_prefs_changed_audio (void);
83: extern int check_prefs_changed_gfx (void);
84:
1.1.1.3 root 85: #define JSEM_DECODEVAL(n,v) (((v) >> (n*8)) & 255)
86: /* Determine how port n is configured with the value v in fake_joystick */
87: #define JSEM_ISJOY0(n,v) (JSEM_DECODEVAL(n,v) == 0)
88: #define JSEM_ISJOY1(n,v) (JSEM_DECODEVAL(n,v) == 1)
89: #define JSEM_ISMOUSE(n,v) (JSEM_DECODEVAL(n,v) == 2)
90: #define JSEM_ISNUMPAD(n,v) (JSEM_DECODEVAL(n,v) == 3)
91: #define JSEM_ISCURSOR(n,v) (JSEM_DECODEVAL(n,v) == 4)
92: #define JSEM_ISSOMEWHEREELSE(n,v) (JSEM_DECODEVAL(n,v) == 5)
93: extern const char *gameport_state (int n);
1.1.1.5 root 94: extern int parse_joy_spec (char *spec);
1.1.1.3 root 95:
96: /* These preferences make sense only at startup. */
97: extern int no_gui, use_debugger, use_gfxlib;
98:
99: extern struct uae_prefs currprefs, changed_prefs;
100:
1.1.1.5 root 101: #if __GNUC__ - 1 > 1 || __GNUC_MINOR__ - 1 > 6
102: extern void write_log (const char *, ...) __attribute__ ((format (printf, 1, 2)));
103: #else
104: extern void write_log (const char *, ...);
105: #endif
106:
1.1.1.3 root 107: extern void machdep_init (void);
1.1 root 108:
109: /* AIX doesn't think it is Unix. Neither do I. */
110: #if defined(_ALL_SOURCE) || defined(_AIX)
111: #undef __unix
112: #define __unix
113: #endif
114:
1.1.1.3 root 115: extern char romfile[], keyfile[], prtname[], sername[];
116:
117: extern int cloanto_rom;
1.1 root 118:
1.1.1.2 root 119: #define MAX_COLOR_MODES 5
1.1 root 120:
1.1.1.2 root 121: extern int fast_memcmp(const void *foo, const void *bar, int len);
122: extern int memcmpy(void *foo, const void *bar, int len);
1.1 root 123:
124: /*
125: * You can specify numbers from 0 to 5 here. It is possible that higher
126: * numbers will make the CPU emulation slightly faster, but if the setting
127: * is too high, you will run out of memory while compiling.
128: * Best to leave this as it is.
129: */
130: #define CPU_EMU_SIZE 0
131:
132: /* #define NEED_TO_DEBUG_BADLY */
133:
1.1.1.2 root 134: #if !defined(USER_PROGRAMS_BEHAVE)
135: #define USER_PROGRAMS_BEHAVE 0
136: #endif
137:
1.1.1.3 root 138: /* Some memsets which know that they can safely overwrite some more memory
139: * at both ends and use that knowledge to align the pointers. */
140:
1.1.1.2 root 141: #define QUADRUPLIFY(c) (((c) | ((c) << 8)) | (((c) | ((c) << 8)) << 16))
142:
143: /* When you call this routine, bear in mind that it rounds the bounds and
144: * may need some padding for the array. */
145:
146: #define fuzzy_memset(p, c, o, l) fuzzy_memset_1 ((p), QUADRUPLIFY (c), (o) & ~3, ((l) + 4) >> 2)
1.1.1.3 root 147: static __inline__ void fuzzy_memset_1 (void *p, uae_u32 c, int offset, int len)
1.1.1.2 root 148: {
1.1.1.3 root 149: uae_u32 *p2 = (uae_u32 *)((char *)p + offset);
1.1.1.2 root 150: int a = len & 7;
151: len >>= 3;
152: switch (a) {
153: case 7: p2--; goto l1;
154: case 6: p2-=2; goto l2;
155: case 5: p2-=3; goto l3;
156: case 4: p2-=4; goto l4;
157: case 3: p2-=5; goto l5;
158: case 2: p2-=6; goto l6;
159: case 1: p2-=7; goto l7;
1.1.1.3 root 160: case 0: if (!--len) return; break;
1.1.1.2 root 161: }
162:
163: for (;;) {
164: p2[0] = c;
165: l1:
166: p2[1] = c;
167: l2:
168: p2[2] = c;
169: l3:
170: p2[3] = c;
171: l4:
172: p2[4] = c;
173: l5:
174: p2[5] = c;
175: l6:
176: p2[6] = c;
177: l7:
178: p2[7] = c;
1.1.1.3 root 179:
1.1.1.2 root 180: if (!len)
181: break;
182: len--;
183: p2 += 8;
184: }
185: }
186:
1.1.1.3 root 187: #define fuzzy_memset_le32(p, c, o, l) fuzzy_memset_le32_1 ((p), QUADRUPLIFY (c), (o) & ~3, ((l) + 7) >> 2)
188: static __inline__ void fuzzy_memset_le32_1 (void *p, uae_u32 c, int offset, int len)
1.1.1.2 root 189: {
1.1.1.3 root 190: uae_u32 *p2 = (uae_u32 *)((char *)p + offset);
1.1.1.2 root 191:
192: switch (len) {
193: 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;
194: 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;
195: case 7: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; p2[5] = c; p2[6] = c; break;
196: case 6: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; p2[5] = c; break;
197: case 5: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; break;
198: case 4: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; break;
199: case 3: p2[0] = c; p2[1] = c; p2[2] = c; break;
200: case 2: p2[0] = c; p2[1] = c; break;
201: case 1: p2[0] = c; break;
202: case 0: break;
203: default: printf("Hit the programmer.\n"); break;
204: }
205: }
206:
1.1.1.3 root 207: #if defined(AMIGA) && defined(__GNUC__)
208: #include "od-amiga/amiga-kludges.h"
209: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.