This file contains descriptions of scripts that are bundled with the tool.
Many scripts are experimental, so be careful using them. Always make frequent backups. Please report any bugs or issues you encounter.
These are scripts designed to extract/dump assets from a game, whether for analysis or for reimporting later.
Most of these scripts will prompt you to select a folder/directory to export files, directly, to. Take care not to overwrite data on accident.
ExportAllAssembly.csx: Exports GML assembly.ExportAllCode.csx: Exports decompiled GML code.ExportAllEmbeddedTextures.csx: Exports all texture pages as PNG files.ExportAllFonts.csx: Exports PNGs and glyph information of all fonts.ExportAllMasks.csx: Exports sprite collision masks as black-and-white PNGs.ExportAllRoomsToPNG.csx: Exports previews of all rooms as PNG files.- (Note: This is currently only supported on the Windows GUI.)
ExportAllShaders.csx: Exports shader metadata, source code, and compiled (binary) code.ExportAllSounds.csx: Exports sounds as WAV/OGG files.ExportAllSprites.csx: Exports sprites as PNG files. Optionally includes padding, which is when a sprite frame doesn't use its full extents.ExportAllTextures.csx: Exports PNGs of all texture page items referenced by sprites, fonts, and backgrounds (tilesets).ExportAllTexturesGrouped.csx: Same as the above script, except this one creates sub-directories for each asset.ExportAllTilesets.csx: Exports tilesets (or backgrounds) as PNG files.ExportAllStrings.csx: Exports all strings to a text file. Optionally includes strings with newlines (which cannot be reimported).ExportAllStringsJSON.csx: Exports all strings to a JSON text file. Always includes strings with newlines.ExportSpecificCode.csx: Exports specific code entries, given the names of objects, scripts, or code entries directly.ExportSpecificSprites.csx: Exports specific sprites, given their names. Optionally includes padding.ExportSpritesAsGIF.csx: Exports sprites to animated GIF files. Will always preserve padding.ExportTextureGroups.csx: Exports PNGs of all texture page items referenced by sprites, fonts, and tilesets. Grouped into directories by texture groups, and exports full texture pages as well. Optionally includes padding.
These are scripts designed to import assets into a game, usually requiring certain types of files/data as input.
ApplyBasicGraphicsMod.csx: Imports graphics without using a texture packer, by swapping the sprite in place on its texture sheet, as long as it's the same size.ImportAllStrings.csx: Imports strings from a text file, as long as those strings are from the same unmodified game, and that strings containing newlines are not present.ImportAllStringsJSON.csx: Imports strings from a JSON text file, as long as those strings are from the same unmodified game.ImportAllTilesets.csx: Imports tileset (or background) images from a folder, as long as corresponding assets already exist in the game data.ImportAssembly.csx: Imports GML assembly.ImportGML.csx: Imports and compiles GML code. Will automatically create certain types of assets when possible. Code can also reference scripts/functions defined in the same import.ImportGMS2FontData.csx: Imports font data directly from a GMS2 .yy font project file. May break depending on GameMaker version.ImportGraphics.csx: Imports sprites or backgrounds as PNG files from a folder. Sprites are in the formatfilename_N.png, where N is the frame number starting at 0. Put files in a folder named "Backgrounds" to import them as backgrounds.ImportGraphicsAdvanced.csx: Imports sprites or backgrounds as PNG or GIF files from a folder. Supports a variety of formats (frame numbers starting at 1 or 0, GameMaker_stripN, animated GIFs, single-frame sprites). Has an additional dialog after importing to set sprite offsets and, for GMS2 games, animation speed.- (Note: This is currently only supported on the Windows GUI.)
ImportMasks.csx: Imports sprite collision masks from black-and-white PNG files.ImportShaders.csx: Imports shader data, expected to be formatted as exported byExportShaders.csx.ImportSingleSound.csx: Imports a single sound asset, WAV or OGG format.ImportSounds.csx: Imports sound assets, WAV or OGG format.NewTextureRepacker.csx: Regenerates all texture pages using a texture packer, and configurable settings by editing the script. Read the script's comments for more details.- (Be very careful when using this script, as data can very easily get corrupted or broken.)
ReduceEmbeddedTexturePages.csx: Similar to above texture page regenerator, but a more naive/legacy implementation.- (Similar to the previous script, be very careful when using this script.)
These are an old set of scripts that can be referenced for how scripting works, or just for fun.
DeltaHATE.csx: Mod showcasing asset shuffling techniques on the SURVEY_PROGRAM version of Deltarune, with hilarious results. Similar to another modding tool called "HATE", for Undertale.DeltaMILK.csx: Replaces every non-background sprite in Deltarune chapter 1 with milk.HeCanBeEverywhere.csx: Experimental mod adding multiple Jevils to the SURVEY_PROGRAM version of Deltarune.MixMod.csx: As of writing, this script is non-functioning. It's intended to use a GameMaker extension to play music from YouTube, in Undertale.RoomOfDetermination.csx: Mod showcasing room editing and code modding capabilities, in Undertale.TheWholeWorldRevolving.csx: Mod that permanently rotates the screen in the SURVEY_PROGRAM version of Deltarune.
These are scripts developed primarily for use in Undertale/Deltarune.
Debug.csx: Enables or disables debug mode in all supported Undertale/Deltarune versions.DeltaruneClearShaderData.csx: Clears shader data from Deltarune, allowing older versions of the game to run on ancient hardware.DeltaruneReloadJSON.csx: Adds a hotkey to Deltarune, which reloads the language JSON.DeltaruneTTFFonts.csx: Marks all fonts in Deltarune to be externally loaded. Does not handle Japanese text.DisableDogcheck.csx: Disables dogcheck in Undertale and Deltarune such that you can load any room in the game from your save file.ShowRoomName.csx: Adds a room ID and name display to the screen when debug is enabled, on Undertale or Deltarune.TouchControlsEnabler.csx: Adds mobile touch controls to Undertale or Deltarune.UndertaleBattlegroupSelector.csx: Adds a battlegroup selector debug hotkey to Undertale.UndertaleBetterVaporiser.csx: Replaces the current vapor system in Undertale with a new one that generates vapor on the fly for the appropriate sprite and can vaporize colored sprites.UndertaleBorderEnabler.csx: Enables borders on PC Undertale for versions prior to Undertale Switch.UndertaleBorderEnablerv1_11.csx: Enables borders on PC Undertale for the 1.11 version of Undertale (Switch).UndertaleChangeHomeBattlegroup.csx: Changes the target battlegroup when pressing the Home key in Undertale.UndertaleDebugMsg.csx: Displays the contents ofglobal.msgon-screen while debug mode is enabled in Undertale.UndertaleDebugToggler.csx: Makes it possible to switch debug mode on and off using F1 in Undertale.UndertaleDialogSimulator.csx: Adds a dialogue editor to Undertale.UndertaleFixAlphysLabCrashAndroid.csx: Fixes a crash at Alphys's lab on Android devices in Undertale.UndertaleGoToRoom.csx: Adds a debug hotkey to go to a room ID, in Undertale.UndertaleRunButton.csx: Removes the debug check from the Backspace hotkey speed boost in Undertale.UndertaleSafeBlaster.csx: Adds a new version of obj_gasterblaster that isn't tied to the Sans boss fight specifically.UndertaleSimplifyBattlegroupScript.csx: Removes duplicate code fromscr_battlegroupin Undertale.UndertaleSwitchAndXboxOnPC.csx: Applies light modifications to the Switch/Xbox versions of Undertale so that they can run on PC correctly.UndertaleTTFFonts.csx: Marks all fonts in Undertale to be externally loaded. Does not handle Japanese text.UndertaleWithJSONs.csx: This script JSONifies all Undertale versions with Japanese support, 1.05+. Switch languages using F11. Reload text for current language from JSON on command using F12.UndertaleWASD.csx: Adds WASD controls to Undertale.
ExternalizeAllOGGs.csx: Externalizes all OGG sound effects from a game.ExtractEmbeddedDataFile.csx: Extracts a data file from an executable or memory dump file. Not guaranteed to produce usable results.FancyRoomSelect.csx: Adds a mod that makes selecting and teleporting to different rooms in a game very user-friendly.FindAndReplace.csx: Allows for performing find and replace operations in GML code across an entire game.FindObjectsInRooms.csx: Finds instances of the desired object types in all room data of a game.FindObjectsWithSprite.csx: Finds object types assigned the desired sprite pattern in a game.FontEditor.csx: Allows for editing font data in detail using a custom GUI.- (Note: This is currently only supported on the Windows GUI.)
GoToRoom_AutoLocatePersistentObj.csx: Similar toGoToRoom.csxfor Undertale/Deltarune, but instead attempts to locate a persistent object automatically, making it portable. Results will vary by game.MergeImages.csx: Loads images from two directories, and exports side-by-side images of all corresponding images.ScaleAllTextures.csx: Scales all texture pages in a game. Very likely to cause visual problems.
These scripts are highly technical and niche. You should REALLY know what you're doing before using any of these, more so than other scripts. They are likely to break.
13_To_14.csx,14_To_16.csx,15_To_16.csx,15_To_17_To_16.csx,16_To_17.csx,ConvertFrom17to16.csx,ConvertFrom17to16_for_2.3.csx: Attempts to convert the bytecode version of games.AutoBackup.csx: An automatic backup script of the data.win file which runs in the background while you work, with a GUI. May be unstable.CheckDecompiler.csx: Checks the decompiler/compiler accuracy of a game and returns the inaccurately decompiled scripts in the game directory.CopySound.csx,CopySoundInternal.csx: Attempts to copy sound data, from one game to another, and within the same game, respectively.CopySpriteBgFont.csx,CopySpriteBgFontInternal.csx: Attempts to copy sprite/background/font data, from one game to another, and within the same game, respectively.ExecutionOrder.csx: When active, displays the order that object events execute in supported games, as well as interactions withglobal.interact.ExportAllCodeSync.csx: Exports GML code, but not in parallel. This is much slower, but prevents any threading issues, should they arise.- There are two scripts to assist in repairing data files where assets were accidentally moved from their original places.
ExportAssetOrder.csx: This exports all the names of a game's assets (currently excluding GameMaker 2.3+ assets) to a text file.ImportAssetOrder.csx: This takes an existing text file exported fromExportAssetOrder.csx, and uses it to reorganize the assets in the current data file.- If assets cannot be found, it will fail to fully complete. Assets not in the text file will simply be moved to the end of their respective lists.
FindNullsInOffsetMap.csx: Used to find null objects in the offset map, which is an internal data file structure.FindUnknownFunctions.csx: Used to identify improperly-defined functions in a game, which lead to a game failing to boot.FindUnusedStrings.csx: Used to find unused strings in a game. Obsolete to the new GUI that can do the same.GameObjectCopy.csx,GameObjectCopyInternal.csx: Attempts to copy object data, from one game to another, and within the same game, respectively.GetAllChunkNames.csx: Returns C# code containing the list of chunk names in the opened game data file.GetTempDirectory.csx: Returns the current base directory, used for debugging .NET bundled versions of the tool.ImportGraphics_Full_Repack.csx: Similar toImportGraphics.csx, but exports and reimports all textures in the game. Can be extremely slow and memory/storage-intensive.LintAllScripts.csx: Debugging utility for making sure scripts compile properly.MatchRoomOrderToInternalOrder.csx: Matches the room asset order to the actual room order.Profiler.csx: Based on the execution order script, but reworked to be a profiler and stack tracer, to identify freeze locations. Performs a lot of disk operations.RealignRoomInternalOrder.csx: Matches the room order to the room asset order. Obsolete to the GUI that can do the same.RemoveUnusedSounds.csx: Attempts to remove unused sounds from a game.RestoreMissingCodeLocals.csx: Attempts to restore code locals to code entries that are missing them, only applicable to certain GameMaker versions.TestExportAllCode.csx: Records instances of tool crashes when decompiling all code.ToggleAlignment.csx: Toggles 4-byte alignment in the TPAG chunk, part of a game data file.VariableFixer.csx: Attempts to fix variable configurations in the data file, for certain GameMaker versions.