Difference between revisions of "Background/Arena File Format (.BK)"

From WTFwiki
Jump to navigation Jump to search
m (19 revisions)
 
(14 intermediate revisions by 2 users not shown)
Line 9: Line 9:
 
|Unknown || 1 BYTE || ? 1, 2 or variable
 
|Unknown || 1 BYTE || ? 1, 2 or variable
 
|-
 
|-
|Width || 1 WORD || Background width? (always 320?)
+
|Width || 1 WORD || Background width (always 320?)
 
|-
 
|-
| Height || 1 WORD || Background height? (always 200?)
+
| Height || 1 WORD || Background height (always 200?)
 
|}
 
|}
  
Line 26: Line 26:
  
 
{| border='1'
 
{| border='1'
| Unknown || 1 BYTE || Nul padding?
+
| Unknown || 1 BYTE || Nul padding? (not for fire pit wandering orb)
 
|-
 
|-
| Unknown || 1 BYTE ||
+
| Unknown A || 1 BYTE || Animation to chain to if collision/hit (eg. fire orb 15 -> fire ball 17)
 
|-
 
|-
| Unknown || 1 BYTE ||
+
| Unknown B || 1 BYTE || Animation to chain to on no collision/hit(?) (eg. fire orb 15 -> fire orb fade 16)
 
|-
 
|-
| Unknown || 1 BYTE ||
+
| 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.
 
|-
 
|-
| Unknown || 1 WORD ||
+
| 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 || 1 BYTE ||
+
| Unknown E || 1 BYTE || Arena hazard damage (eg. spike pit, fire pit fireball, electric walls in powerplant)?
 
|-
 
|-
| Something size || 2 BYTES ||
+
| Something size || 1 WORD ||
 
|-
 
|-
| Something || N BYTES || Size is determined by the previous value
+
| Something || N BYTES || Animation string, size is determined by the previous value
 
|}
 
|}
 +
 +
There then follows an [[HAR File Format (.AF)#Animation|AF Animation Structure]].
 +
 +
== Footer ==
 +
 +
After the animations there is a footer structure:
 +
 +
{| border='1'
 +
| 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 ===
 +
 +
{| border='1'
 +
| 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:
 +
 +
{| border='1'
 +
! Index !! Purpose
 +
|-
 +
| 0-3 || Fade to black, for shadows
 +
|-
 +
| 4 || Dark blue, for menu backgrounds
 +
|-
 +
!colspan=2| 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 (?)
 +
|-
 +
!colspan=2| Fire pit [3 palettes: normal, fire, ice]
 +
|-
 +
| ?? || TODO
 +
|-
 +
!colspan=2| Desert [4 palettes]
 +
|-
 +
| 5-18 || Slow fade to white
 +
|}
 +
 +
=== Rest of footer ===
 +
An [[HAR File Format (.AF)#Footer|AF Footer]] follows.
 +
 +
== Sample Implementations ==
 +
 +
[[PythonAfBkParser|Sample python parser for .af and .bk files]]

Latest revision as of 22:49, 4 January 2013

The BK file format is similar in many ways to the AF file format, however, there are some signifigant differences.

Header

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

Animation Header

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 AF Animation Structure.

Footer

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

Rest of footer

An AF Footer follows.

Sample Implementations

Sample python parser for .af and .bk files