A while back — following the repair of a C64 — I posted about testing the PLA replacement that I had used. In the great video on that topic shared by MindFlareRetro, Eslapion mentions two possible tests for a PLA replacement. One of these I covered in my post back then. The other test involves using a Super Zaxxon game cartridge.
Due to the unique way of bank switching implemented by that module, it seems to be particularly vulnerable to glitches produced by PLA replacements. Less-than-perfect replacements tend to produce crashes or skewed graphics when running that game.
I don’t own a Super Zaxxon cartridge and they seem to be hard to find these days. So I thought it might be fun to create my own replica. Doing the research for this project, I came across a post on the Lemon64 board. It turned out I was lucky: Siem Appelman had already examined the original module and documented the essential parts of the schematic. I contacted him and he was willing to share his findings, including his own design for a reduced version that would require a single memory chip, only.
I opted for a W27C512 EEPROM chip because I had plenty of them lying around and they seem to be the cheapest parallel PROM chips around these days. You can get them for less than 0.50€ each on eBay. With Siem’s simplified design, only the lower 32KiB are used and need to be programmed like this:
$0000 lower $1000 bytes (4KiB) mapped to $8000 $1000 lower $1000 bytes (4KiB) mapped to $9000 $2000 $2000 bytes, bank 0 (8KiB) mapped to $A000 $4000 lower $1000 bytes (4KiB) mapped to $8000 $5000 lower $1000 bytes (4KiB) mapped to $9000 $6000 $2000 bytes, bank 1 (8KiB) mapped to $A000
The game switches between the upper banks 0 and 1 by reading the contents of the lower memory either starting at $8000 or $9000.
After rounding out the schematics with general knowledge on C64 cartridges gained from Jani’s excellent post, I first wanted to create a prototype to ensure that the design would be working. For this, I tried to use my expansion port breakout board that I had created for the 74LS279 test circuit. But I soon realized that connecting all the data and address lines to the EPROM using jumper wires wasn’t only
a pain in the rather tedious but also very unstable.
So, I created a new revision of the breadboard adapter that allows for an optional 27C512 or 27C020 EPROM to be placed on the PCB and to be connected directly. Using this new board, I finally managed to create a working prototype!
Actually, the prototype turned out to be working too well. When I connected it to my C64 that is featuring the replacement PLA, I was a little disappointed that I still didn’t see any crashes or broken graphics. It remains to be examined whether this is due to the modified schematics or to an exceptionally well working PLA replacement, although I suspect the former.
I did a few more experiments and found that driving the CE/OE line with two diodes and a pull-up resistor instead of the two NAND gates would still work on an unmodified C64 but would crash when using an EPROM based PLA replacement.
Then I lost interest in the subject and instead decided to layout a nice PCB to turn my prototype into a fully functional Super Zaxxon replica. The layout of the components was quite easy but I turned it up a notch by branding the PCB with the Super Zaxxon logo. This time, I ordered the boards from PCBWay again and they did good job producing the somewhat unusual design at a very reasonable price. It would actually be a waste to hide the beauty in a cartridge case. Maybe a transparent one would do.
The BOM for this replica is quite short. Apart from the PCB and the optional DIP sockets there are only 4 different kinds of components:
|1||U2||74LS00 quad 2-input NAND gate||eBay|
|1||U3||74LS74 dual edge-triggered flip-flop||eBay|
|1||U4||W27C512 64k-8bit EEPROM||eBay|
All in all, this was again a fun project with many things to learn along the way.
More than a year has passed since I finished this project. Since then, I’ve been asked for help multiple times by people trying to reproduce the cartridge. Most are actually having trouble creating the ROM image and looking back, my notes on that part could have been more elaborate. So I though I might give some additional hints.
The starting point is the Super Zaxxon CRT file intended for the use with an emulator. This file actually consists of 3 separate ROM images: one 4k part and two 8k parts. The
cartconv tool can be used to display the details:
$ cartconv.exe -f Super_Zaxxon.crt CRT Version: 1.0 Name: superzax Hardware ID: 18 (Zaxxon) Mode: exrom: 0 game: 0 (16k Game) offset sig type bank start size chunklen $000040 CHIP ROM #000 $8000 $1000 $1010 $001050 CHIP ROM #000 $a000 $2000 $2010 $003060 CHIP ROM #001 $a000 $2000 $2010 total banks: 3 size: $005000
The same tool is used to extract the total 20k of raw binary data which must then be cut into those three separate files. These three files are then concatenated into the final BIN file for the EEPROM exactly as described above. (Yes, the 4k part has to be included four times.)
One more news I’d like to share on this topic: in the meantime, I found someone who created for me the perfect case for this cartridge. What do you think?