Ieri sera su spacctorium è stato sollevato un dubbio su se sarebbe possibile o meno emulare eseguibili Windows sulla #SalaMuseoGames. All'inizio ho detto che in teoria si, ma in pratica no, dopo che tutti i miei tentativi risalenti a pochissimo tempo fa sono sempre falliti in partenza... Però poi ci ho voluto pensare un attimo, e mi sono chiesta: davvero se Boxedwine non esegue qualcosa, tutto il resto gira talmente male che ci dobbiamo accontentare di non avere un cazzo? A quanto pare, la risposta è no. 😜
Boxedwine è praticamente un emulatore x86 che include un sistema Linux striminzito e una runtime Wine vecchissima (per qualche motivo non sono riuscita a far partire versioni più nuove lì dentro), e quindi anche con pesanti mancanze di compatibilità, che può girare nel browser. È abbastanza impressivo, ma dai miei test, quelle pochissime volte che qualcosa riesce a girare, lo fa veramente male, per colpa degli strati. Mi chiedevo quindi se magari ci fosse qualcosa di meglio, e cado quindi su v86, che già conoscevo da tempo ma non avevo realizzato prima quanto fosse basato: usa una tecnica di codegen WASM per sfruttare il JIT del browser come JIT del motore x86 (che è l'unico modo praticamente, il browser può ricompilare JIT il codice che deve eseguire, ma questo codice non può a sua volta ricompilarne altro). 🪨
In sostanza, questa soluzione è molto più veloce di quanto i miei test superficiali (ad esempio, navigando in Windows Explorer) mi portavano a pensare (per quanto Windows di 20 anni fa riesce ad essere sorprendentemente reattivo lì dentro, persino su browser mobile, dove invece Boxedwine si impalla al suo boot), e credo sia lo stato dell'arte. Fino a poco fa ho dovuto risolvere (o aggirare...) dei problemi (tra cui uno veramente stupido per l'audio su Windows 2000, ho aperto una issue mezza per niente aiuto sono tremenda), ma poi ho finalmente potuto far partire uno dei giochi vecchi che avevo da parte sul PC, e... 🤫️
I margini di miglioramento comunque ci sono. Innanzitutto, magari 9x gira meglio per alcuni giochi, e quindi nel caso si preferisce quello; poi, per quanto i Windows d'epoca non avessero tutto questo bloat, penso che almeno qualche FPS in più uscirebbe fuori togliendo vari servizi inutili (e uccidendo Explorer); se tutto va male poi possiamo tentare (dato che abbiamo i sorgenti illegali) di ricompilare componenti di Windows con ottimizzazioni o robe, e infine potremmo sempre implementare delle hack in v86, anche specifiche per ogni gioco (praticamente HLE). L'hosting soltanto potrebbe essere rognoso, perché le immagini disco vanno preparate in un modo che non vi sto a spiegare ora, ma ci sarà da impazzire (non tanto per il sistema base, ma coi giochi di mezzo si). 😷