GBC colorization palettes in the BIOS

Discussion of programming and development for the original Game Boy and Game Boy Color.
Post Reply
User avatar
mikejmoffitt
Posts: 1353
Joined: Sun May 27, 2012 8:43 pm

GBC colorization palettes in the BIOS

Post by mikejmoffitt »

Are the 93 specially-chosen GBC palettes for the games that had them written anywhere? Wikipedia lists the ones for the keypad combinations with a nice handy graphic; something like that for the games would be handy. This question came to mind when I was wondering who the hell is responsible for this gross mess:

Image

Also, fun bug report fact: If you continuously hold the button combo for the extra game, the dancing kirby animation slows down a noticeable ~50% - I'm guessing it's repeatedly writing the EXTRA GAME entry into the name table? Not sure what else could be done that would be such a slow operation for a simple thing like that...
nitro2k01
Posts: 252
Joined: Sat Aug 28, 2010 9:01 am

Re: GBC colorization palettes in the BIOS

Post by nitro2k01 »

I made a script to extract a list of ROMs in GoodGBX that qualify for an automatic palette swap. The qualifications in the GBC "BIOS" is as follows:
The ROM can't be listed as GBC compatible, in which case it obviously has to handle it own palette settings. (D'uh!)
The ROM must be listed as licened by Nintendo.
* This means that the old licensee field = $01,
* or for an SGB game, that the old licensee field = $33 (required for SGB compatibility) and the new licensee field = $30, $31
Then an 8-bit checksum is calculated from the title field (0134-0143) and checked against an internal table.
If all is good, a custom palette will be loaded based on the title checksum.

Below is a list of ROMs that my script was able to detect. Try any of these ROMs on a real GBC, or in BGB with the GBC boot ROM present and enabled.

Most of these are straightforward, but there are a couple of unlicened/PD ROMs in there. Some of them are just checksum collisions, but interestingly, a common reason for this is that a ROM is using the same title field as a licened ROM. For example:

Code: Select all

1993 Collection 128-in-1 (Unl) [b1].gb = "ALLEY WAY"
Game Genie V1.17 BIOS [h1].gb = "TETRIS"
whereas:

Code: Select all

Deadline (PD) [M].gb = "DEADLINE/INFOCOM"
which adds to a checksum of 0x70, which collides with Zelda, Link's Awakening, which just has a title of "ZELDA" across both regions.

I will extract a full color table for all these ROMs at a later point.

And for the record, that Kirby palette is actually somewhat bearable on the much crappier original GBC screen.

Code: Select all

