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.
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.
One ROM is available in two models:
There are also two different programming options:
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.
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.
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.
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.
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.
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.
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
- Wireless programmer and debugger companion project
Issue Tracker - Report bugs, request features, or get help
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.