mirror of
https://github.com/thornAvery/jep-hack.git
synced 2026-04-04 18:41:51 +13:00
First Commit
Upload literally everything from the pokecrystal16 expand-move-ID branch
This commit is contained in:
commit
2f8a41f833
4618 changed files with 480386 additions and 0 deletions
440
engine/overworld/time.asm
Normal file
440
engine/overworld/time.asm
Normal file
|
|
@ -0,0 +1,440 @@
|
|||
_InitializeStartDay:
|
||||
call InitializeStartDay
|
||||
ret
|
||||
|
||||
ClearDailyTimers:
|
||||
xor a
|
||||
ld [wLuckyNumberDayTimer], a
|
||||
ld [wUnusedTwoDayTimer], a
|
||||
ld [wDailyResetTimer], a
|
||||
ret
|
||||
|
||||
InitCallReceiveDelay::
|
||||
xor a
|
||||
ld [wTimeCyclesSinceLastCall], a
|
||||
|
||||
NextCallReceiveDelay:
|
||||
ld a, [wTimeCyclesSinceLastCall]
|
||||
cp 3
|
||||
jr c, .okay
|
||||
ld a, 3
|
||||
|
||||
.okay
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, .ReceiveCallDelays
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
if DEF(_DEBUG)
|
||||
ld h, a
|
||||
ld a, BANK(sDebugTimeCyclesSinceLastCall)
|
||||
call OpenSRAM
|
||||
ld a, [sDebugTimeCyclesSinceLastCall]
|
||||
call CloseSRAM
|
||||
dec a
|
||||
cp 2
|
||||
jr nc, .debug_ok
|
||||
xor 1
|
||||
ld h, a
|
||||
.debug_ok
|
||||
ld a, h
|
||||
endc
|
||||
jp RestartReceiveCallDelay
|
||||
|
||||
.ReceiveCallDelays:
|
||||
db 20, 10, 5, 3
|
||||
|
||||
CheckReceiveCallTimer:
|
||||
call CheckReceiveCallDelay ; check timer
|
||||
ret nc
|
||||
ld hl, wTimeCyclesSinceLastCall
|
||||
ld a, [hl]
|
||||
cp 3
|
||||
jr nc, .ok
|
||||
inc [hl]
|
||||
|
||||
.ok
|
||||
call NextCallReceiveDelay ; restart timer
|
||||
scf
|
||||
ret
|
||||
|
||||
InitOneDayCountdown:
|
||||
ld a, 1
|
||||
|
||||
InitNDaysCountdown:
|
||||
ld [hl], a
|
||||
push hl
|
||||
call UpdateTime
|
||||
pop hl
|
||||
inc hl
|
||||
call CopyDayToHL
|
||||
ret
|
||||
|
||||
CheckDayDependentEventHL:
|
||||
inc hl
|
||||
push hl
|
||||
call CalcDaysSince
|
||||
call GetDaysSince
|
||||
pop hl
|
||||
dec hl
|
||||
call UpdateTimeRemaining
|
||||
ret
|
||||
|
||||
RestartReceiveCallDelay:
|
||||
ld hl, wReceiveCallDelay_MinsRemaining
|
||||
ld [hl], a
|
||||
call UpdateTime
|
||||
ld hl, wReceiveCallDelay_StartTime
|
||||
call CopyDayHourMinToHL
|
||||
ret
|
||||
|
||||
CheckReceiveCallDelay:
|
||||
ld hl, wReceiveCallDelay_StartTime
|
||||
call CalcMinsHoursDaysSince
|
||||
call GetMinutesSinceIfLessThan60
|
||||
ld hl, wReceiveCallDelay_MinsRemaining
|
||||
call UpdateTimeRemaining
|
||||
ret
|
||||
|
||||
RestartDailyResetTimer:
|
||||
ld hl, wDailyResetTimer
|
||||
jp InitOneDayCountdown
|
||||
|
||||
CheckDailyResetTimer::
|
||||
ld hl, wDailyResetTimer
|
||||
call CheckDayDependentEventHL
|
||||
ret nc
|
||||
xor a
|
||||
ld hl, wDailyFlags1
|
||||
ld [hli], a ; wDailyFlags1
|
||||
ld [hli], a ; wDailyFlags2
|
||||
ld [hli], a ; wSwarmFlags
|
||||
ld [hl], a ; wSwarmFlags + 1
|
||||
ld hl, wDailyRematchFlags
|
||||
rept 4
|
||||
ld [hli], a
|
||||
endr
|
||||
ld hl, wDailyPhoneItemFlags
|
||||
rept 4
|
||||
ld [hli], a
|
||||
endr
|
||||
ld hl, wDailyPhoneTimeOfDayFlags
|
||||
rept 4
|
||||
ld [hli], a
|
||||
endr
|
||||
ld hl, wKenjiBreakTimer
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .RestartKenjiBreakCountdown
|
||||
dec [hl]
|
||||
jr nz, .DontRestartKenjiBreakCountdown
|
||||
.RestartKenjiBreakCountdown:
|
||||
call SampleKenjiBreakCountdown
|
||||
.DontRestartKenjiBreakCountdown:
|
||||
jr RestartDailyResetTimer
|
||||
|
||||
SampleKenjiBreakCountdown:
|
||||
; Generate a random number between 3 and 6
|
||||
call Random
|
||||
and %11
|
||||
add 3
|
||||
ld [wKenjiBreakTimer], a
|
||||
ret
|
||||
|
||||
StartBugContestTimer:
|
||||
ld a, BUG_CONTEST_MINUTES
|
||||
ld [wBugContestMinsRemaining], a
|
||||
ld a, BUG_CONTEST_SECONDS
|
||||
ld [wBugContestSecsRemaining], a
|
||||
call UpdateTime
|
||||
ld hl, wBugContestStartTime
|
||||
call CopyDayHourMinSecToHL
|
||||
ret
|
||||
|
||||
CheckBugContestTimer::
|
||||
ld hl, wBugContestStartTime
|
||||
call CalcSecsMinsHoursDaysSince
|
||||
ld a, [wDaysSince]
|
||||
and a
|
||||
jr nz, .timed_out
|
||||
ld a, [wHoursSince]
|
||||
and a
|
||||
jr nz, .timed_out
|
||||
ld a, [wSecondsSince]
|
||||
ld b, a
|
||||
ld a, [wBugContestSecsRemaining]
|
||||
sub b
|
||||
jr nc, .okay
|
||||
add 60
|
||||
|
||||
.okay
|
||||
ld [wBugContestSecsRemaining], a
|
||||
ld a, [wMinutesSince]
|
||||
ld b, a
|
||||
ld a, [wBugContestMinsRemaining]
|
||||
sbc b
|
||||
ld [wBugContestMinsRemaining], a
|
||||
jr c, .timed_out
|
||||
and a
|
||||
ret
|
||||
|
||||
.timed_out
|
||||
xor a
|
||||
ld [wBugContestMinsRemaining], a
|
||||
ld [wBugContestSecsRemaining], a
|
||||
scf
|
||||
ret
|
||||
|
||||
InitializeStartDay:
|
||||
call UpdateTime
|
||||
ld hl, wTimerEventStartDay
|
||||
call CopyDayToHL
|
||||
ret
|
||||
|
||||
CheckPokerusTick::
|
||||
ld hl, wTimerEventStartDay
|
||||
call CalcDaysSince
|
||||
call GetDaysSince
|
||||
and a
|
||||
jr z, .done ; not even a day has passed since game start
|
||||
ld b, a
|
||||
farcall ApplyPokerusTick
|
||||
.done
|
||||
xor a
|
||||
ret
|
||||
|
||||
SetUnusedTwoDayTimer: ; unreferenced
|
||||
ld a, 2
|
||||
ld hl, wUnusedTwoDayTimer
|
||||
ld [hl], a
|
||||
call UpdateTime
|
||||
ld hl, wUnusedTwoDayTimerStartDate
|
||||
call CopyDayToHL
|
||||
ret
|
||||
|
||||
CheckUnusedTwoDayTimer:
|
||||
ld hl, wUnusedTwoDayTimerStartDate
|
||||
call CalcDaysSince
|
||||
call GetDaysSince
|
||||
ld hl, wUnusedTwoDayTimer
|
||||
call UpdateTimeRemaining
|
||||
ret
|
||||
|
||||
UnusedSetSwarmFlag: ; unreferenced
|
||||
ld hl, wDailyFlags1
|
||||
set DAILYFLAGS1_FISH_SWARM_F, [hl]
|
||||
ret
|
||||
|
||||
UnusedCheckSwarmFlag: ; unreferenced
|
||||
and a
|
||||
ld hl, wDailyFlags1
|
||||
bit DAILYFLAGS1_FISH_SWARM_F, [hl]
|
||||
ret nz
|
||||
scf
|
||||
ret
|
||||
|
||||
RestartLuckyNumberCountdown:
|
||||
call .GetDaysUntilNextFriday
|
||||
ld hl, wLuckyNumberDayTimer
|
||||
jp InitNDaysCountdown
|
||||
|
||||
.GetDaysUntilNextFriday:
|
||||
call GetWeekday
|
||||
ld c, a
|
||||
ld a, FRIDAY
|
||||
sub c
|
||||
jr z, .friday_saturday
|
||||
jr nc, .earlier ; could have done "ret nc"
|
||||
|
||||
.friday_saturday
|
||||
add 7
|
||||
|
||||
.earlier
|
||||
ret
|
||||
|
||||
_CheckLuckyNumberShowFlag:
|
||||
ld hl, wLuckyNumberDayTimer
|
||||
jp CheckDayDependentEventHL
|
||||
|
||||
DoMysteryGiftIfDayHasPassed:
|
||||
ld a, BANK(sMysteryGiftTimer)
|
||||
call OpenSRAM
|
||||
ld hl, sMysteryGiftTimer
|
||||
ld a, [hli]
|
||||
ld [wTempMysteryGiftTimer], a
|
||||
ld a, [hl]
|
||||
ld [wTempMysteryGiftTimer + 1], a
|
||||
call CloseSRAM
|
||||
|
||||
ld hl, wTempMysteryGiftTimer
|
||||
call CheckDayDependentEventHL
|
||||
jr nc, .not_timed_out
|
||||
ld hl, wTempMysteryGiftTimer
|
||||
call InitOneDayCountdown
|
||||
call CloseSRAM
|
||||
farcall ResetDailyMysteryGiftLimitIfUnlocked
|
||||
|
||||
.not_timed_out
|
||||
ld a, BANK(sMysteryGiftTimer)
|
||||
call OpenSRAM
|
||||
ld hl, wTempMysteryGiftTimer
|
||||
ld a, [hli]
|
||||
ld [sMysteryGiftTimer], a
|
||||
ld a, [hl]
|
||||
ld [sMysteryGiftTimer + 1], a
|
||||
call CloseSRAM
|
||||
ret
|
||||
|
||||
UpdateTimeRemaining:
|
||||
; If the amount of time elapsed exceeds the capacity of its
|
||||
; unit, skip this part.
|
||||
cp -1
|
||||
jr z, .set_carry
|
||||
ld c, a
|
||||
ld a, [hl] ; time remaining
|
||||
sub c
|
||||
jr nc, .ok
|
||||
xor a
|
||||
|
||||
.ok
|
||||
ld [hl], a
|
||||
jr z, .set_carry
|
||||
xor a
|
||||
ret
|
||||
|
||||
.set_carry
|
||||
xor a
|
||||
ld [hl], a
|
||||
scf
|
||||
ret
|
||||
|
||||
GetSecondsSinceIfLessThan60: ; unreferenced
|
||||
ld a, [wDaysSince]
|
||||
and a
|
||||
jr nz, GetTimeElapsed_ExceedsUnitLimit
|
||||
ld a, [wHoursSince]
|
||||
and a
|
||||
jr nz, GetTimeElapsed_ExceedsUnitLimit
|
||||
ld a, [wMinutesSince]
|
||||
jr nz, GetTimeElapsed_ExceedsUnitLimit
|
||||
ld a, [wSecondsSince]
|
||||
ret
|
||||
|
||||
GetMinutesSinceIfLessThan60:
|
||||
ld a, [wDaysSince]
|
||||
and a
|
||||
jr nz, GetTimeElapsed_ExceedsUnitLimit
|
||||
ld a, [wHoursSince]
|
||||
and a
|
||||
jr nz, GetTimeElapsed_ExceedsUnitLimit
|
||||
ld a, [wMinutesSince]
|
||||
ret
|
||||
|
||||
GetHoursSinceIfLessThan24: ; unreferenced
|
||||
ld a, [wDaysSince]
|
||||
and a
|
||||
jr nz, GetTimeElapsed_ExceedsUnitLimit
|
||||
ld a, [wHoursSince]
|
||||
ret
|
||||
|
||||
GetDaysSince:
|
||||
ld a, [wDaysSince]
|
||||
ret
|
||||
|
||||
GetTimeElapsed_ExceedsUnitLimit:
|
||||
ld a, -1
|
||||
ret
|
||||
|
||||
CalcDaysSince:
|
||||
xor a
|
||||
jr _CalcDaysSince
|
||||
|
||||
CalcHoursDaysSince: ; unreferenced
|
||||
inc hl
|
||||
xor a
|
||||
jr _CalcHoursDaysSince
|
||||
|
||||
CalcMinsHoursDaysSince:
|
||||
inc hl
|
||||
inc hl
|
||||
xor a
|
||||
jr _CalcMinsHoursDaysSince
|
||||
|
||||
CalcSecsMinsHoursDaysSince:
|
||||
inc hl
|
||||
inc hl
|
||||
inc hl
|
||||
ldh a, [hSeconds]
|
||||
ld c, a
|
||||
sub [hl]
|
||||
jr nc, .skip
|
||||
add 60
|
||||
.skip
|
||||
ld [hl], c ; current seconds
|
||||
dec hl
|
||||
ld [wSecondsSince], a ; seconds since
|
||||
|
||||
_CalcMinsHoursDaysSince:
|
||||
ldh a, [hMinutes]
|
||||
ld c, a
|
||||
sbc [hl]
|
||||
jr nc, .skip
|
||||
add 60
|
||||
.skip
|
||||
ld [hl], c ; current minutes
|
||||
dec hl
|
||||
ld [wMinutesSince], a ; minutes since
|
||||
|
||||
_CalcHoursDaysSince:
|
||||
ldh a, [hHours]
|
||||
ld c, a
|
||||
sbc [hl]
|
||||
jr nc, .skip
|
||||
add MAX_HOUR
|
||||
.skip
|
||||
ld [hl], c ; current hours
|
||||
dec hl
|
||||
ld [wHoursSince], a ; hours since
|
||||
|
||||
_CalcDaysSince:
|
||||
ld a, [wCurDay]
|
||||
ld c, a
|
||||
sbc [hl]
|
||||
jr nc, .skip
|
||||
add 20 * 7
|
||||
.skip
|
||||
ld [hl], c ; current days
|
||||
ld [wDaysSince], a ; days since
|
||||
ret
|
||||
|
||||
CopyDayHourMinSecToHL:
|
||||
ld a, [wCurDay]
|
||||
ld [hli], a
|
||||
ldh a, [hHours]
|
||||
ld [hli], a
|
||||
ldh a, [hMinutes]
|
||||
ld [hli], a
|
||||
ldh a, [hSeconds]
|
||||
ld [hli], a
|
||||
ret
|
||||
|
||||
CopyDayToHL:
|
||||
ld a, [wCurDay]
|
||||
ld [hl], a
|
||||
ret
|
||||
|
||||
CopyDayHourToHL: ; unreferenced
|
||||
ld a, [wCurDay]
|
||||
ld [hli], a
|
||||
ldh a, [hHours]
|
||||
ld [hli], a
|
||||
ret
|
||||
|
||||
CopyDayHourMinToHL:
|
||||
ld a, [wCurDay]
|
||||
ld [hli], a
|
||||
ldh a, [hHours]
|
||||
ld [hli], a
|
||||
ldh a, [hMinutes]
|
||||
ld [hli], a
|
||||
ret
|
||||
Loading…
Add table
Add a link
Reference in a new issue