1# gba-core
2
3Emulation core for the Game Boy Advance.
4
5This system contains the following components:
6* ARM7TDMI CPU clocked at ~16.77 MHz
7  * Implements the 32-bit ARMv4T instruction set (ARMv4 + Thumb)
8* PPU (picture processing unit)
9  * 240x160 LCD display
10  * RGB555 color with up to 512 colors onscreen simultaneously (256 BG + 256 sprite)
11  * 4 background layers, 2 of which support rotation/scaling
12  * Up to 128 sprites per frame, with sprites ranging in size from 8x8 pixels to 64x64
13  * Supports sprite rotation/scaling
14  * Bitmap graphics modes that display pixels directly from a frame buffer in VRAM
15  * Supports a mosaic filter for both backgrounds and sprites
16  * Supports alpha blending between different layers
17  * 96 KB of VRAM for storing tile data, tile maps, and bitmap mode frame buffers
18  * 1 KB of palette RAM
19  * 1 KB of OAM (object attribute memory) for storing the sprite table
20* APU (audio processing unit)
21  * 1-bit PWM output at ~16.77 MHz
22  * PWM sample resolution ranging from 9-bit samples at 32768 Hz to 6-bit samples at 262144 Hz (most games use 8-bit at 65536 Hz)
23  * Two 8-bit PCM channels (Direct Sound)
24  * Four PSG channels, which are slightly modified versions of the four Game Boy Color APU channels
25    * Two pulse generators, one with frequency sweep support
26    * Custom wave channel that plays 4-bit PCM samples in a loop of either 32 samples or 64 samples
27    * Pseudorandom noise generator
28* 288 KB of working RAM, split into 32 KB of fast RAM (IWRAM) and 256 KB of slow RAM (EWRAM)
29* 4 hardware timers driven by the CPU clock, with configurable prescalers and intervals
30  * 2 of these timers can be used to control the sample rate of the APU's Direct Sound channels
31* 4 DMA channels
32* Game Pak prefetch hardware to speed up code executing out of cartridge ROM
33* Support for cartridges with up to 32 MB of ROM
34* 16 KB builtin BIOS ROM