Skip to content

MotionList Patching (Features)

Ali Hussain edited this page Sep 28, 2023 · 1 revision

Introduction

ARCropolis 3.9.0 introduces the ability to load and patch motion_list.bin files in a similar manner to prcx/prcxml in the format of a motdiff file. Using a motdiff patch will patch the motion_list.bin during runtime, in turn allowing the user to have multiple edits to a particular motion_list.bin file, should they feel like doing so. Like prcx/prcxml, motdiff files are not detected by ARC's conflict system.

In addition, ARCropolis 3.14.0 allows users to use decompiled motion_list.bin files, in the form of motion_list.yml, as a full replacement for the original motion_list.bin.

Process

The process requires yamlist.exe, which can be found here. It is also required to have a vanilla motion_list.bin along with the modified file. Be sure the names of the files are different as well.

Finally, it is recommended to have Labels.txt, which you can find here. Make sure to right click the link and Save as File.

To create a motdiff, place all files within the same directory and open Command Prompt. Afterwards, enter the following command:

yamlist diff <base motion_list>.bin <modified motion_list>.bin -l Labels.txt -o motion_list.motdiff

If done correctly, motion_list.motdiff should appear in the same folder. Adding -l Labels.txt is optional, but will show the proper names of everything instead of just their hash. Adding -o motion_list.motdiff is similarly optional, but it changed the output file name from the default diff.yml to motion_list.motdiff.

To create a full motion_list.yml, all you need is your motion_list.bin and (optionally) the Labels.txt from above. Then you can just run the following:

yamlist disasm <motion_list to decompile>.bin, -l Labels.txt -o motion_list.yml

Once again, -l Labels.txt and -o motion_list.yml are optional arguments for the same reason as above, though the default filename for disassembling is out.yml instead.

While multiple motion_list.ymls can be used for a single motion_list.bin file, only the last one discovered by ARCropolis will be used. This can be checked using the skyline logger: When it attempts to patch a motion_list.bin, ARCropolis will print every motion_list.yml file it finds, then warn the user if there were multiple and will state which one was the last applied:

[ARCropolis::loader] Patching "fighter/marth/motion/body/c00/motion_list.bin"
[ARCropolis::loader] motion_list.yml file(s) found!
[ARCropolis::loader] Replacing motion_list.bin with sd:/ultimate/mods/The WuBor Patch/fighter/marth/motion/body/c00/motion_list.yml.
[ARCropolis::loader] Replacing motion_list.bin with sd:/ultimate/mods/Enable With WuBor/fighter/marth/motion/body/c00/motion_list.yml.
[ARCropolis::loader] Multiple motion_list.yml files found for fighter/marth/motion/body/c00/motion_list.bin.
                     The last applied .yml file will be used.
[ARCropolis::loader] Motion List Patching finished, writing to file...

Please use that opportunity to deal with conflicts, as you may have unexpected issues arise when playing that character.

As a final note, motion_list.yml gets applied first, then any motion_list.motdiff patches get applied on top of that, so they are compatible with each other.