3 #define NUM_MESSAGES 24
8 char menu_cur_pal[768];
10 char message[NUM_MESSAGES][70] = {
12 "by Brainchild Design in 1998.",
13 "Code by Mattias Brynervall.",
14 "Graphics by Martin Magnusson",
15 "and Andreas Brynervall.",
16 "Music by Anders Nilsson.",
17 "Visit our homepage at:",
18 "http://www.algonet.se/~mattiasb",
19 "Jump 'n Bump is e-mailware.",
20 "That means you're supposed to send us an e-mail!",
21 "Write for example where you're from",
22 "and what you thought about this game.",
23 "If you do that, you will greatly encourage us",
24 "to make more games for you!",
25 "Send your e-mail to: matbr656@student.liu.se",
26 "Oh, and by the way, there's a lot of secrets!",
27 "If you can't find them, you'd better ask us...",
28 "If you'd like to contact a specific member of BCD,",
29 "these are their e-mail addresses:",
30 "Andreas Brynervall: andreasb@acc.umu.se",
31 "Mattias Brynervall: matbr656@student.liu.se",
32 "Martin Magnusson: marma102@student.liu.se",
33 "Anders Nilsson: equel@swipnet.se",
40 char end_loop_flag, new_game_flag, fade_flag;
41 char mod_vol, mod_fade_direction;
43 int fade_dir, fade_count, fade_tick;
50 mod_fade_direction = 1;
51 dj_ready_mod(MOD_MENU);
52 dj_set_mod_volume(mod_vol);
53 dj_set_sfx_volume(64);
57 memset(fade_pal, 0, 48);
59 for (c1 = 0; c1 < 48; c1++)
60 outportb(0x3c9, fade_pal[c1]);
64 cur_message = NUM_MESSAGES - 1;
66 main_info.page_info[0].num_pobs = 0;
67 main_info.page_info[1].num_pobs = 0;
68 main_info.view_page = 0;
69 main_info.draw_page = 1;
71 esc_pressed = key_pressed(1);
72 end_loop_flag = new_game_flag = 0;
78 if (key_pressed(1) == 1 && esc_pressed == 0) {
81 memset(menu_pal, 0, 768);
82 mod_fade_direction = 0;
84 else if (key_pressed(1) == 0)
87 if (main_info.mouse_enabled == 1)
89 if (main_info.joy_enabled == 1)
91 for (c1 = 0; c1 < 4; c1++) {
92 if (end_loop_flag == 1 && new_game_flag == 1) {
93 if ( (player[c1].x >> 16) > (165 + c1 * 2) ) {
94 if (player[c1].x_add < 0)
95 player[c1].x_add += 16384;
97 player[c1].x_add += 12288;
98 if (player[c1].x_add > 98304L)
99 player[c1].x_add = 98304L;
100 player[c1].direction = 0;
101 if (player[c1].anim == 0) {
103 player[c1].frame = 0;
104 player[c1].frame_tick = 0;
105 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
107 player[c1].enabled = 1;
109 if ( (c1 == 0 && key_pressed(KEY_PL1_JUMP) == 0) || (c1 == 1 && key_pressed(KEY_PL2_JUMP) == 0) || (c1 == 2 && joy.but1 == 0) || (c1 == 3 && ( (main_info.num_mouse_buttons == 3 && mouse.but3 == 0) || (main_info.num_mouse_buttons == 2 && mouse.but1 == 0 && mouse.but2 == 0) ) ) ) {
110 if (player[c1].y_add < 0) {
111 player[c1].y_add += 32768;
112 if (player[c1].y_add > 0)
113 player[c1].y_add = 0;
116 player[c1].y_add += 12288;
117 if (player[c1].y_add > 36864 && player[c1].anim != 3) {
119 player[c1].frame = 0;
120 player[c1].frame_tick = 0;
121 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
123 player[c1].y += player[c1].y_add;
124 if ( (player[c1].x >> 16) <= (165 + c1 * 2) || (player[c1].x >> 16) >= (208 + c1 * 2) ) {
125 if ( (player[c1].y >> 16) > (160 + c1 * 2) ) {
126 player[c1].y = (160L + c1 * 2) << 16;
127 player[c1].y_add = 0;
128 if (player[c1].anim != 0 && player[c1].anim != 1) {
130 player[c1].frame = 0;
131 player[c1].frame_tick = 0;
132 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
137 if ( (player[c1].y >> 16) > (138 + c1 * 2) ) {
138 player[c1].y = (138L + c1 * 2) << 16;
139 player[c1].y_add = 0;
140 if (player[c1].anim != 0 && player[c1].anim != 1) {
142 player[c1].frame = 0;
143 player[c1].frame_tick = 0;
144 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
146 if ( (c1 == 0 && key_pressed(KEY_PL1_JUMP) == 0) || (c1 == 1 && key_pressed(KEY_PL2_JUMP) == 0) || (c1 == 2 && joy.but1 == 0) || (c1 == 3 && ( (main_info.num_mouse_buttons == 3 && mouse.but3 == 0) || (main_info.num_mouse_buttons == 2 && mouse.but1 == 0 && mouse.but2 == 0) ) ) )
147 player[c1].jump_ready = 1;
150 player[c1].x += player[c1].x_add;
151 if ( (player[c1].y >> 16) > (138 + c1 * 2) ) {
152 if ( (player[c1].x >> 16) > (165 + c1 * 2) && (player[c1].x >> 16) < (190 + c1 * 2) ) {
153 player[c1].x = (165L + c1 * 2) << 16;
154 player[c1].x_add = 0;
156 if ( (player[c1].x >> 16) > (190 + c1 * 2) && (player[c1].x >> 16) < (208 + c1 * 2) ) {
157 player[c1].x = (208L + c1 * 2) << 16;
158 player[c1].x_add = 0;
163 if ( (c1 == 0 && key_pressed(KEY_PL1_LEFT) == 1 && key_pressed(KEY_PL1_RIGHT) == 1) || (c1 == 1 && key_pressed(KEY_PL2_LEFT) == 1 && key_pressed(KEY_PL2_RIGHT) == 1) || (c1 == 2 && joy.x < -512 && joy.x > 512) || (c1 == 3 && mouse.but1 == 1 && mouse.but2 == 1) ) {
164 if (player[c1].direction == 1) {
165 if ( (player[c1].x >> 16) <= (165 + c1 * 2) || (player[c1].x >> 16) >= (208 + c1 * 2) ) {
166 if (player[c1].x_add > 0) {
167 player[c1].x_add -= 16384;
168 if ( (player[c1].y >> 16) >= (160 + c1 * 2) )
169 add_object(OBJ_SMOKE, (player[c1].x >> 16) + 2 + rnd(9), (player[c1].y >> 16) + 13 + rnd(5), 0, -16384 - rnd(8192), OBJ_ANIM_SMOKE, 0);
172 player[c1].x_add -= 12288;
174 if ( (player[c1].x >> 16) > (165 + c1 * 2) && (player[c1].x >> 16) < (208 + c1 * 2) ) {
175 if (player[c1].x_add > 0) {
176 player[c1].x_add -= 16384;
177 if ( (player[c1].y >> 16) >= (138 + c1 * 2) )
178 add_object(OBJ_SMOKE, (player[c1].x >> 16) + 2 + rnd(9), (player[c1].y >> 16) + 13 + rnd(5), 0, -16384 - rnd(8192), OBJ_ANIM_SMOKE, 0);
181 player[c1].x_add -= 12288;
183 if (player[c1].x_add < -98304L)
184 player[c1].x_add = -98304L;
185 player[c1].direction = 1;
186 if (player[c1].anim == 0) {
188 player[c1].frame = 0;
189 player[c1].frame_tick = 0;
190 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
194 if ( (player[c1].x >> 16) <= (165 + c1 * 2) || (player[c1].x >> 16) >= (208 + c1 * 2) ) {
195 if (player[c1].x_add < 0) {
196 player[c1].x_add += 16384;
197 if ( (player[c1].y >> 16) >= (160 + c1 * 2) )
198 add_object(OBJ_SMOKE, (player[c1].x >> 16) + 2 + rnd(9), (player[c1].y >> 16) + 13 + rnd(5), 0, -16384 - rnd(8192), OBJ_ANIM_SMOKE, 0);
201 player[c1].x_add += 12288;
203 if ( (player[c1].x >> 16) > (165 + c1 * 2) && (player[c1].x >> 16) < (208 + c1 * 2) ) {
204 if (player[c1].x_add < 0) {
205 player[c1].x_add += 16384;
206 if ( (player[c1].y >> 16) >= (138 + c1 * 2) )
207 add_object(OBJ_SMOKE, (player[c1].x >> 16) + 2 + rnd(9), (player[c1].y >> 16) + 13 + rnd(5), 0, -16384 - rnd(8192), OBJ_ANIM_SMOKE, 0);
210 player[c1].x_add += 12288;
212 if (player[c1].x_add > 98304L)
213 player[c1].x_add = 98304L;
214 player[c1].direction = 0;
215 if (player[c1].anim == 0) {
217 player[c1].frame = 0;
218 player[c1].frame_tick = 0;
219 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
223 else if ( (c1 == 0 && key_pressed(KEY_PL1_LEFT) == 1) || (c1 == 1 && key_pressed(KEY_PL2_LEFT) == 1) || (c1 == 2 && joy.x < -512) || (c1 == 3 && mouse.but1 == 1) ) {
224 if ( (player[c1].x >> 16) <= (165 + c1 * 2) || (player[c1].x >> 16) >= (208 + c1 * 2) ) {
225 if (player[c1].x_add > 0) {
226 player[c1].x_add -= 16384;
227 if ( (player[c1].y >> 16) >= (160 + c1 * 2) )
228 add_object(OBJ_SMOKE, (player[c1].x >> 16) + 2 + rnd(9), (player[c1].y >> 16) + 13 + rnd(5), 0, -16384 - rnd(8192), OBJ_ANIM_SMOKE, 0);
231 player[c1].x_add -= 12288;
233 if ( (player[c1].x >> 16) > (165 + c1 * 2) && (player[c1].x >> 16) < (208 + c1 * 2) ) {
234 if (player[c1].x_add > 0) {
235 player[c1].x_add -= 16384;
236 if ( (player[c1].y >> 16) >= (138 + c1 * 2) )
237 add_object(OBJ_SMOKE, (player[c1].x >> 16) + 2 + rnd(9), (player[c1].y >> 16) + 13 + rnd(5), 0, -16384 - rnd(8192), OBJ_ANIM_SMOKE, 0);
240 player[c1].x_add -= 12288;
242 if (player[c1].x_add < -98304L)
243 player[c1].x_add = -98304L;
244 player[c1].direction = 1;
245 if (player[c1].anim == 0) {
247 player[c1].frame = 0;
248 player[c1].frame_tick = 0;
249 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
252 else if ( (c1 == 0 && key_pressed(KEY_PL1_RIGHT) == 1) || (c1 == 1 && key_pressed(KEY_PL2_RIGHT) == 1) || (c1 == 2 && joy.x > 512) || (c1 == 3 && mouse.but2 == 1) ) {
253 if ( (player[c1].x >> 16) <= (165 + c1 * 2) || (player[c1].x >> 16) >= (208 + c1 * 2) ) {
254 if (player[c1].x_add < 0) {
255 player[c1].x_add += 16384;
256 if ( (player[c1].y >> 16) >= (160 + c1 * 2) )
257 add_object(OBJ_SMOKE, (player[c1].x >> 16) + 2 + rnd(9), (player[c1].y >> 16) + 13 + rnd(5), 0, -16384 - rnd(8192), OBJ_ANIM_SMOKE, 0);
260 player[c1].x_add += 12288;
262 if ( (player[c1].x >> 16) > (165 + c1 * 2) && (player[c1].x >> 16) < (208 + c1 * 2) ) {
263 if (player[c1].x_add < 0) {
264 player[c1].x_add += 16384;
265 if ( (player[c1].y >> 16) >= (138 + c1 * 2) )
266 add_object(OBJ_SMOKE, (player[c1].x >> 16) + 2 + rnd(9), (player[c1].y >> 16) + 13 + rnd(5), 0, -16384 - rnd(8192), OBJ_ANIM_SMOKE, 0);
269 player[c1].x_add += 12288;
271 if (player[c1].x_add > 98304L)
272 player[c1].x_add = 98304L;
273 player[c1].direction = 0;
274 if (player[c1].anim == 0) {
276 player[c1].frame = 0;
277 player[c1].frame_tick = 0;
278 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
281 // if ( (c1 == 0 && ( (key_pressed(KEY_PL1_LEFT) == 0 && key_pressed(KEY_PL1_RIGHT) == 0) || (key_pressed(KEY_PL1_LEFT) == 1 && key_pressed(KEY_PL1_RIGHT) == 1) ) ) || (c1 == 1 && ( (key_pressed(KEY_PL2_LEFT) == 0 && key_pressed(KEY_PL2_RIGHT) == 0) || (key_pressed(KEY_PL2_LEFT) == 1 && key_pressed(KEY_PL2_RIGHT) == 1) ) ) || (c1 == 2 && ( (joy.x >= -512 && joy.x <= 512) || (joy.x < -512 && joy.x > 512) ) ) || (c1 == 3 && ( (mouse.but1 == 0 && mouse.but2 == 0) || (mouse.but1 == 1 && mouse.but2 == 1) ) ) ) {
283 if ( ( (player[c1].x >> 16) <= (165 + c1 * 2) || (player[c1].x >> 16) >= (208 + c1 * 2) ) && (player[c1].y >> 16) >= (160 + c1 * 2) ) {
284 if (player[c1].x_add < 0) {
285 player[c1].x_add += 16384;
286 if (player[c1].x_add > 0)
287 player[c1].x_add = 0;
288 add_object(OBJ_SMOKE, (player[c1].x >> 16) + 2 + rnd(9), (player[c1].y >> 16) + 13 + rnd(5), 0, -16384 - rnd(8192), OBJ_ANIM_SMOKE, 0);
290 else if (player[c1].x_add > 0) {
291 player[c1].x_add -= 16384;
292 if (player[c1].x_add < 0)
293 player[c1].x_add = 0;
294 add_object(OBJ_SMOKE, (player[c1].x >> 16) + 2 + rnd(9), (player[c1].y >> 16) + 13 + rnd(5), 0, -16384 - rnd(8192), OBJ_ANIM_SMOKE, 0);
297 if ( ( ( (player[c1].x >> 16) > (165 + c1 * 2) && (player[c1].x >> 16) < (208 + c1 * 2) ) && (player[c1].y >> 16) >= (138 + c1 * 2) ) ) {
298 if (player[c1].x_add < 0) {
299 player[c1].x_add += 16384;
300 if (player[c1].x_add > 0)
301 player[c1].x_add = 0;
302 add_object(OBJ_SMOKE, (player[c1].x >> 16) + 2 + rnd(9), (player[c1].y >> 16) + 13 + rnd(5), 0, -16384 - rnd(8192), OBJ_ANIM_SMOKE, 0);
304 else if (player[c1].x_add > 0) {
305 player[c1].x_add -= 16384;
306 if (player[c1].x_add < 0)
307 player[c1].x_add = 0;
308 add_object(OBJ_SMOKE, (player[c1].x >> 16) + 2 + rnd(9), (player[c1].y >> 16) + 13 + rnd(5), 0, -16384 - rnd(8192), OBJ_ANIM_SMOKE, 0);
311 if (player[c1].anim == 1) {
313 player[c1].frame = 0;
314 player[c1].frame_tick = 0;
315 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
318 if (player[c1].jump_ready == 1 && ( (c1 == 0 && key_pressed(KEY_PL1_JUMP) == 1) || (c1 == 1 && key_pressed(KEY_PL2_JUMP) == 1) || (c1 == 2 && joy.but1 == 1) || (c1 == 3 && ( (main_info.num_mouse_buttons == 3 && mouse.but3 == 1) || (main_info.num_mouse_buttons == 2 && mouse.but1 == 1 && mouse.but2 == 1) ) ) ) ) {
319 if ( (player[c1].x >> 16) <= (165 + c1 * 2) || (player[c1].x >> 16) >= (208 + c1 * 2) ) {
320 if ( (player[c1].y >> 16) >= (160 + c1 * 2) ) {
321 player[c1].y_add = -280000L;
323 player[c1].frame = 0;
324 player[c1].frame_tick = 0;
325 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
326 player[c1].jump_ready = 0;
327 dj_play_sfx(SFX_JUMP, SFX_JUMP_FREQ + rnd(2000) - 1000, 64, 0, 0, -1);
331 if ( (player[c1].y >> 16) >= (138 + c1 * 2) ) {
332 player[c1].y_add = -280000L;
334 player[c1].frame = 0;
335 player[c1].frame_tick = 0;
336 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
337 player[c1].jump_ready = 0;
338 dj_play_sfx(SFX_JUMP, SFX_JUMP_FREQ + rnd(2000) - 1000, 64, 0, 0, -1);
342 if ( (c1 == 0 && key_pressed(KEY_PL1_JUMP) == 0) || (c1 == 1 && key_pressed(KEY_PL2_JUMP) == 0) || (c1 == 2 && joy.but1 == 0) || (c1 == 3 && ( (main_info.num_mouse_buttons == 3 && mouse.but3 == 0) || (main_info.num_mouse_buttons == 2 && mouse.but1 == 0 && mouse.but2 == 0) ) ) ) {
343 if (player[c1].y_add < 0) {
344 player[c1].y_add += 32768;
345 if (player[c1].y_add > 0)
346 player[c1].y_add = 0;
349 if ( (c1 == 0 && key_pressed(KEY_PL1_JUMP) == 0) || (c1 == 1 && key_pressed(KEY_PL2_JUMP) == 0) || (c1 == 2 && joy.but1 == 0) || (c1 == 3 && ( (main_info.num_mouse_buttons == 3 && mouse.but3 == 0) || (main_info.num_mouse_buttons == 2 && (mouse.but1 == 0 || mouse.but2 == 0) ) ) ) )
350 player[c1].jump_ready = 1;
351 player[c1].y_add += 12288;
352 if (player[c1].y_add > 36864 && player[c1].anim != 3) {
354 player[c1].frame = 0;
355 player[c1].frame_tick = 0;
356 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
358 player[c1].y += player[c1].y_add;
359 if ( (player[c1].x >> 16) <= (165 + c1 * 2) || (player[c1].x >> 16) >= (208 + c1 * 2) ) {
360 if ( (player[c1].y >> 16) > (160 + c1 * 2) ) {
361 player[c1].y = (160L + c1 * 2) << 16;
362 player[c1].y_add = 0;
363 if (player[c1].anim != 0 && player[c1].anim != 1) {
365 player[c1].frame = 0;
366 player[c1].frame_tick = 0;
367 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
368 // dj_play_sfx(SFX_LAND, SFX_LAND_FREQ, 64, 0, 0, -1);
373 if ( (player[c1].y >> 16) > (138 + c1 * 2) ) {
374 player[c1].y = (138L + c1 * 2) << 16;
375 player[c1].y_add = 0;
376 if (player[c1].anim != 0 && player[c1].anim != 1) {
378 player[c1].frame = 0;
379 player[c1].frame_tick = 0;
380 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
381 // dj_play_sfx(SFX_LAND, SFX_LAND_FREQ, 64, 0, 0, -1);
385 player[c1].x += player[c1].x_add;
386 if ( (player[c1].x >> 16) < 0) {
388 player[c1].x_add = 0;
390 if ( (player[c1].x >> 16) > 400) {
393 memset(menu_pal, 0, 768);
394 mod_fade_direction = 0;
396 if ( (player[c1].y >> 16) > (138 + c1 * 2) ) {
397 if ( (player[c1].x >> 16) > (165 + c1 * 2) && (player[c1].x >> 16) < (190 + c1 * 2) ) {
398 player[c1].x = (165L + c1 * 2) << 16;
399 player[c1].x_add = 0;
401 if ( (player[c1].x >> 16) > (190 + c1 * 2) && (player[c1].x >> 16) < (208 + c1 * 2) ) {
402 player[c1].x = (208L + c1 * 2) << 16;
403 player[c1].x_add = 0;
407 player[c1].frame_tick++;
408 if (player[c1].frame_tick >= player_anims[player[c1].anim].frame[player[c1].frame].ticks) {
410 if (player[c1].frame >= player_anims[player[c1].anim].num_frames)
411 player[c1].frame = player_anims[player[c1].anim].restart_frame;
412 player[c1].frame_tick = 0;
414 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image + player[c1].direction * 9;
419 main_info.page_info[main_info.draw_page].num_pobs = 0;
421 for (c1 = 3; c1 >= 0; c1--)
422 add_pob(main_info.draw_page, player[c1].x >> 16, player[c1].y >> 16, player[c1].image + c1 * 18, rabbit_gobs);
426 draw_pobs(main_info.draw_page);
430 if (mod_fade_direction == 1) {
433 dj_set_mod_volume(mod_vol);
439 dj_set_mod_volume(mod_vol);
444 for (c1 = 0; c1 < 720; c1++) {
445 if (menu_cur_pal[c1] < menu_pal[c1]) {
449 else if (menu_cur_pal[c1] > menu_pal[c1]) {
454 if (fade_flag == 0 && end_loop_flag == 1) {
456 if (new_game_flag == 1)
462 /* if (fade_flag == 2) {
469 if (fade_count < 30) {
470 for (c1 = 0; c1 < 48; c1++) {
471 if (fade_pal[c1] > 0)
477 outportw(0x3c4, 0x0f02);
478 memset( (char *)(0xa0000 + 220 * 100 + __djgpp_conventional_base), 0, 2000);
479 memset( (char *)(0xa0000 + 32768 + 220 * 100 + __djgpp_conventional_base), 0, 2000);
481 if (cur_message >= NUM_MESSAGES)
482 cur_message -= NUM_MESSAGES;
483 put_text(0, 200, 220, message[cur_message], 2);
484 put_text(1, 200, 220, message[cur_message], 2);
491 if (fade_count < 100) {
492 for (c1 = 0; c1 < 48; c1++) {
493 if (fade_pal[c1] < menu_pal[c1 + 720])
506 for (c1 = 0; c1 < 48; c1++) {
507 if (fade_pal[c1] > menu_pal[c1 + 720])
511 main_info.draw_page ^= 1;
512 main_info.view_page ^= 1;
514 outportw(0x3d4, (main_info.view_page << 23) + 0x0d);
515 outportw(0x3d4, ( (main_info.view_page << 15) & 0xff00) + 0x0c);
517 while( (inportb(0x3da) & 8) == 0)
519 while( (inportb(0x3da) & 8) == 8)
522 if (fade_flag != 0) {
524 for (c1 = 0; c1 < 720; c1++)
525 outportb(0x3c9, menu_cur_pal[c1]);
528 outportb(0x3c8, 240);
529 for (c1 = 0; c1 < 48; c1++)
530 outportb(0x3c9, fade_pal[c1]);
534 redraw_pob_backgrounds(main_info.draw_page);
544 char menu_init(void) {
549 for (c1 = 0; c1 < 768; c1++)
552 if ( (handle = dat_open("menu.pcx", datfile_name, "rb") ) == 0) {
553 strcpy(main_info.error_str, "Error loading 'menu.pcx', aborting...\n");
556 if (read_pcx(handle, background_pic, 102400, menu_pal) != 0) {
557 strcpy(main_info.error_str, "Error loading 'menu.pcx', aborting...\n");
561 if ( (handle = dat_open("menumask.pcx", datfile_name, "rb") ) == 0) {
562 strcpy(main_info.error_str, "Error loading 'menumask.pcx', aborting...\n");
565 if (read_pcx(handle, mask_pic, 102400, 0) != 0) {
566 strcpy(main_info.error_str, "Error loading 'menumask.pcx', aborting...\n");
570 memset(menu_cur_pal, 0, 768);
572 put_block(0, 0, 0, 400, 256, background_pic);
573 put_block(1, 0, 0, 400, 256, background_pic);
575 for (c1 = 0; c1 < 4; c1++) {
576 player[c1].enabled = 0;
577 player[c1].x = (long)rnd(150) << 16;
578 player[c1].y = (160L + c1 * 2) << 16;
579 player[c1].x_add = 0;
580 player[c1].y_add = 0;
581 player[c1].direction = rnd(2);
582 player[c1].jump_ready = 1;
584 player[c1].frame = 0;
585 player[c1].frame_tick = 0;
586 player[c1].image = player_anims[player[c1].anim].frame[player[c1].frame].image;
589 for (c1 = 0; c1 < 300; c1++)
590 objects[c1].used = 0;
592 main_info.page_info[0].num_pobs = 0;
593 main_info.page_info[1].num_pobs = 0;
600 void menu_deinit(void) {