Für die deutsche Version bitte hier klicken Download Labyrinth for Commodore 64
Download instructions as text file

Hi there. As it seems, somewhere on the internet you stumbled upon an old C64 game that I wrote way back when? Oh well...

How it all started

A long long time ago, when dinosaurs still walked the Earth... I got my first own Home Computer, a Commodore 64. Ever since I saw the neat things that others could do with this device, I always dreamt about being able to write programs on my own. But back then, these were different times, and you could not simply surf the internet to gather information and tools. Programming books were expensive and usually covered only BASIC.

64er Magazine Luckily, one day a friend from school gave me two special editions of the German 64er Magazine, which contained a complete listing of all C64 Assembler commands, instructions how to use them, info about interrupts, ROM / RAM management, the SID audio chip and an address list of all Kernal Functions. With this knowledge and a little tool called 'SMON' (similar to MS-DOS 'DEBUG') I was finally able to code. I was so happy...

So I had this idea for a split-screen Pacman game, which I named "Labyrinth", and started programming full of enthusiasm. All the info I could gather from the Special Editions and what I found out by trial-and-error went into it, and of course lots and lots of time. Naive as I was, I did not know that there were tools like 'compilers' to which you could feed source code as plain text, that allowed you to give subroutines and jump addresses meaningful names, let alone add comments. 'SMON' only let you type pure Assembler commands directly into memory, and this was how I thought it had to be. So I did just that...

Back then, most hobby programmers used to send their works to computer magazines, where they were then published for other readers to enjoy. This was usually done by printing the code in rows of Hex values in the magazine, and readers had to first re-type it all (usually with the help of a special tool called 'MSE' that did CRC checking for each line) before they could play it. Therefore, I aimed for the final result to be as compact as possible.

