; DMGTRIS ; Copyright (C) 2023 - Randy Thiemann ; This program is free software: you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation, either version 3 of the License, or ; (at your option) any later version. ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; You should have received a copy of the GNU General Public License ; along with this program. If not, see . IF !DEF(TIME_ASM) DEF TIME_ASM EQU 1 INCLUDE "globals.asm" SECTION "High Time Variables", HRAM hFrameCtr:: ds 1 hEvenFrame:: ds 1 SECTION "Time Variables", WRAM0 wMinutes:: ds 1 wSeconds:: ds 1 wFrames:: ds 1 SECTION "Time Functions", ROM0 ; Zeroes all timers and gets the free-running timer ticking. TimeInit:: xor a, a ldh [rTMA], a ldh [hEvenFrame], a ldh [hFrameCtr], a ld [wMinutes], a ld [wSeconds], a ld [wFrames], a ld a, TACF_262KHZ | TACF_START ldh [rTAC], a ret ; Resets the minute-second timer. ResetTime:: xor a, a ld [wMinutes], a ld [wSeconds], a ld [wFrames], a ret ; Increments the global timer. Also saves whether we're on an even frame. HandleTimers:: ldh a, [hFrameCtr] inc a ldh [hFrameCtr], a and 1 ldh [hEvenFrame], a ld a, [wFrames] inc a ld [wFrames], a cp a, 60 ret nz xor a, a ld [wFrames], a ld a, [wSeconds] inc a ld [wSeconds], a cp a, 60 ret nz xor a, a ld [wSeconds], a ld a, [wMinutes] inc a ld [wMinutes], a ret ENDC