Re: Doom 3 (Xbox) .GOB file
Posted: Sun Jul 24, 2011 4:47 pm
Sorry for the necropost, but I feel like this is related. -- Is there any chance of a Jedi Academy-compatible version of this app? It crashes for me with JA gob files.
Code: Select all
/*****************************************
* GOB File System
*
* Purpose: Provide fast, efficient disk access on a variety of platforms.
* Implementation:
* The GOB system maintains two files -- GOB and GFC. The GOB file is actually
* an archive of many files split into variable size, compressed blocks. The GFC,
* GOB File Control, contains 3 tables -- a block table, basic file table, and
* extended file table. The block table is analogous to a DOS FAT. The basic
* file table contains a minimal set of file information to handle basic reading
* tasks. The extended file table is optionally loaded and contains additional
* file information. File names are case insensitive.
*
* Files can be read in a normal manner. Open, read, seek and close
* operations are all provided. Files can only be written in a single
* contiguous chunk of blocks at the end of an archive. Reads are processed
* through a configurable number of read ahead buffers to in an effort to
* minimize both reads and seeks. Other operations including delete, verify,
* access, and get size are also supported on files inside an archive.
*
* The system supports read profiling. By supplying a file read callback
* function, the library will output the block number of each read. This can
* be used rearrange block in the archive to minimize seek times. The
* GOBRearrange sorts files in an archive.
*
* Supports block based caching. Primarily aimed at caching files off a DVD/CD
* to a faster hard disk.
#define GOB_MAGIC_IDENTIFIER 0x8008
#define GOB_MAX_FILE_NAME_LEN 96
#define GOB_MAX_FILES (16*1024)
#define GOB_MAX_BLOCKS 32767
#define GOB_BLOCK_SIZE (64*1024)
#define GOB_BLOCK_ALIGNMENT 2048
#define GOB_MEM_ALIGNMENT 64
#define GOB_COMPRESS_OVERHEAD 1024
#define GOBMARKER_STARTBLOCK ('L' | 'B' << 8 | 'T' << 16 | 'S' << 24)
#define GOBMARKER_ENDBLOCK ('L' | 'B' << 8 | 'N' << 16 | 'E' << 24)