Successfully restored original game from Game Boy Advance crash sound



Nintendo's portable game console

Game Boy Advance , released in March 2001, had a different crash sound for each game, and by using special hardware and code, you could tell which game you were playing based on the crash sound. It is said that it is possible to analyze whether Using this, attempts are being made to restore the original game from the crash sound.

Modder re-creates Game Boy Advance games using the audio from crash sounds | Ars Technica
https://arstechnica.com/gaming/2024/01/modder-recreates-game-boy-advance-games-using-the-audio-from-crash-sounds/



Mod creator TheZZAZZGlitch came up with a way to restore the original game from the crash sound. According to him, the Game Boy Advance's crash sound is simply the game console reproducing the entire address space as sound data. Therefore, TheZZAZZGlitch writes that if there is clear recording data of a crash sound, it is possible to dump RAM (memory) and ROM by converting it to digital data and worked on this method. .

The video below summarizes how to recover game data from Game Boy Advance crash sounds.

Dumping the ROM of a GBA game by crashing it - YouTube


TheZZAZZGlitch uses the Game Boy Advance emulator mGBA to record game crash sounds in the highest quality possible.



Apparently it took 4 hours to record.



When I played back the recorded data, I found a characteristic waveform around 1 hour and 50 minutes.



It turns out that the format of this sound data is signed 8-bit and sampled at 13100Hz. From here, TheZZAZZGlitch felt that ``with such clean recorded data, it shouldn't be difficult to restore game data.''



After that, TheZZAZZGlitch created a Python script to restore the original game data from the Game Boy Advance crash sound recording data.



I tried running the restored game data on mGBA, but an error occurred and I was unable to run the game.



After analyzing the data, we discovered that there was a large blank area (red frame) in the 0x00 byte area in the ROM. TheZZAZZGlitch thought it would be difficult to know for sure how many bytes of data should be in this blank space because the start and end points of each byte are unknown.



Therefore, TheZZAZZGlitch created a new script to rearrange each data by comparing it with the original game data. This will successfully restore 99.76% of the original game data. However, it seems that the game could not be started even with this restored data.



TheZZAZZGlitch says, ``Technically, this act is equivalent to cheating because it refers to the original game data.''

Next, in order to improve the crash sound to be recorded, we prepared a different device from the PC we initially used for recording and recorded the Game Boy Advance crash sound.



By combining this recorded data with the first recorded data using a majority voting algorithm, we succeeded in increasing the accuracy of game data restoration to 99.979%.



This restored data could also be booted with mGBA. However, due to a bug, the text on the startup screen was garbled and unreadable.



Additionally, the game would crash during launch.



So, TheZZAZZGlitch meshed seven different recordings and filtered out the blank areas. Then, the accuracy of restoring game data finally reached 100%.



Garbled characters on the startup screen have also been fixed.



I was able to start the game without any problems.



In addition, TheZZAZZGlitch is also working on recording the crash sound that comes from the actual Game Boy Advance as well as on the emulator and restoring the game data. However, unlike data recorded with an emulator, crash sounds recorded from a real Game Boy Advance require more adjustments, so this method is 'hard to call a one-size-fits-all solution.' It seems that it is.



Therefore, TheZZAZZGlitch says, ``Maybe I should make a separate video'' about how to reproduce the game data from the crash sound that comes from the actual Game Boy Advance.

in Hardware,   Video,   Game, Posted by logu_ii