Valid HTML 4.0! Valid CSS!

Lode Runner decoded

Lode Runner Title Screen

Lode Runner is one of my all-time favourites. It was one of the first computer games I ever saw on the Apple ][, and later on I spent countless hours playing it on my C64. My next contact with the game was when I started studying - the Macintosh had a very good port, and for I while I even thought I could write my own port for the Amiga. Well, we all have our dreams :-) Years later I felt compelled to buy the first Windows port, but all the fancy stuff they had added to the game (including the WinG stuff to make it run, yuck!) never worked for me. Now that it's running fine on the emulators, I'd like to devote a few lines to the game and what I have learned about it's level data structure.

Table of Contents

In order to help you finding what you're looking for, this page is split up in these sections:

Playing the Game

The Objective

To quote from the manual:

"You are a Galactic Commando deep in enemy territory. Power hungry leaders of the repressive Bungeling Empire have stolen a fortune in gold from the people by means of excessive fast food taxes. Your task? To infiltrate each of 150 different treasury rooms, evade the deadly Bungeling guards, and recover every chest of Bungeling booty."

In less prosaic terms, your objective is to collect all treasure chests on each level and escape by reaching the top row of the screen. At times, this will only be possible by climbing a special Escape Ladder that only becomes visible once you have collected all chests. Besides your wit and your speed, you have one advantage over the evil Bungeling guards: You can dig holes in the normal brick floor. These holes can either be used as a quick escape, or to trap the guards temporarily - this will also make them give up any treasure chest they're carrying. Holes will only stay open for a while, so you should attempt not to get caught in them. Guards that are trapped in a closing hole will rematerialize at the top of the screen.

Beware that not everything that looks like a normal brick is indeed a brick: the game also has trapdoor stones that look just like bricks. If you step on one of them, you will just drop through. If you've fallen in a trapdoor and your way down is blocked, you can move out of it sideways, if there's room. You can't walk into a trapdoor sideway, though.

Controls

The keys given here refer to the C64 keys. On my favourite emulators, CTRL is mapped to SHIFT and the Run/Stop key to the Tab key.

To start a game, just press the fire button on your joystick, or press any key on the keyboard. To display the High Score table during demo mode, press Return.

In-game Controls
KeyAction
Run/StopPause/Restart game
CTRL-ASuicide - restarts the current level.
CTRL-DToggles dig direction when using a joystick.
CTRL-FGet an Extra Life, forfeits High Score Entry.
CTRL-JUse joystick. Stick moves up, down, left, right;
Fire digs in front of or behind the player; toggle with CTRL-D.
CTRL-KUse the following keys to control the player:
I: up, J: left, K: stop, L: right, M: down.
U: dig left, O: dig right.
CTRL-RAbandon the current game.
CTRL-USkip to the next level, forfeits High Score Entry.
CTRL-ZToggles the iris fadein/fadeout effect.
+ / -Speed up / Slow down the game.

Before you can edit your own levels, you need to initialize a blank disk with the "I" command to hold them. Typically, you'd use a utility like Star Commander or 64Copy to create a blank D64 image, which you'd then attach to the drive 8 of your Emulator. If possible switch off "true drive emulation" or activate "Max 1541 speed" in your emulator - at only 100% of the original speed, the initialisation process talkes quite a while.

To get into the Edit mode, press CTRL-E in demo mode, or while the title screen or the High Scores table are displayed. To leave the edit mode, start playing a level from the original disk, then abandon the game. Alternatively, try playing a level that doesn't exist on the current level disk.

Edit Mode Commands
CommandAction
CClear: Erases the indicated level.
EEdit a level. See the table "Editor Commands" below.
IInitialize: Prepare a blank disk for holding custom levels.
MMove: Copies one level to another location.
PPlay: Start playing at the indicated level.
SReset the High Scores table.

The following Editor Commands are available:

