This is the original concept drawing of the PUCE PCB.
Amazingly, it's almost exactly the way it turned out, with two of the cartridge
connectors switched sides, for no apparent reason.
Home-brew Cart - UNROM?
The first exercise was to re-produce the Tennis Cartridge, simply two EPROMs
and no mapper circuitry (IIRC this is known as UNROM or Mapper #0?). The
purpose of this was a sanity-check to fall back on during our emulator development
and a sort of proof-of-concept that we knew a little about what we were attempting.
In any case, we needed to build a simple version of either side of the cartridge
because in our first prototype we weren't going to attempt to implement both
the CHR and PRG buses at once. In the end we built both sides, as you can
We had to modify the NES to run with our home-brew cart - a process which is quite simple and well-documented on the net.
As you can see, we got it up-and-running after a red-herring which appeared
at first to be a loose connection on the cart connector and ended up being
a loop-back trace on the original cartridge which we had inadvertantly omitted.
Here is Nintendo TENNIS running from our home-brew cart on the trusty and versatile Amiga 1084s monitor.
An FPGA design - UNROM
The next step was to produce an FPGA design to replace either half (the CHR/PRG
bus) of the NES Tennis cartridge. For this we used an Altera FPGA Evaluation
Board, conveniently equipped with some FLASH and 5V I/O. Not surprisingly,
emulation of an EPROM isn't particularly difficult - but we had to start
Shown here is the eval board and the CHR portion of the home-brew cart equipped with some SRAM for emulation of a UNROM cart.
We had Tennis running without too much drama, and decided to choose one other
simple Mapper, simply because Tennis did no bank-switching at all, and we
thought it prudent to emulate another mapper before moving onto PCB design.
Here is Shufflepuck Cafe
running, a UNROM cart, with a bank-switched
PRG ROM and some SRAM on the CHR bus. We ended up with corrupt graphics on
the background for this game, but given the dubious source of the SRAM we
used and the fact that another UNROM game, Prince of Persia
worked fine, we decided it wasn't worth persuing further for this exercise.
Although the NES is the most primitive of the consoles, it is unique in the
fact that the cartidge has two (2) separate buses. The trick will be in emulating
both buses in a single FPGA, or more precisely, with a single bus to the
FLASH and SRAM on the PUCE board. We are confident that the NES bus is slow
enough to allow us to multiplex both buses and latch the results in the FPGA
running at upwards of 33MHz in plenty of time for the NES. Time will tell!
PUCE Running - Blinking Lights!!!
Here is a bona-fide PUCE PCB running a simple 'production test' that blinks
the LEDs and outputs a 50-50 duty-cycle squarewave in ever-decreasing frequency
on each of the FPGA outputs. This simple image was used to test pretty much
the whole circuit, including the cartridge I/O pins, the address/data bus
to the Flash and SRAM, and the miscellaneous I/O, including the debug LEDs.
On the board shown, all but the SRAM and RS-232 level-converter has been loaded.
Here is a very small AVI
showing PUCE running the production test image.
Pictures coming soon!
Here is PUCE running Astroboy
, a Japanese NTSC LoROM cartridge after a PAL-fix and (IIRC) SLOWROM fix was applied.
The SNES has been mod'ed to negate the need for a CIC chip in the cartridge.
The SNES was the first platform we got running perfectly.
As you can see, the PUCE board sits quite nicely in the SNES console, without the need to remove the cover.
Here is PUCE running Charlie Blast's Territory, a 4MB PAL 7101 ROM-only cartridge.
The appendage you can see hanging off the front of the PUCE PCB is a real
7101 catridge with the CIC chip pins connected to the N64 cartidge edge connector.
This is currently required as we do not emulate the CIC chips. Hopefully
in the final version, this will not be required, unlike the current N64 'copiers'
which require boot carts.
Althought the N64 cover has been removed, this is not
really required - PUCE will sit nicely in the top of a console - however
it was easier to probe the pins and facilitate the boot chip wiring with
the cover removed.
This is Chris
- co-founding PUCE project member and reluctant Protel Guru!
He is seen here modelling the N64 cap - amazingly enough discovered in small
numbers in a local supermarket (of all places) not long after we started
on the PUCE project and now compulsory
attire whilst actively working
on the PUCE project. I think we bought the entire stock of them - which causes
me to wonder if the supermarket management desperately tried to find more
of these hot-selling items???
The PUCE Project Developer's Kit
Everything you need to work on the PUCE project!