Last year, I re-discovered a Pac-Man clone I wrote way back in 1984 for the Commodore VIC 20.  A month later, I enhanced the game, yet kept it within the memory constraints of a stock VIC 20 — quite the personal accomplishment and it received a few unexpected accolades afterward.

This past year, I moved on to other VIC 20 related projects, including a slick software sprite library and a sequel to Omega Race that implemented the new graphics handler.  This past week, I returned to Quikman to retro-fit it with the improved video… and a few more features.

screenshotThe result is Quikman+ requiring an additional 8k of memory expansion, mainly due to the software sprite’s requirement to double-buffer the video display.  For those not familiar with the term “k”, it was short for “kilobyte” which is 1,024 bytes.  Yes, read that again — a thousand bytes, not millions as in megabytes and certainly not billions as in gigabytes.  So, eight of those are an additional 8,192 bytes over the 3,584 bytes available in a stock VIC 20.  In 8-bit computing, that is a sizeable amount to do some nifty programming.  You can appreciate these meager numbers more if you compare it to a simple Windows cursor file in C:\Windows\Cursors — some of those simplest of icons would challenge the VIC 20′s ability to load it into memory!

With the double-buffering in place, the game play is smoother because of the flicker-free animation.  But the expanded address space allowed the game’s core to be expanded to include:

  • an opening splash screen (top)
  • a gaming options menu (left)
  • one or two player mode
  • choice of arcade maze run: original Pac-Man or progression through the four Ms. Pac-Man mazes (sample of the first one below)
  • starting fruit level
  • pressing the STOP key aborts the current game in progress; at the menu, it returns the machine back to BASIC
1st new level

1st new level

A bonus feature was the inclusion of auto-detection code for the presence of a Mega-Cart.  If this cartridge is plugged in, the game’s high score will be saved to its NVRAM, allowing its persistence to be retrieved by future games to try to beat.  Cool!