Skip to the content
PCBKitNew board
8 layers100 × 65 mmMatrixDrive RevB, the printed circuit board in 3D

MatrixDrive RevB

Matrixite/MatrixDrive

MatrixDrive is a USB-loadable Mega Drive/Genesis cartridge

Size
100 × 65 mm
Copper layers
8
Thickness
1.6 mm
Parts
143
Nets
192
Pads
777
Tracks, vias
3,917, 1,246
Pours
2
Routed
Yes
KiCad
KiCad 8 (file 20240108)
Created
25 Aug 2026
Updated
29 Aug 2026

Overview

MatrixDrive RevB is an open-source printed circuit board by Matrixite, from the Matrixite/MatrixDrive repository on GitHub. It is an 8-layer board of 100 × 65 mm with 143 parts on 192 nets, routed with 3,917 tracks and 1,246 vias.

It is built around the ATF1508ASV-15AU100, RP2350B and S29GL032N90TFI040, with the W25Q128JVSIQ, W25Q16JVSSIQ and SN74LVC8T245PWRE4 among its other parts. Its parts include 45 resistors, 36 capacitors, 20 ICs, 5 diodes and 4 transistors. It belongs with the retro computing and games boards and the RP2350 and FPGA and CPLD boards of this library.

Main components

12

README

README.md

MatrixDrive

Build, test, and package

MatrixDrive started with a simple idea: make a Mega Drive/Genesis cartridge that you can plug into a computer with USB-C, copy a game onto like a flash drive, and then use in a real console.

Revision B takes that idea quite a bit further. It is also designed to run Master System software on compatible Mega Drive hardware, supply ROM data to a real 32X, work in the upper slot of Sonic & Knuckles, and keep supported save data in battery-free FRAM.

[!IMPORTANT] MatrixDrive is still an engineering prototype. The software and logic have been tested, and the PCB has a preliminary fully connected route, but no physical cartridge has been built or tested in a console. Several package pin assignments still need to be verified and the board has not passed KiCad DRC. Please do not send the current PCB straight to a manufacturer.

What MatrixDrive can do

ModeFilesMaximum sizeWhat happens
Mega Drive / Genesis.BIN, .MD, .GEN4 MiBThe game is presented as linear cartridge ROM
32X with real 32X hardware.32X4 MiBMatrixDrive supplies the ROM while the real 32X provides the 32X hardware
Sonic & Knuckles upper slotMega Drive images2 MiB recommendedSupports Sonic 2 lock-on and Sonic 3 with its dedicated save area
Master System.SMS2 MiBUses either the Sega or Codemasters mapper selected by SW4

Master System mode should work on standard Mega Drive/Genesis Model 1 and Model 2 consoles. It will not work on an unmodified Genesis 3 or Sega Nomad because their cartridge-port Master System mode pin is disconnected. The JVC X'Eye can run SMS cartridges through an adapter, but its reset circuit prevents SMS games from running from a Genesis flash cartridge such as MatrixDrive. Compatibility with other all-in-one, portable, licensed, or clone systems has not yet been verified. MatrixDrive also does not fit a standalone Master System cartridge slot, and SMS mode cannot run through a 32X or the Sonic & Knuckles upper slot.

How it works

When MatrixDrive is connected to a computer, it appears as a FAT16 drive called MATRIXDRV. The RP2350B checks the game image and programs it into parallel NOR flash. After USB is disconnected, the CPLD takes over and responds to the console immediately, without waiting for the microcontroller to boot.

The main hardware is:

  • an RP2350B for USB, file handling, validation, and flash programming;
  • 32-Mbit x16 parallel NOR flash for predictable cartridge ROM reads;
  • an ATF1508ASV CPLD for mode selection, address decoding, and SMS mapping;
  • level translators and bus isolation for the 5 V console and 3.3 V logic;
  • two FRAM devices providing 64 KiB of battery-free SMS save storage;
  • a separate FRAM for the 8 KiB Sonic 3 lock-on save window;
  • USB/console power isolation, status LEDs, SWD/UART, and test points.

Loading a game

  1. Remove MatrixDrive from the console, 32X, or lock-on cartridge.
  2. Connect it to your computer with USB-C.
  3. Open the MATRIXDRV drive, delete the old game, and copy over one supported image.
  4. Safely eject the drive and wait for the green completion light.
  5. Disconnect USB completely.
  6. With all power off, select MD or SMS with SW2 and choose the required profile with SW4.
  7. Insert the cartridge, then power on the console.

[!WARNING] Never connect USB while MatrixDrive is fitted to a console, 32X, or Sonic & Knuckles cartridge. Never move SW2 or SW4 while powered, and never hot-plug any part of the cartridge stack.

