FPGA로 구현한 90년대 게임 PC와 부두 그래픽스 재현
Recreating Voodoo Graphics and a Late-1990s Gaming PC on an FPGA
Hacker NewsFPGA를 활용해 3dfx Voodoo Graphics의 시스템Verilog 구현체(zSST)를 개발하고, 이를 z486 CPU와 결합한 'z486 XL' DOS PC 환경을 재현했습니다.
- 이 시스템은 준비된 삼각형 처리, 텍스처 필터링, 미핑 등 Voodoo의 핵심 기능을 구현하여 *툼 레이더* 같은 고전 게임을 원본 3dfx 렌더러로 구동합니다.
- 소프트웨어와 하드웨어가 분업화된 '고정 기능 파이프라인'의 작동 원리를 깊이 이해할 수 있는 아키텍처적 사례를 제공합니다.
- 현재는 *툼 레이더*에 초점을 맞춘 초기 단계이며, 더 넓은 호환성 확보나 후기 Voodoo 세대 구현을 위해서는 추가적인 시스템 설계가 필요합니다.
z486 CPU를 활용하여 3dfx Voodoo Graphics의 시스템Verilog 구현체인 zSST를 개발했습니다. 이를 주변 PC 하드웨어와 결합한 'z486 XL'이라는 DOS PC 환경을 구축했으며, 이 시스템은 Xilinx KV260 보드의 프로그래밍 로직에서 구동됩니다. zSST는 준비된 삼각형 처리, 텍스처 필터링 및 미핑, 깊이/알파 테스트, 포그 효과 등 Voodoo의 핵심 기능을 구현합니다. 현재 하드웨어 게임 테스트는 주로 *툼 레이더*에 집중되어 있습니다.
Voodoo Graphics는 트라이앵글을 픽셀로 변환하는 고정 기능 파이프라인 구조를 가집니다. 이 과정은 FBI(Frame Buffer Interface)와 TMU(Texture Mapping Unit)라는 두 개의 ASIC으로 분업화됩니다. TMU는 상위 그룹에서 텍스처 데이터를, FBI는 하위 그룹에서 색상 및 깊이/알파 버퍼를 담당합니다. 각 유닛은 전용 64비트 메모리 경로를 가지며, 특히 바이리니어 필터링을 위해 인접한 네 개의 텍셀을 병렬로 읽어내는 방식으로 높은 처리량을 확보했습니다.
시스템의 데이터 처리는 여러 기술적 제약을 따릅니다. 예를 들어, 소프트웨어는 부동 소수점 값을 제출하지만, 실제 렌더링 메커니즘은 고정 소수점(fixed-point)으로 작동합니다. 또한, 바이리니어 샘플링을 위해서는 네 개의 텍셀이 개별 주소에서 필요하므로, 메모리 시스템 설계 시에는 텍셀들을 반복적인 2차원 패턴으로 분산 배치하여 데이터 처리의 병목 현상을 해결하는 것이 중요했습니다.