diff options
author | pikalaxalt <PikalaxALT@gmail.com> | 2016-06-24 22:04:47 -0400 |
---|---|---|
committer | pikalaxalt <PikalaxALT@gmail.com> | 2016-06-24 22:04:47 -0400 |
commit | a4dad2419827cd43dc426058e25d75d38e0f32df (patch) | |
tree | 0e39557fcced952bdde195b43cc37d8f1e6dfbad | |
parent | dcda0bae06ec186eb29dc7a4332962864c69cc4d (diff) |
engine/time.asm
-rwxr-xr-x | engine/specials.asm | 2 | ||||
-rwxr-xr-x | engine/time.asm | 378 | ||||
-rw-r--r-- | main.asm | 20 | ||||
-rwxr-xr-x | sram.asm | 3 | ||||
-rw-r--r-- | wram.asm | 28 |
5 files changed, 401 insertions, 30 deletions
diff --git a/engine/specials.asm b/engine/specials.asm index 5616a4b1..c08cee11 100755 --- a/engine/specials.asm +++ b/engine/specials.asm @@ -388,7 +388,7 @@ Functionc53c: ; c53c (3:453c) Special_CheckUnusedTwoDayTimer: ; c549 (3:4549) callba Function118f8 - ld a, [wd984] + ld a, [wUnusedTwoDayTimer] ld [wScriptVar], a ret diff --git a/engine/time.asm b/engine/time.asm new file mode 100755 index 00000000..7ad065fc --- /dev/null +++ b/engine/time.asm @@ -0,0 +1,378 @@ +InitializeStartDay_: ; 117f1 (4:57f1) + call Function118c9 + ret + +ClearDailyTimers: + xor a + ld [wLuckyNumberDayBuffer], a + ld [wUnusedTwoDayTimer], a + ld [wDailyResetTimer], a + ret + +InitCallReceiveDelay: + xor a + ld [wTimeCyclesSinceLastCall], a +Function11804: ; 11804 (4:5804) + ld a, [wTimeCyclesSinceLastCall] + cp $3 + jr c, .asm_1180d + ld a, $3 +.asm_1180d + ld e, a + ld d, $0 + ld hl, .ReceiveCallDelays + add hl, de + ld a, [hl] + jp Function11849 + +.ReceiveCallDelays: + db 20, 10, 5, 3 + +CheckReceiveCallTimer: + call Function11857 + ret nc + ld hl, wTimeCyclesSinceLastCall + ld a, [hl] + cp $3 + jr nc, .asm_11829 + inc [hl] +.asm_11829 + call Function11804 + scf + ret + +Function1182e: ; 1182e (4:582e) + ld a, $1 +Function11830: + ld [hl], a + push hl + call UpdateTime + pop hl + inc hl + call CopyDayToHL + ret + +Function1183b: ; 1183b (4:583b) + inc hl + push hl + call CalcDaysSince + call Function119b4 + pop hl + dec hl + call Function11972 + ret + +Function11849: ; 11849 (4:5849) + ld hl, wReceiveCallDelay_MinsRemaining + ld [hl], a + call UpdateTime + ld hl, wReceiveCallDelay_StartTime + call CopyDayHourMinToHL + ret + +Function11857: ; 11857 (4:5857) + ld hl, wReceiveCallDelay_StartTime + call CalcMinsHoursDaysSince + call Function1199a + ld hl, wReceiveCallDelay_MinsRemaining + call Function11972 + ret + +asm_11867 + ld hl, wDailyResetTimer + jp Function1182e + +CheckDailyResetTimer: + ld hl, wDailyResetTimer + call Function1183b + ret nc + xor a + ld hl, wDailyFlags + ld [hli], a + ld [hl], a + jr asm_11867 + +StartBugContestTimer: + ld a, 20 + ld [wBugContestMinsRemaining], a + ld a, 0 + ld [wBugContestSecsRemaining], a + call UpdateTime + ld hl, wBugContestStartTime + call CopyDayHourMinSecToHL + ret + +CheckBugContestTimer: + ld hl, wBugContestStartTime + call CalcSecsMinsHoursDaysSince + ld a, [wDaysSince] + and a + jr nz, .asm_118c0 + ld a, [wHoursSince] + and a + jr nz, .asm_118c0 + ld a, [wSecsSince] + ld b, a + ld a, [wBugContestSecsRemaining] + sub b + jr nc, .asm_118ae + add 60 +.asm_118ae + ld [wBugContestSecsRemaining], a + ld a, [wMinsSince] + ld b, a + ld a, [wBugContestMinsRemaining] + sbc b + ld [wBugContestMinsRemaining], a + jr c, .asm_118c0 + and a + ret + +.asm_118c0 + xor a + ld [wBugContestMinsRemaining], a + ld [wBugContestSecsRemaining], a + scf + ret + +Function118c9: ; 118c9 (4:58c9) + call UpdateTime + ld hl, wStartDay + call CopyDayToHL + ret + +CheckPokerusTick: + ld hl, wStartDay + call CalcDaysSince + call Function119b4 + and a + jr z, .asm_118e6 + ld b, a + callba ApplyPokerusTick ; same bank +.asm_118e6 + xor a + ret + +SetUnusedTwoDayTimer: + ld a, $2 + ld hl, wUnusedTwoDayTimer + ld [hl], a + call UpdateTime + ld hl, wUnusedTwoDayTimerStartDate + call CopyDayToHL + ret + +Function118f8: ; 118f8 (4:58f8) + ld hl, wUnusedTwoDayTimerStartDate + call CalcDaysSince + call Function119b4 + ld hl, wUnusedTwoDayTimer + call Function11972 + ret + + ld hl, wDailyFlags + set 2, [hl] + ret + + and a + ld hl, wDailyFlags + bit 2, [hl] + ret nz + scf + ret + +Function11917: ; 11917 (4:5917) + call Function11920 + ld hl, wLuckyNumberDayBuffer + jp Function11830 + +Function11920: ; 11920 (4:5920) + call GetWeekday + ld c, a + ld a, $5 + sub c + jr z, .asm_1192b + jr nc, .asm_1192d +.asm_1192b + add $7 +.asm_1192d + ret + +Function1192e: ; 1192e (4:592e) + ld hl, wLuckyNumberDayBuffer + jp Function1183b + +Function11934: ; 11934 (4:5934) + ld a, BANK(sMysteryGiftTimer) + call OpenSRAM + ld hl, sMysteryGiftTimer + ld a, [hli] + ld [wCurHPAnimMaxHP], a + ld a, [hl] + ld [wBuffer2], a + call CloseSRAM + ld hl, wCurHPAnimMaxHP + call Function1183b + jr nc, .asm_1195e + ld hl, wCurHPAnimMaxHP + call Function1182e + call CloseSRAM + callba Function2a4f6 +.asm_1195e + ld a, BANK(sMysteryGiftTimer) + call OpenSRAM + ld hl, wBuffer1 + ld a, [hli] + ld [sMysteryGiftTimer], a + ld a, [hl] + ld [sMysteryGiftTimer + 1], a + call CloseSRAM + ret + +Function11972: ; 11972 (4:5972) + cp $ff + jr z, .asm_11981 + ld c, a + ld a, [hl] + sub c + jr nc, .asm_1197c + xor a +.asm_1197c + ld [hl], a + jr z, .asm_11981 + xor a + ret + +.asm_11981 + xor a + ld [hl], a + scf + ret + +GetSecondsSinceIfLessThan60: + ld a, [wDaysSince] + and a + jr nz, asm_119b8 + ld a, [wHoursSince] + and a + jr nz, asm_119b8 + ld a, [wMinsSince] + jr nz, asm_119b8 + ld a, [wSecsSince] + ret + +Function1199a: ; 1199a (4:599a) + ld a, [wDaysSince] + and a + jr nz, asm_119b8 + ld a, [wHoursSince] + and a + jr nz, asm_119b8 + ld a, [wMinsSince] + ret + +GetHoursSinceIfLessThan24: + ld a, [wDaysSince] + and a + jr nz, asm_119b8 + ld a, [wHoursSince] + ret + +Function119b4: ; 119b4 (4:59b4) + ld a, [wDaysSince] + ret + +asm_119b8 + ld a, $ff + ret + +CalcDaysSince: ; 119bb (4:59bb) + xor a + jr CalcDaysSince_ + +CalcHoursDaysSince: + inc hl + xor a + jr CalcHoursDaysSince_ + +CalcMinsHoursDaysSince: ; 119c2 (4:59c2) + inc hl + inc hl + xor a + jr CalcMinsHoursDaysSince_ + +CalcSecsMinsHoursDaysSince: ; 119c7 (4:59c7) + inc hl + inc hl + inc hl + ld a, [hSeconds] + ld c, a + sub [hl] + jr nc, .asm_119d2 + add 60 +.asm_119d2 + ld [hl], c + dec hl + ld [wSecsSince], a +CalcMinsHoursDaysSince_ + ld a, [hMinutes] + ld c, a + sbc [hl] + jr nc, .asm_119df + add 60 +.asm_119df + ld [hl], c + dec hl + ld [wMinsSince], a +CalcHoursDaysSince_ + ld a, [hHours] + ld c, a + sbc [hl] + jr nc, .asm_119ec + add 24 +.asm_119ec + ld [hl], c + dec hl + ld [wHoursSince], a +CalcDaysSince_: + ld a, [wCurDay] + ld c, a + sbc [hl] + jr nc, .asm_119fa + add 20 * 7 +.asm_119fa + ld [hl], c + ld [wDaysSince], a + ret + +CopyDayHourMinSecToHL: ; 119ff (4:59ff) + ld a, [wCurDay] + ld [hli], a + ld a, [hHours] + ld [hli], a + ld a, [hMinutes] + ld [hli], a + ld a, [hSeconds] + ld [hli], a + ret + +CopyDayToHL: ; 11a0d (4:5a0d) + ld a, [wCurDay] + ld [hl], a + ret + +CopyDayHourToHL: + ld a, [wCurDay] + ld [hli], a + ld a, [hHours] + ld [hli], a + ret + +CopyDayHourMinToHL: ; 11a1a (4:5a1a) + ld a, [wCurDay] + ld [hli], a + ld a, [hHours] + ld [hli], a + ld a, [hMinutes] + ld [hli], a + ret @@ -636,17 +636,7 @@ SECTION "bank4", ROMX, BANK[$4] INCLUDE "engine/player_movement.asm" INCLUDE "engine/pack.asm" - -InitializeStartDay_: - dr $117f1, $118f8 -Function118f8: - dr $118f8, $11917 -Function11917: - dr $11917, $1192e -Function1192e: - dr $1192e, $11934 -Function11934: - dr $11934, $11a25 +INCLUDE "engine/time.asm" CanLearnTMHMMove:: dr $11a25, $11a56 @@ -672,7 +662,9 @@ Function12fa0: Function1399d: dr $1399d, $13a5f Function13a5f: - dr $13a5f, $13d64 + dr $13a5f, $13d44 +ApplyPokerusTick: + dr $13d44, $13d64 Function13d64: dr $13d64, $13dce Function13dce: @@ -855,7 +847,9 @@ Function29dff: MysteryGift_CopyReceivedDecosToPC: dr $2a4bf, $2a4e7 Function2a4e7: - dr $2a4e7, $2a7d7 + dr $2a4e7, $2a4f6 +Function2a4f6: + dr $2a4f6, $2a7d7 Function2a7d7: dr $2a7d7, $2a8e0 JumpRoamMons: @@ -1895,8 +1895,7 @@ s0_abf6:: ds 1 ; 0:abf6 s0_abf7:: ds 1 ; 0:abf7 s0_abf8:: ds 1 ; 0:abf8 s0_abf9:: ds 1 ; 0:abf9 -s0_abfa:: ds 1 ; 0:abfa -s0_abfb:: ds 1 ; 0:abfb +sMysteryGiftTimer:: ds 2 ; 0:abfa s0_abfc:: ds 1 ; 0:abfc s0_abfd:: ds 1 ; 0:abfd s0_abfe:: ds 1 ; 0:abfe @@ -2049,10 +2049,10 @@ wRequested1bpp:: ds 1 ; ce6c wRequested1bppSource:: dw ; ce6d wRequested1bppDest:: dw ; ce6f -wce71:: ds 1 ; ce71 -wce72:: ds 1 ; ce72 -wce73:: ds 1 ; ce73 -wce74:: ds 1 ; ce74 +wSecsSince:: ds 1 ; ce71 +wMinsSince:: ds 1 ; ce72 +wHoursSince:: ds 1 ; ce73 +wDaysSince:: ds 1 ; ce74 wce75:: ds 1 ; ce75 wce76:: ds 1 ; ce76 wce77:: ds 1 ; ce77 @@ -2698,16 +2698,16 @@ wd187:: ds 1 ; d187 wd188:: ds 1 ; d188 wd189:: ds 1 ; d189 wd18a:: ds 1 ; d18a -wd18b:: ds 1 ; d18b -wd18c:: ds 1 ; d18c -wd18d:: ds 1 ; d18d +wTimeCyclesSinceLastCall:: ds 1 ; d18b +wReceiveCallDelay_MinsRemaining:: ds 1 ; d18c +wReceiveCallDelay_StartTime:: ds 1 ; d18d wd18e:: ds 1 ; d18e wd18f:: ds 1 ; d18f wd190:: ds 1 ; d190 wd191:: ds 1 ; d191 wd192:: ds 1 ; d192 wBugContestMinsRemaining:: ds 1 ; d193 -wd194:: ds 1 ; d194 +wBugContestSecsRemaining:: ds 1 ; d194 wd195:: ds 1 ; d195 wd196:: ds 1 ; d196 wd197:: ds 1 ; d197 @@ -3440,14 +3440,14 @@ wd962:: ds 1 ; d962 wMomItemTriggerBalance:: ds 3 ; d963 -wd966:: ds 1 ; d966 +wDailyResetTimer:: ds 1 ; d966 wd967:: ds 1 ; d967 wDailyFlags:: ds 1 ; d968 wWeeklyFlags:: ds 1 ; d969 wd96a:: ds 1 ; d96a wd96b:: ds 1 ; d96b wd96c:: ds 1 ; d96c -wd96d:: ds 1 ; d96d +wStartDay:: ds 1 ; d96d wd96e:: ds 1 ; d96e wd96f:: ds 1 ; d96f wd970:: ds 1 ; d970 @@ -3457,7 +3457,7 @@ wd973:: ds 1 ; d973 wd974:: ds 1 ; d974 wd975:: ds 1 ; d975 wd976:: ds 1 ; d976 -wd977:: ds 1 ; d977 +wLuckyNumberDayBuffer:: ds 1 ; d977 wd978:: ds 1 ; d978 wd979:: ds 1 ; d979 wd97a:: ds 1 ; d97a @@ -3465,13 +3465,13 @@ wSpecialPhoneCallID:: ds 1 ; d97b wd97c:: ds 1 ; d97c wd97d:: ds 1 ; d97d wd97e:: ds 1 ; d97e -wd97f:: ds 1 ; d97f +wBugContestStartTime:: ds 1 ; d97f wd980:: ds 1 ; d980 wd981:: ds 1 ; d981 wd982:: ds 1 ; d982 wUnusedTwoDayTimerOn:: ds 1 ; d983 -wd984:: ds 1 ; d984 -wd985:: ds 1 ; d985 +wUnusedTwoDayTimer:: ds 1 ; d984 +wUnusedTwoDayTimerStartDate:: ds 1 ; d985 wd986:: ds 1 ; d986 wd987:: ds 1 ; d987 wd988:: ds 1 ; d988 |