mirror of
https://github.com/thornAvery/jep-hack.git
synced 2025-09-16 18:20:50 +12:00

This adds various house tiles that allow the creation of the game house from SW97. It's been heavily altered to include the SNES (from RBY), Virtual Boy, and N64. Here, you can fight Jacky once a day to farm Gold Leaves, which will be currency for a Move Reminder. It should refresh just fine but definitely give it a closer look, I'm not exactly confident. I also made a start on a GSCified sofa but it looks kinda weird.
429 lines
6.8 KiB
NASM
429 lines
6.8 KiB
NASM
_InitializeStartDay:
|
|
call InitializeStartDay
|
|
ret
|
|
|
|
ClearDailyTimers:
|
|
xor a
|
|
ld [wLuckyNumberDayTimer], a
|
|
ld [wSweetHoneyTimer], a
|
|
ld [wDailyResetTimer], a
|
|
ld [wJackyTimer], a ; This could use an engine flag I think but mehhhhhhhh
|
|
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
|
|
|
|
SetSweetHoneyTimer:
|
|
ld a, 2
|
|
ld hl, wSweetHoneyTimer
|
|
ld [hl], a
|
|
call UpdateTime
|
|
ld hl, wSweetHoneyStartDate
|
|
call CopyDayToHL
|
|
ret
|
|
|
|
_CheckSweetHoneyTimer:
|
|
ld hl, wSweetHoneyStartDate
|
|
call CalcDaysSince
|
|
call GetDaysSince
|
|
ld hl, wSweetHoneyTimer
|
|
call UpdateTimeRemaining
|
|
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
|