Switch settings

SW4 changes purpose depending on the position of SW2:

SW2SW4 lowSW4 high
MDLinear ROM, 32X, or Sonic 2 lock-onLinear ROM with Sonic 3 save FRAM
SMSSega mapperCodemasters mapper

Always change these switches with USB and console power disconnected.

Sonic & Knuckles lock-on

For Sonic 2 & Knuckles, copy a normal Sonic 2 image, set SW2 to MD, and set SW4 low to LINEAR. Power-of-two images up to 2 MiB are mirrored across the upper-cartridge ROM window.

For Sonic 3 & Knuckles, copy a normal Sonic 3 image, set SW2 to MD, and set SW4 high to S3 SAVE. MatrixDrive then maps the dedicated save FRAM over odd-byte addresses $200001-$203FFF while leaving the rest of the ROM visible.

Read Sonic & Knuckles lock-on mode for the exact mapping, switch positions, and physical-fit checks.

Using a real 32X

MatrixDrive is not trying to reproduce a 32X. A real 32X still supplies its processors, boot ROM, registers, video, and audio hardware; MatrixDrive only supplies the cartridge ROM.

Copy a .32X image, set SW2 to MD, leave SW4 low, disconnect USB, and fit MatrixDrive to an unpowered 32X. The installer checks the SEGA header and MARS CHECK MODE marker before accepting the image.

Do not use SW4 high for 32X software because that setting deliberately replaces part of the ROM address range with the Sonic 3 save window. More detail is in 32X cartridge mode.

Master System mapping and saves

ProfileMapper writesStarting ROM banksSave window
Sega$FFFC-$FFFF0, 1, 216 KiB at $8000-$BFFF
Codemasters$0000, $4000, $80000, 1, 08 KiB at $A000-$BFFF

In Codemasters mode, bit 7 of the $4000 write enables FRAM and bits 2:0 choose one of eight 8 KiB banks. This makes all 64 KiB of SMS save storage available without hiding the ROM at $8000-$9FFF.

See Master System mode for the full register and banking behaviour.

Supported image rules

  • Mega Drive/Genesis images must be normal big-endian ROMs, contain SEGA at offset 0x100, and fit within 4 MiB.
  • 32X images must use .32X, contain SEGA at 0x100 and MARS CHECK MODE at 0x3C0, be a multiple of four bytes, and fit within 4 MiB.
  • Lock-on images should be even-sized powers of two no larger than 2 MiB.
  • Headerless SMS images need TMR SEGA at 0x1FF0, 0x3FF0, or 0x7FF0.
  • Interleaved .SMD files and copier headers are not supported.
  • Only use game images that you are legally entitled to use.

No commercial ROM images are included in this repository.

What has been tested

The project is automatically rebuilt and tested on every change. The passing software-only tests currently cover:

  • the FAT16 USB drive and ROM installer;
  • Mega Drive, Master System, and 32X image validation;
  • simulated NOR programming and ROM mirroring;
  • Sega and Codemasters SMS mapper behaviour;
  • Codemasters FRAM enabling and all eight save banks;
  • Sonic 2/Sonic 3 lock-on mapping and the Sonic 3 save decoder;
  • CPLD RTL simulation for MD, SMS, 32X ROM access, and lock-on modes;
  • a complete RP2350B firmware build;
  • a two-ROM emulator test that reached the combined Sonic 3 & Knuckles title screen and opening sequence.

These tests show that the intended software and logic paths behave correctly. They cannot prove cartridge fit, signal timing, voltage translation, power isolation, save retention, or operation on real Sega hardware.

PCB status

The KiCad project contains a complete logical schematic and a preliminary eight-layer PCB route. The routing report currently records all 188 routable nets connected, using six signal layers plus dedicated ground and 3.3 V planes.

Before a board can be considered ready to build, it still needs:

  • verified physical pin assignments and manufacturer footprints for the RP2350B, CPLD, NOR, translators, and FRAM devices;
  • CPLD fitting, resource checks, and worst-case timing analysis;
  • KiCad ERC/DRC after refilling the copper zones;
  • USB differential-pair and signal/power-integrity review;
  • cartridge-edge, PCB-thickness, bevel, shell, and insertion measurements;
  • staged bench testing before it is connected to any console.

Only the Sonic 3 odd-byte save layout is implemented for Mega Drive software. Generic Mega Drive or 32X SRAM/EEPROM saves, ROMs larger than 4 MiB, enhancement hardware, unusual regional or game-specific SMS mappers, light-gun support, and Sega mapper RAM-at-$C000 mode are outside this revision.

Start with Safety and bring-up before attempting any hardware test.

Project layout

PathWhat you will find there
MatrixDrive_Dual_System_Cart_RevB/Main Revision B project
cpld/Mapper RTL, reference model, and testbench
firmware/RP2350B USB installer firmware
hardware/KiCad files, BOM, pinout, netlist, and routing report
docs/Architecture, compatibility, and bring-up notes
tools/Project generator, router, and validation scripts

The full design README contains the component-level details and additional design notes.

Building and testing the project

You will need Python 3, the Raspberry Pi Pico SDK 2.3.0, an Arm GNU toolchain, CMake/Ninja, and Icarus Verilog.

sh
cd MatrixDrive_Dual_System_Cart_RevB
python3 tools/generate_kicad_project.py
python3 tools/route_kicad_pcb.py
python3 tools/validate_project.py

To build the RP2350B firmware:

sh
export PICO_SDK_PATH=/absolute/path/to/pico-sdk
cmake -S firmware -B ../build/firmware -G Ninja \
  -DPICO_BOARD=matrixdrive \
  -DPICO_PLATFORM=rp2350-arm-s \
  -DCMAKE_BUILD_TYPE=Release
cmake --build ../build/firmware

Technical references

Parts

143
QtyValueFootprintReferences
21100nFMatrixDrive:0603C1, C2, C3, C4, C10, C11, C12, C13, C14, C15, C16, C17, C18, C34, C35, C36 +5
1910kMatrixDrive:0603R12, R19, R20, R21, R22, R23, R25, R26, R27, R31, R32, R33, R34, R35, R36, R42 +3
12100kMatrixDrive:0603R6, R7, R8, R14, R29, R30, R37, R38, R39, R40, R41, R44
6SN74LVC8T245PWRMatrixDrive:TSSOP_24_LOGICALU3, U4, U5, U6, U7, U14
6TBD_REFMatrixDrive:0402C28, C29, C30, C31, C32, C33
410k DNPMatrixDrive:0603R15, R16, R17, R18
41kMatrixDrive:0603R9, R10, R11, R28
41uFMatrixDrive:0603C19, C20, C21, C22
42N7002MatrixDrive:SOT_23Q1, Q2, Q3, Q4
3FM18W08-SGMatrixDrive:SOIC_28_LOGICALU17, U18, U20
210uFMatrixDrive:0805C23, C24
215pFMatrixDrive:0402C25, C26
227RMatrixDrive:0603R3, R4
25.1kMatrixDrive:0603R1, R2
2PMEG2010AEBMatrixDrive:SOD_523D1, D2
10RMatrixDrive:0603R13
112MHz_CRYSTALMatrixDrive:3225_4PY1
13.3uHMatrixDrive:2016L1
133RMatrixDrive:0603R24
13V3MatrixDrive:TP_SMD_1MMTP4
14.7uFMatrixDrive:0603C27
1AMBER_LEDMatrixDrive:0603_LEDD4
1AS_3V3MatrixDrive:TP_SMD_1MMTP21
1ATF1508ASV-15AU100MatrixDrive:TQFP_100_UNASSIGNEDU13
1BUS_DISABLEMatrixDrive:TP_SMD_1MMTP6
1CART_5VMatrixDrive:TP_SMD_1MMTP1
1CPLD_JTAG_2x5MatrixDrive:HDR_2x5_1_27J4
1FRAM_CE_NMatrixDrive:TP_SMD_1MMTP13
1FRAM_HI_CE_NMatrixDrive:TP_SMD_1MMTP14
1FRAM_OE_NMatrixDrive:TP_SMD_1MMTP15
1FRAM_WE_NMatrixDrive:TP_SMD_1MMTP16
1GNDMatrixDrive:TP_SMD_1MMTP5
1GREEN_LEDMatrixDrive:0603_LEDD3
1LWR_3V3MatrixDrive:TP_SMD_1MMTP19
1MD_FRAM_CE_NMatrixDrive:TP_SMD_1MMTP17
1MD_HIGH_DISABLE_3V3MatrixDrive:TP_SMD_1MMTP18
1MD_SMS_DPDTMatrixDrive:SW_DPDT_6PSW2
1MEGA_DRIVE_EDGEMatrixDrive:MD_2x32_EDGEJ1
1MF-MSMF020-2MatrixDrive:1812F1
1PROFILE_SPDTMatrixDrive:SW_SPDT_3PSW4
1PROGRAMMatrixDrive:SW_2PSW1
1RED_LEDMatrixDrive:0603_LEDD5
1ROM_CE_NMatrixDrive:TP_SMD_1MMTP10
1ROM_OE_NMatrixDrive:TP_SMD_1MMTP11
1ROM_WE_NMatrixDrive:TP_SMD_1MMTP12
1RP2350BMatrixDrive:UNVERIFIED_LOGICAL_PACKAGEU1
1S29GL032N90TFI040MatrixDrive:TSOP_I_48_UNVERIFIED_PINMAPU2
1SMS_MODE_3V3MatrixDrive:TP_SMD_1MMTP7
1SMS_MODE_5VMatrixDrive:TP_SMD_1MMTP8
1SMS_PAUSEMatrixDrive:SW_2PSW3
1SN74LVC1G04DBVRMatrixDrive:SOT_23_5U16
1SN74LVC1G17DBVRMatrixDrive:SOT_23_5U8
1SN74LVC1T45DBVRMatrixDrive:SOT_23_6U19
1SN74LVC2G32DCURMatrixDrive:VSSOP_8U15
1SWD_UART_2x5 DNPMatrixDrive:HDR_2x5_1_27J3
1SYS_5VMatrixDrive:TP_SMD_1MMTP3
1TIME_3V3MatrixDrive:TP_SMD_1MMTP22
1TLV75533PDBVRMatrixDrive:SOT_23_5U11
1TPD2EUSB30DRTRMatrixDrive:DRT_9_LOGICALU12
1USB4105-GF-AMatrixDrive:USB_C_16PJ2
1USB_MODE_3V3MatrixDrive:TP_SMD_1MMTP9
1USB_VBUSMatrixDrive:TP_SMD_1MMTP2
1UWR_3V3MatrixDrive:TP_SMD_1MMTP20
1W25Q128JVSIQMatrixDrive:SOIC_8U10
1W25Q16JVSSIQMatrixDrive:SOIC_8U9

