|
|
« 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 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
|
|
|
|
|
|
|
« 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
|
|
|
|
|
|
|
« 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
|
|
|
|
|
|
|
« 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 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 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 (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 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
|
|
|
|
|
|
|
« 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
|
|
|
|
|
|
|
« 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 so here's the template (so far): <?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
|
|
|
Logged
|
|
|
|
|
|
|
« 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
|
|
|
|
|
|
|
« 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
|
|
|
|
|
|
|
« 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
|
|
|
|
|
|
|
« 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
|
|
|
|
|
|
|
« 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 @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 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 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
|
|
|
|
|
|
|
« 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
|
|
|
|
|
|
|
« Reply #27 on: December 05, 2010, 10:55:45 AM » |
|
heh... hey, at least yur ahead of me I wanted to make this exact program, but you just got to it before I did *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
|
|
|
|
|
|
|
« 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
|
|
|
|
|
|
|
« 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
|
|
|
|
|
|