|
|
 |
« on: December 13, 2010, 08:39:11 PM » |
|
Download Brawlbox: v0.68b v0.68 v0.67b Download .NET Framework 4 Google Code SourceChange Log: - v0.68b- (5/5/2013) . Fixed loop points when importing an RSAR sound . Fixed problem where edited models would explode in-game . Fixed REFT image importer. Works just as good as the TEX0 image importer now . Fixed when vertices are moved when modified by a SHP0 . Fixed background image to load immediately . Fixed random green/blue/yellow color overlays when clicking bones . Fixed when the last frame of an animation is deleted when clicking "." . Fixed bone translation tool . Fixed duplicated objects to be independent from the original . Changed shortcut to delete the current frame to Shift + Backspace . Changed shortcut when zooming to increase/decrease camera zoom/translate/rotate speeds from Control to Alt . Added support to compress U8 Archives to YAZ0 format with RunLength compression . Added support for v1.9 REFF . Finished REFT and REFF rebuilders . Finished TPL rebuilder . Set point/line smooth to off by default and added a button to toggle it on . Set text overlays to not display by default and added a button to toggle them on
Todo: - Fix stereo sound import - Fix bone scale tool
- v0.68- (4/28/2013) . Fixed "Null weights" MDL0 error . "Export as Single Matrix" 3ds Max export setting for DAE models is not necessary to check anymore . Added support for editing REFF files . Updated UserData handling . Updated MDL0 Material Properties . MDL0 Objects updated: now support both an OPA and XLU material, added "DrawPriority" value and added the ability to change linked vertex/normal/color/uv nodes. . Updated BRRES "Edit All" dialog . Added TPL support . Added SCN0 & CLR0 editors to the model viewer (however, their effects cannot be literally displayed yet) . SCN0 rebuilder bugfixes . Finished SCN0 Editor . Added various model viewer buttons: take screenshot, save camera, model viewer help, load background image . Revised and added new options to model viewer settings window . Began working on rendering materials & shaders using GLSL; all OpenGL coded has been modified to use OpenTK. This feature is not yet available for use. . Added "Original Path" string value for all NW4R nodes. . Edited animation editors in model viewer to be a bit more compact . Finished RSAR rebuilder . Added RSAR sound importer . Added RSAR file viewer . Made RSAR file list sortable by columns . Fixed loop point retrieval for RSAR sounds . Added support for stereo RSAR sounds . Added support for modifying RWSD, RBNK, and RSEQ files. RSEQ MML code is not yet editable yet. . Added support for all RSAR versions . Added support for RWAR and RWAV formats, located in other versions of RWSD and RBNK . Updated Stage Model Converter . Fixed when an offset parameter is pasted back into moveset code . Finished bone translation and scale controls in the model previewer . Implemented vertex editor . Made bones, vertices and the bone scale/rotation/translation controls highlight when you move the mouse over them . Added left and right buttons to texture previewer to view the different mipmaps . Fixed problem with importing mono audio files . Multi-Channel BRSTMs are now previewable . Undo and Redo buttons re-coded . Added buttons to display model and object bounding boxes and to render normals . Fixed .wav file exporter . Corrected SHP0 morphing between multiple destinations . Added a donate button to the About menu dropdown (yay)
- v0.67b- (7/23/2012) . Move up/down for events doesn't randomly throw an error . SubActions can have same names . Model Visibility works perfectly in viewer . Article Data3 now read correctly, will not freeze entry article . Auto removal of FADEF00D and FADE0D8A events created by PSA . External subroutine removal doesn't corrupt save file . Setting an offset doesn't require the value to already have an offset . Offset editor fixed up, had some problems before and did not work. . Culture Invariant Float.Parse on most parse uses . Loads animations from U8 files correctly . WAV files now parse correctly when there is text info in the header . InsertChild now adds node in right location on node tree . Event changes in viewer updates on the selected frame right after being modified . Model visibility switch nodes sync in number between references . Added REL stage converter coded by libertyernie to REL right click menu . Added new parameter node handling for events . Added new parameter node for external GFX using new text file "GFXFiles.txt" for the gfx file names. Names originally written down by Eternal Yoshi. . CLR0 parsing/rebuilding remade. Full editing support and v4 support . Removed all unknowns from all formats found in BRRES files. All flags are fully known as well. . Fixed CHR0/SRT0 manual editors . Fixed SRT0 flag handling . Better lighting in model viewer . SCN0 fully editable and rebuildable . "Part2" entries updated to UserData entries with full support
- v0.67- (7/7/2012) . New moveset editor & rebuilder . SCN0 rebuilder revised . PAT0 rebuilder revised . New text animation importer for use with a specific maxscript for 3ds Max . Various bug fixes
- v0.66b- (4/17/2012) . Various bug fixes . Edited viewer based on feedback . Previewer now allows saving viewer settings
- v0.66- (4/10/2012) . New SRT0 editor & rebuilder . New SHP0 editor & rebuilder . New PAT0 editor & revised rebuilder . New Model Previewer - now supports different animation editors . All animation types & versions supported
- v0.65c- (2/4/2012) . Made MDL0 nodes modulate their values and each other more closely . Finished Wavefront OBJ exporter (Right click an MDL0 object and export it as OBJ) . Fixed up the DAE exporter again . Undo and Redo buttons have been fixed for the model viewer and added to the collision viewer (All coded by Xiggah) . Texture matrices can now be used without any problems in-game (moving textures) . Added stage default support for DAE importer
- v0.65b- (1/28/2012) . Changed GX enums to be easier to understand . Updated MDL0 Shader display . Added an MDL0 object importer and duplicator . Added SCN0, SRT0 and STPM rebuilding . Fixed tons of bugs! . Added REFT image importer and rebuilder . Added new node icons . Changed around material values
- v0.65- (11/8/2011) . Finished the DAE model importer! . Finished the model rebuilder completely (everything is now editable). . Finalized shader editing. . Fixed the v5 CHR0 saving bug. . Added support for v8 MDL0s. . Added minor REFF support. . Added a new menu to the model previewer . Many bugfixes
- v0.64d- (08/31/2011) (BlackJax96 takes over development from here on) . Fixed "Clean" button and the keyframe viewer. . Added animation porter . Added "Rename All" and "Edit All" buttons to BRRES nodes. . Added support for viewing multiple models in the model previewer (CTRL+H opens model switcher). . Finished model rebuilder, for the most part. . Finished DAE parser. . Added support for editing most MDL0 shader values. . Added undo and redo functions in the model previewer. . Changed the way models are rendered. . Added support for v5 CHR0s and v10 and v11 MDL0s. . Added the ability to drag files into the model previewer to view all the models in the file. . Added bone tree editing functions. . Added support for editing/saving MRG files. . Added right click menus to the Trans, Rot and Scale labels for editing keyframes in the model previewer. . Many bugfixes and small additions/changes to things
- v0.63d- (02/08/2010) . Fixed animation encoder bug. . Fixed bug dealing with single CLR entries saving improperly. - v0.63c- (01/31/2010) . Various bugfixes . Added VIS editor . Animation frames now interpolate properly. - v0.63b- (01/19/2010) . Fixed image encoding bug related to image format on older systems. . Fixed save dialog extension bug. Also, numbered extensions will now have real extension added. . Fixed rendering bug related to materials without textures. . Added various features to collision editor. - v0.63 - (01/18/2010) . Fixed a bug that was causing decal textures to link improperly in MDL files. . Added minor support for EFLS resources. . Added support for stage collision files. . Added editor for stage collision files. . Fixed minor bug that was affecting the way non-textured polygons are rendered (alloy models). . Increased maximum frame delay for animation playback. . Fixed bug in OpenGL rendering dealing with depth buffer precision.
- v0.62b- (01/06/2010) . Added minor support for single-color CLR0 entries. Fixes many crashing problems. . Fixed bug in CI4 encoder that was corrupting image blocks. . Added floor option to model viewer. . CopyAll/PasteAll in model viewer now saves the animation state globally. . Color lists now have two color columns, one with transparency and one without. . Added gradient generator to color list.
- v0.62 - (01/05/2010) . Added support for CLR0 nodes. . Added color dialog for CLR0 and PLT0 editing. . New Median Cut quantizer using method from GIMP library. . Added features to BRSTM converter dialog. . Fixed CHR bug that was causing long animations to cut short. . Fixed bug in MSBin parser/decoder dealing with empty strings.
- v0.61 - (12/24/2009) . Added audio playback controls. . Added brstm converter. . Added CopyAll/PasteAll/Clean/Clear controls to animation editor. . Added support for RWSD/RBNK/RSEQ files. . Added RSAR file list.
- v0.60c- (12/01/2009) . Fixed various bugs with the CHR0 encoder. . Fixed a bug in the MSBin encoder for border entries.
- v0.60b- (11/30/2009) . Various improvements to the model editor (See BrawlLib.txt)
- v0.60 - (11/24/2009) . Added tons of features to model editor, including: Animation previewer/editor. Improved model editor features/controls. Improved OpenGL initialization/support. . Fixed a bug that was causing PAC files to export uncompressed regardless of setting. . Fixed a bug in the CHR0 decoder. . Most new features are library improvements. Please see BrawlLib.txt for more details.
- v0.59 - (11/08/2009) . Re-added settings dialog. . Various menu improvements/features. . CHR0 entries can now be manipulated. . Added editor for CHR0 keyframes. . Added editor for MSBin messages. . Re-added RSAR support with new organization. (No audio features yet) . Improved CMPR algorithm using modified code from the NVidia Texture Tools. . Lowered OpenGL version to 1.1, and changed the way mipmaps are generated.
- v0.58b- (10/24/2009) . Re-integration with BrawlLib is nearly complete. Audio support still isn't finished. . Added support for the following new controls from BrawlLib: ModelPanel TextureConverterDialog . New menu system. . Due to new rebuild enhancements, nodes can now be created, renamed, and deleted.
- v0.58 - (09/29/2009) . Name has changed to BrawlBox (previously SmashBox) . Program has been separated, allowing for the creation of BrawlLib. . Now has minor Linux support. . Audio nodes/controls have been temporarily disabled until BrawlLib can be updated. . You can now use SaveAs on the current working file, so long as changes have been made.
- v.057 - (08/23/2009) . Added support for brstm files. . Increased support for brsar audio packages. . Added audio playback control for use with brsar and brstm files. . Added the ability to export audio to .wav format.
- v0.56 - (08/09/2009) . Added support for TGA images. . Re-wrote the LZ77 algorithm for increased speed. . Due to compatibility problems with paletted images and transparent colors. All images are now exported in 32-bit format.
- v0.55b - (08/04/2009) . Fixed a bug that was causing unknown files to disappear entirely. (Thanks lavamage) . Fixed a bug with pre-paletted textures that was causing them to recreate the palette improperly. (Thanks kid craft 24/sonic master) . Added a progress bar for those long compression jobs. . Discovered another portion of model files that needs an entry in the BRES string table. . The texture replacer will now default to the original texture/palette/mip settings.
- v0.55 - (08/03/2009) . Fixed various issues with Common pac files. . Fixed an issue with certain compressed files. Character selection portraits are now supported. . Added support for more image formats (bmp, gif, jpg, still waiting on TGA) . Started incorporating change tracking which offers improvements such as: a. Active discovery; Nodes will only be interpreted as they are browsed. Helps with large/embedded files. b. Only portions of the tree that have changed will be re-built. c. Unchanged nodes will be copied back as-is. This helps with speed and compatibility. . Removed Managed DirectX 9 dependency. Was causing assembly problems. . Added child-only properties
- v0.54 - (08/01/2009) . Fixed a bug during texture replacing that was causing problems in some files (common pacs). . Added various improvements to MDL0 file browsing. . Confirmed successful rebuilding of 'common' files.
- v0.53b - (07/29/2009) . Fixed a bug dealing with vertex/color data types by removing vertex parsing.
- v0.53 - (07/25/2009) . Added minor support for the following brres resources (fixes some texture replacing issues): a. AnmVis (VIS0) b. AnmScn (SCN0) c. AnmTexShp (SHP0) d. AnmTexSrt (SRT0) e. AnmTexPat (PAT0) . Confirmed successful rebuilding of stage files.
- v0.52c - (07/23/2009) . Added some support for CHR0 and CLR0 animations. . A bit more support for MDL0 files (can browse data info) . Fixed an issue with character files with transformations.
- v0.52b - (07/17/2009) . Fixed a few small bugs with brres generation. . Confirmed texture replacement works, so long as the same texture format is used.
- v0.52 - (07/16/2009) . All texture formats are now supported for replacing. . Texture replacer has been updated to allow indexed textures. . Nodes can now be inserted/deleted/moved. . Added some support for MDL0 and brsar files. (Entry viewing only) . Remade node structure (again). Archives are rebuilt entirely when they are saved. . PCS files compress a little faster. . Added About window.
- v0.51 - (06/28/2009) . Texture replacing works fairly well, still doesn't support indexed textures. . Program can display/generate mipmaps. (Use the arrows on the preview panel to change mip level) . Node move/resize functions, allows for better data replacement . PCS entries are now re-packed before saving . Embedded PCS nodes are better supported - v0.50 - (06/23/2009) . Original release
Planned for BrawlBox v0.69:- Rendering shaders in the model previewer - Tristripper/Trifanner - REL & DOL editing - Animation Tangent/Interpolation Editor - Normal Editor Planned for Ikarus:- Fighter.pac & item moveset editing - Moveset editing for Mario, Link, Pit & ZSS - Add support for executing more events in the model viewer Planned Stuff for Later Versions:- Kinect Skeleton Tracking - Havok Physics Engine editing - UV Editor
|
|
|
|
« Last Edit: May 06, 2013, 09:02:39 PM by BlackJax96 »
|
Logged
|
"WHOOO-AAHHH, YEAAAAAAAAHH" - BlackJax96 
|
|
|
|
|
|
 |
