RetroXR v0.4.0: link cables that carry real data
Full changelog · Download · SideQuest · Discord
Major new features
Section titled “Major new features”🔌 Serial link
Section titled “🔌 Serial link”Two machines in the room can now be cabled together, and the data really crosses the wire. This needed a piece that did not exist: a core-agnostic serial link API, which went upstream to RetroArch. The cores carrying the other half are forks the core manager downloads for you.
What each fork brings:
- mGBA — GameCube link with Dolphin (up to four GBAs on GC-GBA cables, BIOS required), up to four players single-pak and multi-pak over three link cables, and the 1st/2nd gen link protocol for Game Boy and Game Boy Color. For single-pak, the purple end goes into the host — the machine holding the cartridge.
- Dolphin — the GameCube side of that cable, plus raw memory card files and Nunchuk accelerometer support.
- pcsx_rearmed — a serial cable between two PlayStations, and it now notices when memory card 1 is pulled while a game is running.
- gambatte — a Game Boy link cable between cores. It will happily link a gambatte Game Boy to an mGBA one.
Use this on PCVR if you can. A link is several cores running at once, which is more than a standalone headset comfortably carries. It runs on a Quest — but the recording above is PCVR for a reason.
Full detail on the new link cables page.
💾 Save states
Section titled “💾 Save states”Save and load state, at any moment, on any core that supports it. Each state is stored with a screenshot of what was on screen when you took it, so the list reads as pictures rather than timestamps — and states back up to RomM with those screenshots intact. See game saves and backups.
🎮 A PlayStation you can look at
Section titled “🎮 A PlayStation you can look at”The PlayStation has stopped being a grey box.
Both pads are modelled too, and which one you plug in is what selects the controller type — the original pad picks the standard controller, the DualShock picks dual-shock. No menu involved.
🕹️ Wii: a remodel, and Nunchuk motion at last
Section titled “🕹️ Wii: a remodel, and Nunchuk motion at last”The Nunchuk’s own accelerometer works. That had been blocked upstream rather than here — libretro had no way to express a second motion sensor on one controller port — so it took a sensor sub-index added to libretro before RetroXR’s Dolphin fork could report it.
Both accessories were remodelled while that was in flight. The Nunchuk is based on a laser scan of the real thing (everything but the stick) — thanks to Wesk of the BitBuilt forums for it.
The remote also picked up three things:
- SYNC, under the battery tray, is now an ordinary poke rather than a trigger press. The cover is the safety.
- POWER works — hold one second to turn the console on, four to turn it off.
- It can be held sideways in two hands, the NES-pad grip a lot of Wii games assumed.
👐 Capacitive finger tracking
Section titled “👐 Capacitive finger tracking”On Meta Quest Touch controllers, RetroXR now reads the capacitive sensors, so your fingers sit where they really are on the controller instead of snapping between canned poses. On PCVR use SteamVR as the runtime for this — the Horizon link does not pass capsense through.
The poke interactor moved to your index fingertip, off the cone that used to stick out of the controller. Everything you press with a finger is now reached from where the finger actually is.
🎛️ Per-platform rebinding
Section titled “🎛️ Per-platform rebinding”Both the XR controllers and any external gamepad can carry a different map per
platform, set from the CONTROLS menu. A per-platform map is a whole map rather than a
patch, so a platform you have customised keeps what it had and does not pick up later
global edits. See setting up your controls.
💿 Disc control
Section titled “💿 Disc control”Cores that support disc control no longer switch off when the disc is pulled, and multi-disc games can be swapped from disc 1 to disc 2 mid-game.
🔴 NES: a machine that sounds like one
Section titled “🔴 NES: a machine that sounds like one”The NES got recorded hardware sounds from a real NES-001 — the power and reset buttons, the controller buttons, a controller plug seating, the CH3/CH4 switch, a cartridge going in and out, and the cradle latching.
Its interactions changed with it: the lid is now a poke, the power button gives off its own light, and the cartridge cradle has to be pressed down before the console can see the game, exactly as the sprung bay demanded.
🪢 Verlet rope
Section titled “🪢 Verlet rope”The cable simulator was rewritten to be more stable — far less jitter in the leads hanging off everything.
Minor new features
Section titled “Minor new features”- If a BIOS is on the device, the core’s show BIOS startup option is turned on for you, so a machine with no game boots to its own firmware screen.
- Posters: drop an image into
posters/and stick it on things. Cartridgesin the spawn menu is nowGames.- Default world scale is 0.85×, up from 0.8×.
- A TV’s source is recalled when a saved room is loaded.
- Cores and BIOS files can be deleted in-headset, and orphaned metadata cleared from the storage screen.
Netplay
Section titled “Netplay”Still experimental — only use it if you want to help test it. Many object-sync fixes and under-the-hood netcode changes went in this release, but the warning stands.
Bug fixes
Section titled “Bug fixes”Collision on handheld cartridges, the scraper picking the wrong region for images with no disc number, frame stuttering from Godot over-allocating frame culling threads, a row of pixels blowing across the seam on dual-screen handhelds, BIOS files inside folders on RomM, object position recall when loading a scene, and the cd/cassette player’s menu failing to appear — plus a great many more.
Known issues
Section titled “Known issues”- Desktop interaction struggles to select socketed objects — controller plugs and memory cards — when they sit near each other.
- Pressing the NES cradle with no cartridge in presses a phantom cartridge.
- The NES lid still shows a trigger glyph, though it is a poke now.
- Crashes can happen between loading scenes.
- Four GBAs with three of them empty can stutter at first.