The Animation of Phoenix, Part 1: The Characters
Phoenix (1980) is a fixed shooter, much in the vein of Galaxian and Galaga, though it predates the latter. It's often cited as one of the first video games to feature a "boss", but I think what really makes it stand out from its peers is its graphic design and animation. In this three-part deep dive, I'm going to do a focused analysis of the graphics, starting with the character animations.
The Animated Characters: Frame-by-Frame
The Player's Ship
Phoenix doesn't pull its punches in any of the graphics, animating pretty much everything in the game. This includes the player's ship, which was a fixed sprite in most previous shooters.The ship is animated somewhat like a quadrupedal animal, with pairs of legs extending alternately as it moves left and right. The looping animation gives the feeling that the ship is crawling or climbing rather than flying. Functionally, however, it works just like the ships in previous shooters, being restricted to left-to-right motion and straight-ahead shooting. The game physics are also the same as in most previous fixed shooters, with instantaneous direction changes and constant speed.
The Big Flier
There are three primary enemies in Phoenix, including two sizes of fliers and an alien-like boss encaged in a spaceship. At the beginning of the game, the first animation you'll see is that of the large flier, just below the title (which is spelled out in small birds). As the animation proceeds, you see a large bird growing from what appears to a cosmic egg. The egg expands, flashes, changes color, sprouts wings, starts flapping, and then returns to its primal state.
The above GIF shows the images that make up the animation of the large flier. It is a 51-frame sequence, from beginning to end, of which 14 are unique images. For comparison, the aliens in Space Invaders only alternated two frames, and Galaxians had a four-frame sequence with three unique frames. The animation is slowed down compared to the game, but it retains the relative timing of the frames. For example, the frames with the wings at their highest and lowest points are twice as long as the other frames in the wing flap. This is roughly consistent with a real flapping motion, where the wings would be moving fastest mid-flap and slowest at the inflection points. The opening and closing of the mouth is also an interesting touch -- it gives the bird the appearance of laughing.
Most of these frames are reused during the game itself. In the third and fourth rounds, you face eight of these fliers at a time, all of them starting from the egg state and growing to full size. Once they've reached full size during gameplay, they no longer shrink to the egg state and are subsequently animated only with occasional wing flaps. The birds in the fourth round use a different color scheme, but are otherwise identical.
I didn't see a clear order to the sub-sequences, so a there is likely a random component to it. The small fliers appear in both the first and second rounds, each time with a different color scheme, and then again during the boss battle (with the second-round color scheme). The flight animations can presumably proceed indefinitely, so long as the player doesn't shoot the flier.
In all, there are 34 distinct frames used in the small flier's animation, plus an additional four that are used to "grow" the bird at the beginning of a round. Many of these frames are just representations of the same flier shape in a different orientation, but they appear to have been individually designed, and not just interpolated at a differen angle. It's likely that the box-like appearance of some of the frames was motivated by a need for the fliers to look reasonable on a raster display. One of the most obvious shortcomings of Galaxian's graphics was the appearance of a Galaxian mid-dive:
I don't know if these were actually designed by someone or interpolated in an automated way (the latter seems likely), but it's clear that the intermediate-angle sprites leave a lot to be desired from the aesthetic standpoint. Phoenix mostly avoids this problem by using compact sprites that lack jutting appendages and have few curved edges.
Most of these frames are reused during the game itself. In the third and fourth rounds, you face eight of these fliers at a time, all of them starting from the egg state and growing to full size. Once they've reached full size during gameplay, they no longer shrink to the egg state and are subsequently animated only with occasional wing flaps. The birds in the fourth round use a different color scheme, but are otherwise identical.
The Small Flier
The small fliers are analogous to Galaxians, in that they periodically break formation and dive at the player. Unlike the large bird, they are not represented by a single distinct sequence. Instead, as the flier wanders across the screen, various animated sub-sequences are displayed depending on its direction of motion and state of flight. The animation below is a sample from one such combination of sub-sequences.In all, there are 34 distinct frames used in the small flier's animation, plus an additional four that are used to "grow" the bird at the beginning of a round. Many of these frames are just representations of the same flier shape in a different orientation, but they appear to have been individually designed, and not just interpolated at a differen angle. It's likely that the box-like appearance of some of the frames was motivated by a need for the fliers to look reasonable on a raster display. One of the most obvious shortcomings of Galaxian's graphics was the appearance of a Galaxian mid-dive:
I don't know if these were actually designed by someone or interpolated in an automated way (the latter seems likely), but it's clear that the intermediate-angle sprites leave a lot to be desired from the aesthetic standpoint. Phoenix mostly avoids this problem by using compact sprites that lack jutting appendages and have few curved edges.
The Boss
Perhaps the game's biggest claim to fame is the mothership, which is a boss before bosses were actually a thing in video games. I'm not sure what it's supposed to represent exactly... it looks like an alien encased in a shielded spaceship, but like all the other characters in the game, it's animated.
There are 9 unique frames if you include just the alien and the antenna at the top of the mothership. The conveyor belt moves independently and will change in appearance as the player hits it with bullets. It's surprising that the designers chose only to animate the top of the mothership antenna, since all three rows of pistons appear poised for motion. It's possible that they ran out of space for the tiles that would be needed to achieve this -- the game's two tilesets are stored in 8 kb blocks and use up all of that space, so adding more likely would have required a costly hardware upgrade.
Interestingly, one of the mothership tiles appears to have bad data in it -- notice the vertical purple stripe next to the right tentacle, when it's flat on the ground. I checked multiple dumps of the game and they all show the same pattern, so it must have been in the original game. It's hard to believe that it was intended to look that way, so a flaw must have crept into the final ROM image without the developers noticing. There are several odd-looking pixels in the small flier as well, although they are only apparent on very close inspection. The gameplay moves quickly enough that a player would be unlikely to notice such flaws, though you can make them out if you watch very closely.
In the next installment, I'll talk in detail about the motions of the enemies in each round, which are again far more complex than arcade-goers would have been used to seeing in a game like this.
Looks like the alien is pushing a button to me (it didn't strike me as a glitch until you designated it as that). The signal goes up every time the button is pushed.
ReplyDeleteEh, maybe, but then what’s with the pixel that suddenly appears between the aliens tentacles?
DeleteGreat read. Thanks for making this. Phoenix to this day is such a great game.
ReplyDelete