Skip to content

Releases: UnderminersTeam/UndertaleModTool

Nightly (bleeding edge)

16 Feb 03:57

Choose a tag to compare

Pre-release

This is the latest version of UndertaleModTool. Also listed on this page are stable releases, but this is an automatically updating bleeding edge build. If you encounter any bugs, please make an issue on GitHub or join the Underminers Discord for help.

UndertaleModTool v0.8.4.1

08 Jan 19:32

Choose a tag to compare

This is the 0.8.4.1 UndertaleModTool release, for 64-bit Windows. Downloads can be found at the bottom of this release.

("UTMT_CLI" is the command-line interface version with no GUI, supported for Windows, Ubuntu, and macOS.)

Changelog

Note: This is a patch release. To see the changes in major release 0.8.0.0, click here. To see the changes in minor release 0.8.4.0, click here.

Added

  • Implemented a failsafe so that DDS textures are still able to be loaded when they use unsupported features.
  • Implemented support for loading/saving unknown (or otherwise unsupported and/or proprietary) texture formats. These won't convert to other formats, nor display properly, but their data will be retained.

Fixed

  • Fixed the import button for newly-created textures causing a crash by @ELBROWN777 in #2303
  • Fixed support for DDS textures with mipmaps by @luizzeroxis in #2305
  • Updated compilation instructions to mention that the .NET 10 SDK is now required for building, as well as recursively cloning using Git.

Other Technical Changes

  • Optimized variable lookups in the UndertaleModLib side of the GML compiler. (Apparently, this was a bigger performance issue than previously thought, saving several seconds of time in a reported case.)
  • Texture parsing is now aware of the texture block length field that appears in newer GameMaker versions.

Full Changelog: 0.8.4.0...0.8.4.1

UndertaleModTool v0.8.4.0

04 Jan 21:13

Choose a tag to compare

This is the 0.8.4.0 UndertaleModTool release, for 64-bit Windows. Downloads can be found at the bottom of this release.

("UTMT_CLI" is the command-line interface version with no GUI, supported for Windows, Ubuntu, and macOS.)

Changelog

Note: This is a minor release. To see the changes in major release 0.8.0.0, click here. To see the changes in minor release 0.8.3.0, click here.

Added

  • Added support for GM 2024.14 and 2024.14.1 games by @Dobby233Liu in #2277, and @colinator27
  • Added various option flags that are used in more recent GameMaker versions.
  • Added support for games that use DDS textures by @luizzeroxis in #1929
  • Added the ability to open code search results in a new tab with MMB by @VladiStep in #2238
  • Added a multiline regex option for code searching by @zivmaor in #2270
  • Added ability to move game objects (from all layers) in room editor (allowing room creation order to be configured in GMS2+ games) by @luizzeroxis in #2187
  • Added time source functions' arguments and constants to the decompiler and compiler by @ners-xd in #2295 and #2269
  • Added external_define constants for call and argument types in the decompiler by @Genouka in #2281
  • Added builtin variable audio_bus_main to the compiler by @ELBROWN777 in #2294
  • Added scale transform to tiles in rooms (improving visual accuracy in some games) by @luizzeroxis in #2204
  • Underanalyzer compiler: Added ability to use internal GML functions that use @ in their names (as a workaround to missing decompiler features)

Changed

  • Labeled individual size, margin, and origin fields within the sprite editor by @Jacky720 in #2288
  • Updated to .NET 10.
  • Various dependencies updated to their latest versions.

Fixed

  • Fixed room editor crashes with grid size of one by @BenjaminUrquhart in #2209
  • Fixed several issues with the ImportSounds.csx script by @GFOXSH in #2258
  • Fixed CLI documentation not being correct by @techy804 in #2218
  • Fixed additional issues with ExportSpritesAsGIF.csx not working with sprites with 0 frames.
  • Fixed a crash that could occur in certain (modified) games when viewing textures, due to image depth not being specified as 8.
  • Fixed a possible infinite loop that could occur when opening a file with invalid alignment.

Other Technical Changes

  • Updated AnimCurve documentation and CurveType enum by @misternebula in #2210
  • Added missing header chunk flag, correct save location flag name, name unknown fields in options by @yokimklein in #2252
  • Renamed RoomEntryFlags.ShowColor to RoomEntryFlags.ClearViewBackground, Name GraphTypeEnum values in UndertaleAnimationCurve by @yokimklein in #2257
  • GlobalDecompileContext.PrepareForCompilation() has now been made a public API.

