• This is a reminder of 3 IMPORTANT RULES:

    1- External self-promotion websites or apps are NOT allowed here, like Discord/Twitter/Patreon/etc.

    2- Do NOT post in other languages. English-only.

    3- Crack/Warez/Piracy talk is NOT allowed.

    Breaking any of the above rules will result in your messages being deleted and you will be banned upon repetition.

    Please, stop by this thread SoccerGaming Forum Rules And Guidelines and make sure you read and understand our policies.

    Thank you!

FIFA 11 (PC) file formats resarch - RenderWare 4.5 assets

tokke001

Senior Squad
There are many unknown values that I don't know yet, but I will try to understand it little bit every day :)
I don't know anything about bone matrices.
Vertex 0x20005:
Code:
Data before 0xFFFF0000 is same all vertices.

/00/00/00/01 /00/00/00/01 /00/00/00/00 /00/00/00/00 /00/00/00/00 /FF/FF/00/00
Unsigned int // Unknown. The value increases to the next vertex for example in first vertex 0xB, 2nd 0x13, 3th 0x1B…
Unsigned short // always 0x1000
Unsigned short // vertex buffer size + 2
Unsigned short // vertex block size
Unsigned short // unknown
Unsigned int // vertex count
Unsigned int // reference to vertex descriptor section part 0x20004

Face 0x20007 :
Code:
Data before 0xFFFF0000 is same all faces.

/20/00/00/02 /00/00/00/01 /00/00/00/00 /00/00/00/00 /00/00/00/00 /FF/FF/00/00
Unsigned int // reference to face buffer section part  0x10031
Unsigned int // face buffer size
Unsigned int // face count

Vertex descriptor 0x20004:
Code:
Unsigned int64 // Unknown.
Unsigned byte // Vertex elements count
Unsigned byte // Vertex block size
0xA to 0xF // unknown
For i = 0; i < Vertex elements count  i++
    Unsigned short // Stream
    Unsigned short // Offset in vertex block
    Unsigned int // Type
    Unsigned byte // Method
    Unsigned byte // Usage
    Unsigned byte // UsageIndex
Great, thank u
I think bonematrices at fifa 11 are 3x4 matrices, newer fifas use 4x4 maybe
Anyway the data seems different

I get some info of sections from the spore game rw4,
It s mostly a different format of the sections but it may give some answers
Link here (thx to Dmitri for this info):
https://github.com/emd4600/SporeMod...ac78c550e69547096e98/src/sporemodder/file/rw4
 

tokke001

Senior Squad
I modified my Noesis scripts (RX2/RX3) to support vertex colors and 2nd uv's for ambient textures. I think game uses Vertex colors and ambient lightmaps for lightning. NHL script support all rx2 for Xbox 360 version of FIFA 08/FIFA 09 also. There are no dec3n packed normals in Noesis api so the script doesn't support normals. Im not programming expert so backward converter is too hard for me. I have tried to extract meshes with rw4 blender plugin, but packed normals and vertex colors isn't same type in rw4.
NHL Vertex color lightning example:IMG

i found here some info how to unpack dec3n/udec3 to 3 floats (example for normals),
if it may be usefull :
https://stackoverflow.com/questions/8935419/how-do-i-unpack-dec3n-udec3-format


i had questions about the vertexformats:
* How to read BlendIndices (DeclarationUsage 2), wich are UBYTE4:
if i convert from newer fifas i need to read & do endian swap correctly, so i try :
read as 4 bytes (not sure if this is correct, or i should read as a 1 float)
Code:
Me.Indices = r.ReadBytes(4)

* How to read BlendWeight (DeclarationUsage 1), wich are UBYTE4N:
if i convert from newer fifas i need to read & do endian swap correctly, so i try :
read as 1 float
 

tokke001

Senior Squad
so,
i did a bit of a test :
with updating a fifa 11 head model file, from a newer fifa

after adding the bones data from the newer fifa,
i get this error:


i updated :
* vertex/indexdatas
* rx3section 3751472158 (AnimationSkin) ---> RWsection &H70003 (AnimationSkin)
* rx3section 255353250 (BoneRemap) updated correctly

only the head model file was updated,
but the whole player got disformed

i think i need to update the skeleton,
because the boneindexes changed :
for example for eyes,
at the vertex data: the indice changed from 51 to 147

for fifa 11,
i notice there s a renderware section &H70002 (SKELETON) in each head model file,
i ll try update this section with data from the (fifa 20) skeleton.rx3 file

