Prev: 49094 Up: Map Next: 49164
49113: Handler: Game Clock
Used by the routine at Game_Initialisation.
Carries out this step while the game is running.
Handle the game ticker.
Handler_GameClock 49113 LD HL,(40925) Increment *CurrentTime_Ticker by one.
49116 INC HL
49117 LD (40925),HL
Handle the clock minutes.
49120 LD HL,40927 Increment *CurrentTime_Minutes by one.
49123 INC (HL)
49124 LD A,(HL) Return unless the minute count has reached 60.
49125 CP 60
49127 RET NZ
The minutes is at 60, which is invalid - so handle rolling the clock hour digits.
49128 LD (HL),0 Reset the minutes back to 0 at *HL.
Handle the clock hours.
49130 LD HL,40928 Increment *CurrentTime_Hour by one.
49133 INC (HL)
49134 LD A,(HL) Jump to Handler_GameClock_AM_PM unless the hour has reached 13.
49135 CP 13
49137 JR NZ,Handler_GameClock_AM_PM
The hours is at 13. which is invalid - so handle rolling the clock.
49139 LD (HL),1 Reset the hours back to 1 at *HL.
49141 RET Return.
Noon or midnight flips the AM/PM marker.
Handler_GameClock_AM_PM 49142 CP 12 Return unless the hour is 12.
49144 RET NZ
It's either midday or midnight, so flip between AM and PM.
49145 LD A,(40930) Read the AM/PM marker.
Smart way of altering the letter from "a" to "p" and back again.
Letter Bits
"a" 01100001
"p" 01110000
49148 XOR %00010001 Flip bits 0, 4.
49150 LD (40930),A Write this back to *Messaging_AM_PM.
If the clock went from PM to AM, handle rolling the day of the week.
49153 CP 97 Return unless the AM/PM marker is the letter a.
49155 RET NZ
49156 LD A,(40929) Increment *CurrentDayOfWeek by one.
49159 INC A
49160 LD (40929),A
49163 RET Return.
Prev: 49094 Up: Map Next: 49164