Jump to content

Sébastien Loeb Rally EVO .BIN files


Recommended Posts

  • 1 month later...
  • Engineers
Posted

At least I found it mentioned:

Quote

hi is Chipi here ? wondering if we can have a updated milestone importer for Sebastien Loeb Evo Rally?

So if you found nothing there's two options at least:

use hex2obj as shown in my previous post

or, the harder way:

try to convert the mcr script from your opening post to something that works outside of 3dsmax.

  • 4 months later...
  • 11 months later...
  • Members
Posted (edited)

Phew, first of all, i'm still impressed how Chipicao managed this Format back then, shoutout to him

i've went through all games i could find that are using the "GEM Graphics Engine Milestone" and tried to restructure some of the skips and guesses in Chipicao's max script \ tried to write a newer version - failsave for each game

the reason why the script does crash on sebastien loeb rally is because they rebuilt these bin files roughly 3 times, sadly there is no real identifier to tell which game the bin file belongs to

gen 1 (SBK09, SBK10, Superstars V8, Superstars Next Challenge, WRC1) - which had their vertex buffer stored one by one (vert - normals - uvs - index - etc)

gen 2 (SBK11, SBK Generations, MUD, MXGP 1, MotoGP13, WRC2, WRC3, WRC4, WRC Powerslide) - started to combine the vertexbuffers on stride with multiple fvfcode / types

these games also came with a seperate *.RES file which sometimes stored either just strings, or packed (uncompressed) DDS textures, Chipicaos script was able to extract them so i've moved that chunk over

gen 3 (MotoGP14, MotoGP15, MotoGP16(ValentinoRossi), MotoGP17, Ducati 90th Anniversary, MXGP 2, RIDE 1, RIDE 2, Sebastien Loeb Rally EVO) - dropped the .RES files, but included the stringlist to the .BIN file packed under a new header hash 9241a9d5 CLSID_DIRECTSTREAMINGOBJECT

 

these GEM files are split into a ton of chunks, starting usually with 5b2a 5b42 5b30 - then another 2byte type - then the Hash which kind it is - i've found one MotoGP13.PDB file which named some of these hashes (yet i cant tell which algo it is using) - each game also varies between having a hash bc258a42 CLSID_NAMEDOBJECT in between blocks, it really is chaotic (yet structurized...)

i havent looked much into the track files yet, if someone else wants to continue attempting this, feel free to go through this chunky and messy code 😅

 

there is a lot of offset jumping required - so it first starts with texture count, material count, meshcount and node/bone count - the meshchunk jumps back and reads the material block at offset x etc. - the bones offset jumps are just mental

i've ignored the texture and material setup for now and focused on getting at least the meshes and bones

however, this thing is so chaotic, i got lost at jumping down to the indexbuffer which then skips the unneeded vertices, thats why it will load the entire vertexbuffer per object, so as for now, use the removeunusedvertices.ms script in there 😓

the bone orientation is different to the meshes - which could be fixed in the script - or just rotate the rootbone to fit the mesh orientation - since boneweights are yet not applied aswell (loading time on these vertexbuffer is long enough already) - some of these bones or dummies are required to place the meshes in the correct position / orientation

 

long story short, these are 24 standalone max scripts to import these files, a script to get rid of dead vertices and a color map for hexworkshop to spot these pointers

 

have fun

Screenshot 2026-02-20 150437.png

Milestone_Gem.7z

Edited by Guki
  • Like 2

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...