summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-06-05 16:53:47 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-06-05 16:53:47 -0400
commitb1ec6d8da9aab9f072bbae815b41813cc5b50462 (patch)
treeb430e1ff05631c9a4849a5aeda9683c857ddce83
parente80bd60ed6e65477319a977b2d3839260bdaf450 (diff)
More RTC-related functions
-rw-r--r--home/time.asm138
-rw-r--r--hram.asm4
-rw-r--r--shim.sym1
-rw-r--r--wram.asm4
4 files changed, 145 insertions, 2 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
diff --git a/hram.asm b/hram.asm
index 8e59150..977c5b5 100644
--- a/hram.asm
+++ b/hram.asm
@@ -9,7 +9,9 @@ hRTCHours:: db ; ff8d
hRTCMinutes:: db ; ff8e
hRTCSeconds:: db ; ff8f
hRTCDays:: db ; ff90
- ds 6 ; TODO
+ ds 2 ; TODO
+hRTCStatusFlags:: db ; ff93
+ ds 3 ; TODO
hVBlankCounter:: ; ff97
db
diff --git a/shim.sym b/shim.sym
index 2a3fc3f..a052b10 100644
--- a/shim.sym
+++ b/shim.sym
@@ -1,5 +1,4 @@
; ROM0
-00:0436 UpdateTime
00:051C Reset
00:0D0A LoadFont
00:0D1A LoadFontExtra
diff --git a/wram.asm b/wram.asm
index c0b1f13..01b5cf1 100644
--- a/wram.asm
+++ b/wram.asm
@@ -316,9 +316,13 @@ wcd26:: ; cd26
SECTION "CD31", WRAM0[$CD31]
+wStartDay::
wcd31:: ; cd31
db
+wStartHour:: db
+wStartMinute:: db
+
SECTION "CD3E", WRAM0[$CD3D]
wRegularItemsCursor:: db ; cd3d