Gameboy Dmg Cpu Internals

  • Because the SGB is synchronized to the SNES CPU, the gameboy system clock is directly chained to the SNES system clock. In result, the gameboy CPU, video controller, timers, and sound frequencies will be all operated approx 2.4% faster as by normal gameboys. Basically, this should be no problem, and the game will just run a little bit faster.
  • Joypad press. Table 1: Interrupts in the GameBoy. In the case of the vertical blank, a wire is threaded into the bottom of the LCD; as soon as the GPU has finished scanning all the LCD lines and runs into the bottom of the screen, the interrupt fires and the CPU jumps to 0040, executing the blanking ISR.
  • DMG Main Board Schematic & Circuit (+Arduinoboy) (Page 1) - Nintendo Handhelds - Forums - ChipMusic.org - chipmusic.org is an online community in respect and relation to chip music, art and its parallels.

Gameboy Dmg 01 Backlight Kit

This banner text can have markup. Home; web; books; video; audio; software; images; Toggle navigation.

Game Boy (DMG)

IDMainboardCPU (U1)VRAM (U2)WRAM (U3)LCD boardPower boardJack boardPhotos
@hej.luxom
DMG-CPU-01
DMG-CPU
8/1989
LH5164LN-10
49/1988
LH5164LN-10
49/1988
DMG-LCD-01
Type A1
DMG JACK 01
gekkio
DMG-CPU-01
DMG-CPU
7/1989
LH5164LN-10
48/1988
LH5164LN-10
48/1988
DMG-LCD-01
LCD panel: Feb/1989
1989
DMG JACK 01
gekkio
DMG-CPU-01
DMG-CPU
9/1989
LH5164LN-10
4/1989
LH5164LN-10
4/1989
DMG-LCD-01
LCD panel: Feb/1989
1989
DMG JACK 01
gekkio
DMG-CPU-01
DMG-CPU
13/1989
LH5164LN-10
13/1989
LH5164LN-10
13/1989
DMG-LCD-01
Type A1
DMG JACK 02
gekkio
DMG-CPU-01
DMG-CPU
11/1989
LH5164LN-10
3/1989
LH5164LN-10
3/1989
DMG-LCD-01
LCD panel: Mar/1990
1989
DMG JACK 01
gekkio
DMG-CPU-01
Sharp
gekkio
DMG-CPU-01
DMG-CPU A
22/1989
LH5264N4
21/1989
LH5264N4
21/1989
DMG-LCD-03
LCD panel: May/1989
1989
DMG JACK 02
gekkio
DMG-CPU-02
DMG-CPU A
22/1989
LH5264N4
22/1989
LH5264N4
22/1989
DMG-LCD-03
LCD panel: May/1989
1989
DMG JACK 02
gekkio
DMG-CPU-02
DMG-CPU A
37/1989
LH5264TN-L
37/1989
LH5264TN-L
37/1989
DMG-LCD-05
LCD panel: Aug/1989
1989
DMG JACK 02
gekkio
DMG-CPU-02
Sharp
Jacob Tender
DMG-CPU-03
DMG-CPU A
7/1990
LH5160N-10L
7/1990
LH5160N-10L
7/1990
DMG-LCD-05
Type A2
DMG JACK 03
gekkio
DMG-CPU-03
Sharp
gekkio
DMG-CPU-04
DMG-CPU B
23/1990
LH5264N
22/1990
LH5264N
22/1990
DMG-LCD-05
Type A2
DMG JACK 03
gekkio
DMG-CPU-04
DMG-CPU B
26/1990
LH5264N
24/1990
LH5264N
24/1990
DMG-LCD-05
Type A2
DMG JACK 03
gekkio
DMG-CPU-04
Sharp
gekkio
DMG-CPU-04
DMG-CPU B
37/1990
LH5264TN-L
38/1990
LH5264TN-L
38/1990
DMG-LCD-06
LCD panel: Sep/1990
Aug/1990
DMG JACK 03
gekkio
DMG-CPU-04
DMG-CPU B
38/1990
LH5164N-10L
43/1990
LH5164N-10L
43/1990
DMG-LCD-06
Type A2
DMG JACK 03
gekkio
DMG-CPU-05
Sharp
mattcurrie
DMG-CPU-06
DMG-CPU B
7/1992
LH5264N4
4/1992
LH5264N4
4/1992
DMG-LCD-06
Type A3
DMG JACK 03
gekkio
DMG-CPU-06
DMG-CPU B
46/1991
LH5264N4
9/1992
LH5264N4
9/1992
DMG-LCD-06
LCD panel: Mar/1992
Feb/1991
DMG JACK 03
terinjokes
DMG-CPU-06
DMG-CPU B
23/1992
LH5264N4T
23/1992
LH5264N4T
22/1992
DMG-LCD-06
Type A3
DMG JACK 03
ISSOtm
DMG-CPU-03
DMG-CPU B
24/1992
LH5264TN-TL
20/1992
LH5264TN-TL
20/1992
DMG-LCD-06
Type A3
DMG JACK 03
gekkio
DMG-CPU-06
Sharp
gekkio
DMG-CPU-06
DMG-CPU B
6/1994
LH52A64N-TL
6/1994
LH5264N4T
6/1994
DMG-LCD-06
LCD panel: Jan/1994
Jan/1993
DMG JACK 03
gekkio
DMG-CPU-06
Sharp
gekkio
DMG-CPU-08
DMG-CPU B (blob)
blob
blob
DMG-LCD-06
Type C
DMG JACK 03
gekkio
DMG-CPU-06
Sharp
Jacob Tender
DMG-CPU-07
DMG-CPU B (blob)
blob
blob
DMG-LCD-06
Type C
DMG JACK 03
gekkio
DMG-CPU-07
gekkio
DMG-CPU-06
Sharp
@hej.luxom
DMG-CPU-08
DMG-CPU C (blob)
blob
blob
DMG-LCD-06
Type D
DMG JACK 03
gekkio
DMG-CPU-08
gekkio
DMG-CPU-07
gekkio
DMG-CPU-07
DMG-CPU B (blob)
blob
blob
DMG-LCD-06
Type C
DMG JACK 03
gekkio
DMG-CPU-08
DMG-CPU C (blob)
blob
blob
DMG-LCD-06
Type D
DMG JACK 03
mattcurrie
DMG-CPU-08
DMG-CPU C (blob)
blob
blob
DMG-LCD-06
Type D
DMG JACK 03
gekkio
DMG-CPU-08
DMG-CPU C (blob)
blob
blob
DMG-LCD-06
LCD panel: Mar/1997
Mar/1996
DMG JACK 03
gekkio
DMG-CPU-08
DMG-CPU C (blob)
blob
blob
DMG-LCD-06
LCD panel: May/1997
Apr/1996
DMG JACK 03
gekkio
DMG-CPU-08
DMG-CPU C (blob)
blob
blob
DMG-LCD-06
LCD panel: Aug/1997
Aug/1996
DMG JACK 03
gekkio
DMG-CPU-06
DMG-CPU C
35/1998
LH52A64N-L
17/1998
LH52A64N-L
17/1998
DMG-LCD-06
LCD panel: Mar/1999
Sep/1998
DMG JACK 03
gekkio
DMG-CPU-04
DMG-CPU B
36/1990
LH5264TN-L
36/1990
LH5264TN-L
36/1990
DMG-LCD-06
LCD panel: Oct/1990
Sep/1990
DMG JACK 03
gekkio
DMG-CPU-01
DMG-CPU
13/1989
LH5164LN-10
11/1989
LH5164LN-10
11/1989
DMG-LCD-05
LCD panel: Apr/1990
1989
DMG JACK 02
gekkio
DMG-CPU-08
DMG-CPU C (blob)
blob
blob
DMG-LCD-06
LCD panel: Jul/1991
Aug/1996
DMG JACK 03

