P.U.C.E. News Archives


  • Received a very kind donation to the project last week from Christopher Cox - a couple of complete NTSC NES systems and a handful of cartridges - for testing of PUCE on NTSC systems! Everything was purchased and delivered (half-way around the world no less!) at Christopher's expense - so a very very big thankyou to Christopher for your time, effort and (not least of all) expense!!!
  • I'm currently working on using USB as a faster and more reliable method of programming the flash which has, until now, been a bit of a problem and hampering development efforts (for example, we can only program the flash using my laptop and my cable atm!).
  • Chris is looking at SRAM save support for the SNES, based on the game E.V.O. IIRC.
  • Check out a couple of pictures of PUCE-SNES and PUCE-N64 running on the History page!
  • I'm currently re-visiting PUCE-NES - runs the PRG bus emulation OK but it seems like it's back to the drawing board if I'm going to get the interleaved CHR bus emulation working...
  • PUCE-N64 WORKING!!! Tonight I played Charlie Blast's Territory. I expected it to be a lot harder and a lot more frustrating than it turned out (but then again, it was simply a matter of implementing Valery's PVBackup Flash Cart).
  • I think I'll turn my attention back to the NES now - I at least want to get Tennis up and running flawlessly from SRAM so we can truly say that PUCE emulates cartridges from NES, SNES & N64!!!
  • I'll endeavour to borrow the digital camera from work and get piccies of PUCE running all 3 consoles over the weekend!
  • We obtained and loaded the 256Kx16 SRAM. Chris modified his flash programming software/firmware and tested 8 bits of the 16 - everything OK on both our boards! Chris will continue with SNES cart emulation (w/SRAM) and I might re-visit NES when the fancy takes me and see if I can get it running out of the 15ns SRAM.
  • N64: I hacked open a 7101 (=6102) cart and connected the CIC lines to the PUCE board. I programmed the flash with an image I hope uses the 7101 and then powered up PUCE with my N64 image that I worked on during the week. No surprise that it didn't work first go - but we are seeing a burst of read requests on the bus before everything dies (presumably the N64 is busy executing garbage). This means the console is booting past the CIC check - which we confirmed by removing the piggy-backed cart and didn't get any reads at all! So we progress...
  • Chris had a futher look at 'multi-booting' our EPC2 daughter board, but no luck as yet.
  • Tonight we managed to get the EPC2 daughter-board working. This board contains 2 configuration devices for the FPGA. What this means is that PUCE now 'remembers' what it has been programmed to do! So, for example, once it has been programmed as a SNES cartridge, you can unplug it all and simply plug it into a SNES (with its power supply) and you can start playing immediately! You could also have several EPC2 boards, one for each console, which simply plug into the PUCE board when switching between game consoles, eliminating the need to re-configure the FPGA. Chris will also be working on modifying the circuit so we can select between flash programming mode and cartridge emulation ('play') mode with the flick of a switch.
  • Chris & Amber have tested about 1/2 dozen SNES games during the week, including a HiROM game. So we have LoROM and HiROM support. Chris is working on SRAM support next - but we need to buy some SRAM. He'll also look at a mechanism to transfer the SRAM contents to/from a PC via the serial port.
  • During the week I started work on a utility to read information from ZIP archives of SNES ROMs. This will be integrated into our flash programmer so we can program directly from ZIP files, applying patches on-the-fly. Amber has been beefing up the flash programming software on the PC side of things.
  • I'm looking for a N64 ROM image that will allow me to boot with a 7101 (PAL 6102) CIC chip installed.
  • PUCE-SNES WORKING!!! Tonight we got PUCE running on the SNES, emulating a LowROM-only cartridge. For the record books, the first game we got running on PUCE was Rival Turf, followed soon after by Astroboy (for Karina).
  • Note: when MOD'ding the SNES, always check your de-solder work with a continuity test! :P
  • The LowROM-only cart emulation is quite straight-forward. Next is emulate some SRAM (2kB) and then look at HiROM and MAD-1 etc etc. This should be quite trivial. Then there's the issue of SlowROM checks and other copy protection mechanisms, including the lockout chip.
  • Chris is quite keen to continue work on the SNES. I might start looking at the N64 myself.
  • Hopefully some piccies on the history page soon!?!
  • Back to work - last night Chris & I met up and started work on PUCE for 2003.
  • While I've been slack over the last few months Chris has designed a PC parallel port interface for programming of the flash devices. This should give us some pretty reasonable transfer rates ie. fast flash programming time. The FPGA design is basically done - all we need to do is write the PC software end and debug the design. The next update to this page should be a working flash programmer design!

