Hey everyone! The Gameboy Color was first introduced to the market in 1998, and since then its internal startup boot ROM had not been dumped. Well, I finally got my VDD and clock glitching tricks to deceive the Gameboy Color (GBC) into sharing its boot ROM with me! For those of you who don’t know, the GBC’s boot ROM is what is responsible for initializing the hardware and showing the “GAMEBOY” introductory animation. Read all about the details of how I dumped the ROM as well as download it for yourself (with an almost complete disassembly by Duo) here! (Or just click on the GBC Boot ROM link on the right.)
Also, for those of you who did not read about it, I was also able to read out the Super Gameboy’s boot ROM about a week ago. You can read all about that (as well as grab the download) here. (Or as before, just click the SGB Boot ROM link on the right.)
Thanks for the support from the GB development community (#gbdev, EFNet).
Oh, and while you’re here, don’t forget to read about FPGABoy (what this blog is really about) in the post below.
As usual, feel free to post any comments here or e-mail me at costisNOSPAM@fpgb.org (remove the NOSPAM before mailing.)
awesome
some things take some time
Just phenomenal.
Costis I had no idea you had any interest in the old Gameboy stuff, and I also had no idea Duo (assuming it’s the same Duo I’m thinking of) was still doin’ this kinda stuff!
I hope to see something useful out of this, but I suppose that’s not really important to me personally so much as it is someone like you.
I love seeing stuff like this.
Something as old as the Gameboy Color still being used.
I still have all the old stuff, GBDK ‘n’ whatnot, and I’ll be damned if programming for the GBC isn’t funner than programming for the Wii or DS.
Great!
I’ve tried to test it, but BGB doesn’t emulate boot roms in GBC mode (hence I had to test it in GB-mode). It glitches quite some, but it does play the two pling sounds and halts up (as I had to patch certain areas of the boot ROM into the chartridge-ROM).
I just hope an emulator will take use of it soon.
The Game Boy Color could detect your game and load a default color palette superior to the Super Game Boy. For example, the SGB had a default palette for Metroid II: Return of Samus (heck, it was the cover title!), but it simply set four default colors for white and three grayscale levels. The GBC BIOS set default colors for character sprite and background independently allowing for more than four total colors. It caused a few artifacts in some games though.
In Kirby’s Dreamland 2 (or the original; I’m not sure), Kirby had a default “pink” character sprite. When you’d encounter Whispy Woods, the first boss in practically any Kirby platform game, he’d look normal… UNTIL he moves his mouth to blow puffs of air at you. His mouth would be a “sprite” and you’d see a block of pink around it where it is supposed to mesh with the white tree trunk. Not exactly game-breaking, just curious and obviously hackish. I mean, I’d still rather have the colored sprite than not have it.
Metroid II looks GREAT.
FWIW, I am NOT talking about the palette choices you could make by holding directions and button combinations at the boot screen.
None of the current GameBoy emulators is set up to handle the GBC Boot ROM correctly.
You CAN poke a few bytes into the header space where the normal cartridge would be mapped and get it to boot, and there are graphical glitches if you’re in accurate emulation mode, as the emulators all assume a specific hardware state which is valid for the beginning of a GBC game, but not valid for the beginning of the boot ROM. (I think this has to do with the LCD not being enabled on power-up, but the LCD is enabled at game cartridge startup)
I am quite sure that very very soon a couple of emulators will add support for the new hidden registers (once I finish documenting what I’ve seen of them), and support for the boot image itself.
Nice! Maybe the disassembly will uncover some interesting things for homebrew. If nothing else, now emulators can have the boot screen and correct palettes. :p
Have you considered any difference between the actual GBC ROM and the one in the GBA?
MESS already supports this ROM if you pull current SVN. Great work by Costis on the dump, I thought we’d never see this
First page in Shlashdot, excellent fellow homelander.
Και εις ανώτερα
Kai an katatuxi brethei kapoio tetoio sta xeria sou (http://bulbapedia.bulbagarden.net/wiki/PokéWalker) rikse tou mia matia
Two questions I’m curious about:
In order to better glitch the system, did you ever consider:
1. Controlling the CPU’s voltage via FPGA I/O lines and a speedy DAC to cut the power for a fraction of a second? (You’d have to bypass the decouplers for this, and hope there isn’t an integrated LDO (which I’m sure some better-funded groups would physically bypass)).
2. Controlling the CPU’s voltage on a longer term basis (but very accurately) with an LM317?
3. Try operating the unit at a higher temperature, say, 80C?
#2 and #3 seem like potential strategies when you have a chip that can run at several times it’s standard operating frequency without problems. We just have to induce those problems. Get the CPU to a state where it can barely operate, and glitching should be much simpler and predictable, right?
sweet good job and thanks for the work
Forgive my stupid question but why the need to dump the GBC boot rom?
Awesome job! Thanks for writing it up
Nice, I don’t suppose you have a dump of the ROM from a standard GB or GB Pocket that you would be willing to share?
VERSA-LOK http://pliquid4ssodr.ABABYCLOTHES.INFO/tag/VERSA-LOK+furniture+patio/ : furniture…
VERSA-LOK…
A tecnologia da Tv Digital via internet chegou para lhe proporcionar assistir canais ao vivo em seu computador.
452 canais de Tv Digital transmitidos 24h por dia Ao Vivo, sem taxas de assinatura ou mensalidades
http://www.tvdigitalnopc.com.br