Sunday, 7 December 2025

Can I Add Games to the Penultimate Cartridge?

Robin from 8-bit Show and Tell recently posted a great review of the Penultimate +3 DCR cartridge (link at the end of the post).

In the comments of that video, and support emails, we were asked various questions around the same theme, so I thought I should explain that in more detail.

"Can I Add Games to the Penultimate Cartridge?"

That is a common question we were asked right from the start, when the answer was "NO". However, since that was something people clearly wanted, we made the +3 so you could.

The answer is now "YES", sort of.

TLDR; Yes, put them into a folder called "PU" on the SD card and press the "F" key on the menu.

The Obligatory Waffly History Section

The original Penultimate Cartridge contained only ROM images. Games that were originally on cartridges.

When it came to adding more games, the ones we had from the TFW8b catalogue, games by Misfit and Hewco (and me), those were mostly PRG files, games designed to load from tape or disk.

To get around that, I started to convert those to cartridges. Early examples like SpaceShip-1 by 8-bit Jim, I was able to modify the source to added suitable cartridge initialisation routines and convert them into cartridge games.

That took a bit of work, and was only an option where the authors were prepared to hand over the source to be refactored.

I decided to try a different approach, and stored the PRG file binary inside the cartridge image. I then had a routine which would copy the code form ROM (usually $A000 upwards) into RAM (usually $0400, $1000 or $1200 depending on memory configuration). Once copied, I could then run the code as if it had just been loaded.

That worked very well for games less then 8K. I did a few that were larger, but it got complicated as the game code would be split between the 7.5K available at $A000 (discounting the ROM header, initialisation and copy routines), and extra ROM space in $6000.

I was starting to add more and more games like that. Many of which were cassette games for the unexpanded VIC, which were often multi-part loaders, so I would copy the first part from the ROM cartridge and run it. 

The code in the first part would setup graphics or print a title screen or instructions, and would then load the next part. I changed that code to jump back into the ROM, to copy the next part into RAM and run that, and so on until the actual game was loaded and running.

Penultimate +2

For the Penultimate +2, I realised there were an increasing amount of those, and decided to rearrange things. The initialisation and copy routines were reloacated into the Penultimate menu ROM (rather than having a copy for each ROM). The PRG binaries could then be placed in the ROM at any point and loaded as before (rather than being in partly filled 8K blocks).

This opened up a whole lot more space, but also left me with the task of manually defragmenting the cartridge for every release. The ROM is arranged as 32K blocks, each of which contains a combination of ROM images and PRG files, carefully chosen to exactly fill the space (to the nearest 256 byte block).

The Penultimate now contains cartridge ROMs and PRG files in ROM. These are the games which are on the A-Z game menu.

These are programmed into the ROM chips on the board and cannot be changed as the names and locations are hard coded into the menu program.

So how do you add games?

Well, the Penultimate +2 has a file browser, this allows you to browse files on real disk drives or SD2IEC type devices and load them. An easy way to scroll through files into directories and disk images.

Games load from there at normal Commodore IEC serial disk drive speeds, which are unfortunately, glacial.

For the Penultimate +3, not only did we add an integrated SD2IEC disk drive, we added a turbo loader, so games were now taking seconds to load rather than minutes.

The loader is intelligent, so it will attempt to detect the amount of RAM required and load to the appropriate address. That makes it a lot easier to load things into the VIC 20 without having to remember if this is an unexpanded game, or was it a 3K game etc.

The auto-detect mechanism is based on the load address in the first two bytes of the file. It will load with 0K if the address is $1001, with +3K if the load address is $0401, and with +35K if it is $1201 (I don't think any games designed for 8K+ complain if you have the full 35K of RAM). You can override this if you have a game where the load address in the file is set incorrectly.

The speed of loading is not far off that of loading from the ROM, so if you copy the games you want to add to the cartridge to an SD card, you can load them almost as fast as if there were in the ROM, with the advantage that you can add and remove and change the files as often as you want.

File Favourites

As well as the file browser, there is the file favourites menu.

This will browse directly to a folder named PU in the root of the SD card and list any games in there.

That means you can put your most run games into that one list to make it even faster.

You can press F to go direct to the File Favourites, or B to go direct to the File Browser.

I hope that answers the questions.

No, you cannot alter the list of ROMs in the A-Z list as those are burned into the EPROMs.

Yes, you can add your own games for turbo loading from the SD card.

A few related notes

Since we are here, I should also add that you cannot load TAP files. In the same was you cannot load TAP files from a 1541 disk drive. In some cases, the TAP image contains a single PRG file which you can extract and load. Where it contains multipe parts, that will require conversion, I have written many posts on various multi-part game conversions.

You cannot load cartridge ROM images directly (even if they do get confusingly renamed PRG on some download sites), again the same as with a 1541. However, you can load ROMs placed in a D64 image with an appropriate loader program).

The question of "can I make it boot to ..." also occasionally comes up. There is a list of options in the settings menu (press S for Settings)

One option on there if you can't find what you want it "boot to boot". This will boot or a program called "BOOT" in the root directory of the SD card, you can then make that load what you want or setup your system as you like (such as loading a different file browser or your favourite debug or development environments, or loading your favourite game from disk)

I hope that answers those questions, if you have any more, please ask, but first check this post which covers the PU+3 DCR in excessive detail:

And Robin's excellent video:


Adverts

The Penultimate +3 DCR is available from TFW8b.com


Lots of other things are available from my Tindie Store.


Patreon

You can support me via Patreon, and get access to advance previews of development logs on new projects like the Mini PET II and Mini VIC and other behind the scenes updates. New releases like this will be notified to Patreon first, if you want to be sure to get the latest things. This also includes access to my Patreon only Discord server for even more regular updates.