Skip to content
/ unvivtool Public

Single pass buffered read VIV/BIG decoder/encoder - CLI and Python module in C

License

Notifications You must be signed in to change notification settings

bfut/unvivtool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

unvivtool

unvivtool is a VIV/BIG decoder/encoder for BIGF, BIGH, and BIG4 archives. Available as command-line interface and Python extension module. Based on a dependency-free header-only library written in C89. Python bindings are written in CPython. Supported on Windows and Linux. Tested on macOS.

Purported VIV/BIG archives can contain faulty or manipulated information. unvivtool is designed to validate and recover data wherever possible. The decoder performs a single pass buffered read of the archive header only; content extraction is optional.

C/C++ developers can drop in the encoder/decoder or use data analysis functions directly from libnfsviv.h.

Features

  • memory usage typically peaks below 20 kB even for large archives; worst case ~25 MB
  • archive decode/encode and validation
  • encode files in specified order
  • support UTF8 filenames in archive
  • drag-and-drop CLI mode
  • option: auto-rename duplicated filenames on decode
  • option: extracts single file from archive (by index or filename)
  • option: dry‑run archive contents listing (no disk write)
  • option: encode to align file offsets to power-of-two boundary
  • option: support non-printable filenames in archive (Base16 representation)
  • option: decode/encode with set fixed directory entry length
  • Win98 compatible

File formats

The supported archive formats are called BIGF, BIGH, BIG4, 0x8000FBC0, and wwww (equals first 4 bytes).
The first four are variants of the same, the last is a precursor. All are derived from EA IFF 85 (see [2]).
Archives can be arbitrarily large and may contain an unlimited number of entries.
Common file extensions are .VIV and .BIG.

Installation / Documentation

Command-line interface: /cli/README.md
Python extension module: /python/README.md

References

The canonical BIGF format description was taken from [1]. Unofficial descriptions of fixed directory entry length, format deviations and 0x8000FBC0 (see [3]), own work.

[1] D. Auroux et al. (1998) The unofficial Need For Speed III file format specifications - Version 1.0
[2] J. Morrison (1985) "EA IFF 85" Standard for Interchange Format Files
[3] B. F. (2024) Unofficial 0xFBC0 File Format Specification (.viv)

Information

unvivtool License: GNU General Public License v3.0+
Website: https://github.com/bfut/unvivtool

Portions copyright, see each source file for more information.

About

Single pass buffered read VIV/BIG decoder/encoder - CLI and Python module in C

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published