// seg001:1029 int __pascal far fade_in_1() { #ifdef USE_FADE // sbyte index; word interrupted; if (graphics_mode == gmMcgaVga) { fade_palette_buffer = make_pal_buffer_fadein(offscreen_surface, 0x6689, /*0*/ 2); is_global_fading = 1; do { interrupted = proc_cutscene_frame(1); if (interrupted == 1) { return 1; } } while (interrupted == 0); is_global_fading = 0; } else { // ... } return 0; #else // stub method_1_blit_rect(onscreen_surface_, offscreen_surface, &screen_rect, &screen_rect, 0); updateScreen(); // SDL_UpdateRect(onscreen_surface_, 0, 0, 0, 0); // debug return 0; #endif }
// seg000:156D void __pascal far copy_screen_rect(const rect_type far *source_rect_ptr) { const rect_type* far target_rect_ptr; rect_type target_rect; if (upside_down) { target_rect_ptr = &target_rect; /**target_rect_ptr*/target_rect = *source_rect_ptr; /*target_rect_ptr->*/target_rect.top = 192 - source_rect_ptr->bottom; /*target_rect_ptr->*/target_rect.bottom = 192 - source_rect_ptr->top; } else { target_rect_ptr = source_rect_ptr; } method_1_blit_rect(onscreen_surface_, offscreen_surface, target_rect_ptr, target_rect_ptr, 0); }
// seg000:1BB3 void __pascal far transition_ltr() { short position; rect_type rect; rect.top = 0; rect.bottom = 200; rect.left = 0; rect.right = 2; for (position = 0; position < 320; position += 2) { method_1_blit_rect(onscreen_surface_, offscreen_surface, &rect, &rect, 0); rect.left += 2; rect.right += 2; pop_wait(timer_1, 0); } }
// seg000:17E6 void __pascal far show_title() { word textcolor; load_opt_sounds(sound_50_story_2_princess, sound_55_story_1_absence); // main theme, story, princess door textcolor = get_text_color(15, color_15_white, 0x800); dont_reset_time = 0; if(offscreen_surface) free_surface(offscreen_surface); // missing in original offscreen_surface = make_offscreen_buffer(&screen_rect); load_title_images(1); current_target_surface = offscreen_surface; do_wait(timer_0); draw_image_2(0 /*main title image*/, chtab_title50, 0, 0, blitters_0_no_transp); fade_in_2(offscreen_surface, 0x1000); //STUB method_1_blit_rect(onscreen_surface_, offscreen_surface, &screen_rect, &screen_rect, blitters_0_no_transp); play_sound_from_buffer(sound_pointers[54]); // main theme start_timer(timer_0, 0x82); draw_image_2(1 /*Broderbund Software presents*/, chtab_title50, 96, 106, blitters_0_no_transp); do_wait(timer_0); start_timer(timer_0,0xCD); method_1_blit_rect(onscreen_surface_, offscreen_surface, &rect_titles, &rect_titles, blitters_0_no_transp); draw_image_2(0 /*main title image*/, chtab_title50, 0, 0, blitters_0_no_transp); do_wait(timer_0); start_timer(timer_0,0x41); method_1_blit_rect(onscreen_surface_, offscreen_surface, &rect_titles, &rect_titles, blitters_0_no_transp); draw_image_2(0 /*main title image*/, chtab_title50, 0, 0, blitters_0_no_transp); draw_image_2(2 /*a game by Jordan Mechner*/, chtab_title50, 96, 122, blitters_0_no_transp); do_wait(timer_0); start_timer(timer_0,0x10E); method_1_blit_rect(onscreen_surface_, offscreen_surface, &rect_titles, &rect_titles, blitters_0_no_transp); draw_image_2(0 /*main title image*/, chtab_title50, 0, 0, blitters_0_no_transp); do_wait(timer_0); start_timer(timer_0,0xEB); method_1_blit_rect(onscreen_surface_, offscreen_surface, &rect_titles, &rect_titles, blitters_0_no_transp); draw_image_2(0 /*main title image*/, chtab_title50, 0, 0, blitters_0_no_transp); draw_image_2(3 /*Prince Of Persia*/, chtab_title50, 24, 107, blitters_10h_transp); draw_image_2(4 /*Copyright 1990 Jordan Mechner*/, chtab_title50, 48, 184, blitters_0_no_transp); do_wait(timer_0); method_1_blit_rect(onscreen_surface_, offscreen_surface, &rect_titles, &rect_titles, blitters_0_no_transp); draw_image_2(0 /*story frame*/, chtab_title40, 0, 0, blitters_0_no_transp); draw_image_2(1 /*In the Sultan's absence*/, chtab_title40, 24, 25, textcolor); current_target_surface = onscreen_surface_; while (check_sound_playing()) { idle(); do_paused(); } // method_1_blit_rect(onscreen_surface_, offscreen_surface, &screen_rect, &screen_rect, blitters_0_no_transp); play_sound_from_buffer(sound_pointers[sound_55_story_1_absence]); // story 1: In the absence transition_ltr(); pop_wait(timer_0, 0x258); fade_out_2(0x800); release_title_images(); load_intro(0, &pv_scene, 0); load_title_images(1); current_target_surface = offscreen_surface; draw_image_2(0 /*story frame*/, chtab_title40, 0, 0, blitters_0_no_transp); draw_image_2(2 /*Marry Jaffar*/, chtab_title40, 24, 25, textcolor); fade_in_2(offscreen_surface, 0x800); draw_image_2(0 /*main title image*/, chtab_title50, 0, 0, blitters_0_no_transp); draw_image_2(3 /*Prince Of Persia*/, chtab_title50, 24, 107, blitters_10h_transp); draw_image_2(4 /*Copyright 1990 Jordan Mechner*/, chtab_title50, 48, 184, blitters_0_no_transp); while (check_sound_playing()) { idle(); do_paused(); } transition_ltr(); pop_wait(timer_0, 0x78); draw_image_2(0 /*story frame*/, chtab_title40, 0, 0, blitters_0_no_transp); draw_image_2(4 /*credits*/, chtab_title40, 24, 26, textcolor); transition_ltr(); pop_wait(timer_0, 0x168); if (hof_count) { draw_image_2(0 /*story frame*/, chtab_title40, 0, 0, blitters_0_no_transp); draw_image_2(3 /*Prince Of Persia*/, chtab_title50, 24, 24, blitters_10h_transp); show_hof(); transition_ltr(); pop_wait(timer_0, 0xF0); } current_target_surface = onscreen_surface_; while (check_sound_playing()) { idle(); do_paused(); } fade_out_2(0x1800); free_surface(offscreen_surface); offscreen_surface = NULL; // added release_title_images(); init_game(0); }