summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2026-04-08 18:20:13 +0200
committer hap <happppp@users.noreply.github.com>2026-04-08 18:20:28 +0200
commitbf3f8ec10e264dfbecabd7ceccb8d652756a2594 (patch)
treefc6a50c1225e77f7138833e8f0eee9c42e7ff3b9
parent6896ef4f47a1efeea9091c01685be9b1e1f4e205 (diff)
namcos86: even tighter quantum
-rw-r--r--src/mame/namco/namcos86.cpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/mame/namco/namcos86.cpp b/src/mame/namco/namcos86.cpp
index 337bcf27999..8e4412c9fea 100644
--- a/src/mame/namco/namcos86.cpp
+++ b/src/mame/namco/namcos86.cpp
@@ -117,13 +117,15 @@ Address Dir Data Name Description
Notes:
-----
-- we are using an unusually high CPU interleave factor (800) to avoid hangs
- in rthunder. The two 6809 in this game synchronize using a semaphore at
- 5606/5607 (CPU1) 1606/1607 (CPU2). CPU1 clears 5606, does some quick things,
- and then increments 5606. While it does its quick things (which require
- about 40 clock cycles) it expects CPU2 to clear 5607.
- Raising the interleave factor to 1000 makes wndrmomo crash during attract
- mode. I haven't investigated on the cause.
+- We are using an unusually tight CPU quantum to avoid hangs in rthunder.
+ The two 6809 in this game synchronize using a semaphore at CPU1:5606/5607 /
+ CPU2:1606/1607. CPU1 clears 5606, does some quick things, and then increments
+ 5606. While it does its quick things (which require about 40 clock cycles)
+ it expects CPU2 to clear 5607.
+ If the quantum is not tight enough, CPU1 will crash in wndrmomo after 10
+ attract mode loops, and there are similar soft crashes in rthunder0 and
+ rthunder1 attract mode. For some reason, if quantum is set to perfect,
+ rthunder1 will still crash (the current quantum of clock/4 works ok).
- There are two watchdogs, one per CPU (or maybe three). Handling them
separately is necessary to allow entering service mode without manually
@@ -1046,7 +1048,7 @@ void namcos86_state::hopmappy(machine_config &config)
m_mcu->out_p2_cb().set(FUNC(namcos86_state::led_w));
m_mcu->set_vblank_int("screen", FUNC(namcos86_state::irq0_line_hold)); // ???
- config.set_maximum_quantum(attotime::from_hz(64000)); // heavy interleaving needed to avoid hangs in rthunder
+ config.set_maximum_quantum(attotime::from_hz(m_cpu1->clock() / 4)); // heavy interleaving needed to avoid hangs in rthunder
WATCHDOG_TIMER(config, m_watchdog);