Dust: An Elysian Tail

Dust: An Elysian Tail

View Stats:
cyanic 26 Jun, 2014 @ 1:06pm
Patching Platform: Got bugs, or mod requests? Try me!
You may remember the Dust: AET Debug Helper I so often tell people to use in the support thread. Now I've gone a step further, and expanded it into a patching platform. Dust: AET Patching Platform is a new system that allows me to fix bugs and otherwise modify the game code. That means even if Noogy doesn't push out a new version of Dust: AET, you can still get some of the bugs fixed.

New June 2016
The bootstrapper for the platform has been separated out in order to acommodate the DRM-free version of the game. You will need to redownload the platform and patches if you had the platform prior to this date and you want to download new patches.

The Foundation
Main Module (download[www.dropbox.com])
This is what loads the patches. It contains the Debug Helper in addition to patch loading code.

Steam Bootstrapper (download[www.dropbox.com])
This is the code the Steam version of the game runs to bootstrap the patching platform. You don't need this if you are using the DRM-free version of the game.

DRM-free Bootstrapper(download[www.dropbox.com])
This is the code the DRM-free version of the game (Humble Bundle, maybe GOG) runs to bootstrap the patching platform. You don't need this if you are using the Steam version of the game.

After downloading the main module and a bootstrapper, move them to the game's folder. Create another folder named "patches" in the game folder, and place the following patches in it.

Important: Make sure to unblock these files after you download them so they can be loaded. Right click on the downloaded file, select Properties, click Unblock, then OK.

Open-Source Patches
Deprofiler (download[www.dropbox.com])
For some of you who have certain Intel graphics adapters, the game may tell you you can't run it even though you actually can. Since the original SteamWrapped.dll fixed that, here's the same thing for the Patching Platform.

Input Crash Patch (download[www.dropbox.com])
This fixes the infamous bug where the game crashes on the world map or shop screen. Enough said.

Troubleshooter (download[www.dropbox.com])
This patch will tell you why the game's crashing in certain cases and how to fix it.

Splash Skipper (download[www.dropbox.com])
This patch skips the ESRB screen and intro video. Watch it once, never need to watch it again. Who cares about the ESRB rating anyway? The screen will be skipped once the game completes loading (~1 second).

Debug Enabler (download[www.dropbox.com])
This enables the debug menu. Hit Tab on the regular pause menu to see the debug menu.

Disable Air Seek Mod (download[www.dropbox.com])
Prevents Dust from slightly homing into enemy when performing Aerial Dust Storm.

Language Switcher (download[www.dropbox.com])
This patch allows the game language to be changed, regardless of what your current system language is. Install this patch, and then create a file named "lang.txt" in the game directory. Put the language code you want to use (en, de, es, fr, it, ja) and save. The next time you start the game the language will be set to the one you want. Alternatively, delete the file or write "system" in it to use the system default language. Note .NET Framework 4.5 is required for this patch.

Disable Drop Despawn Mod (download[www.dropbox.com])
I'm often too slow to get drops, and it annoys me that they despawn. This mod prevents materials, equipment, and coins from despawning.

Disable 1 HP Save Mod (download[www.dropbox.com])
This patch prevents giving Dust 1 HP to hang on to after receiving fatal damage. I took the easy route and requested the game to knock off the 1 HP if it left it there, so no lucky breaks for you.

Command Line Full Screen Switcher (download[www.dropbox.com])
This patch allows you to specify full screen or windowed mode by setting game launch options in Steam. Use "/window" for windowed mode, or "/fullscreen" for full screen mode. See this for how to set game launch options. Note that the option you set is valid only for the session and is not committed to your game settings unless you choose to save the settings. Don't mind the screen mode changing again when you press any key to start, because the game was doing something stupid and I had to work around it.

Voice Acting Muter (download[www.dropbox.com])
Use if you don't want to hear the voice acting for some reason. Note this patch does not have any internal options, so if you want voice acting again, delete the patch.

Dust Storm Overheat Disabler (download[www.dropbox.com])
This prevents the combo break when you use Dust Storm for too long in non-casual difficulties.

Source code to everything can be found here[github.com].
You can also browse patches in the project by visiting here[www.dropbox.com]. (Handy: download the folder as a Zip file and extract to game directory to update everything.)

Closed-source patches
They're closed source because I had to copy significant amounts of game code.

Fidget is a Gun Mod (forum thread | download[www.dropbox.com])
Eurotrash wanted guns. Now Fidget is a gun. L to shoot, S to toggle on/off.

Fidget Spinner Mod (forum thread | download[www.dropbox.com])
Too much pun.

If you would like to see anything tweaked, contact me. You can even code patches yourself (see source code).
Last edited by cyanic; 1 Aug, 2017 @ 7:18pm
< >
Showing 1-15 of 65 comments
cyanic 26 Jun, 2014 @ 3:08pm 
Hehe, that might be a bit hard. It's probably not impossible, but a lot of the existing game code would have to be modified, and someone has to make gun textures and stuff.

