Commodore Plus/4 Ports of C64 Games

Some time ago I remembered that when I was a kid I felt it to be unjust that there were so many games for the C64, but not nearly as many for the (my) Commodore Plus/4. Now, being a senior software engineer, I finally am in the position to do something against that and thus decided to port some C64 games to the Plus/4. Better late than never.

Centripod (GB64 entry)

This is the very first C64 game that fell into my virtual hands when looking for a game to port. It is a Centipede clone. The sound support is very weak, but otherwise the game works just as well as it does on the 64.

The Plus/4 binary: centripod-plus4.prg
The commented Plus/4 source code: centripod-plus4.s
The uncommented but labeled disassembly of the C64 original: centripod-c64.s

Attack of the Mutant Camels (GB64 entry; I swear that up to the point that I added this link I did not notice that this is another Centipede clone…)

Since most of the disk-based C64 games floating around are self-extracting and thus not easy to analyze in bulk (I was looking for a game that does not touch the VIC-II sprite registers…), I turned to cartridge dumps next. AMC seems to be the only cart-based game that does not use sprites. This game's Plus/4 port is silent. If somebody wants to make a version for Plus/4s with a SID expansion, go ahead. All the sound code is still in the source, it's just commented out.

The Plus/4 binary: amc-plus4.prg
The commented Plus/4 source code: amc-plus4.s
The uncommented but labeled disassembly of the C64 original: amc-c64.s

Boeing 727 Simulator (GB64 entry)

I used to play this game a lot on my uncle's C64 back then. It is written in plain Commodore BASIC, and it seems that it was originally written for the PET. The crash sound and visual effects have not been ported to the C64 at all and do not do anything visible or audible, and neither does a hunk of machine code called a few times. I have fixed the visual effect, but did not bother to emulate the PET beeper. The main problem with this port was getting rid of the layers of pesky self-extractors. To this end I used Martin Korth's no$c64 debugging emulator. Unfortunately, it does not allow dumping binary blobs of memory, so I had to write a Python script converting the human-readable “disassembly” of the BASIC memory to a PRG file. The other problem was the erratic behavior of the BASIC 3.5 PRINT command which makes no sense at all and necessitated a number of changes to the screen layout code. The conversion of the game from C64 to Plus/4 format and the changes to the code were made in actual real-life Commodore BASIC running in YAPE. Boy, did we have to put up with some crappy tools back then…

It is possible that this game has been ported before, possibly even by the original author. Plus/4 World has an entry for it, but there is no actual information or download.

The C64 version: 727c64.prg
The Plus/4 conversion: 727plus4.prg

Tools used

  • Marko Mäkelä's tracing 6502 disassembler da 0.2.1 is what made the Centripod and AMC ports possible in the first place. There is another clever disassembler called recomment, but I was already past the disassembling stage when I learned of it. Both are available here.
  • The xa 6502 cross-assembler, originally written by André Fachat, now maintained by Cameron Kaiser, was used to re-assemble the ported disassembly of Centripod and AMC.
  • The VICE Plus/4 and C64 emulators were used for testing Centripod and AMC.
  • no$c64 was used for extracting the Boeing 727 Simulator BASIC code.
  • YAPE was used for converting Boeing 727 Simulator to the Plus/4.
  • dis2prg is a small Python script written by myself converting disassembies produced by no$c64 to PRG files.


The C16/Plus 4 Reference Book by Anco Software (an English translation of Fritz Schäfer's Das grosse C-16 Buch) provided a wealth of Plus/4 programming information, in particular an extremely helpful C16/C64 comparison table. Martin Korth's Pagezero Commodore Specifications provided the rest, plus the information necessary for understanding the original C64 code. Janne Peräaho's BASIC 3.5 manual helped to remind me how certain Plus/4 BASIC commands worked.