Blinking Light Win is a small circuit board with two 72 pin edge
connectors, one to connect to the NES mainboard and the other for
connecting the cartridge. The existing spring loaded cartridge
tray is removed, and a new plastic tray is installed which allows
the cartridge to slide flat into the edge connector. For good
measure, a CIC chip is directly added to the connector so that
mis-timing of the lock and key does not cause resets. As a bonus,
you can also play unliscensed cartridges. The final touch is a
sticker that says "Keep calm and don't press down".
It works extremely well, but...
Between not pushing down, and the plastic not feeling quite right,
it hits me squarely in the middle of my nostalgia and undermines
the reason to play on an authentic console as opposed to an emulator.
Also, it is not currently in production so you can only buy it
second hand at extraordinarily high prices. Normally it sells from
ArcadeWorks for $30.00
Surely someone has figured out how to mount an edge connector in
the moving NES cartridge tray. I searched and searched and could
not find one.
I did find the NES toaster:
Which proved that an edge connector would function when connected
to the NES mainboard with 22 AWG solid-core wire. So I got inspired...
and set to thinking about how to make a better NES 72 pin connector.
My requirements were:
- Must use a 72 pin edge connector
- Must use the existing NES cartridge tray
- The NES must be unmodified externally
- The NES cartridge tray should be unmodified
- Tray must be able to be pushed down and up
- The connector should also have the 10NES CIC functionality
- The connector should have settings to use the local CIC or
the one in the cartridge
- The connector should optionally implement the Famicom audio
hack with and without a 47k resistor
- Since there is no standard pin for the audio hack, it should
support audio on any expansion pin
I managed to meet all the requirements, but sadly I needed to trim away
most of the front part of the cartridge tray to make room for the edge
The ZIF connector is about half as tall as the edge connector. In
order to make room for the larger edge connector, I had to cut away
almost all of the bottom front flap of the cartridge tray.
I used a small serrated knife to cut a vertical slice about 9 mm from
the edge on each side. I cut the slice just 1mm short of the bottom.
I then used a dremel with a rotery blade to cut horrizontally between
the vertical slices. This left a 1mm lip across the front of the
cartridg tray. Lastly I sanded down the cut edges.
I started by 3D printing a panel that slipped into the metal slot on
top of the cartridge tray. I then began to design legs that would
extend down and trap the edge connector between it and the moving
part of tray. I tried a few designs but in the end concluded I was
not going to be able to reinstall the moving part of the tray and the
arms without cutting away the tray's top support bar. I even tried
to add an up slanting part to the top plate to get up and over the
tray's top support bar. There simply wasn't enough space between
the cartridge tray's top support bar and the cartridge tray's bottom
front for a clip that moves with the tray.
I then started to design a U shaped metal clip that would slip down
over the hinge pin in between the moving and fixed part of the tray.
I made some mock ups out of thin plastic, again the space between
the cartridge tray's top and bottom supports left a small and
I finally had the idea to make a bracket that would simply trap a
free floating edge connector up against the rounded edge of the
moving part of the tray. The first design had little spring
rockers, but the springs were so small that they did not print well.
Initially I also had a large opening on the back at the top,
leaving space for the pins to stick out of the bottom side of the
PCB, and a hole on the bottom anticipating a 90 degree connector to
accept a ribbon cable.
It turned out that the edge connector to the NES mainboard did
not leave enough clearance for a 90 degree connector, so I ended up
making the hole for the ribbon connector on the bottom of the back,
and adding a small plate for support on the top covering the opening
for the pins that extend beyond the PCB. I made about 16 revisions,
getting the holes in just the right place, lengthening the front to
back dimension so that it sits flush with the cartridge tray, and
thickening the top cross bar for strength, cutting out notches for
the hinging mechanism on the cartridge tray, and lengthening the
front to back dimension of the top bar to act as a stop and keep the
connector from moving upward more than the required 6 degrees. I made
a prototype of the connector and the board and printed it on the 3D
I designed the PCB boards in Eagle CAD. I made a tiny PCB with the
72 pin edge connector (facing the cartridge) and a 72 pin shrouded
header for a ribbon cable. I made a larger PCB with a 72 pin edge
connector (facing the NES mainboard), and a 72 pin shrouded header
for the ribbon cable. I also added an ATtiny13A for the 10NES CIC
chip. I also added a status LED for the CIC programming status,
and the appropriate resistor so that light (and not smoke comes
out of the LED). I added a jumper block to select if the local /
cartridge / both CICs are connected.
I also added a 74K Ohm resistor for mixing the Famicom and NES
audio. Since there is no standard pin for mixing the Famicom and
NES audio I added a jumper block to select which pin carries the
Famicom Audio and which pin carried the NES audio. The PCB has
the markings for the typically used pins, expansion pin 6 for
Famicom audio and expansion pin 9 for NES aux audio in. I have
another jumper block to choose mixing the Famicom and NES audio
with or without a 47K Ohn resistor.
Note: if you have already modified the console to support Famicom
audio, do not place jumpers on any of these pins.
Lastly I added a 2x10 jumper block with one side representing
the expansion pins 0-9 on the cartridge and the other side
representing expansion pins 0-9 on the console. This allows for
maximum flexibility to isolate expansion port pins from the
cartridge, or remap expansion port pins between the cartridge
Note: under normal conditional these pins are just jumpered
I used a Kingworld 72 pin edge connector. I had to measure the
overall size of the connector, the size and location of the holes,
and the placement of the pins in order to make the part in an Eagle
CAD library. I built the part, printed out its footprint on paper,
and crammed the pins through the paper. It was a perfect fit.
Unfortunately I got the pins backward. I had referenced the
+5V -- |36 72| -- GND
CIC toMB <- |35 71| <- CIC CLK
CIC toPak -> |34 70| <- CIC /RST
PPU D3 <> |33 69| <> PPU D4
PPU D2 <> |32 68| <> PPU D5
PPU D1 <> |31 67| <> PPU D6
PPU D0 <> |30 66| <> PPU D7
PPU A0 -> |29 65| <- PPU A13
PPU A1 -> |28 64| <- PPU A12
PPU A2 -> |27 63| <- PPU A10
PPU A3 -> |26 62| <- PPU A11
PPU A4 -> |25 61| <- PPU A9
PPU A5 -> |24 60| <- PPU A8
PPU A6 -> |23 59| <- PPU A7
CIRAM A10 <- |22 58| <- PPU /A13
PPU /RD -> |21 57| -> CIRAM /CE
EXP 4 |20 56| <- PPU /WR
EXP 3 |19 55| EXP 5
EXP 2 |18 54| EXP 6
EXP 1 |17 53| EXP 7
EXP 0 |16 52| EXP 8
/IRQ <- |15 51| EXP 9
CPU R/W -> |14 50| <- /ROMSEL (/A15 + /M2)
CPU A0 -> |13 49| <> CPU D0
CPU A1 -> |12 48| <> CPU D1
CPU A2 -> |11 47| <> CPU D2
CPU A3 -> |10 46| <> CPU D3
CPU A4 -> |09 45| <> CPU D4
CPU A5 -> |08 44| <> CPU D5
CPU A6 -> |07 43| <> CPU D6
CPU A7 -> |06 42| <> CPU D7
CPU A8 -> |05 41| <- CPU A14
CPU A9 -> |04 40| <- CPU A13
CPU A10 -> |03 39| <- CPU A12
CPU A11 -> |02 38| <- M2
GND -- |01 37| <- SYSTEM CLK
|1 8| ---------- +5V NES 36
NES 71- CLK----------<-|2 7|->----/RESET -- NES 70
NSE 1 - GND -- LED-----|3 6|-<---/DATAIN -- NES 34
NES 1 - GND -----------|4 5|->--/DATAOut -- NES 35
+5V, GND, and reset should connect to cart
the diagram has the accompanying text:
On a front-loader, pins 01-36 are the top side of the connector.
Pins 36-01 are on the label side of the cartridge, left to right.
I imagined holding the cartridge, label side up about to slide it
into the NES-001 and put pin 36 as the left most pin on the top
counting down to pin 1. Unfortunately it was not obvious to me
that the description meant you should be holding the cartridge like
you are reading the label, not like you are about to place it into
I got the first board, version 1.3.1f, and soldered and resoldered
and resoldered the connectors and couldn't seem to make it work
(because the pins were reversed). I programed and reprogrammed and
programmed again the Attiny13A. After a month of fiddling, and
continuity testing every pin, I got the bright idea that maybe I
had the pins swapped. I got my nintendo screwdriver, cracked open a
cartridge and read the numbering off the PCB board, and confirmed my
suspicion. I had reversed the numbering from left to right.
I had planned the boards prior to ordering any parts, so I
referenced an IDE ribbon cable I had lying around. I noticed
the bump was on the same side of both connectors and concluded
that the cable was straight through. The ribbon cable comes out
the back of the first PCB, goes behind the second PCB, wraps
around it and plugs in on the far side. I had convinced myself
that because the ribbon cable wraps a round, that the top and
bottom are inverted. While this is strictly speaking true,
it means the bump, and ordering of the rows, will be the same
and not inverted as I had planned. Some how I missed the fact
that a straight through IDE ribbon cable does have a bump on the
same side, but when you fold it over into a U shape, the bumps
are oppsite of each other.
So not only did I get the connector inverted left to right, but I
also flipped the top and bottom row. That meant I could test the
board facing the NES mainboard by plugging it in upside down.
Sure enough the the board worked and the CIC made its hand shake and
I got a solid red light on the console.
There was another issue, while the board certainly wouldn't fit
inverted, it also wouldn't fit in the correct orientation.
While I had printed on card stock and ensured it would fit in the
available space, I never though to try and put the EMF shield on,
and sure enough that was hitting the top left corner of the board
facing the NES mainboard.
So I regrouped, made a new set of boards V2 with the pins in the
right place. I changed the ordering of the pins on the 72 pin
edge connector in my Eagle CAD library, and applied the updated
part to the circuit. The traces were a jumble, so I deleted all
those traces and redrew them.
Finally I got this board fabrcated,
and installed and the 10NES CIC made its handshake, but all I got
was a green screen, like it was not seeing the cartridge at all.
After continuity testing, I still could not figure out the issue.
I was beginning to feel defeated, then I compared my circuit to
the Blinking Light Win. One of the things I did differently was
to tie pin 1 and pin 72 together since they were both ground. I
grabbed a dental pict and vigorously scratched a groove
separating pin 1 and 72 on both PCBs, and with that simple
modification it worked.
Unfortunately the jumper block for the expansion port plug
board had one row that was hitting a post that holds the NES
mainboard. Since this pin is unused, it didn't matter that
the jumper pin was bent and the jumper clip ripped off. I
made two simple changes in version 3, relocating the expansion
port jumper block,and separating pins 1 and 72.
I used version 2 for quite a while. The only issue was there
was not enough clearance to push down the Everdrive Pro
cartridge without momentarily catching on the reset button
and/or the micro SD card that stick out an extra 1 mm.
So when I finally got around to ordering the new board in
order to make a connector for a friend, I, yet again,
redesigned the bracket changing the uprights to be 1 mm
thinner and to have a 6 degree slant.
So you want to play your NES on a modern high definition television?
That is a bit of a complicated proposition. The NES outputs NTSC
240p composite video. If your TV has a composite video in, then
this is likely mistakenly interpreted as 480i, as a result you get a
nice clear image when things are not moving, but when things move,
you get the scan lines of the even frame interlaced with scan lines
of the odd frame, causing a jagged edge. Literally every other line
is one frame behind. RetroRGB has a nice write up on this problem at:
If you are looking for an inside the console solution, then Kevtris
Hi-Def NES is probably what you want:
It has a hi-def daughter board that fits under the RF module in the
front loader NES-001, that connects via two ribbon cables to the
shim PCB that sits between the PPU and GPU and the NES mainboard.
It adds an HDMI port just below the RF out port. It is priced at
just under $200. There are two draw backs to this solution, first
at the current time, it is sold out. Second, If you want to upscale
more than one game system, each system will need its own upscaler.
There is also an RGB version.
If you are looking for an external upscaler the RetroTINK-5X Pro is
an easy to use, FPGA based upscaler, that supports composite video,
component video, RGB, and s-video. It line doubles 240p with zero lag,
and can autodetect 240p and 480i, and also supports 288p/576i, 480p,
and chroma-limited 720p and 1080i. Simply set the input type
composite/componet/RGB/s-video/SCART and plug any game console in and
play. You can also resize, stretch or crop the video to fill an HD-TV,
as well as mask the unused screen (including over write pixels). There
are also some image finishing options, like simulating a CRT, or
interpolating and smoothing pixels. The RetroTINK-5x Pro is $300.
As a cheaper alternative the RetroTink-2x series will also work
(as long as they accept composite video in), but the hardware is not
FPGA based, and there is not likely to be future development of these
Other alternatives include RAD2x cables which are basically a purpose
built RetroTink-2x, just make sure it is the one with composite
The Open Source Scan Converter is a good option for zero lag line
doubling and upconversion, but it does not support composite video in,
and therefore not suitable for a stock US NES-001. While it does work
out of the box, it requires quite a lot of console specific tweaking to
look good for each particular system.