Skip to content

Half-Life file access and extraction library by Ryan "Nem" Gregg.

Notifications You must be signed in to change notification settings

RavuAlHemio/hllib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

================================
================================
 HLLib BY: RYAN "NEMESIS" GREGG
================================
================================

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

---- General Library Information ----
Date                     : January 22nd, 2017
Author                   : Ryan Gregg
                           Michael Mohr (Linux Port)
Title                    : HLLib
Build                    : 2.4.6
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.

  HLExtract.Net
  - Contains example .Net wrapper 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 2005, 2008 and 2010; no .NET extensions are used.

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

Correct HLExtract usage:
 -p <filepath>       (Package to load.)
 -d <path>           (Destination extraction directory.)
 -e <itempath>       (Item in package to extract.)
 -t <itempath>       (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 <path>           (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 <folder>		Change directory to <folder>.
  info <item>		Information on <item>.
  extract <item>	Extract <item> to <path> specified by -d.
  validate <item>	Validate <item> data.
  find <filter>		Search the current folder for <item> recursively.
  type <file>		Type <file> to the console.
  open <file>		Open nested package <file>.
  root			Change directory to root\.
  status		Package information.
  cls			Clear screen.
  help			Display help.
  exit			Exit HLExtract.

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

  v2.4.6
  - Modified VPF file support to handle the removal of a null terminator from the end of directory.

  v2.4.5
  - Added support for new SGA file format (v6).
  - Added support for new SGA file format (v7).

  v2.4.4
  - Fixed support for VPK file format (v1).

  v2.4.3
  - Added support for new VPK file format (v2).
  - Added SGA file support.
  - Added ZIP deflate support.

  v2.4.2
  - Fixed crash when opening VBSP files with no pak file lump.

  v2.4.1
  - Fixed crash in CProcStream.
  - Fixed VPK signature check.
  - Workaround for crash in .Net wrapper. 

  v2.4.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 (v1).
  - 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.

About

Half-Life file access and extraction library by Ryan "Nem" Gregg.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •