Subversion Repositories Games.Prince of Persia

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2. SDLPoP, a port/conversion of the DOS game Prince of Persia.
  3. Copyright (C) 2013-2018  Dávid Nagy
  4.  
  5. This program is free software: you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation, either version 3 of the License, or
  8. (at your option) any later version.
  9.  
  10. This program is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program.  If not, see <http://www.gnu.org/licenses/>.
  17.  
  18. The authors of this program may be contacted at http://forum.princed.org
  19. */
  20.  
  21. // SEG000.C
  22. void far pop_main();
  23. void __pascal far init_game_main();
  24. void __pascal far start_game();
  25. int __pascal far process_key();
  26. void __pascal far play_frame();
  27. void __pascal far draw_game_frame();
  28. void __pascal far anim_tile_modif();
  29. void load_sound_names();
  30. void __pascal far load_sounds(int min_sound,int max_sound);
  31. void __pascal far load_opt_sounds(int first,int last);
  32. void __pascal far load_lev_spr(int level);
  33. void __pascal far load_level();
  34. void reset_level_unused_fields(bool loading_clean_level);
  35. int __pascal far play_kid_frame();
  36. void __pascal far play_guard_frame();
  37. void __pascal far check_the_end();
  38. void __pascal far check_fall_flo();
  39. void __pascal far read_joyst_control();
  40. void __pascal far draw_kid_hp(short curr_hp,short max_hp);
  41. void __pascal far draw_guard_hp(short curr_hp,short max_hp);
  42. void __pascal far add_life();
  43. void __pascal far set_health_life();
  44. void __pascal far draw_hp();
  45. void __pascal far do_delta_hp();
  46. void __pascal far play_sound(int sound_id);
  47. void __pascal far play_next_sound();
  48. void __pascal far check_sword_vs_sword();
  49. void __pascal far load_chtab_from_file(int chtab_id,int resource,const char near *filename,int palette_bits);
  50. void __pascal far free_all_chtabs_from(int first);
  51. void __pascal far load_more_opt_graf(const char *filename);
  52. int __pascal far do_paused();
  53. void __pascal far read_keyb_control();
  54. void __pascal far copy_screen_rect(const rect_type far *source_rect_ptr);
  55. void __pascal far toggle_upside();
  56. void __pascal far feather_fall();
  57. int __pascal far parse_grmode();
  58. void __pascal far gen_palace_wall_colors();
  59. void __pascal far show_title();
  60. void __pascal far transition_ltr();
  61. void __pascal far release_title_images();
  62. void __pascal far draw_image_2(int id,chtab_type* chtab_ptr,int xpos,int ypos,int blit);
  63. void __pascal far load_kid_sprite();
  64. void __pascal far save_game();
  65. short __pascal far load_game();
  66. void __pascal far clear_screen_and_sounds();
  67. void __pascal far parse_cmdline_sound();
  68. void __pascal far free_optional_sounds();
  69. void reload_non_music_sounds();
  70. void __pascal far free_optsnd_chtab();
  71. void __pascal far load_title_images(int bgcolor);
  72. void __pascal far show_copyprot(int where);
  73. void __pascal far show_loading();
  74. void __pascal far show_quotes();
  75. void show_splash();
  76. #ifdef USE_QUICKSAVE
  77. void check_quick_op();
  78. void restore_room_after_quick_load();
  79. #endif // USE_QUICKSAVE
  80.  
  81. // SEG001.C
  82. int __pascal far proc_cutscene_frame(int wait_frames);
  83. void __pascal far play_both_seq();
  84. void __pascal far draw_proom_drects();
  85. void __pascal far play_kid_seq();
  86. void __pascal far play_opp_seq();
  87. void __pascal far draw_princess_room_bg();
  88. void __pascal far seqtbl_offset_shad_char(int seq_index);
  89. void __pascal far seqtbl_offset_kid_char(int seq_index);
  90. void __pascal far init_mouse_cu8();
  91. void __pascal far init_mouse_go();
  92. void __pascal far princess_crouching();
  93. void __pascal far princess_stand();
  94. void __pascal far init_princess_x156();
  95. void __pascal far princess_lying();
  96. void __pascal far init_princess_right();
  97. void __pascal far init_ending_princess();
  98. void __pascal far init_mouse_1();
  99. void __pascal far init_princess();
  100. void __pascal far init_vizier();
  101. void __pascal far init_ending_kid();
  102. void __pascal far cutscene_8();
  103. void __pascal far cutscene_9();
  104. void __pascal far end_sequence_anim();
  105. void __pascal far time_expired();
  106. void __pascal far cutscene_12();
  107. void __pascal far cutscene_4();
  108. void __pascal far cutscene_2_6();
  109. void __pascal far pv_scene();
  110. void __pascal far set_hourglass_state(int state);
  111. int __pascal far hourglass_frame();
  112. void __pascal far princess_room_torch();
  113. void __pascal far draw_hourglass();
  114. void __pascal far reset_cutscene();
  115. void __pascal far do_flash(short color);
  116. void delay_ticks(Uint32 ticks);
  117. void do_flash_no_delay(short color);
  118. void __pascal far remove_flash();
  119. void __pascal far end_sequence();
  120. void __pascal far expired();
  121. void __pascal far load_intro(int which_imgs,void far (*func)(),int free_sounds);
  122. void __pascal far draw_star(int which_star,int mark_dirty);
  123. void __pascal far show_hof();
  124. void __pascal far hof_write();
  125. void __pascal far hof_read();
  126. void __pascal far show_hof_text(rect_type far *rect,int x_align,int y_align, const char *text);
  127. int __pascal far fade_in_1();
  128. int __pascal far fade_out_1();
  129.  
  130. // SEG002.C
  131. void __pascal far do_init_shad(const byte *source,int seq_index);
  132. void __pascal far get_guard_hp();
  133. void __pascal far check_shadow();
  134. void __pascal far enter_guard();
  135. void __pascal far check_guard_fallout();
  136. void __pascal far leave_guard();
  137. void __pascal far follow_guard();
  138. void __pascal far exit_room();
  139. int __pascal far goto_other_room(short direction);
  140. short __pascal far leave_room();
  141. void __pascal far Jaffar_exit();
  142. void __pascal far level3_set_chkp();
  143. void __pascal far sword_disappears();
  144. void __pascal far meet_Jaffar();
  145. void __pascal far play_mirr_mus();
  146. void __pascal far move_0_nothing();
  147. void __pascal far move_1_forward();
  148. void __pascal far move_2_backward();
  149. void __pascal far move_3_up();
  150. void __pascal far move_4_down();
  151. void __pascal far move_up_back();
  152. void __pascal far move_down_back();
  153. void __pascal far move_down_forw();
  154. void __pascal far move_6_shift();
  155. void __pascal far move_7();
  156. void __pascal far autocontrol_opponent();
  157. void __pascal far autocontrol_mouse();
  158. void __pascal far autocontrol_shadow();
  159. void __pascal far autocontrol_skeleton();
  160. void __pascal far autocontrol_Jaffar();
  161. void __pascal far autocontrol_kid();
  162. void __pascal far autocontrol_guard();
  163. void __pascal far autocontrol_guard_inactive();
  164. void __pascal far autocontrol_guard_active();
  165. void __pascal far autocontrol_guard_kid_far();
  166. void __pascal far guard_follows_kid_down();
  167. void __pascal far autocontrol_guard_kid_in_sight(short distance);
  168. void __pascal far autocontrol_guard_kid_armed(short distance);
  169. void __pascal far guard_advance();
  170. void __pascal far guard_block();
  171. void __pascal far guard_strike();
  172. void __pascal far hurt_by_sword();
  173. void __pascal far check_sword_hurt();
  174. void __pascal far check_sword_hurting();
  175. void __pascal far check_hurting();
  176. void __pascal far check_skel();
  177. void __pascal far do_auto_moves(const auto_move_type *moves_ptr);
  178. void __pascal far autocontrol_shadow_level4();
  179. void __pascal far autocontrol_shadow_level5();
  180. void __pascal far autocontrol_shadow_level6();
  181. void __pascal far autocontrol_shadow_level12();
  182.  
  183. // SEG003.C
  184. void __pascal far init_game(int level);
  185. void __pascal far play_level(int level_number);
  186. void __pascal far do_startpos();
  187. void __pascal far set_start_pos();
  188. void __pascal far find_start_level_door();
  189. void __pascal far draw_level_first();
  190. void __pascal far redraw_screen(int drawing_different_room);
  191. int __pascal far play_level_2();
  192. void __pascal far redraw_at_char();
  193. void __pascal far redraw_at_char2();
  194. void __pascal far check_knock();
  195. void __pascal far timers();
  196. void __pascal far check_mirror();
  197. void __pascal far jump_through_mirror();
  198. void __pascal far check_mirror_image();
  199. void __pascal far bump_into_opponent();
  200. void __pascal far pos_guards();
  201. void __pascal far check_can_guard_see_kid();
  202. byte __pascal far get_tile_at_kid(int xpos);
  203. void __pascal far do_mouse();
  204. int __pascal far flash_if_hurt();
  205. void __pascal far remove_flash_if_hurt();
  206.  
  207. // SEG004.C
  208. void __pascal far check_collisions();
  209. void __pascal far move_coll_to_prev();
  210. void __pascal far get_row_collision_data(short row,sbyte *row_coll_room_ptr,byte *row_coll_flags_ptr);
  211. int __pascal far get_left_wall_xpos(int room,int column,int row);
  212. int __pascal far get_right_wall_xpos(int room,int column,int row);
  213. void __pascal far check_bumped();
  214. void __pascal far check_bumped_look_left();
  215. void __pascal far check_bumped_look_right();
  216. int __pascal far is_obstacle_at_col(int tile_col);
  217. int __pascal far is_obstacle();
  218. int __pascal far xpos_in_drawn_room(int xpos);
  219. void __pascal far bumped(sbyte delta_x,sbyte direction);
  220. void __pascal far bumped_fall();
  221. void __pascal far bumped_floor(sbyte direction);
  222. void __pascal far bumped_sound();
  223. void __pascal far clear_coll_rooms();
  224. int __pascal far can_bump_into_gate();
  225. int __pascal far get_edge_distance();
  226. void __pascal far check_chomped_kid();
  227. void __pascal far chomped();
  228. void __pascal far check_gate_push();
  229. void __pascal far check_guard_bumped();
  230. void __pascal far check_chomped_guard();
  231. int __pascal far check_chomped_here();
  232. int __pascal far dist_from_wall_forward(byte tiletype);
  233. int __pascal far dist_from_wall_behind(byte tiletype);
  234.  
  235. // SEG005.C
  236. void __pascal far seqtbl_offset_char(short seq_index);
  237. void __pascal far seqtbl_offset_opp(int seq_index);
  238. void __pascal far do_fall();
  239. void __pascal far land();
  240. void __pascal far spiked();
  241. void __pascal far control();
  242. void __pascal far control_crouched();
  243. void __pascal far control_standing();
  244. void __pascal far up_pressed();
  245. void __pascal far down_pressed();
  246. void __pascal far go_up_leveldoor();
  247. void __pascal far control_turning();
  248. void __pascal far crouch();
  249. void __pascal far back_pressed();
  250. void __pascal far forward_pressed();
  251. void __pascal far control_running();
  252. void __pascal far safe_step();
  253. int __pascal far check_get_item();
  254. void __pascal far get_item();
  255. void __pascal far control_startrun();
  256. void __pascal far control_jumpup();
  257. void __pascal far standing_jump();
  258. void __pascal far check_jump_up();
  259. void __pascal far jump_up_or_grab();
  260. void __pascal far grab_up_no_floor_behind();
  261. void __pascal far jump_up();
  262. void __pascal far control_hanging();
  263. void __pascal far can_climb_up();
  264. void __pascal far hang_fall();
  265. void __pascal far grab_up_with_floor_behind();
  266. void __pascal far run_jump();
  267. void __pascal far back_with_sword();
  268. void __pascal far forward_with_sword();
  269. void __pascal far draw_sword();
  270. void __pascal far control_with_sword();
  271. void __pascal far swordfight();
  272. void __pascal far sword_strike();
  273. void __pascal far parry();
  274.  
  275. // SEG006.C
  276. int __pascal far get_tile(int room,int col,int row);
  277. int __pascal far find_room_of_tile();
  278. int __pascal far get_tilepos(int tile_col,int tile_row);
  279. int __pascal far get_tilepos_nominus(int tile_col,int tile_row);
  280. void __pascal far load_fram_det_col();
  281. void __pascal far determine_col();
  282. void __pascal far load_frame();
  283. short __pascal far dx_weight();
  284. int __pascal far char_dx_forward(int delta_x);
  285. int __pascal far obj_dx_forward(int delta_x);
  286. void __pascal far play_seq();
  287. int __pascal far get_tile_div_mod_m7(int xpos);
  288. int __pascal far get_tile_div_mod(int xpos);
  289. int __pascal far sub_70B6(int ypos);
  290. int __pascal far y_to_row_mod4(int ypos);
  291. void __pascal far loadkid();
  292. void __pascal far savekid();
  293. void __pascal far loadshad();
  294. void __pascal far saveshad();
  295. void __pascal far loadkid_and_opp();
  296. void __pascal far savekid_and_opp();
  297. void __pascal far loadshad_and_opp();
  298. void __pascal far saveshad_and_opp();
  299. void __pascal far reset_obj_clip();
  300. void __pascal far x_to_xh_and_xl(int xpos, sbyte *xh_addr, sbyte *xl_addr);
  301. void __pascal far fall_accel();
  302. void __pascal far fall_speed();
  303. void __pascal far check_action();
  304. int __pascal far tile_is_floor(int tiletype);
  305. void __pascal far check_spiked();
  306. int __pascal far take_hp(int count);
  307. int __pascal far get_tile_at_char();
  308. void __pascal far set_char_collision();
  309. void __pascal far check_on_floor();
  310. void __pascal far start_fall();
  311. void __pascal far check_grab();
  312. int __pascal far can_grab_front_above();
  313. void __pascal far in_wall();
  314. int __pascal far get_tile_infrontof_char();
  315. int __pascal far get_tile_infrontof2_char();
  316. int __pascal far get_tile_behind_char();
  317. int __pascal far distance_to_edge_weight();
  318. int __pascal far distance_to_edge(int xpos);
  319. void __pascal far fell_out();
  320. void __pascal far play_kid();
  321. void __pascal far control_kid();
  322. void __pascal far do_demo();
  323. void __pascal far play_guard();
  324. void __pascal far user_control();
  325. void __pascal far flip_control_x();
  326. int __pascal far release_arrows();
  327. void __pascal far save_ctrl_1();
  328. void __pascal far rest_ctrl_1();
  329. void __pascal far clear_saved_ctrl();
  330. void __pascal far read_user_control();
  331. int __pascal far can_grab();
  332. int __pascal far wall_type(byte tiletype);
  333. int __pascal far get_tile_above_char();
  334. int __pascal far get_tile_behind_above_char();
  335. int __pascal far get_tile_front_above_char();
  336. int __pascal far back_delta_x(int delta_x);
  337. void __pascal far do_pickup(int obj_type);
  338. void __pascal far check_press();
  339. void __pascal far check_spike_below();
  340. void __pascal far clip_char();
  341. void __pascal far stuck_lower();
  342. void __pascal far set_objtile_at_char();
  343. void __pascal far proc_get_object();
  344. int __pascal far is_dead();
  345. void __pascal far play_death_music();
  346. void __pascal far on_guard_killed();
  347. void __pascal far clear_char();
  348. void __pascal far save_obj();
  349. void __pascal far load_obj();
  350. void __pascal far draw_hurt_splash();
  351. void __pascal far check_killed_shadow();
  352. void __pascal far add_sword_to_objtable();
  353. void __pascal far control_guard_inactive();
  354. int __pascal far char_opp_dist();
  355. void __pascal far inc_curr_row();
  356.  
  357. // SEG007.C
  358. void __pascal far process_trobs();
  359. void __pascal far animate_tile();
  360. short __pascal far is_trob_in_drawn_room();
  361. void __pascal far set_redraw_anim_right();
  362. void __pascal far set_redraw_anim_curr();
  363. void __pascal far redraw_at_trob();
  364. void __pascal far redraw_21h();
  365. void __pascal far redraw_11h();
  366. void __pascal far redraw_20h();
  367. void __pascal far draw_trob();
  368. void __pascal far redraw_tile_height();
  369. short __pascal far get_trob_pos_in_drawn_room();
  370. short __pascal far get_trob_right_pos_in_drawn_room();
  371. short __pascal far get_trob_right_above_pos_in_drawn_room();
  372. void __pascal far animate_torch();
  373. void __pascal far animate_potion();
  374. void __pascal far animate_sword();
  375. void __pascal far animate_chomper();
  376. void __pascal far animate_spike();
  377. void __pascal far animate_door();
  378. void __pascal far gate_stop();
  379. void __pascal far animate_leveldoor();
  380. short __pascal far bubble_next_frame(short curr);
  381. short __pascal far get_torch_frame(short curr);
  382. void __pascal far set_redraw_anim(short tilepos,byte frames);
  383. void __pascal far set_redraw2(short tilepos,byte frames);
  384. void __pascal far set_redraw_floor_overlay(short tilepos, byte frames);
  385. void __pascal far set_redraw_full(short tilepos,byte frames);
  386. void __pascal far set_redraw_fore(short tilepos,byte frames);
  387. void __pascal far set_wipe(short tilepos,byte frames);
  388. void __pascal far start_anim_torch(short room,short tilepos);
  389. void __pascal far start_anim_potion(short room,short tilepos);
  390. void __pascal far start_anim_sword(short room,short tilepos);
  391. void __pascal far start_anim_chomper(short room,short tilepos, byte modifier);
  392. void __pascal far start_anim_spike(short room,short tilepos);
  393. short __pascal far trigger_gate(short room,short tilepos,short button_type);
  394. short __pascal far trigger_1(short target_type,short room,short tilepos,short button_type);
  395. void __pascal far do_trigger_list(short index,short button_type);
  396. void __pascal far add_trob(byte room,byte tilepos,sbyte type);
  397. short __pascal far find_trob();
  398. void __pascal far clear_tile_wipes();
  399. short __pascal far get_doorlink_timer(short index);
  400. short __pascal far set_doorlink_timer(short index,byte value);
  401. short __pascal far get_doorlink_tile(short index);
  402. short __pascal far get_doorlink_next(short index);
  403. short __pascal far get_doorlink_room(short index);
  404. void __pascal far trigger_button(int playsound,int button_type,int modifier);
  405. void __pascal far died_on_button();
  406. void __pascal far animate_button();
  407. void __pascal far start_level_door(short room,short tilepos);
  408. void __pascal far animate_empty();
  409. void __pascal far animate_loose();
  410. void __pascal far loose_shake(int arg_0);
  411. int __pascal far remove_loose(int room, int tilepos);
  412. void __pascal far make_loose_fall(byte modifier);
  413. void __pascal far start_chompers();
  414. int __pascal far next_chomper_timing(byte timing);
  415. void __pascal far loose_make_shake();
  416. void __pascal far do_knock(int room,int tile_row);
  417. void __pascal far add_mob();
  418. short __pascal far get_curr_tile(short tilepos);
  419. void __pascal far do_mobs();
  420. void __pascal far move_mob();
  421. void __pascal far move_loose();
  422. void __pascal far loose_land();
  423. void __pascal far loose_fall();
  424. void __pascal far redraw_at_cur_mob();
  425. void __pascal far mob_down_a_row();
  426. void __pascal far draw_mobs();
  427. void __pascal far draw_mob();
  428. void __pascal far add_mob_to_objtable(int ypos);
  429. void __pascal far sub_9A8E();
  430. int __pascal far is_spike_harmful();
  431. void __pascal far check_loose_fall_on_kid();
  432. void __pascal far fell_on_your_head();
  433. void __pascal far play_door_sound_if_visible(int sound_id);
  434.  
  435. // SEG008.C
  436. void __pascal far redraw_room();
  437. void __pascal far load_room_links();
  438. void __pascal far draw_room();
  439. void __pascal far draw_tile();
  440. void __pascal far draw_tile_aboveroom();
  441. void __pascal far redraw_needed(short tilepos);
  442. void __pascal far redraw_needed_above(int column);
  443. int __pascal far get_tile_to_draw(int room, int column, int row, byte *ptr_tile, byte *ptr_modifier, byte tile_room0);
  444. void __pascal far load_curr_and_left_tile();
  445. void __pascal far load_leftroom();
  446. void __pascal far load_rowbelow();
  447. void __pascal far draw_tile_floorright();
  448. int __pascal far can_see_bottomleft();
  449. void __pascal far draw_tile_topright();
  450. void __pascal far draw_tile_anim_topright();
  451. void __pascal far draw_tile_right();
  452. int __pascal far get_spike_frame(byte modifier);
  453. void __pascal far draw_tile_anim_right();
  454. void __pascal far draw_tile_bottom(word arg_0);
  455. void __pascal far draw_loose(int arg_0);
  456. void __pascal far draw_tile_base();
  457. void __pascal far draw_tile_anim();
  458. void __pascal far draw_tile_fore();
  459. int __pascal far get_loose_frame(byte modifier);
  460. int __pascal far add_backtable(short chtab_id, int id, sbyte xh, sbyte xl, int ybottom, byte blit, byte peel);
  461. int __pascal far add_foretable(short chtab_id, int id, sbyte xh, sbyte xl, int ybottom, byte blit, byte peel);
  462. int __pascal far add_midtable(short chtab_id, int id, sbyte xh, sbyte xl, int ybottom, byte blit, byte peel);
  463. void __pascal far add_peel(int left,int right,int top,int height);
  464. void __pascal far add_wipetable(sbyte layer,short left,short bottom,sbyte height,short width,sbyte color);
  465. void __pascal far draw_table(int which_table);
  466. void __pascal far draw_wipes(int which);
  467. void __pascal far draw_back_fore(int which_table,int index);
  468. void __pascal far draw_mid(int index);
  469. void __pascal far draw_image(image_type far *image,image_type far *mask,int xpos,int ypos,int blit);
  470. void __pascal far draw_wipe(int index);
  471. void __pascal far calc_gate_pos();
  472. void __pascal far draw_gate_back();
  473. void __pascal far draw_gate_fore();
  474. void __pascal far alter_mods_allrm();
  475. void __pascal far load_alter_mod(int tile_ix);
  476. void __pascal far draw_moving();
  477. void __pascal far redraw_needed_tiles();
  478. void __pascal far draw_tile_wipe(byte height);
  479. void __pascal far draw_tables();
  480. void __pascal far restore_peels();
  481. void __pascal far add_drect(rect_type *source);
  482. void __pascal far draw_leveldoor();
  483. void __pascal far get_room_address(int room);
  484. void __pascal far draw_floor_overlay();
  485. void __pascal far draw_other_overlay();
  486. void __pascal far draw_tile2();
  487. void __pascal far draw_objtable_items_at_tile(byte tilepos);
  488. void __pascal far sort_curr_objs();
  489. int __pascal far compare_curr_objs(int index1,int index2);
  490. void __pascal far draw_objtable_item(int index);
  491. int __pascal far load_obj_from_objtable(int index);
  492. void __pascal far draw_people();
  493. void __pascal far draw_kid();
  494. void __pascal far draw_guard();
  495. void __pascal far add_kid_to_objtable();
  496. void __pascal far add_guard_to_objtable();
  497. void __pascal far add_objtable(byte obj_type);
  498. void __pascal far mark_obj_tile_redraw(int index);
  499. void __pascal far load_frame_to_obj();
  500. void __pascal far show_time();
  501. void __pascal far show_level();
  502. short __pascal far calc_screen_x_coord(short logical_x);
  503. void __pascal far free_peels();
  504. void __pascal far display_text_bottom(const char near *text);
  505. void __pascal far erase_bottom_text(int arg_0);
  506. void __pascal far wall_pattern(int which_part,int which_table);
  507. void __pascal far draw_left_mark (word arg3, word arg2, word arg1);
  508. void __pascal far draw_right_mark (word arg2, word arg1);
  509. image_type* get_image(short chtab_id, int id);
  510.  
  511. // SEG009.C
  512. void sdlperror(const char* header);
  513. #define locate_file(filename) locate_file_(filename, alloca(POP_MAX_PATH), POP_MAX_PATH)
  514. const char* locate_file_(const char* filename, char* path_buffer, int buffer_size);
  515. int __pascal far read_key();
  516. void __pascal far clear_kbd_buf();
  517. word __pascal far prandom(word max);
  518. int __pascal far round_xpos_to_byte(int xpos,int round_direction);
  519. void __pascal far show_dialog(const char *text);
  520. void __pascal far quit(int exit_code);
  521. void __pascal far restore_stuff();
  522. int __pascal far key_test_quit();
  523. const char* __pascal far check_param(const char *param);
  524. int __pascal far pop_wait(int timer_index,int time);
  525. dat_type *__pascal open_dat(const char *file,int drive);
  526. void __pascal far set_loaded_palette(dat_pal_type far *palette_ptr);
  527. chtab_type* __pascal load_sprites_from_file(int resource,int palette_bits, int quit_on_error);
  528. void __pascal far free_chtab(chtab_type *chtab_ptr);
  529. image_type*far __pascal far load_image(int index, dat_pal_type* palette);
  530. void __pascal far draw_image_transp(image_type far *image,image_type far *mask,int xpos,int ypos);
  531. int __pascal far set_joy_mode();
  532. surface_type far *__pascal make_offscreen_buffer(const rect_type far *rect);
  533. void __pascal far free_surface(surface_type *surface);
  534. void __pascal far free_peel(peel_type *peel_ptr);
  535. void __pascal far set_hc_pal();
  536. void __pascal far flip_not_ega(byte far *memory,int height,int stride);
  537. void __pascal far flip_screen(surface_type far *surface);
  538. void __pascal far fade_in_2(surface_type near *source_surface,int which_rows);
  539. void __pascal far fade_out_2(int rows);
  540. void __pascal far draw_image_transp_vga(image_type far *image,int xpos,int ypos);
  541. int __pascal far draw_text_character(byte character);
  542. void __pascal far draw_rect(const rect_type far *rect,int color);
  543. surface_type far *__pascal rect_sthg(surface_type *surface,const rect_type far *rect);
  544. rect_type far *__pascal shrink2_rect(rect_type far *target_rect,const rect_type far *source_rect,int delta_x,int delta_y);
  545. void __pascal far set_curr_pos(int xpos,int ypos);
  546. void __pascal far restore_peel(peel_type *peel_ptr);
  547. peel_type* __pascal far read_peel_from_screen(const rect_type far *rect);
  548. void __pascal far show_text(const rect_type far *rect_ptr,int x_align,int y_align,const char far *text);
  549. int __pascal far intersect_rect(rect_type far *output,const rect_type far *input1,const rect_type far *input2);
  550. rect_type far * __pascal far union_rect(rect_type far *output,const rect_type far *input1,const rect_type far *input2);
  551. void __pascal far stop_sounds();
  552. void __pascal far play_sound_from_buffer(sound_buffer_type far *buffer);
  553. void __pascal far turn_sound_on_off(byte new_state);
  554. int __pascal far check_sound_playing();
  555. void __pascal far set_gr_mode(byte grmode);
  556. void request_screen_update();
  557. void __pascal far set_pal_arr(int start,int count,const rgb_type far *array,int vsync);
  558. void __pascal far set_pal(int index,int red,int green,int blue,int vsync);
  559. int __pascal far add_palette_bits(byte n_colors);
  560. void __pascal far process_palette(void *target,dat_pal_type far *source);
  561. int __pascal far find_first_pal_row(int which_rows_mask);
  562. int __pascal far get_text_color(int cga_color,int low_half,int high_half_mask);
  563. void __pascal far close_dat(dat_type far *pointer);
  564. void far *__pascal load_from_opendats_alloc(int resource, const char* extension, data_location* out_result, int* out_size);
  565. int __pascal far load_from_opendats_to_area(int resource,void far *area,int length, const char* extension);
  566. void rect_to_sdlrect(const rect_type* rect, SDL_Rect* sdlrect);
  567. void __pascal far method_1_blit_rect(surface_type near *target_surface,surface_type near *source_surface,const rect_type far *target_rect, const rect_type far *source_rect,int blit);
  568. image_type far * __pascal far method_3_blit_mono(image_type far *image,int xpos,int ypos,int blitter,byte color);
  569. const rect_type far * __pascal far method_5_rect(const rect_type far *rect,int blit,byte color);
  570. image_type far * __pascal far method_6_blit_img_to_scr(image_type far *image,int xpos,int ypos,int blit);
  571. void __pascal start_timer(int timer_index, int length);
  572. int __pascal do_wait(int timer_index);
  573. void __pascal far init_timer(int frequency);
  574. void __pascal far set_clip_rect(const rect_type far *rect);
  575. void __pascal far reset_clip_rect();
  576. void __pascal far set_bg_attr(int vga_pal_index,int hc_pal_index);
  577. rect_type far *__pascal offset4_rect_add(rect_type far *dest, const rect_type far *source,int d_left,int d_top,int d_right,int d_bottom);
  578. int __pascal far input_str(const rect_type far *rect,char *buffer,int max_length,const char *initial,int has_initial,int arg_4,int color,int bgcolor);
  579. rect_type far *__pascal offset2_rect(rect_type far *dest, const rect_type far *source,int delta_x,int delta_y);
  580. void __pascal far show_text_with_color(const rect_type far *rect_ptr,int x_align,int y_align, const char far *text,int color);
  581. void __pascal do_simple_wait(int timer_index);
  582. void idle();
  583. void __pascal far init_copyprot_dialog();
  584. dialog_type * __pascal far make_dialog_info(dialog_settings_type *settings, rect_type *dialog_rect,
  585.                                             rect_type *text_rect, peel_type *dialog_peel);
  586. void __pascal far calc_dialog_peel_rect(dialog_type*dialog);
  587. void __pascal far read_dialog_peel(dialog_type *dialog);
  588. void __pascal far draw_dialog_frame(dialog_type *dialog);
  589. void __pascal far add_dialog_rect(dialog_type *dialog);
  590. void __pascal far dialog_method_2_frame(dialog_type *dialog);
  591. #ifdef USE_FADE
  592. void __pascal far fade_in_2(surface_type near *source_surface,int which_rows);
  593. palette_fade_type far *__pascal make_pal_buffer_fadein(surface_type *source_surface,int which_rows,int wait_time);
  594. void __pascal far pal_restore_free_fadein(palette_fade_type far *palette_buffer);
  595. int __pascal far fade_in_frame(palette_fade_type far *palette_buffer);
  596. void __pascal far fade_out_2(int rows);
  597. palette_fade_type far *__pascal make_pal_buffer_fadeout(int which_rows,int wait_time);
  598. void __pascal far pal_restore_free_fadeout(palette_fade_type far *palette_buffer);
  599. int __pascal far fade_out_frame(palette_fade_type far *palette_buffer);
  600. void __pascal far read_palette_256(rgb_type far *target);
  601. void __pascal far set_pal_256(rgb_type far *source);
  602. #endif
  603. void set_chtab_palette(chtab_type* chtab, byte* colors, int n_colors);
  604. int has_timer_stopped(int index);
  605. sound_buffer_type* load_sound(int index);
  606. void free_sound(sound_buffer_type far *buffer);
  607.  
  608. // SEQTABLE.C
  609. void apply_seqtbl_patches();
  610. #ifdef CHECK_SEQTABLE_MATCHES_ORIGINAL
  611. void check_seqtable_matches_original();
  612. #endif
  613.  
  614. // OPTIONS.C
  615. void disable_fixes_and_enhancements();
  616. void load_global_options();
  617. void check_mod_param();
  618. void load_mod_options();
  619. void show_use_fixes_and_enhancements_prompt();
  620.  
  621. // REPLAY.C
  622. #ifdef USE_REPLAY
  623. void start_with_replay_file(const char *filename);
  624. void init_record_replay();
  625. void replay_restore_level();
  626. int restore_savestate_from_buffer();
  627. void start_recording();
  628. void add_replay_move();
  629. void stop_recording();
  630. void start_replay();
  631. void end_replay();
  632. void do_replay_move();
  633. int save_recorded_replay();
  634. void replay_cycle();
  635. int load_replay();
  636. void key_press_while_recording(int* key_ptr);
  637. void key_press_while_replaying(int* key_ptr);
  638. #endif
  639.  
  640. // lighting.c
  641. #ifdef USE_LIGHTING
  642. void init_lighting();
  643. void redraw_lighting();
  644. void update_lighting(const rect_type far *source_rect_ptr);
  645. #endif
  646.  
  647. // screenshot.c
  648. #ifdef USE_SCREENSHOT
  649. void save_screenshot();
  650. void auto_screenshot();
  651. bool want_auto_screenshot();
  652. void init_screenshot();
  653. void save_level_screenshot(bool want_extras);
  654. #endif
  655.  
  656.