Skip to content

Extract compressed files from respawn.Vpk #205

@snake-biscuits

Description

@snake-biscuits

Tried https://github.com/Galaxy1036/pylzham and it didn't go well

maps/mp_angel_city.bsp.0053.bsp_lump is a nice small sample to test
uses a single VpkFilePart

>>> compressed_data
b'\xd4\x1f\xd3\x1f@\x04\x00\x00\x10\x03,\x03\xbd\x1f\x01\x80\x01q\x80\xc0\x03g\x00)'

Attempt 1

>>> filters = {
...     "compute_adler32_during_decomp": True,
...     "dict_size_log2": 20,
...     "unbuffered_decompression": True}
>>> lzham.decompress(compressed_data, 40, filters)
# raises "ValueError: Decompression failed with status code: 8", adler32 failure

Attempt 2

>>> filters = {
...     "compute_adler32_during_decomp": False,
...     "dict_size_log2": 20,
...     "unbuffered_decompression": True}
>>> lzham.decompress(compressed_data, 40, filters)
b'd\x1b\xfd\xbf\xady\x00\x00unbuffered_decompression\x00comp\x00e\x00'

Attempt 3

>>> lzham.decompress(compressed_data, 40, {"dict_size_log2": 20})
# raises "ValueError: Decompression failed with status code: 8", adler32 failure

Attempt 4

>>> lzham.decompress(compressed_data, 40, {
...     "dict_size_log2": 20,
...     "compute_adler32_during_decomp": False})
b'dV\xb2\xbf\xady\x00\x00compute_adler32_during_decomp\x00e\x00'

Attempt 5

>>> decompressor = lzham.LZHAMDecompressor(filters)
... decompressor.decompress(compressed_data, 40)
b'\x80\xbb\xb3\xbf\xady\x00\x00@LH\xc5\xady\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@R\xfe\xbf\xady\x00\x00'

Metadata

Metadata

Labels

archivesrelated to archives moduleenhancementNew feature or requestslow burnlots of work & will take a long time

Projects

Status

Todo: Research

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions