Version 0.10.12 - March, 7, 2024
DirectDraw\Direct3D - 7 and earlier - Passthrough layer implemented
Passthrough layer for DirectDraw and Direct3D - 7 and ealier - implemented. This doesn't change anything right now, but will help maintain compatiblity in the future
- DirectDraw and Direct3D - 7 and ealier: Passthrough layer implemented. All currently supported DirectX 7 and earlier games work with the layer
- Deprecations: Some games were "deprecated". I can't test over 50 games everytime I make a change that can affect said games, so I'm keeping only my favorites and deprecating some. This means that I don't test or offer support for these games anymore, but their profiles are still included and warnings were added for each deprecated game with the last patch version it was tested with. So far, I only deprecated DirectX 7 and earlier games. Deprecated games never use the passtrought layer, you'll have to create a new profiole if you wish to do so
Version 0.10.11 - September, 22, 2023
EAX compatiblity expanded, new cheat tables and a few other small additions and fixes
I took my time creating a lot of new cheat tables, it helps with testing, specially with EAX that requires visiting diferent areas of the game. Almost every supported game now has a cheat table and EAX - versions 1, 2 and 3 - now have a pretty decent compatibility, reverb and muffleling. Here are a few other updates:
- Max Payne 2 added: Benefits from forced resolution\super sampling anti-aliasing and EAX emulation
- Direct3D 11: added forced triple buffering
- Opengl: fixed the glreadpixels hook. This affects the save game thumbnais on Munch's oddysee when SSAA is enabled
- DirectInput: Fixed a bug on the IDirectInputDevice::GetEffectStatus method. With this, force feedback now works correctly on star wars racer
- Prince of persia 3D: Fixed a bug that caused the screen not to be cleared before FMV playback
- Munch's Oddysse: The fix window size option is now enabled by default fixing some crashes
- Revenant: The map now works correctly on hardware mode. The map normally doesn't work on hardware mode because the game tries to use a system memory texture to render it. The fix is implemented by copying the texture data to a hardware texture and will be made available in future updates as an option to be applyed to any game
- Silver: Added 60 fps limitation, fixing a lot of bugs
- Save redirection: The GetEnvironmentStrings hook now handles the APPDATA enviroment variable
0.10.11
Version 0.10.10 - February, 28, 2023
DirectSound Passthrough layer and EAX emulation.
EAX emulation is a work in progress, only eax 1 and 2 are supported and some bells and whistles of eax 2.0 reverb are not yet implemented. A better implementation will be added in the next update which will also improve some aspects of the DirectInput layer before we can go back to graphics on version 0.10.12. The positional sound implementation however will remain very basic for now: distance attenuation, sound cones and a simple left and right panning
Other small fixes on this update
- Changed a single value on the rainworld.ini file which was causing the program not to scale the game window correctly
- Updated the SHGetKnownFolder hook to handle the FOLDERID_SavedGames id
Version 0.10.9 - November, 19, 2022
DirectInput focused update with the peixoto's patch 1st Passthrough layer
PASSTHTOUGH LAYERS
The Passthought layers are fundamental to make peixoto's patch "future proof". Peixoto's patch does most of what it does by intercepting and modifying the communication between the game and DirectX. Microsoft uses the exact same method to maintain the compatibility of their older APIs, and the hooks - peixoto's and Microsoft's - can sometimes conflict. Currently, theses conflicts are handled case by case, but while Microsoft doesn't update the old APIs anymore, they update their compatibility layers, and those updates offten re-introduce previously solved conflicts, so I need a more robust method to handle those conflicts. This is the purpose of the passthought layers
The Passthrough layers are a fake DirectX layer the passes unmodified DirectX
calls from the game to DirectX. With the layer alone we would have something like this:
Game → Passthrough layer (Fake DirectX) → Real DirectX
but when we put peixoto's and Microsoft's hooks on the picture, the layer isolates them
from each other
Game → Peixoto's hooks → Fake DirectX →MS Shims → Real DirectX
The Passthrough layers will also make Peixoto's path compatible with other
wrappers and solves problems with inheritance, which are aways a pain to handle
The 1st Passthrough layer is for DIRECTINPUT. It's a simple layer, so ot was
the best one to start. Without going into much detail, the hard ones will be
DirectDraw\Direct3D <=7, even DirectX 10 and latter will be easy.
With the layer, I've also implemented several fixes and additions on DirectInput
DIRECTINPUT
- Fixed the reporting of the analog sticks position which as broken in many games
- Fixed mapping of the thumbsticks buttons, whick could be mapped to a different DirectInput button as the one intended
- Added support for games the use custom data formats to retrieve gamepad data
- Added support for games the retrieve buffered data instead of immediate data
- Improved force feedback support. I know very little games that use force feedback, so this didn't have a lot of testing
OPENGL
- Fixed bugs on the glDrawPixels and glBitmap hooks, Affects Strangers Wrath and blade of darkness
- Fixed super sampling anti aliasing, affects Alone in the Dark, Sphinyx, Strangers Wrath and maybe others
DIRECT9
- Fixed a bug rendering texts - used to search for texture and shaders - on Direct3D9Ex
- Broke 😐 texture swapping in half life 2
ALL GRAPHICS APIS
- Fixed a bug on the EnumDisplaySettingsExW Hook. When enumerating the current resolution, this function would return the display height incorrectly - equal to the width. I found this bug while setting forced resolution on Hyper Light Drifter, a game that doesn't need forced resolution, but I aways test all games I play to improve compatibility
- Added a GetMessagePos hook. This is used to report the mouse position 'correctly' when forced resolution is enabled
MCI
- mciSendCommand: MCI_STATUS (track position), would return position of the next track when time format was milisseconds
- mciSendCommand: MCI_PLAY would play the wrong track when time format was milisseconds, this fixes shadows of the empire
FILE REDIRECTION
- Fixed bugs on the SHGetKnownFolderPath and SHGetFolderLocation hooks
- New hooks to handle games the retrieve the special folders path from enviroment variables
GAME SPECIFIC FIXES
- Wheel of time, fixed a bug on FMV playback that caused the audio the game was playing before the FMV start, to continue playing
- Rainworld, fixed some incorrect values on the ini file which prevented the unfiltered upscaling from working
NEW GAMES
- 5 games that have cheat tables and nothing else: Guacamelee 1 and 2, Ori 1 and 2 and Iconoclasts
- 3 Games the benefit from forced resolution and also have cheat tables: SIGNALIS, Sphinyx and the cursed mummy and Star trek Klingon honour guard. The last benefits from several other fixed ass well
OTHER
- Restored compatibility with windows 7. The previous version required Win 8 and latter, this happened in the migration of the build system from Qt creator\Qmake to Visual Studio\Cmake, but is fixed now
- The GUI now runs on top of MS edge instead of Qt's webengine. This reduces the download size from about 50 MB to 5 MB
- Createprocess hook, When a 32 bit program launches a 64 bit program, the injector fails to 'inject' peixoto's patch on the child program, this wasn't entirely fixed, but at least in won't prevent the child program from starting, this fixes freezing on TR reboot
CHEAT TABLES
- Star trek Deep space nine - the fallen
- Star trek Klingon honour guard
- The Wheel of time
- Iconoclasts
- Half Life 2 and episodes
- Ori 1 and 2
- Guacamelee 1 and 2
- Rune
- Improved Deus Ex Heuristics
- SIGNALIS
- Fixed one hit kill glitch in control - uploaded jun 06
- Fixed RTCW attaching (still need manual attach) - uploaded jun 01
- Fixed inf Ammo on wolfenstein 2009 - uploaded jun 01
- Septerra core, added one hit kills - uploaded jun 01
Signalis HD Mod - November, 20, 2022
Included on version 0.10.0, Signalis can now be playd in HD
May, 31, 2022, Small update
This is still Version 0.10.8, as none of the binaries or scripts were altered. I've just updated the Cheat Engine cheat tables - and the accompanying scripts that run with my Cheat Engine AutoHotkey plugin - to make them more consistent. Now all tables have, as much as possible, similar cheats and hotkeys. The most common cheats are:
- Infinite HP
- Easy Kills: this is 1 hit kills on most games, but on some - guacamelee, Control - it is 2 hits, and on others - soul reaver - is more complicated
- Infinite Ammo or Magic
- Gain currency: money, XP, etc. You press a key to gain a certain amount of currency. On games that have some kind of currency, this is the best way to implement a cheat: it is easy to code, and you don't have to acquire any amount of currency before using the cheat
Cheat tables are gonna be a thing on Peixoto's patch, many more are coming in the future, the ones included now are:
- Control - DX11 and DX12, only inf HP and easy kill at the moment
- DeusEx
- Guacamelee!
- Horace
- Halo custom edition
- Legacy of kain: Blood omen
- Legacy of kain: Blood omen 2
- Legacy of kain: Soul Reaver
- Legacy of kain: Soul Reaver 2
- Legacy of kain: Defiance
- Onimusha
- Ori and the blind forest
- Return to castle wolfenstein - inf ammo broken
- Septerra core - missing inf HP at the moment
- Unreal Gold
- Wolfenstein - 2009
Version 0.10.8 - May, 13, 2022
Textureswap refactoring and a whole lot more
This update focused mostly on the texture swap option. I wanted do to a big refactoring, share as much code as possible between all the APIs, implement the auto dump option for all the APIs and solve bugs. In the end, I've made less then I originally intended to, because it was taking to long and I really want t o focus on the passthought layers next. Regardless, a lot was done in this update
Starting with some additions
- DirectX7: Added the "Alpha textures fix" option. This was created to fix fonts on Blade of darkness and may solve other bugs on other games that use alpha only textures. The correct rendering of fonts on Blade of darkness depends on alpha textures returning 1.0 for the color channels when sampled on the pixel stage. With the introduction of the programable pipeline, the default value of the color channels in alpha only textures on the pixel shader was set to 0.0. On windows vista - and latter, the Direct3D runtimes implement the fixed function pipeline with shaders What I'm guessing happened here was that, at that point, the MS programers did not correctly replicated the fixed function alpha textures behavior on the pixel shaders emulating the fixed function pipeline. This fix is applied by replacing alpha only textures with full RGBA textures with the color channels set to 255.
- DirectX7 and earlier: Replaced the "FMV fix" option with the "GDI hooks" option. The old video for windows API, as well as the earliest DirectShow versions and also quicktime output video using GDI. The old "FMV fix" option hooked 2 GDI functions - BitBlt and StretchBlt - to correctly upscale the FMVs when forced resolution is enabled, on games using these APIs. The hooks were now expanded - PatBlt, TextOutA and ExtTextOutA - to fix the menus on Hyperblade. I find unlikely that this will matter for other games. The Hyperblade demo is a Win16 program. So the game was probably Win16 GDI and was ported to Win32 Direct3D close to launch, keeping the existing code for the menus. Latter DirectDraw\Direct3D games DO use GDI A LOT, but they use GDI to draw on a DirectDraw surface, and this is already handled
- DirectX7 and earlier: New Win32 hooks. When forced resolution is enabled, some Win32 functions the game my call to retrieve the display resolution or window size are hooked. DirectDraw\Direct3D games don't use this a lot, so it was always handle case by case with game specific scripts. Now a set hooks with code common for all APIs is used. A common set of hooks is also used by the "Fix window size" option. This doesn't change anything for the already included games, but may help with future inclusions
- DirectX8: IDirect3DDevice8::DrawIndexPrimitive and IDirect3DDevice8::DrawIndexPrimitiveUp are now hooked improving forced resolution compatibility. Forced resolution is now usable in Project Eden
- DirectX9: Added the "Borderless Fullscreen Window" option. This solves some bugs when forced resolution is enabled, like games crashing with alt-tab
- DirectX9: Improved the "Fix window size" and added the "Resize window on device creation" options. The "Fix window size" option exists for all APIs to correctly resize the game window when forced resolution is enabled. On Direct3D9 it will never look like the game window was not correctly resized - except if borderless fullscreen is enabled - because Direct3D9 will not clip the output to the window client area, but if the window is not correctly resized, it will loose focus to the desktop when you click on it
- DirectX 10 and 11: Added the "forced vsync" option
- Opengl: Improved forced resolution: The "resolution limit" option was added to handle games on which render resolution is not coupled with the display resolution. The functions glBitmap, glReadPixels, glDrawPixels, glReadRegion and glDrawRegion are now hooked. Improved the hooks on functions used to retrieve the display resolution and window size. Mouse hooks are now safe if called on a different thread then that making opengl calls
- All APIs: added a option to use a default replacement for all texture dumps missing a corresponding replacement
- Extended the autodump option to Direct3D 7, 8 and 9 and opengl. This option is still work in progress, but together with the option above, I can dump and replace several texture at once and this helps immensely to find and fix bugs. Texture swap as a whole now has a smaller CPU overhead and a much smaller memory overhead when dumps are not compiled
Now some things that were fixed:
- Fixed autodump dumping all the mipmap levels on DirectX6 and earlier
- Fixed textures - and shaders - being dumped but not replaced in DirectX 10
- Fixed replacements not working except if they had the same number of mipmaps as the original texture on DirectX 10 and 11
- Fixed some textures being replaced, but the replacement being immediately discarded in Opengl - affects Anachronox
- Fixed a bug loading compressed textures on Opengl
- Fixed crashes on Max Payne. This bug as quite nasty, because it would cause the game to crash even if you tried to start it without peixoto's patch. The "fix" disables texture swapping even if you enable it on the GUI, so it still needs improvement
- Fixed unresponsive menus on Die by the sword. This is a simple fix using the "QueryPerformanceCounter fix" option introduced in the previous update
- Fixed FMVs in Nocturne: the FMvs are now correctly upscaled. I'm aware of a extremely annoying issue in nocturne in the transition from gameplay to menus. I'll try to fix it... eventually
- Fixed a bug loading saves in Revenant
- Fixed a memory leak on the MCI emulator
- Fixed crashes on FEAR when accessing the performance menu - needs fullscreen borderless window
Finally, 6 new games supported:
- Hyperblade: some glitches on the menus were fixed and also benefits from forced resolution and Super sampling anti-aliasing
- Prince of persia and Bermuda Syndrome: not the original games but sld reimplementations of their engines: SDL-POP and bermuda Both benefit from xBRz upscaling
- Blade of darkness: Fixed texts and the non working Gamma\Brighness\Conrtrast controls on Direct3D mode. Forced resolution and Super sampling anti-aliasing work on both Direct3D and OpenGl
- Return to Castle Wolfenstein and Wolfenstein-2009, both benefit from Forced resolution\Super sampling anti-aliasing
Version 0.10.7 - November, 10, 2021
This version was lost and is not included in the old versions download link
- Refactoring of the Direct3D (9 and earlier) user mode display driver hooks.
These hooks are used to allow pixel shaders on Direct3D 7 and earlier, allow
HLSL shaders on Direct3D 8, fix w fog on some Direct3D 7 and earlier games and
to fix a transparency bug on Star wars dark forces II. The refactoring aims to
improve the maintainability of the code. This hooks will also be the base for
future fixes related to alpha testing and z bias bugs in some games
- Improved the detection of transformed vertices on Direct3D 9 when forced
resolution is enabled. Transformed vertices have to be correctly detected
because they have to scaled on the CPU.
- Fixed a bug on the IDirect3DSurface8::GetDesc and
IDirect3DDevice8::CreatePixelShader hooks that crashed some games
- Improved compatibility of FidelityFx super resolution upscaling on both
Direct3D 11 and 12
- Added the QueryPerformanceCounter fix. This fix changes the behavior of the
QueryPerformanceCounter function to report not the number of counts since
windows was started, but since the current process was started. This was
implemented to fix low frame rates on Jade empire, but i've heard of other
games that need this as well. Since timeGetTime calls are redirected to
QueryPerformanceCounter when the high resolution timers options is enabled,
this option can fix games that use that function as well
- Small refactoring of the Saves redirection feature. A new option to handle
Xlive games was added. A code path that handled Unreal 1 and 2 games was
removed, but instructions on how to adapt the system links option to these
games were added
- Integrated a Fix created by others that disables TXAA on control
- Added 9 new games: 4 which benefit from forced resolution because they shrink
their UIs, HUD or texts on higher resolutions: Jade Empire,
Start Trek Elite Force 2, Star Trek: Deep Space Nine - The Fallen and Enclave.
3 which benefit from FidelityFx super resolution: The Talos Priciple,
Death's Door, and Resident Evil 2 Remake. Finally, another 3 games
on which forced resolution is not entirely necessary, but benefit from it because
it allows super sampling anti aliasing: Star Trek: Voyager - Elite Force,
The Void and Sudeki
Version 0.10.6 - 03/September, 03, 2021)
This version was lost and is not included in the old versions download link
- Direct3D 12 support added. Only one feature supported a the moment,
FidelityFx super resolution
- Added FidelityFx super resolution to Direct3D 11 games and removed forced
resolution in Direct3D 10 and 11 until it is in a more usable state
- Added an option to set the affinity of threads making calls to Direct3D 8 to a
single core. This option was made to fix crashes in Soul Reaver 2 without
causing sound glitches - setting single core affinity to the process frequently
causes it - and may be useful in other games too
- Added FidelityFx super resolution to Unravel two
- Added Control - D3D11 and D3D12 - with FidelityFx super
resolution support