Galaga for the Atari 7800 on Expert mode completed with a perfect Challenge stage.

Game objectives

  • Emulator used: BizHawk 1.4.0
  • Completes one wave and the first challenge stage on Expert mode with a perfect score as quickly as possible

About the game

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).

Game mechanics

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.

Notes on the run

Mode selection

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.

Wave 1

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.

Wave 2

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.

Wave 3

8 red bugs enter from the lower right and are promptly prevented from pursuing their peevishly pompous premeditated plans.

Wave 4

8 blue bugs enter from the top center and fly left at high velocity before disintegrating.

Wave 5

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.

Wave 7

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.

Wave 8

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.

Wave 9

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.

Wave 10

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.

RAM addresses

Thanks

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!
A.C.
******

Noxxa: Replaced submission file with an improvement by the author.
Noxxa: Judging.
Noxxa: Accepting for the vault.
Brandon: Publication underway.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14776
Location: 127.0.0.1
Post subject: Would someone be willing to make an encode?
Experienced player, Moderator, Senior Ambassador (897)
Joined: 9/14/2008
Posts: 1007
Would someone be willing to make an encode? I can probably tackle it myself this weekend but I'd rather leave it to the professionals. :) Thanks, A.C. ******
I was laid off in May 2023 and could use support via Patreon or onetime donations as I work on TASBot Re: and TASBot HD. I'm dwangoAC, part of the senior staff of TASVideos as the Senior Ambassador and BDFL of the TASBot community; I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
dwangoAC wrote:
Would someone be willing to make an encode?
http://www.mediafire.com/?jeo7qxgt7zetd4x (ZMBV & FLAC)
Post subject: Thanks for the encode!
Experienced player, Moderator, Senior Ambassador (897)
Joined: 9/14/2008
Posts: 1007
creaothceann wrote:
dwangoAC wrote:
Would someone be willing to make an encode?
http://www.mediafire.com/?jeo7qxgt7zetd4x (ZMBV & FLAC)
I appreciate the encode! A couple of thoughts have occurred to me after watching this - first, I was expecting the encode to end as soon as the challenge victory fanfare ends at 1:07 in the encode. I noticed that in your encode you allow the game to play through until all player ships are destroyed at which point it shows a % hit. At the beginning of the run I fire a few " calibration" shots to show how quickly two shots can be fired. These four shots might be worth removing (with no effect on the final time) if the encode goes all the way to the game over so the % hit shows 100% instead of 94%, although I'm still inclined to just crop the encode. Thoughts? Opinions? I don't have any strongly held feelings on the matter. If the response is that people would prefer the game to play out to the game over I can position the ship a bit more to the left on the last frame of input to try and get it destroyed faster. Thanks in advance for feedback, A.C. ******
I was laid off in May 2023 and could use support via Patreon or onetime donations as I work on TASBot Re: and TASBot HD. I'm dwangoAC, part of the senior staff of TASVideos as the Senior Ambassador and BDFL of the TASBot community; I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
Post subject: Re: Thanks for the encode!
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
dwangoAC wrote:
I was expecting the encode to end as soon as the challenge victory fanfare ends at 1:07 in the encode. I noticed that in your encode you allow the game to play through until all player ships are destroyed at which point it shows a % hit. At the beginning of the run I fire a few "calibration" shots to show how quickly two shots can be fired. These four shots might be worth removing (with no effect on the final time) if the encode goes all the way to the game over so the % hit shows 100% instead of 94%, although I'm still inclined to just crop the encode.
The part between the end of the TAS and the percentage display could be cut from the video, though it wouldn't be a straight game-to-video version anymore. Maybe the percentage screen could be thought of as the 'ending sequence', and the "uses death" strategy could be employed to reach it more quickly?
Post subject: Re: Thanks for the encode!
Experienced player, Moderator, Senior Ambassador (897)
Joined: 9/14/2008
Posts: 1007
creaothceann wrote:
Maybe the percentage screen could be thought of as the 'ending sequence', and employ "uses death" to reach it more quickly?
I'd prefer to avoid the "Fastest Death" meme as much as possible. :) I personally don't think showing the shot% is important at all; it's trivial to ensure that it's 100% but doing so prevents showing off the game firing mechanism during recorded input. I can be swayed on this, though. Thanks for your feedback, A.C. ******
I was laid off in May 2023 and could use support via Patreon or onetime donations as I work on TASBot Re: and TASBot HD. I'm dwangoAC, part of the senior staff of TASVideos as the Senior Ambassador and BDFL of the TASBot community; I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
Well... it really depends on where the official encode will cut off the video. Maybe there could be two branches? :)
Editor, Experienced player, Reviewer (967)
Joined: 4/17/2004
Posts: 3107
Location: Sweden
Since the game records your hit percentage, I am in favor of skipping the missed shots at the beginning.
Post subject: New version with no "calibration" shots
Experienced player, Moderator, Senior Ambassador (897)
Joined: 9/14/2008
Posts: 1007
Truncated wrote:
Since the game records your hit percentage, I am in favor of skipping the missed shots at the beginning.
OK, I've uploaded a new movie file to http://tasvideos.org/userfiles/info/4013434434096596 which makes the following changes: The submitted movie contained "calibration" shots prior to the first wave to demonstrate how quickly shots could be fired and how three shots could be displayed on the screen at once. This caused the hits % that appears after the game over screen to show a 94% hit rate. This updated file removes these calibration shots as well as an errant shot I found in the last wave and moves the ship a bit more toward the center of the playfield prior to the final frame of input. Can a judge please replace my initial submission file with the one linked above? The movie length is unchanged and this file can be considered a direct replacement of the previous movie. Thanks! A.C. ******
I was laid off in May 2023 and could use support via Patreon or onetime donations as I work on TASBot Re: and TASBot HD. I'm dwangoAC, part of the senior staff of TASVideos as the Senior Ambassador and BDFL of the TASBot community; I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
version 2 - comparison version 2 For some reason the stars and enemy movements differ slightly :)
Post subject: Ooh, comparison video!
Experienced player, Moderator, Senior Ambassador (897)
Joined: 9/14/2008
Posts: 1007
creaothceann wrote:
version 2 version 2 - comparison For some reason the stars and enemy movements differ slightly :)
Thanks for the encodes! FWIW, your links are swapped. I'm very intrigued that moving just one position to the left had such a significant impact on the enemy positions. That comparison video is very handy for showing the difference - is there a guide for how you created that? I had hoped that moving closer to the center would get a faster death but there was no such luck; I can't die any faster without sacrificing time so this'll have to do. Again, thank you for your continued assistance and interest in this run, A.C. ******
I was laid off in May 2023 and could use support via Patreon or onetime donations as I work on TASBot Re: and TASBot HD. I'm dwangoAC, part of the senior staff of TASVideos as the Senior Ambassador and BDFL of the TASBot community; I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
Post subject: Err... 11 frame improvement incoming
Experienced player, Moderator, Senior Ambassador (897)
Joined: 9/14/2008
Posts: 1007
I am so, so sorry to do this but I just discovered an 11 frame improvement from better shot and ship positioning management during the last wave and I've posted it to http://tasvideos.org/userfiles/info/4017425429362043. Could you please replace the submission file with this one? I don't believe there are any other improvements possible beyond this based on the fixed pace of the game. Again, my apologies for asking for an update not once but twice and thanks in advance, A.C. ******
I was laid off in May 2023 and could use support via Patreon or onetime donations as I work on TASBot Re: and TASBot HD. I'm dwangoAC, part of the senior staff of TASVideos as the Senior Ambassador and BDFL of the TASBot community; I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
Post subject: Re: Ooh, comparison video!
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
New encode: http://www.mediafire.com/?n7h852vjvi9hsyt
dwangoAC wrote:
FWIW, your links are swapped.
Fixed.
dwangoAC wrote:
That comparison video is very handy for showing the difference - is there a guide for how you created that?
This is the script for the "comparison" encode:
Language: Avisynth

