1 // BME main definitions header file
2 
3 #define GFX_SCANLINES 1
4 #define GFX_DOUBLESIZE 2
5 #define GFX_USE1PAGE 0
6 #define GFX_USE2PAGES 4
7 #define GFX_USE3PAGES 8
8 #define GFX_WAITVBLANK 16
9 #define GFX_FULLSCREEN 32
10 #define GFX_WINDOW 64
11 #define GFX_NOSWITCHING 128
12 #define GFX_USEDIBSECTION 256
13 
14 #define MOUSE_ALWAYS_VISIBLE 0
15 #define MOUSE_FULLSCREEN_HIDDEN 1
16 #define MOUSE_ALWAYS_HIDDEN 2
17 
18 #define MOUSEB_LEFT 1
19 #define MOUSEB_RIGHT 2
20 #define MOUSEB_MIDDLE 4
21 
22 #define JOY_LEFT 1
23 #define JOY_RIGHT 2
24 #define JOY_UP 4
25 #define JOY_DOWN 8
26 #define JOY_FIRE1 16
27 #define JOY_FIRE2 32
28 #define JOY_FIRE3 64
29 #define JOY_FIRE4 128
30 
31 #define LEFT 0
32 #define MIDDLE 128
33 #define RIGHT 255
34 
35 #define B_OFF 0
36 #define B_SOLID 1
37 #define B_NOTSOLID 2
38 
39 #define MONO 0
40 #define STEREO 1
41 #define EIGHTBIT 0
42 #define SIXTEENBIT 2
43 
44 #define VM_OFF 0
45 #define VM_ON 1
46 #define VM_ONESHOT 0
47 #define VM_LOOP 2
48 #define VM_16BIT 4
49 
50 #define KEY_BACKSPACE    SDLK_BACKSPACE
51 #define KEY_CAPSLOCK     SDLK_CAPSLOCK
52 #define KEY_ENTER        SDLK_RETURN
53 #define KEY_ESC          SDLK_ESCAPE
54 #define KEY_ALT          SDLK_LALT
55 #define KEY_CTRL         SDLK_LCTRL
56 #define KEY_LEFTCTRL     SDLK_LCTRL
57 #define KEY_RIGHTALT     SDLK_RALT
58 #define KEY_RIGHTCTRL    SDLK_RCTRL
59 #define KEY_LEFTSHIFT    SDLK_LSHIFT
60 #define KEY_RIGHTSHIFT   SDLK_RSHIFT
61 #define KEY_NUMLOCK      SDLK_NUMLOCK
62 #define KEY_SCROLLLOCK   SDLK_SCROLLOCK
63 #define KEY_SPACE        SDLK_SPACE
64 #define KEY_TAB          SDLK_TAB
65 #define KEY_F1           SDLK_F1
66 #define KEY_F2           SDLK_F2
67 #define KEY_F3           SDLK_F3
68 #define KEY_F4           SDLK_F4
69 #define KEY_F5           SDLK_F5
70 #define KEY_F6           SDLK_F6
71 #define KEY_F7           SDLK_F7
72 #define KEY_F8           SDLK_F8
73 #define KEY_F9           SDLK_F9
74 #define KEY_F10          SDLK_F10
75 #define KEY_F11          SDLK_F11
76 #define KEY_F12          SDLK_F12
77 #define KEY_A            SDLK_a
78 #define KEY_N            SDLK_n
79 #define KEY_B            SDLK_b
80 #define KEY_O            SDLK_o
81 #define KEY_C            SDLK_c
82 #define KEY_P            SDLK_p
83 #define KEY_D            SDLK_d
84 #define KEY_Q            SDLK_q
85 #define KEY_E            SDLK_e
86 #define KEY_R            SDLK_r
87 #define KEY_F            SDLK_f
88 #define KEY_S            SDLK_s
89 #define KEY_G            SDLK_g
90 #define KEY_T            SDLK_t
91 #define KEY_H            SDLK_h
92 #define KEY_U            SDLK_u
93 #define KEY_I            SDLK_i
94 #define KEY_V            SDLK_v
95 #define KEY_J            SDLK_j
96 #define KEY_W            SDLK_w
97 #define KEY_K            SDLK_k
98 #define KEY_X            SDLK_x
99 #define KEY_L            SDLK_l
100 #define KEY_Y            SDLK_y
101 #define KEY_M            SDLK_m
102 #define KEY_Z            SDLK_z
103 #define KEY_1            SDLK_1
104 #define KEY_2            SDLK_2
105 #define KEY_3            SDLK_3
106 #define KEY_4            SDLK_4
107 #define KEY_5            SDLK_5
108 #define KEY_6            SDLK_6
109 #define KEY_7            SDLK_7
110 #define KEY_8            SDLK_8
111 #define KEY_9            SDLK_9
112 #define KEY_0            SDLK_0
113 #define KEY_MINUS        SDLK_MINUS
114 #define KEY_EQUAL        SDLK_EQUALS
115 #define KEY_BRACKETL     SDLK_LEFTBRACKET
116 #define KEY_BRACKETR     SDLK_RIGHTBRACKET
117 #define KEY_SEMICOLON    SDLK_SEMICOLON
118 #define KEY_APOST1       SDLK_QUOTE
119 #define KEY_APOST2       SDLK_BACKQUOTE
120 #define KEY_COMMA        SDLK_COMMA
121 #define KEY_COLON        SDLK_PERIOD
122 #define KEY_PERIOD       SDLK_PERIOD
123 #define KEY_SLASH        SDLK_SLASH
124 #define KEY_BACKSLASH    SDLK_BACKSLASH
125 #define KEY_DEL          SDLK_DELETE
126 #define KEY_DOWN         SDLK_DOWN
127 #define KEY_END          SDLK_END
128 #define KEY_HOME         SDLK_HOME
129 #define KEY_INS          SDLK_INSERT
130 #define KEY_LEFT         SDLK_LEFT
131 #define KEY_PGDN         SDLK_PAGEDOWN
132 #define KEY_PGUP         SDLK_PAGEUP
133 #define KEY_RIGHT        SDLK_RIGHT
134 #define KEY_UP           SDLK_UP
135 #define KEY_WINDOWSL     SDLK_LSUPER
136 #define KEY_WINDOWSR     SDLK_RSUPER
137 #define KEY_MENU         SDLK_MENU
138 #define KEY_PAUSE        SDLK_PAUSE
139 #define KEY_KPDIVIDE     SDLK_KP_DIVIDE
140 #define KEY_KPMULTIPLY   SDLK_KP_MULTIPLY
141 #define KEY_KPPLUS       SDLK_KP_PLUS
142 #define KEY_KPMINUS      SDLK_KP_MINUS
143 #define KEY_KP0          SDLK_KP0
144 #define KEY_KP1          SDLK_KP1
145 #define KEY_KP2          SDLK_KP2
146 #define KEY_KP3          SDLK_KP3
147 #define KEY_KP4          SDLK_KP4
148 #define KEY_KP5          SDLK_KP5
149 #define KEY_KP6          SDLK_KP6
150 #define KEY_KP7          SDLK_KP7
151 #define KEY_KP8          SDLK_KP8
152 #define KEY_KP9          SDLK_KP9
153 #define KEY_KPUP         SDLK_KP8
154 #define KEY_KPDOWN       SDLK_KP2
155 #define KEY_KPLEFT       SDLK_KP4
156 #define KEY_KPRIGHT      SDLK_KP6
157 #define KEY_KPENTER      SDLK_KP_ENTER
158 #define KEY_KPEQUALS     SDLK_KP_EQUALS
159 #define KEY_KPPERIOD     SDLK_KP_PERIOD
160 
161 
162 typedef struct
163 {
164 	Sint8 *start;
165 	Sint8 *repeat;
166 	Sint8 *end;
167 	unsigned char voicemode;
168 } SAMPLE;
169 
170 typedef struct
171 {
172 	volatile Sint8 *pos;
173 	Sint8 *repeat;
174 	Sint8 *end;
175 	SAMPLE *smp;
176 	unsigned freq;
177 	volatile unsigned fractpos;
178 	int vol;
179 	int mastervol;
180 	unsigned panning;
181 	volatile unsigned voicemode;
182 } CHANNEL;
183 
184 typedef struct
185 {
186   unsigned rawcode;
187   char *name;
188 } KEY;
189 
190 typedef struct
191 {
192   Sint16 xsize;
193   Sint16 ysize;
194   Sint16 xhot;
195   Sint16 yhot;
196   Uint32 offset;
197 } SPRITEHEADER;
198 
199 typedef struct
200 {
201   Uint32 type;
202   Uint32 offset;
203 } BLOCKHEADER;
204 
205 typedef struct
206 {
207   Uint8 blocksname[13];
208   Uint8 palettename[13];
209 } MAPHEADER;
210 
211 typedef struct
212 {
213   Sint32 xsize;
214   Sint32 ysize;
215   Uint8 xdivisor;
216   Uint8 ydivisor;
217   Uint8 xwrap;
218   Uint8 ywrap;
219 } LAYERHEADER;
220 
221 extern int bme_error;
222