Skip to content

✨ Implement VAB formats and command-line utilities #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 42 commits into
base: main
Choose a base branch
from

Conversation

pleonex
Copy link
Member

@pleonex pleonex commented Feb 13, 2025

First format supported in the project: audio container VAB and their separated variants VH and VB.

Library features:

  • Model for the VAB header with full documentation.
  • Binary to VAB header reading / deserializer: Binary2VabHeader
  • Binary to container for the VAB format: BinaryVab2Container
  • Binary to container for the variant VB format: VinaryVabBody2Container
  • Serializers for the above converters with 100% identical generation.
  • Support version 5, 6 and 7
  • Automated snapshot testing
  • Algorithm to detect VAG format and audio data offset
    • Only for PSX standard VAGp format

Provide a pattern definition file for ImHex.

It also introduces a command-line for exporting and importing:

  • Export a VAB or VH+VB into a folder
  • Export taking the list of names from a YAML file
  • Import from the list of names into VAB or VH+VB
  • Report warnings and errors about file size limits
  • Command for testing reading, writing and identical outputs

Quality check list

  • Related code has been tested automatically or manually
  • Related documentation is updated
  • I acknowledge I have read and filled this checklist and accept the
    developer certificate of origin

Acceptance criteria

  • Extract VAG files from VAB/VB package
  • Extract VAB/VH metadata into human-editable text format
  • Pack exported files and metadata into VAG / VB+VH
  • Pack from a custom list of files
  • Original VAB/VB/VH should not be needed
  • Define maximum audio file data in metadata file (default exported file)
  • Support version 5, 6 and 7
  • Support importing VAG files with header but removing it first
  • Support VAG files with null headers
  • Support non-compliant VH and VAB formats
  • Documentation for the format and utility
  • Create manual test document

Follow-up work

Out-of-scope for this pull-request but interesting for the future:

  • VAG (de)serialization
  • SPU ADPCM codec (done for another project)

Example

Export:

hinoxutils audio vab export --vab S001.vab --output .\s001 --names files_s001.yml

Import:

hinoxutils audio vab import -i s001\files.yml --header s001\vab.yml --out-vab s001.vab

@pleonex pleonex added the enhancement New feature or request label Feb 13, 2025
@pleonex pleonex self-assigned this Feb 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant