LEGO Dimensions Recomp
Proof that a toys-to-life game can be recompiled: a native PC build of LEGO Dimensions from the Xbox 360 version.
Proof that a toys-to-life game can be recompiled. A native PC build of LEGO Dimensions, made by statically recompiling the Xbox 360 release: unlocked FPS, mod's, DLC's, SDL_GameControllerDB, multilingual support and a real or emulated Toy Pad. Public demo build. See the README below for details.
README
On GitHub 
A native PC build of LEGO Dimensions, made by statically recompiling the Xbox 360 release.
Download · How to make mods · Build it yourself · LEGO Dimensions Discord
Why this exists
I started this to answer one question: can a toys-to-life game be recompiled, and is a native PC port of LEGO Dimensions actually realistic?
The answer is yes, and this is the proof. It boots, plays, saves, loads DLC, and talks to a Toy Pad, as a normal Windows program.
This is not a claim to be the one correct way to play on PC. Emulation works, and the emulator projects did the groundwork that made this possible. If xenia, RPCS3, Cemu or shadPS4 serves you better, use them. I respect every project around this game and none of them are competitors.
There is a second reason, and it matters to me more than the first one. I want this to make someone else want to build something. If it gets one person curious enough to open a disassembler for the first time, it has already paid for itself.
So, to be blunt about what this is not: it is not a claim on the idea. Nobody's LEGO Dimensions port is blocked because this one exists. If a team gets together tomorrow and writes a better one from scratch, without using a single byte of what is here, that is exactly the outcome I was after and I will say so happily. Take the idea, ignore the code, do it properly.
And whatever you end up building — respect what other people are working on.
How Claude was used
I would rather you hear this from me than guess.
disassembly and file formats with me, and wrote large parts of the runtime glue, the installer, the mod tooling and this page.
What it did not do is decide what to build or judge whether the result was any good. The goal and the scope were mine. The domain knowledge about this game, its Toy Pad, its saves and its archives came from years of community work, not from a model. And above all I played the game. Every "this is broken", "this feels off" and "this is finally right" came from a person in front of the actual thing. A model cannot tell you a world failed to load or a cutscene hung. That loop is what turned something that compiled into something that plays.
If you are skeptical about AI being used this way, that is fair and I will not argue with you. Judge it by whether it works.
Install
No game data is included here. You bring your own, and the installer checks that it is the right one before it does anything.
Have ready:
- The Xbox 360 disc, dumped and extracted. Dump your disc to an ISO, then
extract that ISO to a folder with a tool like extract-xiso or Xbox Image Browser. The installer wants the folder, not the ISO. It is right when the folder contains
Default.xexalongsideGAME.DATandGAME.HDR. Only the original release works, and the installer will tell you if yours is a different build. - Title Update 23. Not 24, not 22. The recomp was built from the TU23
executable and will not run on anything else, so this one is checked by hash and a wrong update is refused. Give it either the raw package file, which is named
tu00000003_00000000and has no extension, or a folder holdingDefault.xexp,PATCH.DATandPATCH.HDR. - DLC, optional. Point the installer at a folder holding your DLC packages
and it takes all of them at once. Bought a pack later? Run the installer again and pick "Add DLC to an install I already have" on the first screen - it asks only for the packages and the folder you installed into, writes nothing else, and leaves your saves, settings and mods alone.
Then just run DimensionsRecompiled-Setup.exe and follow the wizard. It writes a README.txt next to the game with the hotkeys, settings and save locations.
Updates are handled in game. Turn them off with F4 → Online → Check for updates at start.
The Toy Pad
Out of the box the installer sets up the LEGO Toypad app, which stands in for the portal and lets you pick figures with a controller.
Your real Toy Pad works too - the Wii U, PlayStation 3, PlayStation 4, Xbox 360 and Xbox One pads are all supported. Windows will not let the game reach the pad on its own, so swap the driver once with Zadig: tick Options, List All Devices, pick your pad and check its USB ID before you change anything:
| In the list | USB ID | Pad |
|---|---|---|
LEGO READER V2.10 | 0E6F 0241 | Wii U / PS3 / PS4 |
LEGO(R) DIMENSIONS(TM) | 24C6 FA01 | Xbox 360 |
LEGO(R) DIMENSIONS(TM) | 0E6F 0141 | Xbox One |
Choose libusb-win32 and press Install Driver (on a pad Windows already has a driver for the button reads Replace Driver - same step). Then in game press F4, open Toy Pad, untick Emulated Toy Pad and restart. The pad lights up and real figures work.
To hand the pad back to Windows later, uninstall that driver in Device Manager.
The game can also start and stop the companion app for you: F4 → Toy Pad → Open the Toy Pad app with the game. It launches with the game and closes with it, and an app you started yourself is left alone.
Controls
Any XInput pad works, and so does the keyboard, with no setting to find first:
| Keyboard | Controller |
|---|---|
WASD | left stick |
| arrows | right stick |
J K H U | A B X Y |
E Q | LB RB |
I O | LT RT |
Enter or Esc | START |
= | BACK |
BACK sat on Backspace until 0.1.13 and kept firing by accident; it moved to =, and anyone who had rebound it keeps their own binding.
Every bind is editable in F4 under Keyboard bindings, with Rebind, Reset and Clear on each line. Keyboard and pad are live at the same time. Mouse look exists but is off by default: Controls → Mouse moves the camera.
Settings
F4 opens the settings. Since 0.1.17 they are arranged for people rather than for the code: Display, Performance, Graphics, Audio, Controls, Keyboard bindings, Shortcuts, Toy Pad, Mods and fixes, Online. Hover a line for what it does; an orange label means it takes effect after a restart. Everything technical is still there under Advanced, by its raw name - that is what a bug report may ask you to change.
Performance holds what actually costs frame rate: Resolution scale, the Output resolution cap, Anisotropic filtering and Depth of field blur. The last one is new: the game has no switch of its own, so the recomp drops that render pass entirely when it is off - a sharper picture and a little less GPU work.
The cheat menu
Del opens a memory scanner built into the game - the same idea as Cheat Engine, without needing Cheat Engine.
Pick a value type, type the number you can see on screen, First scan, then change it in game and Next scan = until a few addresses are left. Click one and Write once or Freeze it. If the number is not shown anywhere, start from Unknown value and narrow down with Increased / Decreased / Changed / Unchanged. Scans run on their own thread, so the game keeps moving while they work, and candidates are held as a bitmap rather than a capped list, so an unknown-value hunt actually converges.
Save as cheat stores an address under a name in cheats_5752084B.txt beside the game and re-applies it on every launch, only while its tick box is on.
Cheat Engine itself still works, and docs/cheat-engine.md explains the two things that otherwise make it look broken: guest memory is a file mapping, so MEM_MAPPED scanning has to be switched on, and every value is big-endian. Ready-made big-endian types for it are in tools/cheatengine. The console command membase prints where guest memory landed for the current run and converts addresses either way.
Languages
The game ships its official translations, and the recomp picks one the way the console did, with a language ID. Set user_language in legodimensions.toml while the game is closed, or find it in F4 under Advanced / Kernel:
user_language = 4 # French
Some translations share a language ID and are told apart by the country instead, so user_country picks between them. Both Spanish translations sit on one ID, and French may behave the same way.
user_language = 5 # Spanish
user_country = 71 # ... as spoken in Mexico
user_language | Language |
|---|---|
| 1 | English (default) |
| 3 | German |
| 4 | French |
| 5 | Spanish |
| 6 | Italian |
| - | Russian |
user_country | Country |
|---|---|
| 103 | USA (default) |
| 31 | Spain |
| 71 | Mexico |
| 34 | France |
| 16 | Canada |
This is a beta build. Expect bugs.
graphics and lost audio still happen, and finding them is why it is public. How well it runs varies by machine, because the graphics path still has to translate what the Xbox 360 GPU was asked to do.
Known issues:
- Random freeze in some levels (seen most in the LEGO Movie world): the
picture stops, the music keeps playing. Two game threads end up waiting on each other. Being worked on; if it happens to you, attach the
hang-*.dmpthe game writes next to the exe to your issue. - Stutter when a level or cutscene loads, settling after about half a
minute. It comes from how GPU data is synced back during those scenes. A faster way exists but broke geometry on AMD cards, so it is off for now.
- Mods can break abilities. With several characters out at once, some mods
have stopped characters from using gadgets and ranged attacks. Turn mods off in
F8before reporting gameplay bugs. - Starting a new save and quitting before the opening cutscenes finish can
leave a save that will not load. Play until you are walking around first.
- 60 FPS is an unlock the original never ran at, and most remaining bugs
live there. Set Performance → Frame rate target to 30 in
F4before reporting anything odd. - Some scenes render with wrong colours or missing effects (darker
lighting in parts of the Simpsons and Ghostbusters worlds, for one).
- Lag with AMD FSR 1 or CAS selected. On weaker GPUs the upscaling
filter itself can cost frames. If the game stutters, set
F4→ Graphics → Upscaling filter to Bilinear (fastest). - Windows on ARM (Snapdragon laptops, Surface Pro 11) is not supported:
the game starts but shows a black screen.
- Screen tearing. The
vsyncsetting never controlled it - despite thename, it only paces the emulated console - so it is now locked off and greyed out of
F4rather than left there to be tried. Stopping the tearing properly needs deeper changes to how finished frames reach the screen; until then, your driver's own vertical sync or a frame limiter is the workaround. - The Vulkan backend is a work in progress. Direct3D 12 is the working one
and stays the default. See below if you want to try Vulkan anyway.
- Not every code path has been visited, so an unexplored corner can still hit a
hard stop rather than a graphical glitch.
Vulkan, if you want to try it
Set gpu_backend to vulkan in legodimensions.toml next to the game.
What was wrong: a texture-fetch path multiplied 16-bit samples by 65535 and blew entire worlds out to flat white with the HUD still drawn on top. That branch is now switched off, so colours come out correct - but darker than intended, because the scaling it was meant to do is simply not happening yet. Making it correct rather than absent is the actual fix, and it is not in this release.
Put plainly: Vulkan went from unusable to look at it and see. That is all.
What is planned
Roughly in the order I want to get to it. No dates.
- GPU recompilation - in progress now. Graphics is the one part still
done the emulator way: the game's draw calls are translated while it runs. A native Direct3D 12 renderer is being built that does to them what was already done to the CPU code - shaders translated ahead of time, and the game's draw calls going straight to the PC GPU instead of through an emulated Xbox 360 one. That is where the remaining performance and most of the visual bugs are. It already draws frames in development builds, but it is not in releases yet and there is no date. Until it lands, bug fixes keep shipping on the current renderer.
- Fixing the crashes that keep coming back. A handful of them are
reproducible and hit a lot of people, so they matter more than anything new.
- Real Toy Pad auto-detect. Plug a real portal in and the game finds it
and switches over by itself, without changing settings by hand.
- Settings inside the game. The game's own options menu gets the port's
settings (graphics, frame rate, Toy Pad, updates), so
F4is no longer the only way in. - Switching language while playing, without a restart.
- A launcher before the first start, like the PC ports of Sony games:
pick resolution, graphics quality, controller and language, check the game files, then play.
- UI fixes, and layouts for other gamepads. Right now the button prompts
assume an Xbox pad. PlayStation, Switch and generic controllers should show their own.
- Updating the Discord Rich Presence so it shows more than a static line.
knowledge, and that is not enough for what is left. If you know graphics work, profiling, or Xbox 360 internals, and you actually care about this game running well, the optimisation work is wide open and I would genuinely welcome the help. Come say hello in the Discord or open an issue.
What "recompiled" means here
There is no emulator running underneath, and that is the point.
The Xbox 360 executable is PowerPC code. A tool translates it to C++ once, ahead of time, and a normal compiler turns that into a native x86-64 Windows program. Your CPU runs real x86 instructions. Nothing is interpreted at runtime.
What could not simply be translated is everything the game asked the console for:
| Part | How it works here |
|---|---|
| Game code (CPU) | Statically recompiled to native x86-64. No emulation. |
| Graphics | The Xbox 360 GPU command stream is translated at runtime to Direct3D 12. Inherited from emulator work, and where most visual bugs still are. |
| Kernel, saves, achievements, DLC | Reimplemented as host functions. Saves are real files. |
| Audio, input, windowing | Native. Any XInput controller, plus keyboard and mouse. |
| Toy Pad | A companion app over localhost, or a real portal over USB. |
The runtime providing all of that is the ReXGlue SDK, which derives from xenia. So: the CPU side is a port, the graphics side still stands on emulator research. Saying that plainly is more useful than overselling it.
The SDK needed changes to run this game, and they are not in this repository. They are in a fork — NeverCookFirst/rexglue-sdk, branch toypad-ui — along with the Toy Pad work, the input handling and several crash fixes. Every release is built from that branch, so that is the SDK to use if you want to reproduce one.
Because there is no interpreter tax, it can run at 60 FPS and use modern upscaling (FSR 1 and CAS) and higher internal resolutions.
Tested on, and size
Everything was developed and tested on one machine: Ryzen 7 5700X3D, RTX 4060, 32 GB RAM, Windows 11, 1080p. A mid range desktop, not a high end one.
That is the only machine this has been properly tested on, so I cannot promise stable performance on any device, including that one. This is a public beta.
As for now, game is playable on Steam Deck through Proton, native port is not coming soon.
2009, and newer) and a Direct3D 12 GPU at feature level 11_0.
**Why the CPU floor changed in 0.1.30**
Up to 0.1.29 the game executable was built with -march=x86-64-v3 (AVX2, BMI2, FMA), so on any CPU older than Haswell / Zen 1 it closed at startup without an error. From 0.1.30 everything - the game, the recompiled code and the runtime libraries - is built for x86-64-v2, which only needs SSE4.2 and POPCNT. The game is limited by the GPU far more than the CPU, so this was not worth locking people out over.
To build for a newer baseline yourself, pass -DLEGODIMENSIONS_X86_BASELINE=x86-64-v3 (and the same to the SDK as -DREXGLUE_X86_BASELINE) when configuring; see rexlego/CMakeLists.txt.
hardware should manage, the game is probably running on your integrated graphics. With the GPU left on auto-select, the driver hands it the integrated chip instead of your dedicated card. Fix it in Nvidia Control Panel -> Manage 3D settings -> Program Settings: add legodimensions.exe and set Preferred graphics processor to High-performance NVIDIA processor. On AMD the same setting is AMD Software
Thanks to the players who worked this one out and reported it!
| Installed | Size |
|---|---|
| Base game plus Title Update 23 | about 9 GB |
| All 30 DLC packages | about 15 GB more |
| Everything | about 24 GB |
Reporting a bug
Open an issue. The template asks for the few things that actually help: game.log, your frame rate target, and your GPU. Since 0.1.17 a crash writes which function it died in and who called it into the log, so the log alone is usually enough.
Thanks
- Unleashed Recompiled, first
and above all. This project exists because of how much I loved what they did. Seeing a console game turned into a real native PC build is what made me ask whether LEGO Dimensions could be next.
- ReXGlue, right after them. It is
the toolkit that does the actual recompiling and provides the runtime this game sits on. Without it there would have been nothing to try in the first place.
- The LEGO Dimensions Discord, for
years of accumulated knowledge about this game and for encouraging every one of these experiments instead of dismissing them.
- harrysof, for the
LEGO Toypad app and the Toy Pad protocol work everything portal related here builds on.
- xenia, whose research into
the Xbox 360 GPU makes the graphics side possible at all.
- connorh315, for
BrickVault and for answering a pile of format questions in detail. The DFLT decompressor that lets our tools read the game's compressed archives is his work, used with his permission, and his notes on the PS4 build settled in one afternoon a question we had been circling for weeks.
- Everyone who tested a broken build or said it was a good idea before it
obviously was one.
Related repositories
| Repository | What it is |
|---|---|
rexglue-sdk (branch toypad-ui) | The runtime fork the releases are built from |
| DimensionsModLoader | Mod manager that injects files into the game's DAT archives |
| DimensionsSaveConverter | Converts saves between console versions |
| Xenia-Seamless-Toypad-Build | xenia fork with a built in emulated Toy Pad |
| RPCS3-Seamless-Toypad-Build | The same idea for the PS3 version |
| shadPS4-Seamless-Toypad-Bridge | Toy Pad bridge for the PS4 version |
Antivirus
The installer is one big unsigned executable that unpacks a payload into your game folder, which is exactly the shape heuristic scanners and SmartScreen do not like. It comes back clean: VirusTotal scan.
Windows will still put up "Windows protected your PC" the first time you run it. That is normal for anything unsigned. Click More info, then Run anyway.
Licence and the legal bit
The code here is MIT licensed, see LICENSE. That covers what I wrote. It does not cover LEGO Dimensions or any of its data. Bring your own game.
Not affiliated with or endorsed by LEGO, TT Games or Warner Bros.
There are no donations. Nothing here is sold, and nobody should be asking you for money for it.
Built by NeverCookFirst, logo by c0mpadre.
From the project's repository, fetched . Images load from GitHub.
Releases
Feed-
Release notes
What's new in 0.1.32
- Vulkan works again. Choosing F4 → Graphics → Graphics API → Vulkan (unstable) made the game fail to start with "Failed to load GPU plugin 'xenos'". The graphics plugin was missing its Vulkan part; it's back.
- A bad Graphics API value no longer blocks startup. If the config holds a value the game doesn't know, it now falls back to the default instead of refusing to start.
Found any problem? Please report it in Issues right away and attach your
game.log. -
Release notes
What's new in 0.1.31
Hotfix: 0.1.30 didn't start for some players and showed "amd_fidelityfx_dx12.dll was not found". That file is now included. Everything from 0.1.30 is in here too (level-end crash fix, smoother fullscreen, older CPUs, FSR 1/CAS back).
Found any problem? Please report it in Issues right away and attach your
game.log. -
Release notes
What's new in 0.1.30
- No more crash right after finishing a level. Finishing some levels (for example Prime Time or Back to the Future!) crashed the game the moment the achievement unlocked. That's fixed.
- Fullscreen is much smoother. Fullscreen could run at half speed for the whole session, especially on portal/vortex loading screens, until you pressed Alt+Enter twice. The game now paces itself properly from the first frame, and it no longer stalls waiting on the monitor.
- Runs on older CPUs. Before, the game needed an AVX2 CPU (Intel Haswell / AMD Zen or newer) and silently closed on anything older. Now any 64-bit CPU from about 2009 onward works. Still needs to be tested out!
- AMD FSR 1 and CAS are back in F4 → Graphics → Upscaling filter.
- Crash dumps save properly. If the game crashes, a
crash-*.dmpappears next to the exe. Zip it and attach it with yourgame.log. - Updating is easier. Click Yes on the "Update available" popup and the game closes by itself, so the updater can install right away.
Update from inside the game (F4 → Updates), or run
rexupdate.exe.Found any problem? Please report it in Issues right away and attach your
game.log. -
Release notes
What's new in 0.1.29
- Crash dumps actually work now. Every
crash-*.dmpso far was 0 KB, so it had nothing in it. Dumps are smaller now and have real data. If the game crashes, zip the.dmpfrom the game folder and attach it with yourgame.log. - Freezes leave a dump too. When the game hangs (the music keeps playing but the picture stops), it writes
hang-*.dmpnext to the exe by itself. Please attach it. The log now also shows both threads in the lock, not just one. - New console command
dump. If the game is acting strange and doesn't write anything, open the console (`key), typedump, press Enter and attach thedump-*.dmpit writes.
Update from inside the game (F4 → Updates), or run
rexupdate.exe.Found any problem? Please report it in Issues right away and attach your
game.log. - Crash dumps actually work now. Every
-
Release notes
- The installer now checks that your game dump is complete. A dump whose copy stopped part way still starts, but shows a black world. The installer now lists any disc file that is missing or too short and tells you to dump again.
- The installer and updater keep a log. If something goes wrong, the error message tells you where
setup.log/updater.logis. Please attach it to your report. A finished install also gets a copy next to the game. - Mods you deleted are really gone. The config could keep mods whose folders no longer exist, and their changes stayed baked into the game files, which crashed some levels. Every launch now checks the list against the mods folder and rebuilds the game files from the mods that are really there.
- The game starts in a window again. Installs from before 0.1.21 kept fullscreen on, on the main monitor. This update switches it off once. Alt+Enter or F4 → Fullscreen turns it back on, and F4 → Monitor picks the screen.
- Toy Pad app path fixed. A path pasted with quotes (Explorer's "Copy as path") now works, a folder works as well as the exe, and a wrong path falls back to
tools\LegoToypad. F4 now shows the path the game actually uses.
Update from inside the game (F4 → Updates), or run
rexupdate.exe.Found any problem? Please report it in Issues right away and attach your
game.log. -
Release notes
- Fixed broken geometry in the Simpsons world (and elsewhere). The background GPU copy added in 0.1.26 could hand the game old data, which tore the level geometry into long spikes, for example when looking at Springfield. It is switched off for everyone. Rendering is back to the 0.1.25 behaviour, so stutters are back at their 0.1.25 level. We will bring the faster copy back once it is fixed properly.
- The AMD black-world fix and the other changes from 0.1.26 stay.
Update from inside the game (F4 → Updates), or run
rexupdate.exe.Found any problem? Please report it in Issues right away and attach your
game.log. -
Release notes
- Far fewer stutters, on every graphics card. Some of the game's effects are computed on the GPU and then copied back for the game to read. Until now the game stopped and waited for the GPU after every one of them, often about 60 times a frame. Now the copy happens in the background, and the game only waits if it reads the data before the GPU has finished it. In our tests the number of slow frames dropped by about ten times, and cutscenes and level loads should be much smoother. If you see new glitches, you can switch back to the old behaviour by adding
readback_memexport_on_demand = falsetolegodimensions.toml. Please tell us if you had to. - AMD: possible fix for a black world. Some textures were sampled with filtering their format doesn't support. NVIDIA tolerates this, but AMD cards can return black. If the world was black for you on an AMD card while cutscenes rendered fine, please try this version and let us know.
- GPU registers now start with the same values as on a real Xbox 360.
- Russian translation mod: text fixes.
Update from inside the game (F4 → Updates), or run
rexupdate.exe.Found any problem? Please report it in Issues right away and attach your
game.log. - Far fewer stutters, on every graphics card. Some of the game's effects are computed on the GPU and then copied back for the game to read. Until now the game stopped and waited for the GPU after every one of them, often about 60 times a frame. Now the copy happens in the background, and the game only waits if it reads the data before the GPU has finished it. In our tests the number of slow frames dropped by about ten times, and cutscenes and level loads should be much smoother. If you see new glitches, you can switch back to the old behaviour by adding
-
Release notes
- Sharp text: anti-aliasing is now off by default. FXAA runs over the whole finished frame, menus and captions included, and the strong variant we set in 0.1.21 made text noticeably blurry. Updating keeps your own choice; if you never touched it, it switches to Off. You can still turn it back on in F4 → Graphics → Anti-aliasing.
- Country setting in F4 → Language. Some translations share one language and are told apart by the country: pick Spain or Mexico (Latin American Spanish) for Spanish, France or Canada (Canadian French) for French. Takes effect on the next launch.
- Russian is gone from the F4 language list: the game never shipped it, so choosing it did nothing. Russian is the Lang_Russian mod (F8 → Mods).
Update from inside the game (F4 → Updates), or run
DimensionsRecompiled-Setup.exe.Found any problem? Please report it in Issues right away and attach your
game.log. -
Release notes
- Language page in F4. Pick the game language (English, German, French, Spanish, Italian, Portuguese, Polish, Swedish, Norwegian, Dutch, Japanese, Korean). It sets the text and voices and takes effect on the next launch. A language the game was not shipped with falls back to English.
- Mouse cursor hidden during play. It is shown only while a menu is open: F-key overlays, Quit Game, Credits and host prompts.
- Fix for exploding geometry on late game lvl's (0.1.20-0.1.23). Batched memexport readback could copy stale GPU data over memory the game had already rewritten. Batching is now off (forced in your config on update), and the batch path now keeps the game's own writes.
- The upscaler list shows only AMD FSR 1. FSR 2 and FSR 3 were options that did nothing.
Update from inside the game (F4 → Updates), or run
rexupdate.exe.Found any problem? Please report it in Issues right away and attach your
game.log. -
Release notes
- Every cutscene can be skipped, even the first ones from a new save. This works as if the N0CUT5 code were always entered. It is on by default; turn it off in F4 -> Mods and fixes -> Skippable cutscenes.
- Fern and the Mystery Dimension portal fix moved to F4. They are now switches under F4 -> Mods and fixes instead of locked entries in the F8 mod list. Fern can be turned off; that takes effect on the next launch. F8 now lists only regular mods.
Found any problem? Please report it in Issues right away and attach your
game.log. -
Release notes
Hotfix.
- No more crash after closing Credits or Quit Game. Opening either one froze the game underneath while the menu read the controller, and on some machines the game could not recover once it was unfrozen. The game now keeps running while they are open; it just does not receive your button presses.
- All Worlds now covers every character. The mod only looked at regular minifigures, so characters stored elsewhere, such as Jake and the Powerpuff Girls, could not enter every world. It now covers 134 characters instead of 101. If you have All Worlds enabled, the update re-applies it for you.
Found any problem? Please report it in Issues right away and attach your
game.log. -
Release notes
- Credits and Quit Game in the main menu. The two empty circles on the left of the main menu now hold Credits and Quit Game. Quit Game asks before it closes the game. Turn both off in F4 -> Interface.
- The shader cache now keeps what it compiles. Since the first session, the pipeline cache never grew on any machine, so every play-through recompiled the same pipelines and stuttered in the same places. It now grows as you play and loads back on the next launch. Thanks to SpiderNic96 for the Steam Deck report that led to this.
- "Compiling shaders, please wait... N / M" appears at the bottom of the screen while new shaders compile, so a short hitch is not mistaken for a hang. It can be turned off in F4 -> Interface.
- Less CPU use. The GPU thread no longer keeps a whole CPU core busy while it waits. This matters most on 4-core machines and handhelds.
- Graphics API can be switched in F4. Vulkan is marked unstable and needs a restart.
- Updated Russian translation.
- New default settings (kept if you already changed them yourself): windowed mode (it runs faster than exclusive fullscreen), FXAA extreme, FSR quality mode, no depth of field, a bigger texture cache, and the LEGO Toypad app starts with the game when it was installed.
- Freeze reports now also say what the emulated GPU was doing at the time, and the bug report form accepts a crash dump.
Found any problem? Please report it in Issues right away and attach your
game.log. -
Release notes
Hotfix.
- Far fewer stutters in busy scenes. Effects that write straight to memory (memexport, used by the game's lighting) made the emulator stop and wait for the GPU after every such draw - hundreds to thousands of times per frame. These are now batched and synced only when the game can actually look at the results.
- Per minute of play: big hitches (frames over 100 ms) 12.7 → 2.6, stutters (over 50 ms) 50 → 4.4.
- New setting
slow_frame_log_ms(off by default): logs a breakdown of every frame slower than the given milliseconds. Useful for performance reports.
Found any problem? Please report it in Issues right away and attach your
game.log. - Far fewer stutters in busy scenes. Effects that write straight to memory (memexport, used by the game's lighting) made the emulator stop and wait for the GPU after every such draw - hundreds to thousands of times per frame. These are now batched and synced only when the game can actually look at the results.
-
Release notes
Hotfix.
- Saving works with more than one controller connected. If a second (often virtual — Steam Input, DS4Windows) controller was plugged in, the game could say "You do not have an active gamer profile" and refuse to save. Every controller slot now has the profile.
- F4 → "Reset all to defaults" no longer breaks the game. It used to wipe the compatibility settings the installer writes, and the game crashed on the next start. Reset now restores the settings the installer set up and keeps all paths.
- If your game already crashes after a reset: run this installer over the same folder (saves and DLC are kept).
-
Release notes
Fern is back
Finn can swap into Fern again, with his own model, animations and items. The Adventure Time DLC shipped without Fern's character cache, so the swap used to hang forever in the portal vortex. The missing cache now ships with the game (
PATCH3) and is always on - you will see it greyed out in the F8 mod menu.Modding tools (optional)
The installer has a new Modding tools checkbox, off by default. It installs the latest releases of connorh315's tools into
tools\ModdingTools: BrickVault, Flux, AbilityDefEditor, SoundEventEditor, Hologram, Diorama, CBXDecoder, DATPacker, DATManager. Bundled with his permission - huge thanks to him.The modding guide was rewritten: docs/how-to-mod.md - building your own
PATCH4+archives (no size limits), tracing what the game looks for, and the Fern recipe as a worked example.Fixes
- F4 Reset all to defaults no longer wipes the game/data paths from the config;
- The F4 window opens a little smaller;
- F8 built-in entries no longer show config key names.
-
Release notes
Hotfix pre-release on top of 0.1.16. Nothing here changes the game data; it is all runtime and UI.
Crash logs that name the culprit
A crash used to leave a host address that meant nothing under ASLR.
game.lognow records the module and offset, the guest thread it died on, and the chain of game functions that led there - so a log alone is usually enough to find the bug. If you have been hitting crashes or the "stuck lock" freeze in the LEGO Movie world, please update and send the new log.Settings you can read
F4has been rebuilt for players: Display, Performance, Graphics, Audio, Controls, Keyboard bindings, Shortcuts, Toy Pad, Mods and fixes, Online. Plain names, a tooltip on every line, drop-downs instead of magic numbers, and a wider window so nothing overlaps. Everything technical is still there under Advanced by its raw name.Depth of field off
Performance -> Depth of field blur. The game never had a switch for it, so the recomp drops the render pass itself. Sharper picture, slightly less GPU work. (For the curious:
ps_frameandps_skipin the console let you find and drop any other full-screen pass the same way.)Russian translation
The installer now offers the translation mod by koctr113 in place of the two older language mods. If you had the old ones enabled, pick the new one in the mod menu (F8).
Full install:
DimensionsRecompiled-Setup.exe. Existing installs getupdate-0.1.17.rxpthrough the in-game updater. -
Release notes
Xbox One Toy Pad Support
The Xbox One Toy Pad (
0E6F:0141, "LEGO(R) DIMENSIONS(TM)") now works over USB, alongside the Wii U / PS3 / PS4 and Xbox 360 pads.It is a different one from the other pads: it speaks Xbox One GIP, so every LEGO frame travels inside a GIP packet and the pad only opens its gateway after a GIP handshake. The game now does all of that for you - swap the driver once with Zadig (
libusb-win32, check the USB ID0E6F 0141- Windows lists it under the same name as the Xbox 360 pad), unticktoypad_emulationunder F4 > Input, restart.If the pad stays silent after a driver swap or a previous session, unplug it and plug it back in: it goes mute when poked the wrong way and only a power cycle wakes it.
Protocol work and testing on real hardware by my friend Amirust. Thank you, brother!
Also in this build
modcli: adding a new file to a.CC40TADarchive (DLC packages) now keeps the archive valid - the header size field is updated and the entry is inserted in CRC order, which is what the game's lookup needs. Previous builds could make a DLC report as "not installed" after such a mod.
-
Release notes
Vertical sync is locked off
The
vsyncsetting is now greyed out inF4, and an update turns it off for anyone who had turned it on.After receiving many reports that this feature is not working, I tried to look into it. For now, it seems that Vsync is reducing the FPS so much and so suddenly. Unfortunately, I don't have much time to investigate it further at the moment. Sorry!
Add DLC without reinstalling the whole game
Bought a pack after installing?
Run the installer again and pick "Add DLC to an install I already have" on the first screen. It asks for two things - the folder with your packages and the folder you installed into - and writes only the DLC. Your save, settings, mods and the game files are left exactly as they are.Settings: reset to defaults
F4has a Reset all to defaults button next to Save, behind a confirmation.
It also writes the config straight away, because a setting that only takes effect on the next start is exactly the kind that leaves a game unstartable.Building it yourself got fixed
Someone built the whole project from a clean clone on a CPU without AVX2 and wrote up every place the guide was wrong. All of it is fixed:
- The SDK and the two sibling repositories are git submodules, so one
git clone --recursivereplaces the steps that sent you looking for them. LEGODIMENSIONS_X86_BASELINEandREXGLUE_X86_BASELINEmake the instructionset a supported setting rather than a source edit, for older CPUs.
- Configuring the SDK without
--presetno longer fails to compile. README-dev.mdnow says to putDefault.xexpnext toDefault.xexbeforegenerating. The loader applies the update itself from there -
xextoolwas
never needed, the guide just never said where the file goes.- The release script finds the files it needs instead of demanding they be
copied into place by hand, and says what to do about anything missing.
Thanks to Kimm from Discord for that report - it was detailed enough to act on line by line!
- The SDK and the two sibling repositories are git submodules, so one
-
Release notes
Pre-release. Tested on one machine, so treat it as a test build.
Xbox 360 Toy Pad Support
Every retail Toy Pad is now supported except Xbox One - Wii U, PlayStation 3, PlayStation 4 and, new here, Xbox 360.
The 360 pad was never going to be found before: it is not the same USB device as the others. PDP shipped the pad under two identities, and we only knew one of them.
Shows up as USB ID Pad LEGO READER V2.100E6F 0241Wii U / PS3 / PS4 LEGO(R) DIMENSIONS(TM)24C6 FA01Xbox 360 It also needed the command frames sent in a different shape — the 360 pad speaks the wrapped Xbox frame that a PC pad does not, and we were unwrapping it for everybody.
Installing the driver - do this first
If Device Manager shows your 360 pad as "Driver is unavailable", nothing is broken. Windows ships no driver for that pad at all. You install one yourself, once, and it takes about a minute:
- Download Zadig and run it.
- Plug the Toy Pad in.
- In Zadig, tick Options → List All Devices.
- Pick your pad in the drop-down and check the USB ID against the table above before you touch anything — pointing Zadig at the wrong device will take that device away from Windows.
- Choose
libusb-win32as the driver, then press Install Driver.
On a pad Windows already had a driver for, that button reads Replace Driver instead. Same step.
- In game press
F4, open Input, unticktoypad_emulation, and restart the game.
The pad lights up a few seconds after the game starts. Put a figure on it and it appears in game, exactly like on a console.
To give the pad back to Windows later — for a real console, or other software — uninstall that driver in Device Manager.
If the pad stays dark
There is a new setting,
toypad_passthrough_frame(F4→ Input). Leave it onauto; it picks the right frame shape from the pad it found. If some pad revision disagrees,keepandstripforce it either way, andgame.logsays which one is in use.Updating
Either file works.
update-0.1.14.rxpis the small one and applies to any install from 0.1.0 onward;DimensionsRecompiled-Setup.exeis the full installer and repairs an install without touching saves.The README that came with your install is written at install time, so an in-place update leaves the old one. Everything new is above.
-
Release notes
Pre-release. Tested on one machine, so treat it as a test build.
A cheat menu, on
DelA memory scanner and value freezer built into the game — the job people use Cheat Engine for, without needing Cheat Engine.
Pick a value type, type the number you can see on screen, First scan, then change it in game and Next scan = until a few addresses are left. Click one and Write once or Freeze it. If the number is not shown anywhere, start from Unknown value and narrow down with Increased / Decreased / Changed / Unchanged.
Save as cheat stores an address under a name beside the game and re-applies it on every launch, only while its tick box is on.
Scans run on their own thread, so the game keeps moving while they work.
If you would rather use Cheat Engine itself, it works, but two settings are not optional: turn on
MEM_MAPPEDscanning, and scan as big-endian. docs/cheat-engine.md explains both, tools/cheatengine has ready-made big-endian types, and the newmembaseconsole command prints where guest memory landed for that run.BACK is no longer on Backspace
It sits on
=now. Backspace is where people reach for a delete key, and it kept sending BACK to the game by accident. If you rebound it yourself, your binding is kept.Smaller things
- The updater closes itself once an update is applied, after a five-second countdown that any click cancels. This one takes effect from the next update: the pack you are about to install is applied by the updater you already have.
- Closing the game gives it three seconds to shut down cleanly instead of eight before the process is taken out.
Updating
Either file works.
update-0.1.13.rxpis the small one and applies to any install from 0.1.0 onward;DimensionsRecompiled-Setup.exeis the full installer and repairs an install without touching saves.The README that came with your install is written at install time, so an in-place update leaves the old one. Everything new is above.
-
Release notes
Hotfix. One thing is fixed, and it only concerns people who make or install mods. If you are on 0.1.11 and everything works, there is nothing here for you.
A mod can reach the disc archives now
Most of what is worth modding lives in the update archive,
PATCH.DAT. Some things do not: the on-screen button prompts, for one, sit inGAME.DATunderGUI/FONT. A mod that named one of those never had a chance - the tool that injects the files was told where the update folder was and where the DLC packages were, and nothing else, so it could not findGAME.DAT, gave up on the whole mod, and left F4 -> Mods sayingmodcli failed, see the log. Mods touchingPATCHworked, which made it look like the mod was at fault.The game folder is searched too now.
datfiles/GAME/...findsGAME.DAT, and so doGAME0..GAME4andINSTALL0_*. Existing mods need no changes.Reach for the disc copy only for something the update does not carry. If a file exists in both, the update's copy wins, so modding the disc copy of it changes nothing,
PATCHis still where almost everything belongs.DLC mods survive an install and an update
The installer applies mods at the end of a Russian install, and the updater re-applies whatever you had enabled after it patches. Both drive the same tool the F8 menu does, and neither told it where the DLC packages were. So a mod targeting a DLC archive, Super Sonic Infinite lives in
DLC16, failed the install outright, and was quietly dropped on every update. Both pass the right folders now.Also
docs/how-to-mod.mdnow says which archive to target and why the update usually wins.
Works for me
Did it work on your PC? A quick report tells other players which versions are safe to try.
Discussion
No posts yet. Ask a question, share your setup or post a clip.
Sign in to post