diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-06-05 16:53:47 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-06-05 16:53:47 -0400 |
commit | b1ec6d8da9aab9f072bbae815b41813cc5b50462 (patch) | |
tree | b430e1ff05631c9a4849a5aeda9683c857ddce83 | |
parent | e80bd60ed6e65477319a977b2d3839260bdaf450 (diff) |
More RTC-related functions
-rw-r--r-- | home/time.asm | 138 | ||||
-rw-r--r-- | hram.asm | 4 | ||||
-rw-r--r-- | shim.sym | 1 | ||||
-rw-r--r-- | wram.asm | 4 |
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 @@ -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 @@ -1,5 +1,4 @@ ; ROM0 -00:0436 UpdateTime 00:051C Reset 00:0D0A LoadFont 00:0D1A LoadFontExtra @@ -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 |