One ROM

Program One ROM →
One ROM USB device

One ROM is the most flexible ROM replacement for retro computers.

It is based on a sub-$2 microcontroller. Boards can be fabbed for under $10 each in small quantities, or under $5 each in larger quantities.

One ROM emulates the 2364, 2332, and 2316 ROMs used in systems like the Commodore 64, VIC-20, PET, and 1541 disk drives.

You can program the USB version using your browser.

Subscribe to the piers.rocks YouTube channel for demonstrations of One ROM in action, technical deep-dives, and sneak peeks at upcoming features and new hardware revisions.


Key Features

One ROM fits the exact footprint of original ROM chip sockets without overhang. It can be manufactured for under $5 each in quantity using standard/basic two-layer PCB fabrication, with components on a single side.

A single One ROM can replace multiple original ROMs simultaneously - for example, all three ROMs in a Commodore 64 (BASIC, KERNAL, and character set). It stores up to 16 different ROM images, selectable via jumpers, and supports dynamic bank switching to change ROM images on the fly.

Programming is simple: connect 4 wires and run a single command. A $5 Raspberry Pi Pico works as a programmer, and One ROM can be reflashed in-circuit without removal from the host system. The USB variant allows programming directly from your browser with no separate programmer required.

Versions

One ROM is available in two models:

  • Ice ❄️ Powered by an STM32F4 microcontroller. Most robust as it has absolute maximum voltage rating of 7.3V. Only has a single core, so can support fewer advanced run-time features than Fire.
  • Fire 🔥 Powered by an RP2350 microcontroller. Has a more powerful processor so can support more advanced run-time features than Ice. Less robust, as its absolute maximum voltage rating is 5.5V.

There are also two different programming options:

  • USB 🔌 Easiest to program. Exposes a micro-USB port for programming directly from your browser. No programmer required. Currently only available on Ice.
  • SWD ⚡ Most powerful. Exposes SWD pins for programming using an ST-Link, Raspberry Pi Debug Probe, Pico or similar SWD programmer. Provides advanced features like runtime access to change ROM images and access telemetry while the host system is running.

All models and variants of One ROM support the same core ROM feature sets and functionality.

Ice can be built with many different models of the STM32F4 microcontroller, offering different flash sizes and performance levels.

See this document for more information on One ROM MCU selection.

Technical Details

One ROM firmware is written in C and hand-optimized assembly for performance. The supporting tooling is primarily written in Rust using async. This provides ROM emulation fast enough for vintage systems using low cost microcontrollers, wrapped by a a robust toolchain.

Chip select lines are software-configurable (HIGH or LOW) without hardware jumpers. A single One ROM can store multiple different ROM image types, including different chip select configurations, simultaneously.

Runtime access via SWD allows changing ROM images and accessing telemetry while the system is running.

The GitHub repository contains comprehensive documentation, resources for developers, and theory of operation.

Supported Retro Systems

One ROM has been tested and works with Commodore 64, VIC-20, various PET models, 1541 disk drives, IEEE drives, TI-99 and CoCo2. Pre-built firmware configurations are available for these systems.

It is highly likely that One ROM works in other systems - please post in this discussion if you get One ROM working in your retro system(s). If you hit problems, open an issue.

Getting Started

If you have a One ROM USB device, program it directly from your browser using the Programmer.

For building firmware, accessing hardware designs, and complete documentation, visit the One ROM GitHub repository. Pre-built firmware images for popular systems are available in the releases section.

The repository includes detailed instructions for installation, programming, configuration options, and troubleshooting. You can also use Airfrog, a companion project, for wireless programming and debugging.

Open Source

One ROM is fully open source. All hardware designs, firmware source code, build system, and documentation are freely available under permissive licenses. The project welcomes contributions and modifications.

You are welcome to modify the One ROM design and firmware, and to sell your own manufactured boards commercially, so long as you comply with the project's licenses.

The two-layer PCB design with single-sided component placement keeps manufacturing costs low and supports cheap and DIY fabrication. Complete schematics, bill of materials, Gerber and other fabrication files are provided.

Project History

One ROM was formerly known as Software Defined Retro ROM (SDRR). The project started with STM32F4 microcontrollers and later expanded to include the Raspberry Pi RP2350 when the A4 stepping was released.

Resources

icon Programmer - Program One ROM devices directly from your browser

GitHub Repository - Source code, hardware designs, and documentation

YouTube Channel - Project videos and technical tutorials

Airfrog icon Airfrog - Wireless programmer and debugger companion project

Issue Tracker - Report bugs, request features, or get help

Packom icon Buy One ROMs - I sometimes have One ROMs available on my store. If you are selling One ROM and would like a link to your store here, let me know.