Home Gallery Resources The Team Rules chat Login Register
Pages:  1 [2] 3 4 5 ... 25
Author Topic: Bone Tree Editor- development thread : Version 1.1 released  (Read 106452 times)
0 Members and 2 Guests are viewing this topic.
DarkPikachu
Angel Kitten
***
Offline Offline

Posts: 3069


complexity == fun

  • Awards Super Saiyan Topic Heart Container KCMM Veteran Tutorial Writer

  • View Profile Awards
    « Reply #15 on: December 05, 2010, 12:21:56 AM »


    @theshyguy:
    just curious...
    do you edit the bones through the relocation table??

    I tried your program, and well...
    it wasn't exactly the life-saver I was hoping for :/

    if you don't know how to use the relocation table, but know how to edit the bones themselves,
    I have a template thet may help you out Wink
    note: you need HexEdit to use the template (it's a free, no trial program)

    EDIT:
    for the layout, can you make it look like Brawlbox??
    or is that a little too complicated...
    ^it is for me :/ (can't prog GUI's)
    « Last Edit: December 05, 2010, 12:23:45 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 #16 on: December 05, 2010, 01:09:37 AM »


    - I dunno what the relocation table is lol...i edit the bones themselves...each individually lol...changing one bone affects others so that's why I made a program.

    I know it's not the easiest to understand but it works...any suggestions will be nice. I would like to make a preview tree, but I gotta learn how to make a node wrapper or something.

    what's the relocation table anyways? If you explain then maybe I can figure a way 2 edit bones from there...or something
    Logged

    BlackJax96
    Brawl Mod God
    Boss Kitten
    ****
    Offline Offline

    Posts: 4612


  • Awards KCMM Veteran Sniper King for a Day Featured

  • View Profile Awards
    « Reply #17 on: December 05, 2010, 01:30:30 AM »


    oh I see how to use the save function now, that helps a lot but you really need to make that undo/redo button 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 #18 on: December 05, 2010, 09:04:00 AM »


    - I dunno what the relocation table is lol...i edit the bones themselves...each individually lol...changing one bone affects others so that's why I made a program.

    interesting...
    so the method you do does work in-game??

    I know it's not the easiest to understand but it works...any suggestions will be nice. I would like to make a preview tree, but I gotta learn how to make a node wrapper or something.

    ah...
    so you're not there yet either Tongue

    what's the relocation table anyways? If you explain then maybe I can figure a way 2 edit bones from there...or something

    it'd be better to show you...
    my template is unfinished, but I got the basic structures outlined...
    the bones are almost done :/ (thought they were done)
    just found they overlap each other by 32bytes
    give me a moment to fix that and then I'll post the XML
    I'll tell you where to put it when I post it Wink

    oh I see how to use the save function now, that helps a lot but you really need to make that undo/redo button lol.

    heh...
    I think he's more like me Tongue (don't think he knows how to use the clipboard)
    that's how undo/redo/cut/copy/paste works (it's all stored in the clipboard)

    EDIT: @theshyguy:
    you may want to get HexEdit if you don't have it Wink
    here's an easy link to get it: http://www.smashboards.com/showpost.php?p=11656041&postcount=2778
    « Last Edit: December 05, 2010, 09:12:00 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 #19 on: December 05, 2010, 09:22:04 AM »


    - of course it works in game lol or else the program would be fail lol
    -lol yeh...it would be so easy 2 make a preview tree if you can put in their offsets....(for c# anyways)

    -skip lol
    -what do you mean it's stored in the clip board? Can voids/methods be stored in there? My idea of making one would be to make a dictionary or list. Each index included which method was used the values changed, the top n offset, and bone id. when the undo is pressed it puts the old values back in(as well as the other needed values) into the right places/txt boxes then changes them back as if you put em in. Anyways so the clipboard also records what you do?

    edit: I have a hxd editor- same one thats in bv.  The way I edit bones through my program Is the same way I would in hxd.  Instead of seeing hex values like in hxd, you see regular numbers that represent them easily. To edit bones...just make sure everything makes sense(matches up accuratley) basically.
    « Last Edit: December 05, 2010, 09:28:13 AM 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 #20 on: December 05, 2010, 09:35:14 AM »


    I fixed the prob...
    I was using a forth float when there was only three Tongue

    so here's the template (so far):
    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="">
    <struct name="definition_header" type_name="" comment="" expr="">
    <data type="none" name="tmp" len="4"/>
    </struct>
    </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"/><data type="none" name="pad" len="vertice_header.block_size - (vertice_header.entry_stride*vertice_header.num_vertices) - 64"/></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"/><data type="none" name="pad" len="normal_header.block_size - (normal_header.entry_stride*normal_header.num_normals) - 32"/></define_struct>
    <define_struct type_name="Colors" comment="" expr="">
    <struct name="color_header" type_name="" comment="" expr="">
    <data type="none" name="tmp" len="4"/>
    </struct>
    </define_struct>
    <define_struct type_name="UV_Points" comment="" expr="">
    <struct name="header" type_name="" comment="" expr="">
    <data type="none" name="block_size" len="4"/>
    </struct>
    </define_struct>
    <define_struct type_name="Materials1" 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="data_offset" format="signed" len="4" display=""/><data type="int" name="num_textures" format="signed" len="4" display=""/><data type="int" name="P3_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="unk6" format="signed" len="4" display=""/></struct>
    <jump offset="header.P3_offset+(header.MDL0_offset*-1)" comment="" origin="start"><struct name="texture_ref" type_name="" comment="" expr=""><data type="int" name="unk" format="unsigned" len="4" display=""/></struct></jump></define_struct>
    <define_struct type_name="Materials2" comment="" expr="">
    <struct name="header" type_name="" comment="" expr="">
    <data type="none" name="tmp" len="4"/>
    </struct>
    </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="Textures1" comment="" expr="">
    <struct name="header" type_name="" comment="" expr="">
    <data type="none" name="tmp" len="4"/>
    </struct>
    </define_struct>
    <define_struct type_name="Textures2" comment="" expr="">
    <struct name="header" type_name="" comment="" expr="">
    <data type="none" name="tmp" len="4"/>
    </struct>
    </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="Materials1" format="unsigned" len="4" display=""/>
    <data type="int" name="Materials2" format="unsigned" len="4" display=""/>
    <data type="int" name="Polygons" format="unsigned" len="4" display=""/>
    <data type="int" name="Textures1" format="unsigned" len="4" display=""/>
    <data type="int" name="Textures2" 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.sections >= 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.sections >= 1" 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.sections >= 2" 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.sections >= 3" 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.sections >= 4" 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 || 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.sections >= 5" 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="">
    <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>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.sections >= 6" comment="">
    <jump offset="header.lists.Materials1" comment="" origin="start">
    <struct name="Materials1" 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="">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.Materials1" comment="" origin="start">
    <use_struct name="Materials1" expr="" type_name="Materials1" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.sections >= 7" comment="">
    <jump offset="header.lists.Materials2" comment="" origin="start">
    <struct name="Materials2" 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="">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.Materials2" comment="" origin="start">
    <use_struct name="Materials2" expr="" type_name="Materials2" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.sections >= 8" 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="">
    <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>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.sections >= 9" comment="">
    <jump offset="header.lists.Textures1" comment="" origin="start">
    <struct name="Textures1" 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="">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.Textures1" comment="" origin="start">
    <use_struct name="Textures1" expr="" type_name="Textures1" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <if test="header.sections >= 10" comment="">
    <jump offset="header.lists.Textures2" comment="" origin="start">
    <struct name="Textures2" 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="">
    <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
    <jump offset="relocation_offset.data_offset + header.lists.Textures2" comment="" origin="start">
    <use_struct name="Textures2" expr="" type_name="Textures2" comment=""/>
    </jump>
    </struct>
    </for>
    </struct>
    </jump>
    </if>
    <data type="none" name="none"/>
    </binary_file_format>

    copy that and paste it in:
    C:/Documents and Settings\*user*\Application Data\ECSoftware\HexEdit\_mdl0.xml
    and open an mdl0 file in HexEdit...

    now, the template doesn't initiate automatically :/
    when you open the mdl0,
    go to 'view'-'template'-'split window'
    and be sure to turn the auto sync on as well (looklike 3 red arrows "back, forth, back")

    that should teach you the relocation table 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.

    DarkPikachu
    Angel Kitten
    ***
    Offline Offline

    Posts: 3069


    complexity == fun

  • Awards Super Saiyan Topic Heart Container KCMM Veteran Tutorial Writer

  • View Profile Awards
    « Reply #21 on: December 05, 2010, 09:36:41 AM »


    edit: I have a hxd editor- same one thats in bv.  The way I edit bones through my program Is the same way I would in hxd.  Instead of seeing hex values like in hxd, you see regular numbers that represent them easily. To edit bones...just make sure everything makes sense(matches up accuratley) basically.

    HxD doesn't highlight hex values defined in a template
    (I needed something better)

    EDIT:
    the template should show you how to use the reloc table to find the bone offsets
    (as well as anything else in the file)

    also, I'm actually quite surprised your method worked... O.O
    does that mean brawl doesn't use the relocation table to find the bones?? (retorical Q)

    EDIT2:
    heh, that above would explain why there's 2 of every locator data :/
    and also sub-values that arn't neccesary for the reloc table alone
    « Last Edit: December 05, 2010, 09:44:36 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 #22 on: December 05, 2010, 09:42:20 AM »


    xml....i kinda know how to read and use it(not really use it..but not the point)... I never knew you can make stuff to use in hxd...ill take a look when I get  home. What's it basically tell you?

    edit: I know it was retorical but I don't "move" bone data around - just edit/switch the offsets and nodelds around so they "seem" to have been moved(well yeh doing that is moving  it lol). The main thing to change are offsets and nodeld(polygons attach to bones with these). So the relocation table points to the same place...it just that that place has changed values...uhh yeh that's obvious lol...starting to think I misunderstood what you said...
    « Last Edit: December 05, 2010, 09:51:09 AM 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 #23 on: December 05, 2010, 09:46:19 AM »


    xml....i kinda know how to read and use it(not really use it..but not the point)... I never knew you can make stuff to use in hxd...ill take a look when I get  home. What's it basically tell you?

    that's not for HxD...
    that's for HexEdit...

    HxD doesn't use templates...
    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 #24 on: December 05, 2010, 09:56:21 AM »


    I'm not home so I'm not sure but I think I have something called hexedit but the trial ended...hopefully there different. I would check but I'm on my phone and dun feel likeclicking it 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 #25 on: December 05, 2010, 10:01:25 AM »


    I'm not home so I'm not sure but I think I have something called hexedit but the trial ended...hopefully there different. I would check but I'm on my phone and dun feel likeclicking it lol

    *cough*
    I did mention in the program was trial free Tongue
    @theshyguy:
    just curious...
    do you edit the bones through the relocation table??

    I tried your program, and well...
    it wasn't exactly the life-saver I was hoping for :/

    if you don't know how to use the relocation table, but know how to edit the bones themselves,
    I have a template thet may help you out Wink
    note: you need HexEdit to use the template (it's a free, no trial program)

    EDIT:
    for the layout, can you make it look like Brawlbox??
    or is that a little too complicated...
    ^it is for me :/ (can't prog GUI's)

    that's the one I'm using and it's been over 30 days now Tongue
    and I gave you the link already...

    EDIT:
    well, the newer versions have a trial on them :/
    « Last Edit: December 05, 2010, 10:05:28 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 #26 on: December 05, 2010, 10:07:32 AM »


    o lol mustve not have fully read it lol. Then yeh i ll take a look at it when I get back.hmm so it tells all the data offsets? Niiiice maybe I'll be able to make it so that you don't have to input a topnoffset in my program...
    Logged

    DarkPikachu
    Angel Kitten
    ***
    Offline Offline

    Posts: 3069


    complexity == fun

  • Awards Super Saiyan Topic Heart Container KCMM Veteran Tutorial Writer

  • View Profile Awards
    « Reply #27 on: December 05, 2010, 10:55:45 AM »


    heh...

    hey, at least yur ahead of me Cheesy
    I wanted to make this exact program, but you just got to it before I did Tongue

    *cough* and I'm bad at GUI progging *cough cough*
    note: I prog in Py and TKinter's a pain to use

    why Tk?
    it comes with the Py installation...
    (tired of DL-ing sub-installations such as WxPy or PyCard)
    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 #28 on: December 05, 2010, 11:05:39 AM »


    c# is pretty good...ofcourse it's the first and only programming lang I used...you can do so much with it. Making a gui is...is..eaaaasy lol.

    -so you were going to make the same/similar thing? What were you going to do to edit the tree?
    Logged

    DarkPikachu
    Angel Kitten
    ***
    Offline Offline

    Posts: 3069


    complexity == fun

  • Awards Super Saiyan Topic Heart Container KCMM Veteran Tutorial Writer

  • View Profile Awards
    « Reply #29 on: December 05, 2010, 11:44:18 AM »


    c# is pretty good...ofcourse it's the first and only programming lang I used...you can do so much with it. Making a gui is...is..eaaaasy lol.

    -so you were going to make the same/similar thing? What were you going to do to edit the tree?

    I kinda wanted to set something up like brawlbox...

    tree on the left, data on the right,
    but an advanced R-Click menu which allows you to add a bone in a specific area of the tree
    as well as delete bones and what not...

    unlike BrBx all the data on the left will be editable,
    and I wanted to have an update feature that automatically re-indexes the bones and sets the parent/child structures.

    may need to use internal memory to do that :/

    so C# is supposedly easy hmm...
    can I get a copy of your src??
    I have Dev C++ and I want to see if it'll compile...
    (screw Mirosoft and all it's glory) *evil grin*
    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 [2] 3 4 5 ... 25
    Print
    Jump to: