This is port of Wine 1.7.55 to Windows 95/98/Me. It requires OpenGL 2.1 with BGRA extensions.
This is only DirectX wrapper, if you need ready-to-use package for running DirectX, OpenGL or Glide application and games use this: https://github.com/JHRobotics/softgpu
Important: some application still need original DDRAW.DLL, don't just overwrite it!
- Install latest DirectX redistributable (DX8 for Windows 95, DX9 for Windows 98/Me
- Go to
WINDOWS\systemfolder - Copy
ddraw.dlltoddsys.dll - Edit
ddraw.dllin hex editor and replace all (ASCII) "DDRAW.DLL" to "DDSYS.DLL" (this is because system DDRAW register some function for 16-bit applications, if this registration goes to wrong DLL, results are fatal!) - Rename
d3d8.dlltomsd3d8.dll - Rename
d3d9.dlltomsd3d9.dll - (only for 98, 95) Copy
ddraw_98.dllto this folder and rename toddraw.dll - (only for Me) Copy
ddraw_98.dllto this folder and rename toddrawme.dll - Copy
d3d8_98.dllto this folder and rename tod3d8.dll - Copy
d3d9_98.dllto this folder and rename tod3d9.dll - Copy
wined3d.dll,winedd.dll,wined8.dll,wined9.dllto this folder - (only for Me) you cannot overwrite DDRAW.DLL, but is hack for it, add this to registry (
ddrawme.reg):
REGEDIT4
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\KnownDLLs]
"DDRAW"="ddrawme.dll"
This basically place ddrawme.dll instead ddraw.dll for most applications.
- Run
dxdiagand check result
Although this fork of Wine is mainly designed for use with Windows 9x (95, 98, Me) it is possible to use it with Windows 2k/XP. It is useful when is available OpenGL acceleration but not DirectX acceleration (VirtualBox 6.0) or something in DX support is missing (usually DX6 and DX7: VirtualBox 5.1, VMware Workstation).
- Boot to save mode (hold F8 during POST)
- Go to
WINDOW/system32 - rename
ddraw.dlltoddsys.dll(this is important!) - Rename
d3d8.dlltomsd3d8.dll - Rename
d3d9.dlltomsd3d9.dll - Copy
ddraw_xp.dllto this folder and rename toddraw.dll - Copy
d3d8_xp.dllto this folder and rename tod3d8.dll - Copy
d3d9_xp.dllto this folder and rename tod3d9.dll - Copy
wined3d.dll,winedd.dll,wined8.dll,wined9.dllto this folder - Go to
WINDOW/system32/dllcache(folder is hidden) - Copy new
d3d8.dll,d3d9.dllandddraw.dllfromsystem32to here and overwrite files (OR delete these files in this folder). If you don't do it, the system simple recover replaced files back, - Reboot to normal mode
- Run
dxdiagand check result
Very important things to known is that in Windows XP system opengl32.dll is calling ddraw.dll so if you only simply replace ddraw.dll with Wine you will get ddraw.dll ↔ opengl32.dll ↔ ddraw.dll ↔ opengl32.dll loop. As solution to this problem special ddraw.dll which is only wrapper to another DLL but it decide based on stack trace which DLL (Wine or system) call.
Look to switcher.c to see how it works
wined3d.dll- main runtimewined8.dll- DX8 interfacewined9.dll- DX9 interfacewinedd.dll- DirectDraw, DX6, DX7 interfaceddraw_95.dll- switching library between Wine replacement and system (version 4.8.0.400, for 95)ddraw_98.dll- switching library between Wine replacement and system (version 4.9.0.904, for 98/Me)ddraw_xp.dll- switching library between Wine replacement and system (version 5.4.0.904, for XP)d3d8_95.dll- DX8 switcher between Wine and MS DLL (4.8.0.400, 95)d3d8_98.dll- DX8 switcher between Wine and MS DLL (4.9.0.904, 98)d3d8_xp.dll- DX8 switcher between Wine and MS DLL (5.4.0.904, XP)d3d9_98.dll- DX9 switcher between Wine and MS DLL (4.9.0.904, 98)d3d9_xp.dll- DX9 switcher between Wine and MS DLL (5.4.0.904, XP)
(There is no d3d9_95.dll, because DX9 isn't supported on Windows 95, you can use d3d9_98.dll if you want experimenting with DX9 and Win95.)
Some application are broken when run in Wine (Half-Life for example), bud most of need doesn't require 3D and works with 2D software rendering. To switch individual application from Wine to System DDraw, set under HKLM\Software\DDSwitcher string key with application exe name to system. Example for already mentioned Half-Life:
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\DDSwitcher]
"hl.exe"="system"
It is also possible do it for DX8 and DX9, only difference is registry key which is HKEY_LOCAL_MACHINE\Software\D8Switcher or HKEY_LOCAL_MACHINE\Software\D9Switcher.
Possible values are
wine= calls go to Wine DLLsystem= calls go to original system DLLnine= DX9 calls go to mesa99.dll (Mesa3D Nine driver)ninemore= DX8 and DX9 calls go to Mesa Nine drivernineforce= same asninemorebut force to use Nine driver even if is not supportedsomeother.dll= file name of another wrapper. Can be use as combination with SwiftShader for example.
You need:
- MinGW
- GNU Make
- NASM
Copy config.mk-sample to config.mk, now edit this file and adjust settings. After run make:
make