JUMP Ultimate Stars CharacterMoveFile

Discussion in 'NDS - ROM Hacking and Translations' started by Keshire, Nov 22, 2011.

Nov 22, 2011
  1. Keshire
    OP

    Member Keshire GBAtemp Regular

    Joined:
    Sep 8, 2007
    Messages:
    145
    Country:
    United States
    Update: 12/7/2012

    You can use ndstool/dslazy to dump the JUS rom.

    ALAR Tool handles aar archives. (Type 2 and 3, haven't seen any others)
    It will decompress any files in Type 2 archives by double clicking on them. (type 3 usually only contains type 2 aars and opens them natively by double clicking)
    You can export files as is from both types (though some files will be compressed)

    ALMT Parser handles ALMT move files for characters.
    It is command line (ALMTParser.exe "file.amt") and dumps out an xml file of the character's move data.
    It is currently a work in progress.
     

    Attached Files:

  2. Naxito

    Newcomer Naxito Advanced Member

    Joined:
    May 14, 2008
    Messages:
    63
    Location:
    Spain
    Country:
    Spain
    Nice! Thanks for this works.
     
  3. Keshire
    OP

    Member Keshire GBAtemp Regular

    Joined:
    Sep 8, 2007
    Messages:
    145
    Country:
    United States
    edit: links dead
     
  4. Naxito

    Newcomer Naxito Advanced Member

    Joined:
    May 14, 2008
    Messages:
    63
    Location:
    Spain
    Country:
    Spain
    5 different collision boxes? lol? great collision.

    I'm studying .aar files and i'll try to make a arr unpack/pack, but it's difficult...

    PD: sorry possible bad english..
     
  5. Keshire
    OP

    Member Keshire GBAtemp Regular

    Joined:
    Sep 8, 2007
    Messages:
    145
    Country:
    United States
    I'll see if I can find the aar tool source code. No promises though.
    It'd be great to see something to import into the aar files. The alar tool only does export.

    It'd make finding out what the other file formats do much much easier.
     
  6. Naxito

    Newcomer Naxito Advanced Member

    Joined:
    May 14, 2008
    Messages:
    63
    Location:
    Spain
    Country:
    Spain
    Thanks Keshire ^^, i'll wait your answer.
     
  7. Keshire
    OP

    Member Keshire GBAtemp Regular

    Joined:
    Sep 8, 2007
    Messages:
    145
    Country:
    United States
    link dead
     
  8. Naxito

    Newcomer Naxito Advanced Member

    Joined:
    May 14, 2008
    Messages:
    63
    Location:
    Spain
    Country:
    Spain
    Thanks, when I have something I'll notify ^^
     
  9. Keshire
    OP

    Member Keshire GBAtemp Regular

    Joined:
    Sep 8, 2007
    Messages:
    145
    Country:
    United States
    Looks like the format supports different collision types|rectangles|enable per timestep.
    There are also instances where there is no timestep. It's just one entry, and the array isn't 0xFFFF terminated.

    Code:
    //Flag Structures
    //HW doesn't support null terminated arrays
    struct _TextureID {ubyte ID[4]; };
    struct _BoundsIndex {word TimeStep; word Unknown; }; //Timestep|Unknown (I'm assuming the Unknown is the frame)
    struct _CollisionType {word TimeStep; word Type; }; //TimeStep|Type -- CollisionType[0xFFFF Terminated]
    struct _CollisionEnable {word TimeStep; word Enable; }; //TimeStep|Boolean -- CollisionEnable[0xFFFF Terminated]
    struct _CollisionRect {word TimeStep; word Rect[4]; }; //TimeStep|Rectangle -- CollisionRect[0xFFFF Terminated]
    struct _Marker {word TimeStep; word Unknown; }; //Timestep|Unknown -- Marker[0xFFFF Terminated]
    struct _2DPos {word Unknown[2]; }; //Should be X/Y coords
    struct _ParentLink {word Unknown; };
    struct _DrawPrio {ubyte Unknown[4]; };
    struct _EffectFlags {word Unknown; };
    struct _GenerateID {word TimeStep; byte TextureID[4]; }; //TimeStep|ID -- GenerateID[0xFFFF Terminated]
    
     
  10. Naxito

    Newcomer Naxito Advanced Member

    Joined:
    May 14, 2008
    Messages:
    63
    Location:
    Spain
    Country:
    Spain
  11. Keshire
    OP

    Member Keshire GBAtemp Regular

    Joined:
    Sep 8, 2007
    Messages:
    145
    Country:
    United States
    It's my yearly take a stab at Jump Ultimate files post. :D

    Spent a an hour peaking at various characters looking for patterns. And I think I have a handle on what the individual moves for each character are doing now. There seems to be a trunicated and expanded versions of each flag used. This was throwing me off FOREVER when I originally started looking at these. Now that I know what's going on I can write specifications for each flag.

    I'm also going to add move file functionality to the original ALAR tool since I still have the source. If anyone else wants the source let me know. The tool can open almost all the aar archives, and does some rudimentary sprite conversion via console switches.

    Hex Workshop structures. Converts to C nicely.
    Warning: Spoilers inside!
     
  12. Keshire
    OP

    Member Keshire GBAtemp Regular

    Joined:
    Sep 8, 2007
    Messages:
    145
    Country:
    United States
    Updates to the specification. Included a HexWorkshop function to auto parse some of the file.
    Tons of comments too. All that's left are the flags.

    Also,
    I need to catch compressed files on export in ALAR Tool. Some of the Move files are still compressed. Right now I have code written to re-save compressed move files if you re-open them in ALAR Tool after you export them.

    here is the new HexWorkshop structure file.
    Warning: Spoilers inside!

    There's enough here to fully parse some of the simpler moves. Such as being grabbed by Kinnikuman's suplex.

    The really wacky stuff is when I get to the characters that have helpers, or summon stuff. Like D. Gray Man and Saint Seya.
     
  13. Keshire
    OP

    Member Keshire GBAtemp Regular

    Joined:
    Sep 8, 2007
    Messages:
    145
    Country:
    United States
    Here's a parser. Drag an .amt file on it and it'll dump the amt file to xml for browsing. Right now it just dumps the flags and a count of the moves in the file. I've also included a test move (Ichigo's first Koma [bl_b_01|Bleach Battle Character 1])

    I'll be finishing this up as I get time. The source is available if anyone wants it.
    Need most recent .net to use it.
     
  14. 2ndApex

    Member 2ndApex GBAtemp Advanced Fan

    Joined:
    Jul 12, 2012
    Messages:
    672
    Country:
    United States
    Wow, sounds like a JUS moveset editor in the making. Is a Brawl minus style gameplay/balance mod in the realm of possibility?
     
  15. Keshire
    OP

    Member Keshire GBAtemp Regular

    Joined:
    Sep 8, 2007
    Messages:
    145
    Country:
    United States
    I haven't seen anything like damage or gravity yet. So far it looks like frames, timings, and collision. But I haven't had a chance to go through any of the really weird arrays yet, like the effects flags, Parent links, and NoteTracks.

    Hopefully once it's in an easily readable format and I can get it back to .amt from .xml I'll be able to figure out what most of this stuff does for sure. Assuming I don't lose interest for another year. The lack of community interest makes it seem like it's not worth my time.
     
  16. Keshire
    OP

    Member Keshire GBAtemp Regular

    Joined:
    Sep 8, 2007
    Messages:
    145
    Country:
    United States
    Here's a D. Gray Man move converted to xml. I haven't started populating the flags with data yet.

    I'm also not sure what's going on with the sub data. Those are flags that are not contained within the main block. The Short flags are 1 entry. Long flags are a null terminated array of entries.
     
  17. Keshire
    OP

    Member Keshire GBAtemp Regular

    Joined:
    Sep 8, 2007
    Messages:
    145
    Country:
    United States
    Started parsing and dumping the short flags. I have all of them other than the rectangle. A lot of the data I'm dumping as hex values (0xHEX).

    Could certainly use some feedback on this. Or let me know if there's a better place to post this stuff other than gbatemp...
     
  18. Keshire
    OP

    Member Keshire GBAtemp Regular

    Joined:
    Sep 8, 2007
    Messages:
    145
    Country:
    United States
    Did some cleaning of the output. Added everything but the NoteTrack flag (it's doing something wacky with the data). And made the data itself easier to read. Once I get the NoteTrack figured out I can work on turning the xml back into a usable movefile.
    I'm half convinced the the NoteTrack is sound events. GenerateID looks to be grabbing ID's outside the movest. So I assume those are creating sprites for attack effects and such. The Nodes look to be related to how big the Koma is. And there is move data per node.

    Support characters work the same way.

    Feedback and theories would sure be helpful.

    Here's an example of a move
    PHP:
            <Move29 TextureID="0x20480A00" Framerate="60" TimeLength="31" UnknownBoolean="0">
                <
    SP01>
                    <
    _TextureID>
                        <
    Time time="null">0x00480A00</Time>
                    </
    _TextureID>
                    <
    _CollisionType0>
                        <
    Time time="null">0</Time>
                    </
    _CollisionType0>
                    <
    _CollisionType1>
                        <
    Time time="null">258</Time>
                    </
    _CollisionType1>
                    <
    _CollisionEnable0>
                        <
    Time time="null">1</Time>
                    </
    _CollisionEnable0>
                    <
    _Marker>
                        <
    Time time="null">0</Time>
                    </
    _Marker>
                    <
    _BoundsIndex>
                        <
    Time time="0">81</Time>
                        <
    Time time="3">82</Time>
                        <
    Time time="6">83</Time>
                        <
    Time time="9">84</Time>
                        <
    Time time="12">85</Time>
                        <
    Time time="21">86</Time>
                        <
    Time time="24">87</Time>
                        <
    Time time="27">88</Time>
                        <
    Time time="31">88</Time>
                    </
    _BoundsIndex>
                    <
    _CollisionEnable1>
                        <
    Time time="0">0</Time>
                        <
    Time time="6">0</Time>
                        <
    Time time="9">1</Time>
                        <
    Time time="11">1</Time>
                        <
    Time time="13">1</Time>
                        <
    Time time="17">0</Time>
                    </
    _CollisionEnable1>
                    <
    _CollisionRect0>
                        <
    Time time="0">0xF60xFF0xCD0xFF || 0x0B0x000x000x00</Time>
                        <
    Time time="3">0xF50xFF0xCF0xFF || 0x0A0x000x000x00</Time>
                        <
    Time time="9">0xF30xFF0xCF0xFF || 0x080x000x000x00</Time>
                    </
    _CollisionRect0>
                    <
    _CollisionRect1>
                        <
    Time time="0">0xFE0xFF0xD30xFF || 0x3B0x000xF30xFF</Time>
                        <
    Time time="6">0xFE0xFF0xD30xFF || 0x3B0x000xF30xFF</Time>
                        <
    Time time="9">0xFE0xFF0xD30xFF || 0x3B0x000xF30xFF</Time>
                        <
    Time time="11">0x390x000xD10xFF || 0x5D0x000xF70xFF</Time>
                        <
    Time time="13">0x520x000xD10xFF || 0x760x000xF70xFF</Time>
                        <
    Time time="17">0x4B0x000xCE0xFF || 0x760x000xF70xFF</Time>
                    </
    _CollisionRect1>
                    <
    _NoteTrack>
                        <
    Time time="0">DATA NOT DEFINED</Time>
                        <
    Time time="9">DATA NOT DEFINED</Time>
                        <
    Time time="3">DATA NOT DEFINED</Time>
                        <
    Time time="8">DATA NOT DEFINED</Time>
                        <
    Time time="9">DATA NOT DEFINED</Time>
                        <
    Time time="10">DATA NOT DEFINED</Time>
                        <
    Time time="17">DATA NOT DEFINED</Time>
                        <
    Time time="21">DATA NOT DEFINED</Time>
                    </
    _NoteTrack>
                </
    SP01>
                <
    GN01>
                    <
    _2DPos>
                        <
    Time time="null">0010</Time>
                    </
    _2DPos>
                    <
    _ParentLink>
                        <
    Time time="null">1</Time>
                    </
    _ParentLink>
                    <
    _DrawPrio>
                        <
    Time time="null">022470</Time>
                    </
    _DrawPrio>
                    <
    _GenerateID>
                        <
    Time time="0">0x00000000</Time>
                        <
    Time time="3">0x47480A00</Time>
                        <
    Time time="9">0x3B480A00</Time>
                    </
    _GenerateID>
                </
    GN01>
                <
    GN02>
                    <
    _2DPos>
                        <
    Time time="null">0010</Time>
                    </
    _2DPos>
                    <
    _ParentLink>
                        <
    Time time="null">1</Time>
                    </
    _ParentLink>
                    <
    _DrawPrio>
                        <
    Time time="null">024070</Time>
                    </
    _DrawPrio>
                    <
    _GenerateID>
                        <
    Time time="0">0x00000000</Time>
                        <
    Time time="9">0x3C480A00</Time>
                    </
    _GenerateID>
                </
    GN02>
            </
    Move29>
    Edit: See first post for downloads.
     

Share This Page