Prev: 52002 Up: Map Next: 52069
52032: Handler: Time
Used by the routine at 45355.
Handler_Time 52032 LD HL,49778 HL=Time_Remaining.
Fetch the small unit of time (e.g. for "250" this is "50").
52035 LD A,(HL) A=*HL.
Take off one unit of time (see Infinite Time).
52036 SUB 1 A-=1 with BCD conversion.
52038 DAA
52039 LD (HL),A Write A to *HL.
52040 RET NC Return if A is higher than 0.
We've ticked over the small unit, so move onto the larger unit.
52041 INC HL Increment HL by one.
Fetch the large unit of time (e.g. for "250" this is "2").
52042 LD A,(HL) A=*HL.
Take off one unit of time.
52043 SUB 1 A-=1 with BCD conversion.
52045 DAA
52046 LD (HL),A Write A to *HL.
52047 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.
52049 LD HL,22587 HL=22587 (attribute buffer address for the bonus/ time counter).
52052 LD B,4 B=4 (counter).
Handler_Time_Flash 52054 SET 7,(HL) Set bit 7 (the flash bit) of *HL.
52056 INC L Increment L by one.
52057 DJNZ Handler_Time_Flash Decrease counter by one and loop back to Handler_Time_Flash until counter is zero.
52059 RET Return.
Is there any time left?
Handler_Time_Up 52060 RET NC Return if A is higher than 0 (if there is still time left).
There's no time left, signify the game is over.
52061 POP HL Clear the stack.
52062 POP HL
52063 LD HL,45064 HL=45064.
52066 SET 2,(HL) Set bit 2 of *HL.
52068 RET Return.
Prev: 52002 Up: Map Next: 52069