![]() |
Routines |
Prev: 35140 | Up: Map |
|
||||||||
35388 | LD A,(32957) | Update the game clock at 32957 | ||||||
35391 | SUB 4 | |||||||
35393 | LD (32957),A | |||||||
35396 | CP 252 | Was it just decreased from zero? | ||||||
35398 | JR NZ,35413 | Jump if not | ||||||
35400 | LD A,(32956) | Pick up the value of the remaining air supply from 32956 | ||||||
35403 | CP 36 | Has the air supply run out? | ||||||
35405 | RET Z | Return (with the zero flag set) if so | ||||||
35406 | DEC A | Decrement the air supply at 32956 | ||||||
35407 | LD (32956),A | |||||||
35410 | LD A,(32957) | Pick up the value of the game clock at 32957 | ||||||
35413 | AND 224 | 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 | ||||||
35415 | RLCA | |||||||
35416 | RLCA | |||||||
35417 | RLCA | |||||||
35418 | LD E,0 | Initialise E to 0 (all bits reset) | ||||||
35420 | OR A | Do we need to draw any pixels in the cell at the right end of the air bar? | ||||||
35421 | JR Z,35430 | Jump if not | ||||||
35423 | LD B,A | Copy the number of pixels to draw (1-7) to B | ||||||
35424 | RRC E | Set this many bits in E (from bit 7 towards bit 0) | ||||||
35426 | SET 7,E | |||||||
35428 | DJNZ 35424 | |||||||
35430 | LD A,(32956) | Pick up the value of the remaining air supply from 32956 | ||||||
35433 | 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 | ||||||
35434 | LD H,82 | |||||||
35436 | LD B,4 | There are four rows of pixels to draw | ||||||
35438 | LD (HL),E | Draw the four rows of pixels at the right end of the air bar | ||||||
35439 | INC H | |||||||
35440 | DJNZ 35438 | |||||||
35442 | 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 | ||||||
35443 | INC A | |||||||
35444 | RET |
Prev: 35140 | Up: Map |