Data dumps

UTF-8 encoded CSV

This repo contains an annotated overlay for the Nintendo Game Boy DMG-CPU-B chip die and the extracted schematics.

This was done manually with only a few automated checks so THERE'S A HIGH RISK OF ERRORS. I'm in no way responsible if you made someone's life depend on this and it fucked up.

What is done:

  • All APU logic.
  • All PPU logic.
  • All I/O and timer logic.
  • All DMA logic.
  • All interrupt logic.
  • Various stuff used for testing/debugging.

What isn't done:

  • CPU. Why: it's a standalone core which doesn't use the standard cell topology. Visibility isn't good enough and it's too complex for me, sorry.
  • Clock complements. Why: They don't affect functionality. Only required because the DFF cells need a clock and its complement to work.
  • Some analog parts. Why: Poor visibility, lazyness.
  • Some cell groups related to embedded ROM and RAM blocks. Why: They don't affect functionality.

Just read the schematics :)

If you want to use the overlay:

  • Get Inkscape
  • Download the die picture from Digshadow
  • Resize it to 8000px wide if you're using Inkscape 0.92.2, otherwise it may freeze
  • Download the SVG overlay
  • Open the overlay in Inkscape, import the die picture (chose link, not embed), stick it under the overlay layers, align it and lock it in place
  • Have 'fun'