Questions

How big is the MatrixDrive RevB PCB?

It measures 100 × 65 mm and has 8 copper layers, 1.6 mm thick.

What parts does the MatrixDrive RevB use?

143 parts, built around the ATF1508ASV-15AU100, RP2350B, S29GL032N90TFI040 and W25Q128JVSIQ. 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 MatrixDrive RevB KiCad files?

From the Matrixite/MatrixDrive repository on GitHub, at the commit this page was made from: the board is MatrixDrive_Dual_System_Cart_RevB/hardware/MatrixDrive-RevB.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the MatrixDrive RevB design in my own project?

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

Similar boards

  • 4 layers123 × 75 mmMppt, the printed circuit board in 3D

    Mppt

    dimembermatt/mighty-mppt

    195 parts1CERN-OHL-P-2.0
  • 6 layers220 × 100 mmMotion card placement, the printed circuit board in 3D

    Motion card placement

    DeadlySIn777/Controller

    Unfinished CNC controller motherboard: native KiCad sources, rules, DSN and global routing review

    203 parts
  • 8 layers40 × 94 mmFD MAIN-01, the printed circuit board in 3D

    FD MAIN-01

    Fairank/FieldDock

    Compact iPhone companion hardware: editable PCB, mechanical CAD and portable firmware. Engineering prototype; original work available for noncommercial use.

    424 parts
  • 4 layers81 × 37 mmMaidenhead pocket locator, the printed circuit board in 3D

    Maidenhead pocket locator

    EdmundLimBoEn/gps-maidenhead-device

    Open-source portable GNSS Maidenhead grid locator with a 16x2 LCD

    117 parts
  • 4 layers118 × 76 mmSmart led badge, the printed circuit board in 3D

    Smart led badge

    zgeez/Pixel-Badge

    Wearable 32x32 LED badge with Zephyr firmware, BLE control, passive NFC, and a Flutter Android app, built around a custom nRF52840 PCB.

    1,236 partsMIT
  • 4 layers94.6 × 69.4 mmAv board b, the printed circuit board in 3D

    Av board b

    bryfur/tang-av-scaler

    PS2-class component video -> deinterlace, SMAA, scale -> 1080p60 HDMI on a Sipeed Tang Console 138K, with its AV board

    234 parts
  • 6 layers313 × 259.5 mmOpen8-vga motherboard, the printed circuit board in 3D

    Open8-vga motherboard

    adham404/Open8-VGA

    An 8-bit computer from 74HC logic: microcoded CPU, VGA, PS/2, on-board editor and assembler. Play it in your browser.

    322 parts3MIT
  • 2 layers45 × 55 mmRoom sensor, the printed circuit board in 3D

    Room sensor

    arrow53/RoomTempHumidity

    A local whole-house temperature and humidity monitor. USB-powered room sensors send measurements over Thread to a Raspberry Pi base unit, which stores history and presents a touchscreen dashboard without requiring a…

    24 parts