C64 Boulder Dash Inside FAQ v3.0wip by LogicDeLuxe 14-Jul-2006

Content: * included in a separate file

Introduction

Rockford is a registered Trademark by First Star Software.
Boulder Dash is copyright by First Star Software.
You should visit the official homepage, especially, if you are looking for the original Boulder Dash games: www.boulder-dash.com
Some tables are taken from Peter Broadribb's Site and were corrected.
This document is for information purpose only and not meant for making profit out of it.
As a consequence, you should avoid using those names in your software. Several Boulder Dash clones were banned in the past because of inflicting copyrights.

There is no waranty for the information in this document, though it should be fairly accurate. It mainly covers the C64 internals of Boulder Dash. The Atari 400 and Plus/4 versions are almost identical. Other systems usually feature a completely different engine.

The latest version of this document can be found at www.gratissaugen.de/erbsen

All numbers marked with $ as well as memory adresses are given in hexadecimal.

Engine abbreviation:
BD1: Boulder Dash 1
BD2: Boulder Dash 2
PLCK: Peter Liepa Construction Kit
1stB: First Boulder Dash (aka. New Boulder Dash)
CrDr: Crazy Dream
CrLi: Crazy Light

The start signal is another frequently used term in this document. It describes the point in time the cave timer starts. It is accompanied with a crack sound and the status bar changes.
 

The differences between BD1, BD2, PLCK, 1stB, CrDr and the CrLi Engine

Known bugs and fixes

BD1 Engine

There are three releases of Boulder Dash 1 on the C64:
Micro Fun release First Star Software rerelease Electronic Arts release (Super Boulderdash)
Comment: This release has no logo under the title screen. 
Boulder Dash 3 is based on this version.
This release features the First Star Software logo under the title screen. This release has an additional EA logo on the left of the First Star Software logo.
Program: copy protection: $8cf2-$8d8f 
game $5000-$8b86 (caves can be stored beyond that point)
$5000-$9001 $5000-$8fc0 (without intro)
Start: copy protection: $8cf2; sys36082 
game: $8ab3; sys35507
$8e69; sys36457 intro: $438a; sys17290 
game: $8e50; sys36432
Title screen: $66e8-$6acf    
Bottom lines after F1 hit: $6b7c-$6b8f, $6b90-$6ba3, $6c68-$6c9b    
Cavepointers specified relative to $582e, Lo/Hi-Byte: $5806-$582d, intermission at the end. specified relative to $581e, Lo/Hi-Byte: $57f6-$581d, intermission at the end.
Animation switch table: $8379-$838c $8740-$8753 $8744-$8757
The physics engine and the caves are completely identical in all three versions.

The animation switch table has one byte per entry with the following meanings:
bit0 = animate Fireflies
bit1 = animate Butterflies
bit2 = animate Amoebas

Offset  Description
------  -----------
$00     unused. Though it usually reads the cave number
$01     Magic Wall milling time, also max. Amoeba time at slow growth
$02     Initial Diamond value
$03     Extra Diamond value
$04     Initial randomiser seed value for difficulty level 1
$05     Initial randomiser seed value for difficulty level 2
$06     Initial randomiser seed value for difficulty level 3
$07     Initial randomiser seed value for difficulty level 4
$08     Initial randomiser seed value for difficulty level 5
$09     Diamonds needed on difficulty level 1
$0A     Diamonds needed on difficulty level 2
$0B     Diamonds needed on difficulty level 3
$0C     Diamonds needed on difficulty level 4
$0D     Diamonds needed on difficulty level 5
$0E     Cave time for difficulty level 1
$0F     Cave time for difficulty level 2
$10     Cave time for difficulty level 3
$11     Cave time for difficulty level 4
$12     Cave time for difficulty level 5
$13     Colour 1
$14     Colour 2
$15     Colour 3
$16     unused, general purpose in some fangames
$17     unused, general purpose in some fangames
$18     Random element number 1
$19     Random element number 2
$1A     Random element number 3
$1B     Random element number 4
$1C     Probability of element 1
$1D     Probability of element 2
$1E     Probability of element 3
$1F     Probability of element 4
$20 onwards: cave data, deliminated with $FF.

The cave data (beginning at offset $20) is broken into variable sized records where the first byte contains the object to store (low 6 bits only) and the kind of structure to create (upper 2 bits). Depending on the structure to create, there are 2, 4 or 5 bytes of parameters that follow.
A cave can have up to 255 byte. Valid positions are column=0..39 and row=2..23 whereas 0;2 is the top left corner on the border.

