My Second Gameboy


Following my first GameBoy, It was the time to get a GameBoy Color! Not my favorite color, but the one available.

Weird blue color

Weird blue color

The seller said it was “working”, but didn’t mention some of the buttons weren’t. Also, the d-pad was so soft that it kept pressing after only a touch.

And it was filthy!

And it was filthy!

So I got the replacement parts and started working.

Thanks for the gummies, Sandra!

Thanks for the gummies, Sandra!

RetroReiz is very quick and always has the replacement parts for GameBoys, totally recommend if you are in Germany.

The insides of the GameBoy Color

The insides of the GameBoy Color

Inside wasn’t too bad, only a few corrosion spots from the battery, but it was easy to clean with q-tips and some vinegar.

Before and After

Before and After

After that, it was good to go! I really like the combination of that light pink on the blue case better now. And it works perfectly now.

It’s really hard to get an angle for that screen

It’s really hard to get an angle for that screen


Update on the game

I’ve been working on this game, inspired by Bomberman. It’s still very early in development, but big part of my time was working on the level editor, in Racket. I opted to make a custom level editor so I can simplify the level format.

Level Editor written in Racket

Level Editor written in Racket

It exports a C file with levels in a custom format:

const uint8_t _game_map_data[] = {

  // First Level
  0x6, 0xd, 0x31, 0x3, 0x43, 0x3, 0x13, 0x4, 0x12, 0x5, 0x11, 0x4, 0x44, 0x3, 0x24, 0x4, 0x21, 0x3, 0x14, 0x4, 0x34, 0x4, 0x41, 0x3, 0x42, 0x3, 0x22, 0x5, 

  // Second Level
  0xa, 0x29, 0x66, 0x6, 0x73, 0x5, 0x65, 0x6, 0x32, 0x5, 0x57, 0x4, 0x24, 0x4, 0x54, 0x3, 0x46, 0x6, 0x52, 0x4, 0x42, 0x4, 0x22, 0x4, 0x23, 0x5, 0x55, 0x3, 0x00, 0x1, 0x74, 0x4, 0x47, 0x4, 0x33, 0x6, 0x76, 0x5, 0x37, 0x5, 0x67, 0x5, 0x27, 0x4, 0x44, 0x3, 0x64, 0x6, 0x34, 0x6, 0x98, 0x3, 0x77, 0x4, 0x45, 0x3, 0x25, 0x4, 0x75, 0x4, 0x56, 0x6, 0x43, 0x6, 0x63, 0x6, 0x89, 0x3, 0x99, 0x2, 0x72, 0x4, 0x88, 0x3, 0x62, 0x5, 0x36, 0x6, 0x26, 0x5, 0x35, 0x6, 0x53, 0x6, 

  // TheThird
  0xc, 0x4b, 0x19, 0x4, 0x32, 0x4, 0x57, 0x6, 0x78, 0x5, 0x24, 0x4, 0x54, 0x4, 0x46, 0x4, 0x52, 0x4, 0xb6, 0x5, 0x14, 0x4, 0x42, 0x4, 0x60, 0x5, 0x7a, 0x4, 0xa2, 0x4, 0x86, 0x4, 0x47, 0x4, 0x4b, 0x4, 0x41, 0x6, 0x16, 0x4, 0x50, 0x5, 0x82, 0x4, 0x20, 0x2, 0x80, 0x5, 0x56, 0x4, 0x90, 0x5, 0x89, 0x5, 0x72, 0x4, 0x26, 0x4, 0xa3, 0x5, 0x79, 0x5, 0x66, 0x4, 0x13, 0x4, 0x73, 0x5, 0xb4, 0x5, 0xa4, 0x5, 0x8a, 0x4, 0x93, 0x4, 0x10, 0x4, 0xb5, 0x5, 0x11, 0x4, 0x00, 0x1, 0xaa, 0x4, 0x74, 0x4, 0xa5, 0x5, 0x92, 0x4, 0x1a, 0x4, 0x76, 0x4, 0x94, 0x4, 0xa6, 0x5, 0xbb, 0x6, 0xa0, 0x5, 0x48, 0x3, 0x96, 0x4, 0xa9, 0x4, 0x2a, 0x4, 0x4a, 0x4, 0x44, 0x4, 0x64, 0x4, 0x98, 0x5, 0x34, 0x4, 0x3a, 0x4, 0x49, 0x4, 0x95, 0x4, 0x43, 0x5, 0x12, 0x4, 0x88, 0x5, 0x99, 0x5, 0xb3, 0x5, 0x62, 0x4, 0x36, 0x4, 0x18, 0x4, 0xa8, 0x4, 0x35, 0x3, 0x70, 0x5, 0x9a, 0x4, 

  // Test
  0x5, 0x19, 0x01, 0x5, 0x13, 0x3, 0x32, 0x6, 0x30, 0x5, 0x24, 0x5, 0x44, 0x5, 0x21, 0x3, 0x14, 0x5, 0x34, 0x5, 0x20, 0x5, 0x42, 0x6, 0x22, 0x6, 0x10, 0x5, 0x31, 0x3, 0x23, 0x6, 0x43, 0x6, 0x03, 0x5, 0x12, 0x3, 0x00, 0x5, 0x11, 0x3, 0x33, 0x6, 0x04, 0x5, 0x41, 0x5, 0x40, 0x5, 0x02, 0x5, 
};

const uint16_t _game_map[] = { 0x0, 0x1c, 0x70, 0x108, };

I’ll eventually write a post on how the tiles are enconded, but not yet because it’ll likely change, since I’m not convinced with the 8x8 tiles. When working only in the emulator, that looks good enough, but in the small screen of the gameboy, it’s almost unplayable.

The game running on the console

The game running on the console