Jump to content

z64tree


spinout
 Share

Recommended Posts

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

  • Replies 53
  • Created
  • Last Reply

Top Posters In This Topic

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

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

  • 3 weeks later...
  • 1 month later...

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

  • 2 weeks later...

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

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

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

  • 1 month later...

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

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

  • 1 month later...

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

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

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

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

 Share


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.