The four structure codes are:

Decoding "randomly placed" objects
All caves have the opportunity to place up to four objects in "random" positions. They aren't really random, in the sense that the randomiser is set to a given seed value, and probabilities are checked against a given probability code; this way, objects will be "randomly" placed in the same positions each time you try the cave. Method: For each cave position (20 lines x 40 columns), pick a "random" number (0-255). If the random number is less than any of the four probability codes given at offsets $1C to $1F in the cave data, then put the object code given at the corresponding offset from $18 to $1B at the current position. (If the random number is less than more than one of the given probabilities, preference is given to the later object codes - in order of offsets $1B, $1A, $19, $18). Note that after this routine has finished, the bounding steel wall is placed over the extremeties of the cave (effectively DrawRect(0,2,40,22)).

BD2 Engine

Start: $c000; sys49152
Cavepointers: $89b0-$89d7 LSB first
Cave color table $89d8-$89ff; 3 byte per cave

Offset  Description
------  -----------
$00     Magic Wall milling time, also max. Amoeba time at slow growth
$01     Initial Diamond value
$02     Extra Diamond value
$03     Cave time for difficulty level 1
$04     Cave time for difficulty level 2
$05     Cave time for difficulty level 3
$06     Cave time for difficulty level 4
$07     Cave time for difficulty level 5
$08     Diamonds needed on difficulty level 1
$09     Diamonds needed on difficulty level 2
$0A     Diamonds needed on difficulty level 3
$0B     Diamonds needed on difficulty level 4
$0C     Diamonds needed on difficulty level 5
$0D     Initial randomiser seed value for difficulty level 1
$0E     Initial randomiser seed value for difficulty level 2
$0F     Initial randomiser seed value for difficulty level 3
$10     Initial randomiser seed value for difficulty level 4
$11     Initial randomiser seed value for difficulty level 5
$12     Probability of element 1
$13     Probability of element 2
$14     Probability of element 3
$15     Probability of element 4
$16     Random element number 1
$17     Random element number 2
$18     Random element number 3
$19     Random element number 4
$1A onwards: cave data, deliminated with $FF followed by the animation switch:
bit0 = animate Fireflies
bit1 = animate Butterflies
bit2 = animate Amoebas

The cave data (beginning at offset $1A) is broken into variable sized records where the first byte is the structure code. Depending on the structure to create, there are 3, 5, 6 or 8 bytes of parameters that follow.
A cave can have up to 250 byte. Valid positions are column=0..39 and row=0..21 whereas 0;0 is the top left corner on the border.
Rockford extended the engine in order to use maps of an object and Construction Kit Caves in the Profiboulder series.
The random number generator works exactly like in BD2 and is also used for the Slime permeability.

The structure codes are:

PLCK-Engine: Construction Kit

This engine comes with the Boulder Dash Construction Kit (aka. Boulder Dash IV)
Construction Kit Gamemodul disk version Gamemodul tape version
Comments: The editor can handle both, disks and tapes. Reads a game-file and then all the caves in it. 
After game over, you can press enter to play again or load a different game. The name of the currently loaded game is displayed under the Boulder Dash logo.
Just reads the caves like they are stored on tape. 
After game over, you may choose to play again or load a different caveset. Since no gamefile is used, there is no game name display.
Start: $7ef0; sys32497 Original gamemodul: $5997; sys22935 
Softkillerpacker: $5997; sys22935 
Knibblepacker v1-v2.x: $27f6; sys10230 
Knibblepacker v3 intro: $1cc0; sys7360 
Knibblepacker v3 game: $6b00; sys27392 
No One Packer beta (has ASCII-Intro): $0b00; sys2816 
No One Packer 2.x: $27a0; sys10144 
No One Packer 5.x: $6700; sys26368 
Rockford packer with highscores: $67a0; sys26528
$59b9; sys22969
Program: $2800-$8187 $2800-$7000 (without the caves) 
in addition to that: 
Knibblepacker v2.x: $2700-$b500 
No One Packer beta: $0b00-$0c20 for intro text 
No One Packer v2.x: $27a0-$27ff, $9a00-$9de8
$2800-$6f00 (without the caves)
Caves: $be00-$bff0 generated after a save action. Beginning with $7000 in steps of $0200 Bytes for each cave. Max. 48 (Atari 60) caves.
At the beginning of the first unused cave slot, there are 16 $00 bytes, which has to be saved with the game, except when all slots are used.
Selection Table: $5e8b: 13 byte per cave
  • bytes $00-$0c: file name of cave
  • byte  $0d: is selectable
    • $19 = cave can be selected
    • $0e = cave can not be selected
    • $00 = no cave present 
