Obscure HVP: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
imported>WATTO
No edit summary
 
imported>Ikskoks
 
(78 intermediate revisions by 2 users not shown)
Line 3: Line 3:
Choose archive extension:
Choose archive extension:


== HVP, 001 ==  
== HVP ==  


* ''' Format Type ''':    Archive <br>  
* ''' Format Type ''':    Archive <br>  
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Big Endian <br>  
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Big Endian <br>  
* ''' Signature ''':    HV PackFile <br>




=== 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; - Header <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>
uint32 {4}&nbsp;&nbsp; - Directory Length <font color="purple">(not including all these archive header fields)</font> <br>
uint64 {8}&nbsp;&nbsp; - <font color="red"> '' Unknown '' </font> <br>
<br>
<font color="blue"> ''' // for each entry ''' </font> <br>  
: uint32 {4}&nbsp;&nbsp; - Length Of Entry <font color="purple">(including this field)</font> <br>
: byte {1}&nbsp;&nbsp;&nbsp;&nbsp; - Entry Type Indicator 1 <font color="purple">(0=dir, 1=file)</font> <br>
: uint32 {4}&nbsp;&nbsp; - Entry Type Indicator 2 <font color="purple">(0=dir, 1=file)</font> <br>
<br>
: <font color="blue"> ''' if (entryType == dir){ ''' </font> <br>
:: uint32 {4}&nbsp;&nbsp; - Number Of Files/SubDirectories In This Directory <br>
:: byte {1}&nbsp;&nbsp;&nbsp;&nbsp; - Directory Name Length <br>
:: char {X}&nbsp;&nbsp;&nbsp;&nbsp; - Directory Name <br>
:: <font color="blue"> ''' } ''' </font> <br>
<br>
: <font color="blue"> ''' else if (entryType == file){ ''' </font> <br>
:: uint32 {4}&nbsp;&nbsp; - Compressed Size <br>
:: uint32 {4}&nbsp;&nbsp; - Decompressed Size <br>
:: uint32 {4}&nbsp;&nbsp; - <font color="red"> '' Hash or something? '' </font> <br>
:: uint32 {4}&nbsp;&nbsp; - File Offset <br>
:: uint32 {4}&nbsp;&nbsp; - Filename Length <br>
:: char {X}&nbsp;&nbsp;&nbsp;&nbsp; - Filename <br>
:: <font color="blue"> ''' } ''' </font> <br>
<br>
byte {X}&nbsp;&nbsp;&nbsp;&nbsp; - File Data <br>
<br>
</b></tt>


=== MultiEx BMS Script ===
// Big Endian


Not written yet<br><br>
 
// header
12 bytes (char) - signature + null // "HV PackFile"
4 bytes (uint32) - archive type  // 196608 - without CRC32 check
                                // 196609 - with CRC32 check
4 bytes (uint32) - number of main level directories
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=directory, 1=file)
 
  if entry_type == directory:
      4 bytes (uint32) - compression flag (always 0 for directories)
      4 bytes (uint32) - number of files/subdirectories in this directory
      4 bytes (uint32) - directory name length
      x bytes (char) - directory name
  endif
 
  else if entry_type == file:
      4 bytes (uint32) - compression flag (0=uncompressed, 1=compressed)
      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  // can be compressed with ZLIB
}
</pre>
</div>


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


* Uses ZLib compression
* This file format uses '''ZLIB''' compression and '''CRC32''' validation.
* Game validates CRC32 only for header and for directory.
* HVP extension is shortcut for "'''Hydravision PackFile'''".
 
=== Games ===
List of games using this file format:
* ObsCure / Obscure: Learn about Fear (*.HVP) (PC / XBOX)
 
=== QuickBMS Scripts ===
 
* [https://github.com/bartlomiejduda/Tools/blob/master/NEW%20Tools/ObsCure/Obscure_HVP_script.bms Obscure_HVP_script.bms]
 
=== Compatible Programs ===
 
* [[Game Extractor|Game Extractor]]
* [https://forum.xentax.com/download/file.php?id=18860 unHVP]
 
=== See Also ===
* [[Obscure 2 HVP|Obscure 2 HVP (xentax wiki)]]
<br><br>
<br><br>
=== Compatible Programs ===


* [[Game Extractor|Game Extractor]]<br>
 
 
[[Category:Complete Complete|Obscure HVP]]
[[Category:Platform PC|Obscure HVP]]
[[Category:CE Compressed|Obscure HVP]]
[[Category:Format_Archive | Type: Archive]]
[[Category:Extension_hvp | Extension: hvp]]
[[Category:ZLIB compression]]
[[Category:CRC32]]
[[Category:File Format]]

Latest revision as of 23:41, 12 December 2022

Choose archive extension:

HVP

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


Format Specifications

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

// Big Endian


// header
12 bytes (char) - signature + null // "HV PackFile"
4 bytes (uint32) - archive type  // 196608 - without CRC32 check
                                 // 196609 - with CRC32 check
4 bytes (uint32) - number of main level directories
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=directory, 1=file)
   
   if entry_type == directory:
       4 bytes (uint32) - compression flag (always 0 for directories)
       4 bytes (uint32) - number of files/subdirectories in this directory
       4 bytes (uint32) - directory name length
       x bytes (char) - directory name
   endif
   
   else if entry_type == file:
       4 bytes (uint32) - compression flag (0=uncompressed, 1=compressed)
       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  // can be compressed with ZLIB
}

Notes and Comments

  • This file format uses ZLIB compression and CRC32 validation.
  • Game validates CRC32 only for header and for directory.
  • HVP extension is shortcut for "Hydravision PackFile".

Games

List of games using this file format:

  • ObsCure / Obscure: Learn about Fear (*.HVP) (PC / XBOX)

QuickBMS Scripts

Compatible Programs

See Also