03 - The Graphics Engine
In this chapter, I have started with the beginnings of the actual game code.
I have dragged across a few general subroutines from my Gunstar
game such as the CoCo3 hardware setup, video mode configuration and
interrupt handling as well as a few general purpose subroutines for
reading the keyboard, printing text and save game to disk. I've
also written the routines that will take the data created with my level
editor and use it to reconstruct each level screen when needed.
I will also be using the FIRQ sound routine that provided the 2 channel digital sound effects from Gunstar that had been heavily optimized with help from L Curtis Boyle.
laid out the structure for the game engine with the goal to have it
running in its most basic stage. This involved setting up the main
game loop which manages the video double buffering and the setup for
multiple video buffers which will be used for this highly anticipated
new special effect.
wanted to prove that the graphics engine from Gunstar could be
tailored for this game using a higher resolution than it did there.
This engine has a very high CPU overhead due to the amount of memory it
has to copy. This overhead will hopefully pay me back by simplifying
the display and management of all the game sprites and providing me a
great deal of flexibility. It has also been
expanded to handle multiple video buffers which... again... I will
tease you about until after you watch the demo video below.
game engine is a heavy burden on the CPU and that is why there is no
scrolling of the display as there was with Gunstar.
The game needs a Hitachi 6309 for optimal speed but I was determined to allow it to also run on a standard 6809 CoCo3 with 512K RAM installed.
have kept most of the code to be stock 6809, foregoing many of the
wonderful extras that the 6309 CPU provides. The game auto detects the
CPU type and activates 6309 native mode which alone provides about a
10% speedup over the stock 6809. I also use the 6309's block copy TFM command to
speed up the memory transfers. If running on a 6809, it uses stack blasting
instead to achieve a fast memory transfer. This will
mean that on a 6809, the game will run 1 frame slower than when running
with a 6309 but will still be playable and provide all of the features.
So, enough of the ranting. Let's see what this special effect is all about that I've been hyping up so much...
DRUM ROLL PLEASE!
Tomatoes ready to launch! CLICK on Video Preview.
That Special Effect
Hopefully, no tomatoes were wasted during the preview of this video. :)
The game so far just sets up the game graphics (Level 9 shown in the video) and starts the main Game Loop. No sprites or overlays are created, only the bare level graphics as were created in the level editor.
I have the background animated. This background is only to create a graphic ambience to promote an industrial aesthetic for the game.
It uses 4 x 24K graphic pages in memory with the cogs drawn rotated 22
degrees apart. On each frame, the normal game graphics are overlaid on
top and the game engine cycles through the frames to give the effect
shown. I can create a different cog layout for each level but there is
only so much you can create before they start to look the same so I
will create 4 layouts and randomly assign them to a level.
The game will be played over this animated background with moving
elevator platforms, operating machines and security robots patrolling.
Hopefully, it will amount to a detailed and full display of moving
Also shown is the final design of the control panel area at the bottom
of the screen which displays information such as number of credits
accumulated, EMF bombs and Lives the player has. In particular is the
bomb detonation countdown timer and the security status indicators for
the 12 levels.
The game will feature 12 levels plus a foyer level with the main lift
to all 12 levels and a final level at the top where the actual bomb is
located. You will need to complete the 12 levels to be allowed access
to this top level.
Everything is running as planned and my next task is to prepare the
sound samples used for the game. The 2 channel sound routine is
currently active and operating but because there are no samples to
play, is remaining quiet.
Stay tuned for the next chapter where we make some noise.