Nets named FROM_CPU* and TO_CPU are connected to the CPU core but are not clearly identified. Many of them are trigger and acknowledge signals for interrupts. Others might be state indicators like the Z80 /M1 or HALT.

I'm not sure what the UNK2 and UNK3 cells are. UNK2 might be an AND or OR with higher output power. UNK3 looks like an AND or OR next to an inverter, maybe something like (A&B)|C.

Some DFF clock polarities are unclear.

The parallel-in-serial-out shift registers used for the serial link and video rendering are made of chains of set-reset-capable DFFs.Their loading logic require a lot of cells and seem complex, but in the end it forms something quite simple.

Rather than using multiplexers, many internal busses are instead tri-state capable. The 'TRIBUFFER' cells are extensively used for this.

  • Bit 4 and 5 of FF26 (NR52) can be written to.
    • Bit 4 sets NET03 (APU test mode ?).
    • Bit 5 allows software clocking of the CH1 sweep timer when NET03 is high.
  • Bit 0 of FF23 (NR44) can be read. It relates to the CH4 prescaler.
  • The current wave RAM address can be read in bits 4~0 of FF1C (NR32) when NET03 is high.
  • The whole chip can be made a slave for an external CPU by using the test pins. This was already discovered by @Gekkio and maybe others.
  • Probably other things I missed...
  • Why ?

It is well known by emulator authors that the Game Boy is full of quirks. Knowing exactly how and when signals change can help reaching perfect accuracy.

Gameboy dmg 01 backlight kit
  • Why are the schematics not in an editable format ?

Because I used proprietary CAD software for speed and I didn't finish making the converter for the KiCAD format.I hope to be able to do that soon.

  • What's up with the cell labels ?

They're random, unique names. The first letter corresponds to the column they're in on the silicon die.

  • Many small lines aren't traced, why ?

I didn't bother tracing branching lines when their end point was near enough to see it on my 15' screen at the zoom level I used. They're reported on the schematic, of course.

  • Why are there copies of logic blocks providing identical functions ?

It's a way to trade off die space for speed, it seems weird but it's useful. Look up 'logic duplication'.

Gameboy Dmg Cpu Internals Software

  • I found a mistake, how can I report it ?

Until I get the files exported in KiCAD format, please open an issue and describe what's wrong (cell name, net name, position on die, ...).

  • How did you know which cells did what ?

I had to take guesses. Inputs and outputs are easily identified and the cell size gives some clues. When connections are made on the schematic, it becomes quickly obvious when a guess is wrong.Check out the cell zoo.

Gameboy Dmg Cpu Internals Tool

  • How long did it take ?

Gameboy Dmg Cpu Internals 1

Identifying the cells, isolating them, tracing the connections and the schematics took 191 hours.

Gameboy Dmg Cpu Internals Windows 10

If you find it worth it, I accept donations through Paypal: paypal.me/furrtek