ASB

From EPD Wiki
Revision as of 04:21, 31 December 2023 by Dt12345 (talk | contribs) (started on an overview, will finish when the rest of the format is finished)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

ASB (Animation Sequence Binary) is a file format used to store animation sequences for actors in recent Nintendo EPD games such as The Legend of Zelda: Tears of the Kingdom and Nintendo Switch Sports. This article is primarily aimed at the version that appears in Tears of the Kingdom (v0x0417). ASB files can be found in the AS folder of the romfs as well as the AS folder of certain pack files.

File Structure

ASB is a little endian format which consists of node pathways triggered by AS commands. When an AS command is called, it runs the sequence of nodes connected to it which trigger and control animations and animation logic. Nodes are arranged in an array and referenced and accessed by their array index.

All string offsets in the file are relative to the start of the string pool and name hashes are 32-bit murmur3 hashes. There are six possible parameter types: string, int (32-bit signed integer), float (32-bit floating point number), bool, vector3f, and pointer (object pointer).

Section Order

  1. File Header (0x6C bytes in version 0x417, 0x68 bytes in version 0x40F)
  2. AS Commands
  3. Nodes
  4. Event Entries Offsets
  5. Node Bodies
  6. 0x38 Section Indices
  7. 0x38 Section
  8. 0x2C Section
  9. Events
  10. Transitions (possibly the wrong description)
  11. 0x64 Section
  12. Local Blackboard Parameters
  13. 0x34 Section (possibly animation slots)
  14. Bone Groups
  15. 0x40 Section
  16. Tag List
  17. Expression Binary
  18. String Triplets
  19. Tag Groups
  20. Command Groups
  21. 0x28 Section
  22. String Pool

Sections

File Header

Offset Size Type Description
0x00 0x04 char[4] Magic - "ASB "
0x04 0x04 u32 Version (0x0417 in Tears of the Kingdom, 0x040F in Nintendo Switch Sports and Splatoon 3)
0x08 0x04 u32 Filename Offset
0x0C 0x04 u32 AS Command Count
0x10 0x04 u32 Node Count
0x14 0x04 u32 Event Count
0x18 0x04 u32 0x34 Section Entry Count
0x1C 0x04 u32 0x38 Section Entry Count
0x20 0x04 u32 Local Blackboard Parameters Offset
0x24 0x04 u32 String Pool Offset
0x28 0x04 u32 0x28 Section Offset
0x2C 0x04 u32 0x2C Section Offset
0x30 0x04 u32 Event Entries Offset Array Offset
0x34 0x04 u32 0x34 Section Offset
0x38 0x04 u32 0x38 Section Offset
0x3C 0x04 u32 0x38 Section Indices Array Offset
0x40 0x04 u32 0x40 Section Offset
0x44 0x04 u32 0x40 Section Entry Count
0x48 0x04 u32 Bone Groups Offset
0x4C 0x04 u32 Bone Group Count
0x50 0x04 u32 String Pool Size
0x54 0x04 u32 Transitions Offset
0x58 0x04 u32 Tag List Offset
0x5C 0x04 u32 String Triplets Offset
0x60 0x04 u32 EXB Offset (empty if section does not exist)
0x64 0x04 u32 0x64 Section Offset (empty if section does not exist)
0x68 0x04 u32 Command Groups Offset (version 0x417 only)