This is an oldie. I used to play a lot of Quake (the original FPS) with my college buddies. Back then the first 3D accelerator cards were coming out. We were still playing with software rasterization though. This is the times when I was starting to get interested in 3D as well. So naturally wanted to see how these graphics were created. I decided to write my own 3D software rasterizer that read the Quake data files.
It reads Quake I .bsp files and lets you walk around ala Quake. All the texturemapping stuff is implemented in low level assembly (x86). Despite many people, I think writing low level assembly for fast texturemapping and math stuff is quite fun (or at least was fun. It’s been a number of years since I wrote this one. Since then graphics capabilities on PC’s increased so much that everybody takes high quality bi-tri-linear texturemapping for granted). In order to use this one, you need the real Quake (you need real Quake data files for viewing). I also included a tool to extract the .bsp file from the .pack files. Maybe you can use this to find secrets in the game :).