« Reply #1 on: December 13, 2010, 08:46:05 PM » |
|
I'm pretty sure we would have to define EVERYTHING in .mdl0 first. SO start there.
|
|
|
|
|
Logged
|
|
|
|
|
|
|
 |
« Reply #2 on: December 13, 2010, 08:49:16 PM » |
|
Yep, I'm looking for offsets for everything now. I'm going to update the main post as things progress.
|
|
|
|
|
Logged
|
"WHOOO-AAHHH, YEAAAAAAAAHH" - BlackJax96 
|
|
|
|
|
|
 |
« Reply #3 on: December 13, 2010, 09:27:20 PM » |
|
lol if you need info on mdl0 ..look at the bone tree editor thread and material collab...tcll is doing mostly everything. He made a template which has lots of offsets done
|
|
|
|
|
Logged
|
|
|
|
|
|
|
 |
« Reply #4 on: December 13, 2010, 09:44:28 PM » |
|
Awesome.
|
|
|
|
« Last Edit: January 08, 2011, 06:27:25 PM by BlackJax96 »
|
Logged
|
"WHOOO-AAHHH, YEAAAAAAAAHH" - BlackJax96 
|
|
|
|
|
|
 |
« Reply #5 on: December 14, 2010, 10:16:56 AM » |
|
here: ^_^ <?xml version="1.0"?> <!DOCTYPE binary_file_format SYSTEM "BinaryFileFormat.dtd"> <binary_file_format name="MDL0" type_name="" comment="" expr="" default_byte_order="big" default_read_only="false" default_char_set="ansi"> <define_struct type_name="offset_name" comment="" expr=""> <data type="int" name="str_len" format="unsigned" len="1" display=""/> <data type="string" name="name" format="ascii" len="str_len" display=""/> </define_struct> <define_struct type_name="bounds" comment="" expr=""> <data type="int" name="min_X" format="unsigned" len="4" display=""/> <data type="int" name="min_Y" format="unsigned" len="4" display=""/> <data type="int" name="min_Z" format="unsigned" len="4" display=""/> <data type="int" name="max_X" format="unsigned" len="4" display=""/> <data type="int" name="max_Y" format="unsigned" len="4" display=""/> <data type="int" name="max_Z" format="unsigned" len="4" display=""/> <data type="none" name="pad" len="8"/> </define_struct> <define_struct type_name="relocation_group" comment="" expr=""> <data type="int" name="block_len" format="unsigned" len="4" display=""/> <data type="int" name="num_offsets" format="unsigned" len="4" display=""/> <data type="int" name="tag" format="unsigned" len="4" display="hex"/> <data type="int" name="unk1" format="unsigned" len="2" display="hex"/> <data type="int" name="unk2" format="unsigned" len="2" display="hex"/> <data type="int" name="pad" format="unsigned" len="8" display="hex"/> </define_struct> <define_struct type_name="relocation_offset" comment="" expr=""> <data type="int" name="ID" format="unsigned" len="2" display=""/> <data type="int" name="unk1" format="unsigned" len="2" display="hex"/> <data type="int" name="unk2" format="unsigned" len="2" display="hex"/> <data type="int" name="unk3" format="unsigned" len="2" display="hex"/> <data type="int" name="string_offset" format="unsigned" len="4" display=""/> <data type="int" name="data_offset" format="unsigned" len="4" display=""/> </define_struct> <define_struct type_name="Definitions" comment="" expr=""> <for name="type" count="" stop_test="this.type == 1" type_name="" comment=""> <struct name="" type_name="" comment="" expr="type{this.type}"> <data type="int" name="type" format="unsigned" len="1" display=""/> <if test="type == 2" comment=""> <struct name="t2" type_name="" comment="" expr="({this.ID1},{this.ID2})"> <data type="int" name="ID1" format="unsigned" len="2" display=""/> <data type="int" name="ID2" format="unsigned" len="2" display=""/> </struct> </if> <if test="type == 3" comment=""> <struct name="t3" type_name="" comment="" expr="({this.ID}) ({this.count})"> <data type="int" name="ID" format="unsigned" len="2" display=""/> <data type="int" name="count" format="unsigned" len="1" display=""/><for name="tmp" count="count || count - 1" stop_test="count == 0" type_name="" comment=""><data type="none" name="" len="6"/></for></struct> </if> <if test="type == 4" comment=""> <struct name="t4" type_name="" comment="" expr="({this.ID1},{this.ID2},{this.ID3},{this.ID4})"> <data type="int" name="ID1" format="unsigned" len="2" display=""/> <data type="int" name="ID2" format="unsigned" len="2" display=""/> <data type="int" name="ID3" format="unsigned" len="2" display=""/> <data type="int" name="ID4" format="unsigned" len="1" display=""/> </struct> </if> <if test="type == 5" comment=""> <struct name="t5" type_name="" comment="" expr="({this.ID1},{this.ID2})"> <data type="int" name="ID1" format="unsigned" len="2" display=""/> <data type="int" name="ID2" format="unsigned" len="2" display=""/> </struct> </if> </struct> </for> </define_struct> <define_struct type_name="Bones" comment="" expr=""> <struct name="bone_header" type_name="" comment="" expr=""> <data type="int" name="header_len" len="4" format="unsigned" display=""/> <data type="int" name="MDL0_offset" len="4" format="signed" display=""/> <data type="int" name="string_offset" len="4" format="unsigned" display=""/> <data type="int" name="bone_index" len="4" format="unsigned" display=""/> <data type="int" name="node_ID" len="4" format="unsigned" display=""/> <data type="int" name="flags" len="4" format="unsigned" display=""/> <data type="int" name="pad" len="8" format="unsigned" display=""/> <struct name="loc_rot_sca" type_name="" comment="" expr=""> <data type="int" name="sca_X" format="unsigned" len="4" display=""/> <data type="int" name="sca_Y" len="4" format="unsigned" display=""/> <data type="int" name="sca_Z" len="4" format="unsigned" display=""/> <data type="int" name="rot_X" len="4" format="unsigned" display=""/> <data type="int" name="rot_Y" len="4" format="unsigned" display=""/> <data type="int" name="rot_Z" len="4" format="unsigned" display=""/> <data type="int" name="loc_X" len="4" format="unsigned" display=""/> <data type="int" name="loc_Y" len="4" format="unsigned" display=""/> <data type="int" name="loc_Z" len="4" format="unsigned" display=""/> </struct> <struct name="bound" type_name="" comment="" expr=""> <data type="int" name="min_X" len="4" format="unsigned" display=""/> <data type="int" name="min_Y" len="4" format="unsigned" display=""/> <data type="int" name="min_Z" len="4" format="unsigned" display=""/> <data type="int" name="max_X" len="4" format="unsigned" display=""/> <data type="int" name="max_Y" len="4" format="unsigned" display=""/> <data type="int" name="max_Z" len="4" format="unsigned" display=""/> </struct> <data type="int" name="parent" len="4" format="signed" display=""/> <data type="int" name="child" len="4" format="unsigned" display=""/> <data type="int" name="next" len="4" format="unsigned" display=""/> <data type="int" name="prev" len="4" format="unsigned" display=""/> <data type="int" name="part2" len="4" format="unsigned" display=""/> </struct> <struct name="frame_matrix" type_name="" comment="" expr=""> <data type="int" name="s_1_1" format="signed" len="4" display=""/> <data type="int" name="s_2_1" format="signed" len="4" display=""/> <data type="int" name="s_3_1" format="signed" len="4" display=""/> <data type="int" name="s_4_1" format="signed" len="4" display=""/> <data type="int" name="s_1_2" format="signed" len="4" display=""/> <data type="int" name="s_2_2" format="signed" len="4" display=""/> <data type="int" name="s_3_2" format="signed" len="4" display=""/> <data type="int" name="s_4_2" format="signed" len="4" display=""/> <data type="int" name="s_1_3" format="signed" len="4" display=""/> <data type="int" name="s_2_3" format="signed" len="4" display=""/> <data type="int" name="s_3_3" format="signed" len="4" display=""/> <data type="int" name="s_4_3" format="signed" len="4" display=""/> </struct> <struct name="inverse_matrix" type_name="" comment="" expr=""> <data type="int" name="s_1_1" format="signed" len="4" display=""/> <data type="int" name="s_2_1" format="signed" len="4" display=""/> <data type="int" name="s_3_1" format="signed" len="4" display=""/> <data type="int" name="s_4_1" format="signed" len="4" display=""/> <data type="int" name="s_1_2" format="signed" len="4" display=""/> <data type="int" name="s_2_2" format="signed" len="4" display=""/> <data type="int" name="s_3_2" format="signed" len="4" display=""/> <data type="int" name="s_4_2" format="signed" len="4" display=""/> <data type="int" name="s_1_3" format="signed" len="4" display=""/> <data type="int" name="s_2_3" format="signed" len="4" display=""/> <data type="int" name="s_3_3" format="signed" len="4" display=""/> <data type="int" name="s_4_3" format="signed" len="4" display=""/> </struct> </define_struct> <define_struct type_name="Vertices" comment="" expr=""> <struct name="vertice_header" type_name="" comment="" expr=""> <data type="int" name="block_size" len="4" format="unsigned" display=""/> <data type="int" name="MDL0_offset" len="4" format="signed" display=""/> <data type="int" name="data_offset" len="4" format="unsigned" display=""/> <data type="int" name="string_offset" len="4" format="unsigned" display=""/> <data type="int" name="ID" len="4" format="unsigned" display=""/> <data type="int" name="isXYZ" len="4" format="unsigned" display=""/> <data type="int" name="type" len="4" format="unsigned" display=""/> <data type="int" name="modifier" len="1" format="unsigned" display=""/> <data type="int" name="entry_stride" len="1" format="unsigned" display=""/> <data type="int" name="num_vertices" len="2" format="unsigned" display=""/> <if test="isXYZ == 1" comment=""> <use_struct name="bounds" expr="" type_name="bounds" comment=""/> </if> </struct> <data type="string" name="vertices" len="vertice_header.entry_stride * vertice_header.num_vertices" format="default" display="vert structures" comment="I could've put a 'FOR' here, but it'd take too long when loading the file"/> <data type="none" name="pad" len="vertice_header.block_size - (vertice_header.entry_stride*vertice_header.num_vertices) - vertice_header.data_offset"/> </define_struct> <define_struct type_name="Normals" comment="" expr=""> <struct name="normal_header" type_name="" comment="" expr=""> <data type="int" name="block_size" len="4" format="unsigned" display=""/> <data type="int" name="MDL0_offset" len="4" format="signed" display=""/> <data type="int" name="data_offset" len="4" format="unsigned" display=""/> <data type="int" name="string_offset" len="4" format="unsigned" display=""/> <data type="int" name="ID" len="4" format="unsigned" display=""/> <data type="int" name="isXYZ" len="4" format="unsigned" display=""/> <data type="int" name="type" len="4" format="unsigned" display=""/> <data type="int" name="modifier" len="1" format="unsigned" display=""/> <data type="int" name="entry_stride" len="1" format="unsigned" display=""/> <data type="int" name="num_normals" len="2" format="unsigned" display=""/> <if test="isXYZ == 1" comment=""> <use_struct name="bounds" expr="" type_name="bounds" comment=""/> </if> </struct> <data type="string" name="normals" format="default" display="normal structures" len="normal_header.entry_stride*normal_header.num_normals" comment="I could've put a 'FOR' here, but it'd take too long when loading the file"/> <data type="none" name="pad" len="normal_header.block_size - (normal_header.entry_stride*normal_header.num_normals) - normal_header.data_offset"/> </define_struct> <define_struct type_name="Colors" comment="" expr=""> <struct name="color_header" type_name="" comment="" expr=""> <data type="int" name="block_size" len="4" format="signed" display=""/> <data type="int" name="MDL0_offset" len="4" format="signed" display=""/> <data type="int" name="data_offset" len="4" format="signed" display=""/> <data type="int" name="string_offset" len="4" format="signed" display=""/> <data type="int" name="ID" len="4" format="signed" display=""/> <data type="int" name="isRGBA" len="4" format="signed" display=""/> <data type="int" name="type" len="4" format="signed" display=""/> <data type="int" name="entry_stride" len="1" format="signed" display=""/> <data type="int" name="modifier" len="1" format="signed" display=""/> <data type="int" name="num_colors" len="2" format="signed" display=""/> </struct> <for name="color" count="color_header.num_colors || color_header.num_colors - 1" stop_test="color_header.num_colors == 0" type_name="" comment=""> <data type="none" name="color" len="color_header.entry_stride"/> </for> <data type="none" name="pad" len="color_header.block_size - (color_header.num_colors*color_header.entry_stride) - 32"/> </define_struct> <define_struct type_name="UV_Points" comment="" expr=""> <struct name="UV_header" type_name="" comment="" expr=""> <data type="int" name="block_size" len="4" format="unsigned" display=""/> <data type="int" name="MDL0_offset" len="4" format="signed" display=""/> <data type="int" name="data_offset" len="4" format="unsigned" display=""/> <data type="int" name="string_offset" len="4" format="unsigned" display=""/> <data type="int" name="ID" len="4" format="unsigned" display=""/> <data type="int" name="isXY" len="4" format="unsigned" display=""/> <data type="int" name="type" len="4" format="unsigned" display=""/> <data type="int" name="modifier" len="1" format="unsigned" display=""/> <data type="int" name="entry_stride" len="1" format="unsigned" display=""/> <data type="int" name="num_UVs" len="2" format="unsigned" display=""/> <if test="isXY == 1" comment=""> <struct name="bounds" expr="" type_name="" comment=""> <data type="int" name="min_X" format="unsigned" len="4" display=""/> <data type="int" name="min_Y" format="unsigned" len="4" display=""/> <data type="int" name="max_X" format="unsigned" len="4" display=""/> <data type="int" name="max_Y" format="unsigned" len="4" display=""/> <data type="none" name="pad" len="16"/> </struct> </if> </struct> <data type="string" name="UVs" len="UV_header.entry_stride * UV_header.num_UVs" format="default" display="uv structures" comment="I could've put a 'FOR' here, but it'd take too long when loading the file"/> <data type="none" name="pad" len="UV_header.block_size - (UV_header.entry_stride*UV_header.num_UVs) - UV_header.data_offset"/> </define_struct> <define_struct type_name="Shaders" comment="" expr=""> <struct name="header" type_name="" comment="" expr=""> <data type="int" name="block_size" len="4" format="unsigned" display=""/> <data type="int" name="MDL0_offset" len="4" format="signed" display=""/> <data type="int" name="string_offset" len="4" format="unsigned" display=""/> <data type="int" name="ID" len="4" format="unsigned" display=""/> <data type="int" name="unk1" len="4" format="unsigned" display=""/> <data type="int" name="textures" len="1" format="unsigned" display=""/> <data type="int" name="num_layers" len="1" format="unsigned" display=""/> <data type="int" name="Flag3" len="1" format="unsigned" display=""/> <data type="int" name="Flag4" len="1" format="unsigned" display=""/> <data type="int" name="type" len="4" format="unsigned" display=""/> <data type="int" name="Flag5" len="1" format="unsigned" display=""/> <data type="int" name="Flag6" len="1" format="unsigned" display=""/> <data type="int" name="Flag7" len="1" format="unsigned" display=""/> <data type="int" name="Flag8" len="1" format="unsigned" display=""/> <data type="int" name="unk3" format="unsigned" len="4" display=""/> <data type="int" name="unk4" format="signed" len="4" display=""/> <data type="int" name="material_offset" format="signed" len="4" display=""/> <data type="int" name="num_textures" format="signed" len="4" display=""/> <data type="int" name="textures_offset" format="signed" len="4" display=""/> <data type="int" name="P4_offset" format="signed" len="4" display=""/> <data type="int" name="P5_offset" format="signed" len="4" display=""/> <data type="int" name="P6_offset" format="signed" len="4" display=""/> </struct> <jump offset="header.material_offset+(header.MDL0_offset*-1)" comment="" origin="start"> <use_struct name="Material_Reference" expr="" type_name="Materials" comment=""/> </jump> <if test="header.textures_offset != 0" comment=""> <jump offset="header.textures_offset+(header.MDL0_offset*-1)" comment="" origin="start"> <for name="texture" count="header.textures || header.textures -1" stop_test="header.textures == 0" type_name="" comment=""> <struct name="texture" type_name="" comment="" expr="{this.offset_name.name}"> <data type="int" name="string_offset" format="signed" len="4" display=""/> <data type="int" name="pad" len="4" format="signed" display=""/> <data type="int" name="unk1" format="signed" len="4" display=""/> <data type="int" name="unk2" format="signed" len="4" display=""/> <data type="int" name="unk3" format="signed" len="4" display=""/> <data type="int" name="unk4" format="signed" len="4" display=""/> <data type="int" name="layerID1" format="signed" len="4" display=""/> <data type="int" name="layerID2" format="signed" len="4" display=""/> <data type="int" name="unk5" format="signed" len="4" display=""/> <data type="int" name="unk6" format="signed" len="4" display=""/> <data type="int" name="float" format="unsigned" len="4" display=""/> <data type="int" name="unk7" format="signed" len="4" display=""/> <data type="int" name="unk8" format="signed" len="4" display=""/> <jump offset="string_offset -53" comment="" origin="current"> <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/> </jump> </struct> </for> </jump> </if> <if test="header.P4_offset != 0" comment=""> <jump offset="header.P4_offset+(header.MDL0_offset*-1)" comment="" origin="start"> <struct name="P4" type_name="" comment="" expr=""> <data type="int" name="tmp" format="signed" len="4" display=""/> </struct> </jump> </if> <if test="header.P5_offset != 0" comment=""> <jump offset="header.P5_offset+(header.MDL0_offset*-1)" comment="" origin="start"> <struct name="P5" type_name="" comment="" expr=""> <data type="none" name="tmp" len="384"/> </struct> </jump> </if> <if test="header.P6_offset != 0" comment=""> <jump offset="header.P6_offset+(header.MDL0_offset*-1)" comment="" origin="start"> <struct name="P6" type_name="" comment="" expr=""> <data type="none" name="tmp" len="384"/> </struct> </jump> </if> </define_struct> <define_struct type_name="Materials" comment="" expr=""> <struct name="header" type_name="" comment="" expr=""> <data type="int" name="block_length" format="signed" len="4" display=""/> <data type="int" name="MDL0_offset" format="signed" len="4" display=""/> <data type="int" name="ID" format="signed" len="4" display=""/> <data type="int" name="unk" format="unsigned" len="1" display=""/> </struct> <data type="none" name="tmp" len="header.block_length - 13"/> </define_struct> <define_struct type_name="Polygons" comment="" expr=""> <struct name="header" type_name="" comment="" expr=""> <data type="none" name="tmp" len="4"/> </struct> </define_struct> <define_struct type_name="Textures" comment="" expr=""> <data type="int" name="textures" format="signed" len="4" display=""/> <for name="texture" count="textures || textures - 1" stop_test="textures == 0" type_name="" comment=""> <struct name="texture" type_name="" comment="" expr="X: {this.X}, Y: {this.Y}"> <data type="int" name="X" format="unsigned" len="4" display=""/> <data type="int" name="Y" format="unsigned" len="4" display=""/> </struct> </for> </define_struct> <define_struct type_name="Pallets" comment="" expr=""> <data type="int" name="pallets" format="signed" len="4" display=""/> <for name="pallet" count="pallets || pallets - 1" stop_test="pallets == 0" type_name="" comment=""> <struct name="texture" type_name="" comment="" expr="X: {this.X}, Y: {this.Y}"> <data type="int" name="X" format="unsigned" len="4" display=""/> <data type="int" name="Y" format="unsigned" len="4" display=""/> </struct> </for> </define_struct> <struct name="header" type_name="" comment="" expr=""> <data type="string" name="magic" len="4" format="ascii" display=""/> <data type="int" name="filesize" format="unsigned" len="4" display=""/> <data type="int" name="sections" format="unsigned" len="4" display=""/> <data type="int" name="nodes" format="signed" len="4" display=""/> <struct name="lists" type_name="" comment="" expr=""> <data type="int" name="Definitions" format="unsigned" len="4" display=""/> <data type="int" name="Bones" format="unsigned" len="4" display=""/> <data type="int" name="Vertices" format="unsigned" len="4" display=""/> <data type="int" name="Normals" format="unsigned" len="4" display=""/> <data type="int" name="Colors" format="unsigned" len="4" display=""/> <data type="int" name="UV_Points" format="unsigned" len="4" display=""/> <data type="int" name="Shaders" format="unsigned" len="4" display=""/> <data type="int" name="Materials" format="unsigned" len="4" display=""/> <data type="int" name="Polygons" format="unsigned" len="4" display=""/> <data type="int" name="Textures" format="unsigned" len="4" display=""/> <data type="int" name="Pallets" format="unsigned" len="4" display=""/> </struct> <data type="int" name="name_offset" format="unsigned" len="4" display=""/> <data type="int" name="header_len" format="unsigned" len="4" display=""/> <data type="int" name="header_offset" format="signed" len="4" display=""/> <data type="int" name="unk1" format="unsigned" len="4" display=""/> <data type="int" name="unk2" format="unsigned" len="4" display=""/> <data type="int" name="num_verticies" format="unsigned" len="4" display=""/> <data type="int" name="num_faces" format="unsigned" len="4" display=""/> <data type="int" name="unk3" format="unsigned" len="4" display=""/> <data type="int" name="num_nodes" format="unsigned" len="4" display=""/> <data type="int" name="version" format="unsigned" len="4" display=""/> <data type="int" name="unk4" format="unsigned" len="2" display=""/> <data type="int" name="unk5" format="unsigned" len="2" display=""/> <struct name="bounds" type_name="" comment="" expr=""> <data type="int" name="min_X" format="unsigned" len="4" display=""/> <data type="int" name="min_Y" format="unsigned" len="4" display=""/> <data type="int" name="min_Z" format="unsigned" len="4" display=""/> <data type="int" name="max_X" format="unsigned" len="4" display=""/> <data type="int" name="max_Y" format="unsigned" len="4" display=""/> <data type="int" name="max_Z" format="unsigned" len="4" display=""/> </struct> </struct> <jump offset="header.nodes * -1" comment="" origin="start"> <struct name="nodes" type_name="" comment="" expr=""> <data type="int" name="num_nodes" format="signed" len="4" display=""/> <for name="node" count="num_nodes || num_nodes - 1" stop_test="num_nodes == 0" type_name="" comment=""> <data type="int" name="node" format="signed" len="4" display=""/> </for> </struct> </jump> <if test="header.lists.Definitions != 0" comment=""> <jump offset="header.lists.Definitions" comment="" origin="start"> <struct name="Definitions" type_name="" comment="" expr=""> <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/> <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment=""> <struct name="data" type_name="" comment="" expr="{this.offset_name.name}"> <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/> <jump offset="relocation_offset.data_offset + header.lists.Definitions" comment="" origin="start"> <use_struct name="Definitions" expr="" type_name="Definitions" comment=""/> </jump> <jump offset="relocation_offset.string_offset + header.lists.Definitions - 1" comment="" origin="start"> <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/> </jump> </struct> </for> </struct> </jump> </if> <if test="header.lists.Bones != 0" comment=""> <jump offset="header.lists.Bones" comment="" origin="start"> <struct name="Bones" type_name="" comment="" expr=""> <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/> <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment=""> <struct name="data" type_name="" comment="" expr="{this.offset_name.name}"> <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/> <jump offset="relocation_offset.data_offset + header.lists.Bones" comment="" origin="start"> <use_struct name="Bone_data" expr="" type_name="Bones" comment=""/> </jump> <jump offset="relocation_offset.string_offset + header.lists.Bones - 1" comment="" origin="start"> <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/> </jump> </struct> </for> </struct> </jump> </if> <if test="header.lists.Vertices != 0" comment=""> <jump offset="header.lists.Vertices" comment="" origin="start"> <struct name="Vertices" type_name="" comment="" expr=""> <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/> <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment=""> <struct name="data" type_name="" comment="" expr="{this.offset_name.name}"> <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/> <jump offset="relocation_offset.data_offset + header.lists.Vertices" comment="" origin="start"> <use_struct name="Vertices" expr="" type_name="Vertices" comment=""/> </jump> <jump offset="relocation_offset.string_offset + header.lists.Vertices - 1" comment="" origin="start"> <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/> </jump> </struct> </for> </struct> </jump> </if> <if test="header.lists.Normals != 0" comment=""> <jump offset="header.lists.Normals" comment="" origin="start"> <struct name="Normals" type_name="" comment="" expr=""> <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/> <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment=""> <struct name="data" type_name="" comment="" expr="{this.offset_name.name}"> <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/> <jump offset="relocation_offset.data_offset + header.lists.Normals" comment="" origin="start"> <use_struct name="Normals" expr="" type_name="Normals" comment=""/> </jump> <jump offset="relocation_offset.string_offset + header.lists.Normals - 1" comment="" origin="start"> <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/> </jump> </struct> </for> </struct> </jump> </if> <if test="header.lists.Colors != 0" comment=""> <jump offset="header.lists.Colors" comment="" origin="start"> <struct name="Colors" type_name="" comment="" expr=""> <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/> <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment=""> <struct name="data" type_name="" comment="" expr="{this.offset_name.name}"> <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/> <jump offset="relocation_offset.data_offset + header.lists.Colors" comment="" origin="start"> <use_struct name="Colors" expr="" type_name="Colors" comment=""/> </jump> <jump offset="relocation_offset.string_offset + header.lists.Colors - 1" comment="" origin="start"> <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/> </jump> </struct> </for> </struct> </jump> </if> <if test="header.lists.UV_Points != 0" comment=""> <jump offset="header.lists.UV_Points" comment="" origin="start"> <struct name="UV_Points" type_name="" comment="" expr=""> <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/> <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment=""> <struct name="data" type_name="" comment="" expr="{this.offset_name.name}"> <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/> <jump offset="relocation_offset.data_offset + header.lists.UV_Points" comment="" origin="start"> <use_struct name="UV_Points" expr="" type_name="UV_Points" comment=""/> </jump> <jump offset="relocation_offset.string_offset + header.lists.UV_Points - 1" comment="" origin="start"> <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/> </jump> </struct> </for> </struct> </jump> </if> <if test="header.lists.Shaders != 0" comment=""> <jump offset="header.lists. Shaders" comment="" origin="start"> <struct name="Shaders" type_name="" comment="" expr=""> <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/> <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment=""> <struct name="data" type_name="" comment="" expr="{this.offset_name.name}"> <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/> <jump offset="relocation_offset.data_offset + header.lists.Shaders" comment="" origin="start"> <use_struct name="Shaders" expr="" type_name="Shaders" comment=""/> </jump> <jump offset="relocation_offset.string_offset + header.lists.Shaders - 1" comment="" origin="start"> <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/> </jump> </struct> </for> </struct> </jump> </if> <if test="header.lists.Materials != 0" comment=""> <jump offset="header.lists.Materials" comment="" origin="start"> <struct name="Materials" type_name="" comment="" expr=""> <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/> <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment=""> <struct name="data" type_name="" comment="" expr="{this.offset_name.name}"> <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/> <jump offset="relocation_offset.data_offset + header.lists.Materials" comment="" origin="start"> <use_struct name="Materials" expr="" type_name="Materials" comment=""/> </jump> <jump offset="relocation_offset.string_offset + header.lists.Materials - 1" comment="" origin="start"> <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/> </jump> </struct> </for> </struct> </jump> </if> <if test="header.lists.Polygons != 0" comment=""> <jump offset="header.lists.Polygons" comment="" origin="start"> <struct name="Polygons" type_name="" comment="" expr=""> <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/> <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment=""> <struct name="data" type_name="" comment="" expr="{this.offset_name.name}"> <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/> <jump offset="relocation_offset.data_offset + header.lists.Polygons" comment="" origin="start"> <use_struct name="Polygons" expr="" type_name="Polygons" comment=""/> </jump> <jump offset="relocation_offset.string_offset + header.lists.Polygons - 1" comment="" origin="start"> <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/> </jump> </struct> </for> </struct> </jump> </if> <if test="header.lists.Textures != 0" comment=""> <jump offset="header.lists.Textures" comment="" origin="start"> <struct name="Textures" type_name="" comment="" expr=""> <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/> <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment=""> <struct name="data" type_name="" comment="" expr="{this.offset_name.name}"> <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/> <jump offset="relocation_offset.data_offset + header.lists.Textures" comment="" origin="start"> <use_struct name="Textures" expr="" type_name="Textures" comment=""/> </jump> <jump offset="relocation_offset.string_offset + header.lists.Textures - 1" comment="" origin="start"> <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/> </jump> </struct> </for> </struct> </jump> </if> <if test="header.lists.Pallets != 0" comment=""> <jump offset="header.lists.Pallets" comment="" origin="start"> <struct name="Pallets" type_name="" comment="" expr=""> <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/> <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment=""> <struct name="data" type_name="" comment="" expr="{this.offset_name.name}"> <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/> <jump offset="relocation_offset.data_offset + header.lists.Pallets" comment="" origin="start"> <use_struct name="Pallets" expr="" type_name="Pallets" comment=""/> </jump> <jump offset="relocation_offset.string_offset + header.lists.Pallets - 1" comment="" origin="start"> <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/> </jump> </struct> </for> </struct> </jump> </if> <data type="none" name="none"/> </binary_file_format>
you'll need HexEdit for this to work... http://www.smashboards.com/showpost.php?p=11656041&postcount=2778copy the template, 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 (looks like 3 red arrows "back, forth, back") also, be sure to R-Click 'MDL0' and click 'Allow Editing'. (it takes a while to load, but there's no errors with it this way) heh... the more help I get in learning the format, the faster I'll be able to build a 2-way (complete) converter.  Will's is uncomplete, but returns a working mesh (verts, normals, uv's, and faces) AIS returns alot more, but is glitchy and still doesn't cover everything. also... dae is ascii (text) mdl0 is binary (hex) I'm trying to convert between collada 140 and 141 glad to have some help FINALLYthere's currently alot to be known before a perfect mdl0 can be written from scratch... also, I have the AIS src... but... I can't read C codes :/ I progg in Py, or HTML/JS >_>
|
|
|
|
« Last Edit: December 14, 2010, 10:21:42 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.
|
|
|
|
|
|
 |
« Reply #6 on: December 14, 2010, 04:29:02 PM » |
|
I know a little C#, or is AiS in C/C++? I have a couple friends who are good at C/C++ coding too.  I have no clue how the daes are made, but I do know that they are in ascii (xml), and I'm pretty good with looking over binary. I think I found a thread somewhere that listed all the parts of an mdl0, I'll try to find it
|
|
|
|
« Last Edit: December 14, 2010, 04:32:03 PM by BlackJax96 »
|
Logged
|
"WHOOO-AAHHH, YEAAAAAAAAHH" - BlackJax96 
|
|
|
|
|
|
 |
« Reply #7 on: December 14, 2010, 04:52:50 PM » |
|
I know a little C#, or is AiS in C/C++? I have a couple friends who are good at C/C++ coding too.  nice  here's the src: http://www.filefactory.com/file/b29fah4/n/ais_rartook me FOREVER to find btw D:> I have no clue how the daes are made, but I do know that they are in ascii (xml), and I'm pretty good with looking over binary. I think I found a thread somewhere that listed all the parts of an mdl0, I'll try to find it
ah... I see... do you have any 140 or 141 files that import perfectly into blender?? I need a template to tell me how it works :/ 140 has a VGroup prob, and 141 has a UV and bone prob on my end... can't build a template out of files that don't work :/ I could look online too, so it's ok if you don't have any  and yea, can't wait for that thread  *waits patiently* 
|
|
|
|
« Last Edit: December 14, 2010, 04:53:46 PM 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.
|
|
|
|
|
|
 |
« Reply #8 on: December 14, 2010, 05:20:12 PM » |
|
I have blender, but it never works properly for me... I use 3ds max 8 and 2010 instead. I just tried to import a dae into it, and 1.4 had a script error  I couldn't find the exact thread, but Brawlbox does have a file for mdl0s, it's in C#: http://code.google.com/p/brawltools/source/browse/trunk/BrawlLib/SSBB/Types/MDL0.csI'll take a look at the AiS source.
|
|
|
|
|
Logged
|
"WHOOO-AAHHH, YEAAAAAAAAHH" - BlackJax96 
|
|
|
|
|
|
 |
« Reply #9 on: December 14, 2010, 05:32:38 PM » |
|
heh... can't afford 3DS and don't wanna deal with dreaded blue screen again here I thought 3DS was good, but after it destroyed my cpu twice... yea... btw, I've got a copy of every src from brbx saved... brawllib contains the structures... (I can read vars)  EDIT: well today was kinda a blowoff day for me  I'm not getting help with either of the MDL0 or DAT formats... DX so I've been on YT and random sites, just doin... stuff...
|
|
|
|
« Last Edit: December 14, 2010, 06:08:15 PM 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.
|
|
|
|
|
|
 |
« Reply #10 on: December 14, 2010, 06:25:41 PM » |
|
You dont happen to have a file called Dae.h, do you? I need it to build the source  Lately I've been working on Nel. ...and trying to convert a model I have in PMD and X format to any other format that's importable with 3ds max... no luck yet with that, I've tried everything 
|
|
|
|
|
Logged
|
"WHOOO-AAHHH, YEAAAAAAAAHH" - BlackJax96 
|
|
|
|
|
|
 |
« Reply #11 on: December 14, 2010, 06:41:34 PM » |
|
You dont happen to have a file called Dae.h, do you? I need it to build the source  lol... I just deleted it (the entire DOM) XD I'll retrieve it right now Lately I've been working on Nel. ...and trying to convert a model I have in PMD and X format to any other format that's importable with 3ds max... no luck yet with that, I've tried everything  O.O did you say PMD... there's a blender importer for that you know... it may, or may not work for your file :/ roo525 wanted me to import a pmd of Flandre
|
|
|
|
« Last Edit: December 14, 2010, 06:46:06 PM 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.
|
|
|
|
|
|
 |
« Reply #12 on: December 14, 2010, 06:56:14 PM » |
|
Like I said, blender is stupid for me  I got a script error importing it, I think I have to switch Blender to Japanese but I have no clue how to do that 0_o figured out how to switch it, but I still get an error  Could you try and export it as a DAE for me? lol and thanks for getting dae.h for me It's Yoko Littner http://www.mediafire.com/?kekova24i5nei61
|
|
|
|
« Last Edit: December 14, 2010, 07:01:45 PM by BlackJax96 »
|
Logged
|
"WHOOO-AAHHH, YEAAAAAAAAHH" - BlackJax96 
|
|
|
|
|
|
 |
« Reply #13 on: December 14, 2010, 07:19:18 PM » |
|
KK... here's dae.h: /* * Copyright 2006 Sony Computer Entertainment Inc. * * Licensed under the MIT Open Source License, for details please see license.txt or the website * http://www.opensource.org/licenses/mit-license.php * */
#ifndef __DAE__ #define __DAE__
// We use the boost filesystem library for cross-platform file system support. You'll need // to have boost on your machine for this to work. For the Windows build boost is provided // in the external-libs folder, but for Linux it's expected that you'll install a boost // obtained via your distro's package manager. For example on Debian/Ubuntu, you can run // apt-get install libboost-filesystem-dev // to install the boost filesystem library on your machine. // // Disable the warnings we get from Boost // warning C4180: qualifier applied to function type has no meaning; ignored // warning C4245: 'argument' : conversion from 'int' to 'boost::filesystem::system_error_type', // signed/unsigned mismatch #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4180 4245) #endif #ifndef NO_BOOST #include <boost/filesystem/convenience.hpp> // THIS WAS NOT COMMENTED. #endif #ifdef _MSC_VER #pragma warning(pop) #endif
#include <dae/daeTypes.h> #include <dae/daeError.h> #include <dae/daeDatabase.h> #include <dae/daeIOPlugin.h> #include <dae/daeAtomicType.h> #include <dae/daeMetaElement.h> #include <dae/daeIDRef.h> #include <dae/daeURI.h> #include <dae/daeUtils.h> #include <dae/daeRawResolver.h> #include <dae/daeSIDResolver.h>
class domCOLLADA; typedef daeSmartRef<domCOLLADA> domCOLLADARef; class daeDatabase;
// The DAE class is the core interface via which you interact with the DOM. It // has methods to load/save documents, get the root element of each document, // etc. Although internally the DOM works exclusively with URIs, the methods of // the DAE class that take document paths can take URIs or OS-specific file // paths. class DLLSPEC DAE { public: // Constructor. If no database or IO plugin are provided, a default database and // IO plugin will be used. DAE(daeDatabase* database = NULL, daeIOPlugin* ioPlugin = NULL) : atomicTypes(*this), baseUri(*this, cdom::getCurrentDirAsUri().c_str()) { // See the end of the thread linked below for an explanation of why we have the DAE // constructor set up this way. Basically, I'm going to be changing the build output // location, and when this happens people sometimes continue to link against the old // libraries by accident (e.g. if they just do an svn update). By introducing a new // function that gets called from a function in a header file, I'm ensuring that someone // who tries linking against old libraries will get a link error. This may not sound // very nice, but it's certainly better than getting bizarre runtime crashes. // https://collada.org/public_forum/viewtopic.php?t=771&sid=f13c34f2d17ca720c5021bccbe5128b7 init(database, ioPlugin); dummyFunction1(); }
virtual ~DAE();
// Release all memory used by the DOM. You never need to call this explicitly. It's // called automatically when all DAE objects go out of scope. // Deletes directory returned by cdom::getSafeTmpDir(). static void cleanup(); public: // Database setup virtual daeDatabase* getDatabase(); virtual daeInt setDatabase(daeDatabase* database);
// IO Plugin setup virtual daeIOPlugin* getIOPlugin(); virtual daeInt setIOPlugin(daeIOPlugin* plugin);
// Creates a new document, returning null on failure. virtual domCOLLADA* add(const std::string& path); // Opens an existing document, returning null on failure. virtual domCOLLADA* open(const std::string& path); // Opens a document from memory, returning null on failure. virtual domCOLLADA* openFromMemory(const std::string& path, daeString buffer); // Write a document to the path specified by the document's URI, returning false on failure. virtual bool write(const std::string& path); // Write a document to the path specified in the second parameter, returning false on failure. virtual bool writeTo(const std::string& docPath, const std::string& pathToWriteTo); // Writes all documents, returning false if any document failed to write. virtual bool writeAll(); // Close a specific document, unloading all memory used by the document. Returns false on failure. virtual void close(const std::string& path); // Remove all loaded documents. Always returns DAE_OK. virtual daeInt clear();
// Returns the total number of documents. virtual int getDocCount(); // Returns the i'th document . virtual daeDocument* getDoc(int i); // Returns a document matching the path. virtual daeDocument* getDoc(const std::string& path); // Get the root domCOLLADA object corresponding to a particular document. virtual domCOLLADA* getRoot(const std::string& path); // Set the root domCOLLADA object corresponding to a particular document, returning false on failure. virtual bool setRoot(const std::string& path, domCOLLADA* root);
// Returns the Collada version, i.e. 1.4, 1.5, etc. Note that this _isn't_ the // same as the DOM version (1.3, 2.0, ...). virtual daeString getDomVersion();
// Returns the (modifiable) list of atomic type objects. daeAtomicTypeList& getAtomicTypes();
// Get/set a daeMetaElement object given the meta object's type ID. daeMetaElement* getMeta(daeInt typeID); void setMeta(daeInt typeID, daeMetaElement& meta);
// Get all daeMetaElement objects. daeMetaElementRefArray& getAllMetas();
// Returns the list of URI resolvers. You can modify the list to add new resolvers. daeURIResolverList& getURIResolvers();
// The base URI used for resolving relative URI references. daeURI& getBaseURI(); void setBaseURI(const daeURI& uri); void setBaseURI(const std::string& uri);
// Returns the list of ID reference resolvers. You can modify the list to add new // resolvers. daeIDRefResolverList& getIDRefResolvers();
// Meant for internal DOM use only. daeRawRefCache& getRawRefCache(); daeSidRefCache& getSidRefCache();
// These functions specify the client's character encoding for the DOM. The // default is Utf8, but if you specify Latin1 then the DOM will use libxml's // character conversion functions to convert to Utf8 when writing data and // convert to Latin1 when reading data. This can help with the handling of // non-ASCII characters on Windows. Only when using libxml for xml I/O does // any character conversion occur. // // Most people can probably just ignore this completely. If you have trouble // with non-ASCII characters on Windows, try setting the char encoding to // Latin1 to see if that helps. // // Frankly this certainly isn't the best way of handling non-ASCII character // support on Windows, so this interface is a likely target for significant // changes in the future. // // See this Sourceforge thread for more info: // http://sourceforge.net/tracker/index.php?func=detail&aid=1818473&group_id=157838&atid=805426 // enum charEncoding { Utf8, Latin1 };
// Global encoding setting. Defaults to Utf8. Set this if you want to make a // char encoding change and apply it to all DAE objects. static charEncoding getGlobalCharEncoding(); static void setGlobalCharEncoding(charEncoding encoding);
// Local encoding setting. If set, overrides the global setting. Useful for setting // a specific char encoding for a single DAE object but not for all DAE objects. charEncoding getCharEncoding(); void setCharEncoding(charEncoding encoding);
// Deprecated. Alternative methods are given. virtual daeInt load(daeString uri, daeString docBuffer = NULL); // Use open virtual daeInt save(daeString uri, daeBool replace=true); // Use write virtual daeInt save(daeUInt documentIndex, daeBool replace=true); // Use write virtual daeInt saveAs(daeString uriToSaveTo, daeString docUri, daeBool replace=true); // Use writeTo virtual daeInt saveAs(daeString uriToSaveTo, daeUInt documentIndex=0, daeBool replace=true); // Use writeTo virtual daeInt unload(daeString uri); // Use close virtual domCOLLADA* getDom(daeString uri); // use getRoot virtual daeInt setDom(daeString uri, domCOLLADA* dom); // use setRoot
private: void init(daeDatabase* database, daeIOPlugin* ioPlugin); void dummyFunction1(); std::string makeFullUri(const std::string& path); domCOLLADA* openCommon(const std::string& path, daeString buffer); bool writeCommon(const std::string& docPath, const std::string& pathToWriteTo, bool replace);
daeDatabase *database; daeIOPlugin *plugin; bool defaultDatabase; bool defaultPlugin; daeAtomicTypeList atomicTypes; daeMetaElementRefArray metas; daeURI baseUri; daeURIResolverList uriResolvers; daeIDRefResolverList idRefResolvers; daeRawRefCache rawRefCache; daeSidRefCache sidRefCache;
std::auto_ptr<charEncoding> localCharEncoding; static charEncoding globalCharEncoding; };
template <typename T> inline T *daeSafeCast(daeElement *element) { if (element && element->typeID() == T::ID()) return (T*)element; return NULL; }
#endif // __DAE_INTERFACE__
didn't feel like UL-ing it 
|
|
|
|
|
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.
|
|
|
|
|
|
 |
« Reply #14 on: December 14, 2010, 07:32:17 PM » |
|
Still won't build
*cough* #include <dae/daeTypes.h> #include <dae/daeError.h> #include <dae/daeDatabase.h> #include <dae/daeIOPlugin.h> #include <dae/daeAtomicType.h> #include <dae/daeMetaElement.h> #include <dae/daeIDRef.h> #include <dae/daeURI.h> #include <dae/daeUtils.h> #include <dae/daeRawResolver.h> #include <dae/daeSIDResolver.h> #include <dom/domCOLLADA.h> #include <dom/domProfile_COMMON.h> *cough*
Need those .h files too >.> Might want to upload them lol
|
|
|
|
|
Logged
|
"WHOOO-AAHHH, YEAAAAAAAAHH" - BlackJax96 
|
|
|
|
|