https://github.com/emd4600/SporeMod...6e98/src/sporemodder/file/rw4/RWSkeleton.java

but i need a bit help,
according to sporedata there should be 3 sections (i think) :
1. pBoneNames
2. pBoneFlags
3. pBoneParents

but i m not sure what format the first 2 sections are
(section 1 dont look like names)
the 3th section looks similar to the data from (fifa 20) skeleton.rx3

part1 (pBoneNames?) :


part2 (pBoneFlags?) :


part3 (pBoneParents?) :
 

Skoczek

Fan Favourite
so,
i did a bit of a test :
with updating a fifa 11 head model file, from a newer fifa

after adding the bones data from the newer fifa,
i get this error:


i updated :
* vertex/indexdatas
* rx3section 3751472158 (AnimationSkin) ---> RWsection &H70003 (AnimationSkin)
* rx3section 255353250 (BoneRemap) updated correctly

only the head model file was updated,
but the whole player got disformed

i think i need to update the skeleton,
because the boneindexes changed :
for example for eyes,
at the vertex data: the indice changed from 51 to 147

for fifa 11,
i notice there s a renderware section &H70002 (SKELETON) in each head model file,
i ll try update this section with data from the (fifa 20) skeleton.rx3 file

https://github.com/emd4600/SporeMod...6e98/src/sporemodder/file/rw4/RWSkeleton.java

but i need a bit help,
according to sporedata there should be 3 sections (i think) :
1. pBoneNames
2. pBoneFlags
3. pBoneParents

but i m not sure what format the first 2 sections are
(section 1 dont look like names)
the 3th section looks similar to the data from (fifa 20) skeleton.rx3

part1 (pBoneNames?) :


part2 (pBoneFlags?) :


part3 (pBoneParents?) :
geez, I got scared
 

Beedy

Club Supporter
I found X360 NHL 11 debug demo and here is what I found in pdb symbols database. All the RW45 assets are known now.
RWOBJECTTYPE
Code:
00 00 00 03    RWOBJECTTYPE_NULL
00 01 00 00    RWOBJECTTYPE_NA
00 01 00 01    RWOBJECTTYPE_ARENA
00 01 00 02    RWOBJECTTYPE_RAW
00 01 00 03    RWOBJECTTYPE_SUBREFERENCE
00 01 00 04    RWOBJECTTYPE_SECTIONMANIFEST
00 01 00 05    RWOBJECTTYPE_SECTIONTYPES
00 01 00 06    RWOBJECTTYPE_SECTIONEXTERNALARENAS
00 01 00 07    RWOBJECTTYPE_SECTIONSUBREFERENCES
00 01 00 08    RWOBJECTTYPE_SECTIONATOMS
00 01 00 09    RWOBJECTTYPE_DEFARENAIMPORTS
00 01 00 0A    RWOBJECTTYPE_DEFARENAEXPORTS
00 01 00 0B    RWOBJECTTYPE_DEFARENATYPES
00 01 00 0C    RWOBJECTTYPE_DEFARENADEFINEDARENAID
00 01 00 0D    RWOBJECTTYPE_ATTRIBUTEPACKET
00 01 00 OE    RWOBJECTTYPE_ATTRIBUTEPACKET_DELEGATE
00 01 00 0F    RWOBJECTTYPE_BITTABLE
00 01 00 10    RWOBJECTTYPE_ARENALOCALATOMTABLE
00 01 00 30    RWOBJECTTYPE_BASERESOURCE_START
00 01 00 3F    RWOBJECTTYPE_BASERESOURCE_RESERVEDTO

OBJECTTYPE
Code:
00 07 00 00    OBJECTTYPE_NA
00 07 00 01    OBJECTTYPE_KEYFRAMEANIM
00 07 00 02    OBJECTTYPE_SKELETON
00 07 00 03    OBJECTTYPE_ANIMATIONSKIN
00 07 00 04    OBJECTTYPE_INTERPOLATOR
00 07 00 05    OBJECTTYPE_FEATHERINTERPOLATOR
00 07 00 06    OBJECTTYPE_ONEBONEIK
00 07 00 07    OBJECTTYPE_TWOBONEIK
00 07 00 08    OBJECTTYPE_BLENDER
00 07 00 09    OBJECTTYPE_WEIGHTEDBLENDER
00 07 00 0A    BJECTTYPE_REMAPPER
00 07 00 0B    OBJECTTYPE_SKELETONSINK
00 07 00 0C    OBJECTTYPE_SKINSINK
00 07 00 OD    OBJECTTYPE_LIGHTSINK
00 07 00 OE    OBJECTTYPE_CAMERASINK
00 07 00 0F    OBJECTTYPE_SKINMATRIXBUFFER
00 07 00 10    OBJECTTYPE_TWEAKCONTROLLER
00 07 00 11    OBJECTTYPE_SHADERSINK

