Version code 7, for the release with the American disc, the settings
panel's tabs, the language choice, the inverted camera turns, passthrough
around the giant screen and the screen picture that follows the GPU's
load.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The settings panel beside the pause menu held nine of the settings of
petari_vr.ini; the others needed the file edited over adb. Players asked
for all of them in the game, for a choice of language, for the camera's
turns the other way round and for the room around the giant screen.
- One table of the numeric settings (vr::Setting in vr_game.cpp: key,
range, default, how to read and change it) now serves the file's loader
and the panel. Values outside a setting's range are clamped instead of
ignored.
- The panel (vr_settings.cpp) is drawn from tables of rows (a switch, a
stepper or a slider) on four tabs: Screen, Diorama, Picture, Game, with
a Defaults button for the open tab. It writes only the lines of the
settings changed on it, in one pass, so the rest keep following the
defaults. The refresh rate and the highest resolution now apply at
once; the clock levels and the language at the next start.
- language: each disc's languages (European: English, French, German,
Spanish, Italian; American: English, French, Spanish) with their
folders; SCGetLanguage answers with the one asked for when the copy has
its texts. The European disc's EuDutch folder holds the English texts
again and is not offered.
- invert_camera (on by default): the game moves its camera round Mario
the way the D-pad is pressed, so the view turns the other way. With
the setting CameraLocalUtil's two tests swap sides (and CameraInfo's
two arrows), and the diorama's snap turn takes the other sign: pushing
the right stick right turns the view to the right. Pages and menus
keep their sides.
- passthrough (off by default): XR_FB_passthrough, with
com.oculus.feature.PASSTHROUGH declared (not required) in the manifest.
The feature and a reconstruction layer are made when the setting first
asks, and paused while it does not. While they run the passthrough
layer goes out first and the eye layer blends by its alpha; around the
giant screen the eye images are cleared to transparent, fading over
0.3 s. The diorama's eye images stay opaque.
Checked headless on the headset (every tab and control, the saved file,
the camera's direction with the setting off and on, French and Spanish
texts on the two discs) and in the app unworn (the language from the
file, passthrough started, paused and started again without an error,
the refresh rate changed from the panel). Measured there with
passthrough: the compositor's GPU time goes from 1.9 to 3.1-4.2 ms a
refresh; worn, a player's heavy scene fell from 60 to 44 frames a second.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Version code 6, for the release that keeps the stage music playing and
plays it at its full volume.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Version code 5, for the release with stereoscopic 3D on the giant screen,
the view that starts facing the player, the comet filter left out of the
diorama, and the converter as a download of its own.
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>