A xenia-canary fork with a built-in emulated LEGO Dimensions ToyPad — play the full game with all DLC and a 60 FPS unlock, no physical portal needed.
Download: latest release — the zip ships a preconfigured, portable build. The release notes contain the full step-by-step install guide (game, DLC and title update).
Thanks LEGO Dimensions Discord for support!
Click on image to watch on YouTube.
- Emulated ToyPad (
src/xenia/hid/portal/emulated_toypad.*) — a complete software implementation of the LEGO Dimensions portal: crypto handshake, tag reads/writes, LED commands. The game detects it as real hardware. Protocol logic is ported from RPCS3'sdimensions_toypad. - Companion app support — a loopback TCP listener (127.0.0.1:9191, same wire contract as the Cemu / RPCS3 / shadPS4 seamless builds) lets the LegoToypad overlay app place, move and remove characters while the game is running.
- Working DLC + Update installation. Regular xenia fails LEGO Dimensions' post-update data install at 96%. Three fixes in this fork make it complete:
IoDismountVolume/IoDismountVolumeByFileHandle/IoDismountVolumeByNamekernel exports are implemented (safe success no-ops) — the game dismounts the content volume to finalize the install.- Content package headers are written at creation time instead of on close — the installer enumerates its freshly created
appdatapackage while it is still open, matching real hardware behavior. XamContentCreateon an already-mapped root name now returnsERROR_ALREADY_EXISTS(the XDK-documented code) instead ofERROR_INVALID_PARAMETER— the installer re-opens its own open package to validate the install and only continues on that exact code.
Display > Internal Resolutionmenu — switch the render resolution between 1x (720p), 2x (1440p) and 3x (2160p) without editing the config. Applies on the next launch.Display > Toggle 60 FPS Unlockmenu — runs the game at 60 FPS by doubling the emulated vblank rate (the same approach RPCS3 uses for the PS3 version). Applies live, no restart; toggle again to go back to 30. Note: the emulator is demanding — if your PC can't hold a stable 60, use a frame-generation tool (e.g. Lossless Scaling / LSFG) instead.Modsmenu /Mhotkey — enable and disable file mods while the game runs. A mod is a folder inmods\with amod.txtdescribing byte patches applied to files inside the game's content packages as they are read:patch = PATCH.DAT | 0x807F8 | orig_splash.bin | new_splash.bin, i.e.<file inside the package> | <offset in that file> | <original bytes> | <replacement bytes>. The original bytes are verified against what is on disk first, so a mod built for different data is flagged incompatible and skipped instead of corrupting anything;origandnewmust be the same length. Nothing on disk is ever modified. Three mods ship in the release, all off by default: Quick Startup (boot splashes cut to 0.1 s each), Xenia Text Test and Super Sonic Infinite (needs the Sonic Level Pack DLC). Mods currently work on Title Update 23 only — a patch names the exact bytes it expects at an offset, and any other title update moves that data, so on TU24 (or with no update installed) the check fails and the mod is skipped instead of applied. That is the safe outcome rather than a bug, but it does mean mods do nothing until you are on TU23.- Roughly twice the frame rate at 1440p (
readback_resolve_max_kb) — the game reads resolved render targets back on the CPU for HDR eye adaptation, but only needs a small downsample chain; the emulator was copying back every resolve, including full-screen surfaces nothing ever looks at. Readback is now skipped above a size limit (bundled value256KB), which on the test machine took LEGO Dimensions from 23.5 to 43.9 FPS and the 1% low from 21.0 to 37.9, with the picture unchanged. The resolve itself still happens — only the wasted copy to system memory is dropped. Set the value to0to restore the old behavior exactly. Performancemenu / Right Shift — a live panel with FPS, frame time, CPU load for both the emulator and the whole system, RAM and video memory. Upstream xenia has no frame rate display at all, so this doubles as one. Nothing is sampled until you tick Measure performance in the panel (or setperf_monitor = true); the checkbox starts and stops the sampler while the game runs and remembers the choice.perf_log_to_fileadditionally appends one row per minute toperf_session.csvnext to the executable — average, minimum, maximum and 1% low FPS — with the row interval set byperf_monitor_interval; it is off by default, and the file belongs to a single session (the previous one is deleted when logging starts).- Real ToyPad passthrough (
src/xenia/hid/portal/hardware_portal.*) — if you own the actual LEGO Dimensions Toy Pad you can plug it in and use real figures instead of the companion app. The Wii U, PlayStation 3 and PlayStation 4 pads are supported (0E6F:0241); the Xbox 360 one is not, for now. Endpoint addresses and the interface to claim are read from the device's own descriptor, and the Xbox 360's frame wrapper (0B <len> 55 ...) is stripped on the way to the pad and restored on the way back, because the hardware only speaks bare0x55frames. Set up with Zadig, then turntoypad_emulationoff — see Using a real Toy Pad. - Stability fixes — the toypad response queue is bounded (fixes a memory leak during long sessions), and the bundled config ships the correct GPU readback settings for the TT Games engine (without them the picture accumulates artifacts within seconds).
- Grab the latest release and follow its install guide (game + DLC + TU23 sources and folder layout are described there).
- Launch the game — the title bar should read
v0.0.23.3(update applied), let it install its data when asked. - Run the LegoToypad companion app and play.
Known quirks: don't switch the render target path to ROV (the game hangs on loading with it); saves made before the title update may black-screen — start a fresh save.
The emulated pad is the default and needs nothing. To use your physical one instead:
- Install Zadig.
- Plug the Toy Pad in. In Zadig tick Options → List All Devices.
- Select LEGO READER V2.10. Check that the USB ID reads
0E6F 0241so you do not reassign something else. - Pick libusb0 as the driver and press Replace Driver.
- In xenia, open HID → Toggle physical ToyPad (USB) (or set
toypad_emulation = falsein the config) and restart the emulator.
The pad lights up shortly after the game starts and real figures work as they do on console.
Switching back is the same menu entry. To give the pad back to Windows (for a real console, or other software), uninstall its driver in Device Manager.
If it does not light up, check the log for lines starting Portal:. using LEGO Dimensions ToyPad means it was found and claimed, could not claim it means the driver swap did not take, and no supported portal found means Windows does not see the pad at all.
Same as upstream xenia-canary — see building. The toypad code lives in src/xenia/hid/portal/. CI builds run via the Toypad_build.yml workflow on the toypad branch.
- Dimensions Recompiled — a native PC build of LEGO Dimensions, made by statically recompiling the same Xbox 360 executable this fork emulates.
- DimensionsModLoader — mod manager for the game's
.DATarchives. - DimensionsSaveConverter — moves saves between the console versions.
- RPCS3-Seamless-Toypad-Build and shadPS4-Seamless-Toypad-Bridge — the same toypad idea for the PS3 and PS4 versions.
This is a fork of Xenia Canary, an experimental fork of the Xenia Xbox 360 emulator. Huge thanks to the xenia team — all the heavy lifting is theirs. See the Xenia Canary wiki and FAQ for general emulator questions.