Talk:MDL0 (File Format)
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. :)