Levelpacker since No One 5.x left out the names, so there is only one byte per entry.

Format of a C64 BoulderDash Construction Kit file:

Offset  Bytes  Range  Description
------  -----  -----  -----------
0000    0013          unused. Usually filled with $44 (code for titanium wall), but don't count on that.
0014    01b7    0- F  840 nybbles of cave description (without the bottom border)
01b8    0001   00-14  Cave delay (00 = fast, $14 = slow)
01ba    0001   00-FF  Cave time in seconds (1 second = 60 TV fields)
01bc    0001   00-63  Diamonds needed
01be    0001   00-63  Diamond value
01c0    0001   00-63  Bonus Diamond value
01c2    0001   00-08  Slime permeability (is translated to a bit pattern by the engine)
01c4    0001   00-FF  Amoeba time at slow growth
01c6    0001   00-FF  Magic Wall milling time
01da    0001   00-01  0=cave, >0=intermission
01db    0001   00-0F  Border color
01dd    0001   00-0F  Background color
01df    0001   00-0F  Foreground color 1
01e1    0001   00-0F  Foreground color 2
01e3    0001   00-07  Foreground color 3
In Diego effect enabled engines, there are:
01e5    0003          For detection. If there are diego effects, these are $20 $90 $46
01ea    0001   00-3F  A Bouncing Boulder converts to this element
01eb    0001   00-3F  A Falling Diamonds converts to this element
01ec    0001   00-3F  An Explosion converts to this element
01ed    0001          Pointer to Dirt graphic
01ee    0001          Pointer to Growing Wall graphic
01ef    0001   00-ff  Maximum Amoeba size

Nybble Codes (the High Nybble is drawn first)
0 Boulder
1 Diamond
2 Magic Wall
3 Brick Wall
4 Titanium Wall
5 Growing Wall
6 Mrs. Rockford
7 Dirt
8 Firefly
9 Butterfly
A Amoeba
B Slime
C Hidden Exit
D Visible Exit
E Inbox
F Space

Text character set: $2800-$2bb0 (Some are unused)
Graphics character set: $2bb0-$2db0, $3100-$3900
Title music: $3000-$3100
Original Boulder Dash Logo (Gamemodul, Softkiller packer and Rockford packer): $3900-$3b00
Title Screen (may include Highscores), as used in most other level packers: $6000-$63e8

1stB-Engine

Prof. Knibble called it "New Boulder Dash Engine", though as it was not that apparent in the games, it became commonly known asthe "First Boulder Engine".

