BLIGHT (File Format)
The BLIGHT (Binary LIGHT) filetype controls lighting effects on characters, karts, items and objects in a track. It is always seen in the posteffect folder inside an U8. This file is not required for a track to load, as there is a default.blight file inside Common.szs.
The following table describes the version 2 LIGHT header.
|0x00||String||File magic. Always LGHT in ASCII.|
|0x04||UInt32||File size. Always 0x5A8 in MKW.|
|0x08||Byte||Version. Always 02 in MKW|
|0x0C||UInt32||Unknown. Always 00 00 00 00.|
|0x10||UInt16||Number of LOBJs. Always 0x10 in MKW.|
|0x12||UInt16||Number of Ambient Lights. Always 0x10 in MKW.|
|0x14||Byte||RGBA ambience black color. Always 00 00 00 FF.|
However, one thing to note is that although 16 lights are stored in this file, only 8 can be referenced by the KCL (IDs 00 to 07). This is because the KCL only has three binary digits to reference lights (and 111 in binary = 7).
Light Object data (LOBJ)
The first light object starts at 0x28. These addresses are relative to the start of the object.
|0x00||String||Section magic. Always LOBJ in ASCII.|
|0x04||UInt32||Section size. Always 0x50.|
|0x08||Byte||Version. Always 02 in MKW, except for loser_demo and draw_demo, in which said value is 01.|
|0x0C||Byte||Unknown. Always 00 00 00 00.|
|0x10||Byte||Attenuation angle falloff function
|0x11||Byte||Attenuation distance falloff function. Used together with the attenuation references below. This Desmos graph shows how the three types (blue = gentle, red = steep) behave over distance.
|0x12||Byte||Coordinate system for origin and destination
|0x13||Byte||Light type: 00 = omni light, 01 = directional, 02 = spotlight. Always 01 in Nintendo tracks.|
|0x14||UInt16||This value stores the index of the ambient light this light uses. It's also used to link into the LTEX gradient table.|
|0x16||UInt16||Bitfield. Always 06 41 (1, 6, 9 and 10) or 06 21 (1, 5, 9 and 10). Unknown values are not included.
|0x18||Float||3D origin vector.|
|0x24||Float||3D destination vector.|
|0x30||Float||This seems to control how large the color effect is on this light.|
|0x34||Byte||RGBA light color.|
|0x38||Byte||Ambient color for BLMAP lighting stages.|
|0x3C||Float||Spotlight cutoff angle|
|0x40||Float||Attenuation reference distance|
|0x44||Float||Attenuation reference brightness|
|0x4C||UInt16||Light Object index used for vector shifting|
|0x50||End of object, start of next|
Ambient Light data
Ambient colors are used by each light object. They are linked by a light.
|0x00||Byte||RGBA ambient light color.|
|0x08||End of color, start of next|
All unused ones are 64 64 64 FF (a neutral gray).
The following tools can handle BLIGHT files: