Skip to the content
4 layers18 × 51 mmRPROM, the printed circuit board in 3D

ROM emulator based on the RP2350B microcontroller

Size
18 × 51 mm
Copper layers
4
Thickness
1.6 mm
Parts
44
Nets
75
Pads
247
Tracks, vias
515, 78
Pours
5
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
17 Aug 2025
Updated
12 Apr 2026

Overview

RPROM is an open-source printed circuit board by niklasekstrom, from the niklasekstrom/RPROM repository on GitHub. It is a 4-layer board of 18 × 51 mm with 44 parts on 75 nets, routed with 515 tracks and 78 vias.

It is built around the W25Q32RVXHJQ, TLV1117-33DCY and B5819W SL, with the ABM8-272-T3 among its other parts. Its parts include 21 capacitors, 7 resistors, 4 connectors, 3 ICs and 2 diodes. It belongs with the RP2350 boards of this library.

Main components

4

README

README.md

RPROM

RPROM rendered

RPROM is a ROM emulator for 16 bit Amiga computers (A500, A600, A2000) based on the RP2350B microcontroller. RPROM was designed in collaboration by Niklas Ekström and Per Bengtsson.

The RPROM board has a 4 MB SPI flash memory. Each ROM image is 512 kB in size, and therefore the 4 MB is divided into eight slots of 512 kB each. The first slot is dedicated to store code and configuration data for the RP2350B. The seven remaining slots are used to store ROM images.

ROM images can be written to flash memory either via USB, or directly from the Amiga using a program called RPROM. This RPROM program is also used to switch which slot is the active slot.

This repository contains the hardware, firmware and software for RPROM. The design is intended to be easily understandable and hackable. For example, the firmware is built from a single, roughly 500 lines long, source code file.

The RPROM command

RPROM is a CLI command that runs on the Amiga. It has the following subcommands:

  • RPROM status prints status information about the device
  • RPROM switch <slot> switches the active slot and reboots the Amiga
  • RPROM write <slot> <image> writes the content of file <image> to slot <slot>
  • RPROM read <slot> <image> reads the content of slot <slot> and saves it to file <image>
  • RPROM erase <slot> erases slot <slot>

Note that ROM images should not be byte swapped.

Programming using USB

Both the firmware and ROM images can be programmed from a PC using USB. Programming is done using the picotool program, which can be downloaded from https://github.com/raspberrypi/pico-sdk-tools/releases. The RP2350B microcontroller needs to first be in download mode. To put the RP2350B in download mode, hold down the BOOTSEL button on the board, and then click the RUN button. The microcontroller should show up as a USB drive on your PC.

To program the firmware, run picotool load rprom.uf2.

To write a ROM image to a slot, run picotool load <image> -t bin -o <addr>, where <addr> depends on the slot:

  • slot 1: 0x10080000
  • slot 2: 0x10100000
  • slot 3: 0x10180000
  • slot 4: 0x10200000
  • slot 5: 0x10280000
  • slot 6: 0x10300000
  • slot 7: 0x10380000

Hardware revisions

There are two revisions of the hardware. The difference between the revisions is quite minor. For rev2, the OE and CE signals have moved from gpio pins 36 and 35 to pins 16 and 17. The benefit of this is that both PIOs with gpiobase=0 and gpiobase=16 can read the OE and CE signals. This in turn results in that using rev2, the time from when the Amiga negates the OE signal to when the RPROM tri-states the data bus is a small number of nanoseconds shorter. In most cases this won't make any difference. In any case, if you are ordering new RPROM PCBs then you likely prefer the latest revision.

Compiling the firmware

In order to compile the firmware you need a recent version (e.g. 2.2.0 or later) of the pico-sdk.

Note that there is a RPROM_REV compile definition in Firmware/CMakeLists.txt that should be equal to the hardware revision that the firmware should be used with. Make sure you set it to the correct value.

License

This design is free for non-comercial use. The designers take no responsibility for if it doesn't work or if it causes damage to your equipment. If you want to build boards to sell then you need to first ask for approval from the designers.

Bill of materials (BOM)

ReferencesValueFootprintLCSC PartQuantity
C2, C8, C11, C12, C13, C14, C15, C16, C17, C18, C20, C21100nC_0402_1005MetricC152512
C1, C5, C1910uC_0805_2012MetricC158503
C3, C415pC_0402_1005MetricC15482
C6, C7, C9, C104.7uC_0402_1005MetricC237334
R2, R4, R61kR_0402_1005MetricC117023
R7, R827R_0402_1005MetricC250922
R110kR_0402_1005MetricC257441
R333R_0402_1005MetricC251051
L13.3uL_pol_2016C424111191
D1, D2B5819W_SLD_SOD-123C85982
U1RP2350_80QFNRP2350-QFN-80-1EP_10x10_P0.4mm_EP3.4x3.4mmC424156551
U2TLV1117-33SOT-223-3_TabPin2C155781
Y1ABM8-272-T3Crystal_SMD_3225-4Pin_3.2x2.5mmC206257311
SW1, SW2SW_PushSW_SPST_TS-1088C7204772
IC1W25Q32RVXHJQ or ZD25WQ32CEIGRWinbond_USON-8-1EP_3x2mm_P0.5mm_EP0.2x1.6mmC52582811
J1USB_B_MicroUSB_Micro-B_Amphenol_10103594-0001LF_HorizontalC4284951
J2, J3Conn_01x20PinHeader_1x20_P2.54mm_Vertical-2
J4Conn_01x01PinHeader_1x01_P2.54mm_Horizontal-1