RWGOBJECTTYPE
Code:
00 02 00 00    RWGOBJECTTYPE_NA
00 02 00 01    RWGOBJECTTYPE_CAMERA
00 02 00 02    RWGOBJECTTYPE_PALETTE
00 02 00 03    RWGOBJECTTYPE_RASTER
00 02 00 04    RWGOBJECTTYPE_VDES
00 02 00 05    RWGOBJECTTYPE_VBUF
00 02 00 06    RWGOBJECTTYPE_IDES
00 02 00 07    RWGOBJECTTYPE_IBUF
00 02 00 08    RWGOBJECTTYPE_LIGHT
00 02 00 09    RWGOBJECTTYPE_MESH
00 02 00 0A    RWGOBJECTTYPE_SHADER
00 02 00 0B    RWGOBJECTTYPE_COMPILEDSTATE
00 02 00 0C    RWGOBJECTTYPE_RENDEROBJECT
00 02 00 0D    RWGOBJECTTYPE_GSDATA
00 02 00 7F    RWGOBJECTTYPE_UPDATELOCATOR
00 02 00 0E    RWGOBJECTTYPE_VERTEXSHADER
00 02 00 0F    RWGOBJECTTYPE_VERTEXDATA
00 02 00 10    RWGOBJECTTYPE_INDEXDATA
00 02 00 11    RWGOBJECTTYPE_RASTERDATA
00 02 00 12    RWGOBJECTTYPE_BUILDSTATE
00 02 00 13    RWGOBJECTTYPE_PIXELSHADER
00 02 00 14    RWGOBJECTTYPE_VERTEXSHADER
00 02 00 15    RWGOBJECTTYPE_PROFILEMESH
00 02 00 16    RWGOBJECTTYPE_DESIGNVIEWOBJECT
00 02 00 17    RWGOBJECTTYPE_PROFILERENDEROBJECT
00 02 00 18    RWGOBJECTTYPE_IMAGE
00 02 00 19    RWGOBJECTTYPE_RENDEROBJECTCONTAINER
00 02 00 1A    RWGOBJECTTYPE_MESHCOMPILEDSTATELINK
00 02 00 1B    RWGOBJECTTYPE_SHADERCODE
00 02 00 20    RWGOBJECTTYPE_FONT
00 02 00 21    RWGOBJECTTYPE_GLYPHTABLE
00 02 00 22    RWGOBJECTTYPE_KERNTABLE
00 02 00 23    RWGOBJECTTYPE_PAGETABLE
00 02 00 24    RWGOBJECTTYPE_RASTERTEXTURE
00 02 00 25    RWGOBJECTTYPE_FACENAME

RWCOBJECTTYPE
Code:
00 08 00 01    RWCOBJECTTYPE_VOLUME
00 08 00 02    RWCOBJECTTYPE_SIMPLEMAPPEDARRAY
00 08 00 03    RWCOBJECTTYPE_TRIANGLEKDTREEPROCEDURAL
00 08 00 04    RWCOBJECTTYPE_KDTREEMAPPEDARRAY
00 08 00 05    RWCOBJECTTYPE_BBOX
00 08 00 06    RWCOBJECTTYPE_CLUSTEREDMESH
00 08 00 07    RWCOBJECTTYPE_MESHOPAGGREGATE
00 08 00 08    RWCOBJECTTYPE_OCTREE

ARENAID
Code:
00 EB 00 00    MODELINSTANCE_ARENAID
00 EB 00 01    MODELSKELETON_ARENAID
00 EB 00 02    MODELSKELETONPOSE_ARENAID
00 EB 00 03    MODELRENDER_ARENAID
00 EB 00 04    MODELCOLLISION_ARENAID
00 EB 00 05    MESHTRICOLLISION_ARENAID
00 EB 00 06    MESHSPHERECOLLISION_ARENAID
00 EB 00 07    SPLINE_ARENAID
00 EB 00 08    SCENELAYER_ARENAID
00 EB 00 09    LOCATION_ARENAID
00 EB 00 0A    LIGHT_ARENAID
00 EB 00 0B    CAMERA_ARENAID
00 EB 00 0C    ANIMSEQ_ARENAID
00 EB 00 0D    CHANNELCURVE_ARENAID
00 EB 00 0E    CULLINFO_ARENAID

