Donut Team is a labor of love, built and maintained by a small group of passionate developers. We invest our own time and resources to offer our tools, mods, and web services completely free of charge.

We don't run ads, and we will never sell your data - period.

If you've enjoyed anything we've created, please consider supporting our work with a one-time or monthly donation via our Ko-fi page . Every contribution helps us continue building great experiences for the community.

Dismiss
  • Modding Tools
  • Lucas' Simpsons Hit & Run Mod Launcher
  • Hacks
  • Always Enabled Hacks

Hack Support

Available since Version 1.2.

This hack is always enabled when using the Mod Launcher.

This hack can be required by a mod to be configured.

This hack manages and co-ordinates all other hacks, provides shared patches/functionality to hacks, loads mods and provides the underlying virtual file system used by Mods and Hacks.

While Hack Support provides shared patches to other hacks, it only patches the game with the ones that are necessary for the loaded hacks as of Version 1.22.

Features

These are features and changes provided by this hack.

  • Adds various debug pages to Debug Text if it's enabled.
  • Changes the game's file not found message to show a path and a retry button instead of just a file name.
    • This can be opted out of through a couple different means:
      • As of version 1.23, you can use the -nohandlefilenotfound command line argument.
      • Enabling Debug Test and then enabling its No Handle File Not Found setting on the Miscellaneous page of its Mod Settings.
  • Changes the title of the games window and the icon based on enabled mods.
    • The icon is changed to that of the current Main mod (if it has an icon) or if to the icon of a mod with an Edition specified (if there's no Main mod with an icon).
    • The title is prefixed with the title of the current Main mod (unless it also specifies an Edition).
    • The title is suffixed with an Edition in brackets if there's a mod enabled with one specified.
  • Makes messages shown by the game and hacks support visual styles (if enabled on the game tab of the launcher's settings).
  • Makes the game DPI Aware (if enabled on the game tab of the launcher's settings).
  • Makes the game show a message on startup if there are no audio devices or the Windows Audio service is not running instead of crashing.
  • Makes the game show an assertion failed dialog if the loaded save file has more rewards unlocked than are defined in the rewards file instead of the game crashing.
    • You can use the "Ignore" button to continue the game. Saving the game after doing so will cause the fact that the reward was unlocked to disappear from your save data.
  • Makes the game get terminated if it takes more than 1 second to exit.
    • This is to stop the game from hanging in the background indefinitely hogging CPU which sometimes happens in this game.
    • This will show an assertion failed message if you're using the -testing command line argument.
  • Makes the game reload car camera data when a car gets loaded (such as when calling it from the phone booth).
    • The game normally loads this data again but throws it away instead of keeping the new data.
    • This can be opted out of through a couple different means:
      • As of version 1.23, you can use the -noreloadcarcameradata command line argument.
      • Enabling Debug Test and then enabling its "No Reload Car Camera Data" setting on the "Vehicles" page of its Mod Settings.
  • Saves crash dumps when the game crashes (if enabled on the game tab of the launcher's settings).
  • Terminates the game when it crashes (if enabled on the game tab of the launcher's settings).
  • Shows a message when the game crashes (if enabled on the game tab of the launcher's settings).

Requiring This Hack

To require this hack, add this line to your mod's Meta.ini:

RequiredHack=HackSupport

Your mod must provide a configuration file when requiring this hack.

Configuring This Hack

To configure this hack, create a file named HackSupport.ini and add the parameters necessary for your mod inside it.

NOTE: Despite this hack always being enabled, a mod must explicitly require it to configure it.

; [Miscellaneous] Section
	; OverrideTexture: Specify a texture name that will be forced for every non-animated shader.
	
[Miscellaneous]
OverrideTexture=Texture.png

Command Line Arguments

This hack is affected by certain Command Line Arguments for the Mod Launcher.

Debug Text Mode

This hack registers several debug modes for the Debug Text hack when used alongside it.

Version History

This hack changes in practically every version of the Mod Launcher to accommodate other hacks so only some specific changes are listed here.

Version 1.27

  • Improved handling of hacks attempting to delay load already loaded hacks.
  • Fixed a potential crash related to uninitializing global ped stuff in Multiplayer.
  • Added support for non-exclusive keybinds.

Version 1.26

Fixed an issue where the ExitProcess hook wasn't included in the count of hacks installed by Hack Support on this hack's Debug Text page.

Version 1.25.1

Fixed a crash and/or asserts (when using the -testing command line argument) in the game that occured when it reset its device while minimised in windowed mode.

This could happen in various cases such as when pressing Ctrl+Alt+Delete (on Windows XP if the Welcome Screen is disabled or on Windows Vista or newer), getting a User Account Control prompt that dims the screen, updating your graphics driver or hibernating the computer.

Version 1.24

  • Improved handling of saved games with purchased cars and/or skins at indices that are not bound in the current rewards file with a very informative message.
  • Made the "hack events" Debug Text page (available when using the -testing command line argument) show the top 18 internal hack events in addition to the information it already showed.
  • Changed part of the error message shown when no audio device is connected from "Please connect an audio output device or install a virtual audio device (such as VB-Audio Virtual Cable) and launch the game again." to "You can enable the No Audio mod hack to allow the game to run without an audio output device or connect one and launch the game again.".
  • Made it so Buffer overruns (and possibly other error messages from the game's instance of the Microsoft Visual C++ Runtime) save crash dumps.
    • These types of crash also now have more modern looking dialogs.
    • Due to the nature of buffer overrun detection (including the fact that it is detection for corruption that has already occured but shouldn't have had a chance to do anything dangerous (in terms of security, not stability)), it may not always be feasible to get much information from these crash dumps.
    • Also added the -nohandlecrtmessagebox command line argument to opt out of this.
  • Made creating an additional swap chain (when the Resizable Window mod hack is enabled and not using the -noadditionalswapchain command line argument or when using the -additionalswapchain command line argument) terminate the game if the device window handle (hDeviceWindow) is invalid according to IsWindow.
    • This is done after an assert when using the -testing command line argument.
    • This is to prevent asserts when closing the game window before the game loads simpsons.ini.
  • Made CreateAdditionalSwapChain failing when creating an additional swap chain only assert when using the -testing command line argument.
  • Made failing to create an additional swap chain fall back to not using an additional swap chain.
    • This also disables further attempts to use an additional swap chain.
    • This is the same behaviour as using the -noadditionalswapchain argument.

Version 1.23.10

  • Made the game use an additional swap chain when using the Resizable Window hack in windowed mode to make resizing smoother.
    • Also added the -noadditionalswapchain command line argument to opt out of this.
    • Also added the -additionalswapchain command line argument to force this when the Resizable Window hack is not enabled.
      • This should technically make changing the resolution with the in-game menus slightly faster.
  • Made the hack prevent the game from redundantly presenting (presenting after a previous present or a device reset/swap chain recreation and before beginning a scene) to reduce/prevent flickering when resizing.
    • Also added the -noblockredundantpresent command line argument to opt out of this.
  • Fixed an issue where the game window would be redrawn when resizing when the Resizable Window hack was enabled and its Present While Resizing setting was ticked if the game window's icon was being changed to that of a main/edition mod.
  • Fixed an issue where all created vertex shaders would be leaked when blocking a redundant Direct3D device reset.
  • Fixed an issue where .. wasn't handled in file paths since Version 1.10 when using the Legacy Virtual File System (via -legacyfilesystem as of Version 1.22).
    • This fixes an issue where mods may have been able to access files outside of directories mounted within the Virtual File System.

Version 1.23.9

Added the -debuglookupstring command line argument. This makes this hack output to the console every time the game tries looking up a text string.

Version 1.23.8

  • Added -debugstagechange. This outputs information to the console when you change stages in a mission.
  • Made asserts (when not using -msvcasserts) log to the log file (when "Logging" is enabled in the "Console and Logging" hack).
  • Made crash/exception messages log to the log file (when "Logging" is enabled in the "Console and Logging" hack).

Version 1.23.6

  • Added custom assert messages that provide more information and save a crash dump.
    • Also added -msvcasserts to opt out of this entirely, instead using the old MSVC style asserts.
    • Also added -noassertdump to opt out of the crash dump specifically.
  • Added a "keybinds" debug text mode.
    • This shows all keybinds registered by hacks and their bindings as well as whether or not they're currently pressed or being ignored.
  • Added the -debugkeybinds command line argument. This makes it so this hack will print information about when keybinds are pressed, released and ignored to the console.
  • Added the -nolegacykeys command line argument. This disables legacy keybinds.
    • All hacks except Debug Test use a new keybinds system added in Version 1.22 that is not affected by this argument.
      • These are the ones shown on the new Debug Text page.
    • Debug Test still uses legacy keybinds for most of its functionality so it will get affected by this.
  • Made it so the "hacks" debug text mode is available when not using the -testing command line argument.
    • By default, it only shows which hacks are loaded. The counts for how many times the various hacks have patched the game still require -testing.

Version 1.23.5

Made crashes in the hack window procedure event save a crash dump before terminating the game.

Version 1.23.2

  • Fixed a bug introduced in Version 1.23 where hacks were not notified when the Direct3D device was lost.
    • This caused a crash when resetting the device (such as when changing the game's resolution) while saving screenshots or after the Lens Flare had been on screen.
      • There may have also been other crashes as a result of this issue.
  • Made the crash message include (C++ exception) or (integer division by zero) after the code if it's one of those types of exceptions.
    • If it's a C++ exception, it also shows the type name, value (if it's a long integer) and the result of what (if it's an std::exception).
  • Made using the -breakgame and -suspend command line arguments together cause the message from -suspend to get shown by the Mod Launcher before resuming the injection thread (instead of being shown from inside the game process).
    • This also prevents the breakpoint from -breakgame from happening if there's a debugger attached to the game.

Version 1.23

  • Added the -hookd3d command line argument.
  • Added the -nohandlefilenotfound command line argument.
  • Added the -nohardwareskinning and -hardwareskinning command line arguments.
  • Added the -noreloadcarcameradata command line argument.
  • Fixed an issue where the Direct3D hook in this hack caused the game to reset the Direct3D device redundantly once at startup.
  • Made this hack block the game from resetting the Direct3D device when it's not necessary.
    • Also added the -noblockredundantreset command line argument to opt out of this.
  • Made the game terminate abruptly with no message or crash dump in the case that an exception occurs in the hack window procedure event (instead of letting Windows swallow the exception and likely cause corruption).

Version 1.22.4

Added the -breakgame command line argument. This break points the game as soon as possible after Hack Support is loaded.

Version 1.22.3

  • Made it so certain types of crash (access violation, breakpoint and invalid instruction) show the type in the crash message.
    • Access violations also show if it was attempting to read or write as well as the address attempting to be read or written to.

Version 1.22.1

  • Added a -noresourcemeta command line argument. This disables this hack reading information out of the Meta files for Mods and Hacks.
  • Increased the maximum length of property values in INI files from 511 characters to 32767 characters.

Version 1.22

  • Added a new "mods" page when Debug Text is enabled. This page lists all mods and mod hacks that are enabled.
  • Added a -nounrequesthackevents command line argument. This makes it so hacks do not unrequest hack events they're not using after the first time they're told about them resulting in reduced efficency.
  • Added a -nohookd3d command line argument. This disables the Mod Launcher hooking D3D and breaks functionality of numerous hacks. Fun!
  • Added new "hacks", "shared hacks" and "hack events" pages that show up in Debug Text when using the -testing command line argument.
  • Made the -suspend command line argument show its message earlier.
  • Made the -testing command line argument show an assert if the game gets terminated because it took more than 1 second to exit.
  • Made it so this hack only installs shared patches when they are necessary.
    • Also added "-installallsharedhacks". This makes all shared patches get installed regardless of whether or not they're actually in use.
  • Made this hack show an assert if it tries to patch the game, call game code or read/write variables if there is no address for the current game version.
    • In the case of patches, the patch is also not applied. Otherwise, the game will probably crash after the assert.
    • This should never happen, probably.
    • Anyways, you can use -ignoremissingaddresses to disable this assert.

Version 1.17

Made some debug asserts display more helpful error messages.

Version 1.16

Made it take the game out of fullscreen when showing message windows.

Version 1.15

  • Fixed issues with making the game DPI aware.
  • Now adds the title of the current main mod to the Game window title if one is enabled.

Version 1.13

Made the game support DPIs other than 96.

Version 1.12

Fixed a bug where a message saying The game was terminated while Hack Support was initialising. would appear if the game's CD check failed.