Bone Tree Editor- development thread : Version 1.1 released

Started by TheShyGuy, September 13, 2010, 11:57:53 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

seems my mdl0 reft template has an error somewhere...can u give the updated cuz i cant even open mario or pikas mdl0 lol

Quote from: TheShyGuy on January 17, 2011, 05:45:31 AM
seems my mdl0 reft template has an error somewhere...can u give the updated cuz i cant even open mario or pikas mdl0 lol


alright... (next post)

btw, your matrices are off:

Brbx:
(1,0,5,0)(3,1,0,0)(0,0,1,0)(0,0,2,1)

1 3 0 0
0 1 0 0
5 0 1 2
0 0 0 1

btw, last row is always 0 0 0 1

[spoiler]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.


<?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="geometries" comment="" expr="">
<data type="int" name="count" format="signed" len="2" display=""/>
<for name="point" count="count || count - 1" stop_test="count == 0" type_name="" comment="">
<struct name="" type_name="" comment="" expr="">
<if test="header.vtx_des2 == 2" comment="">
<data type="none" name="vtx2" len="4"/>
</if>
<!--
<if test="header.vtx_des2 == 3" comment="">
<data type="none" name="vtx3" len="9"/>
</if>
-->
</struct>
</for>
</define_struct>
<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="Materials" 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="config" 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>
<data type="none" name="tmp" len="header.textures_offset - 64"/><jump offset="header.config+(header.MDL0_offset*-1)" comment="" origin="start">
<use_struct name="Shader_Config" expr="" type_name="Shader_Config" 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="index1" format="signed" len="4" display=""/>
<data type="int" name="index2" 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="Shader_Config" 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="flag" format="unsigned" len="1" display=""/><data type="int" name="Res0" format="signed" len="1" display=""/><data type="int" name="Res1" format="signed" len="1" display=""/><data type="int" name="Res2" format="signed" len="1" display=""/><data type="int" name="Ref0" format="signed" len="1" display=""/><data type="int" name="Ref1" format="signed" len="1" display=""/><data type="int" name="Ref2" format="signed" len="1" display=""/><data type="int" name="Ref3" format="signed" len="1" display=""/><data type="int" name="Ref4" format="signed" len="1" display=""/><data type="int" name="Ref5" format="signed" len="1" display=""/><data type="int" name="Ref6" format="signed" len="1" display=""/><data type="int" name="Ref7" format="signed" len="1" display=""/><data type="none" name="pad" len="8"/></struct>
</define_struct>
<define_struct type_name="Objects" comment="" expr="">
<struct name="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="node_ID" len="4" format="signed" display=""/>
<data type="int" name="vtx_des1" len="4" format="signed" display=""/>
<data type="int" name="vtx_des2" len="4" format="signed" display=""/>
<data type="int" name="vtx_addons" len="4" format="signed" display=""/>
<data type="int" name="layout1" len="4" format="signed" display="" comment="vtx, nor, and clr"/>
<data type="int" name="layout2" len="4" format="signed" display="" comment="uv src"/>
<data type="int" name="shader_instr" len="4" format="signed" display=""/>
<data type="int" name="data_len" len="4" format="signed" display=""/>
<data type="int" name="data_len2" len="4" format="signed" display=""/>
<data type="int" name="data_offset" len="4" format="signed" display=""/>
<data type="int" name="layout3" len="4" format="signed" display="" comment="vtx src"/>
<data type="int" name="unk" 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="num_verts" len="4" format="signed" display=""/>
<data type="int" name="num_faces" len="4" format="signed" display=""/>
<data type="int" name="pos_inp" len="2" format="signed" display=""/>
<data type="int" name="nor_inp" len="2" format="signed" display=""/>
<data type="int" name="clr0_inp" len="2" format="signed" display=""/>
<data type="int" name="clr1_inp" len="2" format="signed" display=""/>
<data type="int" name="crd0_inp" len="2" format="signed" display=""/>
<data type="int" name="crd1_inp" len="2" format="signed" display=""/>
<data type="int" name="crd2_inp" len="2" format="signed" display=""/>
<data type="int" name="crd3_inp" len="2" format="signed" display=""/>
<data type="int" name="crd4_inp" len="2" format="signed" display=""/>
<data type="int" name="crd5_inp" len="2" format="signed" display=""/>
<data type="int" name="crd6_inp" len="2" format="signed" display=""/>
<data type="int" name="crd7_inp" len="2" format="signed" display=""/>
<data type="int" name="weights" len="4" format="signed" display=""/>
</struct>
<!--<jump offset="(header.MDL0_offset*-1) + header.data_offset +36" comment="" origin="start">
<for name="type" count="" stop_test="this.type == 0" type_name="" comment="">
<struct name="" type_name="" comment="" expr="{this.type}">
<data type="int" name="type" format="unsigned" len="1" display="hex"/>
<if test="type == 32" comment="">
<data type="none" name="pos_mtx" len="4"/>
</if>
<if test="type == 40" comment="">
<data type="none" name="nor_mtx" len="4"/>
</if>
<if test="type == 48" comment="">
<data type="none" name="tex_mtx" len="4"/>
</if>
<if test="type == 56" comment="">
<data type="none" name="lit_mtx" len="4"/>
</if>
<if test="type == 128" comment="">
<use_struct name="Quad" expr="" type_name="geometries" comment=""/>
</if>
<if test="type == 144" comment="">
<use_struct name="Tri" expr="" type_name="geometries" comment=""/>
</if>
<if test="type == 152" comment="">
<use_struct name="Tri_Strip" expr="" type_name="geometries" comment=""/>
</if>
<if test="type == 160" comment="">
<use_struct name="Tri_Fan" expr="" type_name="geometries" comment=""/>
</if>
<if test="type == 168" comment="">
<use_struct name="Line" expr="" type_name="geometries" comment=""/>
</if>
<if test="type == 176" comment="">
<use_struct name="Line_Strip" expr="" type_name="geometries" comment=""/>
</if>
<if test="type == 184" comment="">
<use_struct name="Point" expr="" type_name="geometries" comment=""/>
</if>
</struct>
</for>
</jump>-->
</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="Materials" format="unsigned" len="4" display=""/>
<data type="int" name="Shader_Config" format="unsigned" len="4" display=""/>
<data type="int" name="Objects" 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.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.Shader_Config != 0" comment="">
<jump offset="header.lists.Shader_Config" comment="" origin="start">
<struct name="Shader_Config" 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.Shader_Config" comment="" origin="start">
<use_struct name="Shader_Config" expr="" type_name="Shader_Config" comment=""/>
</jump>
<jump offset="relocation_offset.string_offset + header.lists.Shader_Config - 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.Objects != 0" comment="">
<jump offset="header.lists.Objects" comment="" origin="start">
<struct name="Objects" 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.Objects" comment="" origin="start">
<use_struct name="Objects" expr="" type_name="Objects" comment=""/>
</jump>
<jump offset="relocation_offset.string_offset + header.lists.Objects - 1" comment="" origin="start">
<use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
</jump>
</struct>
</for>
</struct>
</jump>
</if>


