Sunday, January 13, 2019
By: Matthew Doucette
(Note: This page used to be a part of my online resume at matthewdoucette.com, so it reads as a portfolio piece.)
Everything on this page is self-taught, with help from Jason Doucette in 3D programming (he invented the 3D formula in grade 8), demo effects, procedural 3D modelling, and more.
DOS Real-Time Graphics (1997)
These are examples of my real-time software-rendered graphics programming. All coding was done in Borland Turbo Pascal in MS-DOS. All effects are coded in Mode 13h (320x200x256). This is all self-taught.
A note about mode 13h: As this mode is now outdated, many forget about the problems and restrictions of this mode:
- The 320x200 resolution is not square (320x240 would be square) on the 4:3 aspect ratios that were used back then.
- The color range is only a 256 color palette out of a choice of 262,144 possible colors. This makes it extremely difficult to have shaded textures, as only one shade of a texture should use up the majority of this palette. You can probably remember the problems id Software had with this restriction with DOOM and DOOM 2, and their solution was one of the best there is. (2019 Update: What was then a restriction is now a retro aesthetic!)
- There is only one video page of memory. This makes page flipping more intensive than necessary. Instead of changing a 4 byte pointer to display the already-rendered page, it's necessary to copy all 64,000 bytes of the rendered frame from CPU RAM into video RAM for every frame of the animation.
- Last, but not least, this is a software mode. There is no hardware acceleration involved. Every pixel rendered has to be individually instructed to be plotted on the screen. Also, along with hardware acceleration came software API support. There is no software API support in this mode either. This means that you had to understand 3D graphics and algorithms to program in mode 13h. Directx and opengl now handle all the complexities of 3D graphics for you.
Screenshots:
Modified from 320x200 (non-square pixel) original resolution to 267x200 to maintain 4:3 aspect ratio.
Starting at the top-left to right:
-
Texture Blur
-
Blur Drop
-
Spinning Cloud (Particle System / Texture Blur)
-
Flat Shading / Specular Highlights
-
Polygon Glenz
-
Gouraud Shading (polygon coloring emulates texturing)
-
Line Tunnel (wire mesh)
-
Object Wave (Flat Shading) (see "To Be Continued..." flag effect)
-
Blur Motion
-
Gouraud Texture Mapping / Plasma Texture
-
Texture Plasma (morphed left/right and up/down)
-
Plasma Polygon Glenz
-
Flat Shading
-
Screen Drop + Kathy Ireland
-
Flat Shading / Gouraud Texture Mapping
-
Texture Blur / Gouraud Texture Mapping
-
Simple Texture Plasma (morphed left/right only)
-
Flat Shading / Gouraud Texture Mapping
-
Flat Shading / Gouraud Texture Mapping
-
Polygon Tunnel
That is all.
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 $190,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.