Skip to content
widberg edited this page Oct 12, 2023 · 49 revisions

Chum World LOD
ImZouna Lod_Z

This has an associated Data Class.

struct Lod_Z : Object_Z {
    PascalArray<struct SphereColNode {
        Sphere_Z sphere;
        std::uint32_t flags;
        crc32_t linkCRC32;
    }> sphereColNodes;
    PascalArray<struct BoxCol {
        Mat4f transformation;
        std::uint32_t flags;
        crc32_t linkCRC32;
    }> boxCols;
    Vec3f close;
        // gets fed to the same close function as in mesh
        // close.y always 0
    PascalArray<crc32_t> skinOrMeshCRC32s;
        // Pascal array of skin and/or mesh crc32s
    std::uint32_t zero;
        // Always 0
    Optional<Map<std::uint32_t, crc32_t>, std::uint32_t> animationEntries;
        // Optional map of ids to animation crc32s
    Optional<Map<std::uint32_t, crc32_t>, std::uint32_t> soundEntries;
        // Optional map of ids to sound crc32s
    crc32_t userDefineCRC32;
};
//------------------------------------------------
//--- 010 Editor v11.0.1 Binary Template
//------------------------------------------------

struct Lod_Z
{
    uint32 sphereColNodeCount;
    struct SphereColNode
    {
        float center[3];
        float radius;
        uint32 flags;
        uint32 someNameCRC321;
    } sphereColNodes[sphereColNodeCount];
    uint32 boxColCount;
    struct BoxCol
    {
        float transformation[16];
        uint32 flags;
        uint32 someNameCRC321;
    } boxCols[boxColCount];
    float closeX;
    float closeY;
    float radius;
    uint32 count;
    uint32 skinCRC32s[count];
    uint32 zero2;
    uint32 soundEntriesOption;
    if (soundEntriesOption) {
        uint32 soundEntryCount;
        struct SoundEntry
        {
            uint32 id;
            uint32 soundCRC32;
        } soundEntries[soundEntryCount];
    }
    uint32 soundEntries1Option;
    if (soundEntries1Option) {
        uint32 soundEntry1Count;
        SoundEntry soundEntries1[soundEntry1Count];
    }
    uint32 userDefineCRC321;
} lod;
Lod_Z_Alt

//------------------------------------------------
//--- 010 Editor v11.0.1 Binary Template
//------------------------------------------------

struct Lod_Z_Alt
{
    uint32 x;
    uint32 unknown0Count;
    struct Unknown0
    {
        float a;
        float b;
        float c;
        float d;
        uint32 e;
        float f;
    };
    if (x)
    {
        Unknown0 unknownDs;
    }
    uint32 unknownXCount;
    Unknown0 unknown0s[unknownXCount];
    uint32 unknown1Count;
    struct Unknown1
    {
        float transformation[16];
        uint32 q;
        float r;
    } unknown1s[unknown1Count];
    uint32 unknown2;
    uint32 unknown3;
    uint32 unknown4;
    float u0;
    uint32 count;
    uint32 skinCRC32s[count];
    uint32 u1;
    byte soundEntriesOption;
    if (soundEntriesOption) {
        uint32 soundEntryCount;
        struct SoundEntry
        {
            uint32 id;
            uint32 soundCRC32;
        } soundEntries[soundEntryCount];
    }
    byte unknown4Option;
    if (unknown4Option) {
        uint32 unknown4Count;
        struct Unknown4
        {
            uint32 a;
            uint32 b;
        } unknown4s[unknown4Count];
    }
    uint32 unknown5;
} lod;
//------------------------------------------------
//--- 010 Editor v11.0.1 Binary Template
//------------------------------------------------

struct Lod_Z_Alt_Alt
{
    uint32 x;
    uint32 unknown0Count;
    struct Unknown0
    {
        float a;
        float b;
        float c;
        float d;
        uint32 e;
        float f;
    };
    if (x)
    {
        Unknown0 unknownDs;
    }
    uint32 unknownXCount;
    Unknown0 unknown0s[unknownXCount];
    uint32 unknown1Count;
    struct Unknown1
    {
        float transformation[16];
        uint32 q;
        float r;
    } unknown1s[unknown1Count];
    uint32 unknown2;
    uint32 unknown3;
    uint32 unknown4;
    float u0;
    uint32 count;
    uint32 skinCRC32s[count];
    uint32 u1;
    uint32 soundEntriesOption;
    if (soundEntriesOption) {
        uint32 soundEntryCount;
        struct SoundEntry
        {
            uint32 id;
            uint32 soundCRC32;
        } soundEntries[soundEntryCount];
    }
    uint32 unknown4Option;
    if (unknown4Option) {
        uint32 unknown4Count;
        struct Unknown4
        {
            uint32 a;
            uint32 b;
        } unknown4s[unknown4Count];
    }
    uint32 unknown5;
} lod;

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