Home Gallery Resources The Team Rules chat Login Register
Pages:  1 ... 4 5 6 [7] 8 9 10 ... 25
Author Topic: Bone Tree Editor- development thread : Version 1.1 released  (Read 98896 times)
0 Members and 1 Guest are viewing this topic.
TheShyGuy
Holy Kitten
*
Offline Offline

Posts: 1003


  • Awards Super Saiyan Topic KCMM Veteran Heart Container Dedicated Hacker

  • View Profile Awards
    « Reply #90 on: December 10, 2010, 02:08:58 PM »


    what kind of tourney?
    Logged

    DarkPikachu
    Angel Kitten
    ***
    Offline Offline

    Posts: 3069


    complexity == fun

  • Awards Super Saiyan Topic Heart Container KCMM Veteran Tutorial Writer

  • View Profile Awards
    « Reply #91 on: December 10, 2010, 02:24:03 PM »


    SSB64
    Melee
    Brawl
    Brawl+
    Brawl-
    etc.
    Logged


    Quote: Friedslick6
    you have been through a lot of hassle. I've watched every topic you posted on this, and most of them seemed to disintegrate gradually.
    But the coolest part was that you didn't stop working on it despite that.

    Quote: Internet Explorer
    you're doing more with your life right now than probably most other people around you. You're a valuable asset to the Smash community. So yeah, you should be proud.

    quote: Greg
    You do have a gift which I've seen many developers use to their advantage. You can become a great coder, and with all of those ideas I think you can really build something great.

    TheShyGuy
    Holy Kitten
    *
    Offline Offline

    Posts: 1003


  • Awards Super Saiyan Topic KCMM Veteran Heart Container Dedicated Hacker

  • View Profile Awards
    « Reply #92 on: December 10, 2010, 03:48:02 PM »


    F I N A L L Y...got the grid to accurately show each bone in there correct spots =p....now to code for when you rearrange everything and stuff 0.o

    edit: thanks for the notes...they help =p

    edit2:lol...im trying to figure out how to assign the parents,first,next, and previous offsets..(within a grid)I know how to figure out the parents and first offsets...but figuring out if it has previous or next offsets(basically opposites) is tough....  It would be easy if i just make it so that you can manually input them(which i can do....)but it would make the program less efficient...beats moveup/down buttons lol.  I might be able to figure it out later times to take eh behreeek.

    So ive made:

    -new .exe
    -projects each bone representative(?) to a grid
    - shows each bone by index(or name ->checkbox)
    -you can move  bones around by just click the cell and choosing another cell
    -you can change a bones attributes or w/e in txt boxes
    -you can choose the file you want instead of the input/output thing


    still not done though like i said above...
    « Last Edit: December 10, 2010, 07:45:35 PM by theshyguy » Logged

    DarkPikachu
    Angel Kitten
    ***
    Offline Offline

    Posts: 3069


    complexity == fun

  • Awards Super Saiyan Topic Heart Container KCMM Veteran Tutorial Writer

  • View Profile Awards
    « Reply #93 on: December 11, 2010, 11:40:41 AM »


    edit2:lol...im trying to figure out how to assign the parents,first,next, and previous offsets..(within a grid)I know how to figure out the parents and first offsets...but figuring out if it has previous or next offsets(basically opposites) is tough....  It would be easy if i just make it so that you can manually input them(which i can do....)but it would make the program less efficient...beats moveup/down buttons lol.  I might be able to figure it out later times to take eh behreeek.


    the next/previous offset applies to the offset in the same group and blah...
    (not sure how to state what they do...) :/

    | 0, 0
    .| +2, 0
    ..| 0, 0
    .| 0, -2

    the parent/child offsets simply push it up to the next level

    may not have needed to state that Tongue
    « Last Edit: December 11, 2010, 11:53:04 AM by Tcll » Logged


    Quote: Friedslick6
    you have been through a lot of hassle. I've watched every topic you posted on this, and most of them seemed to disintegrate gradually.
    But the coolest part was that you didn't stop working on it despite that.

    Quote: Internet Explorer
    you're doing more with your life right now than probably most other people around you. You're a valuable asset to the Smash community. So yeah, you should be proud.

    quote: Greg
    You do have a gift which I've seen many developers use to their advantage. You can become a great coder, and with all of those ideas I think you can really build something great.

    TheShyGuy
    Holy Kitten
    *
    Offline Offline

    Posts: 1003


  • Awards Super Saiyan Topic KCMM Veteran Heart Container Dedicated Hacker

  • View Profile Awards
    « Reply #94 on: December 11, 2010, 12:31:09 PM »


    lol i know that the parent and child just push em up a lvl..thats why they were so easy...But within a grid it would be hard to know which bone SHOULD be a next and a previous after all the editing... ill give an ex in a sec...gotta open my exe

    edit:
    ex: the throw bone is a next of the hip bone which is sooo far away from eachother..(bad ex actually)...the toes are in the same column but  arent offseted to eachothere

    edit2:
    i can just figure out the next and prev if they are next to eachother(and if a child is between the two) but then the user would have to do the others. 
    « Last Edit: December 11, 2010, 12:48:11 PM by theshyguy » Logged

    DarkPikachu
    Angel Kitten
    ***
    Offline Offline

    Posts: 3069


    complexity == fun

  • Awards Super Saiyan Topic Heart Container KCMM Veteran Tutorial Writer

  • View Profile Awards
    « Reply #95 on: December 11, 2010, 12:55:01 PM »



    you know what...
    just use the parent/child offsets...

    don't worry about the next/prev offsets because-
    *rethinks* wait a minute

    next * 208 || prev * 208 (think about it in hex)

    the parent/child will append the tree...
    the next/prev offsets are to the bone data
    (each bone is 208 bytes in length)
    Logged


    Quote: Friedslick6
    you have been through a lot of hassle. I've watched every topic you posted on this, and most of them seemed to disintegrate gradually.
    But the coolest part was that you didn't stop working on it despite that.

    Quote: Internet Explorer
    you're doing more with your life right now than probably most other people around you. You're a valuable asset to the Smash community. So yeah, you should be proud.

    quote: Greg
    You do have a gift which I've seen many developers use to their advantage. You can become a great coder, and with all of those ideas I think you can really build something great.

    TheShyGuy
    Holy Kitten
    *
    Offline Offline

    Posts: 1003


  • Awards Super Saiyan Topic KCMM Veteran Heart Container Dedicated Hacker

  • View Profile Awards
    « Reply #96 on: December 11, 2010, 01:03:30 PM »


    lol i don't think your getting what im trying to say....if you were to rearrange the WHOLE tree...so whatever was in hex before doesn't matter because right now they  are useless.  Based on a grid you cannot figure out the next/prev without them being more than two bones apart..


    next * 208 || prev * 208 (think about it in hex)

    the parent/child will append the tree...
    the next/prev offsets are to the bone data
    (each bone is 208 bytes in length)


    i know what you said(already knew that?)...just not what your trying to say lol
    Logged

    DarkPikachu
    Angel Kitten
    ***
    Offline Offline

    Posts: 3069


    complexity == fun

  • Awards Super Saiyan Topic Heart Container KCMM Veteran Tutorial Writer

  • View Profile Awards
    « Reply #97 on: December 11, 2010, 01:37:04 PM »


    I think I may understand actually...

    "if you were to rearrange the table" (after loading)

    you don't need the next/prev offsets right now, unless you're editing :/
    build the table using the parent/child offsets
    (the next/prev offsets have nothing to do with the table)

    fist off though, what... or where are you at with this right now?? :/
    Logged


    Quote: Friedslick6
    you have been through a lot of hassle. I've watched every topic you posted on this, and most of them seemed to disintegrate gradually.
    But the coolest part was that you didn't stop working on it despite that.

    Quote: Internet Explorer
    you're doing more with your life right now than probably most other people around you. You're a valuable asset to the Smash community. So yeah, you should be proud.

    quote: Greg
    You do have a gift which I've seen many developers use to their advantage. You can become a great coder, and with all of those ideas I think you can really build something great.

    TheShyGuy
    Holy Kitten
    *
    Offline Offline

    Posts: 1003


  • Awards Super Saiyan Topic KCMM Veteran Heart Container Dedicated Hacker

  • View Profile Awards
    « Reply #98 on: December 11, 2010, 02:05:52 PM »


    this is how it(will) work

    you open the mdl0...enter the topn and click a button to load the bones into a grid.
    you move the cells with the indexes/names around until your done.
    then you click a button that will check through every cell with an index to figure out there offsets.

    i think that you thought that it was making the changes to the file as you edited the grid..which it doesnt.
    Logged

    DarkPikachu
    Angel Kitten
    ***
    Offline Offline

    Posts: 3069


    complexity == fun

  • Awards Super Saiyan Topic Heart Container KCMM Veteran Tutorial Writer

  • View Profile Awards
    « Reply #99 on: December 11, 2010, 03:12:16 PM »


    this is how it(will) work

    you open the mdl0...enter the topn and click a button to load the bones into a grid.
    you move the cells with the indexes/names around until your done.
    then you click a button that will check through every cell with an index to figure out there offsets.

    i think that you thought that it was making the changes to the file as you edited the grid..which it doesnt.
    actually...
    you were ahead of what I was thinking :/

    anyways...

    so how-... you-...
    you load a file into memory right??

    how do you split the data??
    Logged


    Quote: Friedslick6
    you have been through a lot of hassle. I've watched every topic you posted on this, and most of them seemed to disintegrate gradually.
    But the coolest part was that you didn't stop working on it despite that.

    Quote: Internet Explorer
    you're doing more with your life right now than probably most other people around you. You're a valuable asset to the Smash community. So yeah, you should be proud.

    quote: Greg
    You do have a gift which I've seen many developers use to their advantage. You can become a great coder, and with all of those ideas I think you can really build something great.

    TheShyGuy
    Holy Kitten
    *
    Offline Offline

    Posts: 1003


  • Awards Super Saiyan Topic KCMM Veteran Heart Container Dedicated Hacker

  • View Profile Awards
    « Reply #100 on: December 11, 2010, 03:35:04 PM »


    -i load the file
    -then I get each bones stuff/info
    -and i put that info into each cell index(so if you move a bone/cell the data is still the same)
    -when you click a bone/cell the data stored inside will appear into the  table at the right where you can edit its data manually

    basically i store the memory into cells and lists

    edit: ima take a break and do some animation lol.....look at this 0.o

    <a href="http://www.youtube.com/watch?v=Sdx1O9lhR1k" target="_blank" class="aeva_link bbc_link new_win">http://www.youtube.com/watch?v=Sdx1O9lhR1k</a>
    « Last Edit: December 11, 2010, 04:04:46 PM by theshyguy » Logged

    DarkPikachu
    Angel Kitten
    ***
    Offline Offline

    Posts: 3069


    complexity == fun

  • Awards Super Saiyan Topic Heart Container KCMM Veteran Tutorial Writer

  • View Profile Awards
    « Reply #101 on: December 11, 2010, 04:29:37 PM »


    I mean...
    IDK how to use internal mem Tongue

    I kinda need that for converting formats...

    as for animation...
    I have to completely animate Pachirisu from scratch...
    heh, at least it'll be easy with Brawlbox modset 4.1 Cheesy
    ^you get to rotate the bones ^_^
    Logged


    Quote: Friedslick6
    you have been through a lot of hassle. I've watched every topic you posted on this, and most of them seemed to disintegrate gradually.
    But the coolest part was that you didn't stop working on it despite that.

    Quote: Internet Explorer
    you're doing more with your life right now than probably most other people around you. You're a valuable asset to the Smash community. So yeah, you should be proud.

    quote: Greg
    You do have a gift which I've seen many developers use to their advantage. You can become a great coder, and with all of those ideas I think you can really build something great.

    TheShyGuy
    Holy Kitten
    *
    Offline Offline

    Posts: 1003


  • Awards Super Saiyan Topic KCMM Veteran Heart Container Dedicated Hacker

  • View Profile Awards
    « Reply #102 on: December 11, 2010, 05:28:28 PM »


    i was messing with a mdl0...and i know how the relocation  table works now(thanks)...now i really see why adding/deleting bones would mean rewriting the mdl0 lol. If you were to add a bone you'd have to also add its relocation data....then change all the other relocation data after that one....loool after all the reloc data is found out...the person who attempts to make an .exe to add bones might have a hard(hmmm maybe) time =p
    Logged

    DarkPikachu
    Angel Kitten
    ***
    Offline Offline

    Posts: 3069


    complexity == fun

  • Awards Super Saiyan Topic Heart Container KCMM Veteran Tutorial Writer

  • View Profile Awards
    « Reply #103 on: December 11, 2010, 05:59:44 PM »


    exactly Tongue

    once I learn how to write the seperate portions to memory
    (once I learn how to use memory) lol
    I'll be able to write an MDL0 easily

    but yea... need to learn how to use mem Sad
    Logged


    Quote: Friedslick6
    you have been through a lot of hassle. I've watched every topic you posted on this, and most of them seemed to disintegrate gradually.
    But the coolest part was that you didn't stop working on it despite that.

    Quote: Internet Explorer
    you're doing more with your life right now than probably most other people around you. You're a valuable asset to the Smash community. So yeah, you should be proud.

    quote: Greg
    You do have a gift which I've seen many developers use to their advantage. You can become a great coder, and with all of those ideas I think you can really build something great.

    DarkPikachu
    Angel Kitten
    ***
    Offline Offline

    Posts: 3069


    complexity == fun

  • Awards Super Saiyan Topic Heart Container KCMM Veteran Tutorial Writer

  • View Profile Awards
    « Reply #104 on: December 11, 2010, 11:50:53 PM »


    hey...

    template UD while at tourneys Tongue
    finished type3 definitions:
    Code:
    <?xml version="1.0"?>
    <!DOCTYPE binary_file_format SYSTEM "BinaryFileFormat.dtd">
    <binary_file_format name="MDL0" type_name="" comment="" expr="" default_byte_order="big" default_read_only="false" default_char_set="ansi">
    <define_struct type_name="offset_name" comment="" expr="">
    <data type="int" name="str_len" format="unsigned" len="1" display=""/>
    <data type="string" name="name" format="ascii" len="str_len" display=""/>
    </define_struct>
    <define_struct type_name="bounds" comment="" expr="">
    <data type="int" name="min_X" format="unsigned" len="4" display=""/>
    <data type="int" name="min_Y" format="unsigned" len="4" display=""/>
    <data type="int" name="min_Z" format="unsigned" len="4" display=""/>
    <data type="int" name="max_X" format="unsigned" len="4" display=""/>
    <data type="int" name="max_Y" format="unsigned" len="4" display=""/>
    <data type="int" name="max_Z" format="unsigned" len="4" display=""/>
    <data type="none" name="pad" len="8"/>
    </define_struct>
    <define_struct type_name="relocation_group" comment="" expr="">
    <data type="int" name="block_len" format="unsigned" len="4" display=""/>
    <data type="int" name="num_offsets" format="unsigned" len="4" display=""/>
    <data type="int" name="tag" format="unsigned" len="4" display="hex"/>
    <data type="int" name="unk1" format="unsigned" len="2" display="hex"/>
    <data type="int" name="unk2" format="unsigned" len="2" display="hex"/>
    <data type="int" name="pad" format="unsigned" len="8" display="hex"/>
    </define_struct>
    <define_struct type_name="relocation_offset" comment="" expr="">
    <data type="int" name="ID" format="unsigned" len="2" display=""/>
    <data type="int" name="unk1" format="unsigned" len="2" display="hex"/>
    <data type="int" name="unk2" format="unsigned" len="2" display="hex"/>
    <data type="int" name="unk3" format="unsigned" len="2" display="hex"/>
    <data type="int" name="string_offset" format="unsigned" len="4" display=""/>
    <data type="int" name="data_offset" format="unsigned" len="4" display=""/>
    </define_struct>
    <define_struct type_name="Definitions" comment="" expr="">
    <for name="type" count="" stop_test="this.type == 1" type_name="" comment="">
    <struct name="" type_name="" comment="" expr="type{this.type}">
    <data type="int" name="type" format="unsigned" len="1" display=""/>
    <if test="type == 2" comment="">
    <struct name="t2" type_name="" comment="" expr="({this.ID1},{this.ID2})">
    <data type="int" name="ID1" format="unsigned" len="2" display=""/>
    <data type="int" name="ID2" format="unsigned" len="2" display=""/>
    </struct>
    </if>
    <if test="type == 3" comment="">
    <struct name="t3" type_name="" comment="" expr="({this.ID}) ({this.count})">
    <data type="int" name="ID" format="unsigned" len="2" display=""/>
    <data type="int" name="count" format="unsigned" len="1" display=""/>
    <for name="tmp" count="count || count - 1" stop_test="count == 0" type_name="" comment="">
    <data type="none" name="" len="6"/>
    </for>
    </struct>
    </if>
    <if test="type == 4" comment="">
    <struct name="t4" type_name="" comment="" expr="({this.ID1},{this.ID2},{this.ID3},{this.ID4})">
    <data type="int" name="ID1" format="unsigned" len="2" display=""/>
    <data type="int" name="ID2" format="unsigned" len="2" display=""/>
    <data type="int" name="ID3" format="unsigned" len="2" display=""/>
    <data type="int" name="ID4" format="unsigned" len="1" display=""/>
    </struct>
    </if>
    <if test="type == 5" comment="">
    <struct name="t5" type_name="" comment="" expr="({this.ID1},{this.ID2})">
    <data type="int" name="ID1" format="unsigned" len="2" display=""/>
    <data type="int" name="ID2" format="unsigned" len="2" display=""/>
    </struct>
    </if>
    </struct>
    </for>
    </define_struct>
    <define_struct type_name="Bones" comment="" expr="">
    <struct name="bone_header" type_name="" comment="" expr="">
    <data type="int" name="header_len" len="4" format="unsigned" display=""/>
    <data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
    <data type="int" name="string_offset" len="4" format="unsigned" display=""/>
    <data type="int" name="bone_index" len="4" format="unsigned" display=""/>
    <data type="int" name="node_ID" len="4" format="unsigned" display=""/>
    <data type="int" name="flags" len="4" format="unsigned" display=""/>
    <data type="int" name="pad" len="8" format="unsigned" display=""/>
    <struct name="loc_rot_sca" type_name="" comment="" expr="">
    <data type="int" name="sca_X" format="unsigned" len="4" display=""/>
    <data type="int" name="sca_Y" len="4" format="unsigned" display=""/>
    <data type="int" name="sca_Z" len="4" format="unsigned" display=""/>
    <data type="int" name="rot_X" len="4" format="unsigned" display=""/>
    <data type="int" name="rot_Y" len="4" format="unsigned" display=""/>
    <data type="int" name="rot_Z" len="4" format="unsigned" display=""/>
    <data type="int" name="loc_X" len="4" format="unsigned" display=""/>
    <data type="int" name="loc_Y" len="4" format="unsigned" display=""/>
    <data type="int" name="loc_Z" len="4" format="unsigned" display=""/>
    </struct>
    <struct name="bound" type_name="" comment="" expr="">
    <data type="int" name="min_X" len="4" format="unsigned" display=""/>
    <data type="int" name="min_Y" len="4" format="unsigned" display=""/>
    <data type="int" name="min_Z" len="4" format="unsigned" display=""/>
    <data type="int" name="max_X" len="4" format="unsigned" display=""/>
    <data type="int" name="max_Y" len="4" format="unsigned" display=""/>
    <data type="int" name="max_Z" len="4" format="unsigned" display=""/>
    </struct>
    <data type="int" name="parent" len="4" format="signed" display=""/>
    <data type="int" name="child" len="4" format="unsigned" display=""/>
    <data type="int" name="next" len="4" format="unsigned" display=""/>
    <data type="int" name="prev" len="4" format="unsigned" display=""/>
    <data type="int" name="part2" len="4" format="unsigned" display=""/>
    </struct>
    <struct name="frame_matrix" type_name="" comment="" expr="">
    <data type="int" name="s_1_1" format="signed" len="4" display=""/>
    <data type="int" name="s_2_1" format="signed" len="4" display=""/>
    <data type="int" name="s_3_1" format="signed" len="4" display=""/>
    <data type="int" name="s_4_1" format="signed" len="4" display=""/>
    <data type="int" name="s_1_2" format="signed" len="4" display=""/>
    <data type="int" name="s_2_2" format="signed" len="4" display=""/>
    <data type="int" name="s_3_2" format="signed" len="4" display=""/>
    <data type="int" name="s_4_2" format="signed" len="4" display=""/>
    <data type="int" name="s_1_3" format="signed" len="4" display=""/>
    <data type="int" name="s_2_3" format="signed" len="4" display=""/>
    <data type="int" name="s_3_3" format="signed" len="4" display=""/>
    <data type="int" name="s_4_3" format="signed" len="4" display=""/>
    </struct>
    <struct name="inverse_matrix" type_name="" comment="" expr="">
    <data type="int" name="s_1_1" format="signed" len="4" display=""/>
    <data type="int" name="s_2_1" format="signed" len="4" display=""/>
    <data type="int" name="s_3_1" format="signed" len="4" display=""/>
    <data type="int" name="s_4_1" format="signed" len="4" display=""/>
    <data type="int" name="s_1_2" format="signed" len="4" display=""/>
    <data type="int" name="s_2_2" format="signed" len="4" display=""/>
    <data type="int" name="s_3_2" format="signed" len="4" display=""/>
    <data type="int" name="s_4_2" format="signed" len="4" display=""/>
    <data type="int" name="s_1_3" format="signed" len="4" display=""/>
    <data type="int" name="s_2_3" format="signed" len="4" display=""/>
    <data type="int" name="s_3_3" format="signed" len="4" display=""/>
    <data type="int" name="s_4_3" format="signed" len="4" display=""/>
    </struct>
    </define_struct>
    <define_struct type_name="Vertices" comment="" expr="">
    <struct name="vertice_header" type_name="" comment="" expr="">
    <data type="int" name="block_size" len="4" format="unsigned" display=""/>
    <data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
    <data type="int" name="data_offset" len="4" format="unsigned" display=""/>
    <data type="int" name="string_offset" len="4" format="unsigned" display=""/>
    <data type="int" name="ID" len="4" format="unsigned" display=""/>
    <data type="int" name="isXYZ" len="4" format="unsigned" display=""/>
    <data type="int" name="type" len="4" format="unsigned" display=""/>
    <data type="int" name="modifier" len="1" format="unsigned" display=""/>
    <data type="int" name="entry_stride" len="1" format="unsigned" display=""/>
    <data type="int" name="num_vertices" len="2" format="unsigned" display=""/>
    <if test="isXYZ == 1" comment="">
    <use_struct name="bounds" expr="" type_name="bounds" comment=""/>
    </if>
    </struct>
    <data type="string" name="vertices" len="vertice_header.entry_stride * vertice_header.num_vertices" format="default" display="vert structures" comment="I could've put a 'FOR' here,
    but it'd take too long when loading the file"/>
    <data type="none" name="pad" len="vertice_header.block_size - (vertice_header.entry_stride*vertice_header.num_vertices) - vertice_header.data_offset"/>
    </define_struct>
    <define_struct type_name="Normals" comment="" expr="">
    <struct name="normal_header" type_name="" comment="" expr="">
    <data type="int" name="block_size" len="4" format="unsigned" display=""/>
    <data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
    <data type="int" name="data_offset" len="4" format="unsigned" display=""/>
    <data type="int" name="string_offset" len="4" format="unsigned" display=""/>
    <data type="int" name="ID" len="4" format="unsigned" display=""/>
    <data type="int" name="isXYZ" len="4" format="unsigned" display=""/>
    <data type="int" name="type" len="4" format="unsigned" display=""/>
    <data type="int" name="modifier" len="1" format="unsigned" display=""/>
    <data type="int" name="entry_stride" len="1" format="unsigned" display=""/>
    <data type="int" name="num_normals" len="2" format="unsigned" display=""/>
    <if test="isXYZ == 1" comment="">
    <use_struct name="bounds" expr="" type_name="bounds" comment=""/>
    </if>
    </struct>
    <data type="string" name="normals" format="default" display="normal structures" len="normal_header.entry_stride*normal_header.num_normals" comment="I could've put a 'FOR' here,
    but it'd take too long when loading the file"/>
    <data type="none" name="pad" len="normal_header.block_size - (normal_header.entry_stride*normal_header.num_normals) - normal_header.data_offset"/>
    </define_struct>
    <define_struct type_name="Colors" comment="" expr="">
    <struct name="color_header" type_name="" comment="" expr="">
    <data type="int" name="block_size" len="4" format="signed" display=""/>
    <data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
    <data type="int" name="data_offset" len="4" format="signed" display=""/>
    <data type="int" name="string_offset" len="4" format="signed" display=""/>
    <data type="int" name="ID" len="4" format="signed" display=""/>
    <data type="int" name="isRGBA" len="4" format="signed" display=""/>
    <data type="int" name="type" len="4" format="signed" display=""/>
    <data type="int" name="entry_stride" len="1" format="signed" display=""/>
    <data type="int" name="modifier" len="1" format="signed" display=""/>
    <data type="int" name="num_colors" len="2" format="signed" display=""/>
    </struct>
    <for name="color" count="color_header.num_colors || color_header.num_colors - 1" stop_test="color_header.num_colors == 0" type_name="" comment="">
    <data type="none" name="color" len="color_header.entry_stride"/>
    </for>
    <data type="none" name="pad" len="color_header.block_size - (color_header.num_colors*color_header.entry_stride) - 32"/>
    </define_struct>
    <define_struct type_name="UV_Points" comment="" expr="">
    <struct name="UV_header" type_name="" comment="" expr="">
    <data type="int" name="block_size" len="4" format="unsigned" display=""/>
    <data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
    <data type="int" name="data_offset" len="4" format="unsigned" display=""/>
    <data type="int" name="string_offset" len="4" format="unsigned" display=""/>
    <data type="int" name="ID" len="4" format="unsigned" display=""/>
    <data type="int" name="isXY" len="4" format="unsigned" display=""/>
    <data type="int" name="type" len="4" format="unsigned" display=""/>
    <data type="int" name="modifier" len="1" format="unsigned" display=""/>
    <data type="int" name="entry_stride" len="1" format="unsigned" display=""/>
    <data type="int" name="num_UVs" len="2" format="unsigned" display=""/>
    <if test="isXY == 1" comment="">
    <struct name="bounds" expr="" type_name="" comment="">
    <data type="int" name="min_X" format="unsigned" len="4" display=""/>
    <data type="int" name="min_Y" format="unsigned" len="4" display=""/>
    <data type="int" name="max_X" format="unsigned" len="4" display=""/>
    <data type="int" name="max_Y" format="unsigned" len="4" display=""/>
    <data type="none" name="pad" len="16"/>
    </struct>
    </if>
    </struct>
    <data type="string" name="UVs" len="UV_header.entry_stride * UV_header.num_UVs" format="default" display="uv structures" comment="I could've put a 'FOR' here,
    but it'd take too long when loading the file"/>
    <data type="none" name="pad" len="UV_header.block_size - (UV_header.entry_stride*UV_header.num_UVs) - UV_header.data_offset"/>
    </define_struct>
    <define_struct type_name="Shaders" comment="" expr="">
    <struct name="header" type_name="" comment="" expr="">
    <data type="int" name="block_size" len="4" format="unsigned" display=""/>
    <data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
    <data type="int" name="string_offset" len="4" format="unsigned" display=""/>
    <data type="int" name="ID" len="4" format="unsigned" display=""/>
    <data type="int" name="unk1" len="4" format="unsigned" display=""/>
    <data type="int" name="textures" len="1" format="unsigned" display=""/>
    <data type="int" name="num_layers" len="1" format="unsigned" display=""/>
    <data type="int" name="Flag3" len="1" format="unsigned" display=""/>
    <data type="int" name="Flag4" len="1" format="unsigned" display=""/>
    <data type="int" name="type" len="4" format="unsigned" display=""/>
    <data type="int" name="Flag5" len="1" format="unsigned" display=""/>
    <data type="int" name="Flag6" len="1" format="unsigned" display=""/>
    <data type="int" name="Flag7" len="1" format="unsigned" display=""/>
    <data type="int" name="Flag8" len="1" format="unsigned" display=""/>
    <data type="int" name="unk3" format="unsigned" len="4" display=""/>
    <data type="int" name="unk4" format="signed" len="4" display=""/>
    <data type="int" name="material_offset" format="signed" len="4" display=""/>
    <data type="int" name="num_textures" format="signed" len="4" display=""/>
    <data type="int" name="textures_offset" format="signed" len="4" display=""/>
    <data type="int" name="P4_offset" format="signed" len="4" display=""/>
    <data type="int" name="P5_offset" format="signed" len="4" display=""/>
    <data type="int" name="P6_offset" format="signed" len="4" display=""/>
    </struct>
    <jump offset="header.material_offset+(header.MDL0_offset*-1)" comment="" origin="start">
    <use_struct name="Material_Reference" expr="" type_name="Materials" comment=""/>
    </jump>
    <if test="header.textures_offset != 0" comment="">
    <jump offset="header.textures_offset+(header.MDL0_offset*-1)" comment="" origin="start">
    <for name="texture" count="header.textures || header.textures -1" stop_test="header.textures == 0" type_name="" comment="">
    <struct name="texture" type_name="" comment="" expr="{this.offset_name.name}">
    <data type="int" name="string_offset" format="signed" len="4" display=""/>
    <data type="int" name="pad" len="4" format="signed" display=""/>
    <data type="int" name="unk1" format="signed" len="4" display=""/>
    <data type="int" name="unk2" format="signed" len="4" display=""/>
    <data type="int" name="unk3" format="signed" len="4" display=""/>
    <data type="int" name="unk4" format="signed" len="4" display=""/>
    <data type="int" name="layerID1" format="signed" len="4" display=""/>
    <data type="int" name="layerID2" format="signed" len="4" display=""/>
    <data type="int" name="unk5" format="signed" len="4" display=""/>
    <data type="int" name="unk6" format="signed" len="4" display=""/>
    <data type="int" name="float" format="unsigned" len="4" display=""/>
    <data type="int" name="unk7" format="signed" len="4" display=""/>
    <data type="int" name="unk8" format="signed" len="4" display=""/>
    <jump offset="string_offset -53" comment="" origin="current">
    <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
    </jump>
    </struct>
    </for>
    </jump>
    </if>
    <if test="header.P4_offset != 0" comment="">
    <jump offset="header.P4_offset+(header.MDL0_offset*-1)" comment="" origin="start">
    <struct name="P4" type_name="" comment="" expr="">
    <data type="int" name="tmp" format="signed" len="4" display=""/>
    </struct>
    </jump>
    </if>
    <if test="header.P5_offset != 0" comment="">
    <jump offset="header.P5_offset+(header.MDL0_offset*-1)" comment="" origin="start">
    <struct name="P5" type_name="" comment="" expr="">
    <data type="none" name="tmp" len="384"/>
    </struct>
    </jump>
    </if>
    <if test="header.P6_offset != 0" comment="">
    <jump offset="header.P6_offset+(header.MDL0_offset*-1)" comment="" origin="start">
    <struct name="P6" type_name="" comment="" expr="">
    <data type="none" name="tmp" len="384"/>
    </struct>
    </jump>
    </if>
    </define_struct>
    <define_struct type_name="Materials" comment="" expr="">
    <struct name="header" type_name="" comment="" expr="">
    <data type="int" name="block_length" format="signed" len="4" display=""/>
    <data type="int" name="MDL0_offset" format="signed" len="4" display=""/>
    <data type="int" name="ID" format="signed" len="4" display=""/>
    <data type="int" name="unk" format="unsigned" len="1" display=""/>
    </struct>
    <data type="none" name="tmp" len="header.block_length - 13"/>
    </define_struct>
    <define_struct type_name="Polygons" comment="" expr="">
    <struct name="header" type_name="" comment="" expr="">
    <data type="none" name="tmp" len="4"/>
    </struct>
    </define_struct>
    <define_struct type_name="Textures" comment="" expr="">
    <data type="int" name="textures" format="signed" len="4" display=""/>
    <for name="texture" count="textures || textures - 1" stop_test="textures == 0" type_name="" comment="">
    <struct name="texture" type_name="" comment="" expr="X: {this.X}, Y: {this.Y}">
    <data type="int" name="X" format="unsigned" len="4" display=""/>
    <data type="int" name="Y" format="unsigned" len="4" display=""/>
    </struct>
    </for>
    </define_struct>
    <define_struct type_name="Pallets" comment="" expr="">
    <data type="int" name="pallets" format="signed" len="4" display=""/>
    <for name="pallet" count="pallets || pallets - 1" stop_test="pallets == 0" type_name="" comment="">
    <struct name="texture" type_name="" comment="" expr="X: {this.X}, Y: {this.Y}">
    <data type="int" name="X" format="unsigned" len="4" display=""/>
    <data type="int" name="Y" format="unsigned" len="4" display=""/>
    </struct>
    </for>
    </define_struct>
    <struct name="header" type_name="" comment="" expr="">
    <data type="string" name="magic" len="4" format="ascii" display=""/>
    <data type="int" name="filesize" format="unsigned" len="4" display=""/>
    <data type="int" name="sections" format="unsigned" len="4" display=""/>
    <data type="int" name="nodes" format="signed" len="4" display=""/>
    <struct name="lists" type_name="" comment="" expr="">
    <data type="int" name="Definitions" format="unsigned" len="4" display=""/>
    <data type="int" name="Bones" format="unsigned" len="4" display=""/>
    <data type="int" name="Vertices" format="unsigned" len="4" display=""/>
    <data type="int" name="Normals" format="unsigned" len="4" display=""/>
    <data type="int" name="Colors" format="unsigned" len="4" display=""/>
    <data type="int" name="UV_Points" format="unsigned" len="4" display=""/>
    <data type="int" name="Shaders" format="unsigned" len="4" display=""/>
    <data type="int" name="Materials" format="unsigned" len="4" display=""/>
    <data type="int" name="Polygons" format="unsigned" len="4" display=""/>
    <data type="int" name="Textures" format="unsigned" len="4" display=""/>
    <data type="int" name="Pallets" format="unsigned" len="4" display=""/>
    </struct>
    <data type="int" name="name_offset" format="unsigned" len="4" display=""/>
    <data type="int" name="header_len" format="unsigned" len="4" display=""/>
    <data type="int" name="header_offset" format="signed" len="4" display=""/>
    <data type="int" name="unk1" format="unsigned" len="4" display=""/>
    <data type="int" name="unk2" format="unsigned" len="4" display=""/>
    <data type="int" name="num_verticies" format="unsigned" len="4" display=""/>
    <data type="int" name="num_faces" format="unsigned" len="4" display=""/>
    <data type="int" name="unk3" format="unsigned" len="4" display=""/>
    <data type="int" name="num_nodes" format="unsigned" len="4" display=""/>
    <data type="int" name="version" format="unsigned" len="4" display=""/>
    <data type="int" name="unk4" format="unsigned" len="2" display=""/>
    <data type="int" name="unk5" format="unsigned" len="2" display=""/>
    <struct name="bounds" type_name="" comment="" expr="">
    <data type="int" name="min_X" format="unsigned" len="4" display=""/>
    <data type="int" name="min_Y" format="unsigned" len="4" display=""/>
    <data type="int" name="min_Z" format="unsigned" len="4" display=""/>
    <data type="int" name="max_X" format="unsigned" len="4" display=""/>
    <data type="int" name="max_Y" format="unsigned" len="4" display=""/>
    <data type="int" name="max_Z" format="unsigned" len="4" display=""/>
    </struct>
    </struct>
    <jump offset="header.nodes * -1" comment="" origin="start">
    <struct name="nodes" type_name="" comment="" expr="">
    <data type="int" name="num_nodes" format="signed" len="4" display=""/>
    <for name="node" count="num_nodes || num_nodes - 1" stop_test="num_nodes == 0" type_name="" comment="">
    <data type="int" name="node" format="signed" len="4" display=""/>
    </for>
    </struct>
    </jump>
    <if test="header.lists.Definitions != 0" comment="">
    <jump offset="header.lists.Definitions" comment="" origin="start">
    <struct name="Definitions" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
    <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.Definitions" comment="" origin="start">
    <use_struct name="Definitions" expr="" type_name="Definitions" comment=""/>
    </jump>
    <jump offset="relocation_offset.string_offset + header.lists.Definitions - 1" comment="" origin="start">
    <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.lists.Bones != 0" comment="">
    <jump offset="header.lists.Bones" comment="" origin="start">
    <struct name="Bones" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
    <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.Bones" comment="" origin="start">
    <use_struct name="Bone_data" expr="" type_name="Bones" comment=""/>
    </jump>
    <jump offset="relocation_offset.string_offset + header.lists.Bones - 1" comment="" origin="start">
    <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.lists.Vertices != 0" comment="">
    <jump offset="header.lists.Vertices" comment="" origin="start">
    <struct name="Vertices" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
    <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.Vertices" comment="" origin="start">
    <use_struct name="Vertices" expr="" type_name="Vertices" comment=""/>
    </jump>
    <jump offset="relocation_offset.string_offset + header.lists.Vertices - 1" comment="" origin="start">
    <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.lists.Normals != 0" comment="">
    <jump offset="header.lists.Normals" comment="" origin="start">
    <struct name="Normals" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
    <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.Normals" comment="" origin="start">
    <use_struct name="Normals" expr="" type_name="Normals" comment=""/>
    </jump>
    <jump offset="relocation_offset.string_offset + header.lists.Normals - 1" comment="" origin="start">
    <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.lists.Colors != 0" comment="">
    <jump offset="header.lists.Colors" comment="" origin="start">
    <struct name="Colors" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
    <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.Colors" comment="" origin="start">
    <use_struct name="Colors" expr="" type_name="Colors" comment=""/>
    </jump>
    <jump offset="relocation_offset.string_offset + header.lists.Colors - 1" comment="" origin="start">
    <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.lists.UV_Points != 0" comment="">
    <jump offset="header.lists.UV_Points" comment="" origin="start">
    <struct name="UV_Points" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
    <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.UV_Points" comment="" origin="start">
    <use_struct name="UV_Points" expr="" type_name="UV_Points" comment=""/>
    </jump>
    <jump offset="relocation_offset.string_offset + header.lists.UV_Points - 1" comment="" origin="start">
    <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.lists.Shaders != 0" comment="">
    <jump offset="header.lists. Shaders" comment="" origin="start">
    <struct name="Shaders" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
    <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.Shaders" comment="" origin="start">
    <use_struct name="Shaders" expr="" type_name="Shaders" comment=""/>
    </jump>
    <jump offset="relocation_offset.string_offset + header.lists.Shaders - 1" comment="" origin="start">
    <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.lists.Materials != 0" comment="">
    <jump offset="header.lists.Materials" comment="" origin="start">
    <struct name="Materials" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
    <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.Materials" comment="" origin="start">
    <use_struct name="Materials" expr="" type_name="Materials" comment=""/>
    </jump>
    <jump offset="relocation_offset.string_offset + header.lists.Materials - 1" comment="" origin="start">
    <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.lists.Polygons != 0" comment="">
    <jump offset="header.lists.Polygons" comment="" origin="start">
    <struct name="Polygons" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
    <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.Polygons" comment="" origin="start">
    <use_struct name="Polygons" expr="" type_name="Polygons" comment=""/>
    </jump>
    <jump offset="relocation_offset.string_offset + header.lists.Polygons - 1" comment="" origin="start">
    <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.lists.Textures != 0" comment="">
    <jump offset="header.lists.Textures" comment="" origin="start">
    <struct name="Textures" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
    <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.Textures" comment="" origin="start">
    <use_struct name="Textures" expr="" type_name="Textures" comment=""/>
    </jump>
    <jump offset="relocation_offset.string_offset + header.lists.Textures - 1" comment="" origin="start">
    <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.lists.Pallets != 0" comment="">
    <jump offset="header.lists.Pallets" comment="" origin="start">
    <struct name="Pallets" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
    <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.Pallets" comment="" origin="start">
    <use_struct name="Pallets" expr="" type_name="Pallets" comment=""/>
    </jump>
    <jump offset="relocation_offset.string_offset + header.lists.Pallets - 1" comment="" origin="start">
    <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <data type="none" name="none"/>
    </binary_file_format>

    enjoy Wink
    Logged


    Quote: Friedslick6
    you have been through a lot of hassle. I've watched every topic you posted on this, and most of them seemed to disintegrate gradually.
    But the coolest part was that you didn't stop working on it despite that.

    Quote: Internet Explorer
    you're doing more with your life right now than probably most other people around you. You're a valuable asset to the Smash community. So yeah, you should be proud.

    quote: Greg
    You do have a gift which I've seen many developers use to their advantage. You can become a great coder, and with all of those ideas I think you can really build something great.

    Pages:  1 ... 4 5 6 [7] 8 9 10 ... 25
    Print
    Jump to: