Main Branch
Changelog
Launcher
Localisation
This version adds a couple new language strings related to new mod features.
A new template language (Template_1.23.9.xml) was published on this page including these new strings at the end of the file.
Configurations
Fixed a critical flaw in the program where the Manage Configurations window mistakingly had an ellipsis on the end of its title.
Mod Features
Added a [MultipleChoiceSettingOptions] section that can be referenced with the new Options property in a [Setting] section.
This can be used to define a series of titles and values for more refined and user friendly MultipleChoice settings.
Hacks
Hack Support
Added the -debuglookupstring command line argument. This makes this hack output to the console every time the game tries looking up a text string.
Custom Files
- Improved efficency of the
OutputLua function for path handlers, particularly when calling it multiple times.- Also added a
-legacyoutputcommand line argument to opt out of this change. - Also added the
IsLegacyOutputLua function to detect if that argument is in use.
- Also added a
Custom Interior Support
Made ResetAmbientCharacter show an assert dialog and do nothing if the specified character does not exist instead of crashing the game.
Debug Checks
Removed the "Experimental" title from the "Missing Detection > Composite Drawable" setting.
Frame Limiter
Removed the "Experimental" title from the "Load Files While Waiting" setting.
Load Manager Thread Coordination
Made -radloadmanagerthreadcoordinationimposeframelimit and -radloadmanagermultiplecallbacks cause the hack to be loaded even if it isn't enabled in the mods list or required by another hack.
Rebindable Menu Gamepad Inputs
Added this new hack.
This hack allows you to rebind the controller inputs used for the Accept and Back actions in menus.
It also allows you to optionally pause the game with the Back button(s).
XInput
- Fixed a bug when "Independent Inputs > D-Pad Buttons" was enabled where players 2-4 could control menus with their D-Pads.
- Made the hack only tell the game about XInput devices when they're connected.
- Also added the
-noxinputignoredisconnected,-noxinputmaintainorder,-noxinputremoveand-noxinputaddcommand line arguments to opt out of various components of this change.
- Also added the
Changelog
Launcher
Localisation
This version adds a couple new language strings related to improved Lua errors.
A new template language (Template_1.23.8.xml) was published on this page including these new strings at the end of the file.
Hacks
Hack Support
- 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).
Additional Script Functionality
- Made it so this hack actually knows the previous or next stage when starting or ending a stage respectively.
- In previous versions, the hack just guessed the previous or next stage by subtracting or adding one to the current stage index.
- The old logic could cause issues in certain cases such as bombbarrel (nuclear waste) stages that can send you back multiple stages.
- Fixed a bug where calling
SetPedsEnabledalongsideStreetRacePropsLoadwould cause pedestrians to become disabled after the mission ends until another mission puts it back.
Custom Files
- Made it so the start of Lua file names are truncated instead of the end.
- Also added
-notruncateluafilenamestartto opt out of this change.
- Also added
- Made various improvements to Lua execution errors.
- They now include the title of the mod that executed the script.
- They now include a stack trace.
- Also added
-noluastacktraceto opt out of this addition.
- Also added
- They now get logged to the log files (when "Logging" is enabled in the "Console and Logging" hack).
- Made various improvements to Lua load errors.
- They now include the title of the mod that loaded the script.
- They now get logged to the log files (when "Logging" is enabled in the "Console and Logging" hack).
Custom Text
Added support for defining variables and using them in text strings.
Discord Rich Presence
- Added the
-nodiscordrichpresencecommand line argument. - Made the Bonus Mission, Street Race and Wager Race titles configurable by mods.
Changelog
Launcher
Mods List
Fixed a crash when reloading individual mods.
Launcher Settings
Made it so opening this window does not make the Mod Launcher load all the hacks again. Also added -settingsloadhacks to opt out of this change.
Changelog
Hacks
Hack Support
- Added custom assert messages that provide more information and save a crash dump.
- Also added
-msvcassertsto opt out of this entirely, instead using the old MSVC style asserts. - Also added
-noassertdumpto opt out of the crash dump specifically.
- Also added
- 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
-debugkeybindscommand line argument. This makes it so this hack will print information about when keybinds are pressed, released and ignored to the console. - Added the
-nolegacykeyscommand 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.
- All hacks except Debug Test use a new keybinds system added in Version 1.22 that is not affected by this argument.
- Made it so the "hacks" debug text mode is available when not using the
-testingcommand 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.
Bug Fixes
Added "Vehicles > Phone Booth Camera Pan Active Camera Change".
This fixes a bug related to pressing the in-car change camera button during the phonebooth's camera pan. Without this bug fix, doing so will cancel the camera and switch your camera to the mouse controlled camera until the game changes your camera again (such as when getting in a car). If you use mission select to select a mission without getting in a car, you will be able to skip the next mission start camera.
We also added a FixRelativeAnimatedCamCameraChange property to the [Camera] section of BugFixes.ini to opt in to this.
This bug fix exists as a result of research done by aldelaro5.
Console and Logging
- Made it so the hack will create multiple logs if its unable to write to the log file instead of showing an error message and not logging.
- In these cases, the hack will just stick a number on the end of the file name like "Log (2).txt".
- Fixed a crash when failing to open the log file with "Append" ticked.
- Fixed a crash when suppressing RCF files and asyncronous file load requests using Custom Files with this hack enabled and "Include > Hacks" ticked.
Custom Trigger Actions
- Added a
CompletedMissiontype for[Condition]sections.- This allows you to check whether or not a particular story mission, street race or bonus mission has been completed.
- Added a debug text mode that shows all registered conditions and whether or not they're currently met.
Custom Vertex Shader Support
Fixed an issue where UVs were wrong on Old Primitive Groups that had a colour list when using the "spheremap" PDDI shader provided by the Sphere Maps hack and the "refract" PDDI shader provided by the Refraction Shader Support hack.
Debug Checks
- Added a null-check of the car to the get position and get move speed functions of vehicle positional sound players with a new assert.
- In other words, this assert can appear after the game tries and fails to play vehicle sounds.
- Also added the
-novehiclepositionalsoundplayercarnullcheckassertscommand line argument to suppress the assert and allow the game to try to continue.
No Busted Hit & Run Meter Reset
This makes it so the Hit & Run meter will not reset and the music will not end when you get busted by the police.
This hack expects the mod to actually set the decay to 0 alongside requiring it.
No Hit & Run Music
Added this new setting and mod requirable hack. This disables the special music used during Hit & Runs.
NVIDIA Highlights
Added a -nocrashhighlight command line argument that completely disables the type of highlight used when the game crashes.
Changelog
Launcher
Mods List
- Made holding the Shift key when right clicking on one or more mods cause the
OutputPathproperty in their[Compile]section(s) to be ignored.- This results in an ellipsis on the "Compile" button and also forces a browse dialog to ask you where to compile the mod(s) to.
Launcher Settings
- Made it so settings that are not set to their default values are shown in bold.
- Made it so you can reset settings by right clicking them and clicking "Reset".
- You can also right click on groups or the entire page (only the background, not the tab) to reset them as well.
Mod Features
- Added support for minifying XML files when compiling mods.
- This defaults to enabled for non-decompilable mods.
- Also added the
MinifyXMLsproperty to the[Compile]section to opt in or out of this.
Hacks
Hack Support
Made crashes in the hack window procedure event save a crash dump before terminating the game.
Additional Script Functionality
Added the SetCollectibleSoundEffect command to set the sound effect used when picking up a collectible in delivery, dump or race objectives.
Cheat Keys
- Made Shift+F4 to spawn a car not work when getting into a car.
- Made Shift+F4 to spawn a car not work during a forced car mission.
- Added
-forceallowcheatkeysto opt out of the above two changes as well as a bunch of other safety checks including those added in Version 1.15.
Console and Logging
- Added settings to include timestamps in the console and/or in log files.
- Added a setting to include categories (
[GAME],[MOD]or[HACK]) in the console and log files.
Custom Traffic Support
Fixed a bug where parked car models didn't seem to get added if AllocatedCars was set to anything other than 5.
Hover Car Refraction
Added a description to this hack.
Resizable Window
Made it so crashes in the resizing timer callback save a crash dump before terminating the game.
Sphere Maps
Added a description to this hack.
Changelog
Highlights
Two new mod hacks that reintroduce features from the console versions of the game:
- Hover Car Refraction
- Sphere Maps
Launcher
General
- Added a check for if you have Service Pack 3 installed when using Windows XP.
- Also added the
-forcexpsp3check,-noxpsp3checkand-spoofxpsp3checkcommand line arguments.
- Also added the
- Added the
-ignoreloaderrorscommand line argument. This makes the Mod Launcher ignore errors when loading mods and hacks.
Main Window
Fixed an issue where the update link still left a gap for the Account button when Donut Team Account Integration was disabled.
Localisation
This version adds a couple new language strings related to the new Service Pack 3 check on Windows XP.
A new template language (Template_1.23.4.xml) was published on this page including these new strings at the end of the file.
Hacks
Additional Script Functionality
- Fixed a crash when cancelling a mission or failing a mission and choosing "no" when the player is inside some types of disabled triggers.
- Made it so this hack does not assert if a locator is missing if Missing Locator Detection is enabled in Debug Checks.
Bug Fixes
Made FixZoneLoadOnExitCrash also fix a crash when proceeding to another level from a mission that loads a zone when it ends (via StreetRacePropsUnload).
Custom Limits
Added a [Scripting] section with a new ArgumentLengthLimit limit.
Custom Vertex Shader Support
Added this new advanced hack.
Debug Checks
Made the Missing Locator Detection show human readable text for locators that are missing for Additional Script Functionality commands.
Debug Text
"position" Page
Made this page show all action buttons the player is in with "(main)" after the main one (the one you can interact with) instead of just showing the main one.
Hover Car Refraction
Added this new Setting mod hack. This reimplements the refraction effect for Professor Frink's Hover Car from the console versions of the game. This reimplementation is based on the Xbox version.
Lens Flare
Removed an assert when failing to create the occlusion query when using -testing.
Override Shader Parameters
- Added support for Vector parameters.
- Added support for the ROTV, REFI, REFB and REFC parameters.
Refraction Shader Support
Added this new advanced hack. This reimplements the refract PDDI shader type from the console versions of the game.
Sphere Maps
Added this new Setting mod hack. This improves reflections on cars by reimplementing the spheremap PDDI shader type from the console versions of the game. This reimplementation is based on the Xbox version.
By default, all spheremap shaders are remapped to be environment shaders on PC and this hack undoes that.
Changelog
Launcher
Localisation
This version adds a couple new language strings related to updates for the "Console" hack.
A new template language (Template_1.23.3.xml) was published on this page including these new strings at the end of the file.
Mod Features
Increased the maximum length of the Name property of [Setting] sections from 63 to 127 characters.
Hacks
Bug Fixes
Added "Physics > Baby Van Tilt". This fixes a famous bug that most notably causes the baby van in Level 5 Mission 3 to be tilted and have incorrect physics.
This bug as well as this fix both apply to other cars as well though it appears most prominently on this one so it's named after it.
We also added a FixUninitialisedArticulatedPhysicsObjectCloneRelativeCentreOfMassAndInertiaMatrixUpdateInterval property to the [Physics] section of BugFixes.ini so mods can opt into this bug fix. The name is very literal.
This bug fix exists as a result of extensive research done by aldelaro5. He also made an in depth video explaining the bug which can be found here if you're interested.
Console
- Added support for logging to a file.
- Also renamed this hack to "Console and Logging" and updated its description to coincide with this addition.
- Made whether or not the console is enabled based on a setting inside the hack instead of whether or not the hack is enabled.
- Defaults to enabled.
- This is also to conincide with the new logging feature as they can be enabled independently of one another.
- Made it so this hack now controls console output from libpng so it can be affected by the "Include > Game" setting and included in logs.
Debug Checks
Fixed a null pointer deference when using the "MUTE" command line argument (enabled by the included "No Audio" mod) that could cause a crash in some cases (observed on Windows XP).
Debug Text
"AI cars" Page
Added this page.
"car physics objects" Page
Added this page.
"fences" Page
Fixed an issue introduced in 1.23.2 where switching to this page made the game render one-sided faces as two-sided.
Frame Limiter
Fixed an issue where mission loading screens (used when selecting a mission or starting one) were considered menus instead of loading screens.
Changelog
Launcher
General
- Made it so Windows messages about the game process failing to start will get shown (such as when a DLL is missing).
- Made it so the message from the
-debuglaunchcommand line argument will no longer show up a second time if mods or hacks change in such a way that the Mod Launcher reloads all mods and hacks before starting the game.
Mods List
- Fixed an issue where mods that were enabled by default and then disabled by the user would become enabled again when unticking "Defaults" for the configuration or when they're no longer enabled by default (which can happen when they're updated).
- Fixed an issue where mods that were hidden by default then unhidden by the user would become hidden again when they're no longer set to be hidden by default (which can happen when they're updated).
- Made it so ticking a mod that conflicts with multiple enabled mods will show a message for each conflicting mod.
- Made it so the
-nounreleasedcommand line argument doesn't prevent the warning message shown when compiling mods that are marked as unreleased.
Mod Settings
Fixed an issue where these windows allowed enough space for the widest label next to the widest input control even if they were in different groups.
Localisation
This version adds a few new language strings.
A new template language (Template_1.23.2.xml) was published on this page including these new strings at the end of the file.
Mod Features
- Added the
PublicTestingproperty to the[Miscellaneous]section. This is intended for mods that are public but are not a proper release.- Currently, this property is exactly the same as
Unreleasedexcept there will not be a warning when compiling the mod with this property enabled. - This property overrides
Unreleasedif they're both enabled. This allows mods that target older Mod Launcher versions to be backwards compatibile by enabling both.
- Currently, this property is exactly the same as
- Made it so the
CommandLineproperty in the[Miscellaneous]section can be repeated to specify command line arguments for the game on multiple lines.
Mods
No Audio
Added this mod.
Hacks
Hack Support
- 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.
- 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.
- 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
-breakgameand-suspendcommand line arguments together cause the message from-suspendto 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.
Aspect Ratio Support
Fixed a bug where the aspect ratio was updated (and calculated when "Automatic Aspect Ratio" was enabled) every time it was needed instead of only when the resolution changed.
Custom Controller Support
- Fixed a bug where Rumble did not work properly (which affects controllers when using the XInput hack since it uses this hack).
- Made connecting a controller flag its output values as having changed (causing the XInput hack to call XInputSetState).
Debug Text
General
- Added a "keyboards" page, a "mice" page and a "steering wheels" page to a new "controllers" group.
- Moved the "gamepads" page to the new "controllers" group.
"fences" Page
Fixed a bug where this page didn't set the cull mode before rendering the fences (causing the fences to only be visible from one side in some cases).
"mission" Page
Fixed a crash when a stage condition is null (which will crash the game when reaching the stage).
"music" Page
Fixed a crash when using the game's "MUTE" command line argument (which is enabled by the new No Audio mod).
Direct3D 9
- Made this hack requirable by other hacks.
- Made unimplemented functions show a message saying they're not implemented with the the name (signature) of the function. These messages have an OK button to attempt to continue as well as a Close button to terminate the game.
- This is instead of the generic assert they showed before.
Frame Limiter
Added the experimental "Load Files While Waiting" setting. This makes it so files can be loaded while the game is waiting for the next frame.
Lens Flare
Made the locking of the render targets (only used when not using Direct3D 9) read only.
Load Manager Thread Coordination
Added this new advanced hack.
Modern Resolution Support
- Added the
-noenumresolutionscommand line argument. This stops the Mod Launcher and the hack from getting resolutions from your graphics card. - Fixed an issue when your graphics card reports 5 resolutions or less where the ingame resolution picker would have invalid resolutions and there would be asserts when the game loaded a frontend file containing one when using the -testing command line argument.
No Renderer
Added this awesome new setting hack. It's hidden by default.
Changelog
Launcher
Mod Settings
Fixed an issue where not enough space was allowed for bold tick box settings if they were not bold when you open a Mod Settings window.
Hacks
General
Fixed a conflict between Additional Script Functionality and Debug Test when the "Menus > Pause Menu > Pause Always Allowed" setting was enabled.
This message would show the conflict as being between Debug Test and Hack Support because it was caused by Additional Script Functionality being enabled and requesting functionality from the latter.
Debug Text
Added a new "gamepads" debug mode.
Direct3D 9
Removed an assert message that would show up twice on exit when using ReShade and the -testing command line argument.
XInput
- Added a "Button Names" setting with 3 options: DirectInput, Xbox 360 and Xbox One. This affects what names are used in the game's menus.
- DirectInput button names: These are what the original game uses and how it was in the previous version (except for the guide button which now shows as "J Button 10" instead of "J Guide").
- Xbox 360 button names: These are like that of an Xbox 360 controller. This is now enabled by default.
- Xbox One button names: These are the same as Xbox 360 with "Back" and "Start" instead named "View" and "Menu" respectively.
- Added a "Default Controls" setting with 2 options: PC and Xbox. This affects what your secondary controls are remapped to when using the game's "Restore All Defaults" option or when starting the game without any settings.
- PC controls: The PC version's original default controller mapping.
- Xbox controls: The Xbox version's controller mapping. This is now enabled by default.
- Added two new settings to allow you to use both triggers simultaneously and multiple D-pad buttons simultaneously. These are both enabled by default.
- Added a
-noxinputcommand line argument. This makes it so the hack does not make the game use XInput. Despite this seeming counter-intuitive, it would still allow the other features of the hack to work while Windows' XInput-to-DirectInput backwards compatibility handles inputs. - Added a
-noxinputdisablecommand line argument. This makes it so XInput does not get disabled when the window is defocused. - Fixed an inconsistency with the function used when XInputEnable is not available or when using the
-noxinputenablecommand line argument. - Fixed an issue where the Y (vertical) axis of the right stick was inverted.
- This fix will require you to manually fix your control bindings.
Changelog
Launcher
General
- Added the
-uppercasetextand-lowercasetextcommand line arguments. These make all the localisable text in the Mod Launcher and messages it shows upper or lower case respectively. - Made it so file/folder browse dialogues fall back to Windows XP style versions in the event the Mod Launcher or .NET fail to create Windows Vista style dialogues.
- This resolves an issue where this happened on Windows 10 1809 when using a High Contrast theme.
- This was also able to happen on Windows 7 with "Disable visual themes" ticked in the executable's compatibility settings.
Mods List
- Added a "Non-enabled Favourites" category.
- Added a "Descriptionless Hacks" category when using the
-testingcommand line argument. - Added the existing shortcut keys to the right click menu items for "Search...", "Pages" and "Reload".
Launcher Settings
Fixed an issue where "Copy Require Line" was disabled in the right click menu of "Hack Support" on the "Non-mod Hacks" page (which is only visible with "Show Advanced Hacks" ticked).
Account Integration
Added the -nodtcomms command line argument. This disables Donut Team Account Integration.
Localisation
There are some fixes and improvements to localisation in this version as well as new strings.
- Fixed an issue where the "Jump List" tickbox on the "Manage Configurations..." window did not correctly handle being repositioned/resized with language localisation.
- Made non-ingame messages from the Custom Files, Custom Save Data, Debug Test and Screenshots hacks support language localisation.
A new template language (Template_1.23.xml) was published on this page including all the new strings.
Hacks
General
Added descriptions to the following hacks:
- Anti-aliasing
- Cancellable Initial Walk
- Dynamic Tree Node Entity Limits
- Force Mission Select Level Reload
- Lens Flare
- Letterbox
- Mirror Mode
- No Cursor Until Mouse Move
- No Go To Objective Camera Focus
- No Mute on Defocus
- No Pause on Defocus
- No Suppressed Drivers
- One Tap Player Car Death
- Skip Main Menu
- Skippable Start Cameras
- Starting Coins
Updated the descriptions of the following hacks:
- Discord Rich Presence
- Frame Limiter
- HUD Map Ignore Player Height
- NVIDIA Highlights
- No Cheats
- No Fast Car Reset
- No Introduction Movies
- No Jump Limit
- No Mission Start Cameras
- Replayable Bonus Missions
Made it so the following hacks can no longer be required by mods:
- Ambient Car Support
- Aspect Ratio Support
- Custom Audio Format Support
- Custom Main Menu Items
- Custom Save Data
- Interprocess Communication
- Lua Support
- Road Names
Attempting to require these hacks in a mod that doesn't have a RequiredLauncher specified or has RequiredLauncher set to a version lower than 1.23 will be ignored for backwards compatibility reasons.
Hack Support
- Added the
-hookd3dcommand line argument. - Added the
-nohandlefilenotfoundcommand line argument. - Added the
-nohardwareskinningand-hardwareskinningcommand line arguments. - Added the
-noreloadcarcameradatacommand 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 nessecary.
Also added the
-noblockredundantresetcommand 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).
Custom Controller Support
Added this new advanced hack that other hacks can use to extend the game's controller support.
Direct3D 9
Added this new hack that makes the game use Direct3D 9 instead of Direct3D 8.
This may be helpful when trying to use 3rd party tools such as ReShade.
Lens Flare
- Made this hack work differently (using an occlusion query instead of a lockable render target) when using Direct3D 9.
- Also added a
-noocclusioncommand line argument to opt out of this. - Also added a
-occlusionsleepcommand line argument.
- Also added a
No Cursor Until Mouse Move
Made this hack only show the cursor if it moves more than 5 pixels on either axis. This tolerance is customisable in the hack's settings (0 meaning any movement and -1 meaning the old behaviour where it will show up any time the window receives a mouse move event even if the cursor's position doesn't change).
Resizable Window
- Added the
-nomaintainwindowcentrecommand line argument. This prevents this hack from trying to maintain the centre point of the game window when the game resizes it. - Made the game terminate abruptly with no message or crash dump in the case that an exception occurs in the resizing timer callback (instead of letting Windows swallow the exception and likely cause corruption).
- Made this hack check if the game window is currently maximised instead of checking if the "Start Maximised" setting is ticked before suppressing the changing of the resolution when the game loads its settings.
- Made this hack update the game's unmaximised size and position if the game is maximised when it loads its settings.
- Made this hack force the game window to fit within the working area of the screen it's on when maintaining the window centre when the game resizes its window.
- Made this hack prevent you from resizing the client area of the game below 1 pixel on the width or height.
Also added a
-allowzerowindowsizecommand line argument to opt out of this. - No longer resizes or repositions the window if the resolution changes when the game is in full screen. This became an issue with Hack Support blocking the game from resetting its Direct3D device redundantly in this version.
- No longer maintains the centre of the window when changing out of full screen.
- No longer handles resizing when the game is in full screen.
Screenshots
Improved error handling.
XInput
Added this new hack that makes the game use XInput instead of DirectInput for controllers/gamepads.
This has various advantages over DirectInput:
- Makes controller rumble work.
- This can be disabled in the hack's settings.
- Makes the game compatible with Steam's controller support when launching the Mod Launcher through Steam as a non-Steam game.
- Makes it so you can plug in new controllers while the game is running.
Currently, DirectInput only controllers will not work with this hack enabled and only one trigger can be used at a time. You can bind actions to both but they cannot be pressed at the same time.