From f1ecd3653bcf153bc979750caf0509e9b06ff528 Mon Sep 17 00:00:00 2001 From: "J.C. Moyer" Date: Mon, 8 Jun 2026 20:05:55 -0400 Subject: [PATCH] mcu_timer: initialize fields from manual --- src/mcu.cpp | 1 + src/mcu_timer.cpp | 8 ++++++++ src/mcu_timer.h | 2 ++ 3 files changed, 11 insertions(+) diff --git a/src/mcu.cpp b/src/mcu.cpp index 50ca007b..c8066c8f 100644 --- a/src/mcu.cpp +++ b/src/mcu.cpp @@ -1761,6 +1761,7 @@ int main(int argc, char *argv[]) MCU_Reset(); SM_Reset(); PCM_Reset(); + TIMER_Reset(); if (resetType != ResetType::NONE) MIDI_Reset(resetType); diff --git a/src/mcu_timer.cpp b/src/mcu_timer.cpp index 3736c2a5..b78d5610 100644 --- a/src/mcu_timer.cpp +++ b/src/mcu_timer.cpp @@ -60,7 +60,15 @@ void TIMER_Reset(void) timer_cycles = 0; timer_tempreg = 0; memset(frt, 0, sizeof(frt)); + for (int i = 0; i < 3; ++i) + { + frt[i].ocra = 0xffff; + frt[i].ocrb = 0xffff; + } memset(&timer, 0, sizeof(timer)); + timer.tcora = 0xff; + timer.tcorb = 0xff; + timer.tcsr = 0x10; } void TIMER_Write(uint32_t address, uint8_t data) diff --git a/src/mcu_timer.h b/src/mcu_timer.h index 41e0eb1d..4bb4f9f0 100644 --- a/src/mcu_timer.h +++ b/src/mcu_timer.h @@ -53,6 +53,8 @@ struct mcu_timer_t { uint8_t status_rd; }; +void TIMER_Reset(void); + void TIMER_Write(uint32_t address, uint8_t data); uint8_t TIMER_Read(uint32_t address); void TIMER_Clock(uint64_t cycles);