diff options
Diffstat (limited to 'home/time.asm')
-rw-r--r-- | home/time.asm | 138 |
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 |