mirror of https://github.com/pret/pokecrystal.git
210 lines
2.9 KiB
NASM
Executable File
210 lines
2.9 KiB
NASM
Executable File
StopRTC: ; Unreferenced???
|
|
ld a, SRAM_ENABLE
|
|
ld [MBC3SRamEnable], a
|
|
call LatchClock
|
|
ld a, RTC_DH
|
|
ld [MBC3SRamBank], a
|
|
ld a, [MBC3RTC]
|
|
set 6, a ; halt
|
|
ld [MBC3RTC], a
|
|
call CloseSRAM
|
|
ret
|
|
; 14019
|
|
|
|
StartRTC: ; 14019
|
|
ld a, SRAM_ENABLE
|
|
ld [MBC3SRamEnable], a
|
|
call LatchClock
|
|
ld a, RTC_DH
|
|
ld [MBC3SRamBank], a
|
|
ld a, [MBC3RTC]
|
|
res 6, a ; halt
|
|
ld [MBC3RTC], a
|
|
call CloseSRAM
|
|
ret
|
|
; 14032
|
|
|
|
GetTimeOfDay:: ; 14032
|
|
; get time of day based on the current hour
|
|
ld a, [hHours] ; hour
|
|
ld hl, TimesOfDay
|
|
|
|
.check
|
|
; if we're within the given time period,
|
|
; get the corresponding time of day
|
|
cp [hl]
|
|
jr c, .match
|
|
; else, get the next entry
|
|
inc hl
|
|
inc hl
|
|
; try again
|
|
jr .check
|
|
|
|
.match
|
|
; get time of day
|
|
inc hl
|
|
ld a, [hl]
|
|
ld [TimeOfDay], a
|
|
ret
|
|
; 14044
|
|
|
|
TimesOfDay: ; 14044
|
|
; hours for the time of day
|
|
; 04-09 morn | 10-17 day | 18-03 nite
|
|
db 04, NITE
|
|
db 10, MORN
|
|
db 18, DAY
|
|
db 24, NITE
|
|
db -1, MORN
|
|
; 1404e
|
|
|
|
Unknown_1404e: ; Unreferenced
|
|
db 20, 2
|
|
db 40, 0
|
|
db 60, 1
|
|
db -1, 0
|
|
; 14056
|
|
|
|
StageRTCTimeForSave: ; 14056
|
|
call UpdateTime
|
|
ld hl, wRTC
|
|
ld a, [CurDay]
|
|
ld [hli], a
|
|
ld a, [hHours]
|
|
ld [hli], a
|
|
ld a, [hMinutes]
|
|
ld [hli], a
|
|
ld a, [hSeconds]
|
|
ld [hli], a
|
|
ret
|
|
; 1406a
|
|
|
|
SaveRTC: ; 1406a
|
|
ld a, $a
|
|
ld [MBC3SRamEnable], a
|
|
call LatchClock
|
|
ld hl, MBC3RTC
|
|
ld a, $c
|
|
ld [MBC3SRamBank], a
|
|
res 7, [hl]
|
|
ld a, BANK(sRTCStatusFlags)
|
|
ld [MBC3SRamBank], a
|
|
xor a
|
|
ld [sRTCStatusFlags], a
|
|
call CloseSRAM
|
|
ret
|
|
; 14089
|
|
|
|
StartClock:: ; 14089
|
|
call GetClock
|
|
call Function1409b
|
|
call FixDays
|
|
jr nc, .skip_set
|
|
; bit 5: Day count exceeds 139
|
|
; bit 6: Day count exceeds 255
|
|
call RecordRTCStatus ; set flag on sRTCStatusFlags
|
|
|
|
.skip_set
|
|
call StartRTC
|
|
ret
|
|
; 1409b
|
|
|
|
Function1409b: ; 1409b
|
|
ld hl, hRTCDayHi
|
|
bit 7, [hl]
|
|
jr nz, .set_bit_7
|
|
bit 6, [hl]
|
|
jr nz, .set_bit_7
|
|
xor a
|
|
ret
|
|
|
|
.set_bit_7
|
|
; Day count exceeds 16383
|
|
ld a, %10000000
|
|
call RecordRTCStatus ; set bit 7 on sRTCStatusFlags
|
|
ret
|
|
; 140ae
|
|
|
|
Function140ae: ; 140ae
|
|
call CheckRTCStatus
|
|
ld c, a
|
|
and %11000000 ; Day count exceeded 255 or 16383
|
|
jr nz, .time_overflow
|
|
|
|
ld a, c
|
|
and %00100000 ; Day count exceeded 139
|
|
jr z, .dont_update
|
|
|
|
call UpdateTime
|
|
ld a, [wRTC + 0]
|
|
ld b, a
|
|
ld a, [CurDay]
|
|
cp b
|
|
jr c, .dont_update
|
|
|
|
.time_overflow
|
|
callba ClearDailyTimers
|
|
callba Function170923
|
|
; mobile
|
|
ld a, $5
|
|
call GetSRAMBank
|
|
ld a, [$aa8c]
|
|
inc a
|
|
ld [$aa8c], a
|
|
ld a, [$b2fa]
|
|
inc a
|
|
ld [$b2fa], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
.dont_update
|
|
xor a
|
|
ret
|
|
; 140ed
|
|
|
|
_InitTime:: ; 140ed
|
|
call GetClock
|
|
call FixDays
|
|
ld hl, hRTCSeconds
|
|
ld de, StartSecond
|
|
|
|
ld a, [StringBuffer2 + 3]
|
|
sub [hl]
|
|
dec hl
|
|
jr nc, .okay_secs
|
|
add 60
|
|
.okay_secs
|
|
ld [de], a
|
|
dec de
|
|
|
|
ld a, [StringBuffer2 + 2]
|
|
sbc [hl]
|
|
dec hl
|
|
jr nc, .okay_mins
|
|
add 60
|
|
.okay_mins
|
|
ld [de], a
|
|
dec de
|
|
|
|
ld a, [StringBuffer2 + 1]
|
|
sbc [hl]
|
|
dec hl
|
|
jr nc, .okay_hrs
|
|
add 24
|
|
.okay_hrs
|
|
ld [de], a
|
|
dec de
|
|
|
|
ld a, [StringBuffer2]
|
|
sbc [hl]
|
|
dec hl
|
|
jr nc, .okay_days
|
|
add 140
|
|
ld c, 7
|
|
call SimpleDivide
|
|
|
|
.okay_days
|
|
ld [de], a
|
|
ret
|
|
; 1412a
|