Saturday, November 11, 2017

Spacefighter

Published on Magic Disk 64 03/90

Spacefighter incorporates elements from Defender, Elite, Uridium, and even Impossible Mission. It's hard to pin down to one genre, so I'll just call it a side-scrolling shooter with trading elements.


This is another game that completely undersells itself with the title screen. I mean, sure, the text is neatly arranged, and if there is no capable pixel artist around, it's certainly better than a badly drawn picture. Still, a game called Spacefighter evokes images of spaceships and explosions, but instead, we get a screen with the wholesome charm of a spreadsheet application. One might be excused for thinking that this is a text adventure.

Instead of just complaining about the lack of a title/loading image, I decided to create one myself, just for the fun of it:


And fun was had, even though it took me way too long to finish the thing.

I didn't try to reproduce an actual scene from the game. Instead, I sort of mashed several key elements together in a way that would hint at the story beats. Contrary to my own suggestion, I didn't include an explosion, though. There just wasn't enough space. Pun... intended?

Since the player's spaceship exclusively lands on its tail, I used the 1954 Convair XFY Pogo, an experimental U.S. Navy tail-sitter, as a loose reference. The sprite in the game only marginally looks like this, but it wouldn't be the first time that a C64 title/loading screen deviated from its source material.

I created basic polygon models for both the spaceship and the alien vessel in Blender. I then made several renderings, converted them to the C64 palette, and started pixeling over the rough shapes. The titular Blue Gene is presented as a giant crystalline rock, based on a photo of a much smaller crystal. As nonsensical as this depiction of a gene may seem, it isn't too far off from how it looks in the game.

The image adheres to the restrictions of the C64's multicolor bitmap mode (i.e. halved resolution, one shared background color and three selectable colors per 4x8 block). Working with these constraints gave me a great excuse to spend minutes obsessing over pixel clusters.


The game doesn't immediately open with the title screen but first asks if some detailed (German) instructions are desired. Pressing J for "JA" results in a massive amount of explanatory text, delivered on the screen in various crazy ways with individual letters flying in from all sorts of directions. I've sped up the whole thing in the following animation:

Did you get all of that?

These must be the most elaborate game instructions I've seen so far on this blog. For now, the most relevant piece of information is the game's backstory which goes as follows:

Humanity is on the brink of extinction. A race of highly intelligent and cold-blooded lizard people, the EXTRUDERS, has enslaved the humans and altered them genetically to make any way of reproduction impossible. The only hope that remains is the rumor of a single rebel who has emerged from one of the slave camps and escaped the Extruder slavers with an EAGLE MK 3 spaceship. This rebel, amiably called the SPACEFIGHTER, is now preparing a journey to the fabled planet Intro in order to find the BLUE GENE. Only this mythical artifact will be able to reverse the human genetical alterations and save the entire race.

The instructions then go into detail about Spacefighter's various systems, but I'll get to those parts later on when they become relevant in the game.


The game starts with the Eagle's bulky board computer greeting me and asking for my name. I'm feeling particularly clever today and will henceforth be addressed as Commander Captain by the computer. The name isn't used very often outside of this dialog, so it doesn't really affect the game.

Next, I'm offered the opportunity to load a former save game. Yes, Spacefighter has a saving/loading feature, which isn't something I come across very often on the C64. There is a minor catch, though, but more on that later.

Lastly, I can request some technical data about the spaceship I'm currently sitting in. Seems like a good idea to familiarize myself with my ride: Apparently, this Eagle model had trouble landing horizontally, so it was converted to a tail-sitter. The board computer then goes into full technobabble mode and throws various (fictional) scientific terms in my face that supposedly explain why the standard laser is rather weak or why it is necessary to switch between combat and hunting mode manually. After a list of the Eagle's key figures, like weight and wingspan, the actual game starts:

I see you there!

I find myself floating above the surface of Ilfus, specifically on the planet's daytime hemisphere. The sparsely forested grasslands of this region are the natural habitat of large but timid furry animals called Wholes. In the above scene, you can spy one of them briefly entering the screen and leaving almost immediately. It has good reason to run away from me because I'm going to catch a lot of these buggers.

