Sunday, October 28, 2012
By: Matthew Doucette
"To Be Continued..." by Saw Tooth Distortion.
- 3DFX DEMO: To Be Continued... (3MB size)
- 3DFX GLIDE WRAPPER: zeckensack's Glide wrapper (235KM size; source: zeckensack.de/glide; required to run on modern hardware via OpenGL)
- SOUNDTRACK (OPTIONAL): sickmon.xm (785KB size; Fast Tracker 2 Module format; " Sick on Monday" composed by Jussi-Matti Salmela (Elwood) )
"To Be Continued..." was my April 2nd, 1999 contribution to the demoscene, masquerading as a final year Acadia University COMP 4983 final project. It uses 3D hardware acceleration via a Voodoo 2 3Dfx chip, in 640x480 resolution (hi-res at the time) in 16-bit color. It was coded in two weeks, and only used 3Dfx Voodoo 1 features and 2MB of texture memory.
It was released under our former name, Saw Tooth Distortion.
- Code: Matthew Doucette (myself)
- Music: Jussi-Matti Salmela (Elwood); Soundtrack is Elwood's "Sick On Monday".
- Microsoft Visual C++ 5.0
- 3Dfx GLIDE v2.x SDK
- AMD-K6 200MHz CPU
- 8MB Monster 3Dfx Voodoo 2 (came with Doom 2!)
"To Be Continued..." was coded for Voodoo 1 or Voodoo 2 3Dfx cards. A Glide wrapper (or 3Dfx wrapper) is required unless you have a Voodoo 1 or Voodoo 2 3Dfx graphics card installed (doubtful). We suggest Rolf Neuberger's zeckensack's Glide wrapper, linked above.
The AMD-K6 200MHz processors ran Quake slower than Intel Pentium 133MHz processors, due to slow floating point units. Keep in mind Quake was optimized for Pentiums.
All coding was done in Microsoft Visual Studio C++ v5.0 with the 3Dfx Glide v2.x API.
A note about Glide:
"Glide is not a full featured graphics API such as OpenGL, PHIGS, Autodesk CDKTM, or DirectX. It does not provide high level 3D graphics operations such as transformations, display list management, or light source shading. Glide specifically implements only those operations that are natively supported by the Voodoo Graphics hardware. In general, Glide does not implement any functions that do not directly access a Voodoo Graphics subsystem's memory or registers." - 3Dfx
This means is that you have to understand 3D graphics and algorithms to program 3D effects in Glide. Basically, only the inner code of a two-dimensional 3-sided polygon rendering procedure is performed by the graphics card for you.
Screenshot descriptions, in order: 1) Flat Shading, 2) Specular Highlights / Gouraud Shading / Texture Mapping, 3) Environment Mapping / Gouraud Shading, 4) Object Wave / Gouraud Shading / Texture Mapping, 5) 3D Parameterization / Environment Mapping / Gouraud Shading, 6) Phong Shaded Specular Highlights / Gouraud Shading.
Special thanks goes to the following people and companies which helped make "To Be Continued..." a reality. It can be shocking how much actual work goes into the production of even the simplest application.
- Jason Doucette -- For help in all fields and aspects of 3D programming. Jason basically taught me how to program 3D graphics and optimize code.
- Jussi-Matti Salmela (Elwood) -- For composing the musical score for this demo. The song was composed in Fast Tracker 2 before my demo was ever conceived or created. I have always been a big fan of his music. Elwood, if you are reading this, drop me a line.
- Triton -- For creating Fast Tracker 2, the program that Elwood used to composed the musical score for this demo. Triton became Starbreeze Studios, a video game developer.
- Tommy Krul -- For help with texture loading management. His Glide Programming Tutorial and Glide Programming Tutorial 2 articles helped a lot. He is a software developer for Guerrilla Games in Amsterdam and has worked on Killzone for the PS2. Killzone won two IGN awards, PlayStation 2 Best of Show and Best Shooter! Tommy is currently working on Killzone 2 for the PS3! Very exciting work. I cannot wait to check it out. I wish him the best.
- Omar Santiago -- For help with 3Dfx initialization coding. Omar, if you are reading this, drop me a line.
- Andreas Ingo -- For his 3Dfx Programming Secrets which both pointed my to Tommy Krul's articles and help me setup my compiler for 3Dfx-based programming.
- Housemarque Inc. -- For letting me use their MIDAS sound system, released with full source code, for free in my non-profit demo.
- 3Dfx -- For creating the best 3D accelerator graphics card around (at the time), and releasing a free SDK to allow me to program the demo.
Old notes by myself, posted on matthewdoucette.com before the page you are reading now existed.
These are examples of my real-time graphics programming using 3D Accelerated graphics cards. Specifically, I programmed in Glide for 3Dfx based cards. Through the use of Glide Wrappers (also known as 3Dfx Wrappers) my work will now play on most windows (DirectX based) systems. I suggest zeckensack's Glide wrapper. (Thanks Rolf Neuberger, for creating this wrapper which enables me to showoff my old work!) Without a glide wrapper, you could only view my work on a 3Dfx card, which you probably do not have.
"To Be Continued..." was first presented at Acadia University in April 1999 for my COMP 4983 final project. It is a real-time 3D accelerated graphic demo, entirely self taught. I coded it and Elwood (Jussi-Matti Salmela) composed the musical score ("Sick On Monday"). It showcases my abilities in real time three dimensional computer graphics rendering, 3Dfx, and music integration.
It was my first attempt at programming...
...a C/C++ program larger than one hour's work
...a 3D graphics chip, the 3Dfx Voodoo 2
...a 3D chip directly via the chips hardware registers (using Glide), not via a simplistic 3D graphics API such as DirectX. Keep in mind 3D chips do not actually do 3D calculations, other than texturing. Even the shading had to be fully coded.
...a sound system within a program.
All in all, it turned out well.
- Demoscene - Wikipedia
- scene.org - A site dedicated to the demoscene
- Fast Tracker - Wikipedia
- 3Dfx - Wikipedia
About the Author: I am Matthew Doucette of Xona Games, an award-winning indie game studio that I founded with my twin brother. We make intensified arcade-style retro games. Our business, our games, our technology, and we as competitive gamers have won prestigious awards and received worldwide press. Our business has won $180,000 in contests. Our games have ranked from #1 in Canada to #1 in Japan, have become #1 best sellers in multiple countries, have won game contests, and have held 3 of the top 5 rated spots in Japan of all Xbox LIVE indie games. Our game engines have been awarded for technical excellence. And we, the developers, have placed #1 in competitive gaming competitions -- relating to the games we make. Read about our story, our awards, our games, and view our blog.