diff options
Diffstat (limited to 'engine/time.asm')
-rwxr-xr-x | engine/time.asm | 342 |
1 files changed, 174 insertions, 168 deletions
diff --git a/engine/time.asm b/engine/time.asm index 8b3f5d758..fce01ffac 100755 --- a/engine/time.asm +++ b/engine/time.asm @@ -1,104 +1,104 @@ -Function113d6: ; 113d6 - call Function114dd +_InitializeStartDay: ; 113d6 + call InitializeStartDay ret ; 113da -Function113da: ; 113da +ClearDailyTimers: ; 113da xor a ld [wLuckyNumberDayBuffer], a - ld [wdc3a], a - ld [wdc1c], a + ld [wUnusedTwoDayTimer], a + ld [wDailyResetTimer], a ret ; 113e5 -Function113e5:: ; 113e5 +InitCallReceiveDelay:: ; 113e5 xor a - ld [wd464], a + ld [wTimeCyclesSinceLastCall], a -Function113e9: ; 113e9 - ld a, [wd464] +NextCallReceiveDelay: ; 113e9 + ld a, [wTimeCyclesSinceLastCall] cp 3 - jr c, .asm_113f2 + jr c, .okay ld a, 3 -.asm_113f2 +.okay ld e, a ld d, 0 - ld hl, .data_113fd + ld hl, .ReceiveCallDelays add hl, de ld a, [hl] - jp Function1142e + jp RestartReceiveCallDelay ; 113fd -.data_113fd +.ReceiveCallDelays db 20, 10, 5, 3 ; 11401 -Function11401: ; 11401 - call Function1143c +CheckReceiveCallTimer: ; 11401 + call CheckReceiveCallDelay ; check timer ret nc - ld hl, wd464 + ld hl, wTimeCyclesSinceLastCall ld a, [hl] cp 3 - jr nc, .asm_1140e + jr nc, .ok inc [hl] -.asm_1140e - call Function113e9 +.ok + call NextCallReceiveDelay ; restart timer scf ret ; 11413 -Function11413: ; 11413 +InitOneDayCountdown: ; 11413 ld a, 1 -Function11415: ; 11415 +InitNDaysCountdown: ; 11415 ld [hl], a push hl call UpdateTime pop hl inc hl - call Function11621 + call CopyDayToHL ret ; 11420 -Function11420: ; 11420 +CheckDayDependentEventHL: ; 11420 inc hl push hl - call Function115cf - call Function115c8 + call CalcDaysSince + call GetDaysSince pop hl dec hl - call Function11586 + call UpdateTimeRemaining ret ; 1142e -Function1142e: ; 1142e - ld hl, wd465 +RestartReceiveCallDelay: ; 1142e + ld hl, wReceiveCallDelay_MinsRemaining ld [hl], a call UpdateTime - ld hl, wd466 - call Function1162e + ld hl, wReceiveCallDelay_StartTime + call CopyDayHourMinToHL ret ; 1143c -Function1143c: ; 1143c - ld hl, wd466 - call Function115d6 - call Function115ae - ld hl, wd465 - call Function11586 +CheckReceiveCallDelay: ; 1143c + ld hl, wReceiveCallDelay_StartTime + call CalcMinsHoursDaysSince + call GetMinutesSinceIfLessThan60 + ld hl, wReceiveCallDelay_MinsRemaining + call UpdateTimeRemaining ret ; 1144c -Function1144c: ; 1144c - ld hl, wdc1c - jp Function11413 +RestartDailyResetTimer: ; 1144c + ld hl, wDailyResetTimer + jp InitOneDayCountdown ; 11452 -Function11452:: ; 11452 - ld hl, wdc1c - call Function11420 +CheckDailyResetTimer:: ; 11452 + ld hl, wDailyResetTimer + call CheckDayDependentEventHL ret nc xor a ld hl, DailyFlags @@ -121,18 +121,19 @@ endr ld hl, wdc58 ld a, [hl] and a - jr z, .asm_11480 + jr z, .RestartKenjiBreakCountdown dec [hl] - jr nz, .asm_11483 + jr nz, .DontRestartKenjiBreakCountdown -.asm_11480 - call Function11485 +.RestartKenjiBreakCountdown + call Special_SampleKenjiBreakCountdown -.asm_11483 - jr Function1144c +.DontRestartKenjiBreakCountdown + jr RestartDailyResetTimer ; 11485 -Function11485: ; 11485 +Special_SampleKenjiBreakCountdown: ; 11485 +; Generate a random number between 3 and 5 call Random and 3 add 3 @@ -140,99 +141,101 @@ Function11485: ; 11485 ret ; 11490 -Function11490: ; 11490 - ld a, $14 - ld [wd46c], a - ld a, $0 - ld [wd46d], a +StartBugContestTimer: ; 11490 + ld a, 20 + ld [wBugContestMinsRemaining], a + ld a, 0 + ld [wBugContestSecsRemaining], a call UpdateTime - ld hl, wdc35 - call Function11613 + ld hl, wBugContestStartTime + call CopyDayHourMinSecToHL ret ; 114a4 -Function114a4:: ; 114a4 (4:54a4) - ld hl, wdc35 - call Function115db - ld a, [wcfd7] +CheckBugContestTimer:: ; 114a4 (4:54a4) + ld hl, wBugContestStartTime + call CalcSecsMinsHoursDaysSince + ld a, [wDaysSince] and a - jr nz, .asm_114d4 - ld a, [wcfd6] + jr nz, .timed_out + ld a, [wHoursSince] and a - jr nz, .asm_114d4 - ld a, [wcfd4] + jr nz, .timed_out + ld a, [wSecondsSince] ld b, a - ld a, [wd46d] + ld a, [wBugContestSecsRemaining] sub b - jr nc, .asm_114c2 - add $3c -.asm_114c2 - ld [wd46d], a - ld a, [wcfd5] + jr nc, .okay + add 60 + +.okay + ld [wBugContestSecsRemaining], a + ld a, [wMinutesSince] ld b, a - ld a, [wd46c] + ld a, [wBugContestMinsRemaining] sbc b - ld [wd46c], a - jr c, .asm_114d4 + ld [wBugContestMinsRemaining], a + jr c, .timed_out and a ret -.asm_114d4 + +.timed_out xor a - ld [wd46c], a - ld [wd46d], a + ld [wBugContestMinsRemaining], a + ld [wBugContestSecsRemaining], a scf ret -Function114dd: ; 114dd +InitializeStartDay: ; 114dd call UpdateTime - ld hl, wdc23 - call Function11621 + ld hl, wStartDay + call CopyDayToHL ret ; 114e7 -Function114e7:: ; 114e7 - ld hl, wdc23 - call Function115cf - call Function115c8 +CheckPokerusTrick:: ; 114e7 + ld hl, wStartDay + call CalcDaysSince + call GetDaysSince and a - jr z, .asm_114fa + jr z, .done ld b, a callba ApplyPokerusTick -.asm_114fa +.done xor a ret ; 114fc -Function114fc: ; 114fc - ld a, $2 - ld hl, wdc3a +SetUnusedTwoDayTimer: ; 114fc + ld a, 2 + ld hl, wUnusedTwoDayTimer ld [hl], a call UpdateTime - ld hl, wdc3b - call Function11621 + ld hl, wUnusedTwoDayTimerStartDate + call CopyDayToHL ret ; 1150c -Function1150c: ; 1150c - ld hl, wdc3b - call Function115cf - call Function115c8 - ld hl, wdc3a - call Function11586 +CheckUnusedTwoDayTimer: ; 1150c + ld hl, wUnusedTwoDayTimerStartDate + call CalcDaysSince + call GetDaysSince + ld hl, wUnusedTwoDayTimer + call UpdateTimeRemaining ret ; 1151c -Function1151c: ; 1151c +Function1151c: ; unreferenced ld hl, DailyFlags set 2, [hl] ret ; 11522 -Function11522: ; 11522 +Function11522: ; unreferenced and a ld hl, DailyFlags bit 2, [hl] @@ -241,10 +244,10 @@ Function11522: ; 11522 ret ; 1152b -Function1152b: ; 1152b +RestartLuckyNumberCountdown: ; 1152b call .GetDaysUntilNextFriday ld hl, wLuckyNumberDayBuffer - jp Function11415 + jp InitNDaysCountdown ; 11534 .GetDaysUntilNextFriday: ; 11534 @@ -262,172 +265,175 @@ Function1152b: ; 1152b ret ; 11542 -Function11542: ; 11542 +CheckLuckyNumberShowFlag: ; 11542 ld hl, wLuckyNumberDayBuffer - jp Function11420 + jp CheckDayDependentEventHL ; 11548 -Function11548: ; 11548 - ld a, BANK(s0_abfa) +DoMysteryGiftIfDayHasPassed: ; 11548 + ld a, BANK(sMysteryGiftTimer) call GetSRAMBank - ld hl, s0_abfa + ld hl, sMysteryGiftTimer ld a, [hli] ld [Buffer1], a ld a, [hl] ld [Buffer2], a call CloseSRAM + ld hl, Buffer1 - call Function11420 - jr nc, .asm_11572 + call CheckDayDependentEventHL + jr nc, .not_timed_out ld hl, Buffer1 - call Function11413 + call InitOneDayCountdown call CloseSRAM callba Function1050c8 -.asm_11572 - ld a, BANK(s0_abfa) +.not_timed_out + ld a, BANK(sMysteryGiftTimer) call GetSRAMBank ld hl, Buffer1 ld a, [hli] - ld [s0_abfa], a + ld [sMysteryGiftTimer], a ld a, [hl] - ld [s0_abfa + 1], a + ld [sMysteryGiftTimer + 1], a call CloseSRAM ret ; 11586 -Function11586: ; 11586 +UpdateTimeRemaining: ; 11586 +; If the amount of time elapsed exceeds the capacity of its +; unit, skip this part. cp -1 - jr z, .skip + jr z, .set_carry ld c, a - ld a, [hl] + ld a, [hl] ; time remaining sub c jr nc, .ok xor a .ok ld [hl], a - jr z, .skip + jr z, .set_carry xor a ret -.skip +.set_carry xor a ld [hl], a scf ret ; 11599 -Function11599: ; 11599 - ld a, [wcfd7] +GetSecondsSinceIfLessThan60: ; 11599 + ld a, [wDaysSince] and a - jr nz, Function115cc - ld a, [wcfd6] + jr nz, GetTimeElapsed_ExceedsUnitLimit + ld a, [wHoursSince] and a - jr nz, Function115cc - ld a, [wcfd5] - jr nz, Function115cc - ld a, [wcfd4] + jr nz, GetTimeElapsed_ExceedsUnitLimit + ld a, [wMinutesSince] + jr nz, GetTimeElapsed_ExceedsUnitLimit + ld a, [wSecondsSince] ret ; 115ae -Function115ae: ; 115ae - ld a, [wcfd7] +GetMinutesSinceIfLessThan60: ; 115ae + ld a, [wDaysSince] and a - jr nz, Function115cc - ld a, [wcfd6] + jr nz, GetTimeElapsed_ExceedsUnitLimit + ld a, [wHoursSince] and a - jr nz, Function115cc - ld a, [wcfd5] + jr nz, GetTimeElapsed_ExceedsUnitLimit + ld a, [wMinutesSince] ret ; 115be -Function115be: ; 115be - ld a, [wcfd7] +GetHoursSinceIfLessThan24: ; 115be + ld a, [wDaysSince] and a - jr nz, Function115cc - ld a, [wcfd6] + jr nz, GetTimeElapsed_ExceedsUnitLimit + ld a, [wHoursSince] ret ; 115c8 -Function115c8: ; 115c8 - ld a, [wcfd7] +GetDaysSince: ; 115c8 + ld a, [wDaysSince] ret ; 115cc -Function115cc: ; 115cc - ld a, $ff +GetTimeElapsed_ExceedsUnitLimit: ; 115cc + ld a, -1 ret ; 115cf -Function115cf: ; 115cf +CalcDaysSince: ; 115cf xor a - jr Function11605 + jr _CalcDaysSince ; 115d2 -Function115d2: ; 115d2 +CalcHoursDaysSince: ; 115d2 inc hl xor a - jr Function115f8 + jr _CalcHoursDaysSince ; 115d6 -Function115d6: ; 115d6 +CalcMinsHoursDaysSince: ; 115d6 rept 2 inc hl endr xor a - jr Function115eb + jr _CalcMinsHoursDaysSince ; 115db -Function115db: ; 115db +CalcSecsMinsHoursDaysSince: ; 115db rept 3 inc hl endr ld a, [hSeconds] ld c, a sub [hl] - jr nc, .asm_115e6 + jr nc, .skip add 60 -.asm_115e6 - ld [hl], c +.skip + ld [hl], c ; current seconds dec hl - ld [wcfd4], a + ld [wSecondsSince], a ; seconds since -Function115eb: ; 115eb +_CalcMinsHoursDaysSince: ; 115eb ld a, [hMinutes] ld c, a sbc [hl] - jr nc, .asm_115f3 + jr nc, .skip add 60 -.asm_115f3 - ld [hl], c +.skip + ld [hl], c ; current minutes dec hl - ld [wcfd5], a + ld [wMinutesSince], a ; minutes since -Function115f8: ; 115f8 +_CalcHoursDaysSince: ; 115f8 ld a, [hHours] ld c, a sbc [hl] - jr nc, .asm_11600 + jr nc, .skip add 24 -.asm_11600 - ld [hl], c +.skip + ld [hl], c ; current hours dec hl - ld [wcfd6], a + ld [wHoursSince], a ; hours since -Function11605 +_CalcDaysSince: ld a, [CurDay] ld c, a sbc [hl] jr nc, .skip add 20 * 7 .skip - ld [hl], c - ld [wcfd7], a + ld [hl], c ; current days + ld [wDaysSince], a ; days since ret ; 11613 -Function11613: ; 11613 +CopyDayHourMinSecToHL: ; 11613 ld a, [CurDay] ld [hli], a ld a, [hHours] @@ -439,13 +445,13 @@ Function11613: ; 11613 ret ; 11621 -Function11621: ; 11621 +CopyDayToHL: ; 11621 ld a, [CurDay] ld [hl], a ret ; 11626 -Function11626: ; 11626 +CopyDayHourToHL: ; 11626 ld a, [CurDay] ld [hli], a ld a, [hHours] @@ -453,7 +459,7 @@ Function11626: ; 11626 ret ; 1162e -Function1162e: ; 1162e +CopyDayHourMinToHL: ; 1162e ld a, [CurDay] ld [hli], a ld a, [hHours] |