For Dark Souls: Prepare to Die Edition
Author: Sean Pesce
Dark Souls Nexus page
This is a ground-up remake of Nullby7e's "FPSFix" (NexusMods/GitHub), which was a solution to the bonfire input bug in Dark Souls™: Prepare to Die Edition. Basically, if a player used the "Reverse hollowing" option at a bonfire with the frame rate unlocked, there was a significant chance that their character could get stuck when attempting to leave the bonfire (the bonfire menu would disappear, but the player character would remain sitting at the bonfire, with no way to get up). When this happened, the only way to remedy the issue was to restart the game. Luckily, the original FPSFix implemented a re-bindable hotkey that the player could press to escape the bonfire if they encountered this annoying bug.
The new bonfire input fix, or FPSFix+, has a few improvements over the original FPSFix:
- Automation: Removes the need for the hot-key, as FPSFix+ automatically detects and fixes the glitch when it occurs. If players want to know when it happens, they can set
BeepOnDetection=1
in the configuration file (FPSFix.ini
) to hear a beep every time the fix is automatically applied. - DLL Chaining: The original FPSFix was a wrapper for
d3d9.dll
, but couldn't chain additionald3d9.dll
wrappers. FPSFix+ has multiple builds, and each build is a wrapper for a different shared library. Additionally, each build can chain other wrappers for its respective library. - File size: This isn't really important, but FPSFix+ is less than one tenth of the size of the original FPSFix (~100KB vs ~1300KB).
Below is the current list of available builds:
dinput8.dll
d3d9.dll
d3dx9_43.dll
winmm.dll
(Recommended)
To install the fix, download one of the builds, extract the DLL and configuration file, and copy them into your Dark Souls directory (the default game directory is C:\Program Files (x86)\Steam\steamapps\common\Dark Souls Prepare to Die Edition\DATA
). To load additional library wrappers through FPSFix+, enter the name of the chained DLL in the DllChain=
entry in FIPSFix.ini
. The fix is only compatible with the latest Steamworks version of Dark Souls. NOTE: To chain a library wrapper (such as d3d9.dll), you must use the corresponding build of FPSFix+. If you're already using a wrapper for that library, you can rename FPSFix+ and load it through the config file of the other wrapper DLL. Below are instructions for using FPSFix+ with the most common library-wrapper mods for Dark Souls, but note that it's easier to use one of the builds that isn't already wrapped by these mods (I recommend the d3dx9_43.dll
or winmm.dll
build).
Installation instructions:
- DSFix by Durante: Download the dinput8 build of FPSFix+, rename the DLL to something like
FPSFix.dll
, and add it toDSFix.ini
(the edited line would readdinput8dllWrapper FPSFix.dll
). - PvP Watchdog by eur0pa: Download the d3d9 build of FPSFix+, rename the DLL, and add it to
DSPWSteam.ini
(the edited line would readd3d9dllWrapper FPSFix.dll
). - SweetFX by CeeJaydk: Copy all SweetFX files into the DATA folder. Rename the SweetFX DirectX9 DLL (
d3d9.dll
) tod3d9_sweetfx.dll
. Download the d3d9 build of FPSFix+ and copy the files to your DATA folder. In yourFPSFix.ini
file, set your DLL chain to the SweetFX library (the edited line would readDllChain=d3d9_sweetfx.dll
). - ReShade by crosire: Create a folder inside the DATA folder and name it
ReShade
. Copy all ReShade files into the new folder. Download the d3d9 build of FPSFix+ and copy the files to your DATA folder. In yourFPSFix.ini
file, set your DLL chain to the ReShade library (the edited line would readDllChain=ReShade\d3d9.dll
).
To uninstall the fix, simply remove the edited lines from the config file, and/or delete the FPSFix+ files from the Dark Souls DATA folder (depending on your installation method).
To compile the project, open it in Visual Studio 2015, choose your build configuration (d3d9 to compile the d3d9.dll
wrapper, dinput8 for the dinput8.dll
wrapper, etc.), and go to Build->Build Solution. The compiled library can be found in the /bin/
folder in the main project directory. Additionally, a pre-made configuration file can be found in the /rsrc/
folder.
- Youri "NullBy7e" de Mooij (GitHub) for finding the pointer needed to fix the bug when he made the original Bonfire FPSFix
- Lin "mavenlin" Min (GitHub) for his DLL Wrapper Generator, which I forked a while back to modify and use for my own projects
If you have any questions/comments/concerns/suggestions, you can visit my website, or contact me on social media:
Player stuck at the bonfire after restoring humanity (Note that the bonfire menu is missing)