One ROM

Getting Started
One ROM USB device

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.


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, 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.

Versions

Models

Ice ❄️ Powered by an STM32F4* microcontroller. All core features, such as multiple ROM images, dynamic image switching, and replacing multiple ROMs with a single One ROM are all supported. Only has a single CPU core, so can support fewer advanced run-time features than Fire. Fire πŸ”₯ Powered by an RP2350 microcontroller. Has a more powerful, dual core, processor so can support more advanced run-time features than Ice.

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


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. Fire version is under development. Pro πŸ’ͺ 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. Available in both Ice and Fire versions.

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.

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. 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.

Supported Retro Systems

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.

Open Source

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.

Coming Soon
One ROM Fire USB Program the RP2350 version from One ROM Web Web Image Builder Build and flash custom ROM collections from One ROM Web One ROM 28 New model to replace larger 28 pin ROMs including the 23128, 2764, 27128, 27256 and 27512
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 One ROM Studio Comprehensive One ROM manager for Windows, Mac and Linux icon One ROM Web Program One ROM USB from your browser icon One ROM Images One ROM firmware images and ROM configurations icon One ROM Visualizer View pinouts and configurations of the original ROMs emulated by One ROM icon One ROM WASM Library Supporting Web Assembly tooling for One ROM, used by One ROM Web 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.
Contact

If you have any questions about One ROM or this site, head over to the One ROM Discussions page on GitHub.

Privacy

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.