Skip to content

v0.2.0 — Accuracy release (correct play speed)

Choose a tag to compare

@mstan mstan released this 29 Jun 03:48
· 16 commits to master since this release

The headline fix: correct play speed

Mario's Tennis previously ran ~2× too fast. It now runs at exactly 50.27 Hz — real Virtual Boy hardware speed. (The windowed runtime paced presents to 50.27 Hz, but the dispatch loop over-advanced emulated cycles per present, so the internal game clock ran roughly double. Delivering interrupts at device-event granularity fixed it — and the same change locked the audio to the oracle.)

Full accuracy burndown (7 axes, validated vs the Beetle/Mednafen VB oracle)

Area Result
Audio waveshape NCC 0.09 → 0.98 (STRONG MATCH); tempo drift → 0; band-limited VSU output (Blip)
Speed ~2× fast → 50.27 Hz, 1.000× hardware
Video framebuffer pixel-exact (0/86016) + draw-timing phase-matched (DPSTTS/XPSTTS)
CPU 1.4M instructions match the oracle exactly; latent MUL/DIV emitter bugs (Z-flag, r30 write order, ÷0 trap) fixed + validated
Memory WRAM stays region-lockstep with the oracle through gameplay

This is a statically recompiled cart (native C compiled from the V810 ROM), not an emulator. Built against vbrecomp framework master @37a2444.