But before I go off flying in any direction, let me land on the black pad first. The landing sequence can only be activated if the Eagle is at the right height (indicated by the fourth light in the bottom row). As soon as I'm in position, I can press 'L' and the ship takes over control.


Whoa, that doesn't look safe at all! The Eagle's idea of a vertical landing maneuver is a crazy diagonal corkscrew spin, and the ship stops so abruptly on the pad that you'd expect the pilot to be violently propelled out of the cockpit, with or without the seat. I honestly don't want to know what the horizontal landing looked like if it had to be replaced with this stunt.

Pressing '+' activates the ship's board computer.


Amazingly, the computer answers with some digitized voice samples that are clear enough to make out (if you understand German). The menu allows me to call the station computer, look at the Eagle's current status, or get back to controlling the ship. The station computer is not available on this side of the planet, thus I get a German-accented "ERROR!" shouted at me when I select the option. The status report tells me that my Eagle's equipment is rather minimal and there are only 100 credits on my account. I guess it's time to earn some money!


The starting sequence is thankfully not as insane as the landing. The ship starts vibrating while building up enough thrust to take off. As soon as the ship gets moving, it haphazardly swerves to the right and then has to course-correct by doing a physics-defying 180-degree turn. The animation looks cool, though, and it's also used whenever the ship changes direction:


Right now, I have two options to make money. One is to shoot down Extruder drones, the other is to catch Wholes. By pressing 'J' and 'K' I can switch between hunting mode and combat. This changes the function of the fire button, like this:


While in combat, the Eagle emits laser bursts that damage incoming enemies. This uses up laser energy which slowly recharges over time. Without any upgrades, the energy is quickly depleted and takes several seconds to restore, so it's a good idea to only fire when necessary.

In hunting mode, the ship drops a trap that remains on the ground for a second and automatically hauls up any Whole walking into it. Depending on the Eagle's altitude, the trap lands on a different spot. This is important, as Wholes can appear at varying heights (or rather, depths) on the ground.


And then there is this oversized seagull-like bird known as a Gyro that eats Wholes like popcorn. I can't let nature get in the way of my potential profits, so any Gyro gets shot down immediately.


Like this.


The surface scrolls by smoothly and loops if I fly in the same direction for long enough. In that sense, the game plays a bit like Defender. Turning around feels similarly awkward.

SOFT SCROLLING

The C64 supports soft (pixel-by-pixel) scrolling on a hardware level. By changing the lower three bits of register $D016, the entire screen can be scrolled horizontally from 0 to 7 pixels. To illustrate this, I wrote a primitive scrolling routine in Commodore BASIC:


All I do is set the register $D016 (53270 in decimal) to 7 and then count down to 0. This achieves a scroll of seven pixels to the left. Then I set the register back to 7 and start counting down anew. That's when the whole screen jumps back to the initial position.

For a proper scrolling routine, we don't want this jump to happen. There is no way to use the hardware scrolling beyond the seventh pixel. However, each character on the screen is eight pixels wide, so if we move all the characters one position to the left (in the screen RAM) and set $D016 back to 0 at the same time, it'll look like a proper scroll. Timing is the problem here, though, because BASIC (and even machine code) is way too slow to copy the entire screen before it gets redrawn. Here I've changed my BASIC program to display a single line of text that gets scrolled to the left:


Note the obvious flicker that appears almost every time when the characters have to be shifted one position to the left. Imagine how shifting an entire screen would look like.

I don't feel qualified to explain how a proper scrolling routine is done in machine code. Instead, there is this great article about full-screen soft scrolling by Jeff Harris.


You may have noticed that in the previous two scrolling examples, the C64's border peeks in from the left and right side. In fact, there are only 38 columns visible, as the first and last one are hidden. What is this supposed to achieve? I rewrote the first BASIC program to scroll a bunch of identical PETSCII characters so I don't have to bother copying the screen RAM around:


Looks rather spiffy, doesn't it? Now see how it looks like if I do the same scrolling with all 40 columns visible:


Not so spiffy anymore, is it?