there's a bit more yet...

[spoiler]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.


here's the end:


<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>

[spoiler]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.

Quote from: Tcll on January 17, 2011, 05:59:21 AM
Quote from: TheShyGuy on January 17, 2011, 05:45:31 AM
seems my mdl0 reft template has an error somewhere...can u give the updated cuz i cant even open mario or pikas mdl0 lol


alright... (next post)

btw, your matrices are off:

Brbx:
(1,0,5,0)(3,1,0,0)(0,0,1,0)(0,0,2,1)

1 3 0 0
0 1 0 0
5 0 1 2
0 0 0 1

btw, last row is always 0 0 0 1
? that how i did it lol... in columns..problems pile starting to grow lol
column1 = first (), 2nd column = 2nd ()...1st row = (this one,0,0,0)...2nd row = (0,this one,0,0) and theres no 4th row...the 4-6 row are for the inverse... Andi  didnt add a 4th digit cuz i couldnt edit it so i thought itd be useless

Quote from: TheShyGuy on January 17, 2011, 06:04:06 AM
Quote from: Tcll on January 17, 2011, 05:59:21 AM
Quote from: TheShyGuy on January 17, 2011, 05:45:31 AM
seems my mdl0 reft template has an error somewhere...can u give the updated cuz i cant even open mario or pikas mdl0 lol


