Join also our Discord channel! Click here.

Midnight Club 3 Dub Edition Research Thread

The Original Forum. Game archives, full of resources. How to open them? Get help here.
blenderbach
ultra-n00b
Posts: 3
Joined: Sat Aug 05, 2017 5:57 am
Been thanked: 1 time

Re: Midnight Club 3 Dub Edition Research Thread

Post by blenderbach » Sun Aug 06, 2017 6:07 pm

barti wrote:.mesh extraction is coming along nicely:
Image

But I couldn't make anything out of the .psppck files. Maybe they're compressed - I tried aluigi's compression scanner and it didn't find anything interesting.
By the way could you please send me all the files you extracted from the dat file please? I also wrote the same thing as a private message so please help me.

Spade115
ultra-n00b
Posts: 1
Joined: Sat Sep 28, 2019 9:21 pm
Has thanked: 9 times

Re: Midnight Club 3 Dub Edition Research Thread

Post by Spade115 » Sat Sep 28, 2019 9:25 pm

Hi, signed up to this group because of this post. I was looking at trying to find the Vehicle codes rendering for Midnight Club 3 and a few other games. Reading this thread you all do some amazing work with the coding 0.0 real cool and awesome to see it can be done 😁

User avatar
Ness
n00b
Posts: 19
Joined: Mon Jan 22, 2018 9:35 pm
Has thanked: 3 times
Been thanked: 3 times

Re: Midnight Club 3 Dub Edition Research Thread

Post by Ness » Fri Oct 30, 2020 4:04 am

I thought by now this place would be filled with like, how to rip the map or things like that...
Always remember to hydrate!
Image

User avatar
Ness
n00b
Posts: 19
Joined: Mon Jan 22, 2018 9:35 pm
Has thanked: 3 times
Been thanked: 3 times

Re: Midnight Club 3 Dub Edition Research Thread

Post by Ness » Sat Dec 05, 2020 12:04 am

Nvm i got some news!

San Diego WIP!

Image

And the Nissan Skyline too!

Image

Here another one using solid materials as in none but a general view of the model

Image


As for how i got these, is a Burnout 3 and revenge situation of ripping, what do i mean? Well, xbox og version, Model researcher and some Hex knowledge!, is quite hard to understand but it took me a while to figure out, also cuz a friend called Xenn helped me in this, without that guy i wouldn't be here with San Diego and other cars that i have in my list to do but not done yet
Always remember to hydrate!
Image

User avatar
Ness
n00b
Posts: 19
Joined: Mon Jan 22, 2018 9:35 pm
Has thanked: 3 times
Been thanked: 3 times

Re: Midnight Club 3 Dub Edition Research Thread

Post by Ness » Sat Dec 05, 2020 12:19 am

I wanna add a note to this!, as for the maps, they use some weird type of mapping, is like GTA type of mapping, the coordinates of all the models are in the .xbck file (Xbox format i assume), but thing is idk how to like decode that or see what is the position alongside the rotation and general scaling, Another thing is about textures which.... using TextureFinder din't help cuz, thing is, the textures are up at the start but they have no actual names, so i needed to came up with some ideas in that or like names for em, also ofc, props are separated as in they are in another file

http://www.mediafire.com/file/255jb0r66 ... s.rar/file


Here a link of the files of san diego!

or well the .xbck files that is needed or what i think is enough to show, another thing to point out is that there is like multiple copys of san diego with ones having names like

sd_midnight_cloudy
sd_midnight_rainy
sd_midnight_clear
sd_dawn_clear

and more in the line

only tools would be texturefinder and Model researcher as the main prioritys

forgot to say this! this goes the same case with the cars!
Always remember to hydrate!
Image

darkvaytor
ultra-n00b
Posts: 4
Joined: Mon Dec 21, 2020 11:42 pm
Has thanked: 1 time
Been thanked: 3 times

Re: Midnight Club 3 Dub Edition Research Thread

Post by darkvaytor » Tue Dec 22, 2020 8:25 pm

Ness wrote:
Sat Dec 05, 2020 12:04 am
Nvm i got some news!

San Diego WIP!

Image