What's happening here is that, due to the scrolling, 41 columns are visible at once. The screen memory only supports 40 columns, so the leftmost column is just empty void. To cover up this issue, the VIC-II chip can switch to a 38 columns mode and hide the border characters.

For this article, I took the liberty of cropping the borders of the game's screenshots and animations because they would look pillarboxed otherwise.


PARALLAX SCROLLING (PART 1)

Parallax scrolling is a technique to create the illusion of depth by scrolling different layers of the screen at different speeds. Objects closer to the camera move faster than those in the background. Irem's 1983 arcade game Moon Patrol was one of the first video games to have parallax scrolling.

The C64 doesn't support layers, so the effect has to be sort of "faked" for the 8-bit machine.


If you look at the scrolling in Spacefighter, you'll notice that the sections that move at different speeds do not overlap each other vertically. The game uses soft scrolling in combination with the raster interrupt to time the parallax scrolling correctly. In the upper half, no scrolling is done. As soon as the raster reaches the distant mountains, a slow scroll is applied. Once the raster reaches the ground, a slightly faster scrolling routine comes into play. When the raster gets to the bottom interface, scrolling is again disabled. Naturally, this requires exact interrupt timing.

There are several ways of implementing parallax scrolling on the C64, and Spacefighter uses two techniques. I'll explain the second one once I get to the part where it is used.


I don't know how those traps work, but it's rather funny to see a caught Whole being dragged upwards into the ship. At the bottom, the cargo meter (LADUNG) goes up by two pixels for each catch. The Eagle has enough capacity for more than fifty animals which raises the questions how they can all fit in there. I'd rather not entertain the thought that there is some automatic slaughtering going on in the cargo hold. Instead, let's just assume the Wholes are shorn like sheep and then safely dropped back to the surface by some unseen mechanism.

Spacefighter's system of earning money by repeatedly catching Wholes was my introduction to the concept of grinding. The animals aren't easy to catch, as they tend to run away from traps or anticipate where the snares will land on the ground. They appear at different heights, forcing the player to frequently adjust the Eagle's altitude. I spent a lot of time chasing after those white mammals, and it soon felt more like work rather than an entertaining challenge. However, this was mainly my fault because I didn't realize I could upgrade my ship pretty early to make catching Wholes less tedious.

The other way of getting some cash is to shoot down Extruder drones, like this one:


The red UFO in my custom title screen is based on this rotating disk. To me, this is the most iconic-looking enemy of the game. Whenever I think of Spacefighter, this sprite comes to mind pretty much immediately.

The disk drone is quite hard to hit, thanks to its thin shape. While it moves at a swift pace, it thankfully isn't equipped with any weapons. Instead, it attacks by homing in on the Eagle's position and then keeps on ramming the ship. The way the drone wriggles around makes it look like a pesky insect bothering the player.

Aside from a menacing disk there is also this, uh, thing:


Wait a minute...


Oh hello, enemy sprite ripped from Uridium. Apart from the different colors and additional animation frames, Spacefighter's version is an exact copy of the original. Extruders aren't just evil lizard aliens, they also lift their drone designs from other games. The nerve!

After catching a few Wholes and shooting down several drones, it's time for me to fly around the planet and visit its night half. In order to do so, I have to land on the black pad and launch into the stratosphere by pressing F3.


A start into the stratosphere is such a gravity-defying affair that time apparently slows down. Also, if you look closely, you can see the Eagle fly in front of the bottom interface.


Flying to the right decreases the distance displayed at the top, so that must be where I'm supposed to go. The journey through the stratosphere is a nice intermission, but it doesn't take long for some Extruder vessel to disrupt the peaceful silence. This enemy type is considerably more dangerous than the surface drones, as it is faster than my Eagle and it can also shoot at me.

On the left side of the bottom interface, you can see two bars. The purple bar labeled 'FELD X' is the ship's shield while the yellow bar 'ENERGIE' represents its energy, or rather, the condition of the ship's hull. If the latter goes to zero, the ship explodes and the game ends. Flying through the stratosphere conveniently recharges the shield.

PARALLAX SCROLLING (PART 2)

When I first saw the parallax scrolling starfield, I assumed it was also done with raster interrupts, like the scrolling planet surface. However, soft scrolling isn't even used here.

