famicom cartridge bus simulator 'kazzo'


Although there are already various Famicom cartridge dumping hardware available, each have their own design flaws.

  • First, many have to rely on legacy interfaces no longer supported on today's PC architectures.
  • Second, they're only designed merely for dumping, with less regard for quick programming development purposes.

We developed a "flash memory cartridge" in the beginning of 2009 for starters, but these solutions often require complex machinery to program. Therefore, we designed 'kazzo' as an easy solution for programming.

We created 'kazzo' with the following design goals in mind:

  • Easy control of the programming / dumping features.
  • Uses USB, a universal standard found in every PC manufactured today.
  • Composed with common off-the-shelf parts using the fewest amount as possible, therefore simplifying the design and keeping the overall price as affordable as possible.

flash memory cartridge

Once an existing game cartridge has been retrofitted with flash memory into a "flash memory cartridge":

  • Using a ROM progammer becomes unnecessary.
  • The cartridge can interface with kazzo, which transfers/programs ROM image into the flash memory chips.
  • Reading/Dumping is same behavior as it is with a normal ROM cartridge.
  • There are no switches nor IC sockets needed.
  • The original case can be re-used with no modification once the board itself is retrofitted.

Flash memory cartridge works on Famicom/NES hardware. Even with emulators becoming more accurate as ever, it's never a complete replacement for testing with real hardware. Therefore this can be used as a powerful development/debugging tool for testing your Famicom/NES programs on the real thing.

Supported Functions

fully support

  • USB 1.1 communication
  • ROM cartridge bus simulation
    • ROM dumping
    • flash memory erasing/programming
    • auto-detection of VRAM mirroring
    • auto detection of character (CHR) memory types

typically support

  • ROM cartridge bus simulation
    • CPU region's work-RAM access (MMC5 W-RAM is not supported)

currently unsupported

  • disk drive access



List of Parts

#    |name
U1   |ATmega164P or ATmega16
U2   |74HC574
CN1  |type B female USB socket
CN2  |3x2 pin header, 2.54 mm spacing
CN3  |30x2 pin cardedge connecter, 2.54 mm spacing
R1,R2|68 ohm register
R3   |1.5 kohm register
R4   |30 kohm register
D1,D2|3.6 V zener diode
X1   |16.0 MHz ceramic resonator
C1,C2|0.1uF ceramic capacitor
CP1  |10uF electric capacitor
JP1  |toggle switch
JP2  |push switch



Pin assignments

See the readme.txt documentation which is included in the kazzo firmware package.


Distribution Package

The following are included in the distribution package.

  • firmware image hex file
  • Schematics, Pin assignments and List of Parts
  • Source code for firmware
  • USB Driver for Windows

download -> kazzo.0.1.2.zip

About USB

  • Firmware uses V-USB's standard licence.
  • Firmware uses V-USB's shared Vender ID and Device ID.
  • libusb-Win32 is used for kazzo's Windows driver.

The software interface of 'kazzo' uses V-USB, an extremely powerful library responsible for simplifying our hardware design into a mere few off-the-shelf parts, therefore keeping the price of the hardware as affordable as possible.




unagi 0.6.x is meant to support kazzo with exsiting functions and scripts. unagi 0.6.x supports Parallel Port based Readers.


'anago' is a special version of 'unagi', with added experimental functions. anago supports 'kazzo' only, but also supports parallel programming with Squirrel.