Run World of Warcraft 3.3.5a on Apple Silicon.
Built around instruction-set bridging — x87 FPU emulation, Wine/CrossOver integration, and runtime patching — so 32-bit x86 games from the 2006–2010 era run efficiently on modern macOS. The architecture is designed to extend to other legacy apps that struggle with missing instruction sets.
macOS only (Apple Silicon) · Requires CrossOver, Whisky, or Moonshine — any one will do.
- Install one of the runners above.
- Have a WoW 3.3.5a client folder ready.
- Download the latest release zip above and unzip it.
- Run
./wowplay setup --wow-dir ~/Documents/WoW_3.3.5a(detects runners, stages patching resources, applies patches) - Run
./wowplay run --wow-dir ~/Documents/WoW_3.3.5a
See CONTRIBUTING.md if you want to build from source or contribute.
- One-command launch —
wowplay runhandles CrossOver patching, x87 emulation, and Wine loader setup automatically - x87 FPU emulation — bridges missing x87 instructions to AArch64 via RosettaX87 so the 32-bit client executes correctly
- Automated patching — applies game-folder and CrossOver patches needed for the RosettaX87 launch path
- Built-in diagnostics —
./scripts/launch-wow.sh --diagnoseverifies all components before launching - Headless test harness — MRE (Minimal Reproducible Example) validation for regression testing
# One-time setup (detects runners, stages resources, applies patches)
./wowplay setup --wow-dir ~/Documents/WoW_3.3.5a
# Launch (CrossOver — default)
wowplay run --wow-dir ~/Documents/WoW_3.3.5a
# Launch with Whisky or Moonshine
wowplay run --runner whisky --wow-dir ~/Documents/WoW_3.3.5a
wowplay run --runner moonshine --wow-dir ~/Documents/WoW_3.3.5a
# Whisky with a custom app location
wowplay run --runner whisky --whisky-bundle ~/Applications/Whisky.app --wow-dir ~/Documents/WoW_3.3.5a
# Diagnose without launching
wowplay diagnose# Install lefthook, Rust, and Zig first, then:
./scripts/setup.sh
cargo build -p wowplayWoW 3.3.5a is a 32-bit x86 application and requires the wineloader2 (x86) loader, not wineloader64 (x86_64). wowplay setup creates wineloader2 automatically when CrossOver is installed. Re-run wowplay setup --wow-dir <dir> if this step was skipped.
Ensure patching resources are staged: re-run wowplay setup --wow-dir <dir>.
When WoW is running fullscreen via Wine, switching to another app can cause the window to minimize and become unreachable. Workaround: run the game in windowed mode. If you use the WoWSilicon GUI app (rather than the wowplay CLI), it includes an aggressive focus-timer that forcibly keeps the game frontmost and may interfere with normal app switching.
Right-click the wowplay binary and choose Open once to bypass Gatekeeper for ad-hoc signed builds.
Run wowplay diagnose to verify all components before launching.
| Phase | Status | Description |
|---|---|---|
| Foundation & Agent Infrastructure | ✅ Complete | Build system, docs, agent workflows |
| Architecture & Integration Layer | ✅ Complete | Hexagonal design, FFI adapters, test harness |
| Working WoW 3.3.5a POC | ⏳ In Progress | End-to-end launch and gameplay |
| Progressive Enhancement | 🔜 Not Started | Additional clients, performance tuning |
This project uses an agent-first development workflow. See CONTRIBUTING.md for setup, architecture overview, and how to get involved.
Built upon and inspired by:
- rosettax87_jit by @Lifeisawful — x87 to AArch64 JIT translation
- winerosetta by @Gcenx — Wine/CrossOver integration layer
- WoWSilicon — Swift launcher and patching resources (vendored under
vendor/wowsilicon) - CrossOver by CodeWeavers — Windows API translation
- The Wine and CrossOver open-source communities
Apache License 2.0 — See LICENSE for details.