One ROM is the most flexible ROM replacement for retro computers.
It is based on a sub-$2 microcontroller and all of its software and hardware is completely open source. 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, 1541 disk drives, Atari 800XL, TI-99, CoCo2, and many more.
β¨NEWβ¨ One ROM Studio is a comprehensive One ROM manager for Windows, Mac and Linux.
One ROM Web is a browser-based tool to program One ROM USB, from any PC, Mac, Linux, or Android device.
Subscribe to the piers.rocks YouTube channel for demonstrations of One ROM in action, technical deep-dives, development and debugging sessions, and sneak peeks at upcoming features and new hardware versions.
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, while the host system is running.
Programming is quick and simple. The USB variant allows programming directly from your browser in 10s with no separate programmer required. Alternatively, with the Pro version, connect 4 wires and run a single command. A $5 Raspberry Pi Pico works as a programmer for the pro version, and One ROM can be reflashed in-circuit without removal from the host system, avoiding wear on the ROM and the socket.
(*) Ice can be built with many different models of the STM32F4 microcontroller, offering different flash sizes, performance levels and cost.
All models and variants of One ROM support the same core feature sets and functionality.
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. One ROM Web uses a WebAssembly build of the same Rust-based tooling, combined with WebUSB and Javascript. This combination provides ROM emulation fast enough for vintage systems using low cost microcontrollers, adds an intuitive web-based programming interface, and is supported by a robust and flexible toolchain.
Chip select lines are software-configurable (HIGH or LOW) without the need for hardware jumpers or different PCB designs required by other solutions. 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, accessing telemetry while the system is running, and is hackable - meaning you can add your own capabilities and features.
The GitHub repository contains comprehensive documentation, resources for developers, theory of operation, issue tracker and discussion space.
One ROM has been tested and works with Commodore 64, VIC-20, various PET models, 1541 disk drives, IEEE drives, Atari 800XL, 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.
You can see a list of the ROM types One ROM aims to emulate in the One ROM Visualizer. This allows you to explore the pinouts of the original ROM chips.
One ROM is fully open source. All hardware designs, firmware source code, build tooling, 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, Gerbers and other fabrication files are provided. We use JLCPCB for our boards, but other PCB manufacturers and assembly services should be compatible.
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.
If you have any questions about One ROM or this site, head over to the One ROM Discussions page on GitHub.
This site is hosted by GitHub Pages. We do not collect or store any information about you or your visit to this site, apart from One ROM Web. You can view GitHub's privacy policy here.