gb-core
Emulation core for the Game Boy and Game Boy Color.
These systems contain the following components:
- Sharp SM83 CPU clocked at 4.194304 MHz (GB) or 8.388608 MHz (GBC in double speed mode)
- SM83 is kind of like a Z80-lite
- PPU (picture processing unit)
- Renders at 160x144 directly onto the Game Boy's LCD screen
- Supports 4 different colors (GB) or 32,768 different colors (GBC)
- GB supports a single 4-color background palette and 2 different 3-color sprite palettes
- GBC supports 8 different 4-color background palettes and 8 different 3-color sprite palettes
- Supports a scrollable background layer as well as a window layer that can replace the background in a configurable region of the screen
- Supports up to 40 sprites per frame and up to 10 sprites per scanline, with sprites being 8x8 pixels
- Supports HBlank and scanline interrupts and has a CPU-readable scanline counter, unlike the NES
- APU (audio processing unit)
- Contains 4 audio channels: 2 pulse wave generators, a pseudo-random noise generator, and a custom wave channel that plays from dedicated waveform RAM (16 bytes)
- Supports monoaural sound through the built-in speaker and stereo sound through headphones
- 8KB of working RAM (GB) or 32KB (GBC)
- 8KB of VRAM (GB) or 16KB (GBC)
- 160 bytes of OAM (object attribute memory)
- 127 bytes of "HRAM", a small section of working RAM on a separate bus from the rest of RAM (often used during OAM DMAs)