Talk:MDL0 (File Format)

From Custom Mario Kart
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

MDL, section 8

I have found string behind the last layer at offset 8. Overall I found 1885 valid string references, but also 13929 NULL and 18 other values. Because the most string contains a variation of "shadow" I believe that there is at least a conditional string. Here is a summary of all found strings (using 218 different offsets):

   1647  mat_shadow
     68  lambert1
     24  mat_shadow1
     20  shb_mat_shadow
     17  shadow
     10  map01
     10  lambert3
      9  shadow1
      4  map1
      4  map
      4  lambert318
      4  lambert239
      4  lambert233
      4  beginner_course_m
      2  nami_tx_v_x
      2  lambert9
      2  lambert42
      2  lambert404
      2  lambert400
      2  lambert351
      2  lambert326
      2  lambert321
      2  lambert313
      2  lambert282
      2  lambert264
      2  lambert242
      2  lambert238
      2  lambert19
      2  lambert11
      2  hikari1
      2  ex_lambert193
      2  ex_lambert186
      2  col_ROAD
      2  cactusColor_m
      2  c_road_m
      2  TR_sky
      2  ROAD_c
      2  ROAD_ami
      2  Map
      2  MAP_m
      1  wing1
      1  m_ef_bkBoard
      1  glow
      1  body2
I'm not aware of this. Can you give me some examples of which BRRESs have this in.
Chadderz 17:38, 6 May 2011 (CEST)
Race/Common.szs -> banana_s.brres
Race/Kart/ldf_bike_blue-la_mii_f_4.szs -> kart_model.brres
Race/Course/old_donkey_gc_d.szs -> DKrockGC.brres
Race/Course/boardcross_course.szs -> itembox.brres

And these are the sizes of the appended data areas:

   6596 * 0x180
   1884 * 0x184
   1459 * 0x188
   3128 * 0x18c
    759 * 0x190
   3698 * 0x194
   1432 * 0x198
   1569 * 0x19c = 0x180 + 0x1c

      2 * 0x598
     12 * 0x59c
      9 * 0x5a0
   1756 * 0x5a4
      4 * 0x5a8
     12 * 0x5ac
     88 * 0x5b0
      2 * 0x5b4 = 0x598 + 0x1c

It seems that there are 2 different sizes plus a little padding.

Wiimm 18:16, 6 May 2011 (CEST)
This was a failure of my. It apperars if the layer count is 0 and the layer offset points to the beginning of section 8. Then I detect the name of the base structure.
Wiimm 13:43, 11 May 2011 (CEST)


I hex edited a model so the X and Y texture settings were 02 (mirror) but showed no difference (Layers section, addresses 0x18 and 0x1c. I checked with another model, a mach bike model, and it has 00000002 there on both). I'm too lazy to edit my uv maps in 3dsmax (I'm trying to make a character but the textures are weird). I took a quick look through the page but didn't see anything else that would change this setting. Any help?
Guilmon35249vr 03:16, 16 September 2011 (CEST)

Also, has anyone ever tried adding a texture link to a map_model? --Guilmon35249vr 23:39, 25 September 2011 (CEST)

Adding polygons to pre-existing models?

There are people trying to get Paratroopa into Mario Kart Wii. After taking a look through Koopa Troopa's files, I noticed he already has EVERYTHING needed to make Paratroopa work.. except a wing model. He even has bones for the wings already!
http://i349.photobucket.com/albums/q364/MikeYoshi/koopatroopawings.png
And he has textures for them too. I would assume that.. since the bones are there, they're also animated (Recycled animations happen in MKW already.. Yoshi/Birdo share some animations. This would make me thing that Koopa Troopa and Paratroopa would share animations too). Has anyone found a way to hex edit in a new polygon?
--Guilmon35249vr 01:23, 9 November 2011 (CET)

So with nothing more then hex editing this is possible?
I haven't seen any animated character yet.
kHacker35000vr 07:21, 9 November 2011 (CET)

Is the MDL0 page correct?

At the moment I try to understand MDL0. But I can't follow the the descriptions.

Example "section 1 - bones"
The page says, that the basic structure is 0xd0 (=208) byte long, but if analyzing Nintendo Moonview Highway, it contains 26 MDL0 files and section 1 is always smaller than 0xd0, the size is most 0x28.

I can find such things also for some other sections. Either the page info is wrong or I don't understand the section concept of BRESS sub files.

Not sure what the problem is here; the page seems to be correct. I suppose calling it section 1 is a little ambiguous; it's the section 1 entry's format. The pointer at the begining is to a BRRES Index Group which then in turn points to the data described.
Chadderz 12:07, 8 January 2012 (CET)

The index group points to the different sub files (MDL0, TEX0, PAT0,...). But the MDL0 has also sections as described here. A hexdump of a typical MDL0:

MDL0 file header (equal structure for all BRRES sub files)
     0: 4d 44 4c 30  00 00 31 60  00 00 00 0b  00 00 00 00  :MDL0..1`........:
14 section offsets (is this my misunderstanding?)
    10: 00 00 00 9c  00 00 00 e4  00 00 01 2c  00 00 01 64  :...........,...d:
    20: 00 00 01 8c  00 00 01 c4  00 00 00 00  00 00 00 00  :................:
    30: 00 00 01 fc  00 00 02 34  00 00 02 6c  00 00 02 a4  :.......4...l....:
    40: 00 00 00 00  00 00 00 00
string pointer
    40:                           00 00 31 98
beginning of MDL0 header
    40:                                        00 00 00 40  :..........1....@:
    50: ff ff ff b4  00 00 00 00  00 00 00 00  00 00 02 32  :...............2:
...

Interpreting the offset table, section 01 starts a 0xe4 and ends at 0x12c (length 0x48).
Wiimm 12:23, 8 January 2012 (CET)

Yes; if you look carefully that 0x48 data structure is a BRRES Index Group structure. It then points to the section 1 bones. It's another level of indirection to allow multiple bones, ploygones, etc.
Chadderz 07:15, 9 January 2012 (CET)
Click!! Wiimm 09:06, 9 January 2012 (CET)

Thanx! It works now! And here is an example output of "wszst memory K_car_b.mdl"

* memory dump of MDL:K_car_b.mdl

type    unused  begin ..    end   size  file name
--------------------------------------------------------------------------------
MDL         -       0 ..     4c     4c  .BRSUB.header.MDL0-v11.n14.bin
?           -      4c ..     8c     40  MDL0.header.bin
?           -      8c ..     9c     10  MDL0.bone-table.bin
?           -      9c ..     e4     48  .MDL0.s00.draw-list.header.n3.bin
?           -      e4 ..    12c     48  .MDL0.s01.bones.header.n3.bin
?           -     12c ..    164     38  .MDL0.s02.verticies.header.n2.bin
?           -     164 ..    18c     28  .MDL0.s03.normals.header.n1.bin
?           -     18c ..    1c4     38  .MDL0.s04.colors.header.n2.bin
?           -     1c4 ..    1fc     38  .MDL0.s05.t-coord.header.n2.bin
?           -     1fc ..    234     38  .MDL0.s08.materials.header.n2.bin
?           -     234 ..    26c     38  .MDL0.s09.mat-nodes.header.n2.bin
?           -     26c ..    2a4     38  .MDL0.s10.objects.header.n2.bin
?           -     2a4 ..    2dc     38  .MDL0.s11.t-links.header.n2.bin
?           -     2dc ..    2e8      c  MDL0.s11_0.t-links.K_car_2.bin
?           -     2e8 ..    2f4      c  MDL0.s11_1.t-links.TW_spot_c_1031.bin
?           -     2f4 ..    304     10  MDL0.s00_0.draw-list.NodeTree.bin
?           -     304 ..    30d      9  MDL0.s00_1.draw-list.DrawOpa.bin
?           -     30d ..    318      b  MDL0.s00_2.draw-list.DrawXlu.bin
?           -     318 ..    3e8     d0  MDL0.s01_0.bones.K_car_b.bin
?           -     3e8 ..    4b8     d0  MDL0.s01_1.bones.polySurface178.bin
?           -     4b8 ..    588     d0  MDL0.s01_2.bones.polySurface179.bin
?           -     588 ..    b60    5d8  MDL0.s08_0.materials.TW_spot.bin
?           -     b60 ..   1140    5e0  MDL0.s08_1.materials.car_b.bin
?           -    1140 ..   1340    200  MDL0.s09_0.mat-nodes.TW_spot.bin
?         200-   1140 ..   1340    200  MDL0.s09_1.mat-nodes.car_b.bin
?           -    1340 ..   1d00    9c0  MDL0.s10_0.objects.polygon0.bin
?           -    1d00 ..   1fa0    2a0  MDL0.s10_1.objects.polygon1.bin
?           -    1fa0 ..   2880    8e0  MDL0.s02_0.verticies.polySurface178__car_b.bin
?           -    2880 ..   2a40    1c0  MDL0.s02_1.verticies.polySurface179__TW_spot.bin
?           -    2a40 ..   2d60    320  MDL0.s03_0.normals.polySurface178__car_b.bin
?           -    2d60 ..   2da0     40  MDL0.s04_0.colors.polySurface178__car_b.bin
?           -    2da0 ..   2de0     40  MDL0.s04_1.colors.polySurface179__TW_spot.bin
?           -    2de0 ..   30a0    2c0  MDL0.s05_0.t-coord.#0.bin
?           -    30a0 ..   3160     c0  MDL0.s05_1.t-coord.#1.bin
?           -    3160 ..   325c     fc  .MDL0.string-pool.bin

It was not clear for me, that multiple entries of a section exist. And that is the reason that my string relocation fails sometimes.
Wiimm 21:27, 9 January 2012 (CET)

Damn!! I have already implemented this for the string relocation, long time ago ... and forgotten.
Wiimm 22:56, 9 January 2012 (CET)
Yes, I thought you must have, I was a little confused what you were asking at first. We all make mistakes!
Chadderz 07:12, 10 January 2012 (CET)

Section 0 - Draw Lists, Code 0x03

The page says for code 03:

  1 byte:  0x03
  2 bytes: weight ID
  1 byte:  N := weight count 
  2 bytes: Table ID
N*4 bytes: data

After scanning all MDL0 files I'm sure that following is correct:

  1 byte:  0x03
  2 bytes: weight ID
  1 byte:  N := weight count 
N*6 bytes: data

Wiimm 08:41, 1 February 2012 (CET)

MDL0 Page Updates

just figured I'd notify about a bunch of updates made to the page. These updates correct a few things with the vector info and bone-links, make note about the resource lists, as well as identify the fur vectors and fur-shell-layer vectors.

It's been a few years now and there's definately tonz more knowledge to be noted... Though what I've done could be restructured and cleaned up a bit more.

Also, my grammar is more based on logic, so my english wording kinda sucks... heh if anyone can think of a better way to state something than me, please do correct it. :)

Tcll (talk) 15:13, 9 April 2014 (UTC)