EA::FxShader
Code:
00 EF 00 00    EA::FxShader::ParameterBlockDescriptor
00 EF 00 01    EA::FxShader::ParameterBlock
00 EF 00 04    EA::FxShader::FxRenderableSimple
00 EF 00 05    EA::FxShader::FxMaterial

EA::ArenaDictionary
Code:
00 EC 00 10    EA::ArenaDictionary
 
Last edited:

tokke001

Senior Squad
I ll post some more FIFA 11 RW4 sections :
next sections are needed for model animations (head, hair, body, shoes, gloves, ....)

H070002 : SKELETON
--> same as at spore game : Link
Code:
Uint OffsetBoneFlags
Uint OffsetBoneParents
Uint OffsetBoneNames
Uint NumBones
Uint SkeletonID
Uint NumBones   'bone count again

Hash BoneNames(NumBones)  'fnv132 hashed names for each bone

Uint BoneFlags(NumBones)      'flags for each bone

Uint BoneParent(NumBones)      'parents for each bone

H070003 : ANIMATIONSKIN
contains matrices for all skeleton bones
--> Near similar to Spore game : Link
Code:
Uint Offset   'offset to BoneMatrices
Uint NumBones
Uint Unknown_1  'usually 0 (padding?)
Uint Unknown_2  'usually 0 (padding?)

Matrix4x4 matrices(NumBones)   'skin-to-bone matrix, for each bone

H07000F : SKINMATRIXBUFFER
contains matrices for all skeleton bones,
matrices are usually 0 and 1 values :
[1,0,0,0
0,1,0,0
0,0,1,0]
--> Near similar to Spore game : Link
Code:
Uint Offset   'offset to BoneMatrices
Uint NumBones
Uint Unknown_1  'usually 0 (padding?)
Uint Unknown_2  'usually 0 (padding?)

Matrix3x4 matrices(NumBones)   'skin-to-bone matrix, for each bone

BoneRemap
this is at fifa 11 present at the rx3 section of the file (RX3_SECTION_BONE_REMAP = 255353250),
and same format to later fifa games
--> see Dmitri infos (BoneRemap) : Link
 

tokke001

Senior Squad
for who wants to readout FIFA 11 kit-files,
section 00 EC 00 03 is used for kit position settings (hotspot)

HEC0003 : HOTSPOT
section contains positions for placing special things on the kit - numbers, crest etc.

Rich (BB code):
Byte Unknown_1
Byte NumAreas   'number of areas
Byte Unknown_2
Byte Unknown_3

'infos
For i = 0 To NumAreas - 1
    Uint AreaData(i).PointerOffsetAreaName     'offset to (*1)
    Byte AreaData(i).NumHotSpots         'number of hot-spots in area
    Byte AreaData(i).Unknown(3)
    Uint AreaData(i).PointerOffsetHotSpotNames     'offset to (*2)
    Uint AreaData(i).PointerHotspotRectangles    'offset to (*3)
Next i

'offsets to names
For i = 0 To NumAreas - 1
    Uint AreaData(i).OffsetAreaName        '(*1)      'offset to (*4)

    For h = 0 To Me.AreaData(i).NumHotSpots - 1    '(*2)
          Uint AreaData(i).HotSpots(h).OffsetHotSpotName        'offset to (*5)
    Next h
Next i

'names
For i = 0 To NumAreas - 1
     String AreaData(i).AreaName    '(*4)     'null-terminated string
     For h = 0 To AreaData(i).NumHotSpots - 1
           String AreaData(i).HotSpots(h).HotSpotName    '(*5)     'hot-spot name, null-terminated string
     Next h
Next i

'padding
Byte Padding(10)  
           
'HotspotRectangles
For i = 0 To NumAreas - 1
       (*3)
       For h = 0 To Me.AreaData(i).NumHotSpots - 1
              Float(4) AreaData(i).HotSpots(h).HotspotRectangle
       Next h         
Next i

* Note:
"PointerOffsetAreaName" is actually = offset to offset of the AreaName
 
Last edited:

tokke001

Senior Squad

Skeletons - FIFA 11 pc/ps3​


