PokePark Wiicompiled

PokePark Wiicompiled is a native Windows and Android port of PokePark Wii: Pikachu's Adventure that runs the game's code natively with high resolutions and frame rates.

README

PokePark Wiicompiled

A native Windows and Android port of PokePark Wii: Pikachu's Adventure (USA, R8AE01). The game's PowerPC code is statically recompiled into C and runs natively, with the Wii's hardware replaced underneath it. There is no emulator: the game's own code runs, drawing with Vulkan or OpenGL at high resolutions and frame rates, played with a keyboard and mouse, a controller, or a touch screen.

This repository contains no game data. You need your own copy of the game. The program reads your disc image the first time it runs.

Open beta. Please report problems in Issues. Say what you did and what happened, attach a screenshot if you can, and give your Windows version, graphics card and Renderer setting (Options > Display), or on Android your phone's model and Android version.

Playing on Windows

  1. Download the latest build from Releases and unzip it.
  2. Run PokePark.exe.
  3. The first time, choose your disc image (ISO, RVZ, WBFS, WIA, CISO and the like). It's checked against the original disc, then the game is set up in an R8AE01 folder beside the program, and your saves are kept in R8AE01\nand. WBFS and scrubbed copies work, after a warning; a patched or modded main.dol doesn't.

Keep the prompts and tools folders beside PokePark.exe.

Requirements: Windows 10 or 11 (64-bit) and a graphics card with Vulkan 1.3 or OpenGL 3.3.

Playing on Android

  1. Download the .apk from Releases on your phone and install it (allow installing apps from your browser or file manager when asked).
  2. Open PokePark.
  3. The first time, choose your disc image (RVZ, ISO, WBFS, WIA, CISO and the like) in the file picker. The game plays straight from it, so nothing is extracted; if you move the file, the app asks again.

Play with the touch controls drawn over the game (a stick on the left, the buttons on the right, drag elsewhere to turn the camera) or a controller. Settings are in Options, in the PokéPark Pad.

Requirements: Android 11 or later on a 64-bit (arm64) phone with Vulkan 1.3. Tested on one phone (Adreno 830 GPU) so far.

Improvements over the Wii version