Editor Commands
KeyActionKeyAction
CTRL-BBack 1 levelCTRL-QQuit editing
CTRL-FForward 1 levelCTRL-SSave level
1Place a normal brick.6Place an escape ladder.
2Place a solid brick.7Place a Gold Chest.
3Place a ladder.8Place a Bungeling.
4Place a hand-over-hand bar.9Place a Player.
5Place a trapdoor.0Place a Space.

The editor is not very smart when it comes to verifing wether a level you designed is actually playable. For example, it allows you to place more than one player icons on the screen, which clearly isn't feasible. You also can't have more than 5 guards. Finally, it neither verifies wether you are able to collect all treasure chests, nor wether you can actually reach the top row of the screen. These are things that you have to check yourself.

Editing the Game

This is work in progress. If you feel that there's a strategy missing here, please drop me a note.

If you've only played the first few levels of the original Lode Runner, you probably also haven't grasped all of the subtle features of the game. Understanding them is the key to beating Brøderbund's Championship Lode Runner - and to create new, challenging levels.

Psychic Control:

You have to learn how the guards react to your player movements. Imagine two ladders, not too close together, but neither too far apart. Let's say the guards are at one ladder, and you're on the other. If you descend to the base of the ladder, the guards will do the same, and head over to you. Now if you start climbing again, you'd expect them to still follow you, right? Well, if you just climb a certain height, the bungelings will head back to their ladder instead of going after you. In some cases you can even make them run away from you when you follow after them towards a ladder. Suffice it to say that at times this can be the poverbial play with the fire :-)

Do the Mario:

The demo mode teaches you that you can walk over guards that have fallen into a hole that you've dug. Well, the good news is that you can always walk on their heads! This includes not only guards that have gotten stuck in normal holes or trapdoors, but also falling and walking guards. Just make sure you don't accidentially push your joystick down.

Hacking the Game

The Screen Layout

Lode Runner is a tile based game that uses the C64's 160x200 multicolor mode (which is really a 320x200 pixel mode with double-width pixels). Each tile is 5 pixels wide and and 11 pixels high. The playing area consists of 16 rows of 28 tiles. This leaves a 10 pixel margin at the left and right sides, and a bar of 24 pixes height at the bottom. This bottom area is used to display the current level, the number of lives remaining and the current score.

Lode Runner has 8 different tile types. In the Editor, two additional tiles are used to represent the player and enemy start positions.

Data Format

Since there are less than 16 different tiles, it is both convenient and efficient to store tiles as nibbles instead of bytes. Thus the 488 tiles of a Lode Runner level can be represented in 244 bytes - which nicely fits in a single sector of a C= 1541 floppy. Incidentially, this is the storage format used by the C64 Lode Runner. The first level is stored on disk in sector 3/0. Probably for historical reasons, only the first 16 blocks per track are used for level storage, so the 150th (and final) level is located in sector 12/5.

The tile data for each level starts at byte offset 1 in each sector. Byte 0 probably has a special meaning - it seems to be $0D in the first and last levels, and $00 else. The tiles are stored in left-to-right, to-to-bottom order, with a small twist: the low nibble of each byte encodes the left tile and the high nibble encodes the right tile in each byte of data. This is counterintuitive since you read the nibbles the other way 'round in the hex dump.

ImageCodeDescription ImageCodeDescription
$0Empty Space $1Normal Brick
$2Solid Brick $3Ladder
$4Hand-over-hand Bar $5Trapdoor
$6Escape Ladder $7Gold Chest
$8Bungeling $9Player

Championship Lode Runner uses a slightly different format. To get back to the normal format, you'll have to invert (EOR $FF) all bytes. Additionally, this game has also a "win" phrase for each level.

 


Auswege: Impressum, Haftungsausschluß, Datenschutz, thb's 64'er-Seite, meine Homepage.
Links: Imprint, thb's C64 page, my homepage.


Thomas Bätzler, Thomas@Baetzler.de
$Id$