|
|
| (13 intermediate revisions by 2 users not shown) |
| Line 4: |
Line 4: |
| |description=The most complete tool for modding, decompiling and unpacking Undertale (and other Game Maker: Studio games). | | |description=The most complete tool for modding, decompiling and unpacking Undertale (and other Game Maker: Studio games). |
| |author=krzys-h | | |author=krzys-h |
| |lastupdated=2023/05/06 | | |lastupdated=2026/07/13 |
| |type=Hack Utilities | | |type=Hack Utilities |
| |version=0.5.1.0 | | |version=0.9.1.2 |
| |license=GPL-3.0 | | |license=GPL-3.0 |
| |download=[https://github.com/krzys-h/UndertaleModTool/releases/tag/bleeding-edge Bleeding edge] [https://github.com/krzys-h/UndertaleModTool/releases/tag/0.5.1.0 Stable] | | |downloadraw=[https://github.com/krzys-h/UndertaleModTool/releases/tag/bleeding-edge Bleeding Edge] - [https://github.com/UnderminersTeam/UndertaleModTool/releases/tag/0.9.1.2 Stable Download] |
| |website=https://gamebanana.com/tools/6647 | | |website=https://gamebanana.com/tools/6647 |
| |source=https://github.com/krzys-h/UndertaleModTool | | |source=https://github.com/krzys-h/UndertaleModTool |
| |donation= | | |donation= |
| }} | | }} |
| | <!--undertalemodtoolnx.7z--> |
| The most complete tool for modding, decompiling and unpacking Undertale (and other Game Maker: Studio games). | | The most complete tool for modding, decompiling and unpacking Undertale (and other Game Maker: Studio games). |
|
| |
|
| ==Features==
| | UndertaleModTool has a few different versions to choose from. The differences are as follows: |
| *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.
| | * GUI (default) - the tool has a full graphical interface, making data file viewing and manipulation convenient. |
| *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. | | * CLI - the tool is accessible only via a command-line interface, which is useful for automation and quick tasks, but is more difficult to use. |
| *An editor which lets you change (almost) every single value, including unknown ones. | | * Single file - the tool is only one executable, with all dependencies embedded within it. This makes your folders cleaner, however it can also cause stability issues in certain cases. |
| *Includes a simple room/level editor.
| | * Non-single file (default) - all dependencies are not embedded within the executable, and are now located right next to it. Choose this if you don't care about finding the right executable within ~300 DLL files, or if the stability issues from the Single file build affect you. |
| *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 ([https://github.com/krzys-h/UndertaleModTool/wiki/Corrections-to-GameMaker-Studio-1.4-data.win-format-and-VM-bytecode,-.yydebug-format-and-debugger-instructions#yydebug-file-format 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==
| | Documentation is available on [https://github.com/krzys-h/UndertaleModTool/wiki UndertaleModTool wiki]. |
| UndertaleModTool has different builds per release. The differences are as follows: | |
|
| |
|
| *<code>.NET bundled</code> - 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. | | ==Features== |
| *<code>Single file</code> - 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. | | * Can read every single byte from the data file for latest versions of Undertale, Deltarune, and most other GameMaker games, and then recreate a byte-for-byte exact copy from the decoded data. |
| *<code>Non-single File</code> - 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.
| | * 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. |
| Some test scripts are included:
| | * Includes a simple room/level editor. |
| | | * Allows for GML VM code editing. This means you can add any custom code to a game, either using the built-in GML compiler or GML assembly. (YYC is not supported for this.) |
| *Universal: | | * High-level GML decompiler and compiler. Supports a large range of GameMaker versions, and most important GML features (still missing a few). |
| **Search - Basic text search within decompiled code entries. | | * Support for running scripts that automatically modify your data file (or perform other nefarious tasks). This can be used for mod distribution, aside from other methods such as file patches/project systems. |
| **Scripts to batch import and export various types of asset files.
| | * All core functionality extracted into a library for use in external tools. |
| *Undertale only:
| | * Can generate a <code>.yydebug</code> file for the GM:S debugger so that you can edit variables live! (see [https://github.com/UnderminersTeam/UndertaleModTool/wiki/Corrections-to-GameMaker-Studio-1.4-data.win-format-and-VM-bytecode,-.yydebug-format-and-debugger-instructions#yydebug-file-format here]) |
| **EnableDebug - Activates [https://tcrf.net/Undertale/Debug_Mode Undertale's debug mode] by enabling the global variable 'debug' at game start.
| | * Automatic file associations for all GameMaker related data files. This is opt-in at the first boot of the tool, and can also be disabled by having a <code>dna.txt</code> file next to the executable. |
| **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 - [https://www.reddit.com/r/Undertale/comments/41lb16/hate_the_undertale_corruptor/ 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 [https://github.com/krzys-h/UndertaleModTool#included-scripts SCRIPTS.md] file.
| |
| | |
| Documentation is available on [https://github.com/krzys-h/UndertaleModTool/wiki UndertaleModTool wiki].
| |
|
| |
|
| ==Screenshots== | | ==Screenshots== |
| Line 68: |
Line 46: |
|
| |
|
| ==Changelog== | | ==Changelog== |
| '''0.5.1.0'''
| |
|
| |
| Additions:
| |
| * The dark mode setting (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1141 #1141], [https://github.com/krzys-h/UndertaleModTool/pull/1121 #1221], *[https://github.com/krzys-h/UndertaleModTool/pull/1273 #1273], [https://github.com/krzys-h/UndertaleModTool/pull/1336 #1336], [https://github.com/krzys-h/UndertaleModTool/pull/1342 #1342]).
| |
| * Tabs content state saving and restoring (tab sessions) (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1152 #1152]).
| |
| * More ways of opening an object in a new tab (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1232 #1232]).
| |
| * The "Find all references" feature and the new "Find" menu: (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1246 #1246])[0].
| |
| * Allows you to search for references of any common type asset by right-clicking:
| |
| ** An asset in the main list.
| |
| ** An object reference in the "Object definition" fields.
| |
| ** A tile on the GMS 2 tileset image (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1288 #1288]).
| |
| ** A texture page item on the embedded texture image (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1293 #1293])[0].
| |
| * A support for the tile layer exported data (.csv) from "Tiled" (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1280 #1280])[0].
| |
| * A proper support for code with multiple functions (@Jacky720, @VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1191 #1191]).
| |
| * Proper code editors for shaders (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1294 #1294]).
| |
| * A support for sequence text tracks (GM 2022.2 - e.g. "Dono’s Tale") (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1197 #1197]).
| |
| * New scripts - "SpriteOriginCopy.csx", "SpriteOriginCopy2_3.csx" (@fixdude in [https://github.com/krzys-h/UndertaleModTool/pull/1144 #1144]).
| |
| * A support for GM 2023.1 games (e.g. "HoloCure", "Alien XENOCIDE") (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1206 #1206]).
| |
| * A support for some GMS 2.0 games (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1205 #1205], [https://github.com/krzys-h/UndertaleModTool/pull/1239 #1329]).
| |
| * A support for GM 2023.2 games (and particle systems) - e.g "The Slormancer", "Nova Drift" (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1238 #1238], [https://github.com/krzys-h/UndertaleModTool/pull/1353 #1353], [https://github.com/krzys-h/UndertaleModTool/pull/1361 #1361]).
| |
| * An indication for the sub-functions cache building on first decompilation and 3 minutes timeout for it (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1241 #1241]).
| |
| * Proper sequence model names for debugging and the "Find all reference" results (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1254 #1254]).
| |
| * A support for games with room path layers (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1256 #1256], [https://github.com/krzys-h/UndertaleModTool/pull/1268 #1268]).
| |
| * A possibility to delete room objects through context menu (@zivmaor, @VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1301 #1301]).
| |
| * The "Run other script..." option on missing "Scripts" folder (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1364 #1364]).
| |
| * An option to export one sprite with padding (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1367 #1367]).
| |
|
| |
| Fixes:
| |
| * A memory leak of UTMT scripts and the command box (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1220 #1220]).
| |
| * A bug with textures not being displayed in GM 2022.3+ games; improvements of an "ImportGMS2FontData.csx" script (@Dobby233Liu, @Miepee, @VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1048 #1048]).
| |
| * A bug with <code>PromptChooseDirectory()</code> infinite loop in CLI (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1183 #1183]).
| |
| * An "ExportAllRoomsToPng.csx" script error (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1164 #1164]).
| |
| * A crash in CLI version on events replacing (@TheAwoo in [https://github.com/krzys-h/UndertaleModTool/pull/1174 #1174]).
| |
| * A "Texture failed to loaded!" error in the embedded texture editor (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1199 #1199]).
| |
| * An extension file and function tab titles display (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1200 #1200]).
| |
| * A room background definition removing (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1202 #1202]).
| |
| * A crash in "Deltarune 1&2" after a "Ch2 Debug.csx" script (@Jacky720 in [https://github.com/krzys-h/UndertaleModTool/pull/1188 #1188]).
| |
| * The "Gdip" crash in CLI version on loading GM 2022+ games (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1302 #1302]).
| |
| * An annoying XAML binding error in "Visual Studio" log (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1228 #1228]).
| |
| * <code>Environment.ProcessPath</code> warnings in "Visual Studio" (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1234 #1234], [https://github.com/krzys-h/UndertaleModTool/pull/1258 #1258]).
| |
| * A bug in the code editor that led to freezes on some errors (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1243 #1243]).
| |
| * The "FindUnusedStrings.csx" script (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1246 #1246])[1].
| |
| * A rare crash on drag&dropping within the asset list and the tab panel (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1264 #1264], [https://github.com/krzys-h/UndertaleModTool/pull/1289 #1289]).
| |
| * A crash on the tileset image click (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1274 #1274]).
| |
| * Incorrect GMS 2 rotated/flipped tiles display (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1280 #1280])[1].
| |
| * A bug that broke the "Disassembly" code editor tab on some localizations, e.g. Turkish (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1298 #1298]).
| |
| * A random <code>SaveCodeChanges()</code> crash on data saving (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1304 #1304]).
| |
| * A rare crash on opening the "Disassembly" code tab (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1322 #1322]).
| |
| * A crash on invalid entered color value (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1357 #1357]).
| |
|
| |
| Changes:
| |
| * The version flags cleanup and proper GM(S) version in the title (@Jacky720, @Miepee, @VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1047 #1047]; @VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1213 #1213]).
| |
| * Game data loading is noticeably faster and uses less RAM (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1161 #1161]).
| |
| * Made the embedded texture image zoomable and more interactable (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1293 #1293])[1].
| |
| * A lot of the font editor improvements: (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1328 #1328], [https://github.com/krzys-h/UndertaleModTool/pull/1331 #1331], [https://github.com/krzys-h/UndertaleModTool/pull/1332 #1332], [https://github.com/krzys-h/UndertaleModTool/pull/1346 #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 [https://github.com/krzys-h/UndertaleModTool/pull/1201 #1201]).
| |
| * The "Timestamp" value (in "General info") is in human-readable format (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1226 #1226]).
| |
| * An optimization of the "data.win" file context menu options - e.g. "Run game normally" (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1245 #1245]).
| |
| * An optimization of "ExportAllCode2_3.csx" script (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1239 #1239]).
| |
| * Room object names improvements (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1246 #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 [https://github.com/krzys-h/UndertaleModTool/pull/1266 #1266], [https://github.com/krzys-h/UndertaleModTool/pull/1299 #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 [https://github.com/krzys-h/UndertaleModTool/pull/1330 #1330]).
| |
| * Improved the object reference fields clarity (@VladiStep in [https://github.com/krzys-h/UndertaleModTool/pull/1363 #1363]).
| |
|
| |
| [https://github.com/krzys-h/UndertaleModTool/releases Release notes.] | | [https://github.com/krzys-h/UndertaleModTool/releases Release notes.] |
|
| |
|