Releases: RaYRoD-TV/sm64coopdx-vr
Release list
v0.11 - Eye-dump measurement, correct stereo in both eyes, clean title screens
Everything here is new since v0.10.
Added
- Dump Eye Images button in the VR menu. It writes exactly what each eye rendered to eyedump_L.bmp and eyedump_R.bmp next to the exe, plus an eyedump_info.txt naming the view mode, stereo depth and render scale they were captured under. Both eyes come from the same frame, so anything that looks wrong in one eye can be measured and compared instead of described. It's a menu button rather than a hotkey because under a headset the desktop window never has focus.
- Instant Play checkbox (Options > Misc). Experimental and off by default: it presses Play for you at launch, but on a heavy mod set it still lands on the vanilla title screen rather than in the game. The Play button itself is unaffected and goes straight into the game as always.
Fixed
- The castle sun carpet renders correctly in both eyes, and it was never the z-fighting it looked like. An eye dump settled it: the left eye drew the full octagon while the right collapsed it into a crushed, stippled wedge - broken geometry, which is why every near-plane, depth-bias and render-layer fix bounced off it. The single-walk stereo replay was responsible and has been removed outright; each eye walks the display list itself again, the way it did before that optimisation existed. That gives up about 3 ms a frame and buys back a renderer with one path instead of two.
- No HUD on the title screens - and it was never the game drawing it. Lives, stars and the power meter over the Mario head came from the mod HUD layer (character select draws its counters there), which no amount of gating the game's own HUD could reach. That layer, the game HUD and nametags all stand down on any start screen now.
- Disabling a mod and applying properly unloads it. Applying used to rebuild the active mod list without tearing the old one down, so a romhack's levels, actors, behaviors and camera overrides stayed registered and kept overriding vanilla with its checkbox cleared. The apply now runs the same teardown leaving a session does, then rebuilds - and it returns you to the castle grounds rather than reloading the level you were standing in, because a romhack's level number usually still resolves once its mod is gone. Turning mods ON still keeps you where you are.
Changed
- Toast notifications sit at the bottom right, clear of the star counter and the camera-mode corner.
- Stereo Depth ships at 50 in every view mode. A saved value still equal to that mode's old stock number moves up with it; anything you dialed in yourself stays exactly where you put it.
- "Stop Hosting" in the pause menu reads "Return to Main Menu", which is what it does when you're playing solo.
sm64coopdx-vr-v0.11-win64.zip is the whole thing: unzip anywhere, drop a US ROM named baserom.us.z64 in the folder, and start your VR runtime before launching the exe. No Nintendo files inside - the game reads its assets from your own ROM. VR settings live in-game: Options > VR on the title screen, or pause > VR during play.
More of my VR ports & projects: https://rayrodtv.com/
Known issues: leaving the menu completely untouched for a while can end up on the Mario head screen - it isn't the attract demos and isn't a special warp (both ruled out by tracing), so the level script takes that route on its own; harmless now that no HUD draws there, and any input keeps you away from it. The save-file screen reached through Classic Boot is also missing its button face textures; the rest of that screen renders correctly.
v0.10 - Recenter from inside the headset, VR menu everywhere, first-person carry fixes
Covers v0.9 and v0.10 - v0.9 landed in the tree on July 23 but never got its own download, so everything below is new since the v0.8 zip.
Added
- Recenter from inside the headset: hold the right stick click about half a second and the world, menus and HUD snap to your current gaze, with a haptic tick (a tap still cycles the view mode). There's also a Recenter View button at the top of the VR menu, and the headset's own recenter (the runtime dash one) now lands properly in any session state. Before this the only reliable recenter was switching view modes, which only worked by side effect.
- The VR menu is on the title screen now (Options > VR), not just the pause menu, and its flatscreen version shows the full VR Mode picker (Diorama / Third-person / First-person) instead of hiding it. Pick a view without the headset and that's what the next VR launch uses - picking First-person drives the flat first-person camera right away, same as the d-pad up cycle. Flatscreen VR menu changes save now too (they used to last only until you quit).
- More VR Mods button on the main menu - opens rayrodtv.com in your browser.
- Classic Boot (Options > Misc): start the game the way the console did - the Super Mario 64 splash, the interactive Mario head, PRESS START, the file select - then the game begins from your chosen file with the full opening on a fresh save, while mods, saving and co-op work exactly like a Play game underneath. Applies on the next launch. (The title screen's attract demos stay off in this mode for now.)
- Playing solo skips the Lakitu-and-letter opening by default, even on a new file - the full opening lives in Classic Boot. The Skip Intro host setting still controls it for hosted games.
Fixed
- Carrying something in flatscreen first person is visible again: a grabbed bob-omb used to vanish into your invisible hands (the first-person body hide also hid whatever it was holding). The carried object now renders in front of the view at carry height, stays steady while you turn, and hands back to the normal carry the moment the camera pulls out.
- Throws and drops in first person land where you stand. The game places a released object at the last spot the hand actually rendered, which froze while the body was hidden - so a thrown bob-omb teleported back to wherever you grabbed it. The release point stays current now, in flat and VR first person both.
- The decal shimmer in VR is gone: castle rugs, Mario's shadow and wall art no longer flicker or z-fight when you move your head. The eye near plane sits at 5 cm now and decals get a stronger depth bias in the eyes; the flat game renders exactly as before.
- A crash affecting any camera-less level is fixed engine-wide: the renderer's lighting pass read the camera matrix without checking a camera exists.
- Switching view modes no longer flings the camera backward - leaving First-person used to let the chase camera glide from Mario's head back out over a second or more, which in VR reads as the whole world rushing through you. Mode switches cut instantly, the same way warps do.
- Move Where You Look is first person only now - it no longer attaches head-steering to the third-person camera. Head-look steering also reacts in less than half the time, registers smaller head turns, no longer risks whipping Mario the long way around near the tracking seam, and goes quiet while tracking is lost or a recenter is still settling.
- The first-person toggles (Flip Cam / Ease-Back) no longer revert when you leave a game or join a lobby in flatscreen.
- Headless logs work: launching with output redirected to a file used to produce an empty log (stdout was silenced unless --console was passed, and buffering ate the rest). Redirected output streams live now.
Changed
- FP Flip Cam is on by default - backflips, side flips and rollouts roll the view out of the box. Same toggle as before if it's too much; the settings file can't tell an old deliberate "off" from "never touched" (off WAS the default), so existing setups start on once, and turning it off again sticks.
- Mute When Unfocused (Options > Sound) is on by default - the game goes silent while its window is in the background. A config that already saved the old default keeps it off; flip it in the Sound menu if yours stuck.
- VR performance: draw batches are 4x larger (the old ceiling forced ~80 pointless batch breaks a frame in heavy scenes), each eye's GPU work kicks off as soon as the eye finishes instead of piling up at frame end, and the Desktop Mirror defaults to Off in VR (the monitor re-render cost about 30% of the frame and the headset never sees it; your saved mirror choice wins over the new default).
sm64coopdx-vr-v0.10-win64.zip is the whole thing: unzip anywhere, drop a US ROM named baserom.us.z64 in the folder, and start your VR runtime before launching the exe. No Nintendo files inside - the game reads its assets from your own ROM. VR settings live in-game: Options > VR on the title screen, or pause > VR during play.
More of my VR ports & projects: https://rayrodtv.com/
Superseded by v0.11, which fixes a stereo bug this build still had.
v0.8 - Selectable mods in-game, real VR keyboards, chat in the world
Added
- Mods are selectable in-game: Pause → Mods works like the title screen's mod menu. Playing solo, every installed mod is listed with a checkbox, incompatible mods grey out, mods with their own settings get an Options button, and Apply reloads the mod set live with a clean level reload. Render96 can go on or off mid-session, no restart.
- In online sessions the mod set stays locked (as it must), shown read-only with each mod's options still reachable.
- SteamVR system keyboard: under the SteamVR runtime (Steam Link, Virtual Desktop in SteamVR mode) every text field summons SteamVR's own keyboard, laser pointing and all. It loads straight from your SteamVR install; on Quest Link or anywhere it isn't available, the built-in keyboard appears instead.
vr_native_keyboardin sm64config.txt turns it off if you prefer the built-in one. - The built-in keyboard shows what you're typing on an entry line right above the keys (passwords masked).
- Chat floats in the world: opening chat or the console no longer switches the view to a flat screen. The game keeps rendering around you, and the chat and keyboard sit on a world-locked panel in front of you, sized to be readable, shrinking back to the normal HUD when you're done.
- New chat hotkey: hold the left menu button about half a second (with a haptic tick) to open or close chat. A quick tap still pauses.
- Climbing in first person gets a subtle view bob (FP Flip Cam).
- F2 and d-pad up cycle the view mode in flatscreen too (Diorama / Third-person / First-person).
- The pause menu opens with L as well as R.
- Experimental stereo record/replay renders both eyes from one display-list walk. It's in the tree but off by default, since the recording overhead doesn't pay for itself yet;
vr_stereo_replayenables it for the curious. - Every session writes a frame-pacing CSV and hitch summary (
vrprof_*.csv,vrprof_trace.txt) next to the exe; delete them freely.
Fixed
- In first person your own model is fully hidden with custom model packs.
- Poles no longer spin the view in VR.
- The first-person toggles survive restarts.
- Paginated menus page correctly with both binds and wrap around.
- DynOS packs load actor/texture files from nested subfolders now, so Render96ex-style layouts work, and the source parser understands
u32. - A possible crash in the GL backend during shader/texture setup.
Changed
- Streaming vertex buffer: batches append into a fixed ring instead of reallocating the GL buffer hundreds of times per pass. Identical output, less driver churn.
- Same-texture reload skip: the top batch-flush cause in profiles (~72%) was redundant re-imports of the texture already bound. Those are skipped now, and the memo is invalidated any time GL texture state changes behind the interpreter's back.
- The VR overlay pass no longer transforms 3D vertices it was going to drop anyway.
- Default controls reworked for keyboard and mouse: mouse look on by default, Space jumps, Escape pauses, right-stick camera Y un-inverted.
- The old X+Y chat combo is gone; X and Y belong to the game and your mods again.
sm64coopdx-vr-v0.8-win64.zip is the whole thing: unzip anywhere, drop a US ROM named baserom.us.z64 in the folder, and start your VR runtime before launching the exe. No Nintendo files inside — the game reads its assets from your ROM. A standalone Quest version that runs on the headset itself is still planned.
v0.7
sm64coopdx VR v0.7
Fixes
- Act/star selector shows its stars again — a v0.6 camera change had hidden the 3D star models, leaving only the 2D act numbers.
- Menus no longer get cut off in a window — the UI now scales to fit any window size (not just window height).
- Per-eye FOV uses each eye's native OpenXR projection, fixing the cross-eyed / double-vision look on Quest 3 and Meta Horizon.
New
- Recenter from your headset's own recenter — Quest (hold the Meta button → Reset View), Pimax, or SteamVR. The two-thumbstick recenter gesture was removed in favor of it.
- Gameplay HUD is world-locked instead of following your head.
- Title sequence renders on the flat panel.
How to play: unzip, drop your own Super Mario 64 US ROM in as baserom.us.z64, and run sm64coopdx.exe. Contains no Nintendo files.
Super Mario 64 co-op VR (Standalone Version)
Super Mario 64 co-op in VR, running on the headset itself
No PC. No link cable. No streaming. Install it, put the headset on, and you are standing in the
castle grounds.
This is the first standalone Quest release of my VR port of sm64coopdx. It is a real port, not a
screen floating in a void: the game is rendered in true stereo from your own eyes, at real scale,
running natively on the headset at its full refresh rate.
Why this one
Plenty of things can put Mario 64 on a screen in front of you. This is built to be the version you
actually want to live in.
- Four ways to play, and they are all finished. Third person over Mario's shoulder. First person
from inside his head, with a subtle view bob when he climbs and the camera easing where it should.
Diorama, where the level sits in front of you like a toy you lean into. And a cinema screen for
when you want to sit back. Click the right stick to cycle. - Everything is a live slider you move while you look at it. World scale from tabletop to
life-size. Stereo depth, eye height, HUD size and distance, camera distance. Nothing hidden in a
config file, nothing needing a restart, nothing you have to take the headset off to change. - A VR menu that belongs to the game. Drawn in Mario 64's own font, floating in the world,
world-locked so you can look around it. Reachable from Pause or from Options on the title screen. - Full motion controllers, with a fixed, sensible layout mapped for Touch, Touch Plus, Index,
Reverb and the rest. Grab and throw on the grips. Per-hand rumble. - Recenter without leaving the game. Hold the right stick click; the world snaps to your gaze,
with a haptic tick to confirm. Your headset's own recenter works too. - Co-op. Host, or connect to a friend, and run the castle together.
- Mods work, toggled in-game from the pause menu with a proper reload.
- An on-screen keyboard and world-locked chat, so you never need a real keyboard to talk or
enter an address.
The comfort work is the part you will not notice, which is the point: honest stereo geometry, real
tracked eye poses submitted to the compositor so the world stays nailed down while you move, and
first-person camera motion that never yanks the view somewhere you did not ask it to go.
Getting started
- Sideload the APK (SideQuest, or
adb install). - Plug the headset into your PC and copy your own Super Mario 64 (US) ROM onto it. Downloads,
Documents, anywhere. The game searches for it and checks the contents, so the folder and the
filename do not matter. - Launch it. The first time, it will ask for file access so it can find that ROM. Turn it on, then
tap the app again and you are in.
No game data ships here and none ever will. Bring your own ROM, as you should.
Notes
- Built and tested on Quest 3.
- Direct connect and hosting are working. The public lobby browser is not connecting yet, so play
with friends by address for now.
Playing on Windows instead? The PC VR build lives in the v0.11 release: sm64coopdx-vr-v0.11-win64.zip.
More of my VR ports and projects: https://rayrodtv.com/
v0.6
Super Mario 64 in VR, built on sm64coopdx. With a headset connected it boots into VR; with none it runs as the normal flat game. You bring your own Super Mario 64 US ROM. This release also includes a native Quest build that runs on the headset with no PC.
What's new in v0.6
Menus
- New Quit Game button in the in-game pause menu. It quits straight to desktop, so you no longer have to stop hosting (or disconnect) and then quit again from the main menu. It asks to confirm first, and sits under Stop Hosting / Disconnect.
First person
- Talking to characters (Toads, Bob-omb buddies, Koopa the Quick, cap switches, signs) no longer freezes the game in first person. The dialog runs without moving your view, and a hung conversation no longer quietly breaks later interactions in the level.
- Slides, slide kicks and being knocked flat now ride at body height instead of leaving the view up at standing height while Mario scrapes along below.
- FP Flip Cam covers more of the animation: falling and knockbacks tip the view the way the hit threw Mario, the dive and long jump lean into the lunge, dying tips the view over and holds it while the eye sinks, and falling out of the level eases the view up toward the shrinking level above you.
- The melee lean is much subtler now (under 4 degrees) and smoothed across a whole combo instead of restarting on every hit.
- Touching down on a kill plane no longer hurts, so no stray pain scream or camera shake right before the fade.
VR
- The camera stick (right stick) has a proper response curve now: fine and comfortable near the center, ramping to full turn speed at full deflection. The old flat scale made it feel both slow and limited in range.
- Joining or leaving a lobby no longer breaks first-person view or quietly resets its toggles.
Converted romhacks
- Converted romhack packs load more reliably: a camera node with no function no longer crashes on the first level load, unidentified behavior and geo functions are skipped instead of spamming the log, and loading a level pack now prints whether it took over a vanilla script.
Quest standalone (APK)
sm64coopdx-vr-quest.apk runs natively on the headset, no PC needed.
- Sideload it with SideQuest, or run
adb install sm64coopdx-vr-quest.apk. - Put your own Super Mario 64 US ROM on the headset at:
Android/data/com.maniscat2.sm64coopdx/files/baserom.us.z64 - Launch it from Unknown Sources in the headset library.
The VR controllers, view modes and settings work the same as the PC build. Nothing from Nintendo is in this download; you supply your own ROM.
Multiplayer is untested
The VR build does not touch the network layer, so the protocol still matches stock v1.5.1 and co-op should work. But I have not been able to test hosting or joining a lobby myself yet, on PC or Quest. If you try it, I would love to hear how it goes, especially on the headset.
Mods
https://mods.sm64coopdx.com/mods/ is a great place to find mods for coop. On PC, drop them in the mods folder and pick them from Mods on the main menu before you press Play.
How to use it (PC)
Download sm64coopdx-vr.zip below, unzip it, put your own Super Mario 64 US ROM in the folder named baserom.us.z64 (or drag any .z64 onto the window), then run sm64coopdx.exe. Start your VR runtime first if you want VR. There is nothing from Nintendo in this download.
v0.5
Super Mario 64 in VR, built on sm64coopdx. With a headset connected it boots into VR; with none it runs as the normal flat game. You bring your own Super Mario 64 US ROM.
What's new in v0.5
VR controllers
- You can now play with the VR controllers themselves. No gamepad needed. Quest 3 / Quest 2 / Quest Pro Touch controllers, Index, HP Reverb G2, Windows Mixed Reality and Vive wands all have layouts, with a basic fallback for other OpenXR controllers.
- The layout: left stick moves, right stick is the camera, A jumps, B punches, left trigger crouches (Z), the left menu button pauses, and clicking the right stick cycles the VR mode.
- Squeezing either grip grabs and throws objects. The grips only act when something grabbable is in reach or already in Mario's hands, so squeezing them in open space does not punch.
- The layout is fixed and independent of your gamepad bindings, so it works the same on every install. Gamepad rebinds in Options still apply to gamepads.
- Menus navigate with the stick and A/B, and the triggers flip pages in the paginated menus.
- Rumble plays through both controllers, in short self-expiring pulses so it can never get stuck vibrating.
- The camera stick turns at a controllable speed and its left/right matches what you expect in VR.
- On Quest 3 the buttons land on the hands they belong to (the native Touch Plus profile is used when the runtime offers it).
- Taking the headset off releases all controller input, and a gamepad can stay connected at the same time.
- The console prints which controller profile each hand bound, which is the first thing to check if a controller misbehaves.
Menus
- Reset to Default in the VR menu now resets the settings of the view mode you are in, instead of switching you to another mode. Other modes keep their tweaks.
How to use it
Download sm64coopdx-vr.zip below, unzip it, put your own Super Mario 64 US ROM in the folder named baserom.us.z64 (or drag any .z64 onto the window), then run sm64coopdx.exe. Start your VR runtime first if you want VR. There is nothing from Nintendo in this download.
v0.4
Super Mario 64 in VR, built on sm64coopdx. With a headset connected it boots into VR; with none it runs as the normal flat game. You bring your own Super Mario 64 US ROM.
What's new in v0.4
VR
- Each VR mode keeps its own distance, size, height, stereo depth and head motion values. Switching modes brings back what you set for that mode, and every mode's values are saved between launches.
- Settings changed right before quitting are no longer lost to the save delay.
- The default Diorama size is now 1376.
- The VR menu is paginated, so Reset to Default and Back are no longer cut off. Flip pages with the < > buttons or the L/R triggers.
- Reset to Default now also resets the HUD Size slider.
- Added a World Scale slider for first person: it changes how big the world feels on foot. Default is unchanged, and it only affects first person.
- Door and level transitions (the fade and wipe) now fill the whole view instead of showing in a small panel.
- Talking to a character no longer zooms the view in too far. The diorama framing holds while the text shows.
- Third-person mode no longer dips the camera through the floor on quick camera moves.
First person
- Optional Move Where You Look: Mario walks and turns toward where you are looking. Off by default, with a toggle in the VR menu.
- Sliding and diving no longer pull the camera back, so the ground does not seem to slip out from under you mid-slide.
- The view no longer gets stuck at a sign after reading it: the camera returns faster once the dialog closes and snaps back as soon as you move.
Menus
- The button press that opens a dialog no longer skips its first page.
How to use it
Download sm64coopdx-vr.zip below, unzip it, put your own Super Mario 64 US ROM in the folder named baserom.us.z64 (or drag any .z64 onto the window), then run sm64coopdx.exe. Start your VR runtime first if you want VR. There is nothing from Nintendo in this download.
v0.3
Super Mario 64 in VR, built on sm64coopdx. With a headset connected it boots into VR; with none it runs as the normal flat game. You bring your own Super Mario 64 US ROM.
What's new in v0.3
VR
- Renamed the "Tabletop" mode to "Diorama".
- Diorama mode now uses the free orbit camera, so you can look around the model from any angle. Its wall collision is smooth and ignores floors and ceilings, so tilting the view up or down no longer yanks the camera around.
- The VR settings menu keeps the live diorama in view while it is open, so you can see distance, size, height and stereo changes as you make them.
- VR settings are remembered between launches (mode, distances, sizes, stereo depth, head motion, HUD size, anti-clip, and the first-person toggles).
- Added a HUD Size slider to scale the in-headset HUD.
- Frames are paced by the headset itself instead of the desktop monitor, which helps smoothness when the two run at different refresh rates.
First person
- The flip cam rolls the side flip toward the side it actually flips, and tree jumps flip too.
- You can look left and right while hanging on a ledge instead of being locked facing the wall.
- In Diorama mode the C-up look-around no longer engages, so it cannot freeze your movement.
Hide HUD
- Hide HUD now hides the gameplay HUD, including mod-drawn HUDs, while leaving menus and pause screens visible.
Menus
- Added a Mods button to the main menu, so you can pick your mods before pressing Play.
How to use it
Download sm64coopdx-vr.zip below, unzip it, put your own Super Mario 64 US ROM in the folder named baserom.us.z64 (or drag any .z64 onto the window), then run sm64coopdx.exe. Start your VR runtime first if you want VR. There is nothing from Nintendo in this download.
v0.2
v0.2 - 2026-06-08
VR
- New VR Mode selector in the menu: Tabletop, Close-up, First-person. You can
also cycle the mode with d-pad up or the F10 key. - Tabletop mode now reads like an actual model on a table: smaller world, sat
lower and closer, with stronger stereo depth and a slight downward tilt so you
look down at it. - Tabletop and Close-up look controls now respond directly like first person
instead of the laggy accelerated camera. - The view recenters on whichever way you're facing when the game opens, so the
world is in front of you no matter how you started. - The menu panel sits at eye level instead of drifting toward the bottom.
- Mouse look no longer inverts itself when the headset takes or loses focus.
- Added a Hide HUD toggle in the VR menu (works in flatscreen too).
First person
- Flip cam follows the actual flip in both flatscreen and VR: forward and back
somersaults (triple jump, slide flip, backflip, rollouts) pitch the view, and
the side flip rolls it to the side. Smoothed so it isn't choppy. - First person stays on while flying with the wing cap.
- Added ease-back: when you talk to something or attack, the camera pulls back
to show Mario, then eases back into first person. He stays hidden otherwise
and is solid, not see-through, while shown. - Removed the old Show Body option. The ease-back replaces it.
Input
- Gamepad reliably captures menus now, including the in-game pause menu, even
when the mouse last had the cursor.
Flatscreen
- Skybox covers the full screen again with no black bars, and stays anchored
without swimming, including after taking the headset off.