PORTCLUB
Cabecera de Wii Sports Resort (ResortCompiled)
Port nativo

Wii Sports Resort (ResortCompiled)

Port nativo de Wii Sports Resort (ResortCompiled) para PC.

Wii Sports Resort (ResortCompiled)

Port nativo basado en su ficha de origen.

README del repositorio

Resortcompiled

A native PC port of Wii Sports Resort built by static recompilation. It's based on WiiCompiled, whose recompiler and Wii runtime also power Mario Kart Wiicompiled, and it draws with aurora.

Includes an experimental two-player Riisorted online prototype, with Swordplay Duel as the first target. The same-PC test passed; remote testing is next.

Players: installation and ZeroTier guide. Maintainers: build and package a release.

Target revision: PAL RZTP01. Use your own dump. No Nintendo code or data goes in this repo.

Layout

setup.sh                  one-time setup (deps, .NET 8, WiiCompiled, dtk, translator build)
scripts/extract.sh        disc image -> work/extracted/  (checks game ID, lists RELs)
scripts/extract_ref.sh    MKW PAL image -> work/ref/mkw/sys/main.dol (reference for cross-matching)
scripts/xmatch.py         masked-instruction function matcher (MKW names -> WSR)
scripts/analyze.sh        dtk analysis -> projects/wsr/{MAP.txt, recomp.yml, hle_address_map.csv}
scripts/rekey.py          WiiCompiled runtime -> runtime/wsr/{src,include} with MKW addresses rewritten to WSR
scripts/translate.sh      WiiCompiled translator first pass -> work/generated/
scripts/build.sh          native build (runtime/wsr + work/generated + aurora) -> out/Resortcompiled
projects/wsr/             WSR project files (generated by analyze, safe to commit)
docs/                     research notes
patches/wiicompiled/      our fixes to WiiCompiled, applied by setup.sh (candidates to upstream)
disc/                     put your disc image here (git-ignored)
external/wiicompiled/     WiiCompiled checkout (pinned commit, git-ignored)
tools/bin/dtk             decomp-toolkit, used only as an analyser (git-ignored)
work/                     extracted files, dtk output, generated C++, logs, reports (git-ignored)

Quick start

git clone https://github.com/redluigi323/ResortCompiled.git
cd ResortCompiled
bash setup.sh
bash scripts/release/build.sh /path/to/WiiSportsResort.rvz 0.2.0-netplay-preview

The release build uses the checked-in WSR runtime and map. It does not need a Mario Kart Wii dump or runtime re-keying. For upstream hook research, the individual analysis/re-key scripts below remain available.

What each step gives you

  • extract: work/extracted/sys/main.dol, the game ID check and main.dol's SHA-256. The game code is all in main.dol (~6.3 MB of code). The 7 RELs on the disc live in files/sys/mpls_movie/rels/ and belong to the MotionPlus movie app, so analysis skips them (--with-rels to include).
  • extract_ref: pulls Mario Kart Wii PAL's main.dol. dtk's signature database only names ~350 of WSR's 34k functions; matching instruction patterns against MKW (whose ~20k functions WiiCompiled has named) carries the shared RVL SDK / NW4R / EGG names over, and maps WiiCompiled's MKW-address hooks to WSR addresses directly.
  • analyze:
    • projects/wsr/MAP.txt is the function map the translator uses to find functions.
    • projects/wsr/recomp.yml is the translator config. The script fills in the entry point, the r13/r2 small-data bases (read from __init_registers) and the DOL hash for you.
    • projects/wsr/hle_address_map.csv lists every function WiiCompiled's runtime replaces, with its MKW address next to the matching WSR address. We use it to point the runtime at WSR's functions.
    • work/reports/hle_coverage.md summarises how many replacements matched.
  • rekey: copies WiiCompiled's runtime into runtime/wsr/ and rewrites each MKW address it can map: functions via the MKW↔WSR pairing (exact or fuzzy), jump-table labels through the instruction alignment, and data/bss addresses via aligned lis/addi and r13/r2 references in paired functions. Hooks it can't map are commented out (// RESORT-UNMAPPED) so they can't hijack unrelated WSR code. work/reports/rekey.md lists low-confidence matches, disabled hooks, RMCP game-ID constants and every unresolved address; projects/wsr/address_map.csv has the full map. Re-running overwrites runtime/wsr/{src,include}, so commit before hand-editing.
  • build: assembles WiiCompiled's expected layout in work/tree/ (runtime copied, generated and aurora-main symlinked), configures CMake + Ninja with clang/lld into work/build/, and copies the game to out/. out/ is portable (portable.txt), so settings, saves and logs live in out/UserData/, and Config.toml points dvd_root at work/extracted. Translated shards are compiled with at most one job per 2 GB of RAM. Logs go to work/logs/build-*.log.
  • translate: turns the game's PowerPC code into C++ under work/generated/. For now, instructions the translator can't handle become runtime traps instead of stopping the build. It does not produce a playable exe yet.

Roadmap

  1. ✅ Toolchain + analysis pipeline
  2. ✅ First full translation: 34,213 functions, 91 unsupported instructions (all mfspr in TRK debugger / exception / cache-init code that WiiCompiled replaces natively anyway)
  3. ✅ Automatic re-key of the runtime (570 of 750 referenced MKW addresses mapped)
  4. Fix the rest by hand (disabled hooks, unmapped data, RMCP→RZTP), wire up the native build → first boot to the title screen
  5. MotionPlus + IR pointer in the Wii Remote input layer (WPAD/KPAD), gyro-controller mapping, real Wii Remote Plus
  6. Audio, saves, all 12 sports playable, checked against Dolphin
  7. Frame interpolation tuning, aspect ratio/FOV hooks, HUD layout
  8. Riisorted online: deterministic input lockstep (Swordplay Duel first), then sport expansion and deeper game integration. Rollback requires portable snapshots.

Online design: Riisorted netplay plan. Experimental hosting/joining: live online instructions. Input diagnostics: motion recording and playback.

Licensing

WiiCompiled is GPLv3, so this project is GPLv3. aurora is MIT.

Release launcher

The desktop launcher lives in launcher/. It provides first-run disc installation, exact revision checking, a built-in Mii creator, automatic Mii resource setup from a complete disc, optional Mii imports, and Wii Sports Resort / Riisorted selection. Riisorted includes an experimental two-player direct online connection; its future game modifications have a separate overlay directory.

Release packaging instructions: launcher/README.md. The launcher is bundled with Python/Qt and the existing native runtime so end users do not need the development toolchain.

Comentarios (0)

Inicia sesión para dejar un comentario.

Sé el primero en comentar sobre este juego.