Justo cuando pensabas que se nos habían acabado los lugares donde portar DOOM, aparece Ahmed Amer con su CSS-DOS, una descomunal hoja de estilos CSS de 300 MB que ejecuta no solo DOS, sino también Windows 1.0 y, por supuesto, DOOM. Esta vez la hoja CSS no contiene un port de DOOM, sino algo más ambicioso: un PC IBM compatible completo, con un 8086 simulado, 640 kB de RAM y controladores de disquete y VGA. Sí, todo en una sola hoja de estilos. Ya mencionamos que pesa 300 MB, ¿cierto?

¿Cómo se ejecuta un PC dentro de CSS?

CSS no es un buen lenguaje de programación. Hoy tiene funciones y sentencias condicionales, pero en realidad no ejecuta programas en el sentido habitual, es decir, listas de instrucciones que se alimentan una a otra. No puedes cambiar una variable sin dar mil rodeos.

El comportamiento estático que entrega una hoja CSS se ajusta en realidad mejor a la arquitectura de hardware que a la de software, y esa fue la intuición clave que permitió el proyecto. Aun así, no es fácil ni elegante, ni quizás siquiera sensato, como se puede comprobar en el excelente artículo donde Ahmed describe cómo lo logró. Destaca especialmente la guía interactiva de la montaña de locura que es el archivo .css.

¿A qué velocidad corre DOOM?

Hay que admitir que decir que "corre DOOM" es una exageración. Incluso si la hoja CSS ejecutara un IBM-AT a toda velocidad, ese hardware no podría mover el juego a una velocidad jugable. Y no corre ni de cerca a toda velocidad. Como este es un truco gratuitamente extraño, funciona a apenas dos instrucciones por segundo. No dos cuadros por segundo (FPS), sino dos instrucciones a nivel de CPU. Bueno, podría ser peor, al menos no son ciclos de reloj.

Para dimensionar la lentitud: si tienes la paciencia suficiente, puedes esperar las 3 semanas que tarda en arrancar DOS y los 3 meses que tarda en cargar un nivel, para jugar DOOM a 0,0001 FPS.

Nosotros no hicimos las reglas. Dicen que todo tiene que intentar correr DOOM. No dicen que todo tenga que correrlo bien.