News Archives:



Two (2) boards have been assembled with 1x 4MB flash device each.

PUCE-NES is being re-visited now we have faster memory devices (SRAM).
PUCE-SNES is working for LoROM-only and HiROM-only games!
PUCE-N64 is working for 7101 (PAL) ROM-only games!
Optional EPC2 daughter-board now configures the FPGA.

Check out the HISTORY page!

Schematics (TBA)
PCB (as manufactured) (jpg)
Manufacturing pack (TBA)
PUCE software (TBA)

What is P.U.C.E?

P.U.C.E. stands for "Programmable Universal Cartridge Emulator".

PUCE is a device that will ultimately be capable of emulating the cartridge of any of the cartridge-based gaming consoles. Obviously it is programmable, allowing hobbyist developers to develop games (and any other software) and have them run on an actual console, rather than be confined to PC-based emulators, for example.

The first prototype will be designed to connect directly to the classic Nintendo consoles, namely the NES, SNES and N64. In order to expediate prototype development this prototype has dedicated edge-connectors for each of these consoles. There is no reason why later development for other consoles cannot be undertaken with this prototype given the appropriate cartridge connector adaptor. But the focus for the first prototype is the classic Nintendo platforms.

How will it be used?

The PUCE device will have a different 'personality' for each of the consoles for which it supports. This 'personality' is simply the FPGA device software that allows the device to emulate the cartridge for that system.

PUCE is designed to be programmed via the PC. The developer downloads the PUCE 'personality' together with their console software to PUCE and then plugs the PUCE device into the console as per a normal cartridge. Device options currently under consideration include having non-volatile storage on-board, allowing PUCE to be programmed once and then used as a normal cartidge would be used - with the ability to unplug the device and even transport it to a friend's place to play in their console without the need to re-program.

The PUCE programming software will be developed and distributed as part of the PUCE project. Options for this software include 'multi-cart' capability - allowing the developer to download a number of programs to the cartridge simultaneously.


Prototype #1

The first prototype for PUCE was designed for maximum flexibility and ease (speed) of development, without the need for special wiring harnesses or adapters. The prototype will require an external power source and may require the console case to be dismantled (for the NES at least).
  • Up to 64MB of flash ROM
  • Up to 512KB of static RAM (SRAM)
  • Powered externally via a DC plug-pack.
  • PUCE 'personality' downloaded via PC parallel port into volatile FPGA device memory (ie. you will not be able to power-off PUCE without the need to re-program). However, the design will support an optional daughter-board to provide non-volatile storage for the FPGA device memory.
  • The ability to dump NES, SNES and possibly N64 cartridges to the PC, with the addition of special cables.
  • Pass-thru connectors for SNES DSP cartridge pins.
  • Direct plug-in support for the NES, SNES and N64 consoles.

Prototype #2

  • In the next prototype we may consider the addition of SDRAM, at the expense of flash. This would imply the loss of true portability, and require an almost permanent 'tether' to the PC for programming of the PUCE 'personality' and console software. The advantage is a lower cost to assemble.
  • A single console connector with adapter daughter-boards for each of the consoles. Most likely the on-board connector may be a NES edge-connector, given the physical constraints for a programmable NES cartridge. Fortunately, the NES cartridge connector has the most number of pins of any of the Nintendo consoles.
  • A physical form-factor enabling installation in a (hacked) NES cartidge case - allowing PUCE to be used in any of the consoles without the need to open the case.

Future Developments

Contact: msmcdoug@optushome.com.au