FIFA 11 pc & ps3 both use the same (RW4)-rx3 files,
but the skeletons at both games are different

the Skeleton (H070002) is present in each rx3 file (with animations)
the bone-names are hashed (fnv132 hash format), but i figured out some names wich were the same as newer games

i uploaded an excel sheet with the bone-names i know (of pc & ps3),
maybe there are ways to figure out more about the (still) unknown bones


Skeleton (bone-names) pc/ps3 :​

 

tokke001

Senior Squad

RW4 Sections​


i ll share here,
from my .dll for reading/writing rx2/rx3 files:
my code for All used RW4 sections (all stadium sections, ...) by FIFA 11 or older rx2 games

for who s interested,
it will give an idea on the layouts of the different RW4 sections


i identify & mapped all sections:
* all offsets are found (i think)
* some values are named "unknown":
because not all values are guessed what they are used for
however they are identified as floats/integers/ ...

Download:​


Credits also to @Beedy for his infos !
 
Last edited:

marqisspes5

Club Supporter
the original spore script dont work on fifa 11 files,
i think the files are still too different

i know there s also the old "Cyberface converters",
those program(s) export the vertex data from rx3, allow them to inport into blender (scipt included), and import into rx3 again
the big minor is:
it 'only' allows to edit vertexes, not add or remove any,
also there are some bugs (only the format for head files are included), hair editing or other files may not work
https://www.moddingway.com/file/5977.html
https://www.moddingway.com/file/9801.html

i tried get some more info about vertexes,
maybe u can help me with more info about vertexes:

i notice a vertex format is same (FIFA 11 vs newer fifa),
but fifa 11 uses a big-endian format, new fifas little-endian (like u say, the arena-fileheader value shows this also)
the reason maybe we cant just copy the vertex data from fifa 16 to fifa 11 (needs formatting?)

in a rx3 file,
when a vertexsize is 32bits,
it got these values (in this order) :
X -value
Y-value
Z-value
Unknown(0)
Unknown(1)
Unknown(2)
Unknown(3)
U-value
V-value
Unknown(4)
Unknown(5)
Unknown(6)
Unknown(7)

my question is,
if u know more about this :
i liked to know what these 8 Unknown values may be
also i m not sure about the format of those unknown (may change between 10^-40 to 10^40)
but the uknown values seems important ingame (they cant be 0)

Hi tokke, sorry to bring this old thread, but i tried to read a head file and this value mapping didnt worked for me on the UV part

from your CFF export i get this

-2,783588 162,9115 6,944467 0,1707764 0,8706055

my export

v -2.540448 163.009705 7.638587
vt 0.000000 0.000000

the input hex values are

C0 32 26 4E 43 22 E9 56 40 DE 39 13 0D 85 9D 25
2A A5 5B 59 31 77 3A F7 38 38 38 38 00 00 00 FF

am i missing something? im reading all as float numbers

xyz, unknown, uv, unknown, pad/aligment

thank you in advice!
 

tokke001

Senior Squad
Hi tokke, sorry to bring this old thread, but i tried to read a head file and this value mapping didnt worked for me on the UV part

from your CFF export i get this

-2,783588 162,9115 6,944467 0,1707764 0,8706055

my export

v -2.540448 163.009705 7.638587
vt 0.000000 0.000000

the input hex values are

C0 32 26 4E 43 22 E9 56 40 DE 39 13 0D 85 9D 25
2A A5 5B 59 31 77 3A F7 38 38 38 38 00 00 00 FF

am i missing something? im reading all as float numbers

xyz, unknown, uv, unknown, pad/aligment

thank you in advice!
The vertex format can vary on what model u load

* positions (XYZ)
can be 3 (32bit) floats (xyz)
Can be 4 (16bit) half-floats (xyzw)

* texture coordinates (UV)
always 2 (16bit) half-floats !


U can check the source code of my dll for reading/writing vertices at rx3 files here:
-> Thread
-> code for reading/writing vertex
 

marqisspes5

Club Supporter
The vertex format can vary on what model u load

* positions (XYZ)
can be 3 (32bit) floats (xyz)
Can be 4 (16bit) half-floats (xyzw)

* texture coordinates (UV)
always 2 (16bit) half-floats !


U can check the source code of my dll for reading/writing vertices at rx3 files here:
-> Thread
-> code for reading/writing vertex

thanks a lot, by half-float you mean read as int16 then divide by 0x8000? i never seen this type before
 


Top