New Contributors

Full Changelog: 0.8.3.0...0.8.4.0

UndertaleModTool v0.8.3.0

28 Jul 22:05

Choose a tag to compare

This is the 0.8.3.0 UndertaleModTool release, for 64-bit Windows. Downloads can be found at the bottom of this release.

("UTMT_CLI" is the command-line interface version with no GUI, supported for Windows, Ubuntu, and macOS.)

Changelog

Note: This is a minor release. To see the changes in major release 0.8.0.0, click here. To see the changes in minor release 0.8.2.0, click here.

Added

  • Added code name filtering to the "Search in code" window by @VladiStep in #2152.
    • (The script which was previously capable of this, SearchLimited.csx, has now been removed.)
  • Added functionality for using currently-selected code editor text as the default search text in the "Search in code" window by @VladiStep in #2154.
  • Underanalyzer: CSX scripts can now take advantage of the newly-added EnumerateChildren() on AST nodes that are produced by the decompiler, which can be useful for programmatically analyzing code, recursively.

Changed

  • Game-specific data updated for base GameMaker functions and Deltarune functions updated, through multiple contributions by @colinator27, @Jacky720, and @VladiStep.
  • New all-in-one Undertale/Deltarune debug script added, Debug.csx, with new support for the recently-released Deltarune chapters.
    • (Special thanks to folks from the community for figuring out crash fixes.)
  • All of the UTDR (Undertale/Deltarune) scripts have been renamed/recategorized to make it obvious which ones apply to which game.
  • Code for sequence asset handling has been cleaned up, now properly supports color tracks, and has added support for audio effect tracks by @colinator27 in #2123.
  • Added os_switch2 constant to the GML compiler and decompiler.
  • GML decompiler settings: "Allow leftover data on VM stack" is now enabled by default, which turns its exception into a warning.
    • (This makes a decompiler error in some games no longer occur.)
  • Small room asset instance ID deserialization performance boost and cleanup by @BioTomateDE in #2195.
  • Strip metadata before writing auto-generated images by @Dobby233Liu in #2206.

Fixed

  • Fixed ExportSpritesAsGIF.csx for sprites with no frames by @babro1 in #2139.
  • Fixed the GML VM disassembler producing Windows newlines, which was inconsistent with the GML decompiler (it will now always use Unix newlines) by @VladiStep in #2153.
  • Fixed tileset grid size in the room editor not properly depending on the tileset asset size (leading to incorrect results in some cases) by @CST1229 in #2155.
  • Fixed ExportAllSounds.csx not properly creating directories in some cases of exporting external sounds.
  • Fixed a crash that could occur when right-clicking some blank spots in the Game Object event grid by @VladiStep in #2177.
  • Fixed the "Update range" button layout in font editor by @VladiStep in #2181.
  • Fixed the loop condition for the CLI's PromptLoadFile scripting method, similarly to how PromptChooseDirectory was fixed in a previous release, by @ancientstraits in #2199.
  • Fixed ImportGML.csx not properly filtering for only GML files, and not properly supporting no-link imports.
  • Underanalyzer: Fixed compilation and decompilation of local function references from within a function declaration's argument list (default values), or within its inheritance call arguments.

Full Changelog:

0.8.2.0...0.8.3.0

UndertaleModTool v0.8.2.0

02 Jun 02:08

Choose a tag to compare

This is the 0.8.2.0 UndertaleModTool release, for 64-bit Windows. Downloads can be found at the bottom of this release.

("UTMT_CLI" is the command-line interface version with no GUI, supported for Windows, Ubuntu, and macOS.)

Changelog

Note: This is a minor release. To see the changes in major release 0.8.0.0, click here. To see the changes in minor release 0.8.1.0, click here.

Changed

  • Updated 17 scripts to no longer be Windows-only (and thus now usable from the CLI) by @Eliandro4 in #2125.
  • In addition to the above scripts, ExportFontData.csx has been functionally changed to ExportAllFonts.csx, and is now cross-platform.
  • All scripts have been slightly renamed and recategorized, hopefully in a more intuitive manner. A few ancient and obsolete scripts have been removed outright.
  • A myriad of small changes/improvements have been made to a number of scripts for consistency. Most notably, all of the exporter scripts now allow choosing the output directory, rather than forcing an arbitrary one. Some corresponding importer scripts have been updated to reflect this.
  • The CLI (command-line interface) version of the tool now comes bundled with all of the built-in scripts that the main tool does.
    • (Note: Not every script is supported with the CLI. Check SCRIPTS.md for details on this.)
  • The documentation contained within SCRIPTS.md is no longer years out of date. It now accurately contains basic information on what every built-in script does.

