Skip to content

Releases

Mario's Tennis v0.2.3

Choose a tag to compare

@mstan mstan released this 19 Oct 00:59
28995d3

All seven characters reach singles and corrected four-player doubles courts with zero fallback. A fresh independent Beetle run matches ten bracket/court/rally/pause checkpoints across nine state/output comparisons.

Uses the shared build helper, whole-function native partitions and updated engine/UI dependencies. The complete production ZIP passes extraction, dependency/hash checks, invalid frame-limit rejection, clean finite exits and 300 native boot frames with zero fallback. TCP debugging and CPU recording are omitted. The optional full-color package remains version 0.2.2 and starts disabled. Tournament completions and complete color-art coverage are outside this pass.

Extract the entire Windows ZIP, run the game executable, select your own extracted supported cartridge and press Play. No ROM is included. Normal player audio is enabled. Keep your settings, saves and installed mods when updating. See the included coverage documentation for scope and reproduction commands.

The final archives were checked to exclude CD Speed and Fast Loading packages. SHA256SUMS.txt covers the ZIP and independently versioned optional packages.

Mario Tennis Recompiled v0.2.2

Choose a tag to compare

@mstan mstan released this 08 Sep 18:50

Mario's Tennis Recompiled now has a Virtual Boy launcher, a ROM-preserving mod ecosystem, and an optional full-color renderer.

Download and play

  1. Download MarioTennisVirtualBoyRecomp-windows-x64.zip and extract the entire ZIP.
  2. Run MarioTennisVirtualBoyRecomp.exe and select your own original Mario's Tennis ROM. No ROM is included.
  3. For color, open Mods, import the included marios-tennis-full-color-0.2.2.vbmod, enable its full-color feature, and press Play. Color is off by default; the original ROM is never modified.

The standalone .vbmod download is the same package included in the ZIP. SHA256SUMS.txt contains hashes for both downloads. This release provides a Windows x64 binary; Linux and macOS build scripts are available in the source tree.

What changed

  • Shared recomp-ui launcher integration, persistent settings, controller configuration, and mod management.
  • A dedicated black-and-crimson Virtual Boy theme and Mario's Tennis box art with attribution.
  • Optional full-color court, characters, portraits, and HUD, using original-art-aware material assignments.
  • Additional Mario and Luigi animation coverage, including overhand recovery poses, plus improved Lakitu and scoreboard transparency.
  • Production build excludes the game's developer TCP server and missing-pose recorder.

The color mod remains experimental: untested character poses may still need refinement.

Validation

  • Fresh production Release build: all 3 CTest tests passed.
  • Extracted Windows ZIP: launcher/theme/box art inspected; stock and explicitly enabled color gameplay both started and exited cleanly using only packaged dependencies and Windows system libraries.
  • Development color validation: native A/B checks and 14,036 recorded eye-frames across Mario and Luigi routes with no unknown material poses in those routes.
  • Package checked for matching executable and dependency revisions, default-off mod manifest, and absence of ROMs, user settings, and developer captures.

Built from game commit 670861ff404683b1987da19b8bd0c0d34b2fd6be, vbrecomp 137ae3b9dce46febc65a21af558b0d95b16e5212, and recomp-ui bca0bcc3949ef6f9bbb6b7b021b1ba50c13db4cb.

v0.2.0 — Accuracy release (correct play speed)

Choose a tag to compare

@mstan mstan released this 29 Jun 03:48

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.

Mario's Tennis — Linux (AppImage, initial/experimental)

Choose a tag to compare

@mstan mstan released this 14 Jun 22:10

Initial experimental Linux release — x86_64 AppImage.

Bring your own ROM. Place your legally-dumped Mario's Tennis (.vb) ROM in the same folder as the AppImage; it's auto-detected at launch. No ROM is included.

Run it

chmod +x MariosTennis-x86_64.AppImage
./MariosTennis-x86_64.AppImage          # add --appimage-extract-and-run if FUSE is unavailable

Steam Deck / controllers — the AppImage reads the controller natively. In Desktop mode, launch through Gaming Mode (or set a Gamepad controller layout) so face buttons aren't remapped to keyboard keys.

Production build — no debug server / tooling. Early, experimental Linux port; expect rough edges. Source: this repo.

Mario's Tennis v0.1.0 — first VB recompile

Choose a tag to compare

@mstan mstan released this 21 May 17:33

First binary release of Mario's Tennis recompiled from the original
Virtual Boy cartridge via the vbrecomp
static V810-to-C recompiler framework. The cart's CPU code is now
native x86-64 Windows; no V810 interpreter at runtime.

What's in the zip

  • MarioTennisVirtualBoyRecomp.exe — recompiled cart + runtime (~2 MB)
  • SDL2.dll — window / audio / input
  • README.txt — usage + controls

How to run

You need to provide your own Mario's Tennis ROM dump:

  • CRC32: 0x7CE7460D
  • SHA-256: 5dc5e6b5d5f538f56b3b9727db1c7931d9dfe1bbd0743f698897e0fd90e70101
  • Size: 524 288 bytes
MarioTennisVirtualBoyRecomp.exe --rom path/to/marios_tennis.vb

The runtime CRC32-verifies the ROM at startup and refuses to run on
mismatch.

Controls

  • Keyboard: Arrows = L D-pad, WASD = R D-pad, X/Z = A/B, Q/E = L/R,
    Enter/RShift = Start/Select, TAB = turbo, Esc = quit
  • XInput (Xbox controller, player 1) is also supported

What's verified

  • Decoder coverage: 100% (0 unknown encodings across 33 057 walked
    instructions)
  • Dispatch coverage: 100% (no JAL/JR target outside the recompiled set)
  • Framebuf diff vs Beetle VB oracle on boot screen: 0/86 016 pixels
    differ at zero tolerance
  • Full match completed without crash
  • 77/77 framework Python tests pass

ROM not included. Mario's Tennis is © 1995 Nintendo.


macOS (Apple Silicon) build — MarioTennisVirtualBoyRecomp-macos-arm64.zip

Native arm64 .app (SDL2 bundled, ad-hoc signed). ROM not included.