|
imported>Dinoguy1000 |
| (57 intermediate revisions by 6 users not shown) |
| Line 1: |
Line 1: |
| {{Format_Navigation}} | | {{GRAFPageHeader}} |
|
| |
|
| [[GRAFs|Back to index]]
| | == {{{file_extension}}} == |
| | {{GRAFPageMisc{{ {{{|subst:}}}#if: {{{format_type|}}} | {{{{{|subst:}}}!}}{{{format_type}}} }}{{ {{{|subst:}}}#if: {{{endian_order|}}} | {{{{{|subst:}}}!}}{{{endian_order}}} }}}} |
|
| |
|
| == {{{file_extension}}} ==
| | === Format Specifications === |
| | | {{GRAFPageFormat|1=<nowiki/> |
| ''' Format Type: ''' {{{format_type}}} <br>
| |
| ''' [http://en.wikipedia.org/wiki/Endianness Endian Order]: ''' {{{endian_order}}} <br>
| |
| ''' Date Posted: ''' {{{date_posted}}}
| |
| | |
| === Format Specifications === | |
| <tt><b> | |
| {{{format_specifications}}} | | {{{format_specifications}}} |
| </b></tt>
| | }} |
| | |
| | |
| === 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
| | === Notes and Comments === |
| | {{{notes}}} |
|
| |
|
| === MultiEx BMS Script === | | === MultiEx BMS Script === |
| {{{bms_script}}} | | {{{bms_script}}} |
|
| |
|
| === Supported by Programs === | | === Supported by Programs === |
| {{{programs}}} | | {{{programs}}} |
|
| |
|
| |
|
| === Documentation === | | === Documentation === |
| {{{documentation}}} | | {{{documentation}}} |
|
| |
|
| |
|
| === Games === | | === Games === |
| {{{games}}} | | {{{games}}} |
| | |
| | {{GRAFPageFooter}}<noinclude>[[Category:Templates|GRAFTemplate1]]</noinclude> |