// // Z_Calloc // void *(Z_Calloc)(size_t n1, size_t n2, int tag, void **user, __string file, int line) { if(!(n1 *= n2)) return NULL; return memset_near((void __near *)(Z_Malloc)(n1, tag, user, file, line), 0, n1); }
// seg004:0601 void __pascal far clear_coll_rooms() { memset_near(prev_coll_room, -1, sizeof(prev_coll_room)); memset_near(curr_row_coll_room, -1, sizeof(curr_row_coll_room)); memset_near(below_row_coll_room, -1, sizeof(below_row_coll_room)); memset_near(above_row_coll_room, -1, sizeof(above_row_coll_room)); // workaround memset_near(prev_coll_flags, 0, sizeof(prev_coll_flags)); memset_near(curr_row_coll_flags, 0, sizeof(curr_row_coll_flags)); memset_near(below_row_coll_flags, 0, sizeof(below_row_coll_flags)); memset_near(above_row_coll_flags, 0, sizeof(above_row_coll_flags)); prev_collision_row = -1; }
// seg001:0156 void __pascal far draw_princess_room_bg() { memset_near(table_counts, 0, sizeof(table_counts)); loadkid(); if (Char.frame) { load_frame_to_obj(); obj_tilepos = 30; add_objtable(0); } loadshad(); if (Char.frame) { load_frame_to_obj(); obj_tilepos = 30; add_objtable(0); } redraw_needed_tiles(); add_foretable(id_chtab_8_princessroom, 2 /*pillar piece*/, 30, 0, 167, blitters_10h_transp, 0); princess_room_torch(); draw_hourglass(); draw_tables(); }
// seg000:09B6 void __pascal far draw_game_frame() { short var_2; if (need_full_redraw) { redraw_screen(0); need_full_redraw = 0; } else { if (different_room) { drawn_room = next_room; if (tbl_level_type[current_level]) { gen_palace_wall_colors(); } redraw_screen(1); } else { if (need_redraw_because_flipped) { need_redraw_because_flipped = 0; redraw_screen(0); } else { memset_near(&table_counts, 0, sizeof(table_counts)); draw_moving(); draw_tables(); if (is_blind_mode) { draw_rect(&rect_top, 0); } if (upside_down) { flip_screen(offscreen_surface); } while (drects_count--) { copy_screen_rect(&drects[drects_count]); } if (upside_down) { flip_screen(offscreen_surface); } drects_count = 0; } } } play_next_sound(); // Note: texts are identified by their total time! if (text_time_remaining == 1) { // If the text's is about to expire: if (text_time_total == 36 || text_time_total == 288) { // 36: died on demo/potions level // 288: press button to continue // In this case, restart the game. start_level = 0; need_quotes = 1; start_game(); } else { // Otherwise, just clear it. erase_bottom_text(1); } } else { if (text_time_remaining != 0 && text_time_total != 1188) { // 1188: potions level (page/line/word) -- this one does not disappear --text_time_remaining; if (text_time_total == 288 && text_time_remaining < 72) { // 288: press button to continue // Blink the message: var_2 = text_time_remaining % 12; if (var_2 > 3) { erase_bottom_text(0); } else { if (var_2 == 3) { display_text_bottom("Press Button to Continue"); play_sound_from_buffer(sound_pointers[sound_38_blink]); // press button blink } } } } } }