Boxedwine (Wine on multiple platforms)

Topic actions

Reply 180 of 184, by Jorpho

User metadata
Rank l33t++
WDStudios wrote on 2021-06-21, 18:13:

OMG. I'd heard that there had been attempts to make a 64-bit version of NTVDM, but one only worked with DOS programs and I forget what the other's issue was.

You may be thinking of MS-DOS Player. (If I'm not mistaken, both WineVDM and MS-DOS Player use CPU emulation code derived from MAME/MESS.) And there is a thing based on the leaked source code of Microsoft's NTVDM for non-Intel platforms, which would be rather illegal.

Reply 181 of 184, by danoon

User metadata
Rank Member

Status Update

Gog.com approved the Linux version of Boxedwine for the game, The Voodoo Kid. Now that game is available on Windows, Mac and Linux on Gog and Steam. All 3 builds are using the x64 multi-threaded version of the CPU emulator. This is a good start, but I still have some work to do on the Mac build before I can say all 3 platforms support 3D graphics.

As for the Mac build, I had 2 choices to fix the GL frame buffer issue. I could port over what Wine did in their mac driver, or I could try Vulkan. Since Mac deprecated OpenGL I decided spend my effort on Vulkan. Marshaling Vulkan from 32-bit emulated land to 64-bit host is a bit more effort than I would have thought. A lot of Vulkan types have different sizes between 32-bit and 64-bit. Also Vulkan uses a lot of structures and in those structures they have pointers to other structures, so all of the pointers need to be marshaled too. And on top of that, Wine 6 is the first version of Wine to include Direct3D to Vulkan translation, so I had to get Wine 6 to work with Boxedwine. That ended up being a bigger issue than I would have thought too. So progress has been slow but it is moving forward. Currently all the boiler plate code for the marshaling is done, Wine 6 file system is built for Boxedwine and it loads Vulkan with the first couple of calls successfully running on my NVidia GPU.

Of course, even if I finish the Vulkan work, there is no guarantee it will work well enough on Mac since Mac doesn't support Vulkan, I would have to use MoltenVK to translate Vulkan to Molten. And from what I understand that isn't perfect yet.