Posted December 11, 2021 by 8bitsten
I set myself a naive goal - to develop a game for VIC-20 and port it to at least one other (similar) system, all starting with zero knowledge.
I began this by reading and trying to understand the basics of this 8-bit beast produced by Commodore between the years 1981 and 1985.
VIC-20 is based on the famous MOS 6502 CPU and is equipped with only a few kilobytes of RAM:
The available memory can be extended by RAM cartridges - the 6502 CPU can address up to 64 kB of memory but has only 25kB RAM and ROM combined. However developing a game, which requires a memory expansion cartridge is probably not a good idea since it will limit the user base only to those who own the cartridge.
To overcome memory limitation games were (still are!) distributed mainly on cartridges similar to games on Atari 2600 or NES. On the cartridge, the game is burned on a ROM chip, which can have a larger capacity than the VIC-20 built-in static RAM. It expands the small amount of memory available for the program up to 16kB (or it might be even more - again I do not know that yet), so there is enough space for the game code.
For comparison games that are loaded from cassette or floppy disks have to work not only with less memory but also their initial loading time to memory is much much longer (minutes).
In short, my conclusion is that the cartridge is the correct way to distribute my game on VIC-20 - it not only provides more memory but also instant start time. And its use promises more fun for me because I have no idea how it works and how to put the game on it.
Overall, the VIC-20 machine seems to be a nice playground for learning how to develop some small runner/platform type of game and get a bit skilled in 6502 assembler since the use of the BASIC, which is "native" language distributed in ROM is not only slow (even for programming on much better hardware) but also not usable due to memory restrictions.
At the current moment, I have a vague awareness of not only how to use an assembler, but also how to work the VIC-20 hardware, and even the "Hello world" example seems to be far over the horizon.
But one must start somewhere and have some dreams.
The actual plan is: