More Details
Ant64 treats advanced graphics, audio, and CPU as first-class hardware citizens — all running on the same FPGA, sharing the same timing domain.
Ant64 is a modern, hardware-first computer inspired by the design philosophy of classic systems — the Commodore Amiga, Atari 8-bit line, Jaguar, and Sega Saturn — reimagined with today's FPGA capacity, memory bandwidth, and integration techniques.
The system is designed to excel at games, creative tools, and system-level experimentation. The main FPGA-based CPU and chipset are together called FireStorm.
Major Chips and Roles
| Chip | Role |
|---|---|
| FireStorm (GoWin GW5AST) | Main CPU and chipset in a single FPGA — RV64GC CPU plus graphics, audio, blitter, copper, raycaster. The GW5AST-138 silicon also contains a hard 800 MHz 32-bit RISC-V coprocessor for chipset debug / monitoring. |
| DeMon (Raspberry Pi CM5 + ESP32-C5) | AntOS host (Linux) + system supervisor — boot, recovery, network, HDMI display feed (AntOS UI + sprite/tilemap layers), Triple SID audio engine (L/C/R), SAM speech synthesizer, keyboard touchscreen |
| Pulse (ESP32-P4) | Music & sequencer brain + secondary synth engine — MIDI, jog dials, AMY software synthesis, sample / tracker / emulator engines, MIPI display feed (sequencer / mixer UI + sprite/tilemap layers), circular display on case, 32MB PSRAM |
| Sticky (AVR128DB64) | 5V joypad I/O — sacrificial protection layer |
| Clicky (AVR128DB64) | Keyboard controller |
FireStorm — FPGA CPU and Chipset
FireStorm is one FPGA containing both the main CPU and the full custom chipset. CPU and chipset are treated as the same silicon by software — there is no driver layer, no abstraction wall, no copy-and-DMA path between "main RAM" and "video RAM".
CPU Side
- 64-bit RISC-V (RV64GC compatible)
- Seven custom extensions: Xcrisp, Xstack, Xcond, Xlate, Xctx, Xmath, Xwide
- Shallow OoO microarchitecture (scoreboarding, dual-issue, DSP-block-backed multipliers)
- ~380 MHz on GW5AST-138
Chipset Side
- Layered 2D/2.5D graphics pipeline (up to 16 layers)
- Sprite, tilemap, vector, voxel, raycasting, and command-list rendering
- Hardware Copper and command processors
- Audio synthesis and mixing (128+ voices)
- Multiple video outputs
DDR3 RAM (FPGA side)
| Model | Capacity | Width | Peak bandwidth |
|---|---|---|---|
| Ant64S | 1.125GB (→4.5GB) | 72-bit | ~7.2 GB/s |
| Ant64 | 2.25GB | 72-bit | ~7.2 GB/s |
| Ant64C | 4.5GB | 72-bit | ~7.2 GB/s |
Used for: OS, applications, large tilemaps, isometric maps, voxels, raycasting grids, command lists, streaming assets, cartridge/SD data, sample banks.
Wide-Mode SRAM
One bus of ~4.5MB fast SRAM (1M × 36-bit) — true random access with deterministic latency. Holds FireStorm wide-mode code (hot-path code that benefits from the 64-register file, predication, wider immediates).
On-Chip BSRAM
GoWin GW5AST-138: 340 BSRAM blocks × 18 Kbits = ~765KB total. Dual-port, ~380 MHz. Used for: scratchpad data structures, sprite line buffers, palette RAM, copper lists, Xstack stack frames, Xctx context state, audio voice state, hot LUTs.
Graphics Layer System
Up to 16 independent layers, each independently typed. Per-layer controls:
- Scanline start · Enable/disable
- Z-buffer participation · Blend mode · Palette mode
Layer Types
| Layer Type | Key Features |
|---|---|
| Tilemap | Orthogonal, isometric, or side-view · depth extrusion · hardware scrolling · Z-buffer participation |
| Sprite | 4-bit+ colour · scaling · rotation · Z-aware (inside the world, not just on top) |
| Text | 3-bit glyph indices · per-layer colour registers · optimised for UI and system text |
| Bitmap | 12-bit 4-4-4 true colour · 12-bit indexed (64 palettes × 64 colours) |
| Command List | GPU-style command stream · ImGui compatible · Copper can inject commands |
| Vector | Lines, curves, polygons · optional instancing as sprites |
| Raycasting / Voxel | Hardware ray queries · collision distance · voxel column rendering |
| Supervisor overlay | HDMI feed from DeMon (CM5) — boot UI, recovery, system menus |
Layer Merging and Z-Buffering
Per-pixel Z-buffer stored in BSRAM, layers merged per scanline. Each layer can obey or ignore the Z-buffer:
- Sprites embedded in depth tilemaps
- 2.5D effects for side-scrollers (Mario-style depth)
- Isometric worlds with verticality
Copper and Update Units
Copper list (tied to scanline position)
|
├── Modify layer registers
├── Modify palettes
├── Inject into command lists
└── Trigger FireStorm Execution Engine interrupts (e.g. for mid-frame logic)
Update Units
|
├── Burst updates
├── Dirty-flagging
└── Cached descriptors
Audio and Copper update units share the same optimisations.
Audio System
- Multi-channel sample playback with hardware mixing (128+ voices)
- DMA from DDR3
- MIDI-driven synthesis via Pulse Sequencer
- FM / virtual-analog / granular / physical-modelling engines
- FireStorm EE runs synthesis setup, envelope updates, MIDI parsing — Xmath accelerates per-voice math
Video Outputs
| Output | Resolution | Notes |
|---|---|---|
| Main HDMI | up to 4K@60 | All models — via Parade PS176 DP→HDMI bridge fed by FPGA SerDes |
| Retro VGA + 3.5mm audio | 480p–1080p60, plus 240p superresolution | All models — via AG6201 HDMI→VGA bridge fed by FPGA fabric HDMI TX; MiSTer-compatible 240p output for genuine 15 kHz CRTs through SCART adapters |
Both outputs support:
- Independent layer selection per output
- Line buffering and pixel repetition
- Main HDMI capable of 4K-class output with reduced layer set
- DeMon's HDMI feed composited as an overlay layer (AntOS UI, system menus)
- Pulse's MIPI feed composited as a second overlay layer (sequencer / mixer UI)
Auxiliary displays (outside the FPGA path):
- Keyboard touchscreen — DeMon-driven, MIPI DSI; always active even when the FPGA is reloading
- Circular TFT on the case — Pulse-driven, SPI, mounted at far left above the keyboard; also always active
DeMon — Supervisor (Raspberry Pi CM5 + ESP32-C5)
The system supervisor handles boot, recovery, network, keyboard, touchscreen, and the AntOS UI:
- Raspberry Pi CM5 — quad-core ARM (Cortex-A72/A76), gigabytes of RAM, VideoCore GPU, HDMI + PCIe to the FPGA, USB host — runs AntOS on Linux
- ESP32-C5 — Wi-Fi 6 (2.4 + 5 GHz), Bluetooth 5.3, Thread, Zigbee
- Boots the FPGA via JTAG
- HDMI display output → FireStorm FPGA — AntOS UI plus sprite and tilemap layer descriptions, rendered by FireStorm at scanout
- Triple SID audio engine (L/C/R, 9 SID voices, in software on the CM) — system sounds, AntOS audio cues, SID file playback, third compositional voice palette; streamed to FireStorm over HDMI/PCIe for mixing
- SAM speech synthesizer — formant text-to-speech in the tradition of S.A.M. (1982); in software on the CM; AntOS uses it for voice prompts, accessibility, and system narration; Pulse can dispatch text/phoneme events for musical use; FireStorm can dispatch dialogue for games/demos
- Keyboard touchscreen — MIPI DSI, AntOS-rendered; always visible regardless of FPGA state
- Real-time clock (MCP79410 with CR2450 backup, ~20 years)
- Internal HS USB hub — DBFS drive (D:) + DBFS shadow (D!:) + internal general drive (B:) + external memory stick (E:) · external SD card slot · separate FS hub for keyboard / mouse / HID
- USB host for keyboard, mouse, joypad
What DeMon Can Reprogram
- FireStorm FPGA bitstream (JTAG) and flash
- Pulse Sequencer
- Sticky
- Clicky keyboard controller
- ESP32-C5 firmware
Pulse — Music & Sequencer (ESP32-P4 + 32MB PSRAM)
The real-time musical brain of the Ant64.
- Traditional MIDI — DIN / DOUT / DTHRU (Ant64C), MIDI 1.0, plus USB MIDI 2.0 (both host and device)
- USB mouse support
- 8× RGB-illuminated jog dials with integrated push buttons
- Round auxiliary TFT display — mounted on the far left of the case, above the keyboard; SPI-driven from Pulse, for jog dial labels and per-knob state; always visible regardless of FPGA state
- MIPI display feed into FireStorm — Pulse composes its own sequencer / mixer / sample-browser UI and sprite/tilemap layer descriptions, streamed to the FPGA which renders them at scanout
- AMY synth library (github.com/shorepine/amy) running natively on the ESP32-P4 — additive / FM / PCM / partials / filters / envelopes; output streamed to FireStorm via MIPI for mixing
- 32MB PSRAM for sample libraries, AMY patch banks, sequencer state, software synth working memory
- Bidirectional SPI ↔ DeMon (peer command/data link) · OPI register window into FireStorm
- 4× 3.5mm trigger / CV inputs (Kick · Snare · Sync · Foot)
- Classic FM / VA / granular synth emulators in firmware (speech synthesis on DeMon — SAM — triggered by Pulse via the SPI link)
Sticky — AVR 5V I/O & Joypads
- 4 joypad ports — each reconfigurable in firmware: Atari/Commodore/Sinclair/Amstrad sticks · Sega 3- & 6-button · Amiga CD32 · paddles · mice / trak-balls / spinners · keypad controllers · Team Player / Mega Mouse / XE-1 AP
- Electrically isolated from the FPGA — sacrificial protection layer
- Cheap, replaceable, and robust
- Talks only to Pulse Sequencer
Clicky — AVR128DB64 Keyboard Controller
- 75% form factor, custom mechanical keyboard
- Per-key RGB (NeoPixel) lighting
- Jog dial with button
- Vertical TFT touch screen in place of the numpad
- Row/column scanned and decoded to UTF-8 on-chip, sent to DeMon over UART2 — readable before USB is up
- Also drives the status LEDs and buzzer on DeMon's behalf
- DeMon reflashes Clicky over UPDI
Heavy Compute — No Separate Accelerator
Earlier designs offered an optional Raspberry Pi Zero 2W on the FPGA's expansion header. It's gone — DeMon is now itself a quad-core Raspberry Pi CM5, so the application-class CPU is already central. Heavy work runs on DeMon directly:
- Heavy emulation cores, software audio plugins, video codecs
- Linux services for community-built extensions
- Larger AI / DSP and ML inference — quad ARM + NEON SIMD + VideoCore GPU
For latency-sensitive offload, FireStorm hands kernels to the on-die A25 hard core or to the CM over the provisional Xaccel path; personalities reach the same services through the Accelerator compatibility layer.
Cartridge & Personality System
Cartridges may contain FPGA images, OS ROMs, game images, or CPU configuration data.
Ant64 can temporarily become a different classic system — often massively enhanced.
This is the personality cartridge system: slot in a cartridge and the hardware reconfigures itself around it. FireStorm's RV64GC compatibility means the same cartridge can host RISC-V code as well as personality-specific firmware.