As I play a lot of games from this era, I thought I'd make a guide on what I do when playing these games, troubleshooting issues, general improvements, etc.,
Fair warning, I exclusively use loonix which generally has much better compatibility with older windows programs.
What does 'old' mean in this context? I think a good strict definition would be any game that is using the PE32 format and targets a Windows desktop operating system. Therefore, postdating DOS applications and predating 64bit applications. DOS applications would have their own guide using dosbox or similar.
Wine specific details will be displayed in this color, apparently called 'light coral'.
DLL Overrides
When an application requests to load a DLL file, it will first check the immediate directory the executable is loaded in. This allows you to easily apply and remove DLL overrides without impacting the rest of your system. You should NEVER be adding DLLs to system32 or syswow64 manually.
Important! You must use the location of the actual game executable. Some applications use shortcuts or launchers that are in locations different from the actual game executable. When the game is running you should be able to use the Windows Task Manager to identify the location of the executable.
This is not always true for wine! If a builtin version of a DLL is available, it will always prefer this first unless instructed to load the native version first. This means when trying to override e.g., ddraw, dsound, d3d8, d3d9, … you will need to apply a native override. This is done for you when using winetricks.
DirectX
Figuring out what DirectX version the game uses
The easiest way is to simply check PCGamingWiki e.g.,https://www.pcgamingwiki.com/wiki/Gothic#API lists Direct3D 7 and https://www.pcgamingwiki.com/wiki/Fallout#API lists DirectDraw 3.0a
I just want to make my fucking game work!
DirectX 7 or older
Not applicable to Wine users.
Use WineD3D. Yes, this applies to non-Wine users, it's the Wine implementation of the DirectX APIs. You can download it here: https://fdossena.com/?p=wined3d/index.frag Inside the zip file you will find a directory which contains a collection of 32bit DLLs — the two we care about are actually just ddraw.dll and wined3d.dll, but it doesn't matter if you use all of them. As stated above, you want to place these next to the actual game executable.
DirectX 8 to 11
Wine users just need to install dxvk via winetricks.
Use DXVK, a Vulkan-based implementation of D3D8, 9, 10 and 11: https://github.com/doitsujin/dxvk/releases/latest Despite not stating such, it works fine on Windows.
Download the latest version under `Assets`: You will likely need something like 7zip to extract the tar.gz on Windows. You want to navigate inside the archive to
/dxvk-2.5.2/x32/
(Where 2.5.2 is the version of the DXVK you downloaded) and as stated above, you want to place these next to the actual game executable.You can tell if DXVK is being used because it will create a file with the name of the executable and `.dxvk-cache` extension in the same directory.
DXVK also supports a configuration file, you can find the reference file here: https://raw.githubusercontent.com/doits ... /dxvk.conf
Right click, save as, and move the file to the same directory as the DXVK DLLs. Some options there are of general interest e.g., forcing vsync, MSAA or anisotropic filtering.
EAX
TODOEnvironmental Audio Extensions. Can you believe there was a time when developers gave a shit about audio physics in games? Some readers may be surprised to learn that audio in games used to be significantly more advanced. EAX was pushed by Creative Technologies, used as a selling point for their soundcards.