summaryrefslogtreecommitdiff
path: root/home/time.asm
diff options
context:
space:
mode:
Diffstat (limited to 'home/time.asm')
-rw-r--r--home/time.asm138
1 files changed, 138 insertions, 0 deletions
diff --git a/home/time.asm b/home/time.asm
new file mode 100644
index 0000000..3eba96c
--- /dev/null
+++ b/home/time.asm
@@ -0,0 +1,138 @@
+include "constants.asm"
+
+SECTION "RTC and Time Functions", ROM0 [$042B]
+
+LatchClock: ; 42b (0:042b)
+ ld a, 0
+ ld [MBC3LatchClock], a
+ ld a, 1
+ ld [MBC3LatchClock], a
+ ret
+
+UpdateTime:: ; 436 (0:0436)
+ ldh a, [hRTCStatusFlags]
+ bit 0, a
+ ret nz
+ ld a, SRAM_ENABLE
+ ld [MBC3SRamEnable], a
+ call LatchClock
+ ld a, RTC_S
+ ld [MBC3SRamBank], a
+ ld a, [MBC3RTC]
+ and $7f
+ ldh [hRTCSeconds], a
+ ld a, RTC_M
+ ld [MBC3SRamBank], a
+ ld a, [MBC3RTC]
+ and $7f
+ ldh [hRTCMinutes], a
+ ld a, RTC_H
+ ld [MBC3SRamBank], a
+ ld a, [MBC3RTC]
+ and $1f
+ ldh [hRTCHours], a
+ call CloseSRAM
+ ld a, [wce63]
+ bit 1, a
+ jr z, .asm_0478
+ ld a, [wd153]
+ bit 7, a
+ jr nz, .asm_048a
+.asm_0478
+ ldh a, [hRTCHours]
+ ld b, a
+ ld hl, .Data_049c
+.asm_047e
+ ld a, [hli]
+ cp b
+ jr nc, .asm_0485
+ inc hl
+ jr .asm_047e
+
+.asm_0485
+ ld a, [hl]
+ ld [wTimeOfDay], a
+ ret
+
+.asm_048a
+ ldh a, [hRTCSeconds]
+ ld b, a
+ ld hl, .Data_04a4
+.asm_0490
+ ld a, [hli]
+ cp b
+ jr nc, .asm_0497
+ inc hl
+ jr .asm_0490
+
+.asm_0497
+ ld a, [hl]
+ ld [wTimeOfDay], a
+ ret
+
+.Data_049c:
+ db $06, $01
+ db $09, $03
+ db $0f, $00
+ db $18, $01
+
+.Data_04a4:
+ db $1e, $00
+ db $23, $01
+ db $32, $02
+ db $3b, $03
+
+Function04ac::
+ ld hl, hRTCStatusFlags
+ set 0, [hl]
+ call Function04ea
+ ld a, SRAM_ENABLE
+ ld [MBC3SRamEnable], a
+ call LatchClock
+
+ ld a, RTC_S
+ ld [MBC3SRamBank], a
+ ld a, 0
+ ld [MBC3RTC], a
+
+ ld a, RTC_M
+ ld [MBC3SRamBank], a
+ ld a, [wStartMinute]
+ ld [MBC3RTC], a
+
+ ld a, RTC_H
+ ld [MBC3SRamBank], a
+ ld a, [wStartHour]
+ ld [MBC3RTC], a
+
+ ld a, [wStartDay]
+ ldh [hRTCDays], a
+
+ call CloseSRAM
+ ld hl, hRTCStatusFlags
+ res 0, [hl]
+ ret
+
+Function04ea:: ; 4ea (0:04ea)
+ ld a, SRAM_ENABLE
+ ld [MBC3SRamEnable], a
+ call LatchClock
+ ld a, RTC_DH
+ ld [MBC3SRamBank], a
+ ld a, [MBC3RTC]
+ set 6, a
+ ld [MBC3RTC], a
+ call CloseSRAM
+ ret
+
+Function0502:: ; 0502
+ ld a, SRAM_ENABLE
+ ld [MBC3SRamEnable], a
+ call LatchClock
+ ld a, RTC_DH
+ ld [MBC3SRamBank], a
+ ld a, [MBC3RTC]
+ res 6, a
+ ld [MBC3RTC], a
+ call CloseSRAM
+ ret