Edit: Maybe I should make Fidget into a gun. That might be easier.
Edit 2: I'm sifting through the code, and while code replacement will be a bit tricky, it should be doable. The question is how to deal with the Fidget update function. Fun fact: Fidget is a Particle.
Last edited by cyanic; 26 Jun, 2014 @ 6:55pm
Sir Aiedail 26 Jun, 2014 @ 3:18pm 
Modify Fidget's thunder ability texture and you got a laser gun ;)
cyanic 27 Jun, 2014 @ 9:13am 
Updates to various things: Fixes in the main Patching Platform, tweaks to the Troubleshooter, and a brand new mod, Fidget is a Gun. Have fun with your Fidget gun.
DumpasaurusRex 27 Jun, 2014 @ 10:23pm 
Im having a bit of input trouble. Dust randomly attacks and so does fidget. i also randomly dash. makes it kinda hard to land jumps sometimes along with a few other things.
cyanic 28 Jun, 2014 @ 5:47am 
Do you have any other input devices connected? Any remote control software running? The game shouldn't randomly do input unless it receives them from the XNA Framework.
Pathitis 28 Jun, 2014 @ 11:37am 
For that extra challenge, can you make a mod that turns off the slight homing effect when using the airiel duststorm? It's too easy to take down flying enamies in in vanilla because of it.
cyanic 28 Jun, 2014 @ 2:19pm 
Wow, I sure wasted a lot of time while making the Disable Air Seek Mod. Tried to always pass false to Character.Seek() (that took 2 hours of figuring out), and Dust wouldn't even do the Aerial Dust Storm. Why the hell is the code for Aerial Dust Storm in that function anyway? The end product took about 5 minutes.
DumpasaurusRex 28 Jun, 2014 @ 2:48pm 
I had tried to plug an xbox controler in and use it but it didnt work so i took it out. having trouble since then
cyanic 28 Jun, 2014 @ 4:25pm 
That doesn't seem like something that needs the Patching Platform to fix. Check your keybindings. Also, if you were using an Xbox 360 controller, you may have problems in other places on your system.

Edit: Try other XNA games too. One from the top of my head is Fez.
Last edited by cyanic; 28 Jun, 2014 @ 4:37pm
DumpasaurusRex 28 Jun, 2014 @ 5:17pm 
i spent the last of my money on this game lol. i checked all my drivers, dont seem to have problems with any other games i play. idk.
cyanic 29 Jun, 2014 @ 8:30am 
I've added a Language Switcher patch. See original post for usage details.
Last edited by cyanic; 29 Jun, 2014 @ 8:36am
cyanic 29 Jun, 2014 @ 5:33pm 
I've added the Disable Drop Despawn Mod. For maximum coin obtainage.
ElfDestruct 4 Jul, 2014 @ 6:11pm 
Could you make one that disables the >1HP save from death on all difficulty levels? I'd like to play on tough without the extra safety net instead of having to jump up to hardcore.
cyanic 4 Jul, 2014 @ 7:50pm 
I've added the Disable 1 HP Save Mod.
John 20 Jul, 2014 @ 5:50am 
I have some issues, some patches work some do not, here is the error code:
Path/Name: patches\DebugEnabler.dll
Exception: System.IO.FileLoadException: Could not load file or assembly 'file:///C:\Program Files (x86)\Steam\steamapps\common\Dust An Elysian Tail\patches\DebugEnabler.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
File name: 'file:///C:\Program Files (x86)\Steam\steamapps\common\Dust An Elysian Tail\patches\DebugEnabler.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at DustAetPatchingPlatform.ModuleLoader.validateAssembly(String path)



Path/Name: patches\Deprofiler.dll
Exception: System.IO.FileLoadException: Could not load file or assembly 'file:///C:\Program Files (x86)\Steam\steamapps\common\Dust An Elysian Tail\patches\Deprofiler.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
File name: 'file:///C:\Program Files (x86)\Steam\steamapps\common\Dust An Elysian Tail\patches\Deprofiler.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at DustAetPatchingPlatform.ModuleLoader.validateAssembly(String path)



Path/Name: patches\DisableDropDespawn.dll
Exception: System.IO.FileLoadException: Could not load file or assembly 'file:///C:\Program Files (x86)\Steam\steamapps\common\Dust An Elysian Tail\patches\DisableDropDespawn.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
File name: 'file:///C:\Program Files (x86)\Steam\steamapps\common\Dust An Elysian Tail\patches\DisableDropDespawn.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at DustAetPatchingPlatform.ModuleLoader.validateAssembly(String path)



Path/Name: patches\PrevStateFix.dll
Exception: System.IO.FileLoadException: Could not load file or assembly 'file:///C:\Program Files (x86)\Steam\steamapps\common\Dust An Elysian Tail\patches\PrevStateFix.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
File name: 'file:///C:\Program Files (x86)\Steam\steamapps\common\Dust An Elysian Tail\patches\PrevStateFix.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at DustAetPatchingPlatform.ModuleLoader.validateAssembly(String path)



Path/Name: patches\SkipIntro.dll
Exception: System.IO.FileLoadException: Could not load file or assembly 'file:///C:\Program Files (x86)\Steam\steamapps\common\Dust An Elysian Tail\patches\SkipIntro.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
File name: 'file:///C:\Program Files (x86)\Steam\steamapps\common\Dust An Elysian Tail\patches\SkipIntro.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at DustAetPatchingPlatform.ModuleLoader.validateAssembly(String path)



Path/Name: patches\Troubleshooter.dll
Exception: System.IO.FileLoadException: Could not load file or assembly 'file:///C:\Program Files (x86)\Steam\steamapps\common\Dust An Elysian Tail\patches\Troubleshooter.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
File name: 'file:///C:\Program Files (x86)\Steam\steamapps\common\Dust An Elysian Tail\patches\Troubleshooter.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at DustAetPatchingPlatform.ModuleLoader.validateAssembly(String path)



< >
Showing 1-15 of 65 comments
Per page: 1530 50