

MatrixDrive RevB
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
12ATF1508ASV-15AU100
LQFP-100(14x14)-40℃~+85℃ 128 15ns 3V~3.6V 80 ATF15xx In-system programming LQFP-100(14x14) Programmable Logic Device (CPLDs/FPGAs) ROHSMicrochip TechnologyProgrammable Logic Device (CPLDs/FPGAs)RP2350B
QFN-80-EP(10x10)48 Power-on reset (POR)、Watchdog reset、External pin reset (NRST)、Built-in general-purpose timer、Integrated LDO、True random number generator (TRNG)、Hardware ECC check、Independent watchdog (IWDG) QFN-80-EP(10x10) Microcontrollers (MCU/MPU/SOC) ROHSRaspberry PiMicrocontrollers (MCU/MPU/SOC)S29GL032N90TFI040
TSOP-48-18.4mm-40℃~+85℃ 100,000 cycles 2.7V~3.6V 20 Years 25uA 32Mbit 90ns Parallel TSOP-48-18.4mm NOR FLASH ROHSInfineon TechnologiesNOR FLASHW25Q128JVSIQ
SOIC-8-208mil-40℃~+85℃ 100,000 cycles 120ms@(32KB) 128Mbit 133MHz 1uA 2.7V~3.6V 20 Years 3ms Power-on reset、Hardware write protection、Software write protection、Write enable latch、Absolute write protection SPI SOIC-8-208mil NOR FLASH ROHSWinbondNOR FLASHW25Q16JVSSIQ
SOIC-8-208mil-40℃~+85℃ 100,000 cycles 10uA 133MHz 16Mbit 2.7V~3.6V 20 Years 3ms SPI SOIC-8-208mil NOR FLASH ROHSWinbondNOR FLASHSN74LVC8T245PWRE4
TSSOP-24-40℃~+85℃ 1 8 Level translator Power-off protection、Output enable high-impedance Tri-State TSSOP-24 Translators, Level Shifters ROHSTexas InstrumentsTranslators, Level ShiftersFM18W08-SG
SOIC-28-300milSOIC-28-300mil FRAM ROHSInfineon TechnologiesFRAMSN74LVC1G04DBVR
SOT-23-5-40℃~+125℃ 1 1 1.2V、1.9V、2.2V、2.3V、3.8V 1.65V~5.5V 100mV、300mV、400mV、450mV、550mV 10uA 24mA 24mA 74LVC 7ns@5V,50pF SOT-23-5 Inverters ROHSTECH PUBLICLogic GatesSN74LVC1G17DBVR
SOT-23-5-40℃~+125℃ 1 1 1.2V、1.9V、2.3V、2.4V 1.65V~5.5V 100mV、300mV、400mV、550mV 10uA 32mA 32mA 74LVC 8.3ns@5V,50pF SOT-23-5 Logic Gates ROHSTECH PUBLICLogic GatesSN74LVC1T45DBVRE4
SOT-23-6-40℃~+85℃ 1 1.65V~5.5V 1.65V~5.5V Bidirectional Level translator Power-off protection、Output enable high-impedance Push-Pull、Tri-State SOT-23-6 Translators, Level Shifters ROHSTexas InstrumentsTranslators, Level ShiftersSN74LVC2G32DCURE4
VSSOP-8-40℃~+125℃ 1.65V~5.5V 10uA 2 2 3.8ns@3.3V,50pF 32mA 32mA OR Gate VSSOP-8 Logic Gates ROHSTexas InstrumentsLogic GatesTLV75533PDBVR-MS
SOT-23-5SOT-23-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSMSKSEMIUncategorised
README
README.mdMatrixDrive
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
| Mode | Files | Maximum size | What happens |
|---|---|---|---|
| Mega Drive / Genesis | .BIN, .MD, .GEN | 4 MiB | The game is presented as linear cartridge ROM |
| 32X with real 32X hardware | .32X | 4 MiB | MatrixDrive supplies the ROM while the real 32X provides the 32X hardware |
| Sonic & Knuckles upper slot | Mega Drive images | 2 MiB recommended | Supports Sonic 2 lock-on and Sonic 3 with its dedicated save area |
| Master System | .SMS | 2 MiB | Uses 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
- Remove MatrixDrive from the console, 32X, or lock-on cartridge.
- Connect it to your computer with USB-C.
- Open the
MATRIXDRVdrive, delete the old game, and copy over one supported image. - Safely eject the drive and wait for the green completion light.
- Disconnect USB completely.
- With all power off, select MD or SMS with SW2 and choose the required profile with SW4.
- 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:
| SW2 | SW4 low | SW4 high |
|---|---|---|
| MD | Linear ROM, 32X, or Sonic 2 lock-on | Linear ROM with Sonic 3 save FRAM |
| SMS | Sega mapper | Codemasters 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
| Profile | Mapper writes | Starting ROM banks | Save window |
|---|---|---|---|
| Sega | $FFFC-$FFFF | 0, 1, 2 | 16 KiB at $8000-$BFFF |
| Codemasters | $0000, $4000, $8000 | 0, 1, 0 | 8 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
SEGAat offset0x100, and fit within 4 MiB. - 32X images must use
.32X, containSEGAat0x100andMARS CHECK MODEat0x3C0, 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 SEGAat0x1FF0,0x3FF0, or0x7FF0. - Interleaved
.SMDfiles 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
| Path | What 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.
cd MatrixDrive_Dual_System_Cart_RevB
python3 tools/generate_kicad_project.py
python3 tools/route_kicad_pcb.py
python3 tools/validate_project.pyTo build the RP2350B firmware:
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/firmwareTechnical references
Parts
143| Qty | Value | Footprint | References |
|---|---|---|---|
| 21 | 100nF | MatrixDrive:0603 | C1, C2, C3, C4, C10, C11, C12, C13, C14, C15, C16, C17, C18, C34, C35, C36 +5 |
| 19 | 10k | MatrixDrive:0603 | R12, R19, R20, R21, R22, R23, R25, R26, R27, R31, R32, R33, R34, R35, R36, R42 +3 |
| 12 | 100k | MatrixDrive:0603 | R6, R7, R8, R14, R29, R30, R37, R38, R39, R40, R41, R44 |
| 6 | SN74LVC8T245PWR | MatrixDrive:TSSOP_24_LOGICAL | U3, U4, U5, U6, U7, U14 |
| 6 | TBD_REF | MatrixDrive:0402 | C28, C29, C30, C31, C32, C33 |
| 4 | 10k DNP | MatrixDrive:0603 | R15, R16, R17, R18 |
| 4 | 1k | MatrixDrive:0603 | R9, R10, R11, R28 |
| 4 | 1uF | MatrixDrive:0603 | C19, C20, C21, C22 |
| 4 | 2N7002 | MatrixDrive:SOT_23 | Q1, Q2, Q3, Q4 |
| 3 | FM18W08-SG | MatrixDrive:SOIC_28_LOGICAL | U17, U18, U20 |
| 2 | 10uF | MatrixDrive:0805 | C23, C24 |
| 2 | 15pF | MatrixDrive:0402 | C25, C26 |
| 2 | 27R | MatrixDrive:0603 | R3, R4 |
| 2 | 5.1k | MatrixDrive:0603 | R1, R2 |
| 2 | PMEG2010AEB | MatrixDrive:SOD_523 | D1, D2 |
| 1 | 0R | MatrixDrive:0603 | R13 |
| 1 | 12MHz_CRYSTAL | MatrixDrive:3225_4P | Y1 |
| 1 | 3.3uH | MatrixDrive:2016 | L1 |
| 1 | 33R | MatrixDrive:0603 | R24 |
| 1 | 3V3 | MatrixDrive:TP_SMD_1MM | TP4 |
| 1 | 4.7uF | MatrixDrive:0603 | C27 |
| 1 | AMBER_LED | MatrixDrive:0603_LED | D4 |
| 1 | AS_3V3 | MatrixDrive:TP_SMD_1MM | TP21 |
| 1 | ATF1508ASV-15AU100 | MatrixDrive:TQFP_100_UNASSIGNED | U13 |
| 1 | BUS_DISABLE | MatrixDrive:TP_SMD_1MM | TP6 |
| 1 | CART_5V | MatrixDrive:TP_SMD_1MM | TP1 |
| 1 | CPLD_JTAG_2x5 | MatrixDrive:HDR_2x5_1_27 | J4 |
| 1 | FRAM_CE_N | MatrixDrive:TP_SMD_1MM | TP13 |
| 1 | FRAM_HI_CE_N | MatrixDrive:TP_SMD_1MM | TP14 |
| 1 | FRAM_OE_N | MatrixDrive:TP_SMD_1MM | TP15 |
| 1 | FRAM_WE_N | MatrixDrive:TP_SMD_1MM | TP16 |
| 1 | GND | MatrixDrive:TP_SMD_1MM | TP5 |
| 1 | GREEN_LED | MatrixDrive:0603_LED | D3 |
| 1 | LWR_3V3 | MatrixDrive:TP_SMD_1MM | TP19 |
| 1 | MD_FRAM_CE_N | MatrixDrive:TP_SMD_1MM | TP17 |
| 1 | MD_HIGH_DISABLE_3V3 | MatrixDrive:TP_SMD_1MM | TP18 |
| 1 | MD_SMS_DPDT | MatrixDrive:SW_DPDT_6P | SW2 |
| 1 | MEGA_DRIVE_EDGE | MatrixDrive:MD_2x32_EDGE | J1 |
| 1 | MF-MSMF020-2 | MatrixDrive:1812 | F1 |
| 1 | PROFILE_SPDT | MatrixDrive:SW_SPDT_3P | SW4 |
| 1 | PROGRAM | MatrixDrive:SW_2P | SW1 |
| 1 | RED_LED | MatrixDrive:0603_LED | D5 |
| 1 | ROM_CE_N | MatrixDrive:TP_SMD_1MM | TP10 |
| 1 | ROM_OE_N | MatrixDrive:TP_SMD_1MM | TP11 |
| 1 | ROM_WE_N | MatrixDrive:TP_SMD_1MM | TP12 |
| 1 | RP2350B | MatrixDrive:UNVERIFIED_LOGICAL_PACKAGE | U1 |
| 1 | S29GL032N90TFI040 | MatrixDrive:TSOP_I_48_UNVERIFIED_PINMAP | U2 |
| 1 | SMS_MODE_3V3 | MatrixDrive:TP_SMD_1MM | TP7 |
| 1 | SMS_MODE_5V | MatrixDrive:TP_SMD_1MM | TP8 |
| 1 | SMS_PAUSE | MatrixDrive:SW_2P | SW3 |
| 1 | SN74LVC1G04DBVR | MatrixDrive:SOT_23_5 | U16 |
| 1 | SN74LVC1G17DBVR | MatrixDrive:SOT_23_5 | U8 |
| 1 | SN74LVC1T45DBVR | MatrixDrive:SOT_23_6 | U19 |
| 1 | SN74LVC2G32DCUR | MatrixDrive:VSSOP_8 | U15 |
| 1 | SWD_UART_2x5 DNP | MatrixDrive:HDR_2x5_1_27 | J3 |
| 1 | SYS_5V | MatrixDrive:TP_SMD_1MM | TP3 |
| 1 | TIME_3V3 | MatrixDrive:TP_SMD_1MM | TP22 |
| 1 | TLV75533PDBVR | MatrixDrive:SOT_23_5 | U11 |
| 1 | TPD2EUSB30DRTR | MatrixDrive:DRT_9_LOGICAL | U12 |
| 1 | USB4105-GF-A | MatrixDrive:USB_C_16P | J2 |
| 1 | USB_MODE_3V3 | MatrixDrive:TP_SMD_1MM | TP9 |
| 1 | USB_VBUS | MatrixDrive:TP_SMD_1MM | TP2 |
| 1 | UWR_3V3 | MatrixDrive:TP_SMD_1MM | TP20 |
| 1 | W25Q128JVSIQ | MatrixDrive:SOIC_8 | U10 |
| 1 | W25Q16JVSSIQ | MatrixDrive:SOIC_8 | U9 |
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 mm

- 6 layers220 × 100 mm

Motion card placement
DeadlySIn777/Controller
Unfinished CNC controller motherboard: native KiCad sources, rules, DSN and global routing review
203 parts - 8 layers40 × 94 mm

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 mm

Maidenhead pocket locator
EdmundLimBoEn/gps-maidenhead-device
Open-source portable GNSS Maidenhead grid locator with a 16x2 LCD
117 parts - 4 layers118 × 76 mm

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 mm

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 mm

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 mm

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