HLLib icon indicating copy to clipboard operation
HLLib copied to clipboard

Reads Valve GCF/NCF/etc archives

================================

HLLib BY: RYAN "NEMESIS" GREGG

================================

=========================== Library/Author Information:

---- General Library Information ---- Date : November 1st, 2010 Author : Ryan Gregg Michael Mohr (Linux Port) Title : HLLib Build : 2.4.0 Email address : [email protected] (Ryan Gregg) [email protected] (Michael Mohr) Home page / Website : http://nemesis.thewavelength.net/

---- Library Construction Information ---- Written In : C, C++

====== Other:

The library contains four folders:

Bin

  • Contains library and example program binaries.

HLExtract

  • Contains example program source code.

HLLib

  • Contains library source code.

Lib

  • Contains library C/C++ Header and Inline Files.

Sln

  • Contains Visual Studio solutions.

The project files are for Visual Studio .NET 2003 and 2005; no .NET extensions are used.

================ HLExtract Usage:

Correct HLExtract usage: -p (Package to load.) -d (Destination extraction directory.) -e (Item in package to extract.) -t (Item in package to validate.) -l[d][f] [filepath] (List the contents of the package.) -f (Defragment package.) -c (Console mode.) -s (Silent mode.) -m (Use file mapping.) -q (Use quick file mapping.) -v (Allow volatile access.) -o (Don't overwrite files.) -r (Force defragmenting on all files.) -n (NCF file's root path.)

Example HLExtract usage: HLExtract.exe -p "C:\half-life.gcf" -d "C:\backup" -e "root\valve\models" -e "root\valve\config.cfg" HLExtract.exe -p "C:\half-life.gcf" -c -m -q -v HLExtract.exe -p "C:\half-life.gcf" -lf "C:\half-life.txt" -m -s HLExtract.exe -p "C:\half-life.gcf" -m -f

Console Commands (Interactive console mode):

dir [filter] Directory listing. cd Change directory to . info Information on . extract Extract to specified by -d. validate Validate data. find Search the current folder for recursively. type Type to the console. open Open nested package . root Change directory to root. status Package information. cls Clear screen. help Display help. exit Exit HLExtract.

================== Library Changelog:

v2.3.0

  • Added support for GCF files larger than 4 GB.

v2.3.0

  • Added support for x64.
  • Added Visual Studio 2010 solution.
  • Added Visual Studio 2008 solution.
  • Removed Visual Studio 2003 solution.

v2.2.0

  • Added support for packages larger than 4 GB.

v2.1.2

  • Added support for new VBSP file format.

v2.1.1

  • Added support for new VPK file format.
  • Added VPK file validation.
  • Fixed crash when closing VPK files.

v2.1.0

  • Added VPK file support.

v2.0.11

  • Added VBSP .lmp support.
  • Fixed support for files over 2 GB.

v2.0.10

  • Added Last Version Played attribute to NCF file.
  • Fixed change to directory entry folder terminator.

v2.0.9

  • Added Last Version Played attribute to GCF file.

v2.0.8

  • Improved GCF version check.
  • Fixed fragmentation header checksum after defragment.

v2.0.7

  • Added different search string comparisons.
  • Added Visual Studio 2005 solution.
  • Improved package type tests.

v2.0.6

  • Added generic write support to mapping interface.
  • Added no recurse option to FindFirst()/FindNext().
  • Improved package item attribute consistency.
  • Fixed GCC visibility support.
  • Fixed unnecessary GCF bounds check.
  • Fixed BSP unused lump check.

v2.0.5

  • Added Linux support.
  • Fixed near infinite find next recursion.

v2.0.4

  • Fixed bug in GCF file defragmentation progress.

v2.0.3

  • Added NCF file support.

v2.0.2

  • Added GCF file defragmentation.
  • Added fragmentation property to GCF files.
  • Added Dark Messiah VBSP support.
  • Fixed hlPackageCreateStream() bug.
  • Fixed CMapping::GetTotalMemoryUsed() calculation.
  • Fixed PAK file path parsing.
  • Improved error messages.
  • Improved file mapping performance.

v2.0.1

  • Added memory tracking.
  • Improved view management.
  • Fixed memory mapping bug.
  • Fixed user data bug in proc reader.
  • Fixed WAD file GetImageData() bug.
  • Fixed default mapping stream view size.
  • Fixed a minor memory leak.

v2.0.0

  • Rewrote entire library.
  • Open packages from anywhere (files, memory, abstract streams).
  • Get package and item attributes.
  • Stream package data.
  • Validate package data.
  • Added a C wrapper.
  • Improved and optimized package loading code.
  • Improved package detection.

v1.1.8

  • Added CXZPFile support.

v1.1.7

  • Added Source engine BSP support.

v1.1.6

  • Added mipmap level option to CWADFile.

v1.1.5

  • Improved CWADFile file support.

v1.1.4

  • Improved detection of corrupt packages.

v1.1.3

  • Extended CGCFFile.
  • Extended CFileMapping and CPrimitiveFileMapping to allow for volatile access.
  • Fixed CPackageUtility::Extract() bug caused by illegal characters.
  • Files of size 0 B are now treated as valid files.

v1.1.2

  • Extended CPackage.
  • Extended CMappedPackage.
  • Improved error messages for system calls.

v1.1.1

  • Fixed last error not being set in CMappedPackage::Open().

v1.1.0

  • Rewrote mapping code to be more flexible.
  • Packages located on disk or in memory can now be loaded.
  • Optimized file mapping.
  • Fixed CPackage::Root bug.
  • Fixed CGCFFile::GetFileSizeOnDisk() bug.

v1.0.4

  • Fixed CPackage memory leak.
  • Fixed CMappedPackage initialization bug.
  • Fixed CMappedPackage deinitialization bug.
  • Changed CDirectoryItem::Parent to a CDirectoryFolder.
  • Extended CWADFile.
  • Added CBSPFile which acts like CWADFile on a BSP's textures.

v1.0.3

  • Extended CWADFile.
  • Changed GetFileSizeEx() to GetFileSize() (Not all versions of Windows supported the former).

v1.0.2

  • Extended CPackage.
  • Extended CGCFFile.
  • Converted from bool to BOOL.
  • HLLib now used by GCFScape.

v1.0.1

  • Added callback functionality to CPackageUtility::Extract().
  • Extended CGCFFile.
  • Minor bug fixes.

v1.0.0

  • Original build.

============================== Program Copyright-Permissions:

See the lgpl.txt (HLLib) and gpl.txt (HLExtract) files contained in the distribution.