spinout Posted April 6, 2011 Share Posted April 6, 2011 Here is a small tool I wrote to assist those of you that wish to hack objects' hierarchies. z64tree.c To compile, you need to build and install libn64tool, which can be found as a package here, or it can be browsed here. Other than the basic C libraries, you'll probably need glib 2.0 to compile libn64tool. The program does this: spinout@supernova:~/Desktop$ ./z64tree 262 ~/ROMS/ZELOOTMA.z64 object 262 |--ROM offset: 0x016e1000 |--size: 0x000205d0 bytes |--skeletons: 2 |-+skeleton 0: | |--offset: 0x0601E178 | |-+29 bones | | |-+ {13, 3511, -100} 0x00000000 | | | |-+ {0, 928, 0} 0x0601C7B8 | | | | |-+ {928, 0, -438} 0x0601CEE0 | | | | | |-+ {1903, 0, 0} 0x0601CB58 | | | | | | |-- {1304, 0, 0} 0x0601CCA0 | | | | |-+ {928, 0, 438} 0x0601D638 | | | | | |-+ {1903, 0, 0} 0x0601D2B0 | | | | | | |-- {1304, 0, 0} 0x0601D3F8 | | | |-+ {0, 0, 0} 0x00000000 | | | | |-+ {0, 0, 0} 0x00000000 | | | | | |-+ {2100, -200, 0} 0x00000000 | | | | | | |-- {0, 0, 0} 0x060154E0 | | | | | | |-- {0, 0, 0} 0x06015B00 | | | | | |-+ {1562, -100, -1089} 0x0601C130 | | | | | | |-+ {799, 0, 0} 0x0601BE98 | | | | | | | |-+ {1079, 0, 0} 0x00000000 | | | | | | | | |-- {0, 0, 0} 0x06015840 | | | | | | | | |-- {0, 0, 0} 0x06016118 | | | | | |-+ {1562, -100, 1089} 0x0601C550 | | | | | | |-+ {807, 0, 0} 0x0601C2B8 | | | | | | | |-- {1071, 0, 0} 0x06016340 | | | | | |-- {2035, 0, 851} 0x06016658 | | | | | |-- {1900, 0, 1184} 0x060164A0 | | | | | |-- {2035, 0, -851} 0x06016568 | | | | | |-- {1900, 0, -1184} 0x06016278 | | | | | |-- {0, 0, 0} 0x060151F0 | | | | | |-- {0, 0, 0} 0x06015380 | | | | | |-- {0, 0, 0} 0x0601BA78 | | | | |-- {0, 0, 0} 0x0601C6D8 |-+skeleton 1: | |--offset: 0x060205C0 | |-+29 bones | | |-+ {0, 3540, 0} 0x00000000 | | | |-+ {0, 928, 0} 0x0601C7B8 | | | | |-+ {928, 0, -438} 0x0601CEE0 | | | | | |-+ {1903, 0, 0} 0x0601CB58 | | | | | | |-- {1304, 0, 0} 0x0601CCA0 | | | | |-+ {928, 0, 438} 0x0601D638 | | | | | |-+ {1903, 0, 0} 0x0601D2B0 | | | | | | |-- {1304, 0, 0} 0x0601D3F8 | | | |-+ {0, 0, 0} 0x00000000 | | | | |-+ {0, 0, 0} 0x00000000 | | | | | |-+ {2100, -200, 0} 0x00000000 | | | | | | |-- {0, 0, 0} 0x06015B00 | | | | | | |-- {0, 0, 0} 0x060154E0 | | | | | |-+ {1562, -100, -1089} 0x0601C130 | | | | | | |-+ {799, 0, 0} 0x0601BE98 | | | | | | | |-+ {1079, 0, 0} 0x00000000 | | | | | | | | |-- {0, 0, 0} 0x06015840 | | | | | | | | |-- {0, 0, 0} 0x06016118 | | | | | |-+ {1562, -100, 1089} 0x0601C550 | | | | | | |-+ {807, 0, 0} 0x0601C2B8 | | | | | | | |-- {1071, 0, 0} 0x06016340 | | | | | |-- {2035, 0, 851} 0x06016658 | | | | | |-- {1900, 0, 1184} 0x060164A0 | | | | | |-- {2035, 0, -851} 0x06016568 | | | | | |-- {1900, 0, -1184} 0x06016278 | | | | | |-- {0, 0, 0} 0x060151F0 | | | | | |-- {0, 0, 0} 0x06015380 | | | | | |-- {0, 0, 0} 0x0601BA78 | | | | |-- {0, 0, 0} 0x0601C6D8 With a little more documentation, libn64tool will support ROMs other than the Debug ROM. Link to comment Share on other sites More sharing options...
Salvage66 Posted April 6, 2011 Share Posted April 6, 2011 Cool whats the purpose of hacking the hiearchery and what can one do by doing so? Link to comment Share on other sites More sharing options...
spinout Posted April 6, 2011 Author Share Posted April 6, 2011 I cleaned up the output a little. spinout@supernova:~/Desktop$ ./z64tree 25 ~/ROMS/ZELOOTMA.z64 object 25 |--ROM offset: 0x010aa000 |--size: 0x00030ce0 bytes |--skeletons: 1 |-+skeleton 0: | |--offset: 0x0601B310 | |-+48 bones | | --+ {0, 7561, 0} 0x00000000 | | |-+ {0, 0, 0} 0x00000000 | | | --+ {0, 0, 0} 0x00000000 | | | |-+ {930, 1358, 0} 0x00000000 | | | | --+ {0, 0, 0} 0x00000000 | | | | --- {0, 0, 0} 0x06015630 | | | --- {0, 0, 0} 0x06014A30 | | --+ {0, 0, 0} 0x00000000 | | --+ {0, 0, 0} 0x00000000 | | |-+ {7167, 0, 0} 0x00000000 | | | |-+ {5559, 0, 0} 0x00000000 | | | | |-+ {7679, 0, 0} 0x00000000 | | | | | |-+ {3881, 0, 0} 0x00000000 | | | | | | |-+ {2989, 0, 0} 0x00000000 | | | | | | | --- {0, 0, 0} 0x06014100 | | | | | | --- {0, 0, 0} 0x06013EF8 | | | | | --- {0, 0, 0} 0x06013C20 | | | | |-+ {2876, 642, 3981} 0x00000000 | | | | | --+ {0, 0, 0} 0x00000000 | | | | | |-+ {5617, 0, 0} 0x00000000 | | | | | | |-+ {6493, 0, 0} 0x00000000 | | | | | | | --- {0, 0, 0} 0x0600F310 | | | | | | --- {0, 0, 0} 0x0600FAC0 | | | | | --- {0, 0, 0} 0x0600F6C0 | | | | |-+ {2876, 642, -3981} 0x00000000 | | | | | --+ {0, 0, 0} 0x00000000 | | | | | |-+ {5617, 0, 0} 0x00000000 | | | | | | |-+ {6493, 0, 0} 0x00000000 | | | | | | | --- {0, 0, 0} 0x06010BE0 | | | | | | --- {0, 0, 0} 0x06011390 | | | | | --- {0, 0, 0} 0x06010F90 | | | | --- {0, 0, 0} 0x060137B0 | | | --- {0, 0, 0} 0x06012F28 | | |-+ {3563, 1722, -5096} 0x00000000 | | | --+ {0, 0, 0} 0x00000000 | | | |-+ {8319, 0, 0} 0x00000000 | | | | |-+ {6336, 0, 0} 0x00000000 | | | | | --- {0, 0, 0} 0x06011838 | | | | --- {0, 0, 0} 0x06012148 | | | --- {0, 0, 0} 0x06011C60 | | |-+ {3563, 1722, 5096} 0x00000000 | | | --+ {0, 0, 0} 0x00000000 | | | |-+ {8319, 0, 0} 0x00000000 | | | | |-+ {6336, 0, 0} 0x00000000 | | | | | --- {0, 0, 0} 0x0600FF68 | | | | --- {0, 0, 0} 0x06010878 | | | --- {0, 0, 0} 0x06010390 | | --- {0, 0, 0} 0x060127D0 I also added code to support reading and printing of other kinds of hierarchies, so this tool is almost ready once I make my library able to scan for other kinds of skeletons. EDIT: - Moved some code to libn64tool - Worked on code in z64tree and libn64tool Result? Now works with normal, link, horse (both) and alpha bone structures. spinout@supernova:~/Desktop$ ./z64tree 26 ~/ROMS/ZELOOTMA.z64 object 26 |--ROM offset: 0x010db000 |--size: 0x0000df10 bytes |--number of skeletons: 2 |--type of skeleton(s): horse |-+skeleton 0: | |--offset: 0x06000868 | |-+14 bones | --+ 0x00000000 | |-- 0x060004C0 | |-+ 0x00000000 | | --+ 0x00000000 | | --- 0x06000580 | |-+ 0x00000000 | | --+ 0x00000000 | | --- 0x06000620 | |-+ 0x00000000 | | --+ 0x00000000 | | --- 0x060006C0 | --+ 0x00000000 | --+ 0x00000000 | --- 0x06000760 |-+skeleton 1: |--offset: 0x06009D74 |-+47 bones --+ {0, 4820, -1965} 0x00000000 |-+ {0, 505, -1338} 0x00000000 | --+ {0, 0, 0} 0x00000000 | --+ {1217, 0, 0} 0x00000000 | --- {2387, 0, 0} 0x00000000 |-- {-3, 171, 1984} 0x060099BC |-+ {0, 68, 710} 0x00000000 | --+ {0, 0, 0} 0x00000000 | |-+ {1681, 0, 0} 0x00000000 | | |-+ {2122, 0, 0} 0x00000000 | | | --+ {1406, 0, 0} 0x00000000 | | | --+ {1304, 0, 0} 0x00000000 | | | |-- {1979, 0, 0} 0x00000000 | | | --- {0, 0, 0} 0x0600AC20 | | |-+ {1338, 341, 756} 0x00000000 | | | --+ {0, 0, 0} 0x00000000 | | | --+ {605, 0, 0} 0x00000000 | | | --+ {2419, 0, 0} 0x00000000 | | | |-+ {1459, 0, 0} 0x00000000 | | | | |-- {660, 0, 0} 0x00000000 | | | | --- {0, 0, 0} 0x060009B0 | | | --- {0, 0, 0} 0x06000BB0 | | --+ {1338, 341, -756} 0x00000000 | | --+ {0, 0, 0} 0x00000000 | | --+ {605, 0, 0} 0x00000000 | | --+ {2419, 0, 0} 0x00000000 | | |-+ {1459, 0, 0} 0x00000000 | | | |-- {660, 0, 0} 0x00000000 | | | --- {0, 0, 0} 0x06000DA0 | | --- {0, 0, 0} 0x06000FA0 | --- {0, 0, 0} 0x0600B5E0 |-+ {655, -151, -593} 0x00000000 | --+ {0, 0, 0} 0x00000000 | --+ {1123, 0, 0} 0x00000000 | --+ {2330, 0, 0} 0x00000000 | |-+ {1573, 0, 0} 0x00000000 | | |-- {598, 0, 0} 0x00000000 | | --- {0, 0, 0} 0x06001170 | --- {0, 0, 0} 0x06001370 --+ {-655, -151, -593} 0x00000000 --+ {0, 0, 0} 0x00000000 --+ {1123, 0, 0} 0x00000000 --+ {2330, 0, 0} 0x00000000 |-+ {1573, 0, 0} 0x00000000 | |-- {598, 0, 0} 0x00000000 | --- {0, 0, 0} 0x06001540 --- {0, 0, 0} 0x06001740 spinout@supernova:~/Desktop$ ./z64tree 20 ~/ROMS/ZELOOTMA.z64 object 20 |--ROM offset: 0x00fdc000 |--size: 0x00037800 bytes |--number of skeletons: 1 |--type of skeleton(s): link |-+skeleton 0: |--offset: 0x060377F4 |-+21 bones --+ {-57, 3377, 0} 0x00000000, 0x00000000 |-+ {0, 0, 0} 0x06035330, 0x0602F530 | --+ {945, 0, 0} 0x00000000, 0x00000000 | |-+ {-399, 69, -249} 0x06035678, 0x0602F7A0 | | --+ {1306, 0, 0} 0x060358B0, 0x0602F9B8 | | --- {1256, 5, 11} 0x06035B60, 0x0602FB80 | --+ {-396, 76, 264} 0x06035CB8, 0x0602FCA0 | --+ {1304, 0, 0} 0x06035EF0, 0x0602FEC0 | --- {1257, 6, 3} 0x060361A0, 0x06030088 --+ {0, 21, -7} 0x00000000, 0x00000000 |-+ {1392, -259, 0} 0x060365E8, 0x06030400 | --- {-298, -700, 0} 0x06036D30, 0x060309B0 |-- {0, 0, 0} 0x060362F8, 0x060301A8 |-+ {1039, -172, 680} 0x06037210, 0x06030EF8 | --+ {919, 0, 0} 0x060373D8, 0x060310A0 | --- {754, 0, 0} 0x06021AA8, 0x06026C58 |-+ {1039, -173, -680} 0x06036E58, 0x06030AA0 | --+ {919, 0, 0} 0x06037018, 0x06030C48 | --- {754, 0, 0} 0x06022498, 0x060274F8 |-- {978, -692, 342} 0x06023160, 0x06027F00 --- {0, 0, 0} 0x060363B8, 0x06030250 spinout@supernova:~/Desktop$ ./z64tree 6 ~/ROMS/ZELOOTMA.z64 object 6 |--ROM offset: 0x01047000 |--size: 0x00013180 bytes |--number of skeletons: 1 |--type of skeleton(s): alpha |-+skeleton 0: |--offset: 0x06011FC8 |-+42 bones |-- {0, 3451, 40} {0, 0, 0} 0x00000000 |-+ {0, 0, 0} {0, 16383, 0} 0x00000000 | |-+ {0, 0, 0} {0, 16383, 0} 0x00000000 | | |-+ {266, -534, 5} {0, 16383, 0} 0x00000000 | | | |-- {-266, -534, 5} {8191, 16383, 8191} 0x00000000 | | | |-- {0, 0, 0} {0, 0, -16416} 0x00000000 | | | |-- {1148, 0, 0} {0, 0, 58} 0x00000000 | | | |-+ {1440, 0, 0} {0, 0, -16383} 0x00000000 | | | | --- {0, 0, 0} {0, 0, 0} 0x0600C528 | | | --- {0, 0, 0} {0, 0, 0} 0x0600C020 | | |-- {0, 0, 0} {0, 0, -16416} 0x00000000 | | |-- {1148, 0, 0} {0, 0, 58} 0x00000000 | | |-+ {1440, 0, 0} {0, 0, -16383} 0x00000000 | | | --- {0, 0, 0} {0, 0, 0} 0x0600B9F0 | | --- {0, 0, 0} {0, 0, 0} 0x0600B498 | |-- {0, 0, 0} {0, 0, 16383} 0x00000000 | |-+ {1320, 0, 0} {0, 0, 16383} 0x00000000 | | --+ {0, 0, 0} {0, 0, 0} 0x0600C8C0 | | |-+ {852, 54, -603} {1981, 0, -16383} 0x00000000 | | | |-- {852, 54, 603} {-1981, 0, -16383} 0x00000000 | | | |-- {0, 0, 0} {0, 0, -16515} 0x00000000 | | | |-+ {846, 0, 0} {0, 0, -438} 0x00000000 | | | | --- {0, 0, 0} {0, 0, 0} 0x0600B050 | | | |-+ {718, 0, 0} {0, 4550, -25} 0x00000000 | | | | --- {0, 0, 0} {0, 0, 0} 0x0600B298 | | | --- {0, 0, 0} {0, 0, 0} 0x0600B760 | | |-- {0, 0, 0} {0, 0, -16516} 0x00000000 | | |-+ {846, 0, 0} {0, 0, -438} 0x00000000 | | | --- {0, 0, 0} {0, 0, 0} 0x0600BC08 | | |-+ {718, 0, 0} {0, -4550, -25} 0x00000000 | | | --- {0, 0, 0} {0, 0, 0} 0x0600BE30 | | --- {0, 0, 0} {0, 0, 0} 0x0600C2C8 | --+ {0, 0, 0} {0, 0, 0} 0x0600D510 | |-- {858, 0, 0} {0, 0, 0} 0x00000000 | |-- {-1222, -54, 0} {-32767, -32767, 0} 0x00000000 | |-- {0, 0, 0} {0, 0, -15396} 0x00000000 | --- {0, 0, 0} {0, 0, 0} 0x0600CDD8 |-- {0, 0, 0} {0, 0, -16383} 0x00000000 |-+ {567, 0, 0} {0, 0, 0} 0x00000000 | --- {0, 0, 0} {0, 0, 0} 0x0600E228 --- {0, 0, 0} {0, 0, 0} 0x0600E490 spinout@supernova:~/Desktop$ ./z64tree 262 ~/ROMS/ZELOOTMA.z64 object 262 |--ROM offset: 0x016e1000 |--size: 0x000205d0 bytes |--number of skeletons: 2 |--type of skeleton(s): common |-+skeleton 0: | |--offset: 0x0601E178 | |-+29 bones | --+ {13, 3511, -100} 0x00000000 | |-+ {0, 928, 0} 0x0601C7B8 | | |-+ {928, 0, -438} 0x0601CEE0 | | | --+ {1903, 0, 0} 0x0601CB58 | | | --- {1304, 0, 0} 0x0601CCA0 | | --+ {928, 0, 438} 0x0601D638 | | --+ {1903, 0, 0} 0x0601D2B0 | | --- {1304, 0, 0} 0x0601D3F8 | --+ {0, 0, 0} 0x00000000 | |-+ {0, 0, 0} 0x00000000 | | |-+ {2100, -200, 0} 0x00000000 | | | |-- {0, 0, 0} 0x060154E0 | | | --- {0, 0, 0} 0x06015B00 | | |-+ {1562, -100, -1089} 0x0601C130 | | | --+ {799, 0, 0} 0x0601BE98 | | | --+ {1079, 0, 0} 0x00000000 | | | |-- {0, 0, 0} 0x06015840 | | | --- {0, 0, 0} 0x06016118 | | |-+ {1562, -100, 1089} 0x0601C550 | | | --+ {807, 0, 0} 0x0601C2B8 | | | --- {1071, 0, 0} 0x06016340 | | |-- {2035, 0, 851} 0x06016658 | | |-- {1900, 0, 1184} 0x060164A0 | | |-- {2035, 0, -851} 0x06016568 | | |-- {1900, 0, -1184} 0x06016278 | | |-- {0, 0, 0} 0x060151F0 | | |-- {0, 0, 0} 0x06015380 | | --- {0, 0, 0} 0x0601BA78 | --- {0, 0, 0} 0x0601C6D8 |-+skeleton 1: |--offset: 0x060205C0 |-+29 bones --+ {0, 3540, 0} 0x00000000 |-+ {0, 928, 0} 0x0601C7B8 | |-+ {928, 0, -438} 0x0601CEE0 | | --+ {1903, 0, 0} 0x0601CB58 | | --- {1304, 0, 0} 0x0601CCA0 | --+ {928, 0, 438} 0x0601D638 | --+ {1903, 0, 0} 0x0601D2B0 | --- {1304, 0, 0} 0x0601D3F8 --+ {0, 0, 0} 0x00000000 |-+ {0, 0, 0} 0x00000000 | |-+ {2100, -200, 0} 0x00000000 | | |-- {0, 0, 0} 0x06015B00 | | --- {0, 0, 0} 0x060154E0 | |-+ {1562, -100, -1089} 0x0601C130 | | --+ {799, 0, 0} 0x0601BE98 | | --+ {1079, 0, 0} 0x00000000 | | |-- {0, 0, 0} 0x06015840 | | --- {0, 0, 0} 0x06016118 | |-+ {1562, -100, 1089} 0x0601C550 | | --+ {807, 0, 0} 0x0601C2B8 | | --- {1071, 0, 0} 0x06016340 | |-- {2035, 0, 851} 0x06016658 | |-- {1900, 0, 1184} 0x060164A0 | |-- {2035, 0, -851} 0x06016568 | |-- {1900, 0, -1184} 0x06016278 | |-- {0, 0, 0} 0x060151F0 | |-- {0, 0, 0} 0x06015380 | --- {0, 0, 0} 0x0601BA78 --- {0, 0, 0} 0x0601C6D8 Link to comment Share on other sites More sharing options...
spinout Posted April 9, 2011 Author Share Posted April 9, 2011 inb4 "DBL POST BAN PLS"; I'm adding something. libn64tool now supports MM Debug and OoT 1.0 US. z64tree has a cleaner (though UTF-8) output. spinout@supernova:~/Desktop$ ./z64tree 0x10 ~/ROMS/mm_debug.z64 object 16 ââ€Å“ââ€â‚¬ ROM offset: 0x01344000 ââ€Å“ââ€â‚¬ size: 0x0000d890 bytes ââ€Å“ââ€â‚¬ number of skeletons: 1 ââ€Å“ââ€â‚¬ type of skeleton(s): link ââ€â€Ã¢â€â‚¬ skeleton 0: ââ€Å“ââ€â‚¬ offset: 0x0600D878 ââ€â€Ã¢â€â‚¬ 21 bones ââ€â€Ã¢â€â‚¬ Limb 0 {-57, 3377, 0} 0x00000000, 0x00000000 ââ€Å“ââ€â‚¬ Limb 1 {0, 0, 0} 0x060049E0, 0x060049E0 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 2 {945, 0, 0} 0x00000000, 0x00000000 ââ€â€š ââ€Å“ââ€â‚¬ Limb 3 {-399, 69, -249} 0x06004C50, 0x06004C50 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 4 {1306, 0, 0} 0x06004F48, 0x06004F48 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 5 {1256, 5, 11} 0x06005190, 0x06005190 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 6 {-396, 76, 264} 0x060052A0, 0x060052A0 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 7 {1304, 0, 0} 0x060055D0, 0x060055D0 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 8 {1257, 6, 3} 0x06005818, 0x06005818 ââ€â€Ã¢â€â‚¬ Limb 9 {0, 21, -7} 0x00000000, 0x00000000 ââ€Å“ââ€â‚¬ Limb 10 {1392, -259, 0} 0x06005A78, 0x06005A78 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 11 {-298, -700, 0} 0x06005928, 0x06005928 ââ€Å“ââ€â‚¬ Limb 12 {0, 0, 0} 0x06008100, 0x06008100 ââ€Å“ââ€â‚¬ Limb 13 {1039, -172, 680} 0x06006A58, 0x06006A58 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 14 {919, 0, 0} 0x06006C38, 0x06006C38 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 15 {754, 0, 0} 0x06006EB8, 0x06006EB8 ââ€Å“ââ€â‚¬ Limb 16 {1039, -173, -680} 0x06006410, 0x06006410 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 17 {919, 0, 0} 0x060065E0, 0x060065E0 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 18 {754, 0, 0} 0x060067D8, 0x060067D8 ââ€Å“ââ€â‚¬ Limb 19 {978, -692, 342} 0x06008100, 0x06008100 ââ€â€Ã¢â€â‚¬ Limb 20 {0, 0, 0} 0x06006148, 0x06006148 spinout@supernova:~/Desktop$ ./z64tree 0x6 ~/ROMS/ZELOOTMA.z64 object 6 ââ€Å“ââ€â‚¬ ROM offset: 0x01047000 ââ€Å“ââ€â‚¬ size: 0x00013180 bytes ââ€Å“ââ€â‚¬ number of skeletons: 1 ââ€Å“ââ€â‚¬ type of skeleton(s): alpha ââ€â€Ã¢â€â‚¬ skeleton 0: ââ€Å“ââ€â‚¬ offset: 0x06011FC8 ââ€â€Ã¢â€â‚¬ 42 bones ââ€Å“ââ€â‚¬ Limb 0 {0, 3451, 40} {0.0°, 0.0°, 0.0°} 0x00000000 ââ€Å“ââ€â‚¬ Limb 40 {0, 0, 0} {0.0°, 90.0°, 0.0°} 0x00000000 ââ€â€š ââ€Å“ââ€â‚¬ Limb 39 {0, 0, 0} {0.0°, 90.0°, 0.0°} 0x00000000 ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 35 {266, -534, 5} {0.0°, 90.0°, 0.0°} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 33 {-266, -534, 5} {45.0°, 90.0°, 45.0°} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 31 {0, 0, 0} {0.0°, 0.0°, 269.8°} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 25 {1148, 0, 0} {0.0°, 0.0°, 0.3°} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 19 {1440, 0, 0} {0.0°, 0.0°, 270.0°} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 13 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600C528 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 12 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600C020 ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 30 {0, 0, 0} {0.0°, 0.0°, 269.8°} 0x00000000 ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 24 {1148, 0, 0} {0.0°, 0.0°, 0.3°} 0x00000000 ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 18 {1440, 0, 0} {0.0°, 0.0°, 270.0°} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 11 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600B9F0 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 10 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600B498 ââ€â€š ââ€Å“ââ€â‚¬ Limb 38 {0, 0, 0} {0.0°, 0.0°, 90.0°} 0x00000000 ââ€â€š ââ€Å“ââ€â‚¬ Limb 37 {1320, 0, 0} {0.0°, 0.0°, 90.0°} 0x00000000 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 36 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600C8C0 ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 34 {852, 54, -603} {10.9°, 0.0°, 270.0°} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 32 {852, 54, 603} {349.1°, 0.0°, 270.0°} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 29 {0, 0, 0} {0.0°, 0.0°, 269.3°} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 23 {846, 0, 0} {0.0°, 0.0°, 357.6°} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 9 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600B050 ââ€â€š ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 17 {718, 0, 0} {0.0°, 25.0°, 359.9°} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 8 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600B298 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 7 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600B760 ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 28 {0, 0, 0} {0.0°, 0.0°, 269.3°} 0x00000000 ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 22 {846, 0, 0} {0.0°, 0.0°, 357.6°} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 6 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600BC08 ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 16 {718, 0, 0} {0.0°, 335.0°, 359.9°} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 5 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600BE30 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 4 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600C2C8 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 27 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600D510 ââ€â€š ââ€Å“ââ€â‚¬ Limb 26 {858, 0, 0} {0.0°, 0.0°, 0.0°} 0x00000000 ââ€â€š ââ€Å“ââ€â‚¬ Limb 21 {-1222, -54, 0} {180.0°, 180.0°, 0.0°} 0x00000000 ââ€â€š ââ€Å“ââ€â‚¬ Limb 15 {0, 0, 0} {0.0°, 0.0°, 275.4°} 0x00000000 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 3 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600CDD8 ââ€Å“ââ€â‚¬ Limb 20 {0, 0, 0} {0.0°, 0.0°, 270.0°} 0x00000000 ââ€Å“ââ€â‚¬ Limb 14 {567, 0, 0} {0.0°, 0.0°, 0.0°} 0x00000000 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 2 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600E228 ââ€â€Ã¢â€â‚¬ Limb 1 {0, 0, 0} {0.0°, 0.0°, 0.0°} 0x0600E490 spinout@supernova:~/Desktop$ ./z64tree 0x1a ~/ROMS/ZELOOTMA.z64 object 26 ââ€Å“ââ€â‚¬ ROM offset: 0x010db000 ââ€Å“ââ€â‚¬ size: 0x0000df10 bytes ââ€Å“ââ€â‚¬ number of skeletons: 2 ââ€Å“ââ€â‚¬ type of skeleton(s): horse ââ€Å“ââ€â‚¬ skeleton 0: ââ€â€š ââ€Å“ââ€â‚¬ offset: 0x06000868 ââ€â€Ã¢â€â‚¬ 14 bones ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 0 0x00000000 ââ€â€š ââ€Å“ââ€â‚¬ Limb 1 0x060004C0 ââ€â€š ââ€Å“ââ€â‚¬ Limb 2 0x00000000 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 3 0x00000000 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 4 0x06000580 ââ€â€š ââ€Å“ââ€â‚¬ Limb 5 0x00000000 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 6 0x00000000 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 7 0x06000620 ââ€â€š ââ€Å“ââ€â‚¬ Limb 8 0x00000000 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 9 0x00000000 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 10 0x060006C0 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 11 0x00000000 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 12 0x00000000 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 13 0x06000760 ââ€â€Ã¢â€â‚¬ skeleton 1: ââ€Å“ââ€â‚¬ offset: 0x06009D74 ââ€â€Ã¢â€â‚¬ 47 bones ââ€â€Ã¢â€â‚¬ Limb 0 {0, 4820, -1965} 0x00000000 ââ€Å“ââ€â‚¬ Limb 1 {0, 505, -1338} 0x00000000 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 2 {0, 0, 0} 0x00000000 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 3 {1217, 0, 0} 0x00000000 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 4 {2387, 0, 0} 0x00000000 ââ€Å“ââ€â‚¬ Limb 5 {-3, 171, 1984} 0x060099BC ââ€Å“ââ€â‚¬ Limb 6 {0, 68, 710} 0x00000000 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 7 {0, 0, 0} 0x00000000 ââ€â€š ââ€Å“ââ€â‚¬ Limb 8 {1681, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 9 {2122, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 10 {1406, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 11 {1304, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 12 {1979, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 13 {0, 0, 0} 0x0600AC20 ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 14 {1338, 341, 756} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 15 {0, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 16 {605, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 17 {2419, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 18 {1459, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 19 {660, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 20 {0, 0, 0} 0x060009B0 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 21 {0, 0, 0} 0x06000BB0 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 22 {1338, 341, -756} 0x00000000 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 23 {0, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 24 {605, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 25 {2419, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 26 {1459, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 27 {660, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 28 {0, 0, 0} 0x06000DA0 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 29 {0, 0, 0} 0x06000FA0 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 30 {0, 0, 0} 0x0600B5E0 ââ€Å“ââ€â‚¬ Limb 31 {655, -151, -593} 0x00000000 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 32 {0, 0, 0} 0x00000000 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 33 {1123, 0, 0} 0x00000000 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 34 {2330, 0, 0} 0x00000000 ââ€â€š ââ€Å“ââ€â‚¬ Limb 35 {1573, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 36 {598, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 37 {0, 0, 0} 0x06001170 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 38 {0, 0, 0} 0x06001370 ââ€â€Ã¢â€â‚¬ Limb 39 {-655, -151, -593} 0x00000000 ââ€â€Ã¢â€â‚¬ Limb 40 {0, 0, 0} 0x00000000 ââ€â€Ã¢â€â‚¬ Limb 41 {1123, 0, 0} 0x00000000 ââ€â€Ã¢â€â‚¬ Limb 42 {2330, 0, 0} 0x00000000 ââ€Å“ââ€â‚¬ Limb 43 {1573, 0, 0} 0x00000000 ââ€â€š ââ€Å“ââ€â‚¬ Limb 44 {598, 0, 0} 0x00000000 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 45 {0, 0, 0} 0x06001540 ââ€â€Ã¢â€â‚¬ Limb 46 {0, 0, 0} 0x06001740 spinout@supernova:~/Desktop$ ./z64tree 0xa ~/ROMS/mm_debug.z64 object 10 ââ€Å“ââ€â‚¬ ROM offset: 0x01411000 ââ€Å“ââ€â‚¬ size: 0x00009940 bytes ââ€Å“ââ€â‚¬ number of skeletons: 1 ââ€Å“ââ€â‚¬ type of skeleton(s): common ââ€â€Ã¢â€â‚¬ skeleton 0: ââ€Å“ââ€â‚¬ offset: 0x06008318 ââ€â€Ã¢â€â‚¬ 30 bones ââ€â€Ã¢â€â‚¬ Limb 0 {0, 1012, 0} 0x00000000 ââ€Å“ââ€â‚¬ Limb 1 {0, 0, 0} 0x00000000 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 2 {0, 0, 0} 0x00000000 ââ€â€š ââ€Å“ââ€â‚¬ Limb 3 {124, 254, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 4 {0, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 5 {0, 0, 0} 0x06006FD8 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 6 {0, 0, 0} 0x06006D88 ââ€â€Ã¢â€â‚¬ Limb 7 {0, 0, 0} 0x00000000 ââ€â€Ã¢â€â‚¬ Limb 8 {0, 0, 0} 0x00000000 ââ€Å“ââ€â‚¬ Limb 9 {1514, 0, 0} 0x00000000 ââ€â€š ââ€Å“ââ€â‚¬ Limb 10 {1291, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 11 {1189, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 12 {0, 0, 0} 0x06006CA8 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 13 {0, 0, 0} 0x06006BA8 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 14 {0, 0, 0} 0x06006AA0 ââ€Å“ââ€â‚¬ Limb 15 {0, 0, 0} 0x06006960 ââ€Å“ââ€â‚¬ Limb 16 {722, 136, 412} 0x00000000 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 17 {0, 0, 0} 0x00000000 ââ€â€š ââ€Å“ââ€â‚¬ Limb 18 {1500, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€Å“ââ€â‚¬ Limb 19 {1672, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 20 {0, 0, 0} 0x06006640 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 21 {0, 0, 0} 0x06006750 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 22 {0, 0, 0} 0x06006860 ââ€â€Ã¢â€â‚¬ Limb 23 {722, 136, -412} 0x00000000 ââ€â€Ã¢â€â‚¬ Limb 24 {0, 0, 0} 0x00000000 ââ€Å“ââ€â‚¬ Limb 25 {1500, 0, 0} 0x00000000 ââ€â€š ââ€Å“ââ€â‚¬ Limb 26 {1672, 0, 0} 0x00000000 ââ€â€š ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 27 {0, 0, 0} 0x060073A8 ââ€â€š ââ€â€Ã¢â€â‚¬ Limb 28 {0, 0, 0} 0x06007298 ââ€â€Ã¢â€â‚¬ Limb 29 {0, 0, 0} 0x06007198 Link to comment Share on other sites More sharing options...
Zeth Ryder Posted April 27, 2011 Share Posted April 27, 2011 Looks great spinout! Also don't worry about double posting, you are the thread creator so that is totally fine. Link to comment Share on other sites More sharing options...
spinout Posted June 1, 2011 Author Share Posted June 1, 2011 What the hell, I might as well use this thread. ... copied youtube description ... I am rewriting the "animation editor" I wrote in python a month or so ago in C. It uses SDL, OpenGL, xdaniel's badrdp and, subsequently, libpng. No glu/glut crap. The console interface is a separate thread - though the threads both share the object. It doesn't actually edit the animations, yet. But the framework is there, mostly, I just need a way to select those gyroscope-like things which are at each joint. http://spinout182.com/z64anim/ Link to comment Share on other sites More sharing options...
Salvage66 Posted June 1, 2011 Share Posted June 1, 2011 Spinout this looks sweet! Link to comment Share on other sites More sharing options...
Zeth Ryder Posted June 1, 2011 Share Posted June 1, 2011 Wow, looking good. I'm guessing the cross hairs are for positioning and the circles are for rotation? Link to comment Share on other sites More sharing options...
spinout Posted June 2, 2011 Author Share Posted June 2, 2011 Wow, looking good. I'm guessing the cross hairs are for positioning and the circles are for rotation? Yes. Link to comment Share on other sites More sharing options...
spinout Posted June 8, 2011 Author Share Posted June 8, 2011 Link to comment Share on other sites More sharing options...
spinout Posted June 9, 2011 Author Share Posted June 9, 2011 http://spinout182.com/ar/z64anim-win32-binary.zip Drag and drop an object onto z64anim.exe - or run it from the command line with an object as the first variable. Oh, for the record, it was a pain in the ass to get this running in Windows. Link to comment Share on other sites More sharing options...
spinout Posted June 22, 2011 Author Share Posted June 22, 2011 Any feedback so far? I thought releasing a windows binary might stir some activity, but thus far it seems nobody has tried this program out. I need commentary; it's the only way I know what the users need improved. I currently am working on a obj library which will be used in this application to import and export bones. Support for link will come once that is complete, and creation of new animations, hierarchies, and entire objects will follow after that. Link to comment Share on other sites More sharing options...
DeathBasket Posted June 22, 2011 Share Posted June 22, 2011 I haven't really used it properly at the moment but it's looking good. Is saving implemented in the release? I opened the same object after saving and none of the changes I made was there any more. Other than that, would rotation editing be possible using the mouse? It's not necessary but it'd be nice. Link to comment Share on other sites More sharing options...
spinout Posted June 23, 2011 Author Share Posted June 23, 2011 I haven't really used it properly at the moment but it's looking good. Is saving implemented in the release? I opened the same object after saving and none of the changes I made was there any more. Other than that, would rotation editing be possible using the mouse? It's not necessary but it'd be nice. Saving is implemented, I don't know why it didn't work for you. I'll have to do more through testing. I don't think it would be that hard to implement rotation with the mouse, though it's going to go on the bottom of my list for now. I really need to add: Running without an object Switching which object is being edited Support for Link Reading and writing from and to a ROM Link to comment Share on other sites More sharing options...
spinout Posted June 27, 2011 Author Share Posted June 27, 2011 Display list "swapping" on-the-go: I've also implemented some other commands, but nothing all that big. There are still some stubs where I need to finish my code. Link to comment Share on other sites More sharing options...
Arcaith Posted June 27, 2011 Share Posted June 27, 2011 Sweet work man, can't wait to see this in action when the custom mtl commands are implemented Link to comment Share on other sites More sharing options...
Jason777 Posted June 27, 2011 Share Posted June 27, 2011 Awesome! I grow tiredsome of display list ports Link to comment Share on other sites More sharing options...
spinout Posted July 29, 2011 Author Share Posted July 29, 2011 Well, most commands are implemented. I'll try getting around to another windows binary soon... Here's the current built-in help to give a preview. spinout@supernova:~/Desktop/z64anim$ ./z64anim ~/z64e/object_sk2.zobj z64anim started... (z64anim) help Commands: help This help quit Exit z64anim load F B A S Load S bytes from file F at offset A as address B. If B, A, and S are ommited, it is assumed to load the entire file from base address 0x06000000 - which is what most objects use. Viewer control commands pause Pause playing the current animation play Resume playing the current animation dbg Enable viewing of 'picker' on mouse click step Step the current animation by one frame hideaxis Hide editor axis of each joint showaxis Show editor axis of each joint select-disable Disable selection of displaylists or editor axis select-enable Enable selection of displaylists or editor axis scale V Set the scale of the editor axis Animation commands anim-info List information on the current animation anim-list List all known animations anim-switch N Switch the current animation to animation N anim-next Switch to the next animation anim-rotations List all valid rotation indicies Skeleton commands skel-info Display skeleton information skel-reset Reset the entire skeleton to the state it was at when last opened or saved Display list control commands dl-list List all known display lists dl-switch N Change current limb's display list to display list N dl-curr Print current display list dl-export OBJ Export the current DL as wavefront .obj dl-import OBJ SIZ Import the wavefront .obj file in FILE at size SCALE Value control commands val-info Print information on currently selected value val-set V Set the current value val-index I Set the current rotation index val-series S I Set the series of animated rotation values starting at S degrees increasing by I degrees each frame val-seriesr S I Set the series of animated rotation values starting at S degrees increasing by I degrees for each frame for the first half of the frames, then decreasing by I back to S Selection control commands axis A Switch to axis A (either `x', `y' or `z') rot Switch to editing rotation trans Switch to editing translation dlist Switch to editing display list child Select the current limb's child, if possible parent Select the current limb's parent, if possible next Select the next limb, if possible previous Select the previous limb, if possible Misc commands save Apply all changes made adopt N Set the current limb's child to limb N Unimplemented commands: dl-export-all DIR Export all DLs as wavefront .obj dl-scale S Scale the current display list to scale S val-reset Reset the current value Window keyboard controls: w,s,a,d Move camera q,e Change camera speed r Reset camera u,j Increase/decrease animation playback speed h,k Change to next/previous animation (space) Pause/play animation y,i Increase/decrease current animation/translation value o,l Increase/decrease current animation index Window mouse controls: Right click a display list, a colored circle or an axis to select it as the current value. Use the keyboard controls or the console to edit that value. Left click and drag the mouse to rotate the camera (z64anim) I'll have to make some demonstration videos on how to use this thing for creating new objects, exploiting features in the object format (ex. copying parts of a model over, think 6-legged dodongo), and modifying animations. Someday I might code a GUI. Hah. Link to comment Share on other sites More sharing options...
Secant Posted July 29, 2011 Share Posted July 29, 2011 Someday I might code a GUI. Hah. Who are you and what have you done with spinout? This is looking rather impressive, looking forward to a new binary release for Windows (L)users like me. Link to comment Share on other sites More sharing options...
spinout Posted July 30, 2011 Author Share Posted July 30, 2011 WELL have at it z64anim-win32-07-29.zip Drag and drop an object onto it, or just double click it and type "load path/to/object.zobj". There's some weird error I was having when re-importing some display lists, making them not show up, I haven't been able to narrow down the problem yet though. I fixed some other windows bugs, though. Link to comment Share on other sites More sharing options...
spinout Posted September 13, 2011 Author Share Posted September 13, 2011 I'm posting this here as to not clutter up the URA project thread (which I must say is quite cluttered): objn64tool.exe [tt]Usage: objn64tool.exe [options] Options: -h, --help This help -v, --verbose Be verbose -x FILE, --linker=FILE Write symbols to file FILE (`-' for stdout) -i OBJ, --input=OBJ Convert obj file OBJ -o FILE, --output=FILE Write to file FILE -b ADDR, --base=ADDR Set base address to ADDR (ex: 0x06000000) -s SCALR, --scale=SCALE Multiply verts by SCALE Example: objn64tool.exe -v -x conf.ld -b 0x06000000 -s 2.0 -i test.obj -o test.bin Converts object `test.obj' to F3DEX2 binary `test.bin', scaling it by 2.0, using base address 0x06000000, writing a configuration to `conf.ld'[/tt] Supports RGB, RGBA png, RGB bmp. It reads materials strictly (i.e. differentiates between mapkd and mapka, sometimes incorrectly used by exporters), and builds mesh based on materials. Tr and Kd commands in the mtl map to SetPrimColor, etc... Throughly untested. Completely portable. Link to comment Share on other sites More sharing options...
spinout Posted September 13, 2011 Author Share Posted September 13, 2011 New binary - same url Changes: [tt] -N, --normalize-all Calculate vertex normals for entire model -n mat, --normalize=mat Calculate vertex normals for material mat (can be used multiple times)[/tt] EDIT: Still same url, new binary, fixes some bugs, doesn't warn when you have line commands. EDIT2: more fixes (there was a memory leak!) EDIT3: More fixes - should work properly by now (normals are not thoroughly tested) Link to comment Share on other sites More sharing options...
spinout Posted September 15, 2011 Author Share Posted September 15, 2011 I think the fixes in the latest release are worth a new post, also bumping topic (edit doesn't bump) objn64tool.exe New options: -h FILE / --header=FILE <- create a header that declares everything in ld script -a mat / --scroll=mat <- set material <mat> up to be a scrolled texture (scrolling done by an actor or something). To be used with -h and -X options. BMP reading is finally fixed. Link to comment Share on other sites More sharing options...
Arcaith Posted September 15, 2011 Share Posted September 15, 2011 Just as a matter of interest, would you consider making an object to .obj decompiler that produces along with the obj and texture output a batch file for quick re-importing? It would make doing small alterations to existing objects a lot simpler. Link to comment Share on other sites More sharing options...
spinout Posted September 16, 2011 Author Share Posted September 16, 2011 That's a very interesting idea. I suppose that I could modify z64anim to have a "mode" where it just acts as an obj dumper/importer. As for objn64tool, it now produces collision with the -c flag. Collision types are assigned either by material, group, shading group, or object, and specific members of that group can be excluded from the collision generation so you can do things like water without having a separate collision file. I'm going to add this exclusion feature to the mesh generator as well. More info: objn64tool(.exe) --help. The link remains the same. Link to comment Share on other sites More sharing options...
Recommended Posts