Principe de la recompilation

Chaque démo d'origine, écrite pour DOS, est exécutée d'abord dans un émulateur x86. L'émulateur consigne chaque bloc d'instructions réellement exécuté pendant toute la durée du programme. Cette trace est ensuite traduit en code C où chaque instruction source est reproduite à l'identique, avec le même nombre de cycles d'horloge que sur la machine originale. Le code C ainsi généré est compilé en WebAssembly, ce qui permet son exécution native dans le navigateur sans plugin supplémentaire.

Modélisation du matériel

Le WebAssembly intègre des modèles logiciels du matériel auquel la démo accède : le timer du PC, la carte VGA et le Sound Blaster. Ces modèles reproduisent les accès aux ports, les interruptions et les rafraîchissements d'écran exactement comme sur le matériel réel. La validation se fait « événement par événement » : chaque interruption, chaque accès de port et chaque image sont comparés à la sortie de l'émulateur pour garantir une correspondance temporelle précise.

Exemples de démos et performances

Le site propose quatre productions emblématiques : Unreal (Future Crew, 1992), Second Reality (Future Crew, 1993), Crystal Dream II (Triton, 1993) et Stars : Wonders of the World (NoooN, 1995). Toutes fonctionnent à 70 Hz, fréquence native du mode VGA utilisé par les démos. Sur un écran capable de 70 Hz, 140 Hz ou plus, l’animation apparaît fluide. Les fichiers originaux sont servis sans modification et lus à l’exécution, ce qui préserve l’intégrité du contenu tel qu’il était distribué dans les BBS.

Limites et perspectives

Le processus repose sur la capacité de l’émulateur à capturer chaque instruction ; toute instruction non prise en compte entraînerait une divergence entre le modèle et le comportement réel. De plus, la précision du modèle matériel dépend de la fidélité des implémentations du timer, de la VGA et du Sound Blaster, ce qui peut limiter la reproduction exacte de certains effets audio ou graphiques très spécifiques. Malgré ces contraintes, la méthode démontre qu’il est possible de conserver le timing cycle‑par‑cycle d’applications DOS anciennes tout en les rendant accessibles via le Web moderne.