And the Nissan Skyline too!

Image

Here another one using solid materials as in none but a general view of the model

Image


As for how i got these, is a Burnout 3 and revenge situation of ripping, what do i mean? Well, xbox og version, Model researcher and some Hex knowledge!, is quite hard to understand but it took me a while to figure out, also cuz a friend called Xenn helped me in this, without that guy i wouldn't be here with San Diego and other cars that i have in my list to do but not done yet
Which file(s) and what parameters in modelResearcher did you use to get the model for the skyline? I want to extract some other cars, if it worked for the skyline then something similar may work for all the other vehicle models.

User avatar
Ness
n00b
Posts: 19
Joined: Mon Jan 22, 2018 9:35 pm
Has thanked: 3 times
Been thanked: 3 times

Re: Midnight Club 3 Dub Edition Research Thread

Post by Ness » Wed Dec 23, 2020 8:38 am

darkvaytor wrote:
Tue Dec 22, 2020 8:25 pm
Ness wrote:
Sat Dec 05, 2020 12:04 am
Nvm i got some news!

San Diego WIP!

Image

And the Nissan Skyline too!

Image

Here another one using solid materials as in none but a general view of the model

Image


As for how i got these, is a Burnout 3 and revenge situation of ripping, what do i mean? Well, xbox og version, Model researcher and some Hex knowledge!, is quite hard to understand but it took me a while to figure out, also cuz a friend called Xenn helped me in this, without that guy i wouldn't be here with San Diego and other cars that i have in my list to do but not done yet
Which file(s) and what parameters in modelResearcher did you use to get the model for the skyline? I want to extract some other cars, if it worked for the skyline then something similar may work for all the other vehicle models.
as for yer question, is kinda hard to say, but what the friend that told me about it that is called Xenn,showed me that is was like this, and there's a lot to cover!
aside of Model Researcher you will want things like TextureFinder too for the textures in here, which, MC3 only uses like the Misc and some other extra materials around
and i will say, get a program like HxD or any hex viewer so you can search nodes and other things


Image

every car will have this thing Called Shell as their base, if they have _h is cuz that means the highest LOD, and if you search that shell node again you will get the same thing some offsets later but with _m, that being the medium LOD, which you will go with the h LOD instead, note that those CD CD CD CD are important to remember cuz, after that row, the next offset down it? is where the vertices begin


Image


See the last CD CD? after that last CD CD you get the vertices start, as for uvs you always add a +14, so the offset of vertices of 0x174210 becomes 0x174224

The Padding in UVs are 20, vertices is always 16, note that, to know when you reached the last vertex you will see and spot a dot in the middle of the viewer, which, that means ya reached the limit!, so if i put 2003 count in the vertices a dot will be shown in the center, and after that you gotta -1 that and make it 2002, same with uvs

as for faces?

Image

Here, they are after some rows of code ahead, you might get MR just throwing errors but, is just a keep adding up a number till it shows up and works, in other words if you are at 0x181d10 then the last one alongside the 0 make it higher till it gets the correct start of the faces, this time being 0x181db0


Image

First model being the base of the headlights!

Image

here uvs!, note that for me is flipped so when it exports it will look like that in blender, autodesk, or any 3d program of yer choice

Image

it should look like this, oh! also as for textures those are actually upside down too which, you can fix em with just flipping em vertically to make em look fine again, another thing being is... there is no clear way of how this game stops loading certain model to load other, what i mean is, next you will get is the headlights itself but, another part, in other words, they are separated in the set in materials so, every split you see? is a new set of the model being loaded in, so the headlights stopped at 280 count of faces, and if i make it up to 281

Image

you will get a stretched uv, that means, a new set of polys are loading with their own material set there, and that means, next set that you get? is the new offset, so that will be 0x181fe0, remember, use this properly and take this as a type of how to do it

that's all i will say in this for now, if you want dm me and i tell you in somewhere like discord the whole process, imma leave some extra notes about the cars here now too which are, indentifying things like, bumpers, skirts, tailights, spoilers, hoods, etc

