Skip to content

Debug Font

widberg edited this page May 26, 2023 · 11 revisions

The font used to draw some debug views, such as the one associated with the command DisplaySoundInfo, is not found in a BigFile; instead, it is packed into the executable as an array of bytes representing the pixels of each character. This data can be represented using the following ImHex pattern:

struct Character {
    u8 pixels[8 * 8];
};

struct FontDebug_Z {
    Character characters[255 - 32];
};

An index in the characters array represents the extended ASCII value of that character minus 32 since the first 32 characters in the extended ASCII range are skipped due to being non-printable control characters; therefore the range of ASCII values represented by the characters array is [32-254]. Notably, 255 is missing from the range, this is a non-breaking space character and is not printable but no special case is made for it like the other non-printable characters; if one of the non-printable control characters before 32 is in a string to be printed, it is skipped and no space is left for it. The pixel data per character is stored as an 8 by 8 row-major matrix where a value of zero represents a black pixel and a non-zero value represents a white pixel.

The script font_debug.py will produce a font_debug.bmp file, shown below, from the printable characters in the debug font using the embedded font data dumped from FUEL. In this image, the ASCII value of each character starts at 32 and increases by 1 for each character when read left to right, top to bottom. Only the first 223 characters in this image are actually from the font data, the printable range, the remaining space is left empty to make the image square. The image should be viewed with nearest-neighbor sampling to look as close to how it does in-game as possible.

font_debug.bmp

Home
FAQ

For FMTK Users and Mod Developers

Read the Docs

For FMTK Developers

Asobo BigFile Format Specification
Asobo Classes
      Animation_Z
      Binary_Z
      Bitmap_Z
      Camera_Z
      CollisionVol_Z
      Fonts_Z
      GameObj_Z
      GenWorld_Z
      GwRoad_Z
      Keyframer*_Z
      Light_Z
      LightData_Z
      Lod_Z
      LodData_Z
      Material_Z
      MaterialAnim_Z
      MaterialObj_Z
      Mesh_Z
      MeshData_Z
      Node_Z
      Omni_Z
      Particles_Z
      ParticlesData_Z
      RotShape_Z
      RotShapeData_Z
      Rtc_Z
      Skel_Z
      Skin_Z
      Sound_Z
      Spline_Z
      SplineGraph_Z
      Surface_Z
      SurfaceDatas_Z
      UserDefine_Z
      Warp_Z
      World_Z
      WorldRef_Z
Asobo File Format Idioms
Asobo CRC32
Asobo LZ Compression
Asobo Arithmetic Coding Compression
Asobo Save Game File Format Specification
Asobo Audio Formats
TotemTech/ToonTech/Zouna/ACE/BSSTech/Opal Timeline
Zouna Modding Resources
Miscellaneous

Clone this wiki locally