Amstrad CPC 464/664/6128: What Made It Special
The Amstrad CPC (Colour Personal Computer) series launched in 1984 with the CPC 464 and spent the next four years as one of the most popular 8-bit home computers in Europe. Per CPCWiki, the CPC 464 centred on a Zilog Z80A CPU running at 4 MHz, 64 KB of RAM, and the AY-3-8912 programmable sound generator — a three-channel PSG chip shared with the ZX Spectrum 128K and dozens of arcade boards of the era.
The CPC 664, released mid-1985, swapped the 464's built-in cassette drive for a 3-inch floppy unit. It was almost immediately superseded by the CPC 6128, which doubled RAM to 128 KB and became the definitive model in the lineup — the one whose software library is best preserved and most widely emulated today.
Video was handled by a Motorola 6845-derived CRTC capable of three colour modes per CPCWiki: up to 27 colours at 160×200 pixels (Mode 0), 16 colours at 320×200 (Mode 1), or 4 colours at 640×200 (Mode 2). That colour flexibility, combined with Locomotive BASIC built into ROM, made the CPC a favourite platform for both games and productivity software through the late 1980s.
Why the Raspberry Pi Pico 2 Is a Strong Emulation Target
The Raspberry Pi Pico 2 is built around the RP2350 system-on-chip. Per the official RP2350 datasheet, the chip pairs two ARM Cortex-M33 cores — or two RISC-V Hazard3 cores, selectable at boot — with 520 KB of on-chip SRAM and 4 MB of QSPI flash, running at a default clock of 150 MHz. Community builders regularly report stable operation at 250–300 MHz with adequate power supply headroom, though shipped firmware typically targets 150–200 MHz for reliability.
The arithmetic matters directly for 8-bit emulation. A CPC's Z80A runs at 4 MHz. A Pico 2 at 150 MHz has roughly 37× the raw cycle throughput available for the emulation loop — headroom that allows the second ARM core to handle VGA generation and audio synthesis concurrently without stealing CPU budget from the emulated Z80.
The RP2350's PIO (Programmable I/O) subsystem is equally important. Eight independent state machines across two PIO blocks can generate composite video or VGA signals entirely in hardware, clocking pixels without any CPU involvement. Community projects targeting the earlier RP2040 (Pico 1, 133 MHz, single PIO block pair) already demonstrated 15 kHz RGB and VGA output for various 8-bit machines. The Pico 2's additional PIO resources and faster, dual-core ARM cores make it a natural upgrade platform.
For builders comparing larger Pi boards, the Raspberry Pi 5 vs Pi 4 8GB homelab guide covers the performance-per-watt trade-offs across the Pi family — useful context when deciding whether the Pico 2's embedded approach or a full Pi running MAME better fits a build.
Available CPC Emulation Firmware
Community developers have produced Amstrad CPC emulation firmware for both the RP2040 and RP2350 platforms, published via repositories tracked on CPCWiki's emulator page and discussed on the Raspberry Pi forums. The common architecture:
- A software Z80 core (derivatives of the open-source DrZ80 or FUSE Z80 engines appear most frequently in embedded retro projects) runs on one Cortex-M33 core at emulated 4 MHz cadence.
- The second Cortex-M33 core handles VGA pixel generation via the PIO state machines and mixes the AY-3-8912 audio output via PWM.
- An SPI-connected microSD card provides FAT32 storage for ROM images and game files.
Key emulated capabilities reported across community build threads include:
- CPC 464 mode — 64 KB RAM, tape emulation via
.CDTfile loading from SD card - CPC 6128 mode — 128 KB RAM with bank-switching emulation fully within RP2350's on-chip SRAM
- Audio — AY-3-8912 three-channel PSG emulation, PWM output at sample rates up to 44.1 kHz or 48 kHz
- Video — VGA at 640×480 or 320×240, generated by PIO through a resistor DAC; some builds also offer composite video on a separate GPIO
- Storage —
.DSKdisk images and.CDTtape images on a FAT32-formatted microSD card - Input — USB HID keyboards via the RP2350's native USB host peripheral; GPIO-based keyboard matrix scanning for original CPC membranes
CPC Model Compatibility at a Glance
| Model | RAM | Primary storage | Tape support | Notes |
|---|---|---|---|---|
| CPC 464 | 64 KB | Cassette (.CDT) | Yes | Widest original game library |
| CPC 664 | 64 KB | 3" floppy (.DSK) | Limited | Rare; most software targets 464 or 6128 |
| CPC 6128 | 128 KB | 3" floppy (.DSK) | Via .CDT | Best modern software compatibility |
Most preserved disk images target either the 464 or the 6128. The 664 occupies a narrow compatibility window and is rarely the primary target of emulator development, so 664-specific titles are best loaded in 6128 mode.
Hardware Bill of Materials
A complete Pico 2 CPC emulation build typically calls for:
| Component | Purpose | Notes |
|---|---|---|
| Raspberry Pi Pico 2 | Main emulation board | RP2350, 4 MB flash, ~$7 |
| MicroSD card + SPI module | Game and ROM storage | FAT32, up to 32 GB for compatibility |
| VGA resistor DAC network | Video output | 3–5 resistors per RGB channel |
| HD15 VGA connector / breakout | Video connector | Wired from GPIO via resistors |
| USB-A host adapter cable | Keyboard input | Requires RP2350 USB host mode |
| RC low-pass filter + 3.5 mm jack | AY PSG audio output | PWM pin → two resistors + capacitor |
| VGA monitor | Display | Direct-connect; no scaler needed |
Builders reusing older VGA monitors in mixed-source desk setups sometimes run a secondary HDMI source alongside the Pico's VGA output on the same display. The BENFEI HDMI to VGA 3 Feet Cable ($9.59) and BENFEI HDMI to VGA 10 Feet Cable ($11.99) handle that secondary HDMI-to-VGA signal path. Note that these cables carry signal from an HDMI source to a VGA display — they do not convert the Pico 2's VGA output for use with an HDMI monitor (that direction requires an active VGA-to-HDMI upscaler). For a two-pack adapter solution, the BENFEI Gold-Plated HDMI to VGA 2 Pack ($9.99) covers a spare.
Installation: From Blank Pico 2 to Running CPC
All RP2350 firmware ships as a .uf2 file and flashes via USB mass-storage — no toolchain required on the host machine:
- Download the UF2 binary. Obtain the RP2350-targeted
.uf2from the project's release page. Confirm the binary targets RP2350, not RP2040 — the chips have different architectures and binaries are not cross-compatible. - Enter BOOTSEL mode. Hold the BOOTSEL button on the Pico 2 while plugging in the USB cable. The board mounts as a removable drive labelled
RPI-RP2. - Flash the firmware. Drag and drop the
.uf2onto theRPI-RP2drive. The Pico 2 reboots automatically into the emulator. - Prepare the SD card. Format a microSD card as FAT32. Most firmware expects a
/roms/directory for CPC firmware ROM images and a/disks/or/games/directory for.DSK/.CDTgame files. Consult the specific project's README for exact directory names. - Source ROM files. CPC firmware ROMs (AMSDOS, Locomotive BASIC) are copyrighted. Per CPCWiki's ROM images page, Amstrad has historically permitted free personal redistribution for non-commercial use, but builders should verify current licensing status before downloading.
- Wire VGA output. Connect the designated GPIO pins through a resistor DAC (typically three to five resistors per colour channel) to an HD15 VGA socket. Pin assignments vary by firmware — consult the project's pinout diagram.
- Connect audio and keyboard. Wire the PWM audio GPIO through a simple RC low-pass filter (two resistors and a small capacitor) to a 3.5 mm jack. Plug a standard USB HID keyboard into the USB host port.
Performance Expectations
Because the CPC's Z80A runs at 4 MHz and the Pico 2's RP2350 operates at 150 MHz or above, the emulated CPU loop runs well within time budget at full CPC speed. Community reports on CPCWiki's emulator discussion threads describe game compatibility as high for titles that rely on standard Z80 timing. Titles that exploit specific CRTC tricks — mid-frame palette switches, line-based raster interrupts, Mode 1 to Mode 0 switching mid-scanline — require accurate CRTC emulation that varies by firmware implementation quality.
Audio accuracy scales with the AY-3-8912 implementation. The chip's envelope generators and noise channel timing are sensitive; at 48 kHz PWM output, envelope effects in tracker music are reported to play cleanly in well-implemented cores. The RP2350's second core handling audio synthesis separately from the Z80 emulation loop avoids the timing compromises sometimes required on single-core RP2040 builds.
Thermal load is negligible: the RP2350 at 150 MHz under a continuous Z80 emulation workload generates minimal heat, and no passive or active cooling is required.
Comparing Emulation Platforms for CPC Gaming
| Platform | CPC compatibility | Approx. cost | Key trade-off |
|---|---|---|---|
| Raspberry Pi Pico 2 | Good (most commercial titles) | ~$7 bare board | Boot-to-game in seconds; no OS overhead |
| Raspberry Pi 4 / 5 | Excellent (MAME, Caprice32) | $35–$80 | Full OS, network, higher power draw |
| Original CPC 464/6128 | Native | Varies (used market) | Authentic hardware; ageing capacitors |
| PC — Windows/Linux | Excellent (WinAPE, Caprice32) | Existing hardware | Best compatibility; no dedicated build |
For projects where full OS capabilities matter — say, adding AI vision overlays to a retro computing display or running a networked homelab service alongside emulation — the Raspberry Pi 4 8GB with an AI accelerator offers considerably more headroom. For strictly embedded, low-power, single-purpose CPC emulation where compact form factor and near-instant boot are priorities, the Pico 2 is the purpose-built choice.
Display, Audio, and Keyboard Tips
Display. The Pico 2 outputs VGA natively; most community builds target 15 kHz 50 Hz (PAL CPC native refresh) scaled into 640×480 VGA via the PIO. A standard CRT or LCD VGA monitor accepts the signal directly. Modern monitors that lack VGA inputs require an active VGA-to-HDMI upscaler (distinct from the HDMI-to-VGA cables listed above).
Audio. The PWM output needs a low-pass RC filter to remove the high-frequency carrier before the signal reaches a speaker or amplifier. The AY-3-8912's three channels (two tone + one noise, plus envelope shaping) are all software-synthesised; mixer code quality varies by firmware and is typically the first area community developers iterate on after initial boot.
Keyboard. For an authentic CPC feel, GPIO matrix-scanning of an original CPC 464 or 6128 keyboard is documented in several community projects. Modern USB HID keyboards work out of the box via the RP2350's USB host mode. 9-pin Atari-standard joystick input can be wired directly to spare GPIOs, mirroring the original CPC joystick port protocol.
Related Maker and Pi Projects
The Pico 2's embedded maker ecosystem overlaps significantly with larger Pi projects. The Cyberdeck Raspberry Pi 4/5 mini music workstation build demonstrates how RP-series boards handle real-time audio synthesis pipelines — relevant to evaluating AY-3-8912 PSG emulation quality. The follow-up coverage of Adafruit's Cyberdeck Raspberry Pi music workstation guide digs deeper into audio pipeline configuration applicable across the Pi family.
Builders interested in privacy-conscious connected projects find similar GPIO and SD-card discipline in the Raspberry Pi Zero 2W privacy-first Ring alternative and its Pi 4-based variant. The local voice assistant on Raspberry Pi 4 8GB guide is a useful reference for audio pipeline configuration across all Pi-family builds. For anyone setting up a Pi OS development host alongside the Pico 2 firmware toolchain, the recent Raspberry Pi OS Linux 6.18 LTS performance coverage documents real kernel-level throughput gains relevant to build toolchain speed.
Citations and sources
- CPCWiki — Amstrad CPC Hardware
- CPCWiki — ROM Images
- CPCWiki — Emulator
- CPCWiki Main Page
- Raspberry Pi Pico 2 Product Page
- RP2350 Datasheet — Raspberry Pi Foundation
This piece is editorial synthesis based on publicly available information. No independent first-party benchmarking is reported.