old = DSS2("dwangoACs A7800 Galaga Expert, Perfect Challenge in 00.53.34.mkv").AssumeFPS(60).FlipVertical() AVISource("00.avi").AssumeFPS(60) # new encode Trim(0, 7891) # cut attract mode demo y = (Height - 240) / 2 # crop to 240 lines Crop(0, y, 0, -y) p1 = Trim( 0, 140) # remove dots in upper left corner p2 = Trim( 141, 7891).Crop(0, 6, 0, 0).AddBorders(0, 6, 0, 0) p1 + p2 new = last Show(old, new, "", "") # don't show any clip names AudioDub(last, new)
Here's "Show.avsi" (put it into the plugins folder):
Language: Avisynth

function Show(clip a, clip b, string "text_a", string "text_b") { text_a = default(text_a, "clip a") text_b = default(text_b, "clip b") a = a.ConvertToRGB32 b = b.ConvertToRGB32 c = Subtract(a, b) x = a.Width / 2 y = a.Height / 2 a1 = a.Crop(0, 0, 0, -y).Outline($FF0000).Subtitle(text_a , text_color=$FFFFFF) a2 = a.Crop(0, +y, 0, 0).Outline($0000FF) b1 = b.Crop(0, 0, 0, -y).Outline($FF0000).Subtitle(text_b , text_color=$FFFFFF) b2 = b.Crop(0, +y, 0, 0).Outline($0000FF) c1 = c.Crop(0, 0, 0, -y).Outline($FF0000).Subtitle("top" , text_color=$FFFFFF, halo_color=$FF0000) c2 = c.Crop(0, +y, 0, 0).Outline($0000FF).Subtitle("bottom", text_color=$FFFFFF, halo_color=$0000FF) StackVertical( \ StackHorizontal( \ StackVertical(a1, a2), \ StackVertical(b1, b2) \ ), \ StackHorizontal(c1, c2) \) } function Outline(clip c, int "color") { color = default(color, $FFFFFF) c.Crop (+1, +1, -1, -1) \.AddBorders(+1, +1, +1, +1, color) }
Experienced player, Moderator, Senior Ambassador (897)
Joined: 9/14/2008
Posts: 1007
Thanks again for the encodes, creaothceann. Mothrayas, thanks for replacing the submission file. I'd like to get this up on YouTube but the current encode doesn't have a disclaimer and I'm not sure how best to convert creaothceann's encode (or if it would even be appropriate for me to rework that encode rather than creating my own - it feels dirty, like I'm taking credit for someone else's work). Anyway, thanks for the attention on this, A.C. ******
I was laid off in May 2023 and could use support via Patreon or onetime donations as I work on TASBot Re: and TASBot HD. I'm dwangoAC, part of the senior staff of TASVideos as the Senior Ambassador and BDFL of the TASBot community; I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
Player (21)
Joined: 6/2/2011
Posts: 35
Location: Chicago, IL
dwangoAC wrote:
I'd like to get this up on YouTube but the current encode doesn't have a disclaimer and I'm not sure how best to convert creaothceann's encode (or if it would even be appropriate for me to rework that encode rather than creating my own - it feels dirty, like I'm taking credit for someone else's work).
You're the author; I wouldn't worry about anyone being offended for stealing "someone else's work" lol
If at first you don't succeed, load your savestate and try again
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
As far as I'm concerned it's public domain. There wasn't that much work or creativity involved.
Experienced player, Moderator, Senior Ambassador (897)
Joined: 9/14/2008
Posts: 1007
creaothceann wrote:
As far as I'm concerned it's public domain. There wasn't that much work or creativity involved.
Heh - OK, thanks. Since this has already been accepted into the Vault I'll let the publisher do the encodde. A.C. ******
I was laid off in May 2023 and could use support via Patreon or onetime donations as I work on TASBot Re: and TASBot HD. I'm dwangoAC, part of the senior staff of TASVideos as the Senior Ambassador and BDFL of the TASBot community; I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14776
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [2284] A7800 Galaga "Expert, Perfect Challenge" by dwangoAC in 00:53.15