I worked on the emscripten/wasm build of boxedwine. I can answer some questions.
The project has been around in some form for 9 years. It was originally in java, then straight c, now c++. Main author previously worked on jdosbox. I previously ported jdosbox to become jsdosbox (via GWT) a decade ago.
If someone releases an old Windows app for Mac and Linux using this and Electron I hope a story about it reaches HN. It'd be the ultimate combination of tech we love to hate. :)
> A while ago I was pondering getting emscripten working under Wine, but realised that it's not quite as simple as a typical program (because Wine relies on being able to just provide a compatibility layer for syscalls, so the compatibility layer for x86 would have to be provided by the port to emscripten).
> Seeing this post, I wondered if you'd found some cunning way around this so downloaded the project. No, you've just gone straight ahead and implemented an x86 emulator! Ok, but how is wine able to run on bare metal? Oh right, you've actually implemented parts of linux, including most of the syscall interface, your own executable loader, parts of procfs and assorted special devices! Alright, but (as Alon asks) how does this actually render things? Ah I see, you've implemented your own display driver in Wine which, when methods are invoked, dispatches interrupts to the emulated CPU which then forwards and translates the interrupt to an equivalent sdl call (with opengl working a similar way, but with a dll)!
BoxedWine does OpenGL passthrough on platforms where available.
This does not extend to the WASM/WebGL, but I really tried! I was able to get it working for some simple OpenGL applications with help from gl4es, but was unable to make it work with textures beyond one example [1].
I would appreciate some assistance if anyone has the required skills.
ReactOS is a full OS, so it needs to run in a VM which requires disk images. Boxedwine emulates everything it needs and can use the users file system directly. So you can just drag a setup or game that doesn't require installation right into the UI and it will work.
brian_herman|4 years ago
mywacaday|4 years ago
josephg|4 years ago
Networking would be tricky, but you could encapsulate TCP over a custom websocket tunnel.
ant6n|4 years ago
re|4 years ago
EvilEy3|4 years ago
avidiax|4 years ago
Very light games are playable. I'm sure that legacy line-of-business software would have zero trouble.
kev_emu|4 years ago
arilotter|4 years ago
fouc|4 years ago
etaioinshrdlu|4 years ago
This is not just Qemu running in a browser, folks. Someone put a huge amount of work into this.
heavyset_go|4 years ago
jdmoreira|4 years ago
infinityplus1|4 years ago
DoctorOW|4 years ago
emayljames|4 years ago
aidanhs|4 years ago
> A while ago I was pondering getting emscripten working under Wine, but realised that it's not quite as simple as a typical program (because Wine relies on being able to just provide a compatibility layer for syscalls, so the compatibility layer for x86 would have to be provided by the port to emscripten).
> Seeing this post, I wondered if you'd found some cunning way around this so downloaded the project. No, you've just gone straight ahead and implemented an x86 emulator! Ok, but how is wine able to run on bare metal? Oh right, you've actually implemented parts of linux, including most of the syscall interface, your own executable loader, parts of procfs and assorted special devices! Alright, but (as Alon asks) how does this actually render things? Ah I see, you've implemented your own display driver in Wine which, when methods are invoked, dispatches interrupts to the emulated CPU which then forwards and translates the interrupt to an equivalent sdl call (with opengl working a similar way, but with a dll)!
> Wow!
kev_emu|4 years ago
[1] - https://kevodwyer.github.io/boxedwine-examples/v1/boxedwine....
etaioinshrdlu|4 years ago
That alone is quite interesting if true, and probably useful outside of just running Wine.
laumars|4 years ago
Basically this project is a Linux emulator but rather than exposing libc APIs it exposes Win32 et al via WINE.
Pretty neat idea but comes with all the usual caveats of running Windows software on WINE plus all the new caveats of running C++ in WebAssembly.
Cloudef|4 years ago
userbinator|4 years ago
danoon|4 years ago
https://www.gog.com/game/voodoo_kid
marwis|4 years ago
DownwardFall|4 years ago
Thanks!
remix2000|4 years ago
danoon|4 years ago
fighterpilot|4 years ago
danoon|4 years ago
anthk|4 years ago
I mostly play IF and slashem, but Deus Ex it's game I liked a lot in my teen years.
unknown|4 years ago
[deleted]
kinghtown|4 years ago
nickthemagicman|4 years ago
imagineerschool|4 years ago
excalibur|4 years ago
whollacsek|4 years ago
zaphirplane|4 years ago