Routines |
Prev: 8944 | Up: Map | Next: 8A75 |
8A3C | LD A,($80BD) | Update the game clock at 80BD | ||
8A3F | SUB $04 | |||
8A41 | LD ($80BD),A | |||
8A44 | CP $FC | Was it just decreased from zero? | ||
8A46 | JR NZ,$8A55 | Jump if not | ||
8A48 | LD A,($80BC) | Pick up the value of the remaining air supply from 80BC | ||
8A4B | CP $24 | Has the air supply run out? | ||
8A4D | RET Z | Return (with the zero flag set) if so | ||
8A4E | DEC A | Decrement the air supply at 80BC | ||
8A4F | LD ($80BC),A | |||
8A52 | LD A,($80BD) | Pick up the value of the game clock at 80BD | ||
8A55 | AND $E0 | A=INT(A/32); this value specifies how many pixels to draw from left to right in the cell at the right end of the air bar | ||
8A57 | RLCA | |||
8A58 | RLCA | |||
8A59 | RLCA | |||
8A5A | LD E,$00 | Initialise E to 0 (all bits reset) | ||
8A5C | OR A | Do we need to draw any pixels in the cell at the right end of the air bar? | ||
8A5D | JR Z,$8A66 | Jump if not | ||
8A5F | LD B,A | Copy the number of pixels to draw (1-7) to B | ||
8A60 | RRC E | Set this many bits in E (from bit 7 towards bit 0) | ||
8A62 | SET 7,E | |||
8A64 | DJNZ $8A60 | |||
8A66 | LD A,($80BC) | Pick up the value of the remaining air supply from 80BC | ||
8A69 | LD L,A | Set HL to the display file address at which to draw the top row of pixels in the cell at the right end of the air bar | ||
8A6A | LD H,$52 | |||
8A6C | LD B,$04 | There are four rows of pixels to draw | ||
8A6E | LD (HL),E | Draw the four rows of pixels at the right end of the air bar | ||
8A6F | INC H | |||
8A70 | DJNZ $8A6E | |||
8A72 | XOR A | Reset the zero flag to indicate that there is still some air remaining; these instructions are redundant, since the zero flag is already reset at this point | ||
8A73 | INC A | |||
8A74 | RET |
Prev: 8944 | Up: Map | Next: 8A75 |