Template:GRAFTemplate1: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
imported>Dinoguy1000
m (Reverted edits by 80.188.41.127 (Talk); changed back to last version by 85.92.55.33)
imported>Dinoguy1000
No edit summary
Line 16: Line 16:


=== Notes and Comments ===  
=== Notes and Comments ===  
'''Notes by Gregory''':
{{{notes}}}
 
1.
In the version 24, the file names are encrypted as XOR 0xBE.
 
2.
"BXP" + (byte) in all headers: In the version 24, the (byte)=3. 
 
3.
// ARCHIVE INDEX
    char {8}    - Header ("BXP" + (byte)2 + "INDX")
    uint64 {8}  - Unknown  '''<-----  this shuld be relative offset to the first "BXP.FILE"'''
I have used folloxing piece of C++ code:
  ArchiveOffset = 0x00;
  IndexOffset = 0x20;
  TreeOffset = 0x60;
  DirOffset = 0x80;
  DataOffset = DirOffset + (__int64*) &buffer[TreeOffset + 8];
  FileOffset = DirOffset + (__int64*) &buffer[IndexOffset + 8];
 
4.
There are some directories containing both files and sub-directories. In such case, the files are listed prior to the sub-directories.
I guess that the structure of directory is:
  {
    char {8}    - Header ("BXP" + (byte)2 + "SDIR")
    uint64 {8}  - Unknown Length/Offset
    byte {16}    - null
    uint32 {4}  - Number Of Sub-Directories in this directory
    uint32 {4}  - Number Of Files in this directory
    uint64 {8}  - Length Of Filename Directory Component (length of subDirName+null + fileNames+nulls)
    byte {16}    - null
    for (each file)
    {
      uint64 {8}  - Filename Offset (relative to the start of the filename directory)
      uint64 {8}  - null
      byte {16}    - CRC?
      uint32 {4}  - null
      uint32 {4}   - Unknown (1)    // or (0) - a switch?
      uint64 {8}   - null
      uint64 {8}   - File Length (not including the file header fields?)
      uint64 {8}  - File Offset (relative to the start of the file data)
    }
    for (each sub-directory)
    {
      uint32 {4}  - null  // Filename Offset (relative to the start of the filename directory)
      uint32 {4}  - Relative Offset To This Directory? (32) (relative to the start of this subDirEntry)
    }
    for (each entry)            // entry is file or sub-directory
    {
      uint32 {4}  -  Hash? 
    }
    for (each entry)
    {
      char {X}    - Filename                        // XOR 0xBE      in version 24
      byte {1}    - null Filename Terminator        // 0xBE          in version 24
    }
  }
 
5. I have successfuly extracted all files from the archive. Sound (*.ogg) files play well, however some other files (scripts) seems to be encrypted. Further I am wholly confused with CRCs, HASHs and Paddings for now, so I can not build an modified archive. However, I hope that my notes help you.
 
You may contact me at p4k@post.cz


=== MultiEx BMS Script ===  
=== MultiEx BMS Script ===  

Revision as of 21:30, 24 June 2006