Instead, the starfield consists of five different characters that look like stars, and three of those are animated at different speeds. Their bitmap info is cycled horizontally, either to the left or right, depending on the scrolling direction. Similar to soft scrolling, this only allows a distance of seven pixels, and then the bitmap jumps back to its initial position. That's when all the instances of that character on the screen are shifted one position to the left or right in the screen RAM. Since the stars move at different speeds, the character shift happens at a different interval for each of the three star types. Here is an animated illustration:


The bottom part shows the three characters' bitmap data being cycled constantly. Whenever a star jumps back to its original position, all characters using that star are shifted one column to the left.


In the game, the effect is a bit glitchy. Similarly to my BASIC example, the stars sometimes stutter when their characters get shifted in the screen RAM, likely because the timing isn't perfect. It's also possible that the emulation further amplifies the jittering.


Once the destination has been reached, the Eagle automatically descends. Welcome to the dark side of Ilfus where the party never stops. Actually, despite the massive skyline suggesting a metropolis bustling with activity, there isn't a whole lot going on here. The enemy drones are the same as the ones on the light side, but their moving patterns seem to be a bit more aggressive to me. The most important thing here is the landing pad which also acts as the planet's so-called Trans.Station.

The Trans.Station allows access to the planet's station computer which greets me with another piece of digitized speech saying "STATIONSCOMPUTER ILFUS". The voice samples are good enough that I can make out the German accent, which is equally impressive as it is amusing.


The station computer hands out monetary rewards for shooting down Extruder vessels. I destroyed eight of them which nets me 320 credits. I'm rich!

I also get the option to read some information about Ilfus. The description mentions minerals that can be found on this side of the planet, specifically near flat, oblong structures. Furthermore, I get told that the next planet, Lanza, is 9.8 light years away and can only be reached with a hyperjump.


Next up, I can either sell my cargo or buy equipment for my ship. The little bit of Wole hunting I did so far adds 506 credits to my account. Now I'm rich.


The station's equipment store offers a lot of stuff. Some of the items can be bought several times, like the laser and shield upgrades. Ultimately, I'll have to buy the hyper energy (998 credits) to get to the next planet, but before that, it's a good idea to make enough money so I can fully upgrade my Eagle. For now, the most important piece of equipment I need is the automatic trap system (372 credits). This makes catching Wholes much, much simpler. I also get a mineral probe (153 credits), as I'd like to do some prospecting while I'm on this side of the planet.

The shop is also the only place where I can save the game. Creating a save state costs 50 credits. All things considered, this isn't an outrageous price at all. The concept of having to pay for this feature was so abhorrent to me as a kid, though, that I refused to ever make use of it. I use the emulator's save states anyway, so no need for me to waste credits here. Instead, let's earn some more by searching for minerals.


Here are the long structures the station computer mentioned, and dropping a mineral probe indeed unearths gold, platinum, and some precious stones. As far as I know, the yield is always the same, no matter where I drop the probe. If I try looking for minerals outside of this area, I just get a negative response and then have to buy another probe.

I return to the Trans.Station and sell everything for 440 credits. My account is at 841 credits which allows me to upgrade my laser (600 credits) and my shield (239 credits). That leaves me with a grand total of 2 credits.

Since my single probe apparently depleted the entire planet's mineral deposits, I have to go back to the light side of Ilfus and continue catching Wholes.


This is made a whole lot easier thanks to the automatic trap system which sets the correct height all by itself. I can just fly close to the ground and deploy traps right on top of unsuspecting Wholes.


After a couple minutes of chasing white specks on the ground, I've filled up my ship's cargo bay to the brim. I'm a bit concerned that the Wholes have stopped appearing. It can't be that I've just hunted them to extinction. Nah. They're just resting.


Back on the dark side, the fruits of my labor manifest in a whole lot of credits. Ok, now I'm rich for real this time.

This allows me to fully upgrade the Eagle and acquire the hyper energy. I also buy another mineral probe and five rockets that can be used to kill all enemies on the screen. However, before I leave Ilfus for good, I want to shoot down some more Extruder drones to get my account to about 1000 credits. The next planet, Lanza, is significantly more dangerous to farm money, so I better do it while I'm still here.


