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.dll
orwinmm.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.dll
anddxwrapper.ini
files 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.ini
file 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.
What's New?
- Added testing tool to test dd7to9 and ensure it replicates native DirectDraw better
- Added option to display FPS
- Added option to fix environment cube maps when no texture is set
- Added option to prevent memory leak from continous StateBlocks creation
- Added option to call Begin/End Scene pair only once per frame
- Added option to limit the texture formats enumerated to prevent crashes in some games
- Added option to limit display mode count for Direct3D9
- Added option to keep all interface cache
- Added support for DDSCL_FPUSETUP (FPU exceptions)
- Added support for bump dUdV map texture
- Added support for setting width, height, pitch flags in SetSurfaceDesc()
- Added shader to support gamma ramp when in windowed mode
- Added partial support for multiple D3D devices
- Added work around for D3DERR_DEVICELOST error when creating Direct3D9 device
- Added interface cache to ensure that interface addresses are reused as some games expect this
- Added a redraw after SetCooperativeLevel or SetDisplayMode
- Added code to remove WS_DLGFRAME along with WS_BORDER for fullscreen windows
- Added module name logging from exception handler
- Added code to initialize msg queue when delaying device creation
- Added profiling to WaitForVerticalBlank()
- Removed support for ConvertToDirect3D7 and ConvertToDirectDraw7
- Disabled ColorControl interface to match native DirectDraw
- Reorganization of all DirectDraw and Driect3D class files
- Changed OverrideRefreshRate to affect enum functions
- Changed CPU affinity to set affinity at the thread level rather than the process level
- Changed how the RestoreDisplayMode() function works
- Changed index and vertex buffers to use video memory rather than system memory
- Improved when and how critical sections are called for better support for some multi-threaded games
- Improved handling of Light, Material, Viewport and VertexBuffer interfaces to work before a Direct3DDevice is created
- Improved handling for SetCooperativeLevel() flags
- Improved resolution changes by doing a device reset rather then recreating it
- Fixed all DirectDraw and Direct3D interface reference counts to match native DirectDraw
- Fixed some issues with complex surface creation
- Fixed some DDSCAPS with 3D and backbuffer surfaces
- Fixed minor issues with DuplicateSurface function
- Fixed a couple of minor things for color keys