Nutzungsbedingungen / Impressum

BDCFF extension for the "Cross Development C64 engine" and "Crazy Dream PC"

3-dec-2008 wip (subject to change during developement)

Black sections will be most likely supported by the Cross Development C64 engine (XDC) as well as Crazy Dream PC.
Blue sections mean currently supported by the BDCFF compiler for XDC alpha.
Green sections will be most likely supported in Crazy Dream PC only.
Grey sections are low priority. They might be implemented some day, but should be considered BDCFF compliant as of version 0.5.
See also http://www.emeraldmines.net/BDCFF/ for more general (including Emerald Mine, Supaplex etc. support), but unfortunately incomplete specs at the time of writing.

The structure

; A comment line
[BDCFF] ; BDCFF necessary header
; Info about BDCFF version, etc.
Version=0.5
[game]
; game and default cave attributes

[highscores]
666666 LogicDeLuxe
666665 Prof Knibble
666664 No One
; Can contain several lines of
; Scores Name
; The first rank is listed first, followed by the second etc.
; Available only in [game] section
[/highscores]

[mapcodes]
; extended codes for map-coded caves, may be absent.
Length=1        ; The length (1 or 2 characters) of the map-codes. Default value = 1
; For example,
.=DIRT
W=STEELWALL
; ...etc. If Length = 2 then ..=DIRT, Ws=STEELWALL, etc.
[/mapcodes]

[cave]
; cave data and attributes
Size=6 5

[demo]
; demo data for this cave, all demo may be in one line, i.e. .30uLtf4curCDRr7 etc.
.30     ; no movement for 30 turns
u       ; move up one space
L       ; snap left without moving. ie the fire button was pressed during this move.
t       ; A true random number decision was true. For instance, this could be required for an amoeba.
f4      ; The next 4 true random number decisions were false.
cur     ; combined move up and right. cru is synonymous for that and can be used as well. (Diagonal movement enabled.)
CDR     ; combined snap down right. CRD is synonymous.
r7      ; move right 7 spaces
; etc.
[/demo]

[objects]
; cave objects data, this is absent if cave is map-coded.
; For example,
Point=1 1 INBOX
Line=2 1 2 4 DIAMOND
Point=4 3 OUTBOX
[Level=4,5]
; Here goes a firefly in levels 4 and 5 only.
Point=4 4 FIREFLYl
[/Level]
[/objects]

[/cave]

[cave]
; next cave, etc.

[map]
; a map of a cave, is absent if cave is object-coded.
; For example,
WWWWWW
WXd..W
W.d..W
W.d..W
W.d.PW
WWWWWW
[/map]

[/cave]

[/game]

[/BDCFF]

The Attributes

AcidProperties
Element to eat, growth propability (BDCFF defaults = DIRT 0.03)
AltDirt
[never]|[element1 [element2]]
Use alternative Dirt graphics when one of those elements are in the cave.
Some example games use these values:
Original Boulder Dash 2: AltDirt=AMOEBA
No One Packer 5.x: AltDirt=AMOEBA SLIME
BD1, PLCK, Profi-Boulder series: AltDirt=never

The engine shouldn't use it regardless, but use it wisely, since it depends on the used graphics set, whether it makes any sense or not.
Alternative Dirt graphics can be forced on with DIRTLOOKSLIKEeffect=DIRT2

