SenPatcher is a collection of fixes and customizations for several PC ports of games developed by Falcom, specifically:
- The XSEED PC release of The Legend of Heroes: Trails of Cold Steel
- The XSEED PC release of The Legend of Heroes: Trails of Cold Steel II
- The NISA PC release of The Legend of Heroes: Trails of Cold Steel III
- The NISA PC release of The Legend of Heroes: Trails of Cold Steel IV
- The NISA PC release of The Legend of Heroes: Trails into Reverie
- The Aksys PC release of Tokyo Xanadu eX+
It also acts as a mod loader so file-based mods can be distributed and installed without modifying the base game files.
Release binaries: https://github.com/AdmiralCurtiss/SenPatcher/releases
Source code: https://github.com/AdmiralCurtiss/SenPatcher
- If you have installed a version of SenPatcher before v1.0, please restore your game before continuing.
- The
SenPatcherGui.exe
provided in the release binary package should offer to automatically restore the game for you when you open the relevant game. - Alternatively, verify the game files in Steam or GoG Galaxy. It will detect and redownload any patched files and replace them with unpatched ones.
- The
- Make sure your game is updated to a supported version (CS1 v1.6, CS2 v1.4.1 or v1.4.2, CS3 v1.06, CS4 v1.2.1, Reverie v1.1.4, TX v1.08). Other versions of the games will not work.
- Extract the entire zip file of the release binary package you downloaded anywhere you like.
- Launch
SenPatcherGui.exe
. - Click the 'Patch game' button for the game you'd like to patch.
- Navigate to the relevant game folder and open the file requested by the dialog.
- In Steam, you can find this folder by selecting the game in the Library, opening its Properties, and going to 'Installed Files' -> 'Browse...'
- In GOG Galaxy, you can find this folder by right-clicking the game and selecting 'Manage installation' -> 'Show folder'
- Adjust the active patches as desired. If you're unsure, just leave the defaults.
- Note that some base functionality, such as the mod loader, is always active and cannot be disabled.
- You can always come back here and adjust it again later by just following this procedure again.
- Hit the big 'Patch!' button at the bottom.
- Run the game as usual.
You can verify that SenPatcher is running correctly by checking the lower-right corner of the title screen. If SenPatcher is successfully running, it will display its version information as well as information about loaded mods next to the game's version. In Tokyo Xanadu, you have to highlight the Quit option on the title screen to see this description.
To uninstall, launch SenPatcherGui.exe again, click 'Patch game' for the relevant game, and use the 'Remove Patches / Restore Original' button at the top.
- Place the contents of the folder for the game you want to patch into your game install directory.
- The provided layout in the release binary package for each game should be correct, but to be specific:
senpatcher_settings.ini
should end up in the root directory of the game (next to thedata
directory).- The
.dll
file's name and location changes depending on the game:- For CS1 it's
DINPUT8.dll
in the root of the game folder, next toed8.exe
. - For CS2 it's
DINPUT8.dll
inbin/Win32
, next toed8_2_PC_US.exe
. - For CS3 it's
DINPUT8.dll
inbin/x64
, next toed8_3_PC.exe
. - For CS4 it's
DINPUT8.dll
inbin/Win64
, next toed8_4_PC.exe
. - For Reverie it's
DSOUND.dll
inbin/Win64
, next tohnk.exe
. - For Tokyo Xanadu it's
DINPUT8.dll
in the root of the game folder, next toTokyoXanadu.exe
.
- For CS1 it's
- Adjust the active patches as desired by modifiying
senpatcher_settings.ini
. - Run the game as usual.
To uninstall, just delete DINPUT8.dll
from the folder with the game executable.
- Switch to Desktop mode.
- Place the contents of the folder for the game you want to patch into your game install directory.
- You can find this folder by selecting the game in the Library, opening its Properties, and going to 'Installed Files' -> 'Browse...'
- The provided layout in the release binary package for each game should be correct, but to be specific:
senpatcher_settings.ini
should end up in the root directory of the game (next to thedata
directory).- The
.dll
file's name and location changes depending on the game:- For CS1 it's
DINPUT8.dll
in the root of the game folder, next toed8.exe
. - For CS2 it's
DINPUT8.dll
inbin/Win32
, next toed8_2_PC_US.exe
. - For CS3 it's
DINPUT8.dll
inbin/x64
, next toed8_3_PC.exe
. - For CS4 it's
DINPUT8.dll
inbin/Win64
, next toed8_4_PC.exe
. - For Reverie it's
DSOUND.dll
inbin/Win64
, next tohnk.exe
. - For Tokyo Xanadu it's
DINPUT8.dll
in the root of the game folder, next toTokyoXanadu.exe
.
- For CS1 it's
- Right-click the game in the Steam game list and select 'Properties'.
- In the General tab, add the following text (without the backticks!) into the advanced Launch Options field at the bottom:
- For CS1-4 and TX:
WINEDLLOVERRIDES=DINPUT8=n,b %command%
- For Reverie:
WINEDLLOVERRIDES=DSOUND=n,b %command%
- For CS1-4 and TX:
- Adjust the active patches as desired by modifiying
senpatcher_settings.ini
. - You can switch back to Gaming mode now and run the game as usual.
To uninstall, just delete DINPUT8.dll
or DSOUND.dll
from the folder with the game executable.
- Built-in mod loader for p3a mods.
- Option to remove the forced animation skip in Turbo mode.
- Option to make Turbo a toggle instead of a hold.
- Option to fix the internal Thor master quartz HD texture ID to allow usage of the HD texture pack for it.
- Option to fix various minor script and asset file errors, such as missing sound effects, incorrect voice clips, text typos, etc.
- Option to remap the button used for triggering Turbo mode and to re-enable the 2nd Notebook shortcut even when Turbo is on.
- Option to disable the mouse being captured by the game and its movement being used for the game camera.
- Option to keep the game running while in background.
- Option to fix a bug that makes the game load the English lipflap data when playing with Japanese voices and vice-versa.
- Option to fix a bug that displays the Arts Support cut-in incorrectly at resolutions other than 1280x720.
- Option to fix a bug that causes incorrect music playback when you switch areas too quickly.
- Option to use CS3 font spacing when using the high-res font from CS3.
- Option to force XInput for controllers (this supposedly fixes newer Xbox controllers)
- Option to edit the vestigial System Data button mapping from the PS3 version.
Note: Compatible with version 1.6 of the game only.
- Built-in mod loader for p3a mods.
- Option to remove the forced animation skip in Turbo mode.
- Option to make Turbo a toggle instead of a hold.
- Option to fix two audio-related bugs, which cause missing or incorrect BGM/SFX and overlong track transitions.
- Option to fix a few minor script errors.
- Option to disable the mouse being captured by the game and its movement being used for the game camera.
- Option to keep the game running while in background.
- Option to fix a bug that makes the game load the English lipflap data when playing with Japanese voices and vice-versa.
- Option to fix a bug that applies complicated button mappings incorrectly, causing the actual button actions and the displayed button prompts to mismatch.
- Option to fix a bug that displays the Arts Support cut-in incorrectly.
- Option to use CS3 font spacing when using the high-res font from CS3.
- Option to force XInput for controllers (this supposedly fixes newer Xbox controllers)
- Experimental option to fix the occasional crash when analyzing enemies.
- Option to edit the vestigial System Data button mapping from the PS3 version.
Note: Compatible with versions 1.4, 1.4.1, and 1.4.2 of the game only.
- Built-in mod loader for p3a mods.
- Option to make Turbo a toggle instead of a hold.
- Option to fix various minor script and asset file errors, such as incorrect textures, incorrect voice clips, item description errors, broken Master Quartz effects, etc.
- Option to fix the in-game button remapping options being incorrectly enabled/disabled, disallowing various sensible mappings.
- Option to fix a bug that causes incorrect music playback when you switch areas too quickly.
- Option to allow changing difficulty to Nightmare mid-playthrough.
- Option to disable the mouse being captured by the game and its movement being used for the game camera.
- Option to fix a bug that applies complicated button mappings incorrectly, causing the actual button actions and the displayed button prompts to mismatch.
- Option to force XInput for controllers (this supposedly fixes newer Xbox controllers)
- Option to keep the game running while in background.
Note: Compatible with version 1.06 of the game only.
- Built-in mod loader for p3a mods.
- Option to allow changing difficulty to Nightmare mid-playthrough.
- Option to fix a bug that causes incorrect music playback when you switch areas too quickly.
- Option to disable the mouse being captured by the game and its movement being used for the game camera.
- Option to keep the game running while in background.
- Option to force the controller button Confirm/Cancel layout to English/Xbox or Japanese/Nintendo style.
Note: Compatible with version 1.2.1 of the game only.
- Built-in mod loader for p3a mods.
- Option to fix a bug that causes incorrect music playback when you switch areas too quickly.
- Option to disable the mouse being captured by the game and its movement being used for the game camera.
- Option to remove the 30 FPS limit when the game is in the background.
Note: Compatible with version 1.1.4 of the game only.
- Built-in mod loader for p3a mods.
- Added a Turbo Mode, similar to the one in the Trails games.
- Added a lot of new entries to the Button Configurations list, allowing customization of combat controls without it also affecting things like menu actions and minigames.
- Option to skip the startup logos and/or all FMVs.
- Option to disable the mouse movement being used for the game camera.
- Option to keep processing controller input while the game is in the background.
- Option to set the game language to English or Japanese instead of the game reading it from Steam/GOG Galaxy.
Note: Compatible with version 1.08 of the game only.
Starting with version 1.0, SenPatcher has support for seamless replacement of files as seen by the game without actually modifying the game's assets directly.
This feature comes in two flavors:
For development, you can create a dev
directory in the base game directory and put your replacement files in there. Files in this folder will have priority over everything else, so eg. if you want to replace the t_magic table in CS4, you can place your modified copy at The Legend of Heroes Trails of Cold Steel IV\dev\data\text\dat_en\t_magic.tbl
. This should work for all game files except the FMVs and the big assets.pka
. Note that the dev
directory must exist when the game is booted in order for this replacement to take effect. You will see a notice on the title screen (next to the version info) if the dev
folder is active and being scanned.
Once you're ready to release your mod into the world, you can pack it into a convenient archive file for distribution. In order to do that, take the included sentools.exe
and pack the dev
directory with it, so for example sentools.exe P3A.Pack "The Legend of Heroes Trails of Cold Steel IV\dev" mymod.p3a
. The generated mymod.p3a
can be placed in the mods
directory that is created by SenPatcher, where it will act exactly like the freestanding dev
directory, replacing the files as seen by the game. (Yes, this is the same file format used by the PH3 Daybreak PC port. You may choose to use their tool instead if you prefer it.)
If there are multiple copies of a single file across multiple mods, only the highest priority one will be seen by the game. The priority list is:
- Files in the
dev
directory (highest priority) - Files contained in the p3a archives in the
mods
directory.- The
order.txt
in there can be used to change which mods have priority over which other mods, closer to the top of the list has higher priority. - If there is a p3a archive in the
mods
directory that is not inorder.txt
, SenPatcher will updateorder.txt
automatically to include it below any previously existing mods but above its own asset fixes.
- The
- Base game files (lowest priority)