widberg / bff Goto Github PK
View Code? Open in Web Editor NEWA GUI/CLI utility to work with Zouna file formats.
Home Page: https://bff.widberg.me/
License: MIT License
A GUI/CLI utility to work with Zouna file formats.
Home Page: https://bff.widberg.me/
License: MIT License
Pass a context around during binrw and serde operations.
choose binary, JSON, or rich and it will try to do the one you selected or fall back to a more basic one if that fails.
The decompressed/depooled object from the BigFile without any post-processing.
A single JSON object representing the object
Common file formats representing the object. May be multiple files.
USA1.DPC.d
|- manifest.json
|- objects
|- whatever_name_you_want.UserDefine_Z.d
| |- object.json
| |- data.txt
|- whatever_name_i_want.Mesh_Z.d
|- object.json
You can name the folders whatever you want since the object.json file has the object name.
Add a way to insert a message into padding somewhere near the top of the file when writing. By default, it could say something like "made with <3 by bff contributors (https://github.com/widberg/bff)". Optional of course.
Ubi uses BFXX. BS uses DBX.
Version Number Override: Version number to treat the BigFile as having.
Platform Override
Add support for Sound BigFiles (sdx) and aif (the Zouna one), joe, and vai. https://github.com/widberg/fmtk/wiki/Asobo-Audio-Formats.
We need PS ADPCM and NGC DSP codec support
Shaun White: World Tour for the Wii has a SoundStreams_WII.bin file. Shaun White for the PS2 has a bunch of sound formats LM1+LS1, SM1+SS1, and SP1. Plague Tale + others use Wwise PCK files.
Store extra info for byte-for-byte recreation. maybe call it too much information --tmi
could control a global setting cuz serde doesn't do args well. Also perfect is a strong word.
List of names used by an object
cli subcommands that accept files should use - as the file name for stdin/stdout when applicable.
De/serialize names as strings when possible. Allow loading name files and use the loaded names in output. Cli command for merging and generating name files. Allow dumping a name file when generating a BigFile using the deserialized names.
Support Ubisoft compiled scripts and compiled script packages
Auto-generate version info from git for the long version like dpc tool did.
The title says it all. Basic writing capabilities.
Ability to write nicknames for resources, save and load them as JSON
Make block offset optional and calculate it as needed. If it is supplied and insufficient then warn.
For some ungodly reason, different games use different algorithms for names. And newer games use 64 bit names.
Maybe make Name an enum of all the variants and have a global select which type of name is in use based on the version number. Using generics everywhere is going to get bad fast.
๐ฆ
Since bff is becoming a Zouna swiss army knife we might as well handle .psc files
Avoid recompressing resource bodies when writing to the pool
Parallelize reading/writing the actual BigFile file by only scanning for resource offsets the first time through and not actually reading/decompressing anything
Store binary versions of resources in a hidden folder and use those to avoid redoing work when importing if none of the exported files were modified.
Use arrayfire or similar for reverse crc
Use rayon for sorting and filtering in the GUI, and potentially other places
Use base64 for large byte arrays when serializing (https://docs.rs/serde_with/latest/serde_with/base64/index.html ?).
At least they'll display as strings even if we cant parse them.
Try every available object parser and use the first success. Only an error if all fail. Some way to evaluate a BigFile to see if an existing object form works for all objects of that type in the BigFile. Possibly another subcommand that tries to determine if any of the existing parsers work for every resource of a class in a collection of bigfiles of the same version.
Improve performance by not copying the model all the time and load materials
Earlier games don't use the _Z suffix on class names
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.