Jump to content

Recommended Posts

Posted

Hello,

I'm currently in the process of documenting the 3DF format of Moto Racer for Windows, using 3D Model Researcher.

Frist step, all Moto Racer files are packed in BFK files, and can be extracted using QuickBMS and the corresponding script.

Second step, all 3DF files are the 3D models, and are organized the following way:

typedef struct vec3_t vec3_t;
struct vec3_t {
  float x;
  float y;
  float z;
};

 

uint16_t unknown1
uint16_t number_of_vertices
vec3_t vertices[number_of_vertices];
??? unknown2[???]; // list of faces?

 

For now I'm unable to properly render the faces, despite all of my tweaks. If anyone more experienced than me want to continue from where I left, and report its progress here, please do so.

A demo of Moto Racer for Windows is available on the Internet Archive.

Best regards.

2023-11-19-174704_1920x1200_scrot.png

2023-11-19-174728_1920x1200_scrot.png

  • 1 year later...
Posted (edited)

hi

i have reversed most of the game files, including 3d models files.

image.png.ddae448aa4f75d6193b37d413d298d40.png

these are my findings on 3df and map files:

3DF file

field size in bytes note
header    
magic 2 must be = 1
vertex list    
vertex_count 2 number of vertices
vertex 12*vertex_count 3 floats
face   repeated until face_vertices = 0
face_vertices 2 number of vertices per face (3 or 4)
unknown 2  
vertices_index 2*face_vertices indices on the vertex list

 

MAP file

field size in bytes note
MAGIC 2 0x8001 (01 80)
unknown 510 all zeroes
face block 128*faces in 3DF see face block format 
     
face block format    
UV per face 2 number of UV coords per face
     
when < 3   no UV, color is provided
color 2 RGB555
unknown 124  
     
when 3    
unknown 32  
U1 4 integers 0..255 
U2 4  
U3 4  
dummy 4  
V1 4  
V2 4  
V3 4  
dummy 4  
unknown 62  
     
when 4    
unknown 32  
U1 4 integers 0..255 
U2 4  
U3 4  
U4 4  
V1 4  
V2 4  
V3 4  
V4 4  
unknown 62  

I've also dumped SKL and ROT files entirely, presumably skeleton and poses, but I don't have enough experience to know what to do with these.

I am attaching some dumper tools you can use on the game demo in the first post; i might have misnamed or misinterpreted some values; if anyone wants to give some hints it would be appreciated.

 

 

rot_dumper.py skldumper.py

Edited by theone_32
  • Like 1
  • 2 weeks later...
  • Members
Posted
6 hours ago, theone_32 said:

hi, could you please help me decode the skl file? here's a dump of its content
https://pastebin.com/raw/iRfGiw67
don't look at names i gave to the data, they might be totally wrong.

the vertex list in this has the same count of the vertex list of the 3df file.

this is the 3d file in obj format https://pastebin.com/raw/2xyZiHiJ

any hint on what that data could mean would be appreciated!

You should probably make this a seperate post

Posted (edited)

Ok I partially interpreted the SKL file. Apparently it also contains the mesh again; first number of the "subentries" triplet is the face index, second and third are unknown.

I don't know how to interpret the rest of the file data.

here's a sample file and a quick viewer for it.

thank you very much

 

 

skl_viewer.py

 

Edited by theone_32
Posted (edited)
On 7/30/2025 at 3:15 PM, shak-otay said:

You could build an SMD file for the skeleton using the bone list and the bone translations. (I didn't see the rotations, though.)

Thank you for looking into it. I guess rotations are in the separate ROT files. 

Would you mind to recap what should I look for in order to reconstruct skeleton and animations?

Thank you

 

rot_dumper.py

Edited by theone_32
Posted

hi, I mean I'm not sure how to interpret the data.

I tried to output association between the meshes, their bones and the two lists at the beginning of the file and got this below.

image.thumb.png.a10cfead8eee8f68deaed038768cea86.png

beside that, there are lots of other data to interpret
image.png.49979ab88a82aee6c0572822548037da.png

any hint would be helpful

  • Engineers
Posted

Here's the smd I wrote of. Rotations missing as can be seen clearly, right part of picture.

version 1
nodes
0 "Bone[0]"  -1
1 "Bone[1]"   0
2 "Bone[2]"  1
3 "Bone[3]"  0
4 "Bone[4]" 3
5 "Bone[5]" 0
6 "Bone[6]" 5
7 "Bone[7]" 6
8 "Bone[8]" 7
9 "Bone[9]" 6
10 "Bone[10]" 9
11 "Bone[11]" 6
12 "Bone[12]" 11
13 "Bone[13]"  12
14 "Bone[14]"  11
15 "Bone[15]"  11
16 "Bone[16]"  15
end
skeleton
time 0
  0 -0.024687 9.352681 20.445915 0.000000 0.000000 0.000000
  1 -0.097155 16.245146 31.394335 0.000000 -0.000000 0.000000
  2 0.744174 -0.234390 42.392040 0.000000 -0.000000 0.000000
  3 0.123649 3.273157 12.504241 0.000000 -0.000000 0.000000
  4 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
  5 -0.029245 7.080516 37.484844 0.000000 -0.000000 0.000000
  6 0.054734 12.327949 10.013249 0.000000 -0.000000 0.000000
  7 -2.791994 19.900967 8.992334 0.000000 -0.000000 0.000000
  8 -10.755936 6.774695 11.045544 0.000000 -0.000000 0.000000
  9 2.378305 19.918173 8.983233 0.000000 -0.000000 0.000000
  10 10.252177 6.774122 11.059205 0.000000 -0.000000 0.000000
  11 -0.044937 24.558884 10.011847 0.000000 -0.000000 0.000000
  12 -4.897781 34.411449 9.759144 0.000000 -0.000000 0.000000
  13 -6.013847 32.879711 17.078512 0.000000 -0.000000 0.000000
  14 -0.035207 35.666115 9.207969 0.000000 -0.000000 0.000000
  15 4.893816 34.444054 9.874687 0.000000 -0.000000 0.000000
  16 5.889601 32.951267 17.116529 0.000000 -0.000000 0.000000
end

 

corps_skel.png

Posted (edited)

this has been a bit tougher than I expected, but here it is, a (basic and potentially buggy) .skl viewer/.rot editor, just in case anyone finds it interesting or wants to infer files format from it.

thanks @shak-otay for the hints and ideas

image.thumb.png.612045ff51531b854b583c1d4e90056e.png

 

 

skl_viewer6.py

Edited by theone_32

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...