Sunday 7 April 2024

VIC20 Penultimate +2 Cartridge V7.42

This was posted on Patreon a while ago, but has been held back, waiting for the official announcement and accompanying video (see end of post), the actual updated hardware and software started shipping several months ago.

The VIC20 Penultimate +2 Cartridge was launched last year and has been doing very well. This was quite a signification upgrade in terms of hardware and software to the previous Penultimate+ Cartridge.

Since launch, I have been building up a list of more things to add, and that is always a bit of a problem as adding new things means removing old ones.

The plan with the PU+2 (actually, let me stop here and interject. Back at the start of development, TFW8b kept referring to the Penultimate Cartridge as the PU. I was vehemently opposed to that, since it wasn't the PenUltimate cartridge, however that name just seems to have stuck and even now I find myself using it. Still hate myself for doing so though)

Anyway, the plan with the PU [sic] was always to keep refreshing things, adding more modern titles, and removing the less good of the older ones. Always tricky as people have favourites, and it is always the big 16K games that have supporters and only the tiny 2K titles that we can agree to get rid of.

I have been toying with an idea to squeeze more space out, so now is the time to give that a go.

Some historical background

The original VIC20 ROM/RAM cartridge I designed had only 8K banks, and DIP switches to select which of those was mapped into BLK5 on the VIC20. That limited the range to only 8K cartridges, but that included Avenger and Gorf and things like that, as well as the Diagnostics.

When I upgraded that, I moved to 16K banks. That allows 16K games like Dig Dug to be used. The 16K bank would consist of two 8K blocks, for example as one in BLK3, one in BLK5. This version also had 32K of RAM, so not quite the maximum, but enough for most things.

The first Penultimate Cartridge that was actually called a Penultimate Cartridge still retained 16K blocks, but added more ROMs and more RAM so that it could provide the maximum available 35K of RAM.

Not sure if I have mentioned this before, but there was brief dead end where I tried to integrate an IEEE-488 interface.

The idea being to combine that with a PET MicroSD to make an all in one cartridge.

It was a nice idea, but a bit pointless. It needs a ROM in block 5 to operate, so means you can't load anything into the block, so you can't load any cartridge images or 32K games. The non-cartridge VIC20 software is mostly small, so there is little advantage of the faster IEEE-488 interface. And like all the other disk interfaces for the cartridge port, it will never be 100% compatible as not all of the disk functions are vectored.

So that was abandoned and I went back to the V2.2 board as the basis for the first menu driven PU (sorry, I am just going to have to accept that name).

The was tidied up nicely to make the menu driven version of the Penultimate Cartridge.

Then TFW8b came along and invested a bucked load of money into an injection moulding tool to turn this into a proper product.

The case colour and label got better over time.

That was still using 16K banks, so 8K cartridges would mean wasting half the space, 4K cartridges wasted 12K of space. That was just the limitation of the way the banking and mapping into RAM was achieved. The idea was just to give a few games to test out the system.

For any of you that didn't see one of those, you may be surprised to see the menu was a lot more basic than the later versions.

The Penultimate+ Cartridge

The Penultimate+ Cartridge was a major reworking and allowed the wasted half of the 16K banks to be used. So two 8K cartridges could be fitted into a 16K bank.

To cope with the much larger ROM and all the extra games within, this was when the fancy graphical menu was added, thanks to help from Misfit.

This cartridge for the first time included 32K games, although still based on 16K blocks, so had loaders that loaded the game into RAM from two 16K ROM blocks.

There were also an increasing number of games converted from tape or disk games (or simply PRG files for modern games). At this stage, those were converted to cartridge images with loader routines to copy the PRG file into RAM and run it.

There were a few revisions of this along the way, removing old titles to replace them with new ones, but it continued like that for many years.

The Penultimate +2 Cartridge

The Penultimate +2 Cartridge was a big change. (the label artwork was later improved slightly)

Firstly, a second ROM chip was added, which doubled the storage capacity, but moreover the structure was changed. Thing were now arranged in 32K banks, so for the first time, a game like Cheese and Onion could be loaded directly from ROM in one go.

The PRG conversion were also integrated into the cartridge menu, so raw PRG files could be included in the ROM space rather than having to be encapsulated into a cartridge with a dedicated loader, taking up more space.

(the multipart games are still converted into cartridges as they all have different requirements and load mechanisms - see lots of previous blog posts about multipart game conversions).

The meant a 32K bank could contain a single 32K game, two 16K games, four 8K games, or four 4K cartridge games. It could not be eight 4K cartridge games as the ROMs always have to start at the bottom of the 8K boundary when they are mapped into the VIC20 address space.

That meant that between the ROMs there were spaces of various sizes, 4K, 12K, 20K, 28K etc. that could be used to fit PRG games in. This opened up a lot of possibilities and lots of Unexpanded VIC20 games are less than 4K (most use the full 0E blocks, 3584 bytes). Thus a whole load more titles could be added and the PU+2 gained a massive games list.

More titles then appeared, and we went through the usual process of trying to identify some titles to remove. We could agree on some things. Q*Bert is awful. We have two better versions of Q*Bert and that one is only there because it is actually what was released under that name. That and a few little 4K filler games we could have removed, but nothing to replace them with. All the larger games that were suggested for removal had one or other of the TFW8b team defending them.

Time for a change

This is where the Penultimate +2 V7.4x comes in.

With a major change to the firmware, and a minor change to the hardware, I refined the method of addressing the ROM contents. It is still in 32K banks, but the contents of this can now be addressed in 256 byte blocks.

Cartridge games still have to start on 8K boundaries, but the space after those can be packed tightly with no more than 256 bytes wasted between games. So far example, one 32K bank can now contain 9 unexpanded VIC PRG games. And all combinations within.

This meant an awful lot of work as each game had to be repositioned within the ROM and the menu updated to reflect this. Many of the previous simple cartridge conversions were replaced with the original PRG files, freeing up more space.

I was effectively defragmenting the Penultimate Cartridge. I had big lists of games and was shuffling thing around trying to completely fill each 32K chunk with exactly 128 x 256 byte blocks.

I was working in hexadecimal as that seemed easier, you may have heard me complaining at the time about that, trying to find lots of different ways to add up to $80 blocks.

At the end of the process, I had added all the new games we had found, plus several others, and had removed nothing. Not even Q*Bert.

TFW8b was running out of the original PU+2 boards, which can be identified by white LEDs in the "Rod's Random ROM Runner" mode. 

As soon as they ran out, the new board with the hardware and software changes started to ship. The new boards have blue LEDs as I originally intended, so they now match the label.

When the button is lit up red, pressing it will reset the VIC20 or restart the current game.

When the button is lit up blue, pressing it will start a random game.

New Games

As I was finishing off the final gaps in the ROM, I went back through some of the games I had previously tried to convert to cartridges, and managed to fight my way through five of them.

Four of those were added into the last of the space. The fifth will forever remain the lost game as 1) TFW8b hates it and 2) the conversion posts seem to get less and less interest the more I do, so I never wrote it up. (update - I did write it up - http://blog.tynemouthsoftware.co.uk/2024/02/converting-vic20-multi-part-games-vegas-jackpot.html)

There are two new games from Davide Bucci

Cavern Explorer (http://davbucci.chez-alice.fr/index.php?argument=varie/vic20cavernexp/vic20cavernexp.inc&language=English)

A nice falling / driving game trying to avoid obstacles and collect stuff.

And a Alien Invasion (http://davbucci.chez-alice.fr/index.php?argument=varie/vic20alieninv/vic20alieninv.inc)

A very playable space invaders.

There seems to have been some confusion over the name, AlienInv.prg, which was in a D64 image called Alien Invaders, which is what I called it on the menu, but the game itself has the title of Alien Invasion, so I will fix that in the next update. The original version will therefore instantly become a rare collectors item (available on ebay in a ziplock bag). Anyone with the "Alien Invaders" version will need to insure their cartridges for $1M.

There are four games from majikeyric (https://majikeyric.itch.io/)

This is a really interesting puzzle game where you move a robot around platforms using two magnets, one either side.

Spikes is one of those frustrating games you keep going back to.

You have to keep the ball bouncing without toughing any of the spikes.

Fall is one of a pair of two player games that you have to play both parts as a single player.

Two climbers are descending and you need to move them from one wall to another to avoid obstacles, but you have to deal with both at the same time, which requires quite a bit of multitasking and coordination.

Jump is the same sort of thing, but sideways.

This time you have two runners and you need to make them both jump over the obstacles.

The rest of the new games are old games from a bag of VIC20 tapes that Rod found in the bottom of Emu's cage.

Utilities and Development Tools

It is not just games. The utilities section has been expanded quite a bit. So much so, that I have split it into two parts, it is now Utilities and Development Tools.

The utilities menu is now less busy, more space to add things in future (any suggestions?)

I have added quite a few things to the development menu, and the extra space on the menu has let me show the appropriate SYS commands, to save to have to look those up.

Lots of new things here.

Programmers Aid has an unusual load address ($7000), so needed a special mode to have that and the maximum RAM.

I have added a version of VICMON that is active at the same time at $6000.

Super Expander also has a VICMON added, in case you want to disassemble your slightly wobbly circles.

Also new is wAx assembler that a few people recommended. (http://beigemaze.com/wax2)

Seems to have quite a lot of nice features:

So that is another one to explore.

And finally, Waterloo Structured BASIC.

This adds some things like procedures and loop structures to BASIC.


Where can I buy one?

Pleased you asked. You can order a PU+2 from The Future Was 8 bit :

https://tfw8b.com/product/vic20-penultimate-plus-two/

Oooh, have we got a video?

The updated cartridge is covered in another great video from Robin, 8 bit show and tell:


Patreon

You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here, and some of these posts contain bits from several Patreon posts. This also includes access to my Patreon only Discord server for even more regular updates.

https://www.patreon.com/tynemouthsoftware