Many years ago, Sega had a great success with an all-new
game: Zaxxon, that represented a 3D perspective using an isometric view,
now largely forgotten.
Like with most succesful arcade game of eighties it got
adapted to several home consoles, like Atari VCS, Colecovision and MSX
Zaxxon arcade screenshot
Unfortunately the Atari VCS or 2600 is very limited in its
graphics display and the programmers did a conversion barely resembling the
original. In particular the isometric perspective was changed to front
view.
Zaxxon for Atari VCS/2600
For years many people has asked the Question (with big Q),
was the conversion all what the console could do? or simply programmers went
out with the first thing they could develop? (check
Zaxxon thread at
Atariage or
Zaxxon article
at Ataritimes)
Myself I asked same question and seeing that nobody was
doing anything, I took matter into my hands :) and I started coding Space
Raid
Coding 6502
The Atari VCS console is based around a 6507 processor,
it's the same as a 6502 processor but with an address bus limited to 13 bits
and no interruption lines. So game cartridges are limited to 4K ROM or
using a mapper for bigger ROM, I decided to stick to the 4K ROM limit. Also
there are only 128 bytes of RAM.
Having myself some experience with 6502 processor I choosed
the DASM assembler, but I was in the dark about
the Atari peripheral chips like TIA 6526 and PIA 6532, fortunately I found
widely available information like the
Stella documents
(code name of TIA 6526) and the
Nocash 2k6 specifications.
The video chip is very primitive for today standards, it
generates by itself one line of video but everything else must be done by the
software!
The software must write registers for each one of the 262
scanlines (NTSC frequency) or 312 scanlines (PAL frequency), besides there are
only available seven graphical elements: background color, playfield
(20 bits scaled), two players (8 bits graphics each one), two missiles (one
pixel) and one ball (one pixel).
Besides the processor only has 76 clock cycles to calculate
each scan line and stay in sync. The programmer must count cycles for each
instruction and be sure he doesn't exceed the limit.
Obviously a space game like this needs more than two
sprites, so I had to code a visualization kernel able to show various sprites
using the two players. The trick here is that no more than two sprites can be
in one line at same time.
The architecture makes the programmer to think
completely different when developing a game: visualization IS the core, its
limitations shape the game that is built around it.
For 200 visual lines the processor is fully busy
doing visualization and along the other 62 lines is when we've time for
doing the game logic. A little error in synchronization and the screen in real
hardware starts rolling up.
Space Raid screenshot, inside fortress. Note how four sprites are generated using only the two "players" :)
Coding started in September 24, 2013, same day I've done the
drawings for all elements. First thing was the player spaceship moving around
the screen, the result was so good that it convinced me I was in the right
path.
Could exist three enemy planes in screen? I made tests
and it was possible, the isometric view made possible to put
sprites while not exceeding more than two inline :), the hardest part was to
switch graphics in the kernel (remember: only 76 cycles per line! barely 38
processor instructions)
With the visualization core fully operative, I started
coding fortress scrolling, an optimized representation for levels, enemy waves,
enemy shooting, Game Over screen, player bullet, score for destroying enemies,
force fields, boss, tracking missile and silo missiles.
I even took some hours of night to polish the sound effects
until I got the best ones using the two available channels of sound.
I was so happy that I published that incomplete version
in Atariage for everyone to enjoy, you can follow progress in the
original
Atariage thread for Space Raid and the good receipt it got.
Afterwards I made the enemy shots and crashing elements
to destroy player, difficulty setting, plus lots of enhancements and
corrections. Even PAL and PAL60 version :).
In every pass of development I had to reoptimize my routines
to save precious bytes and do further enhancements. Main development was
finished in October 6, 2013.
At the end I'm pretty satisfied that my very small 4K game
resulted in a much better game than the eighties one that besides misused 8K
ROM.
And finally after all these years I believe I've settled the
matter: yes, Zaxxon for Atari could have been done better.
Afterwards I've continued with development with an 8K
version that includes lots of enhancements ;)
Collectorvision
got interested in publishing Space Raid for Atari and Intellivision and these
physical copies are now sold out.
Intellivision version
Coleco also published a translated version for Intellivision
that has same weird first-person perspective.
So it was almost natural for me to try getting Space Raid
ported to Intellivision, I had to learn a new processor, namely the CP1610, a
new assembler and a new video processor. It took me some months to get
started.
At the end when the game started working
then I announced it in the Atariage forums :)
The game is sold out.
Space Raid running in Intellivision emulation. Scaled animation courtesy of GroovyBee
Downloads
You can download here the game to play with an Atari
emulator like Z26 or
Stella, or over a real Atari if
you use a Harmony cartridge.
Download nanochess_space_raid.zip (25K), contains user's manual and
game in six versions: 4K/8K and NTSC, PAL and PAL60.