| 1. Duality ZF
2. Graphics Technology
3. Domain Hacks Suggest
4. AntiSpam Mailto
6. Full Tilt
7. Space Harrier Clone
8. Arkanoid '97
9. Spring Theory
10. Space Invaders '97
11. Voxel Terrain Technology
12. Graphical User Interface
14. Express Directory
16. Algebra Computer Program
|Xbox 360 Shmup Game
Domain Hacks Suggest
Email Address Encryptor
Arcade Racing Game (Out-Run Clone)
3D Arcade Shooter
Space Invaders Clone
Voxel Engine Technology
Font Designer Utility
DOS Directory Navigation Utility
Algebra Teaching Assistant
October 5, 2005
January 28, 2005
June 12, 2003
February 21, 1999
July 17, 1998
April 7, 1997
December 5, 1996
August 16, 1996
August 15, 1995
February 15, 1995
January 25, 1992
Duality ZF is an upcoming dual play 2D shooter
(shoot'em up / shmup) for the Xbox 360, PlayStation 3, and PC.
Official Website: DualityZF.com
My Graphics Technology Project is the development of a
revolutionary computer graphics technology.
I have placed one hundred percent of my effort into this project for over four years.
My brother, Matthew Doucette,
has joined my effort.
|DOMAIN HACKS SUGGEST|
Domain Hacks Suggest
is an analysis of
580,500 words and short phrases from
Moby Word list
(also available at
The result is
This was my first programming exercise in
(previously named Email Address Encryptor)
is an email address encryptor / obfuscator program.
It will encrypt the 'mailto:' HTML code that contains your
This allows you to publish a fully functional email address
link on your website that is invisible to the majority of spammer's harvesters.
ZoomView is a real time desktop magnifier program for Microsoft Windows.
It enlarges the visible screen area centered on the current mouse position,
so you can take a closer look.
|FULL TILT v0.06|
Full Tilt is a 3D sprite-based racing game (Out-Run clone) designed and created for my final year project (COMP 4983) at Acadia University. The project was finished in a period of ten weeks. This time span includes the proposal, design, implementation and testing of the final product, as well as the documentation.
I chose to program Full Tilt because I have been an avid Out-Run fan since the game showed up in the arcades in 1986. It is popular enough that it is still found in arcades today, over a decade after its release. Classic arcade titles such as Out-Run have always seemed to avoid the PC scene, and when they did show up, the arcade feel was gone. You will notice some of the pictures are the exact images borrowed from the original Out-Run game ROM (most of them slightly modified), and the rest were drawn by myself or created with my programs. For example, the car was rendered by a gouraud shading program I created, using a design created by a mathematical formula that I threw together in a couple of hours. I also could not help throwing in an image of Crowell Tower, my place of residence during my four years at Acadia University.
I designed and programmed a GW-BASIC version of the simple scan-line road engine that these classic arcade racing games used when I was in grade VIII, and decided to call my yet-to-be-made game Full Tilt. Although the engine was coded again from scratch, the engine used in Full Tilt is the same original design. It was chosen because of its speed and simplicity.
The purpose of the project was to showcase my abilities to create a 3D game. It should be noted that this code is all original and self-taught. This includes all algorithms, high-level language, assembly language... everything.
This project showcases the following:
The game has no music or sound effects, as it was not part of the original schedule. I regret that I did not have extra time to program this then, and that I do not have time for it now. As for other details, a few minor things are missing, such as smoke from squealing tires, dirt spinning up from off-roading, and other similar effects that would add more to the game. I would like to eventually port this game over to a fully blown arcade game using hardware accelerated graphics.
The project was never meant to be a true or accurate simulation of a real car, although it incorporates many of the physics required - such as aerodynamics, drag force, acceleration, braking, traction, etc. Such things as centripetal force, weight transfer, and an accurate model of rotational inertia in real 3D were left out due to time constraints, and due to the fact the game was only meant to be a classic arcade game.
[ View entire Full Tilt Screenshot Gallery ]
My best time is 5:19.283 with a score of 94,450,468 points. You get approximately 48,000,000 points for traveling the full distance of the game (if you do it fast) plus 1,000,000 points per second left on the clock. This was not a perfect run, so it is possible to beat. In fact, on another occasion, I got a time of 5:25.something in which I crashed on the first lap. The remaining laps were run as perfectly as I could ever accomplish. My first lap time was 1:04.something, but it is possible to do it in 56.something, meaning I could have run the first lap 7 seconds quicker. This means that a complete run of 5:17.something is possible.
The program should run on a 386+ processor with an FPU, but a Pentium processor
is recommended. It was coded on a 200 MHz AMD-K6, and runs near frame rate during most of
the game on this machine.
|SPACE HARRIER CLONE v0.2|
Space Harrier Clone is a 3D arcade shoot 'em up (shmup) game. Although the engine has been partially started, it is still in the design stages. The game version number is just that of the software engine itself. The game currently runs in all standard and tweaked VGA modes. It runs 65-70+ frames per second in 320x200 and 25-30 frames per second in 640x400 on an AMD K6-200 (Pentium-133 equivalent), with 250 on-screen bullets firing at 160+ shots / second. (7 shots/fire @ 23.3 fires/second).
640x400 Screen Shots:
There are no downloads available at this time.
The sprites in the engine-testing screen shots are all low resolution, borrowed from Space Harrier II and Super Thunder Blade ROMs, both for the Sega Genesis / Mega Drive. The final game (if ever completed) will run on most 3D accelerated cards, and will run at a hefty frame rate, even on non-accelerated (software) machines. This means 30 frames per second minimum, in software. It will run at the monitor refresh rate (as smooth as the hardware allows - 60 to 70 frames per second) on all accelerated machines, and will approach this on non-accelerated machines. It will be the pure smooth and fast arcade shooter that has been absent from the PC scene forever. The vision is a three dimensional Thunder Force 2 (for the Sega Genesis / Mega Drive). The goal is to replicate the pure arcade action feel.
Arkanoid '97 is a game that was never totally completed. This demo is just the engine itself. The only incentive I had to program it to begin with was that the game is an addictive game, and most clones are poorly and incorrectly programmed, which hurts the game's true appeal.
The game was programmed in 360x360 mode X for its 70 Hz frame rate, and its relatively high resolution. It uses 16.16 fixed point for extremely accurate calculations of ball angle and speed. The balls are all drawn with pixel-perfect anti-aliasing with the textured background in real-time. It is impossible to improve the image quality without increasing resolution or colors because the anti-aliasing is already perfect. (Today's 3D accelerated graphics cards that support anti-aliasing cannot perform pixel-perfect anti-aliasing.) The program uses double buffering to its full potential to allow the game to run at 70 frames per second with 75 balls bouncing around the screen on a 486 class machine.
My version is the first version of this game I have ever seen
to use proper physics during the collision of a circular ball with a 90° corner
(including the original arcade, Arkanoid, and the original classic, Break-Out).
The ball can collide with the corner at any angle, and at any point on the ball.
I have seen lots of clones,
and it seems to be that the consensus is that
Arkanoid is considered a fairly
simple game to create.
This is because the only collision detection ever programmed into the clones are collisions
at horizontal and vertical walls (simple negation of X velocity and Y velocity accomplishes
this), and sometimes even a 45° wall (accomplished by swapping X and Y and negation).
Yet, this makes for a boring and often extremely annoying game. You can just imagine the
repetitious patterns that are created from this.
Also, half of the clones (as well as the original arcade) sometimes cannot
detect that two adjacent blocks form a smooth surface,
and not two 90° corners which the ball may arbitrarily hit.
This is poor programming, indeed.
Download: Arkanoid '97 Non-Playable Demo (198KB)
There are 256 balls in the demo version. The program is compiled with TMT Pascal. The 360x360 video mode will work on any 100% register compatible VGA card. I do not hold any responsibility for the program destroying your video card because it can not handle the tweaked mode. On most of today's monitors, this mode does not fill up the entire screen, but usually appears in a letter-box format. This is not what is intended. Please resize the screen to fill up the monitor space, as all other screen modes do. On most of today's monitors, this is done electronically, and it will save these settings the next time you run a program that uses this particular mode. The reason I chose this mode is because, at the time, it was the highest resolution mode with double buffering (i.e. enough space to store, work and display two different screens of information) that I had access to.
Spring Theory is a real time physics simulation of springs. It has gravity and friction incorporated into the engine. This program is truly amazing - you will have to see it in motion to appreciate its accuracy. Please note that object collisions with themselves are not implemented - therefore two separate sections of the same object may travel through each other. Press F1 during the demo for help on controls.
Each time an object is displayed, it is given a random amount of energy (press SPACE to reset the object with new random energy), therefore it will fall and flop around in a different way every time. You can control the friction in real time, which also affects the object in dramatic ways. For instance, in the second picture below, the object is stuck in this position, since the friction is holding it against the wall, and on the floor. If you were to reduce friction, the object will flop to the floor.
Download: Spring Theory (17KB)
This should run on any 386+ machine. However, it has been recompiled for today's faster computers. You will need at least a 200 MHz machine to see the animation at the desired 70 frames per second for most objects. Watch for my next version of this program in full 3D.
|SPACE INVADERS '97 v5.0|
Space Invaders '97 was originally programmed in one day (no kidding) as a result of a boring day at work. It had been a project that I have wanted to do since I have been in grade III, and I have finally set aside some time to create it.
After I showed a few people the game, they kept throwing ideas at me, and every once in a while I would take a half-hour out of the day to program one of them. Because of this, I have implemented lots of ideas and features, and the game has had a ridiculous amount of beta-testing.
The game is surprisingly addictive; any fan of the original game will surely enjoy it. I believe especially that those who think the original (and all of its clones) are slow and boring (the vast majority of them are) will find it to be a refreshing change.
The musical score was composed by Matthew Doucette, and the sounds effects were ripped out of a data file from Epic MegaGames' Jazz JackRabbit.
The original graphics were quite sub-par, as I ran out of time by the end of the day to draw enemies for the game. Thus, the game originally used the system font in ROM for the enemies, which varied from system to system. Now, it still uses the same text drawing procedure, but it uses an 8x14 text font which was created using an old font-drawing program (on this same page) of mine to allow a few frames of animation. Enjoy!
Download: Space Invaders '97 v5.0 (304KB)
The game was programmed on a 486-66 MHz machine, and thus it was designed to run at or near full frame rate (70 fps) on a 486 class machine. A few minor improvements have been made since then on a 200 MHz machine, which have not been tested on the older 486, and therefore the game may now run a little slower. To ensure a consistently smooth frame rate of 70 fps, I would recommend a 200+ MHz system.
The game's sound system is CapaPlay, which unfortunately only supports the Gravis UltraSound (GUS) sound card. The game runs without sound, but you will miss the stereo effects and soundtrack that add a lot to the game. Please note that if you do have a GUS, the sound system will not work properly if ULTRAMID (a program that comes with the Gravis UltraSound) has been run. This is a bug in the sound system, not in my code.
Voxel Terrain is a full 3D photo-realistic terrain rendering engine. The technology was developed independently in two week's time. The code is 100% original and self taught. The detail level can be fully adjusted at each level of distance for any resolution. This is limited only by memory capacity and CPU speed. It currently runs under any Mode-X resolution. There is a lot of room for improvement. I have a ton of original ideas and additions that could be made to this engine.
WITNESS THE POWER OF A 486 CLASS MACHINE:
320x400 Mode-X Screen Shots (scaled to 640x480):
video of Voxel Terrain:
Download: Voxel Terrain (963KB)
The program runs on a 386+ machine. It does not run in virtual environments.
This means a DOS shell from Windows will not work.
You need to run the demo from DOS, booting the computer with HIMEM.SYS and
without EMM386. If you are running Windows 9X, you can simply restart
your computer in MS-DOS mode. You will have to REM out the EMM386 line in your CONFIG.SYS file,
if it exists. If you are running Windows ME, you will need to set the application's properties
to automatically reboot in DOS mode with the appropriate start up information.
Do this by right-clicking on the application, and select 'Properties'. Click on
the 'Program' tab. Click the 'Advanced' button. Check 'MS-DOS mode'. Select 'Specify a new MS-DOS configuration'.
Place the line: "Device=C:\WINDOWS\Himem.Sys" under CONFIG.SYS, and erase all other lines. Erase all lines in
AUTOEXEC.BAT. The program will now run in the proper MS-DOS settings by rebooting the computer when you attempt
to run the program.
The image map was borrowed from a demo scene production, HeartQuake by Iguana - third place winner of Assembly '94. They made this easy by leaving the image map data in memory after their demo halts execution. They told me that they borrowed it in the same manner from a video game. It was probably the original Comanche: Maximum Overkill by NovaLogic, although I have never seen it. August 2006 Update: I ran Comanche 2 via DOSBox, and confirmed that this terrain exists in at least this version. June 2007 Update: Here is a YouTube video of Comanche: Maximum Overkill showing this map.
|GRAPHICAL USER INTERFACE|
GUI is a Turbo Pascal Graphical User Interface unit created in early 1995. The GUI's main purpose was to aid in the programming two image creation utilities. These two project were a sprite editor, and a tile editor / level design program. The GUI would take care of the interfacing details, and allow the editor programs to be programmed with more focus. Unfortunately, these did not get past the design and partial implementation stages.
The file box example below shows some of the features of the GUI unit.
Download: File Box GUI (31KB)
The program will run on a 386+ processor.
MakeFont is a bit-mapped Font Designer Utility. It was created so that I could change the default 8x16 DOS font, and also create my own fonts for my graphics programs. (You will notice that it uses the File Box sample [on this same page], which was created later. This addition to the MakeFont program was completed in a matter of minutes.)
Download: MakeFont (183KB)
The ZIP file comes with a bunch of sample font files, and a REDEFINE.EXE program to change the current DOS font with another 8x16 font.
|EXPRESS DIRECTORY (XDIR) v3.13|
Express Directory (XDIR) is a DOS directory navigation utility
used to replace the DOS command 'CD'.
Apparently, it is similar to NCD (Norton Change Directory),
which I have never had the pleasure to experiment with.
XDIR allows you to change to any directory on your system without typing complete paths.
It is obsolete, as it does not work with Windows 95's long filenames,
nor does it accept path lengths greater than 66 characters - the DOS limit.
Back in the DOS days, though, this utility was very useful.
Anti-Gravity Simulation was a simple program that uses my gravity formula in reverse to make all particles push all other particles away. It was created very quickly, and the first thing that I thought about was that it would make a very cool screen saver. I have yet to implement this as a screen saver.
Download: Anti-Gravity Simulation (16KB)
Please note that this is a very old DOS program made in a matter of minutes, and does not attempt to adjust the simulation to fit your computer's power. The program automatically attempts to synchronize with the monitor's refresh rate of 70 Hz. If your computer can handle this, no matter what its speed, then the program will slow down the animation to fit your monitor's refreshing for a silky smooth animation. However, If too many objects are drawn at once which requires too many calculations for your computer to handle, then the animation may take over 1/70th of a second to calculate each individual frame, and the program will start missing the retrace on every frame. The effective frame rate of the program will then drop to 35 fps or lower.
|ALGEBRA COMPUTER PROGRAM v2.1|
Algebra Computer Program was a program I decided to create for the local science fair. I was interested in programming a computer project to demonstrate my computer skills, but I had to find a topic which could be implemented into a program. Mathematics came to mind very quickly. This idea first struck me the year before, but I did not follow through with the plan. After that science fair, a pair of students won some award with a computer program. The professor who was encouraging me to enter all along said, "That could have been you." So, I made a conscience decision to enter it in the fair next year.
The program was coded in GW-BASIC v3.20 on my Tandy 1000 SX (originally an 8088, upgraded to a 286 with 640 KB of RAM), 2 - 3¼ inch floppies and no hard drive. This was not exactly top-of-the-line equipment. 386 class machines running at 33 MHz were out at this time, hard drives were standard equipment, and I recall a fellow student having 11 Megs of RAM at the time. We had a little laugh about what kind of program would ever require 11 megabytes of memory.
The purpose of the project was to aid the teaching of algebra to students. It has several chapters which teach certain algebra skills, using algebra tiles when appropriate. Algebra tiles were recommended to be used in schools by top mathematics professors at the time. The program also tests and corrects students' answers on all topics covered.
The program was designed from the start to allow more chapters to easily be added.
This is done simply by
creating a new .BAS (GW-BASIC source code) file for it.
The main program automatically locates and loads any
.BAS chapter files found in the same directory that pass the
legitimacy test (the .BAS filenames are not arbitrary; they must contain
encrypted information so that the program knows they are legitimate additions.
This helps prevent people from modifying the program without consent).
This is about as easy as it gets to upgrade / update a computer program.
Download: Algebra Computer Program v2.1 (87KB)
Please note that the program's delay function (used to return the user to
the title screen after a little while) runs too quickly on today's fast computers.
It used to last a few minutes on my 8 MHz 286, but waits only a few seconds
on my 750 MHz Athlon, and even slower on fast machines. Also, the computation of the
CPU speed on today's machine creates many problems. Thus, the program is unusable
on today's machines. Please use DOSBox
to run the program. This will give you a close resemblance of the original experience.
Gravity Simulation is a simulation of Sir Isaac Newton's Law of Universal Gravitation using the planets in our solar system. It was created for the personal satisfaction of 'seeing' Newton's Laws at work (or, rather, to see if they actually do work). The simulation uses data of the planets (mass, speed, and position - found in an encyclopedia) to set up initial conditions. Once the simulation starts, the planets travel in their expected orbits with absolutely no control imposed on them.
The simulation was originally programmed in isometric 3D, using correct 3D gravity calculations, showing 'shadows' of the planets on a 2D plane; but this was hard to visualize. Since the solar system is relatively flat, the extra 3D code was removed, and the simulation now runs faster with more accuracy. The program uses simple Euler integration for its calculations.
Since the solar system is rather boring, I threw in another star (which I have named Star X) with a mass identical to that of our Sun (I have been jokingly referred to as a mad scientist for setting this situation up, but it is really rather interesting). Using a random initial position and velocity of the star, it just so happened that this particular trajectory is perfect for the capturing of our Earth!
You can create your own simulations by editing the .SIM files with a text editor, as they are merely text files themselves. The file format is explained within the .SIM file. I have included 3 .SIM files:
If you create any interesting simulation files, you may send them to me via email at , and I will post them on this website. Please maintain the same file format as in my examples. This will give people a chance to understand what your simulation is about.
(Type in the gravity4 starx.sim at the command line to see the simulation.)
Download: Gravity Simulation (41KB)
The program should run on a 286+ machine. It was created in a day as a simple simulation. I apologize for the bad user interface. It was posted here for download just for your sake of curiosity, and as an example that I can program a real-time physics simulation. Please type /? as a parameter to find out about command line parameters.