The emulated accelerometer had its own axes (x right, y along the
pointer, z out of the button face) where KPAD's are x left, y out of the
button face, z along the pointer ((0, -1, 0) held level, KPADReset),
which the game then remaps (WPadAcceleration::update). A level
controller read as a remote standing on end: the surfing coach's "Point
your Wii Remote at the screen" never passed, and the Star Ball would
roll forward at full speed.
- wpad.cpp adds gravity in KPAD's axes. While the game steers by tilt
(port_input_use_tilt), it follows the right controller pitched up by
the game's neutral angle, so a level controller gives the grip the
game asks for; a controller whose orientation is unknown counts as
level. PortPadState carries which way is down from the controller
(xr_app.cpp) and, as accelerations, only the motion on top (shakes).
- Star Ball: neutral 80 degrees (90 - sCoreBaseDegreeYZ), not 100. Its
tutorial reads the tilt only while it checks that the remote is
raised, so aiming near the sign never counts as a shake.
- PETARI_INPUT scripts tilt the controller with PITCH= and ROLL=.
- docs/CONTROLS.md: the in-game instructions in controller terms.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A native port built on the Petari decompilation (previous commit): an
HLE platform layer (OS, DVD, GX, audio, input, NAND) under the game's
own code, an OpenXR presentation (a diorama around the player, a giant
screen, the HUD and settings as compositor layers, SpaceWarp, dynamic
resolution), Touch Plus controls, the tools that convert your own game
files (tools/cook, which also takes the few pieces of data the game's
executable holds from your sys/main.dol), and the port's changes to the
decompilation (`git diff petari-base -- decomp`). README.md explains
installing and building, docs/TECHNICAL.md how it works.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>