More actions
UndertaleModTool | |
---|---|
General | |
Author | krzys-h |
Type | Hack Utilities |
Version | 0.5.1.0 |
License | GPL-3.0 |
Last Updated | 2023/05/06 |
Links | |
Bleeding Edge - Stable Download | |
Website | |
Source | |
The most complete tool for modding, decompiling and unpacking Undertale (and other Game Maker: Studio games).
Features
- Can read every single byte from the data file for lastest version of Undertale, Deltarune, and most other GameMaker: Studio games (GM:S 1.4 and GMS2 bytecode versions 13 to 17 are currently supported) for every platform and then recreate a byte-for-byte exact copy from the decoded data.
- Properly handles all of the pointers in the file so that if you add/remove stuff, make things longer/shorter, move them around etc. the file format won't break.
- An editor which lets you change (almost) every single value, including unknown ones.
- Includes a simple room/level editor.
- Allows for code disassembly and editing. This means you can add any custom code to the game, either using the built-in GML compiler or GML assembly.
- Experimental high-level decompiler. The output is accurate (except for the latest GameMaker versions), but it could use some more cleaning up of the high-level structures.
- Support for running scripts that automatically modify your data file (or perform other nefarious tasks) - this is the way to distribute mods, but creating them is a manual job for now. It also serves as a replacement for sharing hex editor offsets - if you make it into a file-format-aware script instead, there is much smaller change of it breaking after an update.
- All core IO functionality extracted into a library for use in external tools.
- Can generate an .yydebug file for the GM:S debugger so that you can edit variables live (see here).
- Automatic file associations for all GameMaker related files. This can be disabled by having a dna.txt file next to the executable.
User guide
UndertaleModTool has different builds per release. The differences are as follows:
.NET bundled
- Bundles the required .NET runtime version needed to run the tool alongside it. All stable releases are .NET bundled, so you don't have to worry about installing the necessary runtime.Single file
- The tool is only one executable, with all dependencies embedded within it. This does make your folders cleaner, however it also causes some unexpected stability issues.Non-single File
- All dependencies are not embedded within the executable, but are now located right next to it. Choose this if you don't care about finding the right executable in-between of ~300 dll's, or if the stability issues from the Single file build affect you.
Some test scripts are included:
- Universal:
- Search - Basic text search within decompiled code entries.
- Scripts to batch import and export various types of asset files.
- Undertale only:
- EnableDebug - Activates Undertale's debug mode by enabling the global variable 'debug' at game start.
- DebugToggler - Allows toggling the debug mode on and off with the F1 key.
- BorderEnabler - Facilitates the importation of PlayStation exclusive borders into the PC version, while ensuring proper display by patching version checks.
- Testing - Displays random text on the main menu, this was the first script ever created.
- TTFFonts - Makes the game load fonts in TTF format from current directory instead of using the spritesheet fonts. You'll need to provide the font files yourself.
- RoomOfDetermination - Adds a new room to Undertale 1.08. Although incomplete, it serves as a comprehensive example of adding content.
- Deltarune only:
- DeltaHATE - HATE-inspired script for corrupting Deltarune
- DeltaMILK - Replaces every non-background sprite with the K.Round healing milk. Don't ask why.
- TheWholeWorldRevolving - Creates a spinning effect.
- Undertale and Deltarune only:
- GoToRoom - Replaces the F3 button's debug mode functionality with a dialog allowing you to jump to any room by its ID.
- ShowRoomName - Displays the current room name and ID on the screen during debug mode.
Additionally, there are some community-made scripts. For more information, consult the SCRIPTS.md file.
Documentation is available on UndertaleModTool wiki.
Screenshots
Changelog
0.5.1.0
Additions:
- The dark mode setting (@VladiStep in #1141, #1221, *#1273, #1336, #1342).
- Tabs content state saving and restoring (tab sessions) (@VladiStep in #1152).
- More ways of opening an object in a new tab (@VladiStep in #1232).
- The "Find all references" feature and the new "Find" menu: (@VladiStep in #1246)[0].
- Allows you to search for references of any common type asset by right-clicking:
- A support for the tile layer exported data (.csv) from "Tiled" (@VladiStep in #1280)[0].
- A proper support for code with multiple functions (@Jacky720, @VladiStep in #1191).
- Proper code editors for shaders (@VladiStep in #1294).
- A support for sequence text tracks (GM 2022.2 - e.g. "Dono’s Tale") (@VladiStep in #1197).
- New scripts - "SpriteOriginCopy.csx", "SpriteOriginCopy2_3.csx" (@fixdude in #1144).
- A support for GM 2023.1 games (e.g. "HoloCure", "Alien XENOCIDE") (@VladiStep in #1206).
- A support for some GMS 2.0 games (@VladiStep in #1205, #1329).
- A support for GM 2023.2 games (and particle systems) - e.g "The Slormancer", "Nova Drift" (@VladiStep in #1238, #1353, #1361).
- An indication for the sub-functions cache building on first decompilation and 3 minutes timeout for it (@VladiStep in #1241).
- Proper sequence model names for debugging and the "Find all reference" results (@VladiStep in #1254).
- A support for games with room path layers (@VladiStep in #1256, #1268).
- A possibility to delete room objects through context menu (@zivmaor, @VladiStep in #1301).
- The "Run other script..." option on missing "Scripts" folder (@VladiStep in #1364).
- An option to export one sprite with padding (@VladiStep in #1367).
Fixes:
- A memory leak of UTMT scripts and the command box (@VladiStep in #1220).
- A bug with textures not being displayed in GM 2022.3+ games; improvements of an "ImportGMS2FontData.csx" script (@Dobby233Liu, @Miepee, @VladiStep in #1048).
- A bug with
PromptChooseDirectory()
infinite loop in CLI (@VladiStep in #1183). - An "ExportAllRoomsToPng.csx" script error (@VladiStep in #1164).
- A crash in CLI version on events replacing (@TheAwoo in #1174).
- A "Texture failed to loaded!" error in the embedded texture editor (@VladiStep in #1199).
- An extension file and function tab titles display (@VladiStep in #1200).
- A room background definition removing (@VladiStep in #1202).
- A crash in "Deltarune 1&2" after a "Ch2 Debug.csx" script (@Jacky720 in #1188).
- The "Gdip" crash in CLI version on loading GM 2022+ games (@VladiStep in #1302).
- An annoying XAML binding error in "Visual Studio" log (@VladiStep in #1228).
Environment.ProcessPath
warnings in "Visual Studio" (@VladiStep in #1234, #1258).- A bug in the code editor that led to freezes on some errors (@VladiStep in #1243).
- The "FindUnusedStrings.csx" script (@VladiStep in #1246)[1].
- A rare crash on drag&dropping within the asset list and the tab panel (@VladiStep in #1264, #1289).
- A crash on the tileset image click (@VladiStep in #1274).
- Incorrect GMS 2 rotated/flipped tiles display (@VladiStep in #1280)[1].
- A bug that broke the "Disassembly" code editor tab on some localizations, e.g. Turkish (@VladiStep in #1298).
- A random
SaveCodeChanges()
crash on data saving (@VladiStep in #1304). - A rare crash on opening the "Disassembly" code tab (@VladiStep in #1322).
- A crash on invalid entered color value (@VladiStep in #1357).
Changes:
- The version flags cleanup and proper GM(S) version in the title (@Jacky720, @Miepee, @VladiStep in #1047; @VladiStep in #1213).
- Game data loading is noticeably faster and uses less RAM (@VladiStep in #1161).
- Made the embedded texture image zoomable and more interactable (@VladiStep in #1293)[1].
- A lot of the font editor improvements: (@VladiStep in #1328, #1331, #1332, #1346).
- Added the red marker for the selected glyph, made the font texture clickable.
- Made the glyphs table show and accept actual characters.
- ... and more! See the PR description.
- Disabled room layers are highlighted with gray color (@VladiStep in #1201).
- The "Timestamp" value (in "General info") is in human-readable format (@VladiStep in #1226).
- An optimization of the "data.win" file context menu options - e.g. "Run game normally" (@VladiStep in #1245).
- An optimization of "ExportAllCode2_3.csx" script (@VladiStep in #1239).
- Room object names improvements (@VladiStep in #1246)[2].
- Made the room instance layer objects resolving safer - adds a support for a "Pizza Tower D3 v3.1" mod and "Heroine Conquest" (@VladiStep in #1266, #1299).
- Made the GMS debugger related things more distinguishable from the debug mode in some games; the GMS debugger file option is hidden by default (@VladiStep in #1330).
- Improved the object reference fields clarity (@VladiStep in #1363).
External links
- GitHub - https://github.com/krzys-h/UndertaleModTool
- GameBanana - https://gamebanana.com/tools/6647