FRANK is a hardware emulation platform built around the Raspberry Pi RP2040/RP2350. It started as a fork of the Murmulator project by Alex Ekb and grew from there.
The name comes from "Frankenstein" — it's stitched together from parts of different projects.
Over 30 emulated systems and native ports:
| Firmware | Platform | Repository | PSRAM Required |
|---|---|---|---|
| frank-nes | NES / Famicom (Dendy) | frank-nes | Yes (8MB) |
| frank-snes | SNES / Super Famicom | frank-snes | Yes (8MB) |
| frank-genesis | Sega Genesis / Mega Drive | frank-genesis | Yes (8MB) |
| frank-c64 | Commodore 64 | frank-c64 | Yes (8MB) |
| frank-apple | Apple IIe | frank-apple | Optional |
| Firmware | Platform | Repository | PSRAM Required |
|---|---|---|---|
| frank-386 | IBM PC i386 (DOS, Windows 3.x/95, Linux) | frank-386 | Yes (8MB) |
| Firmware | Game | Repository | PSRAM Required |
|---|---|---|---|
| frank-idtech1 | DOOM, Heretic, Hexen, Strife (all-in-one) | frank-idtech1 | Yes (8MB) |
| frank-doom | DOOM (standalone) | frank-doom | Yes (8MB) |
| frank-heretic | Heretic | frank-heretic | Yes (8MB) |
| frank-wolf3d | Wolfenstein 3D | frank-wolf3d | Yes (8MB) |
| frank-duke3d | Duke Nukem 3D | frank-duke3d | Yes (8MB) |
| frank-prince | Prince of Persia | frank-prince | Yes (8MB) |
| frank-digger | Digger Remastered | frank-digger | No |
| Firmware | Description | Repository | PSRAM Required |
|---|---|---|---|
| frank-os | Full desktop OS (Windows 95-style GUI, apps, built-in emulators) | frank-os | Yes (8 MB) |
| frank-kickstart | UF2 firmware launcher/bootloader with SD card browser | frank-kickstart | Optional |
| frank-manul | Text web browser (HTTP/HTTPS via ESP-01 WiFi) | frank-manul | Yes (8 MB) |
| frank-netcard | AT modem firmware for ESP-01 WiFi module | frank-netcard | No |
The original Murmulator project also provides:
ZX Spectrum emulators:
- ZX Spectrum 48K / 128K / +3e (multiple emulator cores: tecnocat, pico-spec, frut-bat, ZX Speccy P, murmulator)
- ZX Elf (pico-alf)
Cross-platform emulators:
- MS-DOS IBM PC XT 8088
- BK-0010 / BK-0011M (Soviet home computer)
- Radio 86RK (Soviet home computer)
- Macintosh
- Atari 800
- NES / Famicom / Dendy
- Sega Master System / Game Gear
- NEC PC Engine / TurboGrafx-16
- Nintendo GameBoy / GameBoy Color
- Watara Supervision
- Atari Lynx
- Bandai Wonderswan / Wonderswan Color
- NeoGeo Pocket Color
- Gamate
- Game & Watch / Elektronika
Tools and applications:
- MurmulatorOS
- Picomite MMBasic
- VersaTerm (terminal for retro computers)
- Bootloader (flash firmware from SD card)
- FRANK — 0805 components, Pico module socket, RP2040-Zero for USB-to-PS/2. Easy to hand-solder.
- MiniFRANK — Credit-card-sized. 0603 components, QFN MCU soldered on-board, no Pico module.
- TurboFRANK — USB hub, RS-232, TurboSound (2×AY-3-8910), speaker amp. M1P1 uses a Pico socket; M1P2 has both RP2040 and RP2350A on-board with a USB multiplexer.
- M1 / M2 — GPIO layout. M1 is the first-gen Murmulator pinout. M2 is second-gen, optimized for RP2350A HSTX and faster RAM.
- P1 / P2 — RP chip. P1 = RP2040, P2 = RP2350A.
So TurboFRANK M1P1 = M1 layout + RP2040. MiniFRANK M2P2 = M2 layout + RP2350A.
When downloading firmware, pick the build matching your GPIO layout (M1 or M2).
All KiCad project files are in hardware/.
| Board | Layout | Compute Module | Latest Rev | Description | Docs |
|---|---|---|---|---|---|
| FRANK M1 | M1 | Pico / Pico 2 (socket) | 2.06 | Full-featured: VGA, HDMI, composite, PIO PSRAM, PS/2, USB (via RP2040-Zero), TDA1387 DAC | Guide |
| FRANK M2 | M2 | Pico 2 (socket) | 2.06 | M2 pinout optimized for RP2350A HSTX, QSPI PSRAM via Pico module | Guide |
| FRANK FastBeta M1 | M1 | Pico / Pico 2 (socket) | 1.04 | Streamlined board for FastBeta ZX Spectrum firmware, HDMI/VGA, PIO PSRAM | Guide |
| Board | Layout | Compute Module | Latest Rev | Description | Docs |
|---|---|---|---|---|---|
| MiniFRANK M2P2 | M2 | RP2350A (on-board QFN) | 1.04 | Credit-card-sized, 0603 components, ESP-01S WiFi, USB hub (MW7211A) | Guide |
| Board | Layout | Compute Module | Latest Rev | Description | Docs |
|---|---|---|---|---|---|
| TurboFRANK M1P1 | M1 | Pico / Pico 2 (socket) | 1.07 | USB hub, RS-232, TurboSound (2xAY-3-8910), speaker amplifier | Guide |
| TurboFRANK M1P2 | M1 | RP2040 + RP2350A (on-board) | 1.01 | Dual-MCU with USB multiplexer and hardware power switch | Guide |
In accessories/:
| Accessory | Latest Rev | Description | Docs |
|---|---|---|---|
| HDMI2VGA | 2.04 | HDMI to VGA / soft composite passive adapter | Assembly Guide |
| USB2PS2 | 1.03 | USB to PS/2 adapter built on RP2040 | Assembly Guide |
Most firmware also runs on:
- Murmulator (M1 and M2)
- Olimex PICO-PC (some firmware)
- Waveshare RP2350-PiZero (some firmware)
Most emulators need 8MB PSRAM. Connection method depends on layout:
- M1 boards — PIO. Solder an ESP-PSRAM64H onto the board's PSRAM pads.
- M2 boards — QSPI, piggybacked onto the Pico 2's flash chip. Works with clone Pico 2 boards (usually black, SOIC-8 flash). Or just use a Pimoroni Pico Plus 2 (has PSRAM built in).
- Order or fab the PCB (gerbers are in each board's
gerbers/directory) - Assemble per the board-specific guide
- Flash firmware: hold BOOTSEL, plug USB, release, copy
.uf2to the drive (orpicotool load) - SD card with ROMs / WADs / disk images
- Display (HDMI or VGA) + keyboard (PS/2 or USB) + gamepad
For quick switching between firmware, flash frank-kickstart first. It gives you a graphical launcher that reflashes from SD without BOOTSEL.
hardware/ Board KiCad projects
accessories/ Adapter boards (HDMI2VGA, USB2PS2)
docs/ Assembly guides
software/ Prebuilt firmware
archive/ Old board revisions
lab/ Experimental / WIP
- rh1.tech/projects/frank — project website
- github.com/rh1tech — firmware repos
Mikhail Matveev — software engineer and hardware developer based in Thessaloniki, Greece. Background in software architecture, QA, and open-source development. Builds retro computing hardware and writes firmware for fun. More projects at rh1.tech.
© 2026 Mikhail Matveev, xtreme@rh1.tech
GPL v3. See LICENSE.