|
16-Aug-04 |
Atari
XL/XE Space Harrier Conversion Project
| Latest | Feb-09 | Mar-08
| Mar-07 | Aug-06 |
May-05 | Feb-05 | Oct-04
| Aug-04 |
| Dec-03 | Jul-03 | Mar-03
| Jan-03 | Dec-02 | Jun-02
| Apr-02 |
31st July 2003
It's been a while, so what's been happening?
Most of the changes done since March are to do with getting the dragon
riding bonus stage to work. The dragon's called "Uriah", and
you control his left and right movement. The idea is to steer him into
as much of the scenery as possible, and smash it up - makes a change
from shooting everything I suppose. You get extra bonus score added
at the end, depending on how many things you managed to hit. It's a
good place to really boost your score as each item hit gets 50,000 points
bonus added. This screenshot is from the original:

Before starting Uriah, there were a few visual touches to add to the
floor, and the top grid in Stage 4. The colours blend nicely from one
colour to another on the floor and top grid, during the stage. Initially
I hadn't planned on adding this, as it's purely cosmetic, and I thought
it only happened on the three top grid stages; then I noticed there
is actually a colour change in the floor during the Uriah stage too.
So, what the heck, it wasn't too difficult to add some colour changing
code and make some room in my stage overlay file (this is the set of
data that gets loaded at the start of every stage, and describes every
aspect of it). Just a list of colours and a timer. The colour blending
isn't as good as the original, but this is something the Atari is quite
good at compared to its peers. There's a choice of 128 colours in the
mode I'm using, and you only have to write colour registers instead
of redrawing everything to make it a different colour.
Initially I wasn't quite sure how I was going to do Uriah, but luckily
things soon started to gel when I really got down to thinking about
different approaches. Normally your player, the "Space Harrier"
himself, is built from all 4 of the Atari's hardware sprites (called
player/missiles by Atari). They're quick and easy to move around the
screen, as opposed to having to draw and erase things yourself with
a software routine. Naturally, because of this it's wise to use them
wherever possible - but they have quite a few limitations. You'll notice
in the screenshots, Space Harrier is sitting on Uriah's head, and the
other "segments" or tail pieces of Uriah get drawn over the
top of him - simply because they're behind him. Obvious to you or me,
but not to the Atari. The hardware sprites can only be made to go over
or behind certain colours - they know nothing about real 3D on their
own. So did I try and work out where Uriah was going to be over Space
Harrier, and then redraw the sprite armed with this information? Well...No.
The way sprites are drawn is very different to how the rest of the screen
is drawn, and mixing the two would mean creating some fairly slow code
to do it. I decided to have Space Harrier represented by normal screen
graphics for this stage. You'll notice he has slightly different colours
because of this. It also meant that the jumping on and off of Uriah
could be dealt with by the existing pattern handler. Also there was
the added bonus of being able to use the sprites for something else.
Originally, I wasn't going to have the overlaid tree counters that pop
up on the screen as you hit more and more bits of scenery - but it turns
out the hardware sprites are quite well suited to this task.
There were a few things that I hadn't realized were going to be a problem
with this approach of representing Space Harrier by normal screen graphics
instead of sprites. For one, the animation routine I had built into
the pattern handler for animating the aliens couldn't make him run without
a serious limp! So that had to be made better. I also had to go back
on my self imposed limit of no more than 4 colours per object (to save
disk space). I could have drawn Space Harrier and Uriah's head as separate
objects of 4 colours each, but it is much more efficient to treat them
as one object - which would break my 4 colour file format. It seems
a little wasteful, but Uriah has got his own file format now! However,
if a cartridge version is done, there will be none of these 4 colour
limitations. In fact, at the end of the day, I may just do a cartridge
version, and not bother with the disk one at all. It won't need a 130XE
to run it either, any 64K XL/XE machine will do.

I thought getting Uriah's undulating up and down motions, combining
with the left and right control and the tail segments following on,
was going to be one of the trickiest parts. But when I thought about
it, I realized I had the right routines already in place. The normal
alien patterns can do exactly this - they follow each other, and undulating
them up and down is no problem. All I had to do was to add left/right
control. This was very simple too. A function I added to my pattern
handler (which I didn't expect to use as much as I am), is the ability
to run a predefined piece of code when required from within an alien
attack pattern. So I just created a piece of code that overrides the
x direction of the pattern, depending on where the joystick is. Hey
presto! One Uriah coming up. A few more little pieces of code like this
(which I call "pattern commands" if you're looking through
the source code), allow you to control Space Harrier while you're waiting
for Uriah, and to make sure you jump onto Uriah in the right place,
amongst a few other things that have to be done just before you hop
onto him.

For those of you who managed to read this far, congratulations - even
I got bored writing all that. But what did it all mean? They say "actions
speak louder than words", so how about I give you a little demo
of Uriah? This is not the same as what will be in the real game. In
fact any die hard Space Harrier fan will recognize that Uriah is smashing
up stuff from stage 4, instead of his usual haunts. I've trimmed him
down a bit too from the original - he's lost several tail segments.
That's all because of the pink flashes on the side of the screen in
the demo - they're a note to me to say I've overrun the time allowed
for drawing the screen - I.E.when it slows down. Uriah's a bit niftier
on his feet losing a couple of tail pieces!
URIAH.ATR (removed due to bugs)