Building

The hardware can be cheaply built by JLCPCB using Economic PCBA. Components should be assembled only on the top side, and select that tooling holes are "Added by Customer".

Please pay attention to the orientation of the components if ordering assembly from JLCPCB. Especially pay attention to the orientation of coil L1. When uploading the component placement file to JLCPCB I had to manually fix the orientation of L1 regardless of what the component placement file specified.

Parts

44
QtyValueFootprintReferences
12100nCapacitor_SMD:C_0402_1005MetricC2, C8, C11, C12, C13, C14, C15, C16, C17, C18, C20, C21
310uCapacitor_SMD:C_0805_2012MetricC1, C5, C19
31kResistor_SMD:R_0402_1005MetricR2, R4, R6
215pCapacitor_SMD:C_0402_1005MetricC3, C4
227Resistor_SMD:R_0402_1005MetricR7, R8
24.7uRPROM:C_0402_1005Metric_small_padsC6, C7
24.7uCapacitor_SMD:C_0402_1005MetricC9, C10
2B5819W_SLDiode_SMD:D_SOD-123D1, D2
2Conn_01x20Connector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_VerticalJ2, J3
2SW_PushRPROM:SW_SPST_TS-1088SW1, SW2
110kResistor_SMD:R_0402_1005MetricR1
13.3uRPROM:L_pol_2016L1
133Resistor_SMD:R_0402_1005MetricR3
1ABM8-272-T3Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1Conn_01x01Connector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalJ4
1RP2350_80QFNRPROM:RP2350-QFN-80-1EP_10x10_P0.4mm_EP3.4x3.4mm_ThermalViasU1
1TLV1117-33Package_TO_SOT_SMD:SOT-223-3_TabPin2U2
1USB_B_MicroConnector_USB:USB_Micro-B_Amphenol_10103594-0001LF_HorizontalJ1
1W25Q32RVXHJQPackage_SON:Winbond_USON-8-1EP_3x2mm_P0.5mm_EP0.2x1.6mmIC1

The 41 most common of 44 parts.

Similar boards

  • 4 layers65 × 56 mmRaspberry pi pico 2w, the printed circuit board in 3D

    Raspberry pi pico 2w

    RoyZeng0317/kicad

    This is the kicad circuit diagram layout, it's have more layout in here.

    83 parts
  • 4 layers44 × 44 mmNode pcb, the printed circuit board in 3D

    Node pcb

    marino222/digital-clock72

    Kinetic Art Clock consisting of LCD displays

    55 parts2MIT
  • 2 layers65.4 × 133.6 mmBSidesTLV2025GloveBadge, the printed circuit board in 3D

    BSidesTLV2025GloveBadge

    bsidestlv/bsidestlv-2025-badge

    To solve the challenge you will need to discover a series of flags, hidden inside the badge. Each one will help you unlock the next step in the challenge, to finally reveal the ultimate secret the badge holds.

    35 parts13MIT
  • 4 layers80 × 50.5 mmLoeti, the printed circuit board in 3D

    Loeti

    elagil/loeti

    Soldering equipment for JBC irons

    110 parts5
  • 2 layers18.5 × 35.8 mmVkm, the printed circuit board in 3D

    Vkm

    daniel-starke/vkvm

    Virtual KVM

    35 parts3
  • 2 layers88 × 75 mmRubber drive hard, the printed circuit board in 3D

    Rubber drive hard

    PhysicsDptAngers/GomuGomuNoDrive

    This repository provides open-source hardware designs, physical bench measurement datasets, numerical simulation routines, and real-time DSP emulations for the Rubber Zener clipping topology.

    62 parts1
  • 2 layers37.3 × 31.8 mmKeyChain, the printed circuit board in 3D

    KeyChain

    Brammert42/EPKeychain

    A keychain equipped with a RP2040 and a E-ink

    88 parts
  • 4 layers30 × 28 mmRebot ctrl, the printed circuit board in 3D

    Rebot ctrl

    Matheus3007/pcb-lab

    PCBs designed entirely as code: Python circuits + KiCad 10 + Freerouting, checked, rendered and ordered assembled from JLCPCB

    58 partsMIT

Questions

How big is the RPROM PCB?

It measures 18 × 51 mm and has 4 copper layers, 1.6 mm thick.

What parts does the RPROM use?

44 parts, built around the W25Q32RVXHJQ, TLV1117-33DCY, B5819W SL and ABM8-272-T3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the RPROM KiCad files?

From the niklasekstrom/RPROM repository on GitHub, at the commit this page was made from: the board is Hardware/Rev2/KiCad/RPROM.kicad_pcb and its schematic Hardware/Rev1/KiCad/RPROM.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the RPROM design in my own project?

Its repository states no licence, so its author keeps all rights: ask niklasekstrom before reusing the design.