During a hackthebox stego challenge I stumbled upon a nice tool called tapcleaner by bokvamme and luigidifraia.
I converted wav files to tap with wav2tap (c64tapedecode) but wasn’t able to load them. With tapcleaner it was possible to optimize the output in a way that the tap file was recognized by tapcleaner and I was able to extract the prg’s which contained the flag.
I’ve uploaded a new binary with 8kb more RAM (28kb in total) and cartridge multipart support.
To run multipart crt’s turn on “CRT with load address:yes” and load the lower part first.
Use the Tosec crt’s without the “[a]” in the name because we need the load address. Load the $4000 or $6000 part first and then the $A000 part. The $A000 crt will trigger a reset and starts the game.
Another update for the vic20. The 16K expansion can now be disabled and I added a 3K expansion. There’s no lock to prevent enabling both ram expansion but I think that doesn’t work (but I have no idea how the real hardware would have handled it).
At least unexpanded and 3K games seems to work now but I still see problems with some basic games. They just stop sometimes with a type mismatch or similar. Anyone has an idea what that could be?
Finally I got some issues ironed out and most games work fine. The port accepts prg uploads for expanded vics and rom cartridges with the auto start sequence. The often as .a0 seen roms needs to be renamed to .prg and the program type in the osd needs to be set to rom.
The vic20 has a 16kb ram expansion in block1 and block2.
Due to the different memory layouts between an unexpanded and an expanded vic currently only games for expanded vics will work. There’re still some glitches on some games but in general it works pretty well. Below some impressions of the core: