1 /***********************************************************
2 * Rocks'n'Diamonds -- McDuffin Strikes Back! *
3 *----------------------------------------------------------*
4 * ©1995 Artsoft Development *
6 * 33659 Bielefeld-Senne *
7 * Telefon: (0521) 493245 *
8 * eMail: aeglos@valinor.owl.de *
9 * aeglos@uni-paderborn.de *
10 * q99492@pbhrzx.uni-paderborn.de *
11 *----------------------------------------------------------*
13 ***********************************************************/
20 #if SDL_MAJOR_VERSION >= 1 && SDL_MINOR_VERSION >= 1
21 #include "SDL_image.h"
22 #include "SDL_mixer.h"
23 #define USE_SDL_JOYSTICK
30 /* system dependent definitions */
32 #define PLATFORM_STRING "SDL"
33 #define FULLSCREEN_STATUS FULLSCREEN_AVAILABLE
36 /* SDL type definitions */
38 typedef SDL_Surface *Bitmap;
39 typedef SDL_Surface *DrawWindow;
40 typedef SDL_Surface *DrawBuffer;
44 typedef SDL_Event Event;
45 typedef SDL_MouseButtonEvent ButtonEvent;
46 typedef SDL_MouseMotionEvent MotionEvent;
47 typedef SDL_KeyboardEvent KeyEvent;
48 typedef SDL_Event ExposeEvent;
49 typedef SDL_Event FocusChangeEvent;
50 typedef SDL_Event ClientMessageEvent;
59 /* SDL symbol definitions */
63 #define EVENT_BUTTONPRESS SDL_MOUSEBUTTONDOWN
64 #define EVENT_BUTTONRELEASE SDL_MOUSEBUTTONUP
65 #define EVENT_MOTIONNOTIFY SDL_MOUSEMOTION
66 #define EVENT_KEYPRESS SDL_KEYDOWN
67 #define EVENT_KEYRELEASE SDL_KEYUP
68 #define EVENT_EXPOSE SDL_USEREVENT + 0
69 #define EVENT_FOCUSIN SDL_USEREVENT + 1
70 #define EVENT_FOCUSOUT SDL_USEREVENT + 2
71 #define EVENT_CLIENTMESSAGE SDL_QUIT
72 #define EVENT_MAPNOTIFY SDL_USEREVENT + 4
73 #define EVENT_UNMAPNOTIFY SDL_USEREVENT + 5
75 #define KEY_UNDEFINED SDLK_UNKNOWN
77 #define KEY_Return SDLK_RETURN
78 #define KEY_Escape SDLK_ESCAPE
80 #define KEY_Left SDLK_LEFT
81 #define KEY_Right SDLK_RIGHT
82 #define KEY_Up SDLK_UP
83 #define KEY_Down SDLK_DOWN
86 #define KEY_KP_Left SDLK_KP_LEFT
87 #define KEY_KP_Right SDLK_KP_RIGHT
88 #define KEY_KP_Up SDLK_KP_UP
89 #define KEY_KP_Down SDLK_KP_DOWN
92 #define KEY_KP_Enter SDLK_KP_ENTER
93 #define KEY_KP_Add SDLK_KP_PLUS
94 #define KEY_KP_Subtract SDLK_KP_MINUS
95 #define KEY_KP_Multiply SDLK_KP_MULTIPLY
96 #define KEY_KP_Divide SDLK_KP_DIVIDE
97 #define KEY_KP_Separator SDLK_KP_PERIOD
99 #define KEY_Shift_L SDLK_LSHIFT
100 #define KEY_Shift_R SDLK_RSHIFT
101 #define KEY_Control_L SDLK_LCTRL
102 #define KEY_Control_R SDLK_RCTRL
103 #define KEY_Meta_L SDLK_LMETA
104 #define KEY_Meta_R SDLK_RMETA
105 #define KEY_Alt_L SDLK_LALT
106 #define KEY_Alt_R SDLK_RALT
107 #define KEY_Super_L SDLK_LSUPER
108 #define KEY_Super_R SDLK_RSUPER
109 #define KEY_Mode_switch SDLK_MODE
110 #define KEY_Multi_key SDLK_RCTRL
112 #define KEY_BackSpace SDLK_BACKSPACE
113 #define KEY_Delete SDLK_DELETE
114 #define KEY_Insert SDLK_INSERT
115 #define KEY_Tab SDLK_TAB
116 #define KEY_Home SDLK_HOME
117 #define KEY_End SDLK_END
118 #define KEY_Page_Up SDLK_PAGEUP
119 #define KEY_Page_Down SDLK_PAGEDOWN
120 #define KEY_Menu SDLK_MENU
122 #define KEY_space SDLK_SPACE
123 #define KEY_exclam SDLK_EXCLAIM
124 #define KEY_quotedbl SDLK_QUOTEDBL
125 #define KEY_numbersign SDLK_HASH
126 #define KEY_dollar SDLK_DOLLAR
127 #define KEY_percent KEY_UNDEFINED /* undefined */
128 #define KEY_ampersand SDLK_AMPERSAND
129 #define KEY_apostrophe SDLK_QUOTE
130 #define KEY_parenleft SDLK_LEFTPAREN
131 #define KEY_parenright SDLK_RIGHTPAREN
132 #define KEY_asterisk SDLK_ASTERISK
133 #define KEY_plus SDLK_PLUS
134 #define KEY_comma SDLK_COMMA
135 #define KEY_minus SDLK_MINUS
136 #define KEY_period SDLK_PERIOD
137 #define KEY_slash SDLK_SLASH
139 #define KEY_colon SDLK_COLON
140 #define KEY_semicolon SDLK_SEMICOLON
141 #define KEY_less SDLK_LESS
142 #define KEY_equal SDLK_EQUALS
143 #define KEY_greater SDLK_GREATER
144 #define KEY_question SDLK_QUESTION
145 #define KEY_at SDLK_AT
147 #define KEY_bracketleft SDLK_LEFTBRACKET
148 #define KEY_backslash SDLK_BACKSLASH
149 #define KEY_bracketright SDLK_RIGHTBRACKET
150 #define KEY_asciicircum SDLK_CARET
151 #define KEY_underscore SDLK_UNDERSCORE
152 #define KEY_grave SDLK_BACKQUOTE
154 #define KEY_quoteleft KEY_UNDEFINED /* undefined */
155 #define KEY_braceleft KEY_UNDEFINED /* undefined */
156 #define KEY_bar KEY_UNDEFINED /* undefined */
157 #define KEY_braceright KEY_UNDEFINED /* undefined */
158 #define KEY_asciitilde KEY_UNDEFINED /* undefined */
160 #define KEY_Adiaeresis SDLK_WORLD_36
161 #define KEY_Odiaeresis SDLK_WORLD_54
162 #define KEY_Udiaeresis SDLK_WORLD_60
163 #define KEY_adiaeresis SDLK_WORLD_68
164 #define KEY_odiaeresis SDLK_WORLD_86
165 #define KEY_udiaeresis SDLK_WORLD_92
166 #define KEY_ssharp SDLK_WORLD_63
262 #define KEY_KP_0 SDLK_KP0
263 #define KEY_KP_1 SDLK_KP1
264 #define KEY_KP_2 SDLK_KP2
265 #define KEY_KP_3 SDLK_KP3
266 #define KEY_KP_4 SDLK_KP4
267 #define KEY_KP_5 SDLK_KP5
268 #define KEY_KP_6 SDLK_KP6
269 #define KEY_KP_7 SDLK_KP7
270 #define KEY_KP_8 SDLK_KP8
271 #define KEY_KP_9 SDLK_KP9
273 #define KEY_F1 SDLK_F1
274 #define KEY_F2 SDLK_F2
275 #define KEY_F3 SDLK_F3
276 #define KEY_F4 SDLK_F4
277 #define KEY_F5 SDLK_F5
278 #define KEY_F6 SDLK_F6
279 #define KEY_F7 SDLK_F7
280 #define KEY_F8 SDLK_F8
281 #define KEY_F9 SDLK_F9
282 #define KEY_F10 SDLK_F10
283 #define KEY_F11 SDLK_F11
284 #define KEY_F12 SDLK_F12
285 #define KEY_F13 SDLK_F13
286 #define KEY_F14 SDLK_F14
287 #define KEY_F15 SDLK_F15
288 #define KEY_F16 KEY_UNDEFINED
289 #define KEY_F17 KEY_UNDEFINED
290 #define KEY_F18 KEY_UNDEFINED
291 #define KEY_F19 KEY_UNDEFINED
292 #define KEY_F20 KEY_UNDEFINED
293 #define KEY_F21 KEY_UNDEFINED
294 #define KEY_F22 KEY_UNDEFINED
295 #define KEY_F23 KEY_UNDEFINED
296 #define KEY_F24 KEY_UNDEFINED
299 /* SDL function definitions */
301 inline void SDLCopyArea(SDL_Surface *, SDL_Surface *,
302 int, int, int, int, int, int);
303 inline void SDLFillRectangle(SDL_Surface *, int, int, int, int, unsigned int);
304 inline void SDLDrawSimpleLine(SDL_Surface *, int, int, int, int, unsigned int);