6 ms·
According to Raymond Chen, this usually happens when software relies on undocumented APIs or undefined behavior. When Windows removes undocumented APIs or chang
by kgeist 4y ago
According to Raymond Chen, this usually happens when software relies on undocumented APIs or undefined behavior. When Windows removes undocumented APIs or changes behavior not covered by the documentation, such apps break and people blame Microsoft. For example, I remember one app used to programmatically find some kind of "Print" menu in Windows' desktop environment and call it to implement printing functionality. When Microsoft changed the UI of the desktop (shuffled the menu items around) the app broke and people immediately blamed Microsoft, even though the app is to blame because the exact location of the menu item was never supposed to be a public contract. If an app is a widely used one, Microsoft usually used to create "shims" which detected funky behavior like that and corrected it to make the app work again. I think they don't do it anymore after Windows 8, that's why apps started breaking more frequently.
- rcoveson 4y agoIf your plan is to maintain decades of backwards compatibility with software from thousands of third parties, it's going to involve maintaining some originally-undocumented behaviors that people exploited. That's what the wine developers got themselves into willingly, and it's what the Windows devs are increasingly shirking.
- lozenge 4y agoIt's a question of priorities. Microsoft must have realised these edge cases were slowing development down and how many people really want to run a game or a CD burner software from 1998? Of course, this could all have been avoided with a proper universally understood spec like POSIX but it's too late for that now. (And POSIX never had graphics or sound support, which shows how big that project would be, with the churn of the PC hardware from 2D to 3D &etc) The hardware is also starting to protest - no way to run 16 bit instructions in x86_64 mode on a 64 bit processor.
- monocasa 4y agoYou can run 16 bit code in long mode just fine. It's just a different GDT entry like 32 bit code is. Windows didn't cut 16 but mode because of the processor ut because they took the opportunity to increase the max HANDLE table size greater than 16 bit code can address.
- messe 4y agoJust want to point out that not all 16-bit code can run unhindered in long mode. You can run 16-bit protected mode code. But long mode dropped the V8086 mode that made easily emulating 16-bit real mode possible.
- AshamedCaptain 4y agoBut you can switch in and out of long mode, so it is also possible to basically do whatever you want. And you also have hardware virtualization. It is a political decision to drop compatibility for 16 bit Windows and DOS (i.e. it was too much programming effort), don't blame the hardware.
- mmis1000 4y agohttps://www.joelonsoftware.com/2000/05/24/strategy-letter-ii-chicken-and-egg-problems/ https://www.joelonsoftware.com/2000/05/24/strategy-letter-ii... I think this is the price they are(were?) willing to take. If they don't take backward compatibility seriously. Windows won't exist now at first place.
- Cloudef 4y agoMost old games do not work because of old graphics apis. Wine emulates these apis on top of modern graphic apis. Windows users usually need to use wrappers, or wined3d from wine.
- BlueTemplar 4y agoYeah, 3D games using DirectX 8- are a shitshow on Windows Vista+...
- anthk 4y agoDirect Draw games can be slow as hell unless you use a wined3d wrapper.
- BlueTemplar 4y agoInteresting, maybe I'll be able to play Space Empires 5 again ?! Any pointers towards how to use this wrapper ?
- anthk 4y agohttps://fdossena.com/?p=wined3d/index.frag https://fdossena.com/?p=wined3d/index.frag
- BlueTemplar 4y agoThanks a lot, but d3d8 and d3d9 seemingly have no effect, while ddraw fails with "The procedure entry point DDKMTOpenAdapterFromLuid could not be located in the dynamic link library gdi32.dll.", then game's mandatory launcher does open, but then an access violation when trying to launch the game itself from it...
- Cloudef 4y agoYou can try boxedwine too https://github.com/danoon2/Boxedwine https://github.com/danoon2/Boxedwine
- chalst 4y agoMost of what I've read by Raymond Chen is about Windows 95. Does he contradict what people are saying about backwards incompatibility since Windows 8?
- AshamedCaptain 4y ago> According to Raymond Chen, this usually happens when software relies on undocumented APIs or undefined behavior. This may have been the case, but it no longer is. DirectDraw and other _official_ APIs have been removed from Windows, providing no official replacement (other than the ones coming from Wine itself!), and leaving hundreds of programs in the dust. The MS of Chen no longer exists. Or may have never existed... https://en.wikipedia.org/wiki/AARD_code https://en.wikipedia.org/wiki/AARD_code
- int_19h 4y agoDirectDraw has been deprecated for a long time, but it's still there, and it still works. I regularly run games using it on Win11, e.g. https://triumph.net/ageofwonders https://triumph.net/ageofwonders (1999)