Prev: 8401 Up: Map Next: 858C
852A: CPU driver for attract mode
This runs the game loop while driving the car.
cpu_driver 852A LD HL,($A26C) Get road position
If we're on the left, go right.
852D PUSH HL Subtract centre-left edge. Carry flag will be set if we're on the right hand side of it
852E LD DE,$0105
8531 SBC HL,DE
8533 POP HL
8534 LD A,$09 Set input ACCELERATE + RIGHT
8536 JR NC,cd_check_speed Jump to cd_check_speed if we're on the left
If we're on the right, go left.
8538 LD DE,$00F5 Subtract centre-right edge. Carry flag will be set if we're on the right hand side of it
853B SBC HL,DE
853D LD A,$0A Set input ACCELERATE + LEFT
853F JR C,cd_check_speed Jump to cd_check_speed if we're on the right
Otherwise we're in the centre zone.
8541 LD A,$08 Set input ACCELERATE
cd_check_speed 8543 LD C,A Move input into C for the moment
8544 LD HL,($A24A) Calculate (speed - 150)
8547 LD DE,$0096
854A SBC HL,DE
854C LD A,($A253) Load gear
854F SBC A,$00 Set gear to low if speed < 150, otherwise high
8551 JR NZ,cd_set_input
8553 SET 4,C Set input GEAR
cd_set_input 8555 LD A,C Set user input
8556 LD ($A0D5),A
8559 CALL read_map Call read_map
855C CALL spawn_cars Call spawn_cars
855F CALL cycle_counters Call cycle_counters
8562 CALL build_height_table Call build_height_table
8565 CALL scroll_horizon Call scroll_horizon
8568 CALL layout_road Call layout_road
856B CALL draw_road Call draw_road
856E CALL layout_objects Call layout_objects
8571 CALL prepare_tunnel Call prepare_tunnel
8574 CALL spawn_hazards Call spawn_hazards
8577 CALL choose_dirt_and_stones Call choose_dirt_and_stones
857A CALL layout_dirt_and_stones Call layout_dirt_and_stones
857D CALL draw_hazards Call draw_hazards
8580 CALL move_hero_car Call move_hero_car
8583 CALL check_collisions Call check_collisions
8586 CALL draw_everything_else Call draw_everything_else
8589 JP animate_hero_car Exit via animate_hero_car
Prev: 8401 Up: Map Next: 858C