Roadmap
A very loose roadmap
- Complete adoption of wine on DirectX 6 and earlier
- Improve Linux compatibility
- Add computer shader replacement on Direct3D 11, not because of the feature per se, but because this will be needed to:
- Improve forced resolution\SSAA compatibility on Direct3D 11\10
- Start a very very very very basic implementation of Vulkan hooks, which will also be used on Direct3D 12 by employing
vkd3d on Windows
Version 0.10.15 - April, 158, 2025
Small update: On Linux, Direct3D 8 and 9 now work with dxvk
On Linux with
Wine's 10 and
dxvk's 2.6, Direct3D 8, 9, 10 and 11
compatibility the same as on Windows
Version 0.10.14 - April, 8, 2025
Rewrite of the UI and minor advancements on Linux support and adoption of wine's Direct3D dlls on Windows
Wine 10 broke the UI completely, so I had to rewrite it
Here's the current status of the ongoing effort to support Linux and adopt of
wine's Direct3D dlls on Windows
- Windows:
- Direct3D 8, 9, 10 and 11: can use Wine's, or
dxvk's
- DirectX 7 and earlier: Wine's dlls not yet adopted, some thigs there were brokne on 0.10.13
with the removal of the user driver hooks are still broken
Linux support:
- Direct3D 8 and 9 work well, most games are compatible, but not with dxvk's
- Direct3D 10 and 11: Compatibility is the same as on windows
- Direct3D 6 and earlier Purely DirectDraw games work, although with a CPU xBRz implementation
Most Direct3D games crash or have glitches. This is where there is the most work to be done
- OpenGL works except for SSAA which is broken
Version 0.10.13 - December, 1, 2024
Initial Linux support and adoption of wine's Direct3D dlls on Windows
This version was 1st released as a beta as several things on Windows were broken, and while some still are, I decided to promote it
to stable anyway because the biggest hold-ups with the transition were that the UI had to be re-written, as the old one used technologies
that don't work on Wine, and that I had to switch to a new compiler, but with those out of the way, the few things that remain to be fixed,
should be fixed soon
Here's what has been fixed\added
- Windows:
- Direct3D 8, 9, 10 and 11: Wine's, or optionally
dxvk's Direct3D implementations are now used
- Direct3D 10 and 11: Forced resolution is finally starting to have a half decent compatibility. Some games can already
benefit from super sampling anti-aliasing and on Inside, I modified the SSAA downsampling step so it won't use filtering
fixing the blur caused by temporal anti-aliasing
- DirectX 7 and earlier: Wine's dlls not yet adopted, but
as a step towards the transition, I had to remove the Direct3D user mode display driver hooks, which were responsible for things like fixing
w-fog, xBRz scaling, deinterlacing, forcing\disabling texture filter and therefore these features are currently not implemented
- Direct3D 12: removed FSR support, so for now there are no Direct3D 12 features at all
- DirectSound:
Just before release, I noticed the directsound hooks were broken, so I disabled all features. This was caused by the
transition to MingW (I'm suspecting a bad header) and should be fixed soon. Fixed a few hours after release
- DirectInput:
Another victim of the transition from the visual studio to MingW and the fix doesn't seem simple for now DirectInput to
XInput translation is disabled. Fixed
Linux support:
- Direct3D 7, 8 and 9 work well, most games are compatible
- Direct3D 10 and 11: Compatibility is still restricted, but there are only a few remaining issues that once fixed will expand it
- Direct3D 6 and earlier Purely DirectDraw games work, although with a CPU xBRz implementation
Most Direct3D games crash or have glitches. This is where there is the most work to be done
- OpenGL works except for SSAA which is broken
Version 0.10.12 - March, 7, 2024
DirectDraw\Direct3D - 7 and earlier - Passthrough layer implemented
Passthrough layer for DirectDraw and Direct3D - 7 and earlier - implemented. This is a small software layer between the application and the
DirectDraw\Direct3D implementation which will help integration with wine: the focus
of version 0.10.13
- DirectDraw and Direct3D - 7 and earlier: 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 every time 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 profile 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 applied to any game
- Silver: Added 60 fps limitation, fixing a lot of bugs
- Save redirection: The
GetEnvironmentStrings hook now handles the APPDATA environment variable
Version 0.10.10 - February, 28, 2023
DirectSound focused update
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 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
DIRECTINPUT
- Fixed the reporting of the analog sticks position which as broken in many games
- Fixed mapping of the thumbsticks buttons, which 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 environment 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 honor 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
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
- 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
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.
2 which benefit from FidelityFx super resolution: The Talos Priciple and
Death's Door. Finally, another 2 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
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