Routines |
Prev: CB22 | Up: Map | Next: CB65 |
Used by the routine at B12B.
|
||||
Handler_Time | CB40 | LD HL,$C272 | HL=Time_Remaining. | |
Fetch the small unit of time (e.g. for "250" this is "50").
|
||||
CB43 | LD A,(HL) | A=*HL. | ||
Take off one unit of time (see Infinite Time).
|
||||
CB44 | SUB $01 | A-=01 with BCD conversion. | ||
CB46 | DAA | |||
CB47 | LD (HL),A | Write A to *HL. | ||
CB48 | RET NC | Return if A is higher than 00. | ||
We've ticked over the small unit, so move onto the larger unit.
|
||||
CB49 | INC HL | Increment HL by one. | ||
Fetch the large unit of time (e.g. for "250" this is "2").
|
||||
CB4A | LD A,(HL) | A=*HL. | ||
Take off one unit of time.
|
||||
CB4B | SUB $01 | A-=01 with BCD conversion. | ||
CB4D | DAA | |||
CB4E | LD (HL),A | Write A to *HL. | ||
CB4F | JR NZ,Handler_Time_Up | Jump to Handler_Time_Up if A is not zero. | ||
Flash the bonus/ time countdown when the large unit is zero.
|
||||
CB51 | LD HL,$583B | HL=583B (attribute buffer address for the bonus/ time counter). | ||
CB54 | LD B,$04 | B=04 (counter). | ||
Handler_Time_Flash | CB56 | SET 7,(HL) | Set bit 7 (the flash bit) of *HL. | |
CB58 | INC L | Increment L by one. | ||
CB59 | DJNZ Handler_Time_Flash | Decrease counter by one and loop back to Handler_Time_Flash until counter is zero. | ||
CB5B | RET | Return. | ||
Is there any time left?
|
||||
Handler_Time_Up | CB5C | RET NC | Return if A is higher than 00 (if there is still time left). | |
There's no time left, signify the game is over.
|
||||
CB5D | POP HL | Clear the stack. | ||
CB5E | POP HL | |||
CB5F | LD HL,$B008 | HL=B008. | ||
CB62 | SET 2,(HL) | Set bit 2 of *HL. | ||
CB64 | RET | Return. |
Prev: CB22 | Up: Map | Next: CB65 |