AmoebaGrowthProb
Amoeba slow (and fast) growth probability (two or one number, BDCFF-native defaults = 0.03125 0.25)
AmoebaProperties
AmoebaProperties.waitforhatching=true|false
AmoebaProperties.immediately=true|false
If waitforhatching=true, the timer does not start befor the guy's hatching, even in case the Amoeba is free to grow before this happens.
If immediately=true, the timer does start immediately, no matter if the Amoeba is activated or still inactive. If immediately=false, the Amoeba timer does not start before the Amoeba comes to life.
defaults:
waitforhatching=true for 1stB, CrLi, false for BDCFF-native, BD1, BD2, PLCK
immediately=true for BD1, false for all other engines and BDCFF-native
AmoebaThreshold
The percentage of the cave the amoeba is allowed to occupy before turning to boulders. (number, BDCFF-native = 0.2273).
AmoebaTime
Amoeba slow growth time (number, BDCFF-native = 999)
Amoeba2GrowthProb
Amoeba2 slow (and fast) growth probability (two or one number, default values = 0.03125 and 0.25)
Amoeba2Properties
Amoeba2Properties.waitforhatching=true|false
Amoeba2Properties.immediately=true|false
Amoeba2Properties.explode=true|false
If waitforhatching=true, the timer does not start befor the guy's hatching, even in case the Amoeba2 is free to grow before this happens.
If immediately=true, the timer does start immediately, no matter if the Amoeba2 is activated or still inactive. If immediately=false, the Amoeba2 timer does not start before the Amoeba2 comes to life.
If explode=true, an amoeba2 piece will explode when it touches an amoeba piece.
defaults:
waitforhatching=true for 1stB, CrLi, false for BDCFF-native, BD1, BD2, PLCK
immediately=true for BD1, false for all other engines and BDCFF-native
explode=true for BDCFF-native
Amoeba2Threshold
The percentage of the cave the amoeba2 is allowed to occupy before turning to boulders. (number, BDCFF-native = 0.2272).
Amoeba2Time
Amoeba2 slow growth time (number, BDCFF-native = 999)
Author
Cave (or game) author (string, for cave default equals game author)
BiterProperties
Delay; Element to eat (default=0 DIAMOND)
BladderProperties
Colides with (BDCFF-native = DUMMY)
BonusLife
Bonus life score (number, BDCFF-native = 500)
BonusTime
Reward for collecting a clock (one or one number for each level, BDCFF-native = 30)
BorderProperties
BorderProperties.scan=true|false
BorderProperties.effect=true|false
BorderProperties.wraparound=true|false
BorderProperties.lineshift=true|false
BorderProperties.perfectwrap=true|false
If scan=true, Inbox and Outbox will work on upper and lower borders, things can move from those borders and Amoebas are counted.
If effect=true, the effect table is processed in the upper and lower border. If set to false, element which move to those borders are stuck there forever and Explosion sequences aren't executed either.
If wraparound=true, elements leaving the upper or lower border appear on the opposite border.
If lineshift=true, elements leaving the right border reappear one line lower at the left, and elements leaving the left border reappear one line higher on the right. This also affects the drawing of cave objects, so set this property first. XDC is always lineshifting.
If perfectwrap=true, upper and lower wraparound is calculated with redirection. If set to false, only movements are redirected, but interaction is implemented with copying the borders above/bellow the cave between scan intervals, which is faster, but has side effects which needs to be emulated.
Note that wrapping left/right is always possible as C64 engine merely see a continues array in RAM.
defaults:
scan=true for BD1, 1stB, CrLi, false for PLCK
effect=true for 1stB, CrLi, false for BD1, BD2, PLCK
wraparound=true for 1stB, CrLi, false for BD1, BD2, PLCK
lineshift=true for all C64 engines, false for BDCFF-native
perfectwrap=true for BDCFF-native, false for all C64 engines
CaveScheduling
For emulating a certain timing model. Can be ms, bd1, bd1atari, bd2, bd2ckatari, plck, crdr7. This requires CaveDelay to be specified to work, except for ms. If the engine isn't able to keep up with the intended speed for performance reasons, all timers must slow down with it to keep things in sync. (BDCFF-native default = ms)
CaveDelay
Used in BoulderDash Construction Kit engine. One number for each level. If CaveDelay and FrameTime are specified in the same cave, the engine shall use the one it best supports. This value is ignored when CaveScheduling is set to ms. This value is translated to ms by BDCFFcompiler and will be used if no FrameTime is given.
CaveMaxTime
If you reach that number by collecting too many clocks, the time overflows to 0. (BDCFF-native default = 999)
CaveSize
Global cave dimensions. Can be overridden with the Size attribute. Available only in [game] section.
defaults: 40 22
CaveTime
Cave total times for each level (one or one number for each level). Available only in [cave] section (BDCFF default = 999)
Charset
Character set, for example "space" for BD3, default = "original"
Colors
Colors=[border background] foreground1 foreground2 foreground3 [amoeba slime]
Cave colors (string, 3 or 5 or 7 C64 color names, Atari color names, C64DTV color names or hexadecimal RGB triples 000000 - ffffff.) If five names are given, border and background is always listed first. Specifying amoeba and slime color is only possible when 7 names are given. Slime color is not supported by XDC, but should be specified along with amoeba anyways.
Valid names are Black, White, Red, Cyan, Purple, Green, Blue, Yellow, Orange, Brown, LightRed, Gray1, Gray2, LightGreen, LightBlue and Gray3. On C64 engines, foreground 3 is limited to the first 8 colors. In XDC, this limitation can be exchanged for a limited background color.
Atari colors consist of the string "AtariCL" where C is the hue (chroma value) and L is the brighness (luma value). C=0 specifies a shade of gray. C and L are hex nybles and can have any value from 0 to F. C64DTV colors are named "C64dtvCL" and work exactly like Atari colors, except that the hue is a bit different.
BDCFF-nativedefaults: the engine should choose some useful colors randomly if nothing is specified.
Date
Date of cave (or game) creating (string, 2002 or 2002-10 or 2002-10-31 format)
Description
Cave (or game) description (string)
DiagonalMovement
The guy can move diagonal. (BDCFF-native default = false)
DiamondsRequired
Number of diamonds required to successfully finish the cave for each level (one or one number for each level). Zero or negative values are subtracted from the currently available amount of diamonds at the time of hatching. (BDCFF-native default = 10)
DiamondValue
Number of points per collected diamond (two or one numbers, second value is number of bonus points per diamond)
While the engine is required to work with only one number here, it is highly recommended to use always two numbers for this, due to an interpretation conflict. (BDCFF native defaults: 0 0)
Difficulty
Difficulty of the game (or level). For info purposes
DummyProperties
DummyProperties.diamondcollector=true|false
DummyProperties.penalty=true|false
DummyProperties.destructable=true|false
If diamondcollector=true, the Diamonds are collected and counted when dropped on a Dummy, otherwise they just remain lying there.
If penalty=true, the Dummy converts to a TIMEPENALTY surrounded by STEELWALLBIRTH1 when a Boulder is dropped on it, otherwise it just remain lying there.
If destructable=true, Dummies can be destroyed when being in range of an explosion, otherwise they convert to a Time Penalty when caught by an explosion, and they are completely immune to Bomb explosions.
defaults:
diamondcollector=true for 1stB, CrLi, false for BD1, BD2, PLCK, XDC, BDCFF-native
penalty=true for 1stB, CrLi, false for BD1, BD2, PLCK, XDC, BDCFF-native
destructable=true for BD1, BD2, PLCK, XDC, BDCFF-native, false for 1stB, CrLi
Effect
element1 element2
This applies a Lord Diego-Effect, except it is much more general. There may be several Effect attributes.
Replaces element 1 with element 2 in the effect table.
EnemyDirectionProperties
EnemyDirectionProperties.time time
EnemyDirectionProperties.startbackwards true|false
EnemyDirectionProperties.changeathatching true|false
time is given in seconds. If time=0, no auto direction changes occur.
startbackwards does just that.
changeathatching is only affective if time>0.
The timer does not start before the hatching.
     defaults:
