Template:GRAFTemplate1

From XentaxWiki
Revision as of 09:27, 23 June 2006 by 85.92.55.33 (talk) (Notes and Comments)

Jump to: navigation, search
Jump to a listing by...
All Formats - Common Formats - Standard Formats - Malformed Pages
Platforms
Microsoft:
Xbox
Xbox 360
Nintendo:
GameCube
DS
Desktop:
PC
Sega:
Dreamcast
Sony:
PlayStation
PlayStation 2
PlayStation 3
PlayStation Portable
Type
Animation - Archive - Audio - Image - Mesh - Miscellaneous - Model - Video
Endianness
Little-endian - Big-endian
BMS Scripts
Pages Without a BMS Script

All Pages with Scripts:
Recently Added Scripts

Program Support
No Known Support

MultiEx Commander - Game Extractor

Format Specification Completion
Work in Progress - Almost Done - Completed
Compression and Encryption
No Compression or Encryption Used - Unknown Compression or Encryption Used

One or Both Used:
Compression Used - Both Compression and Encryption Used

Back to index

{{{file_extension}}}

Format Type:   {{{format_type}}}
Endian Order:   {{{endian_order}}}
Date Posted:   {{{date_posted}}}

Format Specifications

{{{format_specifications}}}


Notes and Comments

Notes by Gregory:

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

{{{bms_script}}}

Supported by Programs

{{{programs}}}


Documentation

{{{documentation}}}


Games

{{{games}}}