Prev: D260 Up: Map Next: D33E
D2F2: Goldfish Game: Air Bar
Used by the routine at GoldfishGame.
Only remove air every 16th frame.
GoldfishGame_AirBar D2F2 LD A,($D93D) A=*GoldfishGame_BuoyancyCounter.
D2F5 AND %00001111 Only proceed every 16th frame, otherwise return.
D2F7 RET NZ
This entry point is used by the routines at GoldfishGame and GoldfishGame_RefillOxygen.
GoldfishGame_PrintAirBar D2F8 LD HL,$D22E Write D22E (UDG_AirBar) to *CHARS.
D2FB LD ($5C36),HL
Set the co-ordinates of where we're going to PRINT AT.
D2FE LD B,$02 Set up the screen buffer location 15/02 using CL_SET.
D300 LD C,$15
D302 CALL $0DD9
Set the attributes.
D305 LD A,$10 Set INK: RED (02).
D307 RST $10
D308 LD A,$02
D30A RST $10
D30B LD A,$11 Set PAPER: CYAN (05).
D30D RST $10
D30E LD A,$05
D310 RST $10
D311 LD A,($D33E) Is *GoldfishGame_OxygenLevel zero?
D314 CP $00
D316 PUSH AF Stash the current oxygen level on the stack.
D317 CALL Z,GoldfishGame_DropFish Call GoldfishGame_DropFish if the current oxygen level is zero.
D31A POP AF Restore the current oxygen level from the stack.
D31B JR Z,GoldfishGame_PrintNoAirBar Jump to GoldfishGame_PrintNoAirBar if the current oxygen level is zero.
The player has air, so deplete it here.
D31D DEC A Decrease the current oxygen level by one, and write it back to *GoldfishGame_OxygenLevel.
D31E LD ($D33E),A
Now draw a visual representation of the air level to the screen.
D321 LD B,A B=the current oxygen level+01 (as a counter for drawing the air bar).
D322 INC B
D323 LD A,$20 A=UDG_AirBar (20).
GoldfishGame_PrintAirBar_Loop D325 PUSH AF Stash the air bar UDG reference on the stack.
D326 RST $10 Print to the screen using RST 10.
D327 POP AF Restore the air bar UDG reference from the stack.
D328 DJNZ GoldfishGame_PrintAirBar_Loop Decrease the air bar counter by one and loop back to GoldfishGame_PrintAirBar_Loop until the counter is zero.
Print some empty space to mask off the end of the air bar.
GoldfishGame_PrintNoAirBar D32A LD A,$21 A=UDG_NoAirBar (21).
D32C RST $10 Print to the screen using RST 10.
D32D RET Return.
UDG_AirBar D32E DEFB $00,$00,$FF,$FF,$FF,$FF,$00,$00
udg54062_42x4
UDG_NoAirBar D336 DEFB $00,$00,$00,$00,$00,$00,$00,$00
udg54070_42x4
Prev: D260 Up: Map Next: D33E