The BK file format is similar in many ways to the AF file format, however, there are some signifigant differences.
Unknown |
1 DWORD |
0 for INTRO, 2 for ending cutscenes,4 for main menu/newsroom/VS/Mechlab/melee, 6 for credits,
8 for Arena0, 16 for Arena1, 32 for Arena2, 64 for Arena3 and 128 for Arena4
|
Unknown |
1 BYTE |
? 1, 2 or variable
|
Width |
1 WORD |
Background width (always 320?)
|
Height |
1 WORD |
Background height (always 200?)
|
Animations
Each animation is preceded by the offset of the next animation stored as a DWORD, along with an animation number. Reading the animation and advancing the file pointer should result in the file pointer being the same as the next animation offset. An animation number >= 50 marks the end of the animations section. When this occurs, the next animation offset is set to the offset of the current animation.
Next animation |
1 DWORD |
Position of next animation relative to start of file, in bytes
|
Animation number |
1 BYTE |
Unique identifier for animation
|
Unknown |
1 BYTE |
Nul padding? (not for fire pit wandering orb)
|
Unknown A |
1 BYTE |
Animation to chain to if collision/hit (eg. fire orb 15 -> fire ball 17)
|
Unknown B |
1 BYTE |
Animation to chain to on no collision/hit(?) (eg. fire orb 15 -> fire orb fade 16)
|
Repeat |
1 BYTE |
255 for repeating animations (eg. spotlights on main menu, torches in fire pit, newscaster's lips/eyes), Desert animation (spawn the planes) 0 has 254 in this field.
|
Probability |
1 WORD |
How likely this is to happen, lower is higher probability, 0 means never. 1 for torches/'cloud of dust' in fire pit, 200 for 'cloud of dust' in desert, 1000 for spikes in spike pit. For example, setting this to 1 for animation 0 in the desert means that planes will always be strafing you.
|
Unknown E |
1 BYTE |
Arena hazard damage (eg. spike pit, fire pit fireball, electric walls in powerplant)?
|
Something size |
1 WORD |
|
Something |
N BYTES |
Animation string, size is determined by the previous value
|
There then follows an animation structure (see .AF file format).
After the animations there is a footer structure:
Background image |
W*H BYTES |
W and H are the width and height in the file header
|
Num palettes |
1 BYTE |
Specifies the number of palettes which follow
|
Palettes
Palette data |
256 * 3 BYTES |
A palette
|
Palette remapping tables |
19 * 256 BYTES |
See below
|
The palette remapping tables are maps from image colour indices into palette indices, for various different colour effects. The tables are for:
Index |
Purpose
|
0-3 |
Fade to black, for shadows
|
4 |
Dark blue, for menu backgrounds
|
Most BK files
|
5-8 |
Saturating to white, then black-and-white (newsroom transition?)
|
9-13 |
Saturating light blue -> white (lightning flashes?)
|
14-18 |
Green (?)
|
Fire pit [3 palettes: normal, fire, ice]
|
?? |
TODO
|
Desert [4 palettes]
|
5-18 |
Slow fade to white
|
Sample Implementations
Sample python parser for .af and .bk files