Fixed

  • Fixed some built-in script compilation errors.
  • Fixed errors sometimes caused when copying certain text by @luizzeroxis in #2129.
  • Fixed function resolution for newly-defined global functions during a batch GML code import.
    • (On a technical note, this means that the compiler now parses all global scripts in a batch before any bytecode gets generated.)
  • Fixed the PromptLoadFile implementation in the CLI, so that it no longer loops incorrectly.
    • (A small change was made to the behavior for this method and PromptChooseDirectory. Now, it's possible to specify nothing, which is consistent with the ability to cancel in the GUI.)
  • Fixed some built-in GML constants that were missing from the compiler, but were present in the decompiler.
  • Fixed buggy behavior when using CodeImportGroup after it threw an exception during an import; it will now always clear its queue.
  • Fixed missing constant resolution for scr_debug_keycheck's argument in the game-specific data for Deltarune.
  • Fixed some behavior in ImportSingleSound.csx (previously ImportASound.csx), ImportSounds.csx (previously ImportSoundsBulk.csx), and ImportMasks.csx.

Full Changelog:

0.8.1.1...0.8.2.0

UndertaleModTool v0.8.1.1

12 May 04:23

Choose a tag to compare

This is the 0.8.1.1 UndertaleModTool release, for 64-bit Windows. Downloads can be found at the bottom of this release.

("UTMT_CLI" is the command-line interface version with no GUI, supported for Windows, Ubuntu, and macOS.)

Changelog

Note: This is a patch release. To see the changes in major release 0.8.0.0, click here. To see the changes in minor release 0.8.1.0, click here.

Fixed

  • Fixed some built-in scripts not compiling.
  • Fixed ScriptWarning not being exposed as part of the scripting API correctly.

Full Changelog:

0.8.1.0...0.8.1.1

UndertaleModTool v0.8.1.0

11 May 21:32

Choose a tag to compare

This is the 0.8.1.0 UndertaleModTool release, for 64-bit Windows. Downloads can be found at the bottom of this release.

("UTMT_CLI" is the command-line interface version with no GUI, supported for Windows, Ubuntu, and macOS.)

Changelog

Note: This is a minor release. To see the changes in major release 0.8.0.0, click here.

Added

  • Added a "Restore to defaults" button to the compiler/decompiler settings window by @CST1229 in #2114.
  • Added a new dialog to the GUI that appears when adding a new asset to a game, which allows for naming assets before they get created, rather than being forced to rename after the fact.
  • Added a new dialog to the GUI that appears specifically when adding new rooms to a game, for whether or not to automatically add the room to the room order list.
  • Added preliminary support for GameMaker 2024.14 file format changes.
  • Added a new method to CodeImportGroup called QueueTrimmedLinesFindReplace, which acts as a find & replace operation that ignores whitespace at the beginning and end of lines. (This is mainly meant for scripting.)

Changed

  • When adding scripts to a GameMaker 2.3+ game, it will now automatically be added to the global initialization list ("Global Init" in the GUI).
    • (This prevents issues trying to reference global functions defined in newly-created scripts.)

Fixed

  • Fixed a misalignment warning on some GameMaker: Studio 1.4 games, particularly ones that have been modded with UndertaleModTool already.
    • (Note: This warning is actually harmless, and a misconfiguration prevented it from appearing until 0.8.0.0.)
  • Fixed some shader data misalignment errors when loading some games; it now allows for 8-byte alignment padding.
  • Fixed editor crashes that could occur when external textures fail to load.
  • Fixed some missing code highlighting on GameMaker 2024.11+ games.
  • Fixed a code editor crash that could occur when right clicking on a number used by a removed/unused game asset in GameMaker 2024.11+ games.
  • Fixed null variables in code no longer being able to save in 0.8.0.0; the old behavior has been restored.
  • Fixed (removed) the unnecessary warnings produced in disassembly found in GameMaker 2024.11+ games.
  • Fixed functions from the functions list being able to override global script functions during GML compilation (in practice, this resulted in scripts overriding functions with the same name).
  • Fixed newly-added rooms from the GUI not being initialized with the correct flags between GameMaker versions 2.3 and before 2024.13.
  • Fixed newly-added asset layers from the GUI not being initialized with a text item instance list in GameMaker 2024.6+, which leads to corrupted data.
  • Fixed newly-added rooms from the GUI not having their background list cleared (and caption set to null) in GMS2 and above, which could cause load errors in recent GameMaker versions.
  • Fixed a system-dependent issue with game-specific data failing to load in the correct order, due to undefined sorting behavior.
  • Fixed the "name string ID" of variables and functions, when the last reference to them is through a pushref.i assembly instruction.
  • Fixed ExportAllTextures.csx and ExportAllTexturesGrouped.csx failing on GameMaker 2024.11+ games.
  • Fixed ImportGraphics.csx and ImportGraphicsAdvanced.csx so that they no longer grow a sprite's bounding box when its bounding box mode is set to manual (2).
  • Underanalyzer GML compiler/decompiler fixes:
    • Improved compiler and decompiler support for array instance types (improved accuracy).
    • Structs now support most keywords as variable names/keys, to reflect recent GameMaker changes.
    • Fixed detection of default argument value syntax on GameMaker 2024.11+, and added support for the new code generation in the compiler.
    • Fixed compiler support for function/script references in GameMaker 2024.2+.
    • Added compiler and decompiler support for the new function resolution optimizations in GameMaker 2024.13+.
    • Fixed control flow decompilation for a with loop directly inside of a try block.
    • Added support for partial restoration of object events that have been culled by unused asset removal in GameMaker 2024.11+ (some functions, variables, and assets may show up as ID numbers instead of actual references).

Full Changelog:

0.8.0.0...0.8.1.0

UndertaleModTool v0.8.0.0

26 Apr 23:33

Choose a tag to compare

This is the 0.8.0.0 UndertaleModTool release, for 64-bit Windows. Downloads can be found at the bottom of this release.

("UTMT_CLI" is the command-line interface version with no GUI, supported for Windows, Ubuntu, and macOS.)

Changelog

Added

  • Integrated the new Underanalyzer decompiler and compiler by @colinator27 in #1862 and #2056.
    • This is a complete replacement of the previous compiler and decompiler used by UndertaleModTool, adding support for most of the latest GameMaker features, and fixing most of the control flow bugs.
    • A new GML compiler/decompiler settings menu has been added to the settings window.
    • All of the major GameMaker 2.3+ syntax is now supported, with the exception of accessors and some certain function calls combined with arrays (which both have alternative syntax for now).
    • The compiler now supports enums and macros. Sometimes, the decompiler can produce enums as well.
    • All previous code corrections have been removed, as they are no longer necessary.
    • The decompiled code cache feature (for search operations, primarily) has been removed, as the new decompiler is significantly faster.
    • To configure asset (and enum/macro) resolution for games that require it, new JSON configuration files have been added under a directory named GameSpecificData.
  • Added new room editor controls by @AwfulNasty and @CST1229 in #1489 and #2064.
    • Mouse middle button can now be used to pan the room canvas.
    • After selecting an object, clicking and dragging near its edge allows it to be scaled (shift or ctrl can be used for higher precision).
    • Control key now functions as a removal of any grid snapping.
    • Pressing X/Y will flip the xscale/yscale of the selected object.
    • Ctrl+V pasting now snaps the paste to the grid, unless Ctrl+Shift+V is used.
    • Instance layers can now automatically be created if necessary (when dragging in object instances).
  • Added new scripts: ImportGraphicsAdvanced.csx and ExportSpritesAsGIF.csx by @CST1229 in #2067.
    • ImportGraphicsAdvanced.csx allows for more fine-tuned sprite import settings via a GUI, as well as GIF and sprite strip import.
  • Added remove buttons for object actions, global initialization scripts, and sprite collision masks by @CST1229 in #2070.
  • Added a setting to remember UndertaleModTool's window state/position when the program is closed by @luizzeroxis in #2088.
  • Added more builtin GML functions for use in the compiler by @CST1229 in #2093.
  • Added GameMaker 2024.8 support by @Dobby233Liu in #1937.
  • Added GameMaker 2024.11 support by @Dobby233Liu in #2013.
  • Added GameMaker 2024.13 support by @colinator27 in #2105.
  • (Note: Latest GameMaker support is primarily for saving/loading; some other features may be missing or broken. Let us know of any problems.)
    • (Warning for 2024.11+: Not all scripts may be compatible with the unused asset removal feature in GameMaker, and non-bundled scripts especially, as they have not been upgraded.)
    • (Warning for 2024.13+: The first room in the game will have a new instance ID list which is not accessible from the UI, and may fall out of sync. None of the new features are accessible from the UI, either.)

Changed

  • Improved zoom in the room editor by @luizzeroxis in #2060.
  • ImportGraphics.csx and ImportGraphicsAdvanced.csx will now trim texture page items by @CST1229 in #2083.
    • In addition to this, the scripts have been updated to support modern GameMaker collision mask formats. This means that collision masks will no longer generate unnecessarily for rectangle-shaped collisions (non-precise) in GameMaker 2022.9+, and that collision masks will generate at the size of the bounding box for GameMaker 2024.6+.
    • Some related behavior (such as altering an existing sprite's width/height) has been changed. Let us know if there's any unexpected import behavior or bugs.
  • Font editor now uses a gap of 2 pixels rather than 1 by @GFOXSH in #2057.
  • Profile mode, while still existing for this release, has had its scope slightly reduced. It now has no effect whatsoever when disabled, and scripts will not work as well with it anymore.
    • (If things go well, a new project system will be on the way to eventually obsolete profile mode.)
  • The system used for file associations has been rewritten to act less frequently, and also prompt the user on first startup for whether it should be enabled. A corresponding setting has been added for it as well.

Fixed

  • Legacy tile Source X/Y can now properly be negative by @crystallizedsparkle in #2037.
  • Several room editor crashes to do with legacy tiles have been fixed.
  • Another TouchControlsEnabler script fix by @NC-devC in #2058.
  • Fix CLI file output when replacing larger older file by @skirlez in #2063.
  • A large number of GML-related issues have been resolved via the integration of the Underanalyzer compiler and decompiler.

Other Technical Changes

  • GML code compilation & decompilation APIs have been entirely replaced to account for Underanalyzer, and to improve things in general. Scripts relying on the old APIs will need to be refactored in order to work in this version.
  • Magick.NET (ImageMagick) library has undergone a major version upgrade with breaking changes. Scripts relying on it may need to be refactored in order to work in this version.
  • The base class for lists in UndertaleModLib has been changed to a generic observable list by @colinator27 in #2072.
  • Correction to XML API documentation for Tile.ObjectDefinition and Tile.spriteMode by @misternebula in #2104.
  • Settings window has been refactored by @luizzeroxis in #2107.
  • Various optimizations have been made across UndertaleModLib in an effort to speed up save/load times and reduce memory usage.
  • Saving/loading data files through UndertaleModLib should now be thread-safe (most global static variables have been removed), enabling tests to be performed in parallel.
    • Most other operations between two or more loaded data files should also be thread-safe, when not performed within the same data file context.

New Contributors

Full Changelog: 0.7.0.0...0.8.0.0

UndertaleModTool v0.7.0.0

09 Mar 15:33

Choose a tag to compare

This is the 0.7.0.0 UndertaleModTool release, for 64-bit Windows. Downloads can be found at the bottom of this release.

("UTMT_CLI" is the command-line interface version with no GUI, supported for Windows, Ubuntu, and macOS.)

Changelog

Added

Changed

Other Technical Changes

  • Upgraded to .NET 8 by @Miepee in #1889
  • Updated workflows to support .NET 8 by @colinator27 in #1891
  • Rewrote texture handling (improving performance, especially for BZ2+QOI textures) by @colinator27 in #1870 and #1890
    • Note that this change induces script compatibility breaks with TextureWorker, which now implements IDisposable.
  • Removed extra debug checks (to ensure consistency) by @colinator27 in #1884
  • Added negative length checks during deserialization by @colinator27 in #1885
  • Code (de)serialization cleanup and optimization by @colinator27 in #1886
  • Replaced WebClient with HttpClient by @colinator27 in #1908

Fixed

New Contributors

Full Changelog:

0.6.1.0...0.7.0.0

UndertaleModTool v0.6.1.0

23 Aug 16:39

Choose a tag to compare

This is the 0.6.1.0 UndertaleModTool release, for 64-bit Windows. Downloads can be found at the bottom of this release.

Changelog

Note: This is a minor release. To see the changes in major release 0.6.0.0, click here.

Changed

  • The RunSwitchOnPC.csx script now helps with running the Switch and Xbox versions of Undertale on PC. It has thus also been renamed to RunSwitchAndXboxOnPC.csx

Fixed

  • Fixed the EmSize field on font assets always being loaded as the number 0, in games where it was a floating point number.
  • Fixed GameMaker version 2023.1 getting misdetected when loading, due to some unnecessary leftover code.

Full Changelog:

0.6.0.0...0.6.1.0