Xbox 360 stadium models viewing

Beedy

Club Supporter
Hey Fifa fans! I’m working with x360 EA’s NHL games and noticed that FIFA World Cup 2010 and FIFA 11 have almost the same file structure than NHL rx2 files. I made a script to view stadium models with Noesis (https://richwhitehouse.com/index.php?content=inc_projects.php). The script in attachment, put the script in Noesis plugins/python folder. Modding stadiums are very complicated so it isn’t possible yet, only viewing. Models can be extract to obj, fbx, dae...

Edit. 2022_03_09 Scripts updated.

 

Attachments

  • Noesis_scripts_22_03_09.zip
    12.9 KB · Views: 21
Last edited:

mita996

Youth Team
Hey Fifa fans! I’m working with x360 EA’s NHL games and noticed that FIFA World Cup 2010 and FIFA 11 have almost the same file structure than NHL rx2 files. I made a script to view stadium models with Noesis (https://richwhitehouse.com/index.php?content=inc_projects.php). The script in attachment, put the script in Noesis plugins/python folder. Modding stadiums are very complicated so it isn’t possible yet, only viewing. Models can be extract to obj, fbx, dae...

Welcome here, master! You are a genious!
 

tokke001

Senior Squad
Hey,
welcome !

looks interesting if it would be possible to view/edit stadiums for fifa 11,
or even edit smaller things (like head, ball models) : that s something that isnt possible for fifa 11 (yet)

thanks for your work,
i ll try test your scripts
 

Beedy

Club Supporter
I updated Noesis scripts supporting ambient texture lightmaps. Support diffuse, ambient, normal and specular textures. There are some coeff, coeffMap, cubicEnvMap and noise textures in the container that the script isn't supported.

Xbox 360:
FIFA 08, FIFA 09, UEFA EURO 2008 (rx2, the format is same as NHL)
FIFA 10, WC 10, FIFA 11 (rx3)

PC:
FIFA 11 (rx3)

Stadium at night (Euro 2008):
http://www.mediafire.com/file/lf99olze4p5bx2o/stadium_171_3_container_0.rx2.zip/file

 
Last edited:

tokke001

Senior Squad
I updated Noesis scripts supporting ambient texture lightmaps. Support diffuse, ambient, normal and specular textures. There are some coeff, coeffMap, cubicEnvMap and noise textures in the container that the script isn't supported.

Xbox 360:
FIFA 08, FIFA 09, UEFA EURO 2008 (rx2, the format is same as NHL)
FIFA 10, WC 10, FIFA 11 (rx3)

PC:
FIFA 11 (rx3)

Stadium at night (Euro 2008):
http://www.mediafire.com/file/lf99olze4p5bx2o/stadium_171_3_container_0.rx2.zip/file


looks great again, i ll take a look !
are FIFA 08, FIFA 09, UEFA EURO 2008 console rx2 files then quiet similar to fifa 11 pc format u think?

i m also interested for improving my scripts , some fifa 11 rx3 sections have still unknown parts
i am working on a .dll libary file for reading/writing rx3 files, wich can be used for projects
if rx2 nhl files are similar, i can add support for it maybe...
 

Beedy

Club Supporter
looks great again, i ll take a look !
are FIFA 08, FIFA 09, UEFA EURO 2008 console rx2 files then quiet similar to fifa 11 pc format u think?

i m also interested for improving my scripts , some fifa 11 rx3 sections have still unknown parts
i am working on a .dll libary file for reading/writing rx3 files, wich can be used for projects
if rx2 nhl files are similar, i can add support for it maybe...
Differences between Fifa 11 rx3 (pc) and rx2 (Xbox 360) is rx3 has rx3b section but rx2 not. Texture data in rx3 is typical pc dds/dxt little endian format but Rx2 has big endian tiled textures.

Rx3b section contain vertex/index/texture offsets and buffer sizes and here is how I read it in my script:

Row 57 LoadRGBA:
Code:
  bs.seek(hdrSize[0], NOESEEK_ABS)
   for i in range(0, fileCount[0]):
           fileType = bs.readBytes(4)
           OffInfo = bs.read(">iii")
           if fileType == b'\x7A\x0B\x60\xDA':
               TexOff.append([OffInfo[0]])
               TexBufferSize.append([OffInfo[1]])
Row 197 noepyLoadModel:
Code:
bs.seek(hdrSize[0], NOESEEK_ABS)
   for i in range(0, fileCount[0]):
           fileType = bs.readBytes(4)
           OffInfo = bs.read(">iii")
           if fileType == b'\x00\x58\x78\xF4':
               FOff.append([OffInfo[0] + 0x10])
               FBufferSize.append([OffInfo[1]])   
           elif fileType == b'\x00\x58\x7A\xA1':
               VOff.append([OffInfo[0] + 0x10])
               VBufferSize.append([OffInfo[1]])

While rx2 vertex/index/texture offsets and buffers are stored in section file table:
Code:
if fileType == b'\x00\x02\x00\x05':
               bs.seek(-48, NOESEEK_REL)
               info = bs.read(">iiiiiiiiiiii")
               VOff.append([info[0]])
               VBufferSize.append([info[2]])
               VInfo.append([info[6]])
              
        elif fileType == b'\x00\x02\x00\x07':
               bs.seek(-48, NOESEEK_REL)
               info = bs.read(">iiiiiiiiiiii")
               FOff.append([info[0]])
               FBufferSize.append([info[2]])
               FInfo.append([info[6]])

Fifa 11 pc rx3 texture format (data = little endian dxt)

Fifa 10/11 xbox360 rx3 texture format (data = big endian dxt)
just remove # from #data = rapi.swapEndianArray(data, 2) )

Rx2 texture format (data = rapi.imageUntile360DXT(rapi.swapEndianArray(data, 2), imgWidth, imgHeight, 8))

That's only differences between the formats. In the next few weeks if I had time I will try to explain all data that I know about the format.
 

tokke001

Senior Squad
Differences between Fifa 11 rx3 (pc) and rx2 (Xbox 360) is rx3 has rx3b section but rx2 not. Texture data in rx3 is typical pc dds/dxt little endian format but Rx2 has big endian tiled textures.

Rx3b section contain vertex/index/texture offsets and buffer sizes and here is how I read it in my script:

Row 57 LoadRGBA:
Code:
  bs.seek(hdrSize[0], NOESEEK_ABS)
   for i in range(0, fileCount[0]):
           fileType = bs.readBytes(4)
           OffInfo = bs.read(">iii")
           if fileType == b'\x7A\x0B\x60\xDA':
               TexOff.append([OffInfo[0]])
               TexBufferSize.append([OffInfo[1]])
Row 197 noepyLoadModel:
Code:
bs.seek(hdrSize[0], NOESEEK_ABS)
   for i in range(0, fileCount[0]):
           fileType = bs.readBytes(4)
           OffInfo = bs.read(">iii")
           if fileType == b'\x00\x58\x78\xF4':
               FOff.append([OffInfo[0] + 0x10])
               FBufferSize.append([OffInfo[1]])  
           elif fileType == b'\x00\x58\x7A\xA1':
               VOff.append([OffInfo[0] + 0x10])
               VBufferSize.append([OffInfo[1]])

While rx2 vertex/index/texture offsets and buffers are stored in section file table:
Code:
if fileType == b'\x00\x02\x00\x05':
               bs.seek(-48, NOESEEK_REL)
               info = bs.read(">iiiiiiiiiiii")
               VOff.append([info[0]])
               VBufferSize.append([info[2]])
               VInfo.append([info[6]])
             
        elif fileType == b'\x00\x02\x00\x07':
               bs.seek(-48, NOESEEK_REL)
               info = bs.read(">iiiiiiiiiiii")
               FOff.append([info[0]])
               FBufferSize.append([info[2]])
               FInfo.append([info[6]])

Fifa 11 pc rx3 texture format (data = little endian dxt)

Fifa 10/11 xbox360 rx3 texture format (data = big endian dxt)
just remove # from #data = rapi.swapEndianArray(data, 2) )

Rx2 texture format (data = rapi.imageUntile360DXT(rapi.swapEndianArray(data, 2), imgWidth, imgHeight, 8))

That's only differences between the formats. In the next few weeks if I had time I will try to explain all data that I know about the format.

great thx for the info again !
for rx3 files :
the 2 texture formats big & little endian are both supported by the game,
there is a flag value wich defines if it is big or little endian format
--> fifa 10/11 xbox360 rx3 textures can be used at fifa 11 without converting needed
 

johnk

Club Supporter
Apologies for the off-topic but wondered if you could look at the which are WC2010 stadiums from the Xbox360 game:

WC 2010 Stadiums:

easyupload.io

easyupload.io
easyupload.io
easyupload.io

It is well documented that there are 3 common bugs with the WC2010 stadiums and I think I may know why;

  • Contrast Bug - The lnx files when compared with FIFA 10/11 PC have different parameters for lighting which I believe need altering for a more natural light.

  • Invisible touchline - I have extensively tested all the stadiums above in FIFA 11 PC on all light settings and some (not all) have this bug:
    • Durban Stadium (214)
    • Free State Stadium (217)
    • Loftus Versfield (222)
    • Mbombela Stadium (219)
    • Pyonghwa Stadium (234)
    • Royal Bakofeng Stadium (221)
    • Salam Stadium (227)
    • Soccer City Stadium (216)
    • Stade de Suisse Stadium (165)

    When you look at the above stadiums, they all do not have a mesh/parameter called "CollisionAdboard" which needs adding.

    [UPDATE: Pyonghwa stadium is now working (it does have the "collisionAdboard" parameter but it is case sensitive - it needs to be "CollisionAdboard")]

  • Black Flag/Confetti bug - Not sure why this bug cannot be fixed - as many have suspected, the game just doesn't recognise the textures. A temporary fix was done by @tokke001 by renaming/hex editing the affected texture names in the stadium rx3 files - more research required.

I was wondering therefore if you could let me know how the collision geometry/meshes/system works in Fifa 11 rx3 files and whether we could add this via hex editor?

Also, I was wondering if you could let me know what the names of the meshes, materials & texturess are in the models for the confetti/streamers on and around the pitch as well as the roof flags which should show country/confederation/Fifa logo flags.

A long shot I know but you never know...
 

tokke001

Senior Squad
Apologies for the off-topic but wondered if you could look at the which are WC2010 stadiums from the Xbox360 game:

WC 2010 Stadiums:

easyupload.io

easyupload.io
easyupload.io
easyupload.io

It is well documented that there are 3 common bugs with the WC2010 stadiums and I think I may know why;

  • Contrast Bug - The lnx files when compared with FIFA 10/11 PC have different parameters for lighting which I believe need altering for a more natural light.

  • Invisible touchline - I have extensively tested all the stadiums above in FIFA 11 PC on all light settings and some (not all) have this bug:
    • Durban Stadium (214)
    • Free State Stadium (217)
    • Loftus Versfield (222)
    • Mbombela Stadium (219)
    • Pyonghwa Stadium (234)
    • Royal Bakofeng Stadium (221)
    • Salam Stadium (227)
    • Soccer City Stadium (216)
    • Stade de Suisse Stadium (165)

  • When you look at the above stadiums, they all do not have a mesh/parameter called "CollisionAdboard" which needs adding.

    [UPDATE: Pyonghwa stadium is now working (it does have the "collisionAdboard" parameter but it is case sensitive - it needs to be "CollisionAdboard")]

  • Black Flag/Confetti bug - Not sure why this bug cannot be fixed - as many have suspected, the game just doesn't recognise the textures. A temporary fix was done by @tokke001 by renaming/hex editing the affected texture names in the stadium rx3 files - more research required.

I was wondering therefore if you could let me know how the collision geometry/meshes/system works in Fifa 11 rx3 files and whether we could add this via hex editor?

Also, I was wondering if you could let me know what the names of the meshes, materials & texturess are in the models for the confetti/streamers on and around the pitch as well as the roof flags which should show country/confederation/Fifa logo flags.

A long shot I know but you never know...
hey,
not sure how i fixed the WC10 files for fifa 11
it could be in the rx3 file or at the stadium.lua file (i did at both some things i think)

you can take a look at this file to get a better insight in some things :
data\fifarna\lua\assets\stadium.lua (use notepad)

i am working with the UEFA EURO 2008 files myself,
i succeed halfly in converting the rx2 file into FIFA 11 rx3 format :
like Beedy said, only the rx3b section (with vertex/index/texture data) need be added to convert from rx2 to rx3
as for stadiums the main complex parts are in the RW4 sections , and are same for both formats
the one big thing i failed : are textures, because rx2 textures are swizzled
--> Noesis supports untiling with the function
Code:
rapi.imageUntile360DXT
, but it s not known how this function works exactly
Maybe you know more how to extract these textures correctly, or how they textures are tiled exactly ?

preview of an UEFA EURO 2008 stadium at FIFA 11 (without textures, and correct crowd yet) :
 
Last edited:

tokke001

Senior Squad

Script : Untile "xbox 360" textures (rx2 textures)​


i found a tool "GTA IV Xbox 360 Texture Editor" with source code:
it got the same format of tiled textures as used at fifa 08-09 rx2 textures
-> so the source code can be used (i tested & confirm ) to untile & export fifa 08-09 rx2 textures

* Tool download: https://forum.xentax.com/blog/?p=302
* Thread : https://forum.xentax.com/viewtopic.php?f=32&t=6216
(credits to Mr.Mouse/frosty )


however your noesis script is still more complete, covering more texture formats ;)
@Beedy
 
Last edited:

Beedy

Club Supporter
Also Msoft Bundler and UnBundler tools from X360 SDK support all known DX9 texture formats and both linear and tiled textures supporting 2d and cubemaps. Bundler generates .xpr (xbox resource file) files from tga source using xml based rdf (description file) and unbundler extract xpr to tga and rdf. Rx2 is bundled same way as xpr.
 

DoradoOroOro

Club Supporter
Hey @Beedy , sorry to bother you, but how can I use this? I want to export a Fifa 10 stadium to obj but... Noesis just can't simply open it, I put the script in scripts/python but it doesn't work, I never used this but i don't know why it happens :(
 

Beedy

Club Supporter
What is the error message that you got in Noesis? Is your stadium file from xbox 360? If the file is compressed you need to decompress it first.
 

DoradoOroOro

Club Supporter
I got the error "File could not be previewed"
I'm trying with Fifa 08/09/Euro2008 stadiums (Xbox 360) but it gives me that error, and I can't decompress them because NHL Rx2 Patcher gives me the error "FileIO: Error reading from file"
 


Top