YYToolkit is a tool for creating mods and altering GameMaker games.

Related tags

Game YYToolkit
Overview

YYToolkit

YYToolkit is a tool for creating mods and altering GameMaker games.

Currently, only Windows is supported.

Features

  • Intercepting script calls and object events
    • Executing your own code before or after the event
    • Cancelling the event
  • Calling any GML function, from any instance
  • Plugin support
    • The tool provides various functions to aid with modifying game code.
      • Intercept any script call
      • Intercept any object event (Draw, Step), change their bytecode, cancel them...
      • Intercept any game errors to create your own error dialogs
      • Run code every game frame (TAS frame counter?)
      • and more!
  • Full compatibility with existing tools like UndertaleModTool or Dogscepter.

Note: GML Compilation is only supported if UndertaleModTool v0.4.0-pre2 or newer is running.

Directory Structure

  • ExamplePlugin - contains source code for the example plugin DLL
  • Launcher - contains source code for the launcher (YYLauncher, the EXE you run)
  • YYExplorer - contains source code for an explorer plugin, which can change most aspects of a running game through a GUI.
  • YYToolkit - contains source code for the core module - used when you select Launch with YYToolkit in the Launcher.
Comments
  • full screen issue

    full screen issue

    Everytime i go into fullscreen with mods on then it gets weird and stretches everything. I tried with no mods and it works perfectly fine, can you help me or fix the code? DELTARUNE Chapter 2 10_8_2021 4_35_08 PM

    opened by PixelAsh 4
  • Launcher doesn't inject if the game path contains Unicode Characters

    Launcher doesn't inject if the game path contains Unicode Characters

    The launcher will fail to inject into the game if the game's path contains unicode characters. To replicate, append this string 虚无普清版 to the game folder's name and try to inject.

    bug wontfix 
    opened by Archie-osu 2
  • Early Launch support

    Early Launch support

    Early Launch refers to injecting into the game before the runner even starts execution inside WinMain, which allows for hooking insanely early. This gives YYTK an edge on RNG initialization, which is currently impossible to manipulate.

    There are several issues with this currently. First is that not even Process Hacker launched with admin rights can inject - we'd need to investigate why. Image1

    The second is an even bigger problem - YYToolkit would crash due to calling game functions before the hooks are even set-up, so we'd need some Pre-Init state, in which the tool waits before the runner initializes.

    opened by Archie-osu 2
  • FindPattern fails on drawing functions with DR 1.10 runner

    FindPattern fails on drawing functions with DR 1.10 runner

    Applies for all GR_Draw_* hooks. It seems there is an extra "push" instruction added in between the individual E8 opcodes. This is inconsistent with older runners and is likely to break support if the pattern is just replaced.

    bug 
    opened by Archie-osu 1
  • Incomplete / incorrect SDK types of YYGMLFuncs

    Incomplete / incorrect SDK types of YYGMLFuncs

    Correct type is:

    struct YYGMLFuncs
    {
    	const char* pName;
    	union
    	{
    		PFUNC_YYGMLScript pScriptFunc;
    		PFUNC_YYGML pFunc;
    	};
    	YYVAR* pFuncVar;
    };
    

    The pScriptFunc type is what is used in YYC script calls (see Will You Snail? for an example game).

    bug good first issue 
    opened by Archie-osu 1
  • YYToolkit v3

    YYToolkit v3

    A massive re-factor of YYToolkit, built from the ground up for performance and stability. Everything is now designed with both x86 and x64 in mind.

    Code is now full of comments in an effort to reduce the learning curve needed to start contributing to the project. Effort has also been made to reduce the use of STL types in the API for easier portability to other languages (for example C# or Rust bindings).

    The core of YYToolkit's API now relies on the RTK Framework, which allows for a consistent development experience, no matter the game.

    Current missing features are:

    • Early Launch
    • Automatic plugin loading
    • Headers for Plugin -> Core interoperability
    • Anything game-specific
    opened by Archie-osu 1
  • Undertale 1.00 issues

    Undertale 1.00 issues

    A shit ton of stuff fails, probably due to the fact the runner's really old. The tool loads fine and works though.

    The hooks failing are:

    • Code_Execute
    • DoCallScript
    • YYError (probably due to camera_create not being a thing)
    • GR_Draw_Text_TC (did that even exist back then? patterns seem to be failing)

    The script array also seems to not be found, as the unit test fails. The global object cannot be found due to the @@GlobalScope@@ function not existing.

    Image

    bug 
    opened by Archie-osu 0
Releases(v2.1.2)
  • v2.1.2(Aug 10, 2022)

  • v2.1.1(Jul 28, 2022)

  • v2.1.0(May 18, 2022)

    Core:

    • Added function for printing text without a newline via PrintMessageNoNewline
    • Remade unit test logging, leading to less output
    • Added protection against exceptions with the ParseVA function
    • Fixed pattern scanning in x64
    • Fixed the majority of hooks in x64
    • Added support for dynamic plugin loading / unloading via (undocumented) functions
    • Fixed game crashes if the installation directory has Unicode characters in it

    Launcher:

    • Removed Force Latest Commit, as nightly.link is broken and I don't wanna deal with it
    • Added DLL caching as per colinator27's request

    Plugins:

    • ExamplePlugin:
      • Added a warning about how ExamplePlugin is not enabling Debug Mode anymore

    Earliest backwards-compatible version:

    • 2.0.0
    Source code(tar.gz)
    Source code(zip)
    DownloadMe.zip(311.51 KB)
    YYToolkit.dll(428.00 KB)
  • v2.0.1(Apr 15, 2022)

  • v2.0.0(Apr 15, 2022)

    No, not talking about Flowey.

    Core:

    • Enabled x64 compilation.
      • The majority of features don't work, and you'll have to compile yourself.
      • Only tested on a 2022.2 runner, anything older / newer might not work. Make issues!
    • Reworded the "Plugin X is incompatible" message - thank @Jacky720 for this.
    • Removed draw_text_* hooks from the Core.
      • Plugins that need to recreate this behavior should hook the game functions directly - get pointers via GetFunctionByName.
    • Added support for disabling automatic freeing of memory allocated for YYRValue strings (by @TheEternalShine).
    • Allowed plugins to print colored text using the PrintMessage function.
    • Added support for calling the API directly from plugins - if you're getting linker errors, be sure to RMB > Include in Project!
    • Added support for multiple callbacks per plugin, each called only on selected events.
    • Added support for exporting functions (library plugins) - this is done via PmGetExported and PmSetExported routines.
    • Refactored the Plugin Manager.

    Launcher:

    • No changes.

    Plugins:

    • ExamplePlugin:
      • Removed the DR Chapter 2 Debug Enabler, see the new dedicated plugin.
      • Added an actual example plugin, which showcases API functions without being game-specific.
    • Hard Mode:
      • Updated to work with the new Plugin API.
    • Debug Enabler
      • Ported the old ExamplePlugin to the new API.

    Earliest backwards-compatible version:

    • 2.0.0 (as per semver specification)
    Source code(tar.gz)
    Source code(zip)
    DownloadMe.zip(303.66 KB)
    YYToolkit.dll(420.50 KB)
  • v1.4.1(Apr 8, 2022)

  • v1.4.0(Apr 8, 2022)

    Core:

    • Improved error verbosity.
    • Function returns are now displayed properly in the console (aside from arrays).
    • Added unit tests for the global instance being nullptr - this is not severe, and the tool can continue fine without it.

    Launcher:

    • Removed dead code, improved readability.
    • Changed the layout a bit, hopefully makes it easier to use.
    • Added support for injecting into an already running game.
    • Added support for using the latest YYTK commit (default is the latest release).
    • Modified the default download directory to be the game dir, another is %userprofile%.
    • Added support for automatic clean-up of downloaded DLLs.
    • Eliminated potential detection vector of detecting YYTK by the DLL name - togglable in the launcher.
    • Added new icon, thanks Miepee!
    • Fixed the launcher not having an icon on the taskbar.

    Plugins:

    • No changes.

    Earliest backwards-compatible version:

    • 1.2.0
    Source code(tar.gz)
    Source code(zip)
    DownloadMe.zip(249.60 KB)
    YYToolkit.dll(425.50 KB)
  • v1.3.0(Mar 28, 2022)

  • v1.2.1(Mar 25, 2022)

    You don't have to update plugins, this version is fully backwards-compatible! If you're new to YYToolkit, the download files can be found here!

    Core:

    • Localization updates
    • Removed duplicate error logging

    Launcher:

    • No changes.

    Plugins:

    • ExamplePlugin:
      • No changes.
    • Hard Mode:
      • No changes.

    Earliest backwards-compatible version:

    • 1.2.0
    Source code(tar.gz)
    Source code(zip)
    YYToolkit.dll(424.00 KB)
  • v1.2.0(Mar 21, 2022)

    The versioning for YYToolkit has changed!

    Core:

    • Added a PopToastNotification API function. It allows you to use native WinAPI to create and send a toast notification.
    • Added a PopFileOpenDialog API function. It allows you to use native WinAPI to create a "Open File" dialog, and get it's result.
    • Added a plugin version checker - it warns you if you try to load a plugin created for an older version.
      • The version checker also gracefully handles plugins that don't have this support, maintaining backwards compatibility.
    • Removed the debug crash keybind I accidentally left in

    Launcher:

    • No changes.

    Plugins:

    • Added a hidden __PluginGetSDKVersion, which is called when the plugin is mapped. DO NOT MODIFY THIS FUNCTION!
    • Reordered internal elements (this is the thing that breaks backwards compatibility)
    • ExamplePlugin:
      • No changes.
    • Hard Mode:
      • No changes.

    Earliest backwards-compatible version:

    • 1.2.0 (this one)
    Source code(tar.gz)
    Source code(zip)
    DownloadMe.zip(208.80 KB)
    YYToolkit.dll(430.00 KB)
  • v0.1.1(Mar 20, 2022)

    Core:

    • Added Early Launch support
    • Fixed header include loops
    • Removed built-in debug mode
    • Accidentally added a debug keybind to crash YYTK (Down Arrow + Page Down)

    Launcher:

    • Restyled it a bit
    • Added Early Launch support

    Plugins:

    • Added an optional PluginPreload routine, which is used with Early Launch.
    • ExamplePlugin:
      • No changes.
    • Hard Mode:
      • No changes.

    Earliest backwards-compatible version:

    • 0.1-rc1
    Source code(tar.gz)
    Source code(zip)
    DownloadMe.zip(208.74 KB)
    YYToolkit.dll(350.50 KB)
  • v0.1.0(Mar 18, 2022)

    Core:

    • Disabled console quick edit - selection inside the console caused the tool to lock up
    • Removed several unneeded instances
      • This very slightly speeds up load times
    • Fixed self-check result not being printed if the tests failed
    • Added callable virtual methods to YYObjectBase
    • Fixed RValue arrays not inheriting from CInstanceBase
    • Replaced MurMurHash implementation
    • Added lookups to YYObjectBase hashmaps, dunno if they work though
    • Added callable internal methods which allow you to define instance properties
    • Fixed YYObjectBase objects being misaligned

    Launcher:

    • No changes.

    Plugins:

    • ExamplePlugin:
      • No changes.
    • Hard Mode:
      • Removed all savepoints beside one at the Queen's Mansion
      • Updated the plugin to use new API calls
      • Buffed HP of monsters on the SnowGrave route even more
      • Added support for DR 1.10
      • Fixed crashes with savepoints triggered by cutscenes

    Earliest backwards-compatible version:

    • 0.1-rc1
    Source code(tar.gz)
    Source code(zip)
    DownloadMe.zip(207.71 KB)
    YYToolkit.dll(347.50 KB)
  • v0.1-rc2(Mar 15, 2022)

    Core:

    • Fixed GR_Draw_Text functions hooks failing on DR 1.10 (#32)
    • Updated logging, errors are now more verbose
    • Added self-tests, which alert you if any internal YYTK module fails. Please report these!

    Launcher:

    • No changes.

    Plugins:

    • ExamplePlugin:
      • Fixed Debug Mode crashing the game on cutscenes, which means you can play through the game without worrying about errors
      • Re-added anti-dogcheck using a new script spoofing technique
      • Re-added Chapter 1 Debug Mode
      • Added anti-dogcheck functionality to Chapter 1 (where it previously wasn't)

    Earliest backwards-compatible version:

    • 0.1-rc1
    Source code(tar.gz)
    Source code(zip)
    DownloadMe.zip(145.52 KB)
    YYToolkit.dll(347.50 KB)
  • v0.1-rc1(Mar 12, 2022)

    Full changelog:

    Core:

    • Completely remade the API. It's now more error-proof and tries to run even if errors are encountered.
    • Temporarily removed some hook calls for plugins, they will be restored in the next release.
    • The newest runner version breaks script support, will be fixed in the next release.

    Launcher:

    • No changes.

    Plugins:

    • ExamplePlugin:
      • Fixed debug mode not working for the newest DR version (!)
      • Removed anti-dogcheck, as script support is borked.
      • Removed chapter 1 debug, as script support is borked.
    Source code(tar.gz)
    Source code(zip)
    DownloadMe.zip(147.73 KB)
    YYToolkit.dll(335.50 KB)
  • v0.0.7-rc3(Oct 16, 2021)

    I promise this is the final one before the full release!

    Full changelog:

    Core:

    • Changed internal structures to partially support backwards compatibility (only from this release onwards!)
    • Changed the project structure to be cleaner, same with the build folders
    • Strings are now treated with safer functions inside YYRValues
    • Added compatibility fixes from v0.0.7rc-2 to the ResizeBuffers hook
    • Simplified hooking code
    • Added support for directly referring to GML keywords like self and other
    • Fixed what was broken with boolean treating inside YYRValues
    • Updated the console to support direct global variable assignment (eg. global.debug = 1) - thanks Space Core!
      • You can also peek at globals by just typing in their name (eg. global.debug would output 1 if debug is enabled).

    Launcher:

    • No changes.

    Plugins:

    • Added a WIP Chapter 2 Hard Mode plugin
      • Removes the HP gain from saving
      • Makes savepoints less frequent
      • Buffs enemy attacks and HP
      • Makes Snowgrave a lot harder
    • ExamplePlugin:
      • Changed the F3 go-to-room dialog to use the current value of global.currentroom.
    Source code(tar.gz)
    Source code(zip)
    DownloadMe.zip(212.66 KB)
    YYToolkit.dll(336.00 KB)
  • v0.0.7-rc2(Oct 9, 2021)

    Full changelog:

    Core:

    • Added more printable colors
    • Fixed the Core crashing when calling debug-built plugins
    • Fixed booleans being stored wrongly in RValues
    • Fixed a silent crash in older YYC games
    • Expanded the console (F10), now shows return values of functions in the log
    • Added a function for printing colorful text without a trailing newline
    • Fixed fullscreen resizing issues (hopefully closes #23)
    • Completely reworked the code responsible for managing the render target
    • Added yet more members to gAPIVars, to allow easier management of the swapchain from plugins
    • Debug builds are now identified with the first log line printing in green

    Launcher:

    • Removed the "Download source code" option
    • Added buttons for quick access to UndertaleModTool and YYToolkit releases
    • Rephrased warning about develpoment-focused features
    • Added a few unused functions LOL (FIX ME)
    • Addressed a few antivirus detections
      • Windows Defender now doesn't complain when you download it, and neither should your browser.

    Plugin:

    • Fixed a typo in the F3 teleport text
    • Fixed debug not being turned off after unloading the plugin
    Source code(tar.gz)
    Source code(zip)
    DownloadMe.zip(148.07 KB)
    YYToolkit.dll(330.00 KB)
  • v0.0.7-rc1(Oct 3, 2021)

    Full changelog:

    Core:

    • Fixed gAPIVars.RenderView being uninitialized before a ResizeBuffers call.
    • Added gAPIVars fields for the device context for easier access with plugins.
    • Added a console (bound on F10) to execute simple GML function calls with correct syntax.
    • Fixed an infinite loop in the API, causing YYToolkit to silently hang if a function wasn't found. Fixes #14.
    • Added a unified OnTextRender callback, this isn't a hook, and doesn't behave as such!

    Launcher:

    • Updated version number (more updates coming in part 2)

    Plugin:

    • Added a better algorithm to spoofing scripts' return values, now doesn't crash in DR 1.07.
    • Fixed crashes when unloading YYToolkit.
    • Updated SDK to 0.0.7-rc1
    Source code(tar.gz)
    Source code(zip)
    ExamplePlugin.dll(111.50 KB)
    Launcher.exe(167.50 KB)
    YYToolkit.dll(329.00 KB)
  • v0.0.6c(Sep 26, 2021)

  • v0.0.6b(Sep 25, 2021)

    Full changelog:

    Core:

    • Refactored Plugins.hpp, speeds up compilation time
    • Added more D3D11 hook methods for better support with non-NVIDIA GPUs
    • Added WM_CLOSE handling to the WndProc hook, making the game close faster. This behavior is unmodifiable by plugins.

    Launcher:

    • The launcher now remembers the last folder you chose, making it less tedious to select a data.win file from a nearby folder.

    Plugin:

    • Updated SDK to 0.0.6b (plugins should be backwards-compatible with 0.0.6)
    Source code(tar.gz)
    Source code(zip)
    ExamplePlugin.dll(108.50 KB)
    Launcher.exe(167.00 KB)
    YYToolkit.dll(263.00 KB)
  • v0.0.6(Sep 23, 2021)

    Full changelog:

    Core:

    • New plugin detection using PE file parsing, prevents misuse of plugins to load untrusted / non-plugin DLLs (could crash in older versions)
    • Added several core API functions: Global_CallBuiltin, GetScriptArray, GetScriptByName and ScriptExists.
      • Added direct script access
      • Add proper types to the CScript struct
    • Hopefully fixed the DELTARUNE Chapter 2 window disappearing upon injection (#9)

    Launcher:

    • Fixed the launcher crashing on Windows 7 (#11)
    • Added features for loading custom DLLs (right-click on "Launch game with YYToolkit")

    Plugin:

    • Disabled DogCheck, so you can load into inaccessible rooms with save file editing
    • Added a ported "GoToRoom.csx" script - bound on F3, works the same as the UMT counterpart.
    Source code(tar.gz)
    Source code(zip)
    ExamplePlugin.dll(108.50 KB)
    Launcher.exe(167.00 KB)
    YYToolkit.dll(262.50 KB)
  • v0.0.5c(Sep 20, 2021)

  • v0.0.5(Sep 19, 2021)

  • v0.0.4(Sep 18, 2021)

  • v0.0.3(Sep 7, 2021)

  • v0.0.1-alpha(Aug 15, 2021)

Owner
Archie
A game hacker, coding for fun, not for the cheats.
Archie
Combination of various small tweaks/mods for Quake Enhanced

QETweaks A collection of "tweaks" (small mods) for Quake Enhanced multiplayer servers. Enabling tweaks Set saved1 console variable to desired value be

CK 1 Dec 29, 2021
Cytopia is a free, open source retro pixel-art city building game with a big focus on mods.

Cytopia is a free, open source retro pixel-art city building game with a big focus on mods. It utilizes a custom isometric rendering engine based on SDL2.

CytopiaTeam 1.6k Dec 30, 2022
Open-source, cross-platform, C++ game engine for creating 2D/3D games.

GamePlay v3.0.0 GamePlay is an open-source, cross-platform, C++ game framework/engine for creating 2D/3D mobile and desktop games. Website Wiki API De

gameplay3d 3.9k Jan 8, 2023
One framework for creating powerful cross-platform games.

MonoGame One framework for creating powerful cross-platform games. The spiritual successor to XNA with thousands of titles shipped across desktop, mob

MonoGame 9.1k Dec 26, 2022
This is a list of different open-source video games and commercial video games open-source remakes.

This is a list of different open-source video games and commercial video games open-source remakes.

Ivan Bobev 173 Jan 2, 2023
Insomniac games cache simulation tool plugin for UE4

Insomniac Games CacheSim plugin for UE4 This plugin for Unreal Engine 4 lets you use the Insomniac Games Cache Simulation tool to detect cache misses

Toni Rebollo Berná 29 Aug 27, 2022
Creating Unreal Engine infinite landscapes/oceans using the editor shader graph and rendering them using Geometry ClipMap. It also allows to spawn mesh on landscape surface. UE5 required

Procedural Landscapes and Oceans in Unreal Engine 5 using Editor Shader Graph Latest version of this project is available as a plugin for UE 4.26+ on

Maxime Dupart 10 Oct 4, 2021
OGRE is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce games and demos utilising 3D hardware.

OGRE (Object-Oriented Graphics Rendering Engine) is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce games and demos utilising 3D hardware. The class library abstracts all the details of using the underlying system libraries like Direct3D and OpenGL and provides an interface based on world objects and other intuitive classes.

null 3.1k Jan 3, 2023
A multi core friendly rigid body physics and collision detection library suitable for games and VR applications.

Jolt Physics Library A multi core friendly rigid body physics and collision detection library suitable for games and VR applications. A YouTube video

null 2.5k Dec 31, 2022
Distributed server for social and realtime games and apps.

Distributed server for social and realtime games and apps. Features Users - Register/login new users via social networks, email, or device ID. Storage

Heroic Labs 6.6k Jan 1, 2023
3D games console based on RP2040 and iCE40 UP5k

PicoStation 3D This is an unfinished, untested project to develop a 3D games console based on an RP2040 microcontroller and an iCE40 UP5k FPGA. Quick

Luke Wren 37 Sep 12, 2022
A set of libraries and tools to make MSX games using the C programming language.

ubox MSX lib This is a set of libraries and tools to make MSX games using the C programming language. There are three main components: ubox: thin wrap

Juan J. Martínez 42 May 30, 2022
TIC-80 is a fantasy computer for making, playing and sharing tiny games.

TIC-80 is a fantasy computer for making, playing and sharing tiny games.

Vadim Grigoruk 3.8k Jan 4, 2023
Enfusion Artifical Intelligence for DayZ and future Bohemia Interactive games.

Enfusion AI Project (eAI) This mod adds headless player units under the control of a script on the server. Although the script is very rudimentary now

William Bowers 61 Nov 26, 2022
Game engine behind Sea Dogs, Pirates of the Caribbean and Age of Pirates games.

Game engine behind Sea Dogs, Pirates of the Caribbean and Age of Pirates games.

Storm Devs 693 Dec 29, 2022
Project DELTA - An open-source trainer built on the Void Engine for Toby Fox's games and their spin-offs.

Project DELTA v3 Project DELTA - An open-source, modular mod menu for Toby Fox's games and their spin-offs. Important note to Grossley: Yes, it is out

Archie 8 Oct 15, 2022
Graphical improvements mod for Hyperdimension Neptunia Re;Birth1, Re;Birth2 and Re;Birth3 games.

Neptastic Mod Graphical improvements mod for Hyperdimension Neptunia Re;Birth1, Re;Birth2 and Re;Birth3 games. Features: Resolution upscaling and down

tlaik 35 Nov 7, 2022
Dragon's Dice Roller aims to be a lightweight, simple, reliable and easy-to-use dice roller for RPG games.

Dragon's Dice Roller is the first and (so far the only) open source RPG dice roller written in C available on GitHub. It aims to be a lightweight, simple, reliable and easy-to-use dice roller for any kind of role-playing game.

Michael Kolesidis 10 Apr 22, 2022
GRawInput is a modification for games "Gothic" and "Gothic 2"

GRawInput GRawInput is a modification for games "Gothic" and "Gothic 2" that change old deprecated DirectX7 Direct Input Keyboard and Mouse interface

Jakub 7 Nov 21, 2022