Obscure HVP: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
imported>Ikskoks
imported>Ikskoks
Line 12: Line 12:
=== Format Specifications ===  
=== Format Specifications ===  


<tt><b>
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
char {11}&nbsp;&nbsp;&nbsp; - Signature <font color="purple">(HV PackFile)</font> <br>
<pre>
byte {1}&nbsp;&nbsp;&nbsp;&nbsp; - null <br>
// HVP file format
uint32 {4}&nbsp;&nbsp; - <font color="red"> '' Unknown '' </font> <br>
// Obscure 1 (PC)
uint32 {4}&nbsp;&nbsp; - <font color="red"> '' Unknown <font color="purple">(8)</font> '' </font> <br>
 
uint32 {4}&nbsp;&nbsp; - Number Of Files and Directories <br>
 
uint32 {4}&nbsp;&nbsp; - Number Of Files only <br>
// header
uint32 {4}&nbsp;&nbsp; - Directory Length <font color="purple">(not including all these archive header fields)</font> <br>
12 bytes (char) - signature + null // "HV PackFile"
uint64 {8}&nbsp;&nbsp; - <font color="red"> '' Unknown '' </font> <br>
4 bytes (uint32) - archive type  // 196608 - without CRC check
<br>
                                // 196609 - with CRC check
<font color="blue"> ''' // for each entry ''' </font> <br>
4 bytes (uint32) - unknown  // 3 or 8
: uint32 {4}&nbsp;&nbsp; - Length Of Entry <font color="purple">(including this field)</font> <br>
4 bytes (uint32) - number of files and directories
: byte {1}&nbsp;&nbsp;&nbsp;&nbsp; - Entry Type Indicator 1 <font color="purple">(0=dir, 1=file)</font> <br>
4 bytes (uint32) - number of files
: uint32 {4}&nbsp;&nbsp; - Entry Type Indicator 2 <font color="purple">(0=dir, 1=file)</font> <br>
4 bytes (uint32) - directory size
<br>
 
: <font color="blue"> ''' if (entryType == dir){ ''' </font> <br>
if archive_type == 196609:
:: uint32 {4}&nbsp;&nbsp; - Number Of Files/SubDirectories In This Directory <br>
    4 bytes (uint32) - header CRC32
:: byte {1}&nbsp;&nbsp;&nbsp;&nbsp; - Directory Name Length <br>
    4 bytes (uint32) - directory CRC32
:: char {X}&nbsp;&nbsp;&nbsp;&nbsp; - Directory Name <br>
endif
:: <font color="blue"> ''' } ''' </font> <br>
 
<br>
 
: <font color="blue"> ''' else if (entryType == file){ ''' </font> <br>
// directory
:: uint32 {4}&nbsp;&nbsp; - Compressed Size <br>
number_of_entries *
:: uint32 {4}&nbsp;&nbsp; - Decompressed Size <br>
{
:: uint32 {4}&nbsp;&nbsp; - <font color="red"> '' Hash or something? '' </font> <br>
  4 bytes (uint32) - entry size (including this field)
:: uint32 {4}&nbsp;&nbsp; - File Offset <br>
  1 byte (uint8) - entry type indicator (0=dir, 1=file)
:: uint32 {4}&nbsp;&nbsp; - Filename Length <br>
  4 bytes (uint32) - entry type indicator 2 (0=dir, 1=file)
:: char {X}&nbsp;&nbsp;&nbsp;&nbsp; - Filename <br>
 
:: <font color="blue"> ''' } ''' </font> <br>
  if entry_type == dir:
<br>
      4 bytes (uint32) - number of files/subdirectories in this directory
byte {X}&nbsp;&nbsp;&nbsp;&nbsp; - File Data <br>
  1 byte (uint8) - directory name length
<br>
  x bytes (char) - directory name
</b></tt>
  endif
 
  else if entry_type == file:
      4 bytes (uint32) - compressed file size
  4 bytes (uint32) - uncompressed file size
  4 bytes (uint32) - unknown hash
  4 bytes (uint32) - file offset
  4 bytes (uint32) - filename length
  x bytes (char) - filename
  endif
}
 
 
// data
number_of_files *
{
  x bytes - file data  // compressed with ZLIB
}
</pre>
</div>


=== Notes and Comments ===  
=== Notes and Comments ===  

Revision as of 21:55, 26 September 2022

Choose archive extension:

HVP

  • Format Type : Archive
  • Endian Order : Big Endian
  • Signature : HV PackFile


Format Specifications

// HVP file format
// Obscure 1 (PC)


// header
12 bytes (char) - signature + null // "HV PackFile"
4 bytes (uint32) - archive type  // 196608 - without CRC check
                                 // 196609 - with CRC check
4 bytes (uint32) - unknown  // 3 or 8
4 bytes (uint32) - number of files and directories
4 bytes (uint32) - number of files
4 bytes (uint32) - directory size

if archive_type == 196609:
    4 bytes (uint32) - header CRC32
    4 bytes (uint32) - directory CRC32
endif


// directory
number_of_entries *
{
   4 bytes (uint32) - entry size (including this field)
   1 byte (uint8) - entry type indicator (0=dir, 1=file)
   4 bytes (uint32) - entry type indicator 2 (0=dir, 1=file)
   
   if entry_type == dir:
       4 bytes (uint32) - number of files/subdirectories in this directory
	   1 byte (uint8) - directory name length
	   x bytes (char) - directory name
   endif
   
   else if entry_type == file:
       4 bytes (uint32) - compressed file size
	   4 bytes (uint32) - uncompressed file size
	   4 bytes (uint32) - unknown hash
	   4 bytes (uint32) - file offset
	   4 bytes (uint32) - filename length
	   x bytes (char) - filename
   endif
}


// data
number_of_files *
{
   x bytes - file data  // compressed with ZLIB
}

Notes and Comments

  • This file format uses ZLIB compression and CRC32 validation.
  • HVP extension is shortcut for "Hydravision PackFile".

Games

List of games using this file format:

  • Obscure (*.HVP) (PC / XBOX)
  • Obscure 2 (*.HVP)

QuickBMS Script

Not written yet.

Compatible Programs