1993 Collection 128-in-1 (Unl) [b1].gb
Adventures of Lolo (U) [S][!].gb
Alleyway (W) [!].gb
Alleyway (W) [b1].gb
Alleyway (W) [o1].gb
Alleyway (W) [T+Fre__Emulation-151].gb
Alleyway (W) [t1].gb
Alleyway (W) [t2].gb
Ant Soldiers Demo (PD).gb
Asteroids & Missile Command (U) [S][!].gb
Asteroids & Missile Command (U) [S][b1].gb
Asteroids & Missile Command (U) [S][b2].gb
Asteroids & Missile Command (U) [S][b3].gb
Asteroids & Missile Command (U) [S][t1].gb
Balloon Kid (W) [!].gb
Balloon Kid (W) [b1].gb
Balloon Kid (W) [BF].gb
Balloon Kid (W) [T+Fre_Emulation-151].gb
Baseball (W) [!].gb
Battle Arena Toshinden (U) [S][!].gb
Battletoads in Ragnarok's World (E) [!].gb
Boy and His Blob, A - The Rescue of Princess Blobette (E) [!].gb
Boy and His Blob, A - The Rescue of Princess Blobette (E) [b1].gb
Captain Knick-Knack (Sachen) [!].gb
Deadline (PD) [M].gb
Deadline (PD) [M][a1].gb
Deadline (PD) [M][a2].gb
Defender-Joust (U) [S][!].gb
Defender-Joust (U) [S][b1].gb
Defender-Joust (U) [S][b2].gb
Defender-Joust (U) [S][b3].gb
Defender-Joust (U) [S][t1] (Joust Lives).gb
Defender-Joust (U) [S][t2] (Defender Lives).gb
Defender-Joust (U) [S][t3] (Defender Bombs).gb
Defender-Joust (U) [S][t4] (Defender Lives and Bombs).gb
Donkey Kong (JU) (V1.0) [S][!].gb
Donkey Kong (JU) (V1.0) [S][b1].gb
Donkey Kong (JU) (V1.0) [S][b2].gb
Donkey Kong (JU) (V1.0) [S][b3].gb
Donkey Kong (JU) (V1.0) [S][b4].gb
Donkey Kong (JU) (V1.0) [S][b5].gb
Donkey Kong (JU) (V1.1) [S][!].gb
Donkey Kong Land (J) [S].gb
Donkey Kong Land (U) [S][!].gb
Donkey Kong Land (U) [S][b1].gb
Donkey Kong Land (U) [S][b2].gb
Donkey Kong Land (U) [S][h1C].gb
Donkey Kong Land (U) [S][t1] (Invincible).gb
Donkey Kong Land (U) [S][t2] (Lives).gb
Donkey Kong Land (U) [S][t3] (Invincible and Lives).gb
Donkey Kong Land 2 (UE) [S][!].gb
Donkey Kong Land 2 (UE) [S][b1].gb
Donkey Kong Land 2 (UE) [S][b2].gb
Donkey Kong Land 2 (UE) [S][T+Fre99%_YF06].gb
Donkey Kong Land III (U) (V1.0) [S][!].gb
Donkey Kong Land III (U) (V1.0) [S][b1].gb
Donkey Kong Land III (U) (V1.0) [S][T+Fre1.1_YF06].gb
Donkey Kong Land III (U) (V1.0) [S][T-Fre99%_YF06].gb
Donkey Kong Land III (U) (V1.1) [S][!].gb
Dr. Hatio V1.0 (Dr. Mario Hack).gb
Dr. Mario (W) (V1.0) (PocketVoice Hack).gb
Dr. Mario (W) (V1.0) [!].gb
Dr. Mario (W) (V1.0) [b1].gb
Dr. Mario (W) (V1.0) [BF].gb
Dr. Mario (W) (V1.0) [T+Ita1.0_ZombiKiller].gb
Dr. Mario (W) (V1.1) (PocketVoice Hack).gb
Dr. Mario (W) (V1.1).gb
Dude, Where's My Char V0.01 (Pokemon Blue Hack) [S].gb
Dynablaster (E) [!].gb
Explosive Brick '94 (Sachen) [!].gb
F-1 Race (W) (V1.0) [!].gb
F-1 Race (W) (V1.0) [b1].gb
F-1 Race (W) (V1.1) [!].gb
F-1 Race (W) (V1.1) [b1].gb
F-1 Race (W) (V1.1) [o1].gb
Galaga & Galaxian (U) [S][!].gb
Galaga & Galaxian (U) [S][b1].gb
Galaga & Galaxian (U) [S][BF].gb
Galaga & Galaxian (U) [S][T+Cat].gb
Galaga & Galaxian (U) [S][t1].gb
Game & Watch Gallery (E) [S][!].gb
Game & Watch Gallery (U) (V1.0) [S][!].gb
Game & Watch Gallery (U) (V1.0) [S][b1].gb
Game & Watch Gallery (U) (V1.1) [S][!].gb
Game & Watch Gallery 2 (J) [S].gb
Game & Watch Gallery 2 (J) [S][b1].gb
Game & Watch Gallery 2 (U) [S].gb
Game Genie V1.17 BIOS [h1].gb
Game Genie V1.17 BIOS [o1][h1].gb
Gameboy Camera Gold - Zelda Edition (U) [S].gb
Gameboy Gallery (J) [S].gb
Gameboy Gallery (J) [S][t1].gb
Gameboy Gallery (U) [S].gb
Gameboy Gallery (U) [S][b1].gb
Gameboy Gallery (U) [S][b2].gb
Gameboy Gallery 2 (A) [S][!].gb
Gameboy Smart Card (CCL Copier) (Unl) [a2].gb
Gameboy Smart Card (CCL Copier) (Unl) [S].gb
Gameboy Wars (J) [b1].gb
Gameboy Wars (J).gb
Golf (W) [!].gb
Golf (W) [o1].gb
Golf (W) [o2].gb
Golf (W) [o3].gb
Hollywood Hijinx (PD) [M][a1].gb
Hot GB by Iceberg (PD).gb
James Bond 007 (U) [S][!].gb
James Bond 007 (U) [S][b1].gb
James Bond 007 (U) [S][T+Chi].gb
Jurassic Park 3 (Unl) [f1].gb
Jurassic Park 3 (Unl).gb
Kaeruno Tameni (J) [!].gb
Kaeruno Tameni (J) [b1].gb
Kaeruno Tameni (J) [b2].gb
Ken Griffey Jr. Presents Major League Baseball (U) [S][!].gb
Ken Griffey Jr. Presents Major League Baseball (U) [S][b1].gb
Ken Griffey Jr. Presents Major League Baseball (U) [S][b2].gb
Kid Icarus - Of Myths and Monsters (UE) [!].gb
Kid Icarus - Of Myths and Monsters (UE) [b1][BF].gb
Kid Icarus - Of Myths and Monsters (UE) [b4].gb
Kid Icarus - Of Myths and Monsters (UE) [BF].gb
Kid Icarus - Of Myths and Monsters (UE) [o1].gb
Kid Icarus - Of Myths and Monsters (UE) [T+Dut].gb
Kid Icarus - Of Myths and Monsters (UE) [T+Fre_Emulation-151].gb
Kid Icarus - Of Myths and Monsters DX by Redrum (Hack).gb
Killer Instinct (U) [S][!].gb
Killer Instinct (U) [S][a1].gb
Killer Instinct (U) [S][a1][o1].gb
Killer Instinct (U) [S][b1].gb
Killer Instinct (U) [S][b2].gb
Killer Instinct (U) [S][b3].gb
Killer Instinct (U) [S][T+Spa100%_Tanero].gb
King of Fighters '95, The (U) [S][!].gb
King of the Zoo (J) [b1].gb
King of the Zoo (J).gb
Kira Kira Kids (J) [S].gb
Kirby 2 - Hoshinoka 2 (J) [S].gb
Kirby 2 - Hoshinoka 2 (J) [S][b1].gb
Kirby no Block Ball (J) [S].gb
Kirby no Pinball (J) [!].gb
Kirby no Pinball (J) [b1].gb
Kirby's Block Ball (U) [S][!].gb
Kirby's Block Ball (U) [S][b1].gb
Kirby's Block Ball (U) [S][b2].gb
Kirby's Block Ball (U) [S][t1].gb
Kirby's Dream Land (UE) [!].gb
Kirby's Dream Land (UE) [b1].gb
Kirby's Dream Land (UE) [T+Chi].gb
Kirby's Dream Land (UE) [t1].gb
Kirby's Dream Land 2 (U) [S][!].gb
Kirby's Dream Land 2 (U) [S][t1] (Lives).gb
Kirby's Dream Land 2 (U) [S][t2] (Energy).gb
Kirby's Hoshinoka-Bi (J) (V1.0) [b1].gb
Kirby's Hoshinoka-Bi (J) (V1.0) [t1].gb
Kirby's Hoshinoka-Bi (J) (V1.0).gb
Kirby's Hoshinoka-Bi (J) (V1.1) [t1].gb
Kirby's Hoshinoka-Bi (J) (V1.1).gb
Kirby's Pinball Land (U) [!].gb
Kirby's Pinball Land (U) [b1].gb
Kirby's Pinball Land (U) [b2].gb
Kirby's Pinball Land (U) [t1].gb
Kirby's Star Stacker (U) [S][!].gb
Kirby's Star Stacker (U) [S][b1].gb
Kirby's Star Stacker (U) [S][b2].gb
Leather Goddesses of Phobos, The (PD) [M].gb
Leather Goddesses of Phobos, The (PD) [M][a1].gb
Leather Goddesses of Phobos, The (PD) [M][a2].gb
Leather Goddesses of Phobos, The (PD) [M][a3].gb
Legend of Zelda, The - Link Gets Laid by P3 (Hack) [a1].gb
Legend of Zelda, The - Link Gets Laid by P3 (Hack) [b1].gb
Legend of Zelda, The - Link Gets Laid by P3 (Hack).gb
Legend of Zelda, The - Link's Awakening (F) [b1].gb
Legend of Zelda, The - Link's Awakening (F).gb
Legend of Zelda, The - Link's Awakening (G) [!].gb
Legend of Zelda, The - Link's Awakening (U) (V1.0) [!].gb
Legend of Zelda, The - Link's Awakening (U) (V1.0) [b1].gb
Legend of Zelda, The - Link's Awakening (U) (V1.0) [T+Fre1.0_Pronia].gb
Legend of Zelda, The - Link's Awakening (U) (V1.0) [T+Hun0.01_Just4fun].gb
Legend of Zelda, The - Link's Awakening (U) (V1.0) [T+Ita1.2_SadNES cITy].gb
Legend of Zelda, The - Link's Awakening (U) (V1.0) [T+Ita].gb
Legend of Zelda, The - Link's Awakening (U) (V1.0) [T+Spa0.30_Emunixs].gb
Legend of Zelda, The - Link's Awakening (U) (V1.0) [T+Spa1.0_DJTraducciones].gb
Legend of Zelda, The - Link's Awakening (U) (V1.0) [T+Spa_Juanjo].gb
Legend of Zelda, The - Link's Awakening (U) (V1.1) [!].gb
Legend of Zelda, The - Link's Awakening (U) (V1.1) [T+Hun0.01_Just4fun].gb
Legend of Zelda, The - Link's Awakening (U) (V1.1) [T+Ita1.2_SadNES cITy].gb
Legend of Zelda, The - Link's Awakening (U) (V1.1) [T+Spa0.30_Emunixs].gb
Legend of Zelda, The - Link's Awakening (U) (V1.1) [T+Spa1.0_DJTraducciones].gb
Legend of Zelda, The - Link's Awakening (U) (V1.2) [!].gb
Legend of Zelda, The - Link's Awakening (U) (V1.2) [T+Hun0.01_Just4fun].gb
Legend of Zelda, The - Link's Awakening (U) (V1.2) [T+Ita1.2_SadNES cITy].gb
Legend of Zelda, The - Link's Awakening (U) (V1.2) [T+Spa0.30_Emunixs].gb
Legend of Zelda, The - Link's Awakening (U) (V1.2) [T+Spa1.0_DJTraducciones].gb
Log-X (PD).gb
Lurking Horror, The (PD) [M].gb
Lurking Horror, The (PD) [M][a1].gb
Lurking Horror, The (PD) [M][a2].gb
Lurking Horror, The (PD) [M][a3].gb
Magic Maze (Sachen) [!].gb
Magnetic Soccer (U) [b1].gb
Magnetic Soccer (U) [b2].gb
Magnetic Soccer (U).gb
Mario & Yoshi (E) [!].gb
Mario & Yoshi (E) [o1].gb
Mario & Yoshi (E) [o2].gb
Mario's Picross (J) [S].gb
Mario's Picross (UE) [S][!].gb
Mario's Picross (UE) [S][b1].gb
Mario's Picross (UE) [S][b2].gb
Mario's Picross (UE) [S][b3].gb
Mario's Picross 2 (J) [S].gb
Mario's Picross 2 (J) [S][b1].gb
Mario's Picross 2 (J) [S][b1][T+Eng].gb
Mario's Picross 2 (J) [S][b2].gb
Mario's Picross 2 (J) [S][T+EngNC1_Zed].gb
Megaman - Dr. Wily's Revenge (E) [!].gb
Megaman II (E) [!].gb
Megaman II (E) [b1].gb
Megaman II (E) [b2].gb
Megaman II (E) [o1].gb
Megaman II (E) [T+Ger1.00_Reaper].gb
Megaman III (E) [!].gb
Megaman III (E) [T+Ger1.00_Reaper].gb
Megaman III (E) [t1].gb
MegaMemory V1.0 by Interact (E).gb
Meowth's Adventure (Pokemon Blue Hack) [S].gb
Meowth's Adventure (Pokemon Blue Hack) [S][a1].gb
Metroid II - Destroyable Walls (Hack).gb
Metroid II - Return of Samus (W) [!].gb
Metroid II - Return of Samus (W) [b1].gb
Metroid II - Samus Bares All by P3 (Hack).gb
Metroid II DX by Redrum (Hack).gb
Millipede - Centipede (UE) [S][!].gb
Millipede - Centipede (UE) [S][b1].gb
Moguranya (J) [S].gb
Mole Mania (U) [S][!].gb
Mole Mania (U) [S][b1].gb
Mole Mania (U) [S][b2].gb
Mooglyway (Alleyway Hack).gb
Mystic Quest (E) [!].gb
Mystic Quest (E) [b1].gb
Mystic Quest (E) [b2].gb
Mystic Quest (E) [b3].gb
Mystic Quest (E) [T+Spa100_turin].gb
Mystic Quest (F).gb
Mystic Quest (G) [!].gb
Mystic Quest (G) [b1].gb
Mystic Quest (G) [b2].gb
Mystic Quest (G) [b3].gb
Nigel Mansell's World Championship '92 (U) [!].gb
Nigel Mansell's World Championship '92 (U) [b1].gb
Nigel Mansell's World Championship '92 (U) [b2].gb
Nigel Mansell's World Championship '92 (U) [b3].gb
Nigel Mansell's World Championship '92 (U) [b4].gb
Nintendo World Cup (U) [!].gb
Nintendo World Cup (U) [b1].gb
Oak's Dream V0.15 (Pokemon Blue Hack) [S].gb
Othello (UE) [!].gb
Pac-in-Time (U) [S][t1].gb
Pac-in-Time (UE) (Beta) [S].gb
Pac-in-Time (UE) (Beta) [S][b1].gb
Pikabomber V1.10 (Pocket Bomberman Hack).gb
Pinocchio (U) (1995) [BF].gb
Pinocchio (U) (1995).gb
Planetfall (PD) [M].gb
Planetfall (PD) [M][a1].gb
Play Action Football (U) [!].gb
Play Action Football (U) [b1].gb
Pocket Bomberman (U) [S].gb
Pocket Bomberman (U) [S][b1].gb
Pocket Bomberman (U) [S][BF].gb
Pocket Camera (J) (V1.1) [S].gb
Pocket Jinjin Mario Land by YulhyulCafe (Super Mario Land V1.0 Hack).gb
Pocket Jinjin Mario Land by YulhyulCafe (Super Mario Land V1.1 Hack).gb
Pocket Monsters - Blue Version (J) [S].gb
Pocket Monsters - Blue Version (J) [S][b1].gb
Pocket Monsters - Blue Version (J) [S][b1][BF].gb
Pocket Monsters - Blue Version (J) [S][b1][T-Eng].gb
Pocket Monsters - Blue Version (J) [S][BF].gb
Pocket Monsters - Blue Version (J) [S][BF][b1].gb
Pocket Monsters - Blue Version (J) [S][T+Eng.18_Ned].gb
Pocket Monsters - Blue Version (J) [S][T-Eng].gb
Pocket Monsters - Red Version (J) (V1.0) [S].gb
Pocket Monsters - Red Version (J) (V1.0) [S][p1][T+Chi][h1C].gb
Pocket Monsters - Red Version (J) (V1.1) [S].gb
Pocket Monsters - Red Version (J) (V1.1) [S][b1][BF].gb
Pocket Monsters - Red Version (J) (V1.1) [S][b2][BF].gb
Pocket Monsters - Red Version (J) (V1.1) [S][BF].gb
Pocket Monsters Green (Chinese Blue Hack) [S].gb
Pocket Monsters Green (Chinese Blue Hack) [S][a1].gb
Pocket Monsters Kin (J) (V1.0) [C][h1][T+Por].gbc
Pocket Monsters Midori (J) (V1.0) [S][!].gb
Pocket Monsters Midori (J) (V1.0) [S][b1].gb
Pocket Monsters Midori (J) (V1.0) [S][BF].gb
Pocket Monsters Midori (J) (V1.0) [S][BF][a1].gb
Pocket Monsters Midori (J) (V1.0) [S][BF][a2].gb
Pocket Monsters Midori (J) (V1.0) [S][T+Eng0.03_LandaR].gb
Pocket Monsters Midori (J) (V1.0) [S][T+Eng0.20_Magecraft].gb
Pocket Monsters Midori (J) (V1.0) [S][T+Eng0.5_DWTRANS].gb
Pocket Monsters Midori (J) (V1.0) [S][T+Eng3.1_Vida].gb
Pocket Monsters Midori (J) (V1.0) [S][T+Eng_BGTrans].gb
Pocket Monsters Midori (J) (V1.0) [S][T+Eng_Vida].gb
Pocket Monsters Midori (J) (V1.0) [S][T+Fre20%_YF06][b1].gb
Pocket Monsters Midori (J) (V1.0) [S][T-Eng0.01_LandaR].gb
Pocket Monsters Midori (J) (V1.0) [S][T-Eng0.02_LandaR].gb
Pocket Monsters Midori (J) (V1.0) [S][T-Eng0.03].gb
Pocket Monsters Midori (J) (V1.0) [S][T-Eng].gb
Pocket Monsters Midori (J) (V1.0) [S][T-Eng_LandaR].gb
Pocket Monsters Midori (J) (V1.0) [S][T-Fre10%_YF06][b1].gb
Pocket Monsters Midori (J) (V1.1) [S][!].gb
Pocket Monsters Midori (J) (V1.1) [S][T+Eng0.5_DWTRANS][b1].gb
Pocket Monsters Midori (J) (V1.1) [S][T+Eng3.1_Vida][b1].gb
Pocket Monsters Midori (J) (V1.1) [S][T+Fre20%_YF06][b1].gb
Pocket Monsters Midori (J) (V1.1) [S][T-Eng0.03][b1].gb
Pocket Monsters Midori (J) (V1.1) [S][T-Fre10%_YF06][b1].gb
Pocket Monsters Yellow (J) (V1.0) [S].gb
Pocket Monsters Yellow (J) (V1.0) [S][b1].gb
Pocket Monsters Yellow (J) (V1.0) [S][BF].gb
Pocket Monsters Yellow (J) (V1.0) [S][BF][a1].gb
Pocket Monsters Yellow (J) (V1.0) [S][p1][T+Chi][h1C].gb
Pocket Monsters Yellow (J) (V1.0) [S][T+Eng1.0_Kang Taewook].gb
Pocket Monsters Yellow (J) (V1.0) [S][T+Eng].gb
Pocket Monsters Yellow (J) (V1.0) [S][T-Eng].gb
Pocket Monsters Yellow (J) (V1.1) [S].gb
Pocket Monsters Yellow (J) (V1.2) [S].gb
Pokemon - Blaue Edition (G) [S][!].gb
Pokemon - Blaue Edition (G) [S][BF].gb
Pokemon - Blaue Edition (G) [S][BF][a1].gb
Pokemon - Blue Version (UE) [S][!].gb
Pokemon - Blue Version (UE) [S][b2].gb
Pokemon - Blue Version (UE) [S][b3].gb
Pokemon - Blue Version (UE) [S][BF].gb
Pokemon - Blue Version (UE) [S][BF][a1].gb
Pokemon - Blue Version (UE) [S][h1] (Sonic The Hedgehog).gb
Pokemon - Blue Version (UE) [S][p1][T+Chi][!].gb
Pokemon - Blue Version (UE) [S][T+Por1.2_CBT].gb
Pokemon - Blue Version (UE) [S][T+Rus].gb
Pokemon - Blue Version (UE) [S][T+Spa0.15_Tanero][b1].gb
Pokemon - Blue Version (UE) [S][T+Spa_RapidFire].gb
Pokemon - Blue Version (UE) [S][T-Por].gb
Pokemon - Edicion Azul (S) [S][!].gb
Pokemon - Edicion Azul (S) [S][BF].gb
Pokemon - Edicion Roja (S) [S].gb
Pokemon - Edicion Roja (S) [S][BF].gb
Pokemon - Red Version (UE) [S][!].gb
Pokemon - Red Version (UE) [S][b1].gb
Pokemon - Red Version (UE) [S][BF].gb
Pokemon - Red Version (UE) [S][h2].gb
Pokemon - Red Version (UE) [S][T+Dut].gb
Pokemon - Red Version (UE) [S][T+Nor2000.10.02_Just4Fun].gb
Pokemon - Red Version (UE) [S][T+Por1.2_CBT].gb
Pokemon - Red Version (UE) [S][T+Por].gb
Pokemon - Red Version (UE) [S][T+Rus].gb
Pokemon - Red Version (UE) [S][T+Spa0.25_PalKnights].gb
Pokemon - Red Version (UE) [S][T-Nor2000.05.06_Just4Fun].gb
Pokemon - Rote Edition (G) [S][!].gb
Pokemon - Rote Edition (G) [S][b1][BF].gb
Pokemon - Rote Edition (G) [S][BF].gb
Pokemon - Rote Edition (G) [S][BF][a1].gb
Pokemon - The Johto Journeys by MB Hacks (Red Hack) [S].gb
Pokemon - The Next Generation (Red Hack) [S].gb
Pokemon - Version Bleue (F) [S].gb
Pokemon - Version Bleue (F) [S][b1].gb
Pokemon - Version Bleue (F) [S][BF].gb
Pokemon - Version Rouge (F) [S].gb
Pokemon - Version Rouge (F) [S][BF].gb
Pokemon - Versione Blu (I) [S][!].gb
Pokemon - Versione Rossa (I) [S][!].gb
Pokemon 151 (Red Hack) [S].gb
Pokemon After Math - Blue Version by Dexter3000 (Hack).gb
Pokemon After Math - Green Version by Dexter3000 (Hack).gb
Pokemon Amsterdam by Ruliz & AGP V0.10 (Red Hack) [S].gb
Pokemon Aqua V2.4 by Colosseum Translations (Red Hack) [S].gb
Pokemon Aqua V2.7 by Colosseum Translations (Red Hack) [S].gb
Pokemon Black - Special Palace Edition 1 by MB Hacks (Red Hack) [S].gb
Pokemon Blue Before Elite (Blue Hack) [S].gb
Pokemon Blue Edition - Enhanced V0.4beta (Blue Hack) [S].gb
Pokemon Blue Upgrade V2.0 (Blue Hack) [S].gb
Pokemon Breeders Edition V6 (Blue Hack) [S].gb
Pokemon Brown V1.1 (Red Hack) [S].gb
Pokemon Girl V1.0 (Red Hack) [S].gb
Pokemon Green (U) [p1][!].gb
Pokemon Green (U) [p1][T+Fre20%_YF06].gb
Pokemon Green (U) [p1][T-Fre10%_YF06].gb
Pokemon Grey (Blue Hack) [S].gb
Pokemon II V1.0 (Red Hack) [S].gb
Pokemon Knife v1.0 by Z80a (Pokemon Red Hack) [S].gb
Pokemon Meowth (Blue Hack) [S].gb
Pokemon Meowth (Red Hack) [S].gb
Pokemon Neo - Rocket V2.1 (Blue Hack) [S].gb
Pokemon of the Past V0.1 by PR (Zelda Hack).gb
Pokemon Pink Version by MB Hacks (Red Hack) [S].gb
Pokemon Platinum (Red Hack) [S].gb
Pokemon Red - Dark and Steel Types v1.0 by Koolboyman (Red Hack) [S].gb
Pokemon Red Advanced (U) [S][p1][!].gb
Pokemon Red by Figth (Hack) [S].gb
Pokemon Red Upgrade V2.0 (Red Hack) [S].gb
Pokemon Red-Blue 2-in-1 (Unl) [S].gb
Pokemon Revolution Vx.x by Colloseum Translations (Red Hack) [S].gb
Pokemon Rocket - James Version V1.1 (Blue Hack) [S].gb
Pokemon Rocket - Jessie Version V1.0 (Red Hack) [S].gb
Pokemon Rocket - Jessie Version V1.1 (Red Hack) [S].gb
Pokemon Rocket - Jessie Version V1.2 (Red Hack) [S].gb
Pokemon Uncensored (Red Hack) [S].gb
Pokemon Violet v3.0 By Cartmic (Red Hack) [S].gb
Pokemon Violet v3.5 By Cartmic (Red Hack) [S].gb
Pokemon White Version by MB Hacks (Blue Hack) [S].gb
Qix (JU) [!].gb
Qix (JU) [h1] (Hi-score patch).gb
Qix (JU) [p1].gb
Radar Mission (J) [b1].gb
Radar Mission (J).gb
Radar Mission (UE) [!].gb
Soccer (E) (M3) [S][!].gb
Soccer (E) (M3) [S][b1].gb
SolarStriker (W) [!].gb
SolarStriker (W) [b1].gb
SolarStriker (W) [t1].gb
Space Invaders (E) [S][!].gb
Space Invaders (U) [S].gb
Space Invaders (U) [S][b1].gb
Space Invaders (U) [S][b2].gb
Space Invaders (U) [S][b3].gb
Spellbreaker (PD) [M].gb
Spellbreaker (PD) [M][a1].gb
Spellbreaker (PD) [M][a2].gb
Spellbreaker (PD) [M][a3].gb
Star Wars (U) (V1.1) [!].gb
Star Wars (U) (V1.1) [t1].gb
Street Fighter II (UE) [S][!].gb
Super Donkey Kong GB (J) [S].gb
Super Mario Land (W) (V1.0) [!].gb
Super Mario Land (W) (V1.0) [b1].gb
Super Mario Land (W) (V1.0) [b2].gb
Super Mario Land (W) (V1.0) [b3].gb
Super Mario Land (W) (V1.0) [T+Ita1.0_Zombikiller].gb
Super Mario Land (W) (V1.1) (New GFX 1.0 Hack).gb
Super Mario Land (W) (V1.1) (New GFX 2.0 Hack).gb
Super Mario Land (W) (V1.1) [!].gb
Super Mario Land (W) (V1.1) [b1].gb
Super Mario Land (W) (V1.1) [h1C].gb
Super Mario Land (W) (V1.1) [h1].gb
Super Mario Land (W) (V1.1) [T+Fre1.1].gb
Super Mario Land (W) (V1.1) [T+Ger].gb
Super Mario Land (W) (V1.1) [T+Ita1.0_Zombikiller].gb
Super Mario Land (W) (V1.1) [T+Por].gb
Super Mario Land (W) (V1.1) [t1].gb
Super Mario Land (W) (V1.1) [t2].gb
Super Mario Land 2 - 6 Golden Coins (UE) (V1.0) [!].gb
Super Mario Land 2 - 6 Golden Coins (UE) (V1.0) [b1].gb
Super Mario Land 2 - 6 Golden Coins (UE) (V1.0) [b2].gb
Super Mario Land 2 - 6 Golden Coins (UE) (V1.0) [b3].gb
Super Mario Land 2 - 6 Golden Coins (UE) (V1.0) [BF].gb
Super Mario Land 2 - 6 Golden Coins (UE) (V1.0) [T+Gre].gb
Super Mario Land 2 - 6 Golden Coins (UE) (V1.0) [T+Spa1.00_PalKnights].gb
Super Mario Land 2 - 6 Golden Coins (UE) (V1.1) [!].gb
Super Mario Land 2 - 6 Golden Coins (UE) (V1.2) [!].gb
Super Mario Land 2 - 6 Golden Coins (UE) (V1.2) [T+Fre1.0].gb
Super Mario Land 2 - 6 Golden Coins (UE) (V1.2) [T+Spa1.00_PalKnights].gb
Super Mario Land 2 - 6tsu no Kinka (J) (V1.0).gb
Super Mario Land 2 - 6tsu no Kinka (J) (V1.2) [b1].gb
Super Mario Land 2 - 6tsu no Kinka (J) (V1.2) [BF].gb
Super Mario Land 2 - 6tsu no Kinka (J) (V1.2).gb
Super Pika Land Vx.x by PR (Super Mario Land Hack) [a2].gb
Super R.C. Pro-Am (UE) [!].gb
Super R.C. Pro-Am (UE) [b1].gb
Super Super Mario Land v1.0 by Frank Maggiore (SML Hack).gb
Supreme 105-in-1 (Menu) [p1][b1].gb
Tennis (W) [!].gb
Tennis (W) [b1].gb
Tennis (W) [o1].gb
Tennis (W) [T+Bra_TraduRoms].gb
Tennis (W) [T+Spa100%_Ereza].gb
Tetris (W) (V1.0) [!].gb
Tetris (W) (V1.1) [!].gb
Tetris (W) (V1.1) [T+Ger1.00_Kogonking].gb
Tetris (W) (V1.1) [T+Ger1.00_MovAX].gb
Tetris (W) (V1.1) [T+Por].gb
Tetris 2 (U) [!].gb
Tetris 2 (UE) [S][!].gb
Tetris Attack (U) (V1.0) [S][!].gb
Tetris Attack (U) (V1.1) [S].gb
Tetris Attack (U) (V1.1) [S][b1].gb
Tetris Blast (U) [S][!].gb
Tetris Blast (U) [S][b1].gb
Tetris Flash (J) [S].gb
Tetris Flash (J) [S][b1].gb
Tetris Flash (J) [S][b2].gb
Tetris Plus (U) [S][!].gb
Tetris Plus (U) [S][b1].gb
Tetris Plus (U) [S][BF].gb
Top Rank Tennis (U) [!].gb
Top Rank Tennis (U) [b1].gb
Top Ranking Tennis (E) [!].gb
Top Ranking Tennis (U) [b1].gb
Toy Story (E) [!].gb
Vegas Stakes (U) [S][!].gb
Wario Blast Featuring Bomberman! (U) [S][!].gb
Wario Blast Featuring Bomberman! (U) [S][b1].gb
Wario Blast Featuring Bomberman! (U) [S][b2].gb
Wario Blast Featuring Bomberman! (U) [S][BF].gb
Wario Land - Super Mario Land 3 (W) [!].gb
Wario Land - Super Mario Land 3 (W) [b1].gb
Wario Land - Super Mario Land 3 (W) [b2].gb
Wario Land - Super Mario Land 3 (W) [b3].gb
Wario Land II (UE) [S][!].gb
Wario Land II (UE) [S][b1].gb
Wario Land II (UE) [S][b1][h1] (MBC1).gb
Wario Land II (UE) [S][h1] (MBC1).gb
Wave Race (E) [!].gb
Wave Race (E) [b1].gb
Wave Race (E) [t1].gb
X - Xekkusu (J) [!].gb
Yakyuuman (J) (V1.0) [!].gb
Yakyuuman (J) (V1.1).gb
Yoshi (U) [!].gb
Yoshi (U) [b1].gb
Yoshi no Cookie (J).gb
Yoshi no Panepon (J) [S].gb
Yoshi no Tamago (J).gb
Yoshi no Tamago by ikuzou (Hack).gb
Yoshi Replay by ikuzou (Yoshi Hack).gb
Yoshi's Cookie (U) [!].gb
Yoshi's Cookie (U) [b1].gb
Zelda no Densetsu - Yume o Miru Shima (J) (V1.0) [b1].gb
Zelda no Densetsu - Yume o Miru Shima (J) (V1.0) [b2].gb
Zelda no Densetsu - Yume o Miru Shima (J) (V1.0).gb
Zelda no Densetsu - Yume o Miru Shima (J) (V1.1).gb
User avatar
Dwedit
Posts: 4922
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Re: GBC colorization palettes in the BIOS

