July 29, 2026
Lately Commodore has been monopolizing bench time, and you may recall that we recently restored a Commodore 64C. If you didn't get a chance to see that series you can catch up here.
Now that we have a working C64 it's time to look into what addons and peripherals we can find for it. I love the Commodore community because it's a highly engaged group of people who even today are developing new software and hardware for these old machines. There is no shortage of custom multi-cart and disk loader solutions available for the Commodore and when reviewing them the one that stuck out for me was the Kung Fu Flash 2 which Kim Jorgensen has designed and open sourced. The project pops up on GitHub, but the newest updates are hosted on Codeberg.
So what were the features that attracted me to the Kung Fu Flash 2?
It has support for a wide range of file types, it does REU emulation and can support specialty cartridges like Epyx Fast Load and Super Snapshot v5. The solution is not a cycle exact replacement for the Commodore disk drive, and it doesn't support disk swapping for multi-disk programs but it was a great fit for what I was looking for.
There are is some fine pitch soldering needed to assemble the board including a STM32H7B0VBT6 Arm microcontroller, and also some 0603 SMD components but with some patience good results can be achieved.
For the PCB I chose black solder mask to give it some personality. Hard gold is arguably the most reliable finish for the card edge connection, but it's quite expensive. For me the Kung Fu Flash 2 will likely mostly stay installed in the system and won't be subjected to lots of insertion cycles so I went with an ENIG finish to promote easier soldering of the fine pitch components while also benefitting from the corrosion resistance of ENIG for the additional boards that would sit in inventory. If you decide to order some boards I do recommend requesting a tapered edge for the card edge connector to make insertion less stressful on the port.
When assembling these boards I like to start with the microcontroller first and then work my way outwards from the centre to limit the times I'm reaching over already soldered components.
For me the microcontroller is the most challenging component and it was also the most expensive so I decided to start with it. Had I messed it up at least I wouldn't already have the board populated with a bunch of other components in case I had to switch to a fresh board.
Make sure you get the chip placed in the correct orientation before starting to solder and as you've probably heard many people say before, use flux!
One of the tools I find helpful when populating boards is an interactive bill of materials HTML page. These have popped up in several projects that I've downloaded, but unfortunately the Kung Fu Flash 2 didn't include such a file. The interactive BOM provides a parts list as well as a render of the PCB, and you're able to see component placement as well as track which components you've installed which can be very helpful in speeding up the assembly process.
Since an iBOM file wasn't included with this project, you can generate one if you have KiCad installed by adding the Interactive Html BOM plugin from openscopeproject on GitHub.
Once the plugin is installed you can open up the board files from the Kung Fu Flash 2 project, and from the Tools/External Plugins menu you can execute the BOM generation.
Using the Interactive HTML BOM Generation plugin
The Interactive HTML BOM file produced
After the PCB is fully assembled the next step is to flash the initial firmware to the microcontroller. Kim suggests using a ST-Link V2 programmer as the recommended method, but since I didn't have one I fell back to using the secondary method which is running dfu-util. There were a few steps needed to get this running properly on my Windows machine, but before transitioning to the software portion you need to jump BOOT0 and +3.3V on J1 to force the cartridge to come up in DFU mode.
Now for the software I needed two things:
dfu-util - Found on the releases page of the dfu-util site here
Zadig - A tool for swapping drivers on Windows, found here
With the BOOT0 and +3.3V jumper in place, connect the PCB to a computer via USB, and then run Zadig.
From the Options menu turn on 'List All Devices'
Drop down the list near the top of the window and search for DFU in FS Mode and select it. You will likely see that the Driver box references WinUSB. For the dfu-util to recognize the device it needs to be using the libusb driver, so change the box following the green arrow to select it and then you should be able to click the button below that box to replace or install the libusb driver. This can take a few moments.
Once the driver has been replaced, dfu-util should now be able to interact with the microcontroller on the Kung Fu Flash 2 PCB.
Drop to a prompt and go to the directory holding your extracted copy of dfu-util.exe. I like to copy the latest .upd firmware for the Kung Fu Flash 2 into the same directory as dfu-util, and then you can execute the following command to install the firmware:
.\dfu-util.exe -a 0 -s 0x08000000 -D KungFuFlash_v2.xx.upd
When dfu-util executes it will identify the device which you previously changed the driver for and it should begin erasing the flash and then uploading the new code.
Once the flashing is complete you can re-run Zadig, find the DFU device and swap the driver back to the original WinUSB driver if you like.
Disconnect the USB cable, and remember to remove the jumper installed between BOOT0 and +3.3V, then install the board into a case if you like.
The hard work is done all that remains is to grab a micro SD card, format it to FAT32, copy over your desired programs and then insert the card into the Kung Fu Flash 2 cartridge.
Plug the cartridge into the C64 and when you power up it should take you to a listing of the directories and programs on the micro SD. Cursor keys will move up and down as will a controller plugged in, Return executes the highlighted program and F1 will give you the built in Help information screen.
Subsequent firmware updates will be done by simply placing the .upd firmware update file on a micro SD card loaded into the cartridge and executing the update through the on-screen interface.
Listing showing the .upd files on the inserted micro SD card. The bottom of the screen shows the current firmware version.
Selecting an .upd file prompts for confirmation.
After the .upd is applied, the firmware version shown at the bottom of the screen will be updated.
Now you have an awesome cartridge that can run many different formats of files, while also having the ability to act as an REU, and all from open source!
Thanks to Kim Jorgensen for this great project!