tk_tk_lod_tk_h = Trunk
tk_tk_lod_tk_h_h_decal_tk = Trunk badge (For things like the DUB logo you can buy in the game)
tk_splr_splr_stk_sky02_splr_stk_sky02 = Spoiler (depending of the car file you choose you will get a different name, like if it was idk the eclipse, instead of sky02 you would see something like splr_stk_eclipse)
Speaking of spoilers, after that, you will get a row of new spoilers, those being the custom spoilers you can buy in the game, and after you get the last spoiler ripped, you will get hoods, and so on
hd_hd_stk_sky02_hd = Hood
ss_ss_stk_sky02_ss_stk_sky02 = Skirts
bumf_bumf_stk_sky02_bumf_stk_sky02 = Front Bumper
bumr_bumr_stk_sky02_bumr = Rear Bumper
tl_tl_stk_sky02_tl_stk_sky02 = Tailights
lodgroup_hlod_hl_glass = Headlight Glass
lodgroup_hlod_windows = Windows
lodgroup_hlod_interior = The interior of the car
lodgroup_hlod_decals = Decals of the car

Note that, the sky02 is just the node and main name of what car is in the file, other cars will change that ofc

another note, things like, exhausts, rims, brakes, and more are in other files that do the same things to rip em, but they kinda use different paddings, again, possible to rip but it can be confusing
Always remember to hydrate!
Image

darkvaytor
ultra-n00b
Posts: 4
Joined: Mon Dec 21, 2020 11:42 pm
Has thanked: 1 time
Been thanked: 3 times

Re: Midnight Club 3 Dub Edition Research Thread

Post by darkvaytor » Sat Dec 26, 2020 12:28 am

Thanks to the info from Ness I was able to write a python script that can convert most of the .mesh.xbck files to obj files and does it without artifacts by figuring out what some parts of the headers mean. I'll get around to making a script for the base models of the cars eventually.
https://github.com/TahmidAlam-git/MC3_extraction_tools

Code: Select all

#!/usr/bin/python3
import os
import sys
import math
import struct