Start: $1fa9 ($695a for the "First Boulder Dash"-games)
Program: $1f00-$c119 (some cave lay inbetween.)
Intro screens may be present at $0c00-$13e8 and will be overwritten during the game.
Title music: $5e18-$5f18
Title screen: $6000-$63e8
Caves: $7010-$bfbe. Beginning with $7010 in steps of $0400 bytes for each cave. There are opcodes between some caves. There must be 20 caves in total.
Size per cave entry: $03ae byte
Name of Highscoresfile: $63f0-$6400
Selection table: $3cd0-$3ce4 (1 byte per cave

Three byte values are BCD encoded numbers. MSB first ($00..$0f).


Booleans are true if value<>0.
Pattern means, all bits have equal value.

Format of a 1stB cave file (decompressed):

Offset  Bytes  Range  Description
------  -----  -----  -----------
0000    0370          880 byte of cave description (including all borders)
0370    0003  000-999 Cave time in seconds (1 second = 60 TV fields)
0373    0003  000-999 Diamonds needed
0376    0003  000-999 Bonus Diamond value
0379    0003  000-999 Diamond value
037C    0002  000-999 Amoeba time at slow growth (MSB first)
037E    0002  000-999 Magic Wall milling time (MSB first)
0380    0001   00-01  Firefly and Butterfly direction change automation.
                      0=off, >0=on
0381    0001   00-FF  Firefly and Butterfly direction change delay.
0381    0001   00-01  Diagonal walking
                      0=off, >0=on
(Yes, it's used twice and it's a known bug)
0382    0001  pattern Amoeba slow growth probability
0383    0001  pattern Amoeba fast growth probability
0384    0001   00-0F  Border color
0385    0001   00-0F  Background color
0386    0001   00-0F  Foreground color 1
0387    0001   00-0F  Foreground color 2
0388    0001   00-07  Foreground color 3
0389    0001   00-01  0=cave, >0=intermission
038A    0001   00-14  Cave delay (00 = fast, $14 = slow)
038B    0001   00-FF  Slime permeability
038C    0001   00-01  0=normal intermission, 1=scrolling intermission (buggy)
038D    0001          Magic Wall Sound $F0=on, $D0=silent
038E    0001          Growing Wall direction $2E=horizontal, $2F=vertical
038F    0001          Firefly and Butterfly direction $2C=forward, $2D=backwards
0390    0002  000-880 Maximum Amoeba size (MSB first)
0392    0001   00-7F  Extra time per collected Clock
0393    0001   00-7F  Time penalty
0394    0001   00-03  Biter delay
0395    0001   00-01  Magic Wall activation will convert Amoeba. 0=on, 1=off
0396    0001   00-7F  A Bomb Explosion converts to this element
0397    0001   00-7F  An Explosion converts to this element
0398    0001   00-7F  A Bouncing Boulder converts to this element
0399    0001   00-7F  A Diamond Birth converts to this element
039A    0001   00-7F  A Diamond falling into a Magic Wall converts to this element
039B    0001   00-7F  A Bladder has to touch this element in order to convert
039C    0001   00-7F  A Falling Diamond converts to this element
039D    0001   00-7F  Biters eat this element
039E, 039F     00-7F  Two elements penetrating Slime (adding $03 while doing this)
03A0    0003  string  Version "V2.2" or "2.6". V2.0 did not have this.
03A0    000E  string  Name of cave using the internal character codes. This was implemented in V2.2. The Cavepacker overwrites the Version string while packing the game.

Since V2.1, the construction kit uses a run length compression scheme when saving a cave to disk. The cavepacker decompresses the caves and stores the 20 caves in an uncompressed file.

CrDr-Engine

Start: $1fa9
Program: $1f00-$cfff (some cave lay inbetween.)
Intro screens may be present at $0c00-$13e8 and will be overwritten during the game.
Title screen: $6000-$63e8
There can be up to 100 caves, using the following memory ranges:
   $7600-$77ff, $7810-$7bff, $7c10-$7fff, $8010-$83ff,
   $8410-$87ff, $8810-$8bff, $9240-$9aff, $9bb8-$9fff
Name of Highscoresfile: $63f0-$6400
Selection table: $7410-$7473 (1 byte per cave) Three byte values are BCD encoded numbers. MSB first ($00..$0f).
Booleans are true if value<>0.
Pattern means, all bits have equal value.
Cave names: $8c00-$923f, 16 byte per cave Cave pointers LSB: $7500-$7564
Cave pointers MSB: $7580-$75e4

The cave data (beginning at offset $49) is broken into variable sized records where the first byte is the structure code. Depending on the structure to create, there are 3, 5, 6 or 8 bytes of parameters that follow.
A cave can have up to 1024 byte. Valid positions are column=0..39 and row=0..21 whereas 0;0 is the top left corner on the border.
The random number generator works exactly like in BD2 and is also used for the Slime permeability.

Three byte values are BCD encoded numbers. MSB first ($00..$0f).
Booleans are true if value<>0.
Pattern means, all bits have equal value.

Format of a CrDr cave file:

Offset  Bytes  Range  Description
------  -----  -----  -----------
0000    0003  000-999 Cave time in seconds (1 second = 60 TV fields)
0003    0003  000-999 Diamonds needed
0006    0003  000-999 Bonus Diamond value
0009    0003  000-999 Diamond value
000C    0002  000-999 Amoeba time at slow growth (MSB first)
000E    0002  000-999 Magic Wall milling time (MSB first)
0010    0001   00-01  Firefly and Butterfly direction change automation.
                      0=off, >0=on
0011    0001   00-FF  Firefly and Butterfly direction change delay.
0012    0001  pattern Amoeba slow growth probability
0013    0001  pattern Amoeba fast growth probability
0014    0001   00-0F  Border color
0015    0001   00-0F  Background color
0016    0001   00-0F  Foreground color 1
0017    0001   00-0F  Foreground color 2
0018    0001   00-07  Foreground color 3
0019    0001   00-01  0=cave, >0=intermission
001A    0001   00-14  Cave delay (00 = fast, $14 = slow)
001B    0001   00-FF  Slime permeability
001C    0001   00-01  0=normal intermission, 1=scrolling intermission (buggy)
001D    0001          Magic Wall Sound $F0=on, $D0=silent
001E    0001          Growing Wall direction $2E=horizontal, $2F=vertical
001F    0001          Firefly and Butterfly direction $2C=forward, $2D=backwards
0020    0002  000-880 Maximum Amoeba size (MSB first)
0022    0001   00-7F  Extra time per collected Clock
0023    0001   00-7F  Time penalty
0024    0001   00-03  Biter delay
0025    0001   00-01  Magic Wall activation will convert Amoeba. 0=on, 1=off
0026    0001   00-FF  A Bomb Explosion converts to this element
0027    0001   00-FF  An Explosion converts to this element
0028    0001   00-FF  A Bouncing Boulder converts to this element
0029    0001   00-FF  A Diamond Birth converts to this element
002A    0001   00-FF  A Diamond falling into a Magic Wall converts to this element
002B    0001   00-FF  A Bladder has to touch this element in order to convert
002C    0001   00-FF  A Falling Diamond converts to this element
002D    0001   00-FF  Biters eat this element
002E, 002F     00-FF  Two elements penetrating Slime (adding $03 while doing this)
0030    0003  string  Version "V4.0".
0034    0001 switches bit 0:   Diagonal walking
                      bit 1-7: not used
0035    0001   00-FF  Delay of gravitation change
0036    0001   00-FF  Time for Pneumatic Hammer
0037    0001   00-FF  Time for hammered Walls to reappear
0038    0001   00-FF  Acid speed
0039    0001   00-FF  Acid eats this element
003a    0001 switches bit 0-1: gravitation
                                 00: up
                                 01: down
                                 10: left
                                 11: right
                      bit 2:   snap Explosions
                      bit 3-7: not used
003b    0001          Pointer to Growing Wall graphic
003c    0001          Pointer to Dirt graphic
003d    0002          not used
003f    0001   00-01  >0=hammered Walls will reappear
0040    0001   00-FF  Initial randomiser seed value
0041    0001   00-FF  Random element number 1
0042    0001   00-FF  Random element number 2
0043    0001   00-FF  Random element number 3
0044    0001   00-FF  Random element number 4
0045    0001   00-FF  Probability of element 1
0046    0001   00-FF  Probability of element 2
0047    0001   00-FF  Probability of element 3
0048    0001   00-FF  Probability of element 4
0049 onwards: cave data, deliminated with $FF.

The structure codes are:

CrLi-Engine

Start: $5e97; sys24215 (use this when crunching the game)
Start with drive 8 forced on: $1f05; sys7941 (use this for debugging)
Program: $1f03-$6ffc, $cc00-$d000
Title screen: $6000-$63e8

Character set file: $26a0-$3b00
$3368 Version "V3.0"
For details see graphic character set.

Introscreen file: $0c00-$0fec
$0c00-$0fe8 Screen
$0fe9 Border color
$0fea Background color
$0feb Foreground color

Title screen file: $5ed9-$6398
$5ed9-$5edc Version "V3.0"
$5edd-$5fdc Title music
$5fdd       Music waveform
$5fde       Music envelope voice 1
$5fdf       Music envelope voice 2
$5fe0-$5ff7 Color nybbles one for each line. The high nybble is used for big letters, and the lower nybble for other chars.
$5ff8       Regular cave name color
$5ff9       Last played cave name color
$5ffa       Border color
$5ffb       Background color
$5ffc       Foreground color 1
$5ffd       Foreground color 2
$5ffe       No effect ($d024)
$5fff       not used
$6000-$6398 Title screen (first 23 lines)

Cavepack file: $6ffc-$cbff (max.)
$6ffc-$6fff Version "V3.0"
$7000-$702f Cave pointers LSB
$7030-$705f Cave pointers MSB
$7060-$708f Selection table
              $00 = cave can be selected
              $01 = cave can not be selected
              $ff = no cave present
$7090       $ff (end of selection table)
$7091-$7093 Patch code. The engine does a JSR $7091 during initialisation. default=$60 $60 $60=RTS
$70a2-$cbff Names and caves
The names are stored right in front of the caves and have always 14 bytes.
There can be up to 48 caves.
Name of Highscoresfile: $63f0-$6400

Caves are compressed with a run length encoded algorythm and are decompressed during run time directly into the working array. The parameters are copied to $0370. The escape byte is $bf, followed by the repeated byte value and the byte count. A cavefile starts at $c400 with the string "DLP".

 
Three byte values are BCD encoded numbers. MSB first ($00..$0f).


Booleans are true if value<>0.
Pattern means, all bits have equal value.

Format of a CrLi cave file (decompressed):

Offset  Bytes  Range  Description
------  -----  -----  -----------
0000    0370          880 byte of cave description (including all borders)
0370    0003  000-999 Cave time in seconds (this seconds are for real on both NTSC and PAL systems)
0373    0003  000-999 Diamonds needed
0376    0003  000-999 Bonus Diamond value
0379    0003  000-999 Diamond value
037C    0002  000-999 Amoeba time at slow growth (MSB first)
037E    0002  000-999 Magic Wall milling time (MSB first)
0380    0001   00-01  Firefly and Butterfly direction change automation.
                      0=off, >0=on
0381    0001   00-FF  Firefly and Butterfly direction change delay.
0382    0001  pattern Amoeba slow growth probability
0383    0001  pattern Amoeba fast growth probability
0384    0001   00-0F  Border color
0385    0001   00-0F  Background color
0386    0001   00-0F  Foreground color 1
0387    0001   00-0F  Foreground color 2
0388    0001   00-07  Foreground color 3
0389    0001   00-01  0=cave, >0=intermission
038A    0001   00-14  Cave delay (00 = fast, $14 = slow)
038B    0001   00-FF  Slime permeability
038C    0001   00-01  0=normal intermission, 1=scrolling intermission (buggy)
038D    0001          Magic Wall Sound $F0=on, $D0=silent
038E    0001          Growing Wall direction $2E=horizontal, $2F=vertical
038F    0001          Firefly and Butterfly direction $2C=forward, $2D=backwards
0390    0002  000-880 Maximum Amoeba size (MSB first)
0392    0001   00-7F  Extra time per collected Clock
0393    0001   00-7F  Time penalty
0394    0001   00-03  Biter delay
0395    0001   00-01  Magic Wall activation will convert Amoeba. 0=on, 1=off
0396    0001   00-7F  A Bomb Explosion converts to this element
0397    0001   00-7F  An Explosion converts to this element
0398    0001   00-7F  A Bouncing Boulder converts to this element
0399    0001   00-7F  A Diamond Birth converts to this element
039A    0001   00-7F  A Diamond falling into a Magic Wall converts to this element
039B    0001   00-7F  A Bladder has to touch this element in order to convert
039C    0001   00-7F  A Falling Diamond converts to this element
039D    0001   00-7F  Biters eat this element
039E, 039F     00-7F  Two elements penetrating Slime (adding $03 while doing this)
03A0    0003  string  Version "V3.0"
03A4    0001   00-01  Diagonal walking
                      0=off, >0=on
03A5    0001   00     reserved
03A6    0001   00-7F  Too big Amoeba converts to this element
03A7    0001   00-7F  Enclosed Amoeba converts to this element
03A8    0001   00-FF  Acid speed
03A9    0001   00-7F  Acid eats this element
03AA    0001   01     reserved
03AB    0001   00-7F  Growing Wall looks like this element
03AC    0001   00-7F  Dirt looks like this element
03AD    0001   01     reserved
03AE    0001   01     reserved
03AF    0001   01     reserved

Boulder Dash Objects:
BD1, BD2, PLCK 1stB CrDr CrLi
$00 Space
$01 Dirt
$02 Brick Wall
$03 Magic Wall
$04 Exit
$05 Exit open
$06 Destructible Titanium Wall* Hidden Exit
$07 Titanium Wall Hidden Exit open
$08-$0b Firefly (left, up, right and down)
$0c-$0f Firefly delayed
$10 Boulder
$11 Boulder delayed
$12 Boulder falling
$13 Boulder falling delayed
$14 Diamond
$15 Diamond delayed
$16 Diamond falling
$17 Diamond falling delayed
$18 Clock Birth stage 1
$19 Clock Birth stage 2
$1a Explosion stage 1 Clock Birth stage 4
$1b Explosion stage 2 Clock Birth stage 4
$1c Explosion stage 3 Biter Switch
$1d Explosion stage 4 Biter Switch delayed
$1e Explosion stage 5 T
$1f-$24 Diamond Birth stages
$25 Inbox
$26-$29 Rockford Birth stages
$2a Growing Wall*
$2b Growing Wall delayed
$2c Firefly/Butterfly Switch
$2d Firefly/Butterfly Switch delayed
$2e Growing Wall Switch
$2f Growing Wall Switch delayed
$30-$33 Butterfly (down, left, up and right)
$34-$37 Butterfly delayed
$38 Rockford Titanium Wall
$39 Rockford delayed Slime
$3a Amoeba Bomb
$3b Amoeba delayed Sweet
$3c Mrs. Rockford* Boulder Birth stage 1
$3d Hidden Exit* Boulder Birth stage 2
$3e Slime* Boulder Birth stage 3
$3f Boulder Birth stage 4
$40 Hidden Exit open* Bladder
$41-$49 Bladder waiting stages
$4a-$4f Explosion stages
$50 Rockford
$51 Rockford delayed
$52 Rockford carrying Bomb
$53 Rockford carrying Bomb delayed
$54 Rockford glued
$55 Rockford glued delayed
$56 Mrs. Rockford
$57 Amoeba
$58 Amoeba delayed
$59-$5f Bomb Ticking stages
$60-$63 Bomb Explosion stages
$64 Ghost Acid
$65 Ghost delayed Acid delayed
$66 Ghost Explosion stage 1 Falling Wall
$67 Ghost Explosion stage 2 Falling Wall falling
$68 Ghost Explosion stage 3 Falling Wall falling delayed
$69 Ghost Explosion stage 4 Box
$6a Gravestone
$6b Boulder glued
$6c Diamond glued (not collectible)
$6d Diamond Key
$6e Trapped Diamond
$6f Gravestone with time penalty
$70 Waiting Boulder
$71 Waiting Boulder delayed
$72 Chasing Boulder
$73 Chasing Boulder delayed
$74-$77 Titanium Wall Birth stages
$78-$7b Biter (up, right, down and left)
$7c-$7f Biter delayed
$80 Pot
$81 Rockford steering
$82 Gravitation Switch
$83 Gravitation Switch delayed
$84 Pneumatic Hammer
$85 Pneumatic Hammer active
$86 Box
$87 Box delayed
$8a Acid
$8b Acid delayed
$8c Key 1
$8d Key 2
$8e Key 3
$95 Teleporter
$96 Juice*
$97 Skeleton
$98-$a8 Water stages
$a9-$ac Cow (left, up, right and down)
$ad-$b0 Cow delayed
$b1-$b7 Enclosed Cow
$b8 Non Eatable Dirt
$b9 Destuctible Titanium Wall
$ba Door 1
$bb Door 2
$bc Door 3
$bd Falling Wall
$be Falling Wall falling
$bf Falling Wall falling delayed
$c0 Walled Diamond
$c1 Walled Suice
$c2 Walled Key 1
$c3 Walled Key 2
$c4 Walled Key 3
$c8 Alternative Dirt
$e0-$e3 Alternative Firefly (left, up, right and down)
$e4-$e7 Alternative Firefly delayed
$e8-$eb Alternative Butterfly (down, left, up and right)
$ec-$ef Alternative Butterfly delayed
$f0-$ff Water
The Destructible Titanium Wall can appear as Non Eatable Dirt in some games.
The Slime and Growing Wall was not originally implemented in BD1, but later added in some fan made games.
Mrs. Rockford and Hidden Exits were introduced in PLCK.
Falling Diamonds and Boulder have no effect on Mrs. Rockford in PLCK, and she can be destroyed.
The Juice was not fully implemented. It is collectible, but has no effect on the game.
The alternativ Fireflies and Butterflies can not walk backwards.

Character sets:

The big letters logo:
It is built of the chars $00-$0b:
BD1, PLCK CrLi Knib, 1stB, CrDr BD2
$00 scroll pattern target
$01 Color 1 area combined upper and lower slope target Color 1 area
$02 Color 2 area scroll pattern above letter surface target Color 2 area
$03 Color 3 area (letter surface)
$04 Dollar sign scroll pattern left of letter shadow target cell upper left corner Brickwall
$05 Percent sign letter shadow above letter surface cell upper right corner Dollar sign
$06 upper slope source cell lower left corner Percent sign
$07 lower slope source cell lower right corner upper slope source
$08 left edge with shadow cell horizintal bar lower slope source
$09 upper slope target rotating scroll pattern sourse (1stB and onwards) upper slope target
$0a lower slope target rotating scroll pattern target (V3 and onwards) lower slope target
$0b scroll pattern source rotating scroll pattern target scroll pattern source
Even all No One Packer versions have the logo tiles. Unfortunately, you can't use them with it.
Targets are animated tiles composed of the source tiles during run time.
The vertical cell bars in the Knibble charsets are at $74 and $75.

Two char wide letters:
$0c: ,
$0d: !
$0e: .
$0f: /
$10: 0
$11: 1
$12: 2
$13: 3
$14: 4
$15: 5
$16: 6
$17: 7
$18: 8
$19: 9
$1a: :
$1b: *
$1c: <
$1d: =
$1e: >
$1f: triple line (tm sign in old games)
$20: space
$21: A
$22: B
$23: C
$24: D
$25: E
$26: F
$27: G
$28: H
$29: I
$2a: J
$2b: K
$2c: L
$2d: M
$2e: N
$2f: O
$30: P
$31: Q
$32: R
$33: S
$34: T
$35: U
$36: V
$37: W
$38: X
$39: Y
$3a: Z
$3b: (
$3c: Diamond
$3d: )
$3e: Rockford's head
$3f: _
$40-$73: Letter's right half (see bellow!)
$74: left vertical cell bar in Knibble sets
$75: right vertical cell bar in Knibble sets
$76, $77: ? (see bellow!)

In Boulder Dash the letters are two chars wide. For the right half of it, the engine adds $34 to the first half. In the title screen, this is done in the editor which makes it possible to place the letters in steps half the size of a letter. For the ingame texts, only the left half is stored and the right half is added on the fly.
Prof. Knibble later added the Question mark, though with the $34 rule, the space was used up. He placed it at the end and the rule does not apply as the char codes are $76 and $77.

Graphic character set:
PLCK 1stB CrLi
2600-2700 Ghost
26a0-2700 Rockford standing still
Bomb status bar sprite
2700-2800 Biter
2800-2bb0 (Text chars, see above!)
2bb0-2c00 (extended text chars)
2bb0-2cb0 Firefly
2cb0-2db0 Diamond
2c00-2c80 Magic Wall
2c80-2d00 Biter switch
2d00-2e00 Rockford blinking and stamping
2db0-3000 unused
2e00-2f00 Bladder
2f00-3000 Slime
3000-3100 (Title music) Slime target
Enemy switch forward
Enemy switch backwards
Growing wall switch horizontal
Growing wall switch vertical
T
Bladder target
Clock
3100-3200 Butterfly target
Magic Wall Target
Diamond birth stage 1
Diamond birth stage 2
Diamond birth stage 3
Diamond birth stage 4
Diamond birth stage 5
In/Out Box full
Butterfly target
Magic Wall Target
Diamond birth stage 1
Diamond birth stage 2
Diamond birth stage 3
Diamond birth stage 4
Diamond birth stage 5
Titanium Wall and In/Out Box full
3200-3300 Amoeba target
Rockford standing still or Mrs. Rockford (see below!)
Boulder
Dirt (target, see below!)
Diamond Target
Titanium Wall
Rockford target
Brick Wall
Amoeba target
Mrs. Rockford
Boulder
Dirt
Diamond Target
Pushable box
Rockford target
Brick Wall
3300-3400 Space
In/Out Box empty
Firefly target
Explosion stage 1
Explosion stage 2
Explosion stage 3
Magic Wall stages 1 & 2 + disolve pattern source
Magic Wall stages 3 & 4
Space
In/Out Box empty
Firefly target
Explosion stage 1
Explosion stage 2
Explosion stage 3
Disolve pattern source
Bomb
Space
In/Out Box empty
Firefly target
Explosion stage 1
Explosion stage 2
Explosion stage 3
Disolve and title scroll patterns source
Bomb
3400-3500 Rockford blinking and stamping Sweet
Ghost target
Cross
Diamond release key
Trapped diamond
Chasing Boulder
Biter target
Biter switch target
Sweet
Acid
Cross
Diamond release key
Trapped diamond
Chasing Boulder
Biter target
Biter switch target
3500-3600 Rockford left
3600-3700 Rockford right
3700-3800 Butterfly
3800-3900 Amoeba
3900-3a00 Firefly
3a00-3b00 Diamond
No One and Prof. Knibble changed the "Rockford standing still" to "Mrs. Rockford". Originally the engine uses parts of it when Rockford is standing. This was changed to use the first image from the "Rockford blinking and stamping" animation, though he can not hang his arms anymore. In "De Luxe Packer 1.4x" this was made optional. In CrLi a separate "Rockford standing still" image was reinplemented independently from "Mrs. Rockford".
BD2 introduced the Dirt-Mod. Whenever a cave features an amoeba, the dirt is replaces with one where color 1 and color 2 are swapped, so the amoeba (which has the color of the dirt in BD2 instead of the brick wall like in BD1) can be better distinguished from dirt, though now dirt, titanium wall and boulders have mostly the same color now. Also you can not use your own dirt in No One's Enemiedesigner when the Dirt-Mod is enabled. Most No One and Knibblepacker used this Mod. Rockford removed it in the Profi Boulder series. Also it was abandoned in 1stB.