Galaga for the Atari 7800 on Expert mode completed with a perfect Challenge stage.
The Atari 7800 port of the game Galaga is effectively a completely different game than the MSX or Arcade versions of Galaga, with unique sound and different enemy patterns (although the same basic concept).
There are 152 possible horizontal positions with 0 being the far left and 152 being the far right with the player's ship's position tracked by the memory addresses below. Note that the 065A move ship to position address updates the frame after input and the 048F current ship position address updates two frames later. The ship position value can jump by two and only update every other frame when the ship is moving in the same direction for more than two frames in a row.
Two shots can be fired at once with a delay of 5 frames imposed between shots. Shots recharge and are returned for reuse before they reach the top of the screen and immediately on impact with an enemy. Shooting causes the shot to be registered immediately by the game then two frames later the firing animation occurs.
The selection of Expert mode happens as soon as possible (in fact, the word Expert does not get a chance to be displayed). Selecting Expert mode starts at stage 10, as seen in the lower-right corner of the screen.
The first wave of enemy ships (which look like bugs, and I'll call them that to distinguish them from the player's ship) approaches before the opening music stops playing; during this time, the shooting sound is frequently interrupted or only partially played, although the sound of bugs being destroyed seems to be mostly intact.
The first wave consists of four red and four blue (standard) bugs approaching in two columns from the top-center of the screen before flying crisscross toward the sides of the screen and looping back toward the center near the bottom. I zigzag back and forth to eliminate the intruding, nameless foes before the starting fanfare even finishes playing. While the fanfare concludes I move the ship to the left to prepare for the next wave.
There is a "frame rule" of sorts where each wave of enemies approaches at a set time, no matter how fast the previous wave was eliminated. This is because each wave of bugs flies around the screen in a set pattern before building up a formation of enemies at the top of the screen. At least, this is what the bugs would be doing if it weren't for some crazed ship destroying them all with extreme prejudice.
The second wave consists of four green "boss" bugs and four red standard bugs that alternately enter from the lower left. The green bugs require two hits with the first hit turning them from green to blue and the second hit destroying them and showing a bonus of 400 on the screen in the location they were destroyed. The boss bugs are capable of capturing the player's ship at which point one of the player's extra ships is put into play. If the boss bug can be destroyed the first ship joins the second, giving two side-by-side shots. This turns out to not be effective in a TAS due to the amount of time the animation takes and the impact on hit percentages it would have and is thus not displayed in this run.
As the second wave approaches I color the dinosau.. bugs blue and destroy the red bugs before taking out the remainder of the bosses as they loop back from the center toward the lower left.
8 red bugs enter from the lower right and are promptly prevented from pursuing their peevishly pompous premeditated plans.
8 blue bugs enter from the top center and fly left at high velocity before disintegrating.
8 blue bugs enter from the top center and fly right at high velocity, apparently hopeful that switching things up will give them the edge they need to meet a different fate than that of the previous wave. I dash their hopes rapidly.
Wave 6 (Start of challenge waves)
All five waves that would have made up the formation at the top of the screen have been blasted to smithereens so the game immediately moves from stage 10 to stage 11, which is the first challenge stage. The challenge stages are different in that enemy bugs do not join a formation at the top of the screen but instead fly away after a short time, with the challenge being to try and hit them all.
4 red and 4 blue bugs enter from the top of the screen and split with red flying left and blue flying right as if they were unzipping. This is one of the more visually appealing portions of the run because there are several tricky shots as I slalom back and forth.
4 green bugs approach from the left at the same time 4 red bugs approach from the right. Because the green bugs require two hits I double-tap them as if they were zombies before moving to the right to take out the standard red bugs as they reach near the center then double back up to the side and loop in toward the middle.
4 blue bugs approach from the left at the same time 4 red bugs again approach from the right; this time, the ships meet in the middle, giving me an opportunity to alternate shots to the left and shots to the right in a very cool sounding pattern.
This wave of 4 red and 4 blue bugs comes straight down from the middle at somewhat slow speed. Rather than treating this like a TAS where I only fire for one frame I simply sit in one spot and hold down the fire button, which is what you'd generally do in a normal game.
I sweep all the way to the left, all the way to the right, then return to as close to the center of the screen as I can to hit the 4 red and 4 blue bugs that approach from the top of the screen. This is the final wave so in this case precision is required to ensure the last shot is fired on the earliest possible frame. I originally moved around in this segment but it turns out this cost a couple of frames as it delayed the final shot so I sit still instead.
Next stages: Repeat ad Nauseum
This completes the challenge stage and shows the perfect result. The game then goes to stage 12 and the game loops forever after that (rolling over at stage 255; I made it that far myself when I was a kid). The input ends on the earliest possible frame and the game gives the challenge mode bonus, then starts a new round and repeats forever from there on out. The challenge stages that follow put enemies in different places but are otherwise identical so ending after the first challenge stage seemed to be a good stopping point with a 100% hit ratio.
Thanks to Quibus who worked on the MSX version of Galaga and got me thinking about doing a run of this version myself. Thanks to creaothceann for multiple encodes leading up to the final file.
While it might sound like such a simple game would be horribly boring, I spent hours playing Galaga on the family Atari 7800 as a kid and making this run brought back fond memories. I hope you enjoy it!
: Replaced submission file with an improvement by the author.
: Accepting for the vault.
: Publication underway.