def convert(fname):

    '''
    example: vroot_bmpf_bone_bumpf_stk_350z_bumpf_stk_350z_geo.mesh.xbck
    nissan 350z stock front bumper mesh, beginning header
    header part 1
    always useless starting 8 lines
    00 9A 9E 82 16 00 00 00 01 00 00 00 B0 3F 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    header part 2
    70 B6 5D 00 00 00 71 1C 09 00 00 00 20 9A 9E 82
                            ^^ ^^ ^^ ^^
    how many numbers there are at the end of this part of the header(before the multi CD padding)
    This also means how many pieces the model is split up into (useful for faces)
    44 9A 9E 82 00 00 00 00 1C 9B 9E 82 E0 D2 9E 82 <= always skip
    17 00 05 00 05 00 14 00 18 00 01 00 13 00 05 00 <= 8 numbers here
    19 00 CD CD CD CD CD CD CD CD CD CD CD CD CD CD <= 1 number here, 9 total
    header part 3
    09 00 00 00 <= value represents how many "sets" there are
    sets are 24 bytes long, ends with CD CD
    70 D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    7C D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    88 D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    94 D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    A0 D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    AC D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    B8 D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    C4 D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    D0 D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    header part 4
    last part of header always ends with 4 00, + CD padding if neeeded
    01 00 00 00 30 9B 9E 02 00 00 00 00 CD CD CD CD CD CD CD CD
    '''


    hfile = open(fname, "rb")

    l_len = 16

    # header part 1
    hfile.read(8 * l_len)

    # header part 2
    hfile.read(8)
    pieces = int.from_bytes(hfile.read(4), byteorder='little')
    hfile.read(4)
    hfile.read(l_len + math.ceil(pieces / 8) * l_len)

    # header part 3
    sets_num = int.from_bytes(hfile.read(4), byteorder='little')
    hfile.read(sets_num * 24)

    # header part 4
    hfile.read(12)
    if hfile.tell() % 16 != 0:
        hfile.read(16 - (hfile.tell() % 16))

    vertices = []
    faces = []
    UVs = []

    # TODO: find the amount of vertices from header
    # get the vertices and UVs
    while 1:
        x = struct.unpack('f', hfile.read(4))[0]
        y = struct.unpack('f', hfile.read(4))[0]
        z = struct.unpack('f', hfile.read(4))[0]

        if float(format(x, '.4f')) == float(format(y, '.4f')) == float(format(z, '.4f')) == 0.0000:
            hfile.seek(-12, 1)
            break

        vertices.append((x, y, z))

        hfile.read(8)

        uva = struct.unpack('f', hfile.read(4))[0]
        uvb = struct.unpack('f', hfile.read(4))[0]
        UVs.append((uva, uvb))


    '''
    faces header example
    the model is split up into multiple pieces
    
                                       offset + amount
    01 00 00 00 00 00 1E 00 00 00 00 00 : 000 + 030
    01 00 00 00 1E 00 97 00 00 00 00 00 : 030 + 151
    01 00 00 00 B5 00 68 00 00 00 00 00 : 181 + 104
    01 00 00 00 1D 01 90 00 00 00 00 00 : 285 + 144
    01 00 00 00 AD 01 13 00 00 00 00 00 : 429 + 019
    01 00 00 00 C0 01 40 01 00 00 00 00 : 448 + 320 
    01 00 00 00 00 03 1B 00 00 00 00 00 : 768 + 027
    01 00 00 00 1B 03 4E 01 00 00 00 00 : 795 + 334
    01 00 00 00 69 04 91 00 00 00 00 00 : 1129 + 145
    CD CD CD CD
    '''

    # Get the ranges for the pieces of the models
    model_ranges = []
    for x in range(pieces):
        hfile.read(4)
        model_ranges.append((int.from_bytes(hfile.read(2), byteorder='little'),
                            int.from_bytes(hfile.read(2), byteorder='little')))
        hfile.read(4)


    # Skip CDs
    if hfile.tell() % 16 != 0:
        hfile.read(16 - (hfile.tell() % 16))

    # Get shorts of the faces
    shorts = []
    for x in range(model_ranges[-1][0] + model_ranges[-1][1]):
        shorts.append(int.from_bytes(hfile.read(2), byteorder='little') + 1)

    # Get the faces
    for piece in model_ranges:
        forward = True
        for x in range(piece[0] + 2, piece[0] + piece[1]):

            if forward:
                faces.append((shorts[x - 2], shorts[x - 1], shorts[x - 0]))
                forward = False
            else:
                faces.append((shorts[x], shorts[x - 1], shorts[x - 2]))
                forward = True

    hfile.close()

    # Make obj file
    if os.path.exists("./" + fname + '.obj'):
        os.remove("./" + fname + '.obj')

    obj = open(fname + '.obj', 'a')

    for vert in vertices:
        obj.write('v ' + str(vert[0]) + ' ' + str(vert[1]) + ' ' + str(vert[2]) + '\n')

    obj.write('\n')

    for uv in UVs:
        obj.write('vt ' + str(uv[0]) + ' ' + str(uv[1]) + '\n')

    obj.write('\n')

    for f in faces:
        obj.write('f ' + str(f[0]) + ' ' + str(f[1]) + ' ' + str(f[2]) + '\n')

    obj.close()



if len(sys.argv) >= 2 and sys.argv[-1].endswith("mesh.xbck"):
    convert(sys.argv[-1])
else:
    print("invalid file")
Image

Edit: Updated the git repo, there is now a .exe that will convert ALL models of a vehicle to obj files, meaning both the base model and customization parts.

Edit 2: now added support to extract models from the .xbck map files for San Diego

User avatar
Ness
n00b
Posts: 19
Joined: Mon Jan 22, 2018 9:35 pm
Has thanked: 3 times
Been thanked: 3 times

Re: Midnight Club 3 Dub Edition Research Thread

Post by Ness » Fri Jan 01, 2021 10:32 am

darkvaytor wrote:
Sat Dec 26, 2020 12:28 am
Thanks to the info from Ness I was able to write a python script that can convert most of the .mesh.xbck files to obj files and does it without artifacts by figuring out what some parts of the headers mean. I'll get around to making a script for the base models of the cars eventually.
https://github.com/TahmidAlam-git/MC3_extraction_tools

