6 ms·
[[Citation Needed]]. Other than 16-bit software on 64-bit Windows, do you have an example?
by Arainach 4y ago
[[Citation Needed]]. Other than 16-bit software on 64-bit Windows, do you have an example?
- monocasa 4y agoA lot of games, Red Alert 2 off the top of my head. Never got it running even in compatibility mode and changing the bit depth.
- kgeist 4y agoAccording 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)
- smoldesu 4y agoI hate to be the "works on my machine" guy, but there seem to be multiple reports of it running perfectly fine: https://appdb.winehq.org/objectManager.php?sClass=application&iId=167 https://appdb.winehq.org/objectManager.php?sClass=applicatio... However, I sympathize with the general funkiness of running old games. It's very difficult to play the original Diablo 2 through Wine unless you emulate a virtual desktop, which is frustrating to set up. If you're willing to give it another try, the Lutris script should handle almost everything needed to configure it right: https://lutris.net/games/command-conquer-red-alert-2/ https://lutris.net/games/command-conquer-red-alert-2/
- monocasa 4y agoAll of your citations seem to be Wine focused. I said that it works well enough under Wine; it's later Windows versions that don't run it well.
- barbs 4y agoI've run Diablo 2 just fine using Wine on various machines - the only issue being the inability to play fullscreen. I feel like I had issues with the original Diablo, however. Maybe that's what you meant?
- ChuckNorris89 4y ago>A lot of games, Red Alert 2 off the top of my head. Never got it running even in compatibility mode and changing the bit depth. Mate, I played Red Alert 2 off the original 1999(?) ISO last month on my Windows 11 installation. I had to copy some missing deprecated Direct Draw DLLs that don't ship with modern Windows anymore and everything worked. If you would have Googled the issue, you would have found tons of forum and reddit posts explaining how to run it on modern Windows. You can't expect modern Windows to ship 20+ year old DLLs that allow running Windows 98 APIs as that's a major security vulnerability since older APIs had direct hardware/memory access without any kind of checks and balances. But if you Google a bit, the workarounds for compatibility are available. Also, a lot of games and apps in those days would basically "hack" Windows and hook into various process and drivers in non standard ways and use various undocumented APIs so it's no wonder they don't work in later versions of windows anymore regardless of the compatibility setting you use.
- planede 4y ago> You can't expect modern Windows to ship 20+ year old DLLs that allow running Windows 98 APIs as that's a major security vulnerability since older APIs had direct hardware/memory access without any kind of checks and balances. That doesn't make sense. If those old DLLs could bypass some security protections in Windows than that would be still a major vulnerability in recent Windows itself.
- CRConrad 4y agoMakes sense to me: Exactly, that's why they're not shipped with recent Windows.
- AshamedCaptain 4y agoNo; the point is that if a USER SPACE library can compromise the security of Windows the operating system _in any way_ then that by definition is a Windows issue, not an issue of the library. E.g., Wine ships other implementations of the same libraries and this causes zero extra security problems in Linux.
- sgarland 4y agoI'd just like to mention that at least for Windows 10, this specific problem [0] is solved. I love RA2, and still play it. [0]: https://cnc.community/red-alert-2/how-to-play https://cnc.community/red-alert-2/how-to-play