LATER


With about 1500 credits in my account, I feel confident to make the jump into hyperspace. This is a very dramatic process that not only causes the SID chip to spout white noise but also throws all of the C64's colors at the screen. I actually had to shorten the animation a bit, especially the flashing part, as it goes on for quite a while.


To reach Lanza, I have to complete an interstellar flight that takes a bit longer than the journey through Ilfus' stratosphere. A new kind of Extruder ship shows up after a while which likes to circle around and take shots at me. It's not very well armored, though, as I can destroy it with a few laser bursts. This time, the Extruder collided with my ship and immediately exploded while the Eagle hardly took any damage.


Lanza's gray surface is riddled with ancient-looking ruins that make me wonder if the hyperjump accidentally took me to Greece. There are no Wholes to hunt here. Instead, I have to destroy all of the planet's energy barriers because they prevent me from making another hyperjump.


Energy barriers are installed on the ground and look like turrets. They regularly shoot energy beams into the sky that can damage the Eagle if it gets too close. I can't destroy them with my regular laser weapon, but I can deploy bombs instead. If I press 'B', half of the ship's laser energy is converted into a bomb that gets dropped on the ground. If there isn't enough energy left, I have to wait for it to recharge. That's why it is important to have the laser fully upgraded at this point.

Also pictured in the above animation is a new Extruder enemy in the shape of a small helicopter. It's recommended to shoot these pesky foes down as quickly as possible, since they can fire rockets at the Eagle that cause quite a bit of damage.


Before I fly to the other side of the planet, I make sure to destroy all energy barriers here. There is no Trans.Station on this side, so I have to be careful not to damage my ship too much.


Compared to Ilfus, Lanza's stratosphere is way more populated with aggressive Extruder vessels. These skirmishes almost pass for epic dogfights in space.


This region of Lanza is rather crazy. Every few seconds, Extruder ships zoom across the screen at breakneck speed. If I'm in their flight path, I get damaged. I don't feel like they're actively attacking me, though. It's more like I'm not familiar with this planet's traffic laws and thus find myself in the way of other motorists who just want to get from A to B. I can almost hear them shout at me angrily as they zip past me.


After destroying a couple of energy barriers on this side, I think it's high time to land on the Trans.Station so I can pay for repairs on my ship. The computer again asks me if I'd like to see some information about this planet. Lanza is basically Extruder Central and none of the probes humans ever sent here survived for longer than twenty seconds. The next planet that can be reached via hyperjump is Intro, 12.7 light minutes away, which also happens to be the location of the Blue Gene.

After the ship got its hull repaired and its shield recharged, I continue my quest to remove all turrets from this area. Lucky for me, there are apparently only two locations on this entire planet where energy barriers have been installed. Gameplay-wise, this part reminds me of Uridium: Before I can leave, I have to destroy structures on the ground while I'm accosted by enemies that are hard to dodge.


There are also mineral deposits to be found right in this area where the ground is nothing but brown. The total yield is worth more than 2000 credits which is enough to last me for the rest of the game.


LATER


All energy barriers are gone, so I can finally hyperjump to Intro. Just look at the number of ships flying around even while I'm preparing to jump. If you watch the yellow chopper, you can see that I wasn't kidding about time getting slowed down whenever I take off.

As with the previous hyperjump, I have to fly a certain distance manually before I reach my destination. By now the Extruders seem to have recognized me as a proper threat and brought out the big guns. I can hardly fly for a couple of seconds without being harassed by some enemy ship. To give you an idea of the constant action, here is a sped-up version of my flight to Intro:


Evidently, my plan to paint "PLEASE IGNORE" in big letters on my ship didn't work.

When I finally get in range of Intro, my ship starts descending, and I find myself on the planet's surface.


Literally so, as I have left the Eagle behind and must find the Blue Gene on foot. The game doesn't give an explanation why I'd take such a risk, but I assume there is a good reason. Maybe the Wholes left such a stink on the entire ship that I dearly needed to get some fresh air.