Code: Select all

#!/usr/bin/python3
import os
import sys
import math
import struct


def convert(fname):

    '''
    example: vroot_bmpf_bone_bumpf_stk_350z_bumpf_stk_350z_geo.mesh.xbck
    nissan 350z stock front bumper mesh, beginning header
    header part 1
    always useless starting 8 lines
    00 9A 9E 82 16 00 00 00 01 00 00 00 B0 3F 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    header part 2
    70 B6 5D 00 00 00 71 1C 09 00 00 00 20 9A 9E 82
                            ^^ ^^ ^^ ^^
    how many numbers there are at the end of this part of the header(before the multi CD padding)
    This also means how many pieces the model is split up into (useful for faces)
    44 9A 9E 82 00 00 00 00 1C 9B 9E 82 E0 D2 9E 82 <= always skip
    17 00 05 00 05 00 14 00 18 00 01 00 13 00 05 00 <= 8 numbers here
    19 00 CD CD CD CD CD CD CD CD CD CD CD CD CD CD <= 1 number here, 9 total
    header part 3
    09 00 00 00 <= value represents how many "sets" there are
    sets are 24 bytes long, ends with CD CD
    70 D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    7C D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    88 D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    94 D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    A0 D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    AC D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    B8 D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    C4 D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    D0 D2 9E 82 C1 5E 80 00 59 00 1C 00 02 4A 04 00
    00 00 00 00 01 00 CD CD
    header part 4
    last part of header always ends with 4 00, + CD padding if neeeded
    01 00 00 00 30 9B 9E 02 00 00 00 00 CD CD CD CD CD CD CD CD
    '''


    hfile = open(fname, "rb")

    l_len = 16

    # header part 1
    hfile.read(8 * l_len)

    # header part 2
    hfile.read(8)
    pieces = int.from_bytes(hfile.read(4), byteorder='little')
    hfile.read(4)
    hfile.read(l_len + math.ceil(pieces / 8) * l_len)

    # header part 3
    sets_num = int.from_bytes(hfile.read(4), byteorder='little')
    hfile.read(sets_num * 24)

    # header part 4
    hfile.read(12)
    if hfile.tell() % 16 != 0:
        hfile.read(16 - (hfile.tell() % 16))

    vertices = []
    faces = []
    UVs = []

    # TODO: find the amount of vertices from header
    # get the vertices and UVs
    while 1:
        x = struct.unpack('f', hfile.read(4))[0]
        y = struct.unpack('f', hfile.read(4))[0]
        z = struct.unpack('f', hfile.read(4))[0]

        if float(format(x, '.4f')) == float(format(y, '.4f')) == float(format(z, '.4f')) == 0.0000:
            hfile.seek(-12, 1)
            break

        vertices.append((x, y, z))

        hfile.read(8)

        uva = struct.unpack('f', hfile.read(4))[0]
        uvb = struct.unpack('f', hfile.read(4))[0]
        UVs.append((uva, uvb))


    '''
    faces header example
    the model is split up into multiple pieces
    
                                       offset + amount
    01 00 00 00 00 00 1E 00 00 00 00 00 : 000 + 030
    01 00 00 00 1E 00 97 00 00 00 00 00 : 030 + 151
    01 00 00 00 B5 00 68 00 00 00 00 00 : 181 + 104
    01 00 00 00 1D 01 90 00 00 00 00 00 : 285 + 144
    01 00 00 00 AD 01 13 00 00 00 00 00 : 429 + 019
    01 00 00 00 C0 01 40 01 00 00 00 00 : 448 + 320 
    01 00 00 00 00 03 1B 00 00 00 00 00 : 768 + 027
    01 00 00 00 1B 03 4E 01 00 00 00 00 : 795 + 334
    01 00 00 00 69 04 91 00 00 00 00 00 : 1129 + 145
    CD CD CD CD
    '''

    # Get the ranges for the pieces of the models
    model_ranges = []
    for x in range(pieces):
        hfile.read(4)
        model_ranges.append((int.from_bytes(hfile.read(2), byteorder='little'),
                            int.from_bytes(hfile.read(2), byteorder='little')))
        hfile.read(4)


    # Skip CDs
    if hfile.tell() % 16 != 0:
        hfile.read(16 - (hfile.tell() % 16))

    # Get shorts of the faces
    shorts = []
    for x in range(model_ranges[-1][0] + model_ranges[-1][1]):
        shorts.append(int.from_bytes(hfile.read(2), byteorder='little') + 1)

    # Get the faces
    for piece in model_ranges:
        forward = True
        for x in range(piece[0] + 2, piece[0] + piece[1]):

            if forward:
                faces.append((shorts[x - 2], shorts[x - 1], shorts[x - 0]))
                forward = False
            else:
                faces.append((shorts[x], shorts[x - 1], shorts[x - 2]))
                forward = True

    hfile.close()

    # Make obj file
    if os.path.exists("./" + fname + '.obj'):
        os.remove("./" + fname + '.obj')

    obj = open(fname + '.obj', 'a')

    for vert in vertices:
        obj.write('v ' + str(vert[0]) + ' ' + str(vert[1]) + ' ' + str(vert[2]) + '\n')

    obj.write('\n')

    for uv in UVs:
        obj.write('vt ' + str(uv[0]) + ' ' + str(uv[1]) + '\n')

    obj.write('\n')

    for f in faces:
        obj.write('f ' + str(f[0]) + ' ' + str(f[1]) + ' ' + str(f[2]) + '\n')

    obj.close()



