10

Just now, I saw a stream of a person playing Game Boy games. The technical setup is like this:

  • Real American SNES.
  • Real Super Game Boy 2. (Only released in Japan; fixes the speed bug in the Super Game Boy).
  • ROMs on a Game Boy Everdrive.

Going through the list of games, he first started "Animaniacs". On the first stage, there was an upbeat circus music. Soon, he stopped playing it, resetting the Everdrive through some button combination on the controller, and started a new game: "Midway Arcade Classics" (the one with Millipede).

The menu music for Millipede sounded right, but once the actual game/stage started, it did not use the actual music for the game. Instead, it played the "Animaniacs" first stage upbeat circus music. He was so baffled by this that he turned off the SNES, pulled out the Everdrive, inserted it back in again, and then repeated that for both games.

Now, Millipede had the right music. Not the circus music from Animaniacs.

How is this technically possible? What kind of technical glitch could possibly make such a thing happen? It's especially weird that it waited to glitch out until you actually started the gameplay, so it wasn't just picking the same song data somehow for any music, which would've made more sense.

18

I don't know if this is correct, but it seems to fit.

The SNES sound chip is a full processor. It can run its own program and play sounds independently of the main processor. It is also possible for a Game Boy ROM to load a sound program into the SNES sound chip via the Super Game Boy. Animaniacs is one those games.

While the way the SNES sound chip is programmed varies from game to game, one common approach was to send it a fairly large program and treat it as self-contained unit, which the main processor just sends signals like "play a bell sound" or "play the title music".

Also, music for Game Boy games that are not enhanced for the SNES is actually generated in the Super Game Boy unit using hardware like in a Game Boy and is just passed through the SNES.

With all that in mind, I suspect a program for Animaniacs sound effects was loaded into the SNES audio processor when that game was first played. The combination of the Everdrive and Super Game Boy did not properly reset the SNES like a full hardware reset would, with changing the cartridge physically. Partial state from the previous game was still in the SNES sound chip.

I also suspect the Super Game Boy sends standard things like "start was pressed" to the sound chip for both types of games, which the sound program simply ignores when it's been reset. But in this case, the previous program received the command, and behaved accordingly.

1
  • 2
    As a programmer, to me it smells like stale cached data somewhere. I don't know enough about the system to even guess where, but 'using old data' is depressingly common. As they say, there are only two hard things in programming: naming, cache invalidation, and counting. – another-dave Dec 19 '20 at 18:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.