Un desarrollador ha recreado con éxito la experiencia de los juegos de PC de finales de los años 90 mediante la implementación de una versión en SystemVerilog de la tarjeta 3dfx Voodoo Graphics, denominada zSST. Este proyecto combina el renderizador con una CPU z486 y el hardware de PC circundante en una placa Xilinx KV260, un Sistema en un Chip (SoC) moderno basado en FPGA. El resultado, denominado z486 XL, permite que títulos clásicos como Tomb Raider se ejecuten utilizando su tubería de renderizado 3dfx original dentro de la lógica programable de la FPGA.
La implementación de zSST refleja las características principales de la Voodoo Graphics original, incluyendo triángulos preparados, filtrado de texturas, mipmapping y efectos de niebla. El proyecto se basa en el código fuente de Glide de 1999 y la especificación SST-1, que definen un contrato específico entre el software y el hardware: la CPU anfitriona maneja las transformaciones de geometría 3D y la iluminación de vértices, mientras que el acelerador FPGA se encarga de la rasterización y las operaciones píxel por píxel. Esta tubería de función fija permite que la tarjeta alcance un pico de un píxel con textura y prueba de profundidad por ciclo de reloj. Para replicar esto, el desarrollador implementó una tubería de múltiples etapas donde diferentes píxeles se procesan simultáneamente; por ejemplo, un píxel se está texturizando mientras uno anterior se está mezclando y escribiendo en el framebuffer.
Este diagrama ilustra la arquitectura de hardware original que el proyecto zSST pretende replicar utilizando lógica FPGA moderna.
Esta figura ilustra el diseño de la tubería utilizado para mantener un alto rendimiento a pesar de las complejidades de la latencia de memoria moderna.
Uno de los principales obstáculos de ingeniería fue replicar la arquitectura de memoria de la tarjeta original. La Voodoo original utilizaba dos ASICs dedicados: la Unidad de Mapeo de Texturas (TMU) y la Interfaz del Buffer de Cuadros (FBI), cada una con su propia ruta de memoria de 64 bits hacia una memoria EDO RAM dedicada. Esto permitía el acceso paralelizado a las texturas y al framebuffer. En contraste, la placa KV260 utiliza memoria DDR compartida accedida a través de puertos AXI, donde el renderizador debe competir con la CPU y el sistema operativo por el ancho de banda. Debido a que las pequeñas solicitudes de memoria en esta plataforma sufren de una alta latencia (aproximadamente 28 ciclos a 100 MHz), el desarrollador tuvo que diseñar un sistema de memoria complejo que involucra cachés y búferes de reordenamiento para mantener alimentada la tubería. Si bien la ruta aritmética del renderizador es relativamente sencilla, el proyecto demuestra que el desafío más significativo en la recreación de hardware a menudo reside en gestionar el movimiento de datos requerido para mantener operaciones de alto rendimiento. Actualmente, el sistema se valida principalmente en Tomb Raider, mientras que la compatibilidad más amplia y el soporte para generaciones posteriores de Voodoo permanecen como trabajo futuro.
Esta imagen explica el principal obstáculo de ingeniería: la transición de rutas de memoria dedicadas a un sistema DDR compartido de alta latencia.