Prev: 6DEB Up: Map Next: 6E40
6DFF: Consume fuel and update gauge display
Decrements fuel level by 1 every 2 frames (on even ticks only). At 50fps, this equals ~25 units/second. A full tank (255) lasts ~10 seconds. Fuel consumption does NOT vary with scroll speed.
  • Gauge updates every 4th decrement (fuel AND 3 == 0)
  • Low fuel warning when top 2 bits = 0 (fuel < $40)
  • Empty fuel (fuel = 0) triggers game over via handle_player_death
  • Gauge position: column = (fuel >> 2) + $40, row = $A8
consume_fuel 6DFF LD A,($5EEF) Skip if odd tick (fuel only consumed on even ticks).
6E02 AND $01
6E04 CP $00
6E06 RET NZ
6E07 LD A,($5F66) Decrement fuel level in state_fuel.
6E0A DEC A
6E0B LD ($5F66),A
6E0E AND $03 Skip gauge update unless (fuel AND 3) == 0 (every 4th decrement).
6E10 CP $00
6E12 RET NZ
6E13 LD A,($5F66) If fuel == 0, game over (jump to handle_player_death).
6E16 CP $00
6E18 JP Z,handle_player_death
6E1B AND $C0 If fuel low (top 2 bits = 0), call register_low_fuel to set low fuel warning.
6E1D CP $00
6E1F CALL Z,register_low_fuel
update_fuel_gauge 6E22 LD A,($5F66) Calculate gauge position: B = $A8 (row), C = (fuel >> 2) + $40 (column).
6E25 LD B,$A8
6E27 SRL A
6E29 SRL A
6E2B ADD A,$40
6E2D LD C,A
6E2E CALL calculate_pixel_address Compute screen address from B,C coordinates.
draw_fuel_gauge_loop 6E31 LD A,$08 Loop counter: 8 rows of gauge.
6E33 LD D,$86 Set pixel pattern $86 for gauge.
draw_fuel_gauge_row_loop 6E35 PUSH AF Draw row, move down, decrement counter, loop for 8 rows.
6E36 CALL calculate_fuel_gauge_offset
6E39 INC H
6E3A POP AF
6E3B DEC A
6E3C JP NZ,draw_fuel_gauge_row_loop
6E3F RET
Prev: 6DEB Up: Map Next: 6E40