Instructions:
- Download the dxwrapper.zip and unzip it to a folder.
- Determine which stub .dll file is needed for the game. This depends on many factors which will be explained on page created later. Common stub dll's to use are
ddraw.dll,d3d8.dll,d3d9.dll,dsound.dllorwinmm.dll. You only need to choose one stub file to load dxwrapper into the game. - Copy this .dll file from the 'Stub' folder plus the
dxwrapper.dllanddxwrapper.inifiles into the game's installation directory, next to the main executable file. For some games the main executable is in a subdirectory (like 'Bin', 'Exe' or 'App') so the files will need to be copied into that directory. Overwriting existing game files is not usually recommended. Always backup any files before overwriting them. - Open up the
dxwrapper.inifile in a text editor and enable the settings needed for the game.
Note: Try the options under the [Compatibility] section first. For many games these are all that are needed. See the Configuration for details on the options.
dxwrapper Release Notes
New Features
- Added a vertex shader for automatic Z-clamping. (#429, #446 (comment), thanks to @CkNoSFeRaTU)
- Added
DdrawAlternatePixelCenteroption to better emulate the behavior of certain older video cards. - Added support for games that modify vertex buffers outside of a
Lock/Unlockpair. (#593) - Added the ability to restore Windows font smoothing and mouse vanishing settings when dxwrapper exits.
- Improved anisotropic filtering and forced mipmap usage. (#595, thanks to @BC46)
Performance Improvements
- Significantly improved the performance of color-keyed blitting to render targets by using
DrawPrimitiveUP. - Added support for vertex declarations for
D3DFVF_LVERTEX7, eliminating CPU overhead from converting vertices to a Direct3D 9-compatible format. - Fixed code paths that incorrectly bypassed fast video memory copying in favor of slower copying methods.
- Inlined several commonly used functions to reduce function-call overhead.
- Reserved memory for batch state vectors to reduce memory reallocations when games use large numbers of device states.
- Used an inline implementation of
D3DXMatrixMultiplyfor CPU-based vertex transformations. - Removed an unnecessary critical section from the Direct3D 9 wrapper.
Fixes and Improvements
- Improved handling of device creation when no window handle is provided.
- Added render target size validation when setting the viewport.
- Fixed the multiplication order of the legacy scale matrix.
- Fixed the
GetGDISurfaceimplementation. - Fixed
DuplicateSurface()to copy surface contents during creation. - Fixed an error involving the
FOGENDlight state. - Removed code that added window borders when Vulkan was detected.
- Updated execute buffer handling and removed checks to better match native DirectDraw behavior.
- Simplified vertex transformations in execute buffer processing.
- Fixed an issue that caused mipmaps rendered through
DrawTextureto appear black when color keying and mipmaps were used together. - Fixed several interface address caching and lookup issues.
- Improved handling of reused Direct3D 9 interfaces.
- Fixed various additional issues throughout the codebase.