In 1989, when I had finally finished my game, I sent it to a computer magazine (I can't quite remember which one it was), full of hope they would publish it like other games before. After all, most other games I had seen from hobby programmers over the years, that even won prizes, used only a 'mix' of BASIC and Assembler and didn't even manage to block the 'Break' key. Mine was pure Assembler, had split-screen scrolling and everything. Yes, I do admit that I somewhat felt proud of my feeble little creation...

However, only a few weeks later I got my disk back with a letter that basically told me 'they did not need it'. I was truly devastated, put the stupid game away and never touched it again.

End of the story? Well... many years later in 2016, when I rummaged through some old stuff, I came upon an old C64 disk. Now while I still had my beloved Commodore computer stored away in the cellar, the floppy drive had already died. But curious what would be on that disk, I had the idea to take it with me to the annual GamesCom in Cologne, where I knew there would be a Retro Game Area with many old game machines on display and ready-to-play, including C64 computers.

When nobody looked, I took my disk and inserted it into a floppy. And believe it or not, it was the one with my "Labyrinth" game on it, and all those fond memories started flooding back to me. To my surprise, Jakob Chen-Voos from the PROTOVISION Development Team had also spotted my doing and suggested I should try to simply release this game once more as 'Retro'.

Finding this idea quite interesting, I bought an old but still-working 1541 floppy drive on eBay, connected it to my PC with a XA1541 cable, copied my game over with a tool called 'PRGMover', added a link to an info page on the internet, and here we are.

So that's the backstory... if you haven't fallen asleep yet, let's get to the actual game. :)


In case you are interested, only a little more than the first 4000 byte of the game is code, the rest contains text to display, charsets, sprites, level data etc. In today's game world, I know this sounds ridiculously small...

Yes, this game feels a bit minimalistic, but please keep in mind that I expected it to be printed as Hex code in a computer magazine. That's why for example error messages are directly taken from the floppy instead of using my own text.

And just to mention it, in the year 2000 I also wrote a Pacman game for the SEGA Dreamcast VMU (Visual Memory Unit), incorporating many of the ideas I had for the C64 version, which can be found here:

http://www.deco.franken.de/myfiles/pacman.html

How to play

Labyrinth Gameplay In the main menu, first choose if you want a two player game (with split screen) or a one player game (top screen part only), and if the Ghosts should move slow or fast, then select 'Start Game' to begin.

Goal is to finish each level by eating all the pills.

Contact with the Ghosts costs a life. The longer it takes to finish a level, the more aggesssive will the Ghosts chase the Pacman.

As you might have guessed, Ghosts can be attacked when the Pacman eats a Ghost Pill. Ghosts will turn black and try to flee from the Pacman as long as this effect is active.

While you hold the 'Fire' button, the Pacman will move twice as fast, but this will also decrease the Turbo Counter. If the counter reaches zero, you can't accelerate anymore until it is re-filled by eating a Turbo Pill.

A list of all items, their value and function can be found below:

You also get an extra Pacman every 1000 points.

The Level Editor

Labyrinth Level Editor Originally I created this in-game editor just for me, to allow easier level creation, that's why it might at first appear somewhat difficult to understand. But what did I know about menu design anyway in this pre-Windows era? In the end I thought, "Hey, it does kinda work, so why not leave it in there?"

Choose the 'Editor' option to design your own Pacman levels. Then choose 'Load Level' to load a previously saved level for editing, or 'Edit New Level' to start from scratch.

When loading a level, first select the number of the saved level that you want to load. Moving the joystick left / right changes each digit, pressing the 'Fire' button switches to the next digit. When you are done the response from the floppy drive will be shown. If it says 'ok' then the level has been loaded successfully.

Editor Layout

The first row contains the default wall piece as well as all 'tube' wall pieces, horizontal, vertical, corners etc.

The second row is from left to right:

Third row is from left to right:

Barricades can only be passed in certain directions. These were intended for the Ghost House (to allow Ghosts to exit, but prevent the Pacman from entering), but let you also create one-way routes in levels.

The small arrows below the barricades show in which way they are passable.

Lets you create secret passageways (those pieces will look the exact same as normal wall pieces once the level is added to a game). Only the Pacman can pass these, the Ghosts can not (otherwise they might reveal the passage to the player).

This is a neat feature that really speeds up level building. When selected, the program will look through the entire level for eatable and/or passable pieces that are NOT surrounded by tube pieces yet and tries to add them automatically, which saves a LOT of time. Basically, you can just draw corridors by placing Pacman pills etc. and then use the 'C' field to have all walls added for you. It will NOT overwrite tube pieces that you have already placed, so you can always 'fine-tune' or make non-standard stuff.

This exits the editor, so you can save your work (if you don't, your work will be lost).

When saving a level, first select the number under which you want to save it. Moving the joystick left / right changes each digit, pressing the 'Fire' button switches to the next digit. When you are done the response from the floppy drive will be shown. If it says 'ok' then the level has been saved successfully.

Editor Navigation

The up/down cursor key moves the selection left, the left/right cursor key moves the selection right (on a 'real' C64, which had only two physical cursor keys, this made a lot more sense). When playing with an emulator, I suggest that you re-assign the C64 cursor keys, because you will probably need the arrow keys to move around in the level.

With the 'Fire' button, you can place the currently selected piece into the level or activate a selected function.

The unpassable wall pieces surrounding the level area are just there to line out your allowed workspace. They will be replaced with normal wall pieces once you add the level to a game, so you can use the whole accessible area to 'build'.

Assembling Your Own Game

Labyrinth Level Settings Game Data is built from previously-saved levels (add as many as you can fit in). In the finished game, once all levels have been played through, it will loop back to the first level.

Choose 'Make Game' to create a playable level selection.

Here choose 'Load Levels' to add levels to your game. First select the number of the saved level that you want to load. Moving the joystick left / right changes each digit, pressing the 'Fire' button switches to the next digit. When you are done the response from the floppy drive will be shown. If it says 'ok' then the level has been loaded successfully.

For each level, you will then be asked to set the starting positions for player 1 and 2, as well as Ghost 1 - 4. Just move the square to the desired location and press the 'Fire' button. If the location has been recorded successfully, you should hear a 'beep'.

Once all sprites have been placed, you can set the color of each Ghost for this level by moving the joystick left and right. Press the 'Fire' button to set each color.

Repeat this until all the levels that you want in the game are loaded and set up correctly.

Note: although you can technically do it, it's not wise to place the Pacman and a Ghost at the same spot. You also can't place a Pacman or a Ghost inside a wall. If a level does not contain any space where a Pacman or a Ghost can be placed (e.g. solely wall pieces), the message 'Bad Level' will be shown.

It's up to you to make sure that all pills can be reached, otherwise the level can't be finished.

Saving Your Built Game

Once you are done adding levels, choose 'Save Game' to save all loaded levels as Game Data.

First select the number under which you want to save your Game Data. Moving the joystick left / right changes the number, pressing the 'Fire' button switches to the next number. When you are done the response from the floppy drive will be shown. If it says 'ok' then the data has been saved successfully.

Now any time you want to play your levels, simply choose 'Editor' - 'Load Game' and load your data.

Level Data will be stored 'raw', Game Data will be stored with simple compression (on disk and in memory). To distinguish, level are named "+L xxx" and game data is named "+G xxx" on the disk.

Have fun playing!