Graphics
  • Widescreen. The game runs in its native 16:9 mode, with its widescreen pictures and layouts, at full horizontal resolution rather than squeezed for a TV to stretch.
  • High resolution. Renders at 1x to 6x the Wii's resolution, or to fit the window. 3x is pixel for pixel on a 1440p display.
  • High frame rates. 30 fps (the game's own), 60 fps, or 120, 144, 165 or 240 fps. Above 60, extra frames are interpolated between the game's, with every object, camera and light moving smoothly. The game still updates 60 times a second, so nothing speeds up.
  • Anti-aliasing. 2x, 4x or 8x MSAA.
  • Anisotropic filtering. 2x to 16x, for sharp ground and walls at an angle.
  • Field of view. 80% to 150% of the game's, in the park.
  • Vulkan and OpenGL renderers. Vulkan is the default and the fastest. It falls back to OpenGL if Vulkan can't start.
  • Fullscreen (borderless) or windowed, toggled with Alt+Enter.
Controls
  • Keyboard and mouse, with a mouse-controlled camera that turns and tilts the player camera, even while running.
  • Xbox-style controllers, with rumble (off, light, normal or strong).
  • Fully rebindable. Each Wii Remote button has two keyboard or mouse slots and two controller slots.
  • Button prompts match your device. The game's on-screen Wii Remote icons are redrawn as the key or button they're bound to, switching between keyboard and controller as you use them.
  • Motion controls mapped. The minigames' shaking, tilting, swinging and pointing are mapped to keys, the mouse and the sticks.
  • Camera speed and inverted camera settings.
Gameplay options

Optional changes to the game's balance, all off (100%) by default:

SettingChoices
Text speed1x (the game's), 2x, 3x, or a page at once
Berries collected50% to 300%
Pricesfree, 50%, 100% or 200%
Damage dealt50% to 300%
Damage takennone, 50% to 300%
Chase speed50% to 150% of the speed of the Pokémon you chase
Quality of life
  • Faster start-up. The title screen comes up about 7 s after launch instead of about 28 s.
  • An in-game Options menu. It's in the PokéPark Pad (pause menu) and on the save files screen, in the game's own style. Changes apply immediately and are saved in settings.ini.
  • Update check. At start it asks GitHub whether a newer release is out. If one is, the save files screen says so, and Options > Display > Updates opens its download page. Nothing is downloaded by itself, and the Updates setting turns the check off.
  • Runs at 60 Hz to match PC displays (the Wii runs at 59.94 Hz).

Default controls

Wii RemoteIn the parkKeyboard and mouseController
D-padMoveWASD / arrow keysD-pad / left stick
2Jump, talkSpace / XA
1DashLeft click / ZX
AThunderboltRight click / EnterB
BRecenter cameraV / Left CtrlY / right trigger
Turn cameraMouse
+PokéPark PadPStart
-MapMBack
First personHome / HRight stick click
ShakeIron TailQ / Left Shift (hold)LB (hold)
Shake (minigames)Running, swingingQ and E by turnsLB and RB by turns

In first person, the mouse or right stick looks around and - takes a Photo. The same button leaves it, as does any other button but + and -.

While the window has focus, the mouse is captured for the camera. Esc releases it, and a click captures it again.

Minigame controls
MinigameKeyboard and mouseController
Absol's Hurdle Bounce, Bulbasaur's Daring Dash, Dusknoir's Speed SlamRun: Q and E by turnsLB and RB by turns
Venusaur's Vine Swing, Tangrowth's Swing-AlongSwing: Q and E by turns, in time. Jump: SpaceLB and RB. A
Blaziken's Boulder BashSwing: left click or Space. Recover: Q and E by turnsX or A. LB and RB
Gyarados' Aqua Dash, Empoleon's Snow SlideSteer: A / DLeft stick
Pelipper's Circle Circuit, Salamence's Air RaceSteer: A / D. Climb and dive: W / SLeft stick
Rhyperior's Bumper BurnRoll: WASDLeft stick
Rayquaza's Balloon PanicAs flying, then aim with the mouseLeft stick, then right stick
Rotom's Spooky Shoot-'em-UpAim: mouseRight stick
Bastiodon's Panel CrushButtons, as on the WiiButtons

Known gaps

  • Graphics: logic ops, z-textures, and lines and points aren't drawn yet (no area tested so far uses them).
  • Sound: the Wii Remote speaker is silent. The game's own effects (such as reverb) are mixed in, but no area tested so far uses them, so that is untested.
  • Input: no Wii Remote pointer or Nunchuk. The game is played sideways, so neither is needed for the main game.
  • Android: no rumble yet, and first person needs a controller: the touch controls have no button for it.
  • It has been tested on one PC and one phone, so problems on other hardware are likely: please report them.

Building

Needs Windows 10 or 11, Visual Studio 2022 (C++ desktop workload), Python 3 and, for the Vulkan renderer, the Vulkan SDK. Without the SDK, only OpenGL is built.

  1. Get decomp-toolkit v1.6.2 and put it at build/tools/dtk.exe.
  2. Extract your disc image:
    build\tools\dtk.exe disc extract "<your disc image>" orig\R8AE01\disc
    
  3. Recompile and build:
    python tools/recomp/recomp.py
    python tools/recomp/build.py --run test
    python tools/recomp/build.py --public
    
    --public puts a release build in Releases/. Without it you get a development build at build/recomp/boot.exe, which also has a debug settings menu (Backspace, or Back+Start on a controller) that can start any minigame.

The Android app is built with python tools/recomp/build.py --android, which needs the Android SDK and NDK and Rust; see recomp/README.md.

How it works, and the environment variables for testing, are described in recomp/README.md.

Credits

  • The function list (config/R8AE01/symbols.txt) and the decompiled sources in src/ come from the PokePark Wii decompilation by Seph De Busser and contributors.
  • Disc images are read with decomp-toolkit on Windows and nod on Android, both by Luke Street and contributors (MIT or Apache-2.0; licenses in recomp/assets).
  • The disc check follows SparkPark by Dvrkie13 (CC0).
  • Button icons by Icons8.

PokePark Wii is © Nintendo, Creatures Inc., GAME FREAK inc. and The Pokémon Company. This project is not affiliated with or endorsed by them.

Released under CC0 1.0 (see LICENSE).