time=0 for any engine and BDCFF-native
startbackwards=false for any engine and BDCFF-native
changeathatching=true for 1stB, false for any other engine and BDCFF-native
Fingerprint
Is used to validate a demo recording or a highscore table which makes it authentic for competition purposes.
For validating a demo recording, the Fingerprint is placed at the end in the [demo]-section. This is a CRC of the Executable, the demofile (if it is not part of the BDCFF-file) and the [game]-section including all its [cave]-sections. Nested existing other [demo]-sections, [highscore]-sections and the Fingerprint itself are excluded from the CRC.
For validating a highscore table, the Fingerprint is placed in the end of the [highscore]-section. This is a CRC of the Executable and the BDCFF-file, but all [demo]-sections are excluded from the CRC.
Fontset
Font set, for example "space" for BD3, default = "original"
FrameTime
Given in milliseconds, one or one number for each level. (200 means 200 ms = 5 steps per second.) If CaveDelay and FrameTime are specified in the same cave, the engine shall use the one it best supports. XDC supports 1 - 255 ms, but values <100 shouldn't be used for performance reasons. (BDCFF-native default = 200)
HatchingDelay
The guy's hatching delay. This is the number of scanning frames inbox will be flashing before the guy's hatching. (one or one number for each level, BDCFF-native default = 21). If not given, XDC's BDCFF converter will calculate a HatchingDelay to match 2 seconds.
HatchingTime
Like HatchingDelay, but given in seconds. (BDCFF-native default = 2 seconds in C64 Scheduling) XDC's BDCFF converter will calculate a HatchingDelay to match this value, as long as it doesn't exceed 255.
InitialBorder
Initial border element. This element is used to draw the border. Special attention should go to BDCFF version <= 0.32: In files having such a version or no version given, and if the cave is object based, the engine should check if objects are drawn beyond the visible 20x12 part. If nothing is drawn in the invisible part, the InitialBorder should be drawn around the visible part and the invisible part should be filled with it as well. BDCFF-native default is STEELWALL.
InitialFill
Initial fill element. This element is used to fill entire field, except for the border. BDCFF-native default is DIRT.
InOutBoxProperties
InOutBoxProperties.forceflashing=true|false
InOutBoxProperties.hatchpattern=true|false
InOutBoxProperties.synchronous=true|false
If forceflashing=true, flashing is forced by alternating the state of the first box in cave on each scan. If set to false, boxes won't flash in case there is an even number of them.
If hatchpattern=true, the guy's hatching can only occur from the empty state of a box, which result in a pattern of appearance.
If synchronous=true, all boxes are drawn in the same state (full/empty) on one scan.
forceflashing=true for 1stB, CrLi, XDC, false for BD1, BD2, PLCK
hatchpattern=true for all C64 engines
synchronous=false for all C64 engines
Intermission
Is intermission (boolean, BDCFF-native default = false). Available only in [cave] section.
IntermissionProperties
IntermissionProperties.instantlife=true|false
IntermissionProperties.rewardlife=true|false
If instantlife=true, an extra life is given whenever an intermission is reached, unless the maximum number of lives are reached.
If rewardlife=true, an extra life is given when the player finishes the intermission successfully, unless the maximum number of lives are reached.
defaults:
instantlife=true for BD1, BD2, PLCK, false for 1stB, CrLi, BDCFF-native
rewardlife=true for 1stB, CrLi, BDCFF-native, false for BD1, BD2, PLCK
IntermissionSize
Global intermission dimensions. Can be overridden with the Size attribute. Available only in [game] section.
defaults: 40 22 0 0 19 11
Levels
Default number of levels (number, default = 1). Available only in [game] section. XDC supports 1 to 7 levels.
[Level=n1,n2,..,nz]
nx=1..7
All commands in a level section are only executed, when the particular level is played. Can be placed in the [objects] section.
One possible usage is to restrict a [demo] section to a particular level.
Lives
Initial number of lives [maximum number of lives] (numbers, default = 3 9). Available only in [game] section. XDC supports between 3 and 6 lives. The maximum number of lives is hardcoded to 9.
MagicWallProperties
MagicWallProperties.waitforhatching=true|false
MagicWallProperties.convertamoeba=true|false
MagicWallProperties.breakscan=true|false
If waitforhatching=true, the timer does not start befor the guy's hatching, even in case the Magic Wall is activated before this happens.
If convertamoeba=true, the Amoeba will convert to Diamonds the moment a Boulder is dropped into a Magic Wall, placement and state of the Magic Wall or the Amoeba don't matter for this to occur.
If breakscan=true, the engine emulates the buggy timing behavior in BD1 on the C64 which many caves require to work properly. This also has the side effect of converting Amoeba under certain conditions.
defaults:
waitforhatching=true for 1stB, CrLi, false for BD1, BD2, PLCK, BDCFF-native
convertamoeba=true for 1stB, CrLi, BDCFF-native, false for BD1, BD2, PLCK
breakscan=true for BD1 C64, false for all other engines and BDCFF-native
MagicWallTime
Magic wall milling time (one or one number for each level, BDCFF-native default = 999)
Name
Cave (or game) title (string)
PALTiming
For compatibility with PAL versions of home computers. Each second lasts 1.2 times longer than real seconds. (BDCFF-native default = false) If used, BDCFFcompiler multiplies all time values by 1.2, so be aware of roundoff errors.
PenaltyTime
Time discount when a dummy is destroyed. One or one number for each level. (BDCFF-native default = 30)
PushingBoulderProb
Probability normal and with sweet collected. (number [number], BDCFF-native default = 0.25, 1.0)
RandomAlgorithm
For using other than the default algorithm.
For anything related to predictable random. Can be used prior the Attribute or Cave Object using random numbers. Can be C64 or XDC. BDCFF native default is C64.
RandomFill
Pseudo-randomly placed elements (four or less pairs of element name and it's probability). This info is used to pseudo-randomly fill entire field. The predictable random number generator (for cave data)
The used default algorithm is described by Peter Broadribb here: The predictable random number generator (for cave data)
The predictablerandom behavior is influenced by the RandomAlgorithm attribute, ie. the last one set is used.
RandSeed
Random generator seed values for corresponding pseudo-randomly placed elements (one number for each level). -1 means totaly random, ie. different appearance every time the cave starts.
Scrollproperties
Scrollproperties.activeguyscan=true|false
Scrollproperties.counteroverflow=true|false
Scrollproperties.activeguyisfirst=true|false
If activeguyscan=true, the engine looks and remembers the position of a guy in order to scroll to it. If set to false, the engine merely counts the steps and scrolls this far.
If counteroverflow=true, the exact scroll behavior of the C64 is emulated, which has only a singed byte to count the steps and thus can overflow which results in scrolling to the opposite end. This variable is only effective if activeguyscan=false.
If activeguyisfirst=true, the engine looks for the first Inbox/guy to scroll to. If set to false, it scrolls to the last one. If activeguyscan is set to false, this variable is only effective for Inboxes.

A special case is when activeguyscan is set to false and an Inbox is places with a Point object. This overrides the position scan for Inboxes and uses the coordinates of the Inbox which is places last (thus no activeguyisfirst default for BD1 and BD2)

defaults:
activeguyscan=true for 1stB, CrLi, BDCFF native, false for BD1, BD2, PLCK
counteroverflow=true for all C64 engines where applicable, false for BDCFF native
activeguyisfirst=true for 1stB, CrLi, BDCFF native, false for PLCK
mandatory setting in XDC
Selectable
Is selectable (boolean, default value = true). Available only in [cave] section
ShortExplosions
This is for compatibility to different C64 engines.
If set to true, the engine will skip EXPLOSION1 and DIAMONDBIRTH1 starting the sequences right with EXPLOSION2 and DIAMONDBIRTH2.
true for BD1, BD2, PLCK and DAS.
false for 1stB, CrLi.
Size
size=width height [x1 y1 x2 y2]
Dimensions of the cave. If x1, y1, x2, y2 are given, only that part of the cave is visible. Available only in [cave] section. Can range from 20 12 up to 128 128.
default values correspond to game info
XDC supports either 40 22 0 0 39 21, 40 22 0 0 19 11 or 20 12 0 0 19 11. Other sizes between 20 12 and 40 22 will be filled up with InitialBorder by XDC's BDCFF compiler.
SlimePermeability
Slime probability of penetrating (float number). This one is true random. (default=1.0)
SlimePermeabilityC64
permeability
Slime permeability C64 style (number, 8 bit all with equal value). This one is predictable. The predictablerandom behavior is influenced by the RandomAlgorithm attribute, ie. the last one set is used. (one or one number for each level, BDCFF native default = 0)
The seeds can be set with SlimePermeabilityC64.seed and is only effective if this is used after any other pseudo random related objects. -1 means engine default. (one or one number for each level, BDCFF native default = -1)
SlimeProperties
element 1 element 2 [element 1 element 2 [...]]
Slime can take element 1 from above and place element 2 under it.
(default=DIAMOND DIAMONDfd BOULDER BOULDERfd)
WWW
Link to author's webpage

Cave Objects

Add=incx incy search_element add_element [replace_element]
If replace_element is specified, only draw over that element.
incx and incy may be negative numbers.
Addbackwards=incx incy search_element add_element [replace_element]
This is like the regular Add, but works from bottom up.
If replace_element is specified, only draw over that element.
incx and incy may be negative numbers.
BoundaryFill=x y fill_element boundary_element
Sets element in place and fills to the boundary element with a 4-direction algorithm.
FillRect=x1 y1 x2 y2 element [element2]
Filled rectangle of elements
FloodFill=x y fill_element replace_element
Sets element in place and floodfills the replace element with a 4-direction algorithm. If replace_element is not specified, the element at the start coordinates is used.
Line=x1 y1 x2 y2 element
Line of elements
Note that the exact way to draw unsymetrical lines is not decided yet.
Maze=x1 y1 x2 y2 wall_width path_width bias seed_1 [seed_2 .. seed_n] wall_element path_element type [river_factor [braid_percentage]]
The number of seeds is equal to the number of levels.
A seed of -1 means totaly random, ie. different appearance every time the cave starts.
The border is not included. However, any colums and rows at the and which don't fit further path will be filled up with the wall element. (not supported by XDC, so use fitting sizes only).
Unicursal mazes always are drawn with even numbers of paths horizontally and vertically.
If only walls or only path shall be drawn, the unneded element can be NONE, which is a reserved element name for drawing nothing.
bias: a float number whereas 0=vertically biased, 50=neutral, 100=horizontally biased. Works best with a high river factors.
river_factor: a float number whereas 0=many junctions and 100=long paths.
braid_percentage: a float number whereas 0=perfect, 100=full braid, ie. no dead ends.
type can be
perfect: a perfect maze (default)
braid: a maze with no dead ends. Pacman style.
partial_braid: a mix of those two above. Use braid_percentage to specify.
unicursal: without any junctions.
Map=x1 y1 x2 y2 [element] map
Fill a subsection with a map with char codes as in a [map]-section. The map begins in a new line.
If element is given, only draw this element, ie. all other characters are considered background. XDC only supports PLCK elements in maps. If element is used, only 15 of the possible 16 elements can be used in XDC. Width should be a multiple of 2 or the most right column will be padded.
Point=x y element
Single element placed on given position
RandomFill=x1 y1 x2 y2 seed_1 [seed_2 .. seed_n] initial_element element1 probability1 [element2 probability2 [element3 probability3 [element4 probability4]]] [replacement element]
The number of seeds is equal to the number of levels.
A seed of -1 means totaly random, ie. different appearance every time the cave starts.
Initial element can be NONE, which is a reserved element name for drawing nothing.
if replace element is given, it will only be drawn over this.
The predictable random behavior is influenced by the RandomAlgorithm attribute, ie. the last one set is used.
Raster=x y numberx numbery stepx stepy element
Rectangle=x1 y1 x2 y2 element
Outlined rectangle of elements

Cave Elements and Default Map Codes

element 1 char. code 2 char. code
SPACE    
DIRT . ..
DIRT2
WALL w Ww
MAGICWALL M WM
OUTBOX X XX
OUTBOXopen XY
HIDDENOUTBOX H HX
HIDDENOUTBOXopen
STEELWALL W Ws
FIREFLYl Q ol
FIREFLYld
FIREFLYu o ou
FIREFLYud
FIREFLYr O or
FIREFLYrd
FIREFLYd q od
FIREFLYdd
BOULDER r rr
BOULDERd
BOULDERf  R rf
BOULDERfd
DIAMOND d dd
DIAMONDd
DIAMONDf  D df
DIAMONDfd
INBOX P P1
GUYBIRTH1
GUYBIRTH2
GUYBIRTH3
GUYBIRTH4
DIAMONDBIRTH1
DIAMONDBIRTH2
DIAMONDBIRTH3
DIAMONDBIRTH4
DIAMONDBIRTH5
DIAMONDBIRTH6
WALLEATABLE
HEXPANDINGWALL x Wx
HEXPANDINGWALLd
VEXPANDINGWALL v Wv
VEXPANDINGWALLd
EXPANDINGWALL V
EXPANDINGWALLd
BUTTERFLYd c bd
BUTTERFLYdd
BUTTERFLYl C bl
BUTTERFLYld
BUTTERFLYu b bu
BUTTERFLYud
BUTTERFLYr B br
BUTTERFLYrd
AMOEBA a am
AMOEBAd
AMOEBA2
AMOEBA2d
SLIME s sl
SLIME2
ACID AC
ACIDd
BOULDERBIRTH1
BOULDERBIRTH2
BOULDERBIRTH3
BOULDERBIRTH4
CLOCK
CLOCKBIRTH1
CLOCKBIRTH2
CLOCKBIRTH3
CLOCKBIRTH4
EXPLOSION1
EXPLOSION2
EXPLOSION3
EXPLOSION4
EXPLOSION5
EXPLOSION6
GUY
GUYd
GUYBOMB
GUYBOMBd
GUYGLUED
GUYGLUEDd
DUMMY F PF
SOKOBANBOX Sb
DIAMONDBIRTHamoeba1
DIAMONDBIRTHamoeba2
DIAMONDBIRTHamoeba3
DIAMONDBIRTHamoeba4
FALLINGWALL
FALLINGWALLd
FALLINGWALLf
FALLINGWALLfd
HEXPANDINGSTEELWALL WH
HEXPANDINGSTEELWALLd
VEXPANDINGSTEELWALL WV
VEXPANDINGSTEELWALLd
EXPANDINGSTEELWALL
EXPANDINGSTEELWALLd
STEELWALLDESTRUCTABLE
STELLWALLEATABLE
BITERSWITCH
FIREFLYBUTTERFLYSWITCH
EXPANDINGWALLSWITCH
BLADDERSPENDER
BLADDER
BLADDERd1
BLADDERd2
BLADDERd3
BLADDERd4
BLADDERd5
BLADDERd6
BLADDERd8
BLADDERd8
BLADDERd9
BOMB
IGNITEDBOMB1
IGNITEDBOMB2
IGNITEDBOMB3
IGNITEDBOMB4
IGNITEDBOMB5
IGNITEDBOMB6
IGNITEDBOMB7
BOMBEXPLOSION1
BOMBEXPLOSION2
BOMBEXPLOSION3
BOMBEXPLOSION4
SWEET
GHOST
GHOSTd
GHOSTEXPLOSION1
GHOSTEXPLOSION2
GHOSTEXPLOSION3
GHOSTEXPLOSION4
GRAVESTONE G
GLUEDSTONE
GLUEDDIAMOND
GLUEDDIRT
DIAMONDRELEASEKEY
TRAPPEDDIAMOND
TIMEPENALTY
WAITINGBOULDER
WAITINGBOULDERd
CHASINGBOULDER
CHASINGBOULDERd
STEELWALLBIRTH1
STEELWALLBIRTH2
STEELWALLBIRTH3
STEELWALLBIRTH4
BITERd
BITERdd
BITERl
BITERld
BITERu
BITERud
BITERr
BITERrd
ACIDEffect
AMOEBAbouldereffect
AMOEBAdiamondeffect
AMOEBA2bouldereffect
AMOEBA2diamondeffect
AMOEBA2LOOKSLIKEeffect
BOMBEXPLOSIONeffect
BOULDERbouncingeffect
BOULDERfallingeffect
DIAMONDbouncingeffect
DIAMONDfallingeffect
DIRTLOOKSLIKEeffect
EXPANDINGWALLLOOKSLIKEeffect
FALLINGWALLeffect
MAGICWALLbouldereffect
MAGICWALLdiamondeffect
NONE
Names ending with "effect" are used by the physic engine. Not to be set directly, but for the effect command.
Names ending with "l", "r", "u", "d" (except for a succeeding "d") indicating the direction.
Names ending with "f" (except for a succeeding "d") indicating a falling state.
Names ending with "d" indicating a delayed state. The delay state is used in order to prevent a second movement during the same scan interval.
Char codes should not include "&", "[", "]", "<" and ">", as well as no characters beyond the 7 bit ASCII table, since BDCFF files are supposed to work on parsers with HTML like character coding and stucture.
STEELWALLDESTRUCTABLE was also called WALL2 in some BDCFF-files around.