Prev: 871A Up: Map Next: 87DC
873C: Escape scene
This runs the scene shown when the perp has escaped.
Input
Used by the routine at main_loop.
escape_scene 873C CALL silence_audio_hook Call silence_audio_hook
873F LD HL,$871A Address of escape_scene_data
8742 CALL set_up_stage Call set_up_stage
8745 LD HL,$00FA Set speed to $FA [speed of the camera]
8748 LD ($A24A),HL
874B LD HL,$8728 Initialise hazards[0] (the perp)
874E LD DE,$A188
8751 LD BC,$0014
8754 LDIR
8756 LD HL,($5D10) Set $A191 to the perp's car LOD
8759 LD ($A191),HL
875C LD A,$FF inhibit_collision_detection = $FF -- Stops sub_ad0d from running
875E LD ($A221),A
8761 LD HL,$992A Address of failed_chatter ("wrong job" / "one more try" / "mediocre driver")
8764 CALL start_chatter Call start_chatter (priority $FF)
Print "GAME OVER" once the transition has completed.
es_loop 8767 LD HL,$8CF4 Address of game_over_message
876A LD A,($A231) If transition_control != 4 Call setup_overlay_messages
876D CP $04
876F CALL NZ,setup_overlay_messages
8772 CALL read_map Call read_map
8775 CALL build_height_table Call build_height_table
8778 CALL scroll_horizon Call scroll_horizon
877B CALL layout_road Call layout_road
877E CALL draw_road Call draw_road
8781 CALL layout_objects Call layout_objects
8784 CALL prepare_tunnel Call prepare_tunnel
8787 CALL spawn_hazards Call spawn_hazards
878A CALL draw_hazards Call draw_hazards
878D CALL draw_everything_else Call draw_everything_else
8790 CALL update_scoreboard Call update_scoreboard
8793 CALL drive_chatter Call drive_chatter
8796 CALL transition Call transition
8799 CALL draw_screen Call draw_screen
879C LD A,($C161) Loop to es_loop unless the tunnel has appeared
879F AND A
87A0 JR Z,es_loop
Tunnel has appeared.
87A2 LD A,($C15E) reading from tunnel code [15 when tunnel is small, 6 when fills screen]
87A5 CP $07 Loop to es_loop if tunnel code value >= 7
87A7 JR NC,es_loop
87A9 LD A,($A189) $A189 is hazards 2nd byte
87AC CP $05 Jump if it != 5
87AE JR NZ,escape_scene_0
87B0 LD A,$FF Activate three hazards? [i.e. the three barriers]
87B2 LD ($A1A3),A
87B5 LD ($A1B7),A
87B8 LD ($A1CB),A
escape_scene_0 87BB LD HL,$0000 Set speed to zero [speed of camera]
87BE LD ($A24A),HL
87C1 LD A,($A188) Loop to es_loop while the perp is still active in the hazards
87C4 RRCA
87C5 JR C,es_loop
87C7 LD A,($963D) Loop while chatter_state > 0 => chatter is still happening
87CA AND A
87CB JR NZ,es_loop
87CD LD A,($A231) Return if transition_control is zero
87D0 AND A
87D1 RET Z
87D2 CP $04 If transition_control is 4
87D4 LD A,$08 Forward transition
87D6 CALL NZ,setup_transition Call setup_transition if non-zero
87D9 JP es_loop Loop
Prev: 871A Up: Map Next: 87DC