Automata Subfiles

From SC4D Encyclopaedia
Revision as of 04:38, 12 February 2023 by Memo (talk | contribs) (→‎Vehicle Automata Subfile (0x896e714a): fix indentation)
Jump to navigation Jump to search

This page pertains to the format of the Automata Subfiles within the Savegame files.

Vehicle Automata Subfile (0x896e714a)

Structure

List of records of the form:

DWORD           Record Size
DWORD           CRC
DWORD           Memory address
WORD×3          Version (always 2, 2, 8)
BYTE            Zot (always 0x04)
DWORD           Unknown (always 0)
BYTE            Appearance flag (e.g. 0x10, 0x11, 0x14 or 0x15)
DWORD           Record type identifier (always 0xc7cc75f1)
BYTE×4          (Min Tract X, Min Tract Z, Max Tract X, Max Tract Z) coordinate
WORD×2          Tract size (X, Z)
DWORD           Count of properties
    SGPROP      SaveGame Properties, repeated Count times (e.g. Occupant Group property 0xAA1DD396)
DWORD×3         (Group=0x096E6739, Type=0x6534284A, Instance)-ID of Exemplar
FLOAT32×3       (x, y, z)-coordinate A
FLOAT32×3       (x, y, z)-coordinate B or (-1, -2, -3)
FLOAT32×3       Direction (a unit vector)
FLOAT32         Unknown scalar (approximately satisfies: coordinate A + direction * scalar / 2 = coordinate C)
FLOAT32         Speed in km/s (in range 80..110 km/h defined in Automata Controller)
DWORD           Unknown bitset
DWORD           Unknown (always 0)
DWORD           Address
    DWORD       Subfile (Automata Attractor subfile) when Address is not 0
FLOAT32×5       Unknown (the last three are 0.0 if the attractor is absent, so might be related parameters)
DWORD           Address
    DWORD       Subfile (e.g. Trailer Vehicle, Ambulance, Bus, Patrol Car) when Address is not 0
DWORD           Count of blocks to follow
    DWORD       Unknown (seen 0, 7, 13)
    WORD        Unknown (always 0x03)
    DWORD       Address
        DWORD   Subfile (Automata Generator or Attractor subfile) when Address is not 0
    DWORD       Index of block starting at 0, 1,...
    FLOAT32     Unknown (-1.0 or large numerical values)
    DWORD       Unknown (0 or 1)
    BYTES×5     Unknown (always 0)
    DWORD       Unknown bitset
DWORD           Count of auxiliary models
    DWORD×3     TGI of auxiliary S3D-model (e.g. head lights, rear lights)
DWORD×3         TGI of S3D-model
DWORD           Instance ID
DWORD           Count of manager addresses
    DWORD       Address
    DWORD       Subfile (e.g. City Situation Manager or Automata Controller Manager)
FLOAT32         Speed in km/s (can differ from other speeds)
FLOAT32         Speed in km/s (can differ from other speeds)
FLOAT32×6       Unknown (often 0 or 1, but numerical values are possible)
BYTE            Unknown (seen 0, 25, 50, 254)
DWORD           Occupant Group
DWORD           Address
    DWORD       Subfile (e.g. Trailer Vehicle, Ambulance, Bus, Patrol Car) when Address is not 0
DWORD           Unknown (seen 1, 3, 7)
BYTE            Unknown (in range 0...47 -- maybe vehicle lifespan?)
DWORD           Address of network tile
    DWORD       Subfile (e.g. Network Subfile 1, Prebuilt Network Subfile, Bridge Subfile) when Address is not 0
BYTE            Exit side of path (0,1,2,3 = W,N,E,S)
BYTE            Entry side of path (0,1,2,3 = W,N,E,S)
BYTE            Path class number
BYTE            Unknown (presumably Path Transport Type, i.e. 0x01 for vehicles)
DWORD           Unknown (seen 0...40 -- smaller values are much more frequent)
DWORD           Count of blocks to follow
    BYTE×3      Unknown (seen for Occupant Group Moving Van)
DWORD×2         Unknown (always 0)
FLOAT32×3       (x, y, z)-coordinate C or (-1, -2, -3)
FLOAT32×3       (-1, -2, -3)
FLOAT32         Unknown (often 0.0)

For the format of the properties, see SaveGame Properties.