Reversing Engineering Metroid Prime Hunters Animations

Discussion in 'NDS - ROM Hacking and Translations' started by ZeroJ, Nov 5, 2016.

  1. ZeroJ
    OP

    ZeroJ Newbie

    Newcomer
    2
    0
    Nov 5, 2016
    United States
    I'm working my up through understanding all the non-standard binary formats in MPH. Models, textures, materials, palettes... There's a scattered but decent amount of info on these around the web, and I'm knowledgeable enough to fill in some blanks and make good progress.

    https://www.dropbox.com/s/rwcrl1rjhxlxkd7/blastcap_Anim.bin?dl=0

    Now, I'm trying to unravel the mysteries of the animation format. So far, I've tentatively determined that this offset has the number of animations the file contains:

    [​IMG]

    Where do I go from here? I know that 3 is probably the number of animation blocks, and each block has a header indicating how big it is and/or how many frames it has. Then each frame has the data for which bone and its (relative? absolute?) transformation to take place on that frame. But I'm no good at looking at binary files and seeing these patterns.
     
    Last edited by ZeroJ, Nov 5, 2016
  2. FAST6191

    FAST6191 Techromancer

    pip Reporter
    23,355
    9,148
    Nov 21, 2005
    I have mainly only looked at the level format (for future random forum searchers then do a search for dsgraph, I recall sticking it on filetrip at one point) of this game but I do know a lot of the metroid prime hunters files and formats are seen as precursors to the formats we would see throughout the rest of the DS (and also sort of the gamecube and wii). The format for 3d animation in Nintendo's SDK was dubbed NSBCA, a basic, and somewhat incomplete, overview can be found http://llref.emutalk.net/docs/?file=xml/bca0.xml

    I don't know if this game would use bone/skeletal animations as opposed to vertex movement -- the DS 3d system was not really built for skeletal animation in the sense you are thinking of ( http://problemkaputt.de/gbatek.htm#ds3dpolygondefinitionsbyvertices ). It could happen here, especially if it was ported from something. On the other hand if it was built like a lot of later formats it will probably mirror the hardware commands quite well (processing abstract commands takes time and effort and all that).

    I had a quick skip through the following

    however it was not especially informative. A lot of what I did see though looked more like texture animation, and the door stuff looked closer to functions (rotation and translation) than anything more deformation based.

    Hope you get it done, please do share if you get somewhere as not a lot of stuff exists on the non NSBMD family of 3d formats on the DS.
     
  3. ZeroJ
    OP

    ZeroJ Newbie

    Newcomer
    2
    0
    Nov 5, 2016
    United States
    Thanks for the helpful reply. This incomplete model format (see the Bone/Node tab) suggests animation is accomplished in a 64-byte scratch space in the bone definition part of the model data in memory. I have yet to confirm this with RAM watch.

    I'm surprised to hear that about skeletal animation (not having dealt with the DS SDK formats before, either). There is bone and bone weight data in the MPH models (the Blastcap mushroom model has four bones: Dummy_Root, Skeleton_Root, stem, and head), so it would be odd if it wasn't used for animation. Looking at the NSBCA spec, it seems to apply transformations to entire objects (meshes)? I can't see that working for MPH models like the hunters, who only have a couple distinct meshes but lots of more intricate animations e.g. for running.

    I need to look more into the bone and bone weight sections of the model to understand this. Whatever I can figure out I will make sure to document somewhere. I'm afraid it might take someone smarter than me if even the the transformations in the standard SDK format haven't ever been figured out.