FRANK is a hardware emulation platform built around the Raspberry Pi RP2350 (Pico 2 modules and RP2350A QFN). RP2040 / Pico still works in FRANK's socket, but in practice only a handful of firmware (mainly the older ZX Spectrum cores) still targets RP2040. Everything modern (IBM PC, NES, SNES, Genesis, the DOOM / id Tech 1 ports, FRANK OS, and so on) is RP2350-only.
It started as a fork of the Murmulator project by Alex Ekb. Over time it picked up extra video outputs, audio paths, USB and WiFi support, and several form factors.
The name comes from "Frankenstein". The board is stitched together from parts of different projects, so the name stuck.
This repository now ships only the boards under hardware/ that are actively maintained. The accessories/ and archive/ directories are gone. Older revisions, retired boards, and accessory adapters such as HDMI2VGA and USB2PS2 live in rh1tech/frank-archive.
Experimental and work-in-progress designs live in rh1tech/frank-lab.
Four maintained boards, each with its own KiCad project, gerbers, BOM and assembly drawings.
| Board | Render | PCB size | Compute | Best for |
|---|---|---|---|---|
| FRANK PGA | ![]() |
99.5 × 83.1 mm | Pimoroni PGA2350 (RP2350A module) | Every output on one PCB, native USB host with multiplexer, ESD-protected. |
| FRANK | ![]() |
99.5 × 83.1 mm | Raspberry Pi Pico / Pico 2 (socket) + RP2040-Zero | Socketed alternative. Easiest to solder, swap Pico modules at will, USB-to-PS/2 helper on board. |
| MiniFRANK | ![]() |
85.6 × 53.98 mm | RP2350A QFN, on-board | Compact full-feature board with WiFi, VGA, HDMI and one gamepad port. |
| MicroFRANK | ![]() |
32 × 74 mm | RP2350A QFN, on-board | Smallest board. HDMI only, no hardware PS/2 or DB9 gamepad. Keyboards, mice and gamepads connect over the stacked USB host. |
All four boards use the M2 GPIO layout, so any firmware build for M2 runs on all of them (subject to the feature differences below).
| Feature | FRANK PGA | FRANK | MiniFRANK | MicroFRANK |
|---|---|---|---|---|
| Compute module | Pimoroni PGA2350 | Pico / Pico 2 (socket) | RP2350A QFN on-board | RP2350A QFN on-board |
| On-board flash | via module | via module | W25Q128 (16 MB) | W25Q128 (16 MB) |
| On-board PSRAM | via module | via module | 8 MB | 8 MB |
| HDMI output | Yes | Yes | Yes | Yes |
| VGA output | Yes | Yes | Yes | — |
| Composite (RCA) | Yes | Yes | — | — |
| TFT display header | Yes | Yes | — | — |
| Hardware PS/2 port | Yes | Yes | Yes | — |
| USB-emulated PS/2 (RP2040-Zero) | — | Yes | — | — |
| Gamepad ports (DB9) | 2 | 2 | 1 | — |
| Stacked USB Type-A host | Yes | Yes | Yes | Yes |
| MW7211A USB hub | Yes | Yes | Yes | Yes |
| USB host multiplexer | 74HC4052D | — | TS3USB221 | TS3USB221 |
| USBLC6 ESD protection | Yes | — | Yes | Yes |
| ESP-01S WiFi socket | Yes | Yes | Yes | — |
| Tape input (3.5mm) | Yes | Yes | Yes | — |
| Audio output | 3.5mm jack | 3.5mm jack | 3.5mm jack | 3.5mm jack |
| TDA1387 DAC | Yes | Yes | Yes | Yes |
| PAM8403 speaker amp | Yes | Yes | — | — |
| Power input | DC barrel jack | DC barrel jack | USB-C | USB-C |
| Voltage regulator | MP1584 buck + AMS1117 LDO | MP1584 buck + AMS1117 LDO | AMS1117 LDO | ME6211 LDO |
| Power switch | Slide | Slide | Slide | Slide |
| Mounting holes | 4 × 2.7 mm | 4 × 2.7 mm | 4 × 2.7 mm | 4 × 2.7 mm |
Over thirty emulators and native ports run on FRANK boards.
| Firmware | Platform | Repository | PSRAM required |
|---|---|---|---|
| frank-nes | NES / Famicom (Dendy) | frank-nes | Yes (8 MB) |
| frank-snes | SNES / Super Famicom | frank-snes | Yes (8 MB) |
| frank-genesis | Sega Genesis / Mega Drive | frank-genesis | Yes (8 MB) |
| frank-c64 | Commodore 64 | frank-c64 | Yes (8 MB) |
| frank-apple | Apple IIe | frank-apple | Optional |
| frank-msx | MSX / MSX2 / MSX2+ (fMSX core) | frank-msx | Yes (8 MB) |
| Firmware | Platform | Repository | PSRAM required |
|---|---|---|---|
| frank-386 | IBM PC i386 (DOS, Windows 3.x/95, Linux) | frank-386 | Yes (8 MB) |
| Firmware | Game | Repository | PSRAM required |
|---|---|---|---|
| frank-idtech1 | DOOM, Heretic, Hexen, Strife (all-in-one) | frank-idtech1 | Yes (8 MB) |
| frank-doom | DOOM (standalone) | frank-doom | Yes (8 MB) |
| frank-heretic | Heretic | frank-heretic | Yes (8 MB) |
| frank-wolf3d | Wolfenstein 3D | frank-wolf3d | Yes (8 MB) |
| frank-duke3d | Duke Nukem 3D | frank-duke3d | Yes (8 MB) |
| frank-prince | Prince of Persia | frank-prince | Yes (8 MB) |
| frank-digger | Digger Remastered | frank-digger | No |
| frank-quest | ScummVM (AGI, SCI, SCUMM v1–v7, GOB, KYRA — King's Quest, Monkey Island, Day of the Tentacle, Full Throttle, Gobliiins, Kyrandia and more) | frank-quest | Yes (8 MB) |
| 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 with SD card browser | frank-kickstart | Optional |
| frank-manul | Text-mode web browser (HTTP/HTTPS via ESP-01 WiFi) | frank-manul | Yes (8 MB) |
| frank-netcard | AT modem firmware for the ESP-01 WiFi module | frank-netcard | No |
The original Murmulator project provides additional firmware that runs on FRANK boards as well:
ZX Spectrum cores: ZX Spectrum 48K / 128K / +3e (tecnocat, pico-spec, frut-bat, ZX Speccy P, murmulator), ZX Elf (pico-alf).
Other cross-platform emulators: MS-DOS IBM PC XT 8088, BK-0010 / BK-0011M, Radio 86RK, 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, the original Murmulator bootloader.
Most firmware also runs on:
- Murmulator (M1 and M2)
- Olimex PICO-PC (some firmware)
- Waveshare RP2350-PiZero (some firmware)
- Order or fab the PCB (gerbers are in each board's
gerbers/directory). - Source the components using the BOM (
hardware/<board>/docs/<rev>/bom.html). - Solder following the board-specific guide, starting with the smallest passives and working outwards.
- Flash firmware: hold BOOTSEL on the RP chip, plug USB, release, copy a
.uf2file to the drive that appears (or usepicotool load). - Insert an SD card with ROMs, WADs or disk images.
- Plug in a display (HDMI or VGA), keyboard (PS/2 or USB) and gamepad.
For quick switching between firmware, flash frank-kickstart first. It gives you a graphical launcher that re-flashes from SD without touching BOOTSEL again.
Most modern firmware (frank-os, frank-quest, frank-386, frank-genesis, frank-snes, frank-msx, frank-idtech1, frank-doom and so on) needs 8 MB of PSRAM. Some firmware refuses to boot without it: frank-quest installs a custom dlmalloc backed entirely by external PSRAM (drivers/psram_init.c, drivers/dlmalloc.c), because the runtime (heap-allocated game state, decoded resources, mixer ring buffers, font caches) does not fit in the RP2350's 520 KB of SRAM.
How you get PSRAM depends on the board:
- MiniFRANK and MicroFRANK: PSRAM is already on-board (8 MB ESP-PSRAM64H). Nothing to do.
- FRANK PGA: the Pimoroni PGA2350 module already includes 8 MB PSRAM. Nothing to do.
- FRANK: the socketed Pico 2 has no PSRAM by default. Three ways to fix this:
- Pimoroni Pico Plus 2 (recommended). A ready-made Pico 2 with 8 MB PSRAM. Drop it into the socket and you are done.
- Solder a PSRAM chip on top of the flash chip of an RP2350 clone. SOP-8 flash chips are mostly only on clones (typically the black boards), not on a genuine Pico 2.
- Build a Nyx, a DIY RP2350 board with integrated PSRAM.
hardware/ Board KiCad projects (frank, frank_pga, minifrank, microfrank)
docs/ Shared component datasheets and assembly notes
software/ Pre-built UF2s. Currently ships Hecate, the USB-to-PS/2 bridge
firmware for FRANK's on-board RP2040-Zero. Once flashed, a USB
keyboard or mouse appears on the hardware PS/2 lines.
Source: https://github.com/rh1tech/hecate
Each board has its own assembly and usage guide:
- FRANK PGA assembly and usage guide
- FRANK assembly and usage guide
- MiniFRANK assembly and usage guide
- MicroFRANK assembly and usage guide
The hardware/<board>/docs/ directories also contain auto-generated BOMs (bom.html) and assembly drawings (assembly.pdf, schematics.pdf) for each PCB revision.
- rh1.tech/projects/frank — project website
- rh1tech/frank-archive — older boards and accessories
- rh1tech/frank-lab — experimental designs
Console emulators:
- frank-nes — NES / Famicom (Dendy)
- frank-snes — SNES / Super Famicom
- frank-genesis — Sega Genesis / Mega Drive
- frank-c64 — Commodore 64
- frank-apple — Apple IIe
- frank-msx — MSX / MSX2 / MSX2+
PC emulation:
- frank-386 — IBM PC i386 (DOS, Windows 3.x/95, Linux)
Game engine ports:
- frank-idtech1 — DOOM, Heretic, Hexen, Strife (all-in-one)
- frank-doom — DOOM (standalone)
- frank-heretic — Heretic
- frank-wolf3d — Wolfenstein 3D
- frank-duke3d — Duke Nukem 3D
- frank-prince — Prince of Persia
- frank-digger — Digger Remastered
- frank-quest — ScummVM (AGI, SCI, SCUMM, GOB, KYRA)
OS and utilities:
- frank-os — Full desktop OS with built-in emulators
- frank-kickstart — UF2 firmware launcher
- frank-manul — Text-mode web browser
- frank-netcard — AT modem firmware for ESP-01
- hecate — USB-to-PS/2 bridge for the RP2040-Zero
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.



