Giter VIP home page Giter VIP logo

bff's People

Contributors

pizzart avatar widberg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

pizzart sabemp

bff's Issues

Export Strategy

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.

Binary

The decompressed/depooled object from the BigFile without any post-processing.

JSON

A single JSON object representing the object

Rich

Common file formats representing the object. May be multiple files.

Directory Structure

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.

Overrides

Version Number Override: Version number to treat the BigFile as having.
Platform Override

Sound formats

Add support for Sound BigFiles (sdx) and aif (the Zouna one), joe, and vai. https://github.com/widberg/fmtk/wiki/Asobo-Audio-Formats.

  • Sound BigFiles
  • AIF
  • JOE
  • VAI

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.

TMI Mode

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.

Use - for stdin/stdout

cli subcommands that accept files should use - as the file name for stdin/stdout when applicable.

Name file support

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.

CPS support

Support Ubisoft compiled scripts and compiled script packages

Allow names with different backing types and hashing algorithms

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.

Optimizations and clean up

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 ?).

Try Your Best Mode

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.