Skip to content

FreeMote v3.3

Compare
Choose a tag to compare
@UlyssesWu UlyssesWu released this 20 Aug 11:27
· 108 commits to master since this release

This is a stable release. Try latest build for new features.
If error occurs when using FreeMote tools, try unblocking FreeMote.Plugins.dll FreeMote.Plugins.x64.dll from properties.
Starting with this version, FreeMote requires .NET Framework 4.8 (instead of 4.7.2) to run.

What's New

  • Use -e (--encoding) in PsbDecompile and PsBuild to set encoding. (UTF-8 by default)
  • PSBv1 and MZS (ZStandard) shell support. Reference: GMWare.M2
  • Force set PSB type with --type in PsbDecompile.
  • When performing krkr to win spec conversion, handle timeline folder and skip unexisted icons in krkr motion PSB. #81 #89
  • Improve archive PSB extraction. #82
  • More hints. #84
  • Implement BC7 texture decode and encode (with BCnEncoder.NET) for nx PSB. #85
  • Audio: Fix OPUS export without intro+body pattern.
  • Improve MFL (fastLZ) shell support. #87
  • Support texture flip for PS3 RGBA8_SW textures. #87
  • EmtConvert command mdf is renamed to mpack (since it can pack/unpack MT19937 MDF/MFL/MZS, not only MDF). #87
    • mdf command will be removed in future versions.
  • Use -x {expire_suffix} in EmtConvert mpack to make EmtConvert try finding correct filenames when unpacking MT19937 shells.
    • For example, abc.txt is a file you extracted from xxx_info.psb.m and xxx_body.bin (without using PsbDecompile info-psb -a), and the xxx_info.psb.m.json contains "expire_suffix_list": [".scn.m"]. To unpack abc.txt, you can use: EmtConvert mpack -k {key} -l {len} abc.txt -x .scn.m. The mpack feature will then try filenames including abc.txt.scn.m abc.txt.scn abc.txt as a part of the decryption seed until the file is correctly decrypted or all cases failed.
    • That's because MT19937 shells require a correct seed (key + filename) to decrypt, while the filename must be the only correct one. However it can be abc.txt.scn.m abc.txt.scn abc.txt depending on file extension (txt), type (scn) and expire_suffix_list. So EmtConvert mpack (and PsbDecompile info-psb) will try all these combinations.
    • PsbDecompile info-psb will automatically get the expire_suffix_list from xxx_info.psb.m, but EmtConvert mpack has no chance to get them. Therefore, you should append -x .scn.m for EmtConvert. Otherwise, EmtConvert mpack will only try the input filename (abc.txt) which is not correct in this case (should be abc.txt.scn.m). Of course you can just rename abc.txt to abc.txt.scn.m to get correct results.
    • If you're not sure about the expire_suffix in -x {expire_suffix}, see the common cases table below.
info psb name common expire_suffix
image / font / motion / patch / config .psb.m
scenario .scn.m
voice / sound .psb
script .nut.m

Known issues

  • CI4, CI8 image combination should be implemented in later versions. #70
  • BC7 Texture encoding in this version (with BCnEncoder.NET) is quite slow (maybe a few minutes). Should be improved with a native lib or tool in later versions. #85
  • MXB shell for xbox should be implemented in later versions. #87

Swirls of Shamshir