summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpikalaxalt <PikalaxALT@gmail.com>2016-06-24 22:04:47 -0400
committerpikalaxalt <PikalaxALT@gmail.com>2016-06-24 22:04:47 -0400
commita4dad2419827cd43dc426058e25d75d38e0f32df (patch)
tree0e39557fcced952bdde195b43cc37d8f1e6dfbad
parentdcda0bae06ec186eb29dc7a4332962864c69cc4d (diff)
engine/time.asm
-rwxr-xr-xengine/specials.asm2
-rwxr-xr-xengine/time.asm378
-rw-r--r--main.asm20
-rwxr-xr-xsram.asm3
-rw-r--r--wram.asm28
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
diff --git a/main.asm b/main.asm
index 2e1ff2fc..4d9fe8c8 100644
--- a/main.asm
+++ b/main.asm
@@ -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:
diff --git a/sram.asm b/sram.asm
index f497a8c6..176d7a92 100755
--- a/sram.asm
+++ b/sram.asm
@@ -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
diff --git a/wram.asm b/wram.asm
index 58cbc3d9..62e34a55 100644
--- a/wram.asm
+++ b/wram.asm
@@ -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