Hacker News new | ask | show | jobs
by prmoustache 905 days ago
> Steam will drop Windows7/8 support January 1, 2024[1], Vista and XP support got dropped a long time ago. Meanwhile they still sell Win95/98 games on the Steam store, which won't run well or at all on a Windows10/11.

Why wouldn't they work well? Every time backward compatibility is mentionned, Microsoft Windows is praised as the best example of it and people brag they can still run everything they used to run in 1995.

5 comments

This isn't really true beyond basic Windows GUI only programs. For example, most 2D Windows games made before the mid-2000s used a rendering API called DirectDraw. On Windows 8 and newer, DirectDraw goes through some sort of fallback rendering path and these games won't run at more than around 30 FPS with bad frame timing. The same thing happened with games that used 8-bit color with hardware palettes. Windows 8 and newer will only run at 32-bit color (the "run with 256 colors" compatibility setting was changed to just put a low color filter over the system graphics), so they are broken as well.
DirectDraw is an incredibly simple API (it doesn't even have 2D primitives - just blitting rectangles of pixels from one surface to another). AFAIK the fallback is basically doing that in software - since this is plenty fast these days - and letting the compositor handle the actual screen update. There's no reason why this would result in 30 FPS even on 20-year-old hardware, and indeed I regularly play a DirectDraw game from 1999 on Win11 without such issues.
They stopped that approach after the XP release as there was increased focus on security (more compatibility hacks = more surface area), users were able to update software online, and the sheer amount of software users could run. The old hacks for classic games are still in there though.
Well, there is overhead in testing additional windows versions, the libraries you use may use only deprecated SSL versions, and one needs to be careful not to connect them to the public internet because of unpatched security issues. And it does not allow the use of new platform features… iOS is worse: you can’t roll back iOS updates, so you need to keep one piece of hardware around for each version you test.
Microsoft has great backwards compatibility, but it isn't perfect. Those games might be coded to 1990s standards, e.g. using old graphics APIs that don't support modern GPUs.
Which ones? Apart from DOS games and windows 3.x which I would treat separatly the only graphics api I could think of was Glide for which there are modern wrappers like nglide.
Parts of DX5 and previous, such as the "retained mode", are missing from current versions of Windows entirely. Much of the remaining implementation is buggy and introduces render artifacts.

Open source projects such as dgVoodoo offer a solution to run old games, by re-implementing old DirectX and Glide on top of current DirectX [1], similar to how Wine runs DX games on Linux on top of OpenGL or Vulkan.

[1]: https://github.com/dege-diosg/dgVoodoo2

dgVoodoo2 unfortunately is not open source, and its author has stopped regular development (keeping it at small maintenance fixes) some time ago. I can only hope that projects like WineD3D for windows[1] can make up for it in the long term, but we're one breaking Directx update away from going back to the start.

[1]https://fdossena.com/?p=wined3d/index.frag

Retained mode was deeply unpopular even back when it was supposed to be the flagship API, for good reasons (it was slow as hell), so the games that relied on it for support can literally be counted on both hands.

That aside, the only other old game API that I can think of that's gone for good is DirectPlay, which generally means no multiplayer for games that depend on it as the only option, but otherwise doesn't affect them.

People brag about a lot of things and windows compat is better than e.g. macOS but recent windows actually can't even run a good number of other MS software of the 95 era.