17 # include <sys/nearptr.h>
22 # include <sys/stat.h>
24 # include <SDL/SDL_mixer.h>
28 #define KEY_PL1_LEFT 0xcb
29 #define KEY_PL1_RIGHT 0xcd
30 #define KEY_PL1_JUMP 0xc8
31 #define KEY_PL2_LEFT 0x1e
32 #define KEY_PL2_RIGHT 0x20
33 #define KEY_PL2_JUMP 0x11
35 #define KEY_PL1_LEFT SDLK_LEFT
36 #define KEY_PL1_RIGHT SDLK_RIGHT
37 #define KEY_PL1_JUMP SDLK_UP
38 #define KEY_PL2_LEFT SDLK_a
39 #define KEY_PL2_RIGHT SDLK_d
40 #define KEY_PL2_JUMP SDLK_w
41 #define KEY_PL3_LEFT SDLK_j
42 #define KEY_PL3_RIGHT SDLK_l
43 #define KEY_PL3_JUMP SDLK_i
44 #define KEY_PL4_LEFT SDLK_KP4
45 #define KEY_PL4_RIGHT SDLK_KP6
46 #define KEY_PL4_JUMP SDLK_KP8
50 #define NUM_OBJECTS 200
52 #define NUM_LEFTOVERS 50
57 #define OBJ_YEL_BUTFLY 3
58 #define OBJ_PINK_BUTFLY 4
61 #define OBJ_FLESH_TRACE 7
63 #define OBJ_ANIM_SPRING 0
64 #define OBJ_ANIM_SPLASH 1
65 #define OBJ_ANIM_SMOKE 2
66 #define OBJ_ANIM_YEL_BUTFLY_RIGHT 3
67 #define OBJ_ANIM_YEL_BUTFLY_LEFT 4
68 #define OBJ_ANIM_PINK_BUTFLY_RIGHT 5
69 #define OBJ_ANIM_PINK_BUTFLY_LEFT 6
70 #define OBJ_ANIM_FLESH_TRACE 7
83 #define SFX_JUMP_FREQ 15000
84 #define SFX_LAND_FREQ 15000
85 #define SFX_DEATH_FREQ 20000
86 #define SFX_SPRING_FREQ 15000
87 #define SFX_SPLASH_FREQ 12000
88 #define SFX_FLY_FREQ 12000
92 char joy_enabled, mouse_enabled, num_mouse_buttons;
93 char no_sound, no_gore, fireworks;
95 int draw_page, view_page;
105 char *pob_backbuf[2];
109 char enabled, dead_flag;
114 char direction, jump_ready, jump_abort, in_water;
115 int anim, frame, frame_tick, image;
148 char but1, but2, but3;
151 char datfile_name[256];
153 char *background_pic;
162 void steer_players(void);
163 void position_player(short player_num);
164 void fireworks(void);
165 void add_object(char type, short x, short y, long x_add, long y_add, short anim, short frame);
166 void update_objects(void);
167 char add_pob(char page, short x, short y, short image, char *pob_data);
168 void draw_pobs(int page);
169 void redraw_pob_backgrounds(int page);
170 char add_leftovers(int page, short x, short y, short image, char *pob_data);
171 void draw_leftovers(int page);
172 char init_level(short level);
173 void deinit_level(void);
174 char init_program(int argc, char *argv[]);
175 void deinit_program(void);
177 char calib_joy(char type);
178 void read_mouse(void);
179 unsigned short rnd(unsigned short max);
180 char read_level(void);
181 FILE *dat_open(char *file_name, char *dat_name, char *mode);
182 int dat_filelen(char *file_name, char *dat_name);
183 void write_calib_data(void);
189 char menu_init(void);
190 void menu_deinit(void);
195 void open_screen(void);
198 void get_block(char page, short x, short y, short width, short height, char *buffer);
199 void put_block(char page, short x, short y, short width, short height, char *buffer);
201 void put_text(char page, int x, int y, char *text, char align);
202 void put_pob(char page, short x, short y, short image, char *pob_data, char mask, char *mask_pic);
203 char pob_col(short x1, short y1, short image1, char *pob_data1, short x2, short y2, short image2, char *pob_data2);
204 short pob_width(short image, char *pob_data);
205 short pob_height(short image, char *pob_data);
206 short pob_hs_x(short image, char *pob_data);
207 short pob_hs_y(short image, char *pob_data);
208 char read_pcx(FILE * handle, char *buffer, long buf_len, char *pal);
212 void get_block(char page, long x, long y, long width, long height, char *buffer);
213 void put_block(char page, long x, long y, long width, long height, char *buffer);
216 long filelength(int handle);
217 void setpalette(int index, int count, char *palette);
218 void fillpalette(int red, int green, int blue);
219 void flippage(long page);
221 char *get_vgaptr(long, long, long);
226 extern char last_keys[50];
228 char hook_keyb_handler(void);
229 void remove_keyb_handler(void);
230 char key_pressed(unsigned char key);
233 char intr_sysupdate();
239 void load_song(FILE *, signed int);