UndertaleModTool Switch

From GameBrew
UndertaleModTool
Undertalemodtoolnx.png
General
Authorkrzys-h
TypeHack Utilities
Version0.5.1.0
LicenseGPL-3.0
Last Updated2023/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

undertalemodtoolnx2.png

Undertale: Bits and Pieces
undertalemodtoolnx3.png

RIBBIT - The Deltarune Mod
undertalemodtoolnx4.png

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:
    • An asset in the main list.
    • An object reference in the "Object definition" fields.
    • A tile on the GMS 2 tileset image (@VladiStep in #1288).
    • A texture page item on the embedded texture image (@VladiStep in #1293)[0].
  • 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).

Release notes.

External links

Advertising: