Skip to content

Releases: UnderminersTeam/UndertaleModTool

UndertaleModTool v0.9.2.0

Choose a tag to compare

@colinator27 colinator27 released this 23 Aug 16:27

This is the 0.9.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.9.0.0, click here. To see the changes in minor release 0.9.1.0, click here.

Added

  • Added support for compiling/decompiling GML template strings by @natroute in #2412.
    • This means that, in many cases, string/@@string@@ will no longer appear, and $"{example}" syntax will/can be used instead.
  • Added an AudioGroup macro type for game-specific type data by @setupwitch in #2418.
    • This allows audio group names to get resolved in GML decompilation, when applicable.
  • Added support for more asset types for the "Find all references" feature (and other related changes/fixes) by @VladiStep in #2179.
    • Reference searching support was added for fonts within texture groups.
    • New "Room object instances" types for code have been added (create/pre-create code entries).
    • A new button has been added to Game objects, to search for the children of that object.
    • The irrelevant arguments variable no longer shows up when searching for unreferenced assets.
    • There is now better handling for varying GameMaker versions, including LTS 2022.
  • Added support for GameMaker 2026.1 betas, for both file format and some rare GML code generation changes (with nullish compound assignments).
  • Added support for optimizing variable_get_hash() during GML compilation, when possible.
  • Added a Name.Regex option to GameSpecificResolver by @InvoxiPlayGames in #2438.
    • Effectively, this allows for DELTARUNE to be detected more accurately across console versions.
  • Added native macOS arm64 build support for the CLI by @jjezewski in #2417.
  • Added a new --overwrite flag to the load command in the CLI, improving consistency across commands by @IruzzArcana in #2439.

Changed

  • Built-in GameMaker functions used for GML compilation are now more accurately available based on GameMaker version by @BioTomateDE in #2428.
  • Multiple dependencies updated, including some (more) mostly-irrelevant security patches in ImageMagick.

Technical Changes

  • Added a new RuntimeVersion struct in UndertaleGeneralInfo for convenience by @BioTomateDE in #2406.
  • Enabled usage of custom IGlobalFunctions implementations in GlobalDecompileContext by @skirlez in #2454.
  • Marked UndertaleData as DynamicallyAccessedMembers by @ngyikp in #2452.
    • This improves support for using UndertaleModLib in projects with trimming enabled.
  • Optimized the UnescapeText method using StringBuilder by @y114git in #2389.

Fixed

  • Fixed a situation where UndertaleModLib allowed empty/null object events to be serialized (which could cause crashes) by @BioTomateHP in #2376.
  • Fixed two room editor crashes observed in a test room within DELTARUNE Chapter 5.
  • Attempted a fix for loading projects in the project system, when modding a YYC game.
  • Fixed creating a new extension within the GUI not providing reasonable defaults for several string fields, which could cause crashes.

New Contributors

Full Changelog: 0.9.1.2...0.9.2.0

Nightly (bleeding edge)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Aug 16:05

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.9.1.2

Choose a tag to compare

@colinator27 colinator27 released this 13 Jul 12:59

This is the 0.9.1.2 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.9.0.0, click here. To see the changes in minor release 0.9.1.0, click here.

Changed

  • Multiple dependencies updated, including some mostly-irrelevant security patches in ImageMagick.

Fixed

  • Fixed Debug.csx not supporting updated versions of DELTARUNE Chapter 5.
  • Fixed tile instance IDs not being assigned by the project system, which could lead to strange issues and occasional crashes in-editor.
  • Fixed the CLI version number not being correct.

Full Changelog: 0.9.1.1...0.9.1.2

UndertaleModTool v0.9.1.1

Choose a tag to compare

@colinator27 colinator27 released this 29 Jun 19:34

This is the 0.9.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.9.0.0, click here. To see the changes in minor release 0.9.1.0, click here.

Changed

  • Dumping all code from the CLI no longer exports sub-function code entries, which was pointless and could result in filename length errors. Performance has been optimized and parallelized, as well.
  • Missing mb_side1 and mb_side2 mouse button constants are now included, usable in GameMaker 2.3.3 games and above.
  • Missing room asset resolutions for scr_84_add_menu_item in older DELTARUNE chapters added by @vrad-exe in #2411.
  • Some miscellaneous dependencies updated.

Fixed

  • Fixed Debug.csx not supporting DELTARUNE Chapter 5 by @break-core in #2409.
  • Fixed ExportSpritesAsGIF.csx failing on some modern GameMaker games with unused asset removal enabled.
  • Fixed prefab-generated scripts compiling in a way that would cause function resolution errors (only a mitigation for now, full support may come later).
  • Fixed compilation warnings of UndertaleModLib/UndertaleModTool due to PropertyChanged.Fody not being a private dependency.
  • Fixed detection of Spine sprite format changes introduced in GameMaker 2023.1, so that it no longer breaks on 2022 LTS games.

New Contributors

Full Changelog: 0.9.1.0...0.9.1.1

UndertaleModTool v0.9.1.0

Choose a tag to compare

@colinator27 colinator27 released this 19 Jun 02:43

This is the 0.9.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.9.0.0, click here.

Added

  • Added a project system build option to the CLI by @luizzeroxis in #2355.
  • Added support for directly dumping sprites (without a script) to the CLI by @ephoton in #2380.
  • Added the ability to disable sprite cropping (via manual JSON only, for now) in the project system.
  • Added (simple) shader asset support to the project system.
    • "Simple" means that it works similarly to how ImportShaders.csx does, still. You can't yet directly author shaders in the GUI, but you can transfer them between games or UTMT projects.

Changed

  • Updated dependencies in general.
  • Updated Underanalyzer, fixing an edge case in decompilation of some modern GML code gen.

Fixed

  • Fixed several issues in ImportShaders.csx through a refactor, allowing it to be used in modern GameMaker games, and with the project system.
  • Fixed tileset assets erroneously getting cropped upon getting imported in the project system.
  • Fixed ImportFonts.csx not compiling.
  • Fixed certain cases where ImportGraphics.csx could corrupt the data file it was operating on.

New Contributors

Full Changelog: 0.9.0.0...0.9.1.0

UndertaleModTool v0.9.0.0

Choose a tag to compare

@colinator27 colinator27 released this 28 Apr 19:05

This is the 0.9.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

  • Added an optional project system, designed to be a more resilient and collaborative method of creating mods.
    • Has the ability to export and reimport assets of many types, in a manner that is friendly to source control such as Git. This both makes collaboration much easier and allows easy version history.
    • Similar to the now-obsolete profile mode, GML edits are retained in plaintext, meaning that comments and formatting are preserved. External editors can also be used on all asset types, including code.
    • Theoretically can be used as a mod installation process, with the ability to manage external data files, create backups when installing, apply file patches (using BPS), verify game versions, and execute scripts.
    • In the GUI, asset changes are detected when you change them in their respective editors, which marks them to be exported when you later save the project. This works for the majority of supported assets, but some features are only supported via manual editing of JSON files, such as the main project file itself, and general info (such as changing the game window title).
    • The system is not yet feature-complete, and has room to grow to reach its full potential - see #2350. Currently, it is only accessible from the GUI and from the library itself, although it should have no issue being extended to the CLI in the future.
  • Added zoom functionality to the code editor by @Cheesecake2960 in #2141
  • Added partial support for automatically resolving collision event names in CodeImportGroup, which affects ImportGML.csx and other scripts that import code.
    • Specifically, an event name such as gml_Object_obj_example_a_Collision_obj_example_b, which appears in GameMaker Studio 2.3 and beyond, is supported. (As long as neither object name contains _Collision_/Collision_ within its name, which becomes ambiguous.)
  • Added support for piped input in the CLI by @danielpancake in #2312
  • Improved support for OGG/MP3 file types in the embedded audio editor by @HighFlyer-222 in #2084
  • Added additional game-specific data for Deltarune by @ImDigas in #2353
  • Added a message for when the Windows CLI is launched outside of the command line, to help new users.

Changed

  • ExportAllSprites.csx has been refactored, improving memory usage by exporting sprites on the same texture together by @setupwitch in #2340
  • README updates contributed by @YarTom in #2336
  • Underanalyzer updated, including support for some recent GameMaker 2024.14.4 code generation, and some miscellaneous fixes.
  • Following path refactors from the project system, many scripts will now enforce that their input/output is confined to folders selected by the user.
  • Profile mode has been entirely removed from the tool and library, as it has been superseded by the project system. Old profiles can be manually migrated into a project by simply copying over the GML files.

Fixed

  • Fixed a mathematical error during parsing of Spine texture entries by @Aipako in #2344
  • Fixed newly-added rooms being corrupted in GameMaker 2024.13+ games.
  • Fixed tile rendering errors not showing properly.
  • Fixed concurrency issues in ReduceEmbeddedTexturePages.csx.
  • Fixed a mistake in the GameMaker 2024.14.1 version check (thanks @luizzeroxis for pointing out the problem!).
  • Fixed Underanalyzer.pdb getting unnecessarily included in builds.
  • Fixed some issues with launching processes, e.g. when using Temp Run or when opening an audio group. Loading games from a Temp Run should now be faster due to debug logs being disabled.
  • Fixed thread safety issues in some scripts, where race conditions could rarely occur (more on that in the technical changes section...).

Other Technical Changes

  • With the integration of the project system, multiple utilities have been added to UndertaleModLib:
    • BPS: Support for applying BPS patch files, with a native C# implementation.
    • Paths: Support for joining paths and verifying that they reside within expected directories.
    • ScriptingUtil: Some helpers that are used for scripting, including the builder for the options that UndertaleModTool/CLI use for scripts.
    • TextureGroupPacker: Support for rectangle-packing textures that are part of a single texture group, onto potentially multiple textures.
  • Various dependencies have been updated. Particularly, the Magick.NET (ImageMagick) library has undergone version upgrades with breaking changes.
  • Switched to using Extent() instead of Composite() for padding images in TextureWorker, which is faster by @setupwitch in #2335
  • In order to have proper thread safety, SyncBinding() and DisableAllSyncBindings() have been removed from the scripting API.
    • These methods essentially covered up the root problem, rather than fix it. Now, scripts should use MainThreadAction, a new addition to the scripting API, in order to make changes to game data from an asynchronous context.
  • Cleanup of some enums, variables, and documentation by @setupwitch in #2322
  • Small code cleanup, improved FancyRoomSelect.csx by @BioTomateHP in #2236
  • Improved formatting and removed redundancy in BuiltinList.cs by @BioTomateDE in #2321

New Contributors

Full Changelog: 0.8.4.1...0.9.0.0

UndertaleModTool v0.8.4.1

Choose a tag to compare

@colinator27 colinator27 released this 08 Jan 19:32

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

Choose a tag to compare

@colinator27 colinator27 released this 04 Jan 21:13

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

Choose a tag to compare

@colinator27 colinator27 released this 28 Jul 22:05

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

Choose a tag to compare

@colinator27 colinator27 released this 02 Jun 02:08

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