Post by Dwedit »

The Cutting Room Floor has a nice page about this

http://tcrf.net/CGB_Bootstrap_ROM
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
nitro2k01
Posts: 252
Joined: Sat Aug 28, 2010 9:01 am

Re: GBC colorization palettes in the BIOS

Post by nitro2k01 »

Should have known!
User avatar
mikejmoffitt
Posts: 1353
Joined: Sun May 27, 2012 8:43 pm

Re: GBC colorization palettes in the BIOS

Post by mikejmoffitt »

Dwedit wrote:The Cutting Room Floor has a nice page about this

http://tcrf.net/CGB_Bootstrap_ROM
D'oh! That's exactly the kind of the thing I was looking for. I hadn't thought of TCRF for something that isn't a game on its own!
IndyBonez
Posts: 15
Joined: Sat Jan 13, 2018 5:16 am

Re: GBC colorization palettes in the BIOS

Post by IndyBonez »

I know I'm probably resurrecting an old thread, but I was just wondering if there is a simple routine I can run in my emulator to detect if the loaded ROM would have a custom palette in the GBC boot room.

To start with I was just going to maintain a list of games I found that did have custom palettes but considering this information is in the boot rom somewhere I must be able to implement a similar routine to determine if its present.

The reason I want to do this is because I want my emulator to be able to detect whether it should run in DMG mode or GBC mode and load the correct boot rom depending on the cart loaded. At the moment you manually specify which mode to use (DMG/GBC) and if its a game with a custom palette in GBC mode it uses that palette but the user has to choose their mode. Where I would like the default option to be auto detect
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: GBC colorization palettes in the BIOS

