Open main menu

O is a file extension in EA Sports games which is used for model and animation files. The file itself has an ELF structure. EA used their own code for ELF reading.

The file may contain model data, skeleton information, animations, rendering information and shaders.

Contents

ObjectsEdit

Objects can be obtained by symbols in the ELF symbol table or by pointers in other objects.

ModelEdit

Object name Size Visible
Model 0xE0 Yes

Model, or model variation, is a set of some rules (options) which determine which geometry data must be rendered. An .o file may contain different model variations.

OFFSET    Named datas
UINT32    Named datas count
UINT32    Textures count
MATRIX4X4 Transformation matrix
VECTOR4   unknown1 (2x next one)
VECTOR4   unknown2 (maybe scale)
VECTOR4   Bounding min
VECTOR4   Bounding max
VECTOR    Center
UINT32    Model options count
OFFSET    Model options names
UINT32    unknown3 (0)
OFFSET    unknown4 (0)
OFFSET    unknown5 (0)
OFFSET    Next model (0)
OFFSET    Model name (points to null-terminated string)
OFFSET    Textures
OFFSET    Texture names
UINT32    Variation ID
OFFSET    Model options states
BOOL32    Is model renderable
OFFSET    Model options (points to ModelOptions)
UINT32    unknown6 (0)
UINT32    unknown7 (0)
UINT32    unknown8
UINT32    Last frame with this model (runtime only)

BBOXEdit

Simply a bounding box.

Object name Size Visible
BBOX 0x18 Yes
VECTOR3 Min
VECTOR3 Max

RenderMethodEdit

Object name Size Visible
RenderMethod 0x34 Yes

Stores an information about data rendering.

OFFSET    Code block (points to where the code starts - usually geoprimdatabuffer+4)
OFFSET    Used code block (currently executed code block?)
OFFSET    unknown1
OFFSET    Effect
OFFSET    Next render method
OFFSET    Parameter names
UINT32    unknown2
UINT32    unknown3
OFFSET    Parent render method
OFFSET    Geometry data buffer
UINT32    unknown4
OFFSET    Name
OFFSET    EAGL Model object (probably, not defined at compile-time)

ModelOptionsEdit

Object name Size Visible
Unknown Dynamic No

Stores a list of model options.

OFFSET    Unknown (0)
#FOR number of model options in model
UINT32    number of render descriptors
#FOR number of render descriptors
UINT32    render descriptor (points to RenderDescriptor)
#END FOR
#END FOR

RenderDescriptorEdit

Contains a pointer to RenderMethod and a list of global parameters for each command in the code block.

OFFSET    render method (points to RenderMethod)
#FOR number of commands in code block
UINT32    global command parameter - objects count
UINT32    global command parameter - object (may be an integer or offset to object/objects)
#END FOR

First parameter in the list is always a pointer to GeometryInfo.

GeometryInfoEdit

UINT32    Indices count
UINT32    Vertices count
UINT32    Primitives count
BOOL32    unknown1

geoprimdatabufferEdit

Object name Size Visible
Unknown Dynamic Yes

Stores a code (list of instructions) for rendering. Eeach instruction may additionally use a global parameter, which is stored in RenderDescriptor.

UINT32    unknown1 (usually 0)
#WHILE Instruction idĀ != 0 AND Instruction sizeĀ != 0
UINT16    Instruction id
OFFSET    Instrution size (real size in bytes = Instruction size * 4)
#IF Instruction size > 1
UINT32[Instruction size - 1] Instruction parameters 
#END WHILE

CommandsEdit

ID Name Parameters Global parameter Description
1 NOP -
28 ? INT32 numMatrices1, INT32 numMatrices2, INT32 numMatrices3
32 SET_SAMPLER INT32 samplerIndex, INT32 textureStorageIndex Texture storage object
35 SET_VERTEX_SHADER_CONSTANT_MATRIX INT32 register
40 ? INT32 unused1, INT32 unused2 transpose matrices
69 SETUP_RENDER BOOL32 SoftwareVertexProcessing, INT32 unused Enable/disable software vertex processing; setup fog

ETTObjectEdit

Object name Size Visible
ETTObject 0x24 No

Represents an effect.

OFFSET    Vertex shader declarations
UINT32    Vertex shader declarations count
UINT32    Techniques count
OFFSET    Technique validation statuses
OFFSET    Techniques
OFFSET    Selected techniques
OFFSET    Selected techniques indices
UINT32    Max count of selected techniques
UINT32    Current technique index

ETTTechniqueEdit

Object name Size Visible
ETTTechnique 0x14 No

Represents an effect technique.

UINT32    State assignments count
OFFSET    State assignments
UINT32    Passes count
OFFSET    Passes
UINT32    unknown1

ETTPassEdit

Object name Size Visible
ETTPass 0x8 No

Represents an effect technique pass.

UINT32    State assignments count
OFFSET    State assignments

ETTStateAssignmentEdit

Object name Size Visible
ETTStateAssignment 0x10 No

Represents an effect technique state assignment.

UINT32    unknown1
UINT32    unknown2
UINT32    Data type
OFFSET    Data

NamedDataEdit

Object name Size Visible
Unknown 0x10 No

Container with additional model data. May contain lights information.

OFFSET    Name
UINT16    Entry size
UINT16    unknown1
UINT32    Entries count
OFFSET    Entries

EAGL_TOOLLIB_VERSIONEdit

SkeletonEdit

BoneEdit

Object name Size Visible
Bone 0x10 Yes

Bone information.

UINT32    Index
UINT32    unknown1
UINT32    unknown2
UINT32    unknown3

MorphEdit

AnimationBankEdit

Object name Size Visible
AnimationBank 0x20 Yes

Animations container.

UINT32    unknown1
UINT32    Animations count
UINT32    unknown2
UINT32    unknown3
OFFSET    Animations
OFFSET    Animation names
UINT32    unknown4
UINT32    unknown5