There are lots of things in the VIC20 Penultimate Cartridge. The current release, the +3 DCR has 271 things.
- Total items (271)
- Games (233)
- Utilities (11)
- Development (8)
- Adventure Games (8)
- Board Games (5)
- Paddle Games (6)
That lot should keep you entertained for a while.
For example, if you were to play one game a minute, it would take you over 4 hours to get through them all (hold that thought).
I don't think many people have played them all.
I have.
Several times.
Release Testing
Well, when I say "played", maybe not all the way through. But I have at least started them and played them all for a bit.
That is something I do prior to the release of every version of the cartridge. I print out the big list of games, and then pick a couple of random VIC20s from my collection.
I would say these were carefully, scientifically chosen, but normally it is the first two I find that work, although when I have more time, I pick two broken ones and fix those to give a more representative approach.
One needs to be PAL, one NTSC, and ideally one an older 2 pin, and one a later CR version to give a bit of variety.
I go through each game in turn, start it up, make sure it works. Anything which has recently been added or moved or fixed gets more attention. Previously known problems usually get additional scrutiny as well.
Space is tight in the cartridge and things get removed or compressed and that leaves gaps. The cartridge is organised in 32K blocks, and I try to make sure that each 32K block is full. When gaps are created, I end up doing a sort of manual defragmentation trying to shuffle things around to fill all that gaps. That leaves things that used to be in one place now being elsewhere, so I need to make sure the menu has been correctly updated to the new locations.
During a previous round of testing I had considered trying to automate the testing.
There is a feature that could help with that.
Rod's Random ROM Runner
When activated, this will launch a random game, in this case Froggie.
That will start, and you can enjoy a bit of Hopper / Frogger action.
Once you have activated that mode, the right hand button on the cartridge lights up blue, rather than red as usual.
When it is red, it will reset the VIC, or restart the last game, depending on what you are doing.
When it is blue, pressing it will start a new randomly selected game.
We got "A Country Garden" this time, one of the Centipede clones.
And so on. Play each game for as long as you want, and when you want the next one, press the blue button and you will get a new game (well, there is a 0.5% chance you will get the same game again as it is random).
This is from the "Games" list above. 233 titles in total, although if you have a PAL machine, you will only see 224 of those which can run on your VIC20 (excluding ones that are NTSC only and do not fit on the screen and cannot be adjusted).
NTSC has 190 in total, excluding the ones that do not fit on the screen and cannot be adjusted.
There are fewer NTSC games as the NTSC screen is smaller, and some of the PAL cassette games try to expand the screen as much as they can, and so do not fit on NTSC.
As with the NTSC to PAL conversions, I have patched as many as I can without affecting the games.
The paddle games, adventure games and board games do not appear in this list, nor do utilities, programming tools etc.
Boot to Random Game
The cartridge can also be set to start in this mode by going to the settings menu and selecting "Boot to Random Game"
That is quite a nice way to leave it, every time you switch on, you get a random game to try that you might not have seen before.
At any point, you can press the left hand "Menu" button to get back to the main menu and do what you intended to do, or press the right hand "Random Game" button to try a few more.
AI Game Selector
In one of the recent releases, I did consider changing the title to "AI Game Selector". Using "AI" (in the form of a pseudo-random number generator) to allegedly select the perfect game for you. In the end, I thought better of it in case anyone took it seriously. I would rather not have anything to do with the plague of nonsense currently sweeping the world, poorly trained large language models under the guise of "AI" - the sooner that particular bubble bursts, the better.
Artificial Intelligence is a contradiction in terms.
(to misquote Grouch Marx, who was talking about the similarly oxymoronic military intelligence)
Why are you telling me this?
Oh yes, now, where was I. Ah yes, the prologue.
I was considering automatic the testing. I thought I could setup some hardware to "press" the random game button on the cartridge and then press some keys or wiggle the joystick.
My plan was I could record a couple of hours of that via video capture and then skip through the recording looking for anything untoward.
In the end I concluded that it would be quicker to just get on with it and test all the games as normal, rather than distracting myself setting all that up.
Spoil sport.
A couple of days ago, and Rod suggested something along the same lines, although his version would be simpler to setup as he would be doing the keyboard bashing and joystick waggling, and already had the video capture gear setup.
All it needed with the "press the blue button" bit.
Pressing the blue button
I had a few plans in mind to automatically press that button. I needed a short pulse to press that, then a delay, then another short pulse etc. 1 second on, 59 seconds off seemed a good option.
My scope does have a function generator, and I thought that might be an easy way to do it, but when I tried, it only goes up to 10 seconds, which isn't quite long enough.
I spent far too long today searching around the house for a suitably powerful solenoid or some kind of stepper motor that could be adapted to mechanically press the button. I wasn't going to use it, I just thought it would be good to put some pictures of it here.
I was surprisingly restrained and managed to stop myself ordering a robot arm kit from Amazon.
Or building my own version, courtesy of one of those wonderful 80s Usborne books.
In the end, the easiest option to get something running for Rod was to use an Arduino.
Rod wired this up to his test board.
The buttons on the cartridge are a pretty standard arrangement, one side of the switch is ground, the other is connected to 5V via a pullup resistor. Normally, it reads high, but when the button is pressed, it reads low.
I wrote a simple bit of code which setup one pin as a low output for a second, then turned it to an input for 59 seconds, then back to a low output again for another second and so on.
That is safer than setting it permanently as an output and changing it between high and low, as it only ever drives low, so you can still safely press the button, wire it the wrong way around, or ham-fistedly short the wires together etc.
That worked first time and Rod went straight into an hour long video, playing 60 games for 59 seconds each.
That went down so well, there is now a second hour of games coming soon.
With no repeats, and 60 games per video, it would take four videos to cover all the main games (excluding paddle, adventure, board games etc). With the occasional repeat, it would likely need a fifth.
I wonder who is going to keep count to see if they are all being done.
Who am I kidding. It's me, isn't it. I'm the ones who is going to have to go through the videos and check all the games off the big list aren't I. Oh great.
Adverts
The AI-free 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.