I wonder what happens if I run to the right instead of left...


Oh, I died and got booted back to the title screen. Well, that's the end of the game. Bye, everyone!


Except, it isn't. If I press fire to start a new game, I get to continue directly from Intro without having to replay the whole game. Spacefighter is nice enough to provide infinite lives for this part. It also filled up my energy bar which I curiously share with my ship. Is this some allusion to the pilot and the Eagle being the same entity, possibly of biomechanical origin? Whatever, I'm here to run to the left and win the game.


Yes, that running animation was ripped from Epyx's Impossible Mission and only slightly altered to give the person long hair.

After a while, the Extruders arrive and deploy their ultimate weapon, bouncing balls. I have no way of defending myself, so all I can do is jump at the right time. Jumping feels very floaty with a linear motion that just goes up and down as if I were using an invisible jetpack. Even if this is intentional to reflect the planet's lower gravity, there still should be a curve to my jump.

The reverb of my footsteps changes depending on the surface I'm on, which is a nice touch. A beeping sound warns me if I'm walking over hazardous ground that drains my energy. The first time around, it is rather hard to tell which floor types are damaging. I've played the game before, so I already know what to look for.


Whoa, that ship looks rather menacing. Luckily, all it does is shoot some bombs at me which are easily evaded with some swift dodging. After a while, the ship loses interest and flies away.


There are also black jump pads, usually placed in front of larger hazardous areas, that allow me to perform a gravity-defying jump. Again, it looks more like I'm hovering than jumping.


Finally, I've found the Blue Gene, which is apparently a piece of rock. The game doesn't end just yet, though, because now I have to run all the way back to my ship and not run out of energy.

I wonder what happens if I just continue running to the left...


Of course. I should've known.


The trek back to the right triggers the same enemies as before. I still have more than half of my energy left, so my chances of making it to the end look quite good.


There we are, only a few steps remaining and I'll be back inside my ship. What will await me at the end of the game? A nice animated sequence accompanied by a celebratory melody?


Nope! My victory is rewarded with a screen of text that breaks the fourth wall in a rather terrible way:

The game's author directly asks me, the player, if I'm disappointed that I'm not getting an actual ending. It then starts waxing philosophical about the journey being the real reward and blah blah.

I don't think I was particularly angry the first time I got to see this, but I have to say this is probably one of the worst ways to end a game. If you can't be bothered to have some kind of end screen, then at least write a conclusion to the story you set up in the first place. It doesn't need to be anything more than just "Everything was fine, people were happy again". But don't try to be clever by lampshading the lack of a proper ending. Jeez.

Okay, I'm done.


No, wait. Since the game didn't have an ending screen, I made my own:


Everything was fine, people were happy again.

THE END



CONCLUSION

Compared to other games that appeared on Magic Disk 64, Spacefighter is an unusually complex and varied title. There is combat, hunting, exploration, some light trading, and even a jump 'n' run sequence. All parts are serviceable, and the game plays fine even today.

The graphics are not the game's strongest part, I'd say, but they're far from terrible. The visuals have a nice coherence, even if some sprites were ripped from other games. The parallax scrolling is a neat effect, too, despite some apparent glitches.

Sadly, there isn't any music, but the sound effects are characteristic enough to lend the game a unique atmosphere. Especially the Eagle's laser has this iconic twang that I immediately associate with Spacefighter.

If you skip the instructions at the beginning or don't understand German, you probably will have some difficulties to find your bearings in the game. At times, I only knew what to do because I had read it in the manual. Even then, some descriptions are rather vague. For example, it took me quite a while to realize that those shooting turrets on Lanza were the energy barriers I was supposed to destroy.

The difficulty gradually ramps up from one planet to the next. While Ilfus is relatively serene with just the occasional drone trying to ram the ship, Lanza throws a whole load of Extruder vessels at the Eagle, especially on the planet's dark side. Once the ship is fully upgraded and there are enough spare credits for repairs, the more populated areas become much more manageable.

If you feel like trying out an obscure title that is surprisingly versatile and plays like a simplified Elite, Spacefighter might be worth a try. I certainly had fun replaying it.

No comments:

Post a Comment