if len(sys.argv) >= 2 and sys.argv[-1].endswith("mesh.xbck"):
    convert(sys.argv[-1])
else:
    print("invalid file")
Image

Edit: Updated the git repo, there is now a .exe that will convert ALL models of a vehicle to obj files, meaning both the base model and customization parts.

Edit 2: now added support to extract models from the .xbck map files for San Diego
What a good day to be alive, note that same goes with others like Atlanta and Detroit too, just i din't check those yet myself

as for the maps too doe, i do know or guess that, between the vertices and uvs with the faces there should be some positionating code between it, cuz, i noticed that some use like a long set of CD CD there, which that means like a duplicate is found and also as a type of way to say positionate it here and rotations and scaling and all of that, issue is, idk what is what
Always remember to hydrate!
Image

darkvaytor
ultra-n00b
Posts: 4
Joined: Mon Dec 21, 2020 11:42 pm
Has thanked: 1 time
Been thanked: 3 times

Re: Midnight Club 3 Dub Edition Research Thread

Post by darkvaytor » Fri Jan 01, 2021 9:43 pm

Ness wrote:
Fri Jan 01, 2021 10:32 am

What a good day to be alive, note that same goes with others like Atlanta and Detroit too, just i din't check those yet myself

as for the maps too doe, i do know or guess that, between the vertices and uvs with the faces there should be some positionating code between it, cuz, i noticed that some use like a long set of CD CD there, which that means like a duplicate is found and also as a type of way to say positionate it here and rotations and scaling and all of that, issue is, idk what is what
Yeah I've noticed that as well, I'm not sure yet because I haven't tested it but this is what I think so far

Code: Select all

header
01 00 00 00 C8 D4 D6 81 
            ^^^^^^^^^^^
            not sure what is means yet

header
01 00 00 00 E0 D4 D6 01 00 00 00 00 CD CD CD CD CD CD CD CD CD CD CD CD 
      ^^^^^ ^^^^^ ^^^^^
     |z pos|x pos|y pos|

For the below, each ###FF is "rotation" for each vertex in the model for (x,y,z), I believe this is the case because the number of ###FF is the same as the number of vertices.
15 12 10 FF 15 12 10 FF 15 12 10 FF 15 12 10 FF 
15 12 10 FF 15 12 10 FF 15 12 10 FF 15 12 10 FF 
15 12 10 FF 15 12 10 FF E8 EB FF FF D9 F1 FF FF 
A5 B7 C1 FF 2E 29 25 FF 5E 64 66 FF 37 39 39 FF 
2E 29 25 FF DF E6 FF FF 63 70 75 FF D5 F1 FF FF

