First post, by UCyborg
- Rank
- Oldbie
It recently came to my attention that GOG released both The Suffering: Prison Is Hell and The Suffering: Ties That Bind back in September. I got messaged on the other forum about some of the issues with those two games, it turns out there are more problems with them that I was initially aware of. So I thought I'd see whether I can fix or workaround some of the bugs.
Comparing the games as they were released back in the day with the GOG version, there weren't any changes code-wise, they tweaked two variables; lowered default vertical FOV, which gives the correct FOV only with wide 16:9 resolutions and unlocked the ability to select resolution with aspect ratio higher than 4:3.
Found out ThirteenAG made a widescreen patch that also tackles the 2D elements, but it has a fatal flaw that it just crashes the game on some machines at startup. Might be because he does the memory patching from a separate thread once the game code is already running, which is dangerous. I took care of that problem as well.
Download link: ModDB (updated 26th November 2018)
Here comes the list of fixes.
Common:
- Fixed the bug with game interpreting available hard disk space value incorrectly, preventing users from saving the game and the config file from being updated if they have more than 2 TB of free space on their hard drive.
- Widescreen support; all supported resolutions are selectable, FOV is adjusted according to the screen's aspect ratio, HUD and in-game FMVs are adjusted as well so they don't stretch with wide aspect ratios.
- Resolutions available in fullscreen mode are also available in windowed mode.
- Game's own threads are bound to run on the CPU's first core, this reduces the probability of 'black texture bug' occurrence.
- Game will now use the audio device selected in Riot Engine Configuration dialog instead of always using default device.
- Hardware accelerated DirectSound buffers are no longer explicitly requested and the default limit of sound buffers has been increased to prevent sound dropouts on typical modern PC.
- EAX option has been disabled in Riot Engine Configuration in Sound tab (EAX effects are not implemented).
- Added frame rate limiter which defaults to limiting the game to run at 59 FPS to workaround bugs that occur at higher frame-rates and provides better mouse response when monitor runs at 60 Hz and VSync is enabled.
- Game will set monitor's refresh rate to 60 Hz when in fullscreen mode.
- Mouse acceleration is disabled by default, but can be restored with a config option.
- Removed bad DirectX check, game will launch without error or DirectPlay pop-up dialog on Windows 8+ if DirectPlay isn't present (which is the default).
- Made game's message loop more conventional (PeekMessage called without message filtering) to workaround the bug in Windows' Desktop Window Manager, which causes oddities in windowed mode; window being declared unresponsive and replaced with a ghost window after 5 seconds when it loses focus. It even happens that the DWM tries to replace the game window with a ghost window during normal gameplay.
- Use GetMessage in the message loop for the Riot Engine Configuration dialog rather than PeekMessage, this normalizes CPU usage of said dialog.
- Embedded manifest in executables:
- Marked as compatible with all existing Windows versions.
- Marked as high-DPI aware.
- Marked as UAC (User Account Control) aware.
- Registry settings are written to HKEY_CURRENT_USER instead of HKEY_LOCAL_MACHINE.
- User files are redirected to Documents folder, in "My Games\The Suffering [TTB]".
- Removed all calls to RegFlushKey (not needed).
- Removed the call to OutputDebugString that was needlessly made every frame.
- Reordered icons in the .exe's resource so the Torque icon is the main one instead of the Riot Engine logo.
Prison Is Hell specific:
- Selecting anything but the first entry in the Display Driver drop-down list in Riot Engine Configuration dialog will no longer result in the empty Display Mode list, so the game can now be made to run on any monitor, not just the primary one.
- Fixed the bug with user gamma setting not being applied at game startup.
- Textures now appear clearer when looked at from the distance.
- Don't grab keyboard exclusively when in fullscreen; Start key works and Alt-Tab behaves normally on modern Windows versions.
- Added window caption.
- Disabled screenshot feature (F10 key) since it crashes.
Ties That Bind specific:
- Registry settings are stored in a separate value called SettingsDX106 rather than SettingsDX105, which is used by the first game since the binary structures between the games aren't 100% compatible between each other.
- Fixed the bug with some sounds being delayed when 3D sound buffers are enabled.
- Added file (Common\System\System.odu) that turns off censorship of Creeper's famous part of dialog (for English version only).
wrote:A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.