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.
Added
DirectDraw / Direct3D
- Added support for
IDirectDrawFactory(#578) - Added basic implementations for
Pick()andGetPickRecords() - Added support for the
DDGDI_GETHOSTIDENTIFIERflag inGetDeviceIdentifier() - Added a
LimitRefreshRatesoption to reduce the number of display modes returned during enumeration, preventing crashes in some games with small display mode buffers - Added
ForceMipMapUsageoption to force the use of mipmaps for all textures (#525)
Display / Graphics
Performance
- Added GPU handling for all
ProcessVerticescalls for improved performance and more accurate behavior - Added a
ProcAffinityMaskoption to limit CPU usage to a specific processor (#583)
Input
- Added options to configure
PaddingandFactorindependently for each axis (#576) - Added an option to invert input feedback direction (elishacloud/dinputto8#15)
- Added an
EnableCursorClipoption usingClipCursor()(#551) thanks to @rebb
Fixed
Direct3D / Rendering
- Fixed lost-device handling throughout the wrapper to better handle Alt+Tab and other device-lost scenarios
- Fixed display mode enumeration order (#584)
- Fixed the display mode bit count returned by
EnumDisplayModes()(#584) - Fixed memory size calculations (#581, #584)
- Fixed
POW2capability reporting to better replicate native Direct3D behavior (#294, #387) - Fixed
TransformVertices()handling to better replicate native Direct3D behavior - Fixed
Viewport::Clear()to use the material correctly and better replicate native Direct3D behavior - Fixed
Viewport::Clear()andClear2()to use the correct viewport when clearing the device - Fixed capability reporting in
EnumDevices(),FindDevice(), andGetCaps()to better replicate native Direct3D behavior - Fixed handling of
READONLYandNOOVERWRITElock flags to better replicate native Direct3D behavior - Fixed texture blending to use
D3DTOP_SELECTARG2where appropriate - Fixed
ValidateDevice()to work correctly even when some device states have not been initialized, better replicating native Direct3D behavior - Fixed edge cases in
StridedVertexhandling - Fixed Level of Detail (LOD) handling
- Fixed
Optimize()andGetClipStatus()to better replicate native Direct3D behavior - Fixed lighting behavior when no material is assigned
- Fixed anti-aliasing handling by limiting it to supported formats
DirectDraw / Surfaces
- Fixed
ColorFill()to prevent a crash when a variable is null (#353) - Fixed color-key copies when the surface format contains unused bits (#536)
- Fixed surface release handling by retaining the interface addresses of the Primary and Backbuffer surfaces
Device / COM Handling
- Fixed the Direct3D 9 reference counter, which could cause a crash when exiting (#553)
- Fixed handling of
DllGetClassObject()forIDirectDraw,IDirectInput,IDirectInput8, andIDirectSound8 - Fixed
CoCreateInstance()andIClassFactoryhandling to prevent crashes in some games - Fixed cases where the device could malfunction if its window was destroyed before the game released the device
- Fixed COM identity handling for IDirectInput (elishacloud/dinputto8#40) thanks to @CookiePLMonster
Vertex Buffers
- Fixed vertex discard lock handling when using write-only vertex buffers (#536)
System / Compatibility
- Fixed
GetDiskFreeSpaceA()/GetDiskFreeSpaceExA()disk space calculations (#548)
DirectInput
- Fixed handling of joysticks with more than 32 buttons in games using older DirectInput interfaces, preventing buffer overflows and crashes (elishacloud/dinputto8#45) thanks to @d-b-c-e
Updated
Performance
- Updated vertex processing to use mixed mode for improved performance
- Updated vertex buffers to use the managed memory pool for improved performance
Removed
- Removed the
DdrawEnableMouseHookoption, which has been replaced byEnableCursorClip