Skawo on Link’s Awakening DX’s Rumble Support

The Game Boy doesn’t have a Rumble Pak. Of course it doesn’t; where would you slot it? But a few games were released for the Game Boy Color (and Game Boy Advance too) that have built-in rumble motors. Because of this, it’s impossible, with unmodified physical hardware, to separate the Rumble from the Pak. If the game supports rumble, it has the motor included; if it doesn’t support rumble, it won’t have the motor. Pretty simple.

Except. Some people discovered, if you put Link’s Awakening DX onto some flash carts with a rumble motor included, there is a point during the game where the rumble will activate. Skawo on Youtube looked at the game’s code and sought an answer as to why. (10 minutes)

The tl;dw: GBC rumble motors are controlled via a MBC5 chip, a chip not dissimilar to the now-famous MMC line of chips on the NES/Famicom. Writes to ROM space are caught by the chip and used to activate functions. The main purpose for these chips is to switch between memory banks, but one bit in the written byte activates or deactivates the motor. Link’s Awakening DX uses a MBC5 and a miscoded write that activates any included motor. The MBC5 usually ignores these writes because it checks the cartridge header to see if it includes rumble support, a check that fails for this game, but GBA flash carts run will use an emulator to run GBC games, and if the emulator is inaccurate it might trigger rumble motor regardless of any header.

So why is the value written anyway? I’ll leave that for the video to explain, but it has to do with the additional save information added for the Color Dungeon, and an issue in the game when it saves puzzle completion data for areas that aren’t in dungeons.