Skip to the content
2 layers93 × 59.4 mmSillyTestRom, the printed circuit board in 3D

"SillyTestRom" is a simple discrete logic mapper for the famicom/clone that I made for my own personal messing around with homebrew, there are currently no plans to use this in anything.

Size
93 × 59.4 mm
Copper layers
2
Thickness
1.2 mm
Parts
120
Nets
170
Pads
350
Tracks, vias
736, 83
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
9 May 2025
Updated
16 May 2025

Overview

SillyTestRom is an open-source printed circuit board by smaldragon, from the smaldragon/SillyTestRom repository on GitHub. It is a 2-layer board of 93 × 59.4 mm with 120 parts on 170 nets, routed with 736 tracks and 83 vias.

It is built around the 74LS153DC and 74LS377PC. Its parts include 6 ICs, 5 capacitors, 3 diodes, 1 resistor and 1 connector.

Main components

2

README

README.md

SillyTestRom

"SillyTestRom" is a simple discrete logic mapper for the famicom/clone that I made for my own personal messing around with homebrew, there are currently no plans to use this in anything.

  • 512 KiB PRG-FLASH (partially re-writabble for game saves)
  • 8KiB CHR-RAM
  • Arbitrary Nametable Mirroring!

I mainly see this as an extended AxROM, compared to similar options, the main upsides of this board are low-part count and compatibility with famiclones that don't support 4-screen mirroring.

The board can also be bodged into other configurations. Currently 2 configurations of this board are being considered (by me), A and B.

NOTE Everything here is a WIP and subject to change!

Hardware

PCB Render Schematic

Mapper ICs:

  • 74HC377 (8bit register with enable, mapper register)
  • 74HC153 (dual 4→1 multiplexer, mirroring logic and chip-enable not gate)
  • some diode/resistor logic

Register (0x8000-0x9FFF)

There are no Bus Conflicts.

Its possible I may switch the PRG Bank control to use A0-3 instead, as code is always aware of which bank its currently running from, this could save code from always having to OR the graphics and bank bits together when only changing graphics values.

A Wiring

text
Data
MMMM BBBB
|    |
|    +--- PRG Bank (32K@$8000)
+-------- Nametable Mirroring

Potential Address+Data Alternative:

Address | Data
   BBBB | xxxx.MMMM
      |        +-------- Nametable Mirroring
      +----------------- PRG Bank (32K@$8000)

Each Mirroring bit controls the nametable (A or B) visible at each of the 4 logical slots, allowing for any type of (non-extended) mirroring, ie:

text
* $Ax -> Vertical
   AB
   AB
* $Cx -> Horizontal
   AA
   BB
* $0x -> Single Screen A
   AA
   AA
* $Fx -> Single Screen B
   BB
   BB
* $6x -> Diagonal
   AB
   BA
 (etc..)

B Wiring

The B version loses the support for horizontal and vertical mirroring, but allows for 4 CHR-RAM banks, this is motivated by the similar cost of 8KiB and 32KiB sram chips.

text
CCMM BBBB
| |  |
| |  +--- PRG Bank (32K@$8000)
| +------ Nametable Mirroring
+-------- CHR Bank (8K@ppu$0000)

Potential Address+Data Alternative:

Address | Data
   BBBB | xxCC.xxMM
      |     |    +------ Nametable Mirroring
      |     +----------- CHR Bank (8K@ppu$0000)
      +----------------- PRG Bank (32K@$8000)

In this case the mirroring bits are as follows:

text
(bits)
* 00: AA
      AA

* 01: BA
      AB

* 10: AB
      BA

* 11: BB
      BB

Flash Saves (0xA000-0xFFFF)

This area is available for writing data to the 39sf flash chip. Check the datasheet for info on how this is done.

Parts

120
QtyValueFootprintReferences
96TestPointLibrary:TestPoint_THTPad_D1.5mm_Drill1mmTP1, TP2, TP10, TP11, TP12, TP13, TP14, TP15, TP16, TP17, TP18, TP19, TP20, TP21, TP22, TP23 +80
8SolderJumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Bridged2Bar_RoundedPad1.0x1.5mmJP1, JP2, JP3, JP4, JP5, JP6, JP7, JP8
4C_SmallCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC1, C2, C3, C4
31N4148PCM_Diode_THT_AKL:D_DO-35_SOD27_P7.62mm_HorizontalD1, D2, D3
2SST39SF040PCM_Package_LCC_AKL:PLCC-32_SMD-SocketU3, U6
174LS153PCM_Package_DIP_AKL:DIP-16_W7.62mmU2
174LS377PCM_Package_DIP_AKL:DIP-20_W7.62mmU1
1CY62256-70PCPCM_Package_DIP_AKL:DIP-28_W15.24mmU4
1C_Polarized_SmallCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC5
1Famicom_Cartridge_Edgefamicom:Famicom Cartridge Edge Connector (long legs)J1
1R_SmallPCM_Resistor_THT_AKL:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR1
1SST39SF040PCM_Package_DIP_AKL:DIP-32_W15.24mmU5

Similar boards

  • 2 layers364 × 203 mmCPU6S, the printed circuit board in 3D

    CPU6S

    Meisaka/CenMiniCom

    Centurion Minicomputer Schematics

    240 parts8
  • 2 layers237.5 × 102.9 mmInstruction, the printed circuit board in 3D

    Instruction

    jes/scamp-cpu

    A homebrew 16-bit CPU with a homebrew Unix-like-ish operating system.

    112 parts301Unlicense
  • 2 layers100.6 × 74.9 mmNes discrete mapper 1-1, the printed circuit board in 3D

    Nes discrete mapper 1-1

    MouseBiteLabs/NES-Cartridges

    A collection of Nintendo Entertainment System (NES) cartridge circuit boards

    55 parts25CC-BY-SA-4.0
  • 2 layers100 × 61.4 mmCart, the printed circuit board in 3D

    Cart

    digilogistist/The-Open-Source-USB-NES-Project

    USB-NES and NES-FASTGFX product engineering repository

    38 parts24CC0-1.0
  • 2 layers200 × 321.3 mmBackplane, the printed circuit board in 3D

    Backplane

    tergav17/RDP-9

    Homebrew TTL ISA-compatible PDP-9 clone

    137 parts6
  • 2 layers100 × 100 mmCpu board, the printed circuit board in 3D

    Cpu board

    reinvantveer/68KatyClone

    An open-hardware design for an 8-bit Motorola 68008 system

    15 parts5MIT
  • 6 layers210 × 119 mmClaculator Keypad, the printed circuit board in 3D

    Claculator Keypad

    Robert-Mones/Claculator

    A reverse Polish notation calculator with added features such as comparisons, branching, and custom recursive operators taken from the Clac project from the 15-122 course at Carnegie Mellon University.

    202 parts5
  • 2 layersRegisters, the printed circuit board in 3D

    Registers

    adasneves127/SAFETy-Computer

    A full Turing Complete computer made from TTL components

    73 parts3

Questions

How big is the SillyTestRom PCB?

It measures 93 × 59.4 mm and has 2 copper layers, 1.2 mm thick.

What parts does the SillyTestRom use?

120 parts, built around the 74LS153DC and 74LS377PC. 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 SillyTestRom KiCad files?

From the smaldragon/SillyTestRom repository on GitHub, at the commit this page was made from: the board is Kicad/a0/a0.kicad_pcb and its schematic Kicad/a0/a0.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the SillyTestRom design in my own project?

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