Post by tepples »

From Pan Docs section "The Cartridge Header":
0143 - CGB Flag

In older cartridges this byte has been part of the Title (see above). In CGB cartridges the upper bit is used to enable CGB functions. This is required, otherwise the CGB switches itself into Non-CGB-Mode. Typical values are:
  • 80h - Game supports CGB functions, but works on old gameboys also.
  • C0h - Game works on CGB only (physically the same as 80h).
Translating the preceding into C++ (untested):

Code: Select all

bool rom_wants_gbc_mode(const u8 *rom) const {
  return rom[0x0143] >= 0x80;
}

bool rom_is_gbc_only(const u8 *rom) const {
  return rom[0x0143] >= 0xC0;
}
nitro2k01
Posts: 252
Joined: Sat Aug 28, 2010 9:01 am

Re: GBC colorization palettes in the BIOS

Post by nitro2k01 »

The check is done starting at 0475 in the boot ROM. Iirc the following must be true for the ROM to pass for a custom palette check:
1) Must not be a GBC ROM. (Bit 7 of [$0143] must be 0.)
2) Licensee code must be Nintendo. This means that either [$0143]=$01 (old licensee set to Nintendo) or for a SGB capable ROM that [$0143]=$33 (SGB validation) and [$0144]=$30 [$0145]=$31 (New licensee code set to Nintendo.)

Next, a hash is calculated by adding all the bytes in the header title field ($0134-$0143). This hash is checked against a table at $06c7-$0716. If the hash is in that table, the ROM will be colorized, otherwise not.

Iirc there's some other minor wrinkle as well, but that's basically it.
IndyBonez
Posts: 15
Joined: Sat Jan 13, 2018 5:16 am

Re: GBC colorization palettes in the BIOS

Post by IndyBonez »

Thanks Nitro!

Is the table of hashes just a list? Or does it have a structure I can read up on somewhere?
Shonumi
Posts: 342
Joined: Sun Jan 26, 2014 9:31 am

Re: GBC colorization palettes in the BIOS

Post by Shonumi »

You can view the GBC Boot ROM disassembly here if you're curious: https://raw.githubusercontent.com/Emu-D ... sembly.txt
IndyBonez
Posts: 15
Joined: Sat Jan 13, 2018 5:16 am

Re: GBC colorization palettes in the BIOS

Post by IndyBonez »

Great thanks so yeah it looks like just a list of bytes to match. Hash the titles, iterate through them for a match and hopefully I can now detect games with a custom palette
Post Reply