Unvivtool
Single pass buffered read VIV/BIG decoder/encoder - CLI and Python module in C
Install / Use
/learn @bfut/UnvivtoolREADME
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).<br/>
The first four are variants of the same, the last is a precursor.
All are derived from EA IFF 85 (see [2]).<br/>
Archives can be arbitrarily large and may contain an unlimited number of entries.<br/>
Common file extensions are .VIV and .BIG.<br/>
Installation / Documentation
Command-line interface: /cli/README.md<br/> 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<br/> [2] J. Morrison (1985) "EA IFF 85" Standard for Interchange Format Files<br/> [3] B. F. (2024) Unofficial 0xFBC0 File Format Specification (.viv)
Information
unvivtool License: GNU General Public License v3.0+<br/> Website: https://github.com/bfut/unvivtool
Portions copyright, see each source file for more information.