User avatar
Ness
n00b
Posts: 19
Joined: Mon Jan 22, 2018 9:35 pm
Has thanked: 3 times
Been thanked: 3 times

Re: Midnight Club 3 Dub Edition Research Thread

Post by Ness » Fri Jan 01, 2021 10:16 pm

darkvaytor wrote:
Fri Jan 01, 2021 9:43 pm
Ness wrote:
Fri Jan 01, 2021 10:32 am

What a good day to be alive, note that same goes with others like Atlanta and Detroit too, just i din't check those yet myself

as for the maps too doe, i do know or guess that, between the vertices and uvs with the faces there should be some positionating code between it, cuz, i noticed that some use like a long set of CD CD there, which that means like a duplicate is found and also as a type of way to say positionate it here and rotations and scaling and all of that, issue is, idk what is what
Yeah I've noticed that as well, I'm not sure yet because I haven't tested it but this is what I think so far

Code: Select all

header
01 00 00 00 C8 D4 D6 81 
            ^^^^^^^^^^^
            not sure what is means yet

header
01 00 00 00 E0 D4 D6 01 00 00 00 00 CD CD CD CD CD CD CD CD CD CD CD CD 
      ^^^^^ ^^^^^ ^^^^^
     |z pos|x pos|y pos|

For the below, each ###FF is "rotation" for each vertex in the model for (x,y,z), I believe this is the case because the number of ###FF is the same as the number of vertices.
15 12 10 FF 15 12 10 FF 15 12 10 FF 15 12 10 FF 
15 12 10 FF 15 12 10 FF 15 12 10 FF 15 12 10 FF 
15 12 10 FF 15 12 10 FF E8 EB FF FF D9 F1 FF FF 
A5 B7 C1 FF 2E 29 25 FF 5E 64 66 FF 37 39 39 FF 
2E 29 25 FF DF E6 FF FF 63 70 75 FF D5 F1 FF FF
interesting, by far this might help in rebuilding the map or like, if i think about like fixing the positions, then this might come in handy, but tbh, i only need mostly the scaling in this situation cuz, i know in certain areas parts of the road change scaling or like are let's say 1.050 of scaling in the Y section, ya know what i mean, idk if GTA ever did that or like ever did change of scalings, considering that this game is just kinda like GTA in terms of how they make their maps, but they don't use an IDE and IPL thing, but seems like that is already built inside the xbck of the map, just that we gotta figure out how to decode this stuff, tbh if is possible, i will start ripping Or Tokyo Or detroit or atlanta and i will try that myself when ya get the Postionating, rotation and Scaling ripped, another thing i do wonder doe, if is possible to figure out the real names of the textures inside the xbck?, also cuz those begin first always, but, they don't have any names when i see HxD, maybe they do the same thing of the Postions rotations and scaling but in a different way, so far i just decided to call some things things like from burnout or like, if is a grass texture, i will call it SD_Grass1, as in SanDiego_Grass and the number being the different texture of the grass that i will get

i still wish i knew how to decode all of that or like understand what things mean what, at least getting to model rip is one step closer to getting all of this decrypted and in our hands
Always remember to hydrate!
Image

blenderbach
ultra-n00b
Posts: 3
Joined: Sat Aug 05, 2017 5:57 am
Been thanked: 1 time

Re: Midnight Club 3 Dub Edition Research Thread

Post by blenderbach » Sat Jan 02, 2021 5:19 pm

Apparently, upon downloading the Executable, it says it's a Trojan Virus. Is it really a virus?

darkvaytor
ultra-n00b
Posts: 4
Joined: Mon Dec 21, 2020 11:42 pm
Has thanked: 1 time
Been thanked: 3 times

Re: Midnight Club 3 Dub Edition Research Thread

Post by darkvaytor » Sat Jan 02, 2021 7:13 pm

blenderbach wrote:
Sat Jan 02, 2021 5:19 pm
Apparently, upon downloading the Executable, it says it's a Trojan Virus. Is it really a virus?
It probably says that because it's an unsigned executable, not a trojan virus. Also, download the latest version, the last version I had up actually ended up breaking the program.

Post Reply