snes-core
Emulation core for the Super Nintendo Entertainment System (SNES) / Super Famicom.
This system contains the following components:
- 65C816 CPU clocked at 3.58 MHz
- The SNES augments this CPU with some additional components, including multiplication and division units
- Technically two PPUs (picture processing units), though they function as a single unit
- Can render in 256x224, 256x239, 512x224, 512x239, 512x448, or 512x478
- 512px resolutions were not commonly used due to memory usage and the quality of 90s TV setups
- 512x448 and 512x478 only possible using interlaced rendering modes
- Supports 15-bit RGB color (32,768 possible colors) with up to 256 different colors onscreen simultaneously
- Supports 4 different background layers, though most BG modes only use 2 or 3
- Each BG layer can be 4-color, 16-color, or 256-color depending on BG mode
- Supports 8 different background modes
- One mode supports background rotation and scaling via affine transformations (Mode 7)
- Two modes support 512px high-resolution backgrounds (Modes 5 & 6)
- Supports 128 sprites onscreen simultaneously and up to 32 sprites per line, with sprites ranging in size from 8x8 to 64x64
- Supports layer blending via "color math", commonly used for transparency and lighting effects
- Can render in 256x224, 256x239, 512x224, 512x239, 512x448, or 512x478
- APU (audio processing unit)
- Contains an embedded SPC700 CPU clocked at 1.024 MHz, used to drive the DSP
- The embedded DSP is an 8-channel ADPCM playback device with per-channel envelopes, a noise generator, pitch modulation, and an echo filter
- Emits an audio signal at 32 KHz
- 128KB of working RAM
- 64KB of VRAM
- 512+32 bytes of OAM (object/sprite attribute memory)
- 512 bytes of CGRAM (color palette memory)
- 64KB of audio RAM shared between the SPC700 and the audio DSP
The SNES may have had a fairly awful CPU compared to its most significant competition, but it made up for it with its extremely capable graphics processor.