Tuesday, May 7, 2024

Re: Rare Golden Ship Galaga Glitch

Jeff,

1.  There is a bug in the original arcade Galaga where a player can get the "bees" to stop firing missiles.   Although this is part of the game, apparently it is considered a "cheat" and disallowed in high score records.  https://www.youtube.com/watch?v=dtYQB3JOFoc

If the player kills all the bees except for two on the left side and then doesn't kill them for 7 to 20 minutes, usually around 20 minutes, then all the bees will stop firing for the remainder of the game.  I have been able to reproduce this on my Arcade1up and my PC.

This works because there is a table in memory for all the missiles.  There might only be 8 entries in this table.  The table size limits how many missiles can be on the screen simultaneously.

A horizontal value of zero in the table means the missile is inactive.  The way the coordinates work in the game is that a horizontal value of zero is slightly off the left edge of the screen.

If you don't shoot the bees for 20 minutes, they will fire a bunch of missiles, and occasionally a few missiles will be created with a random horizontal coordinate of zero.  Even though these missiles are "active", the code ignores them.  Eventually, the table fills up with missiles that the code ignores.

I think that I heard that later versions of Galaga fixed this bug, although I am not sure.   I wish that they had kept it in.  It is a nice easter egg.


2.  Galaga has a method of doubling your firepower by letting your ship be captured and then rescuing it.  I usually avoid this because it at least doubles the vulnerability of losing a ship.  However, I just watched some YouTube videos where people going for a high score get double ships.  The way they survive and not lose one of their ships is to shoot most of the bees as they enter the screen.  The small number of bees that survive are easier to deal with.



3.  The video hardware has a large number of sprites that can be displayed on the screen simultaneously.  This was impressive for its time.  However, the number of sprites still has a limit.  

The game allows the player with double ships to fire up to four missiles at a time, but reportedly this was too many sprites.  So the game uses a single sprite to display two missiles, and four missiles are displayed with just two sprites.  

As a former video game programmer, I find this interesting because I am not sure what happens if just one of the two missiles in a single sprite hits an enemy.  Do both missiles disappear, or do both missiles keep going up the screen, or does the game switch to a sprite with just one missile?  It is hard to tell by watching the game because the usual case is that both missiles hit an enemy.  I am going to test this.


4.  I am also wondering how the NES port was able to display so many sprites.  The NES has a limit of 8 sprites on the same horizontal line, so if it exceeds this there might be some sprite flicker.  I am going to test this as well.

--


On Mon, May 6, 2024 at 11:03 PM Jeff Wires wrote:
I love Galaga and never knew this! This is just giving me more to talk about on the show!

Appreciate it!
-Jeff

On Sat, May 4, 2024 at 4:13 PM John Coffey wrote:
https://www.youtube.com/watch?v=t_58poXHxOg&t=877s

The golden ship reemerges when the game switches back to the second player.


The enemy ship switched to the wrong characters for that sprite but kept the same color palette.  If we assume that ship type is a single byte value, then that byte was somehow overwritten with a bad value, hypothetically a zero or a one which could be the value for the player ship.  Errors like this could be caused by a memory overflow where a value was written outside the bounds of a table or the limited stack memory was exceeded.

I learned that if Player 1 exceeds 999,999 points, it will not display the millions in the score.  It is not clear if the player's score still counts as being over a million, or if it goes back to zero.  However, the second player does not have this problem and his score can reach 8 digits.




No comments:

Post a Comment