alright... (next post)

btw, your matrices are off:

Brbx:
(1,0,5,0)(3,1,0,0)(0,0,1,0)(0,0,2,1)

1 3 0 0
0 1 0 0
5 0 1 2
0 0 0 1

btw, last row is always 0 0 0 1
? that how i did it lol... in columns..problems pile starting to grow lol
column1 = first (), 2nd column = 2nd ()...1st row = (this one,0,0,0)...2nd row = (0,this one,0,0) and theres no 4th row...the 4-6 row are for the inverse... Andi  didnt add a 4th digit cuz i couldnt edit it so i thought itd be useless

set it as a map in a var...
there's no defined W vector space, so 0 0 0 1 defines it as "just this"
so yea... it makes more sence that way :/

however,
the way you have it set now may actually prove to be better for editing purposes :/

also, I've added bones to Pachirisu using FW...
(I've fixed them in a hex editor as well)
they show up in Brbx just fine, but not in BTE... (not because I edited them)

I edited them to fix the strings...
their length was wrong...
1: positioned at the next string length
2: was a length of 5 instead of 9

btw, I was right >:3
FW add's to the relocation table, but somehow defines the data from the first bone...

here's the offsets:
00 22 00 00 00 11 00 13 | 00 00 C1 D4 00 00 14 68
00 22 00 00 00 11 00 13 | 00 00 C2 18 00 00 15 38
00 22 00 00 00 11 00 13 | 00 00 C2 28 00 00 16 08
00 22 00 00 00 11 00 13 | 00 00 C2 38 00 00 16 D8
00 22 00 00 00 11 00 13 | 00 00 C2 48 00 00 17 A8
00 22 00 00 00 11 00 13 | 00 00 C2 58 00 00 18 78
00 22 00 00 00 11 00 13 | 00 00 C2 68 00 00 19 48

^here we have 7 bones
the first is Tail4 (the end of the original list)
the rest are all ExtraBones...

however...
note, brbx deciphers the ExtraBones as index 0

but when I followed the offsets above,
they were actually indexes 19-24 (hex: 13-18)

EDIT:
oh and btw,
you'll notice I split the hex :/
before the split is still 4 16bit unks,
after the split is the string and data offsets :/

[spoiler]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.

lmao...more...ill put the dl up when i fix these...

are you sure the extra bones dont show up right? as in you put the offset of the 2nd tree and when the topNoffset window showed, u checked off 'added bones'?

Quote from: TheShyGuy on January 17, 2011, 06:25:14 AM
lmao...more...ill put the dl up when i fix these...

are you sure the extra bones dont show up right? as in you put the offset of the 2nd tree and when the topNoffset window showed, u checked off 'added bones'?

there's only 1 bone tree :/ (first bone offset: 1864)
and I did check off the added bones

but they're not showing up at all...

EDIT:
and the TopN window shows up right after selecting the file :/

[spoiler]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.


also...
a little off-topic Q reguarding my converter:

how would I use these:

                    parent = l(fr.read(4))/208
                    First_child = ui(fr.read(4))/208
                    Next_child = ui(fr.read(4))/208
                    Prev_child = l(fr.read(4))/208
                    part2 = ui(fr.read(4))

to get me an X position from 0??

[spoiler]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.

January 17, 2011, 06:38:10 AM #219 Last Edit: January 17, 2011, 06:43:57 AM by TheShyGuy
wuts wrong with the window opening after choosing the file lol...(besides the auto thing)

and the fw bone adder creates a 2nd tree..eg. mario (nothing added) topN = 9136..added = 281116...the first 1 still exists, but the bb treeview isnt even affected by the 1st one anymore, just the 2nd.. like i said before look for 00 00 00 d0 after the last bone of the first tree to get the 2nd

Quote from: Tcll on January 17, 2011, 06:37:49 AM

also...
a little off-topic Q reguarding my converter:

how would I use these:

                   parent = l(fr.read(4))/208
                   First_child = ui(fr.read(4))/208
                   Next_child = ui(fr.read(4))/208
                   Prev_child = l(fr.read(4))/208
                   part2 = ui(fr.read(4))

to get me an X position from 0??

uhh either do..X++ when theres a child. Or use the path eg. find the throwN -> path = TopN\\TransN\\XRot\\YRot\\HipN\\ThrowN so for each \\*bone\\ you add onto X..so the ex would = 6( or 5 if top = 0)

Quote from: TheShyGuy on January 17, 2011, 06:38:10 AM
wuts wrong with the window opening after choosing the file lol...(besides the auto thing)

and the fw bone adder creates a 2nd tree..eg. mario (nothing added) topN = 9136..added = 281116...the first 1 still exists, but the bb treeview isnt even affected by the 1st one anymore, just the 2nd.. like i said before look for 00 00 00 d0 after the last bone of the first tree to get the 2nd

hmm...
KK I'll check that...

EDIT:
hmm, so they do have their own data's...
and yea, everything's screwed up...
the group offset is around the center of the file O.o
it should be close to the beginning

EDIT2:
hmm...
the MDL0 is like copied or something...
the bones list offset has been changed to the end of the file where the new list has been written...
wow...

I'ma have to look into this :/

[spoiler]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.

January 17, 2011, 06:53:55 AM #221 Last Edit: January 17, 2011, 06:55:38 AM by TheShyGuy
hmm if they have their own datas,then why does editing one (in bb) affect the others? i can see why mine would cuz i just search for the name of the bone (or was it the index..cnt remember lol...dun feel like checking either)for the data, but not bb's..

Quote from: TheShyGuy on January 17, 2011, 06:53:55 AM
hmm if they have their own datas,then why does editing one (in bb) affect the others? i can see why mine would cuz i just search for the name of the bone (or was it the index..cnt remember lol...dun feel like checking either)for the data, but not bb's..

I'm looking into it :/
I wanna see just how much FW screwed up the MDL0 :/

you know...
I'm using my template and highlighting the data to figure this out...

I've already highlighted the first and last bones...
and there's alot more data after the bones...

it's looks like there's definitions and crap as well...
what surprises me is the verts are still in the same position using the old string data...

this is so messed up D:

you know...
you should just say screw FW...

I'd suggest making your own adding method...
or you know...
maybe I will...

FW screws EVERYTHING up...
this file's so confusing my head's about to explode DX...

I can see why he kept the old data though :/
the mdl0 offsets of the rest of the file... and the data that wasn't messed with...

[spoiler]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.

January 17, 2011, 07:15:23 AM #223 Last Edit: January 17, 2011, 08:02:30 AM by TheShyGuy
I can make an  attempt at a bone adder if your too very busy with alot of things .  Ill prob start fixing up the bte tomoro cuz its past midnight and i dun feel like it lol.

edit...still getn that error lol

actually, I've managed to get it saved (you get a popup 'Saved' with a button 'OK')

it took me a number of tries before I actually got it...
but I got it  :af2:

I'm redoing Pachi's entire MDL0 right now
FW messed it up, but I figured out what he did
he makes a copy of the entire MDL0 from the bone group header in the relocation table,
to the end of the mdl0,
that copy gets pasted at the end of the mdl0...

now,
since all the data in that block is useless,
he redirects the bone group offset to the original file end and edits the grouplist...
yes, each bone does have it's own data (they're not fake)  :af:
YAY!!! I was right on my assumption a long time ago :3

so anyways,
he copy's the last offset from the group (in the new block)
and adds it to the group (changing the offset count and block size)
he then edits the bone offsets and string offsets by adding the number of added bones * 16 to each offset
for the added bones, 'D0' gets added to the new offset ('D0' + last bone offset)

it's kinda the same for the bones (the last one gets copied and pasted at the end)

note: almost all the strings get changed in the new string table...

EDIT: BTW... MY SITE'S UP!!! :happy:
however, I expect it to cut at times :/

[spoiler]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.