FF7/Kernel/Low level libraries
Contents
PC to PSX comparison
The files and data formats used in the PSX version of FF7 and it's PC port are conceptually the same thing, and accomplish the same tasks. That being said, they both have wildly different formats. Both ofwhich were derived from a third original format that is also somewhat different that the first two.
The original PSX FF7 was created in part using Sony's Psy-Q development library. This library uses common formats that are "native" to the PSX. Often times a toolkit was used to convert common development- based formats, such as a TGA bitmap or a palleted GIF file, to something a little more suited to Psy-Q, which would be a TIM file.
During the porting process to the PC, some of the original artwork, (and artists for that matter), were no longer available. This resulted in the port team having to use the Psy-Q versions of many files,which were ill suited for the PC architecture. In our example, the TIM file was converted to a TEX file,which would be manipulated in the PC's video memory a little more efficiently. Sometimes the original artwork was available, such as the pictures of the characters within the menu, or the original MIDI files. Most often times it was not.
To make things a little more confusing, both systems also archive their data files in different ways, making the extraction and rendering of each file a bit of a bear. For the most part the data within each file is the same thing, just a little switched around. This manual will cover the more generic files first,and then common files used in each module.
Data Archives
To save space, quicken access time, and to obfuscate the file structure a little, most of the data files are stored in some kind of archive format. The archives remove such useful items as subdirectories and logical data placement. There is no real "native" format these are based on.
BIN archive data format
The BIN format comes as two different types. They both have the same extension, so one must open the file to see which format is which. They are best described as BIN Types and Bin-GZIP types
BIN Type Archives
These are uncompressed archives. The header is 4 bytes long and gives the length of the file without the header and then the data beyond that.
BIN-GZIP Type Archives
Unless otherwise noted, these have a 6 byte header. After this are many gziped sections concatenated together.
Offset | Length | Description |
---|---|---|
0x0000 | 2 bytes | Length of gzipped section 1 |
0x0002 | 2 bytes | Unknown |
0x0004 | 2 bytes | File number |
0x0006 | Varies | [0x1F8B080000000000...] - Gzip header 1 and data |
Varies | 2 bytes | Length of gzipped section 2 |
Varies | 2 | Unknown |
Varies | 2 bytes | File number |
Varies | Varies | [0x1F8B080000000000...] - Gzip header 2 and data |
... |
LZS Archives
The LZS format is used throughout the PSX version of Final Fantasy 7, often ending with the .lzs extension. LZS itself stands for Lempel-Ziv-Shannon-Fano, Satisitcal plus Arthimitic. It was originally devoped by Professor Haruhiko Okumura based on the work of Abraham Lempel and Jacob Ziv.
LGP Archives
The LGP file format is only used for the PC port of Final Fantasy 7. These are large "volume" type archives that hold most of the game's data. The archive holds no subdirectory information and can hold thousands of files. Unlike the BIN or LZS type files, this archive does reference the data within it by filename. It's file format is explained here.
Textures
A texture is just a picture that's placed into video memory. It is later manipulated by the engine and displayed on the screen. The native format of a texture was the Psy-Q TIM (Texture Image Map). This is used as the native format for the PSX version as well, with a few caveats explained below. The file can hold multiple color look up tables. This was one of the reasons why you needed a video card on the PC that could do palleted data even at high color depths.
TIM texture data format for PSX
The TIM files are found both on raw format and also within several archives, including BIN, LZS, or even MNU. The format proper has the ability to contain 24 bit bitmaps, but is not used in FF7. The Format was created because the PSX does not have direct access to it's VRAM, and must go through the GPU for any graphic access. A TIM file is a clean way to load a texture and color look up table into VRAM.
TEX texture data format for the PC
TEX files are texture files for the PC. The format for these files are located here.
File formats for 3D models
During the development process, 3D models contain a good deal of information needed by the artist every time they save or load the model. When the model is finished, it is often exported and broken up into smaller files with many unneeded attributes striped from them. When the models for FF7 were created, they were exported into Psy-Q's 3D library formats. These include resource data (.RSD), polygon data (.PLY), polygon groups (.GRP), materials (.MAT), textures (.TIM), skeletal hierarchy (.HRC), and animation (.ANM).
The models are handled differently between modules. The models in the "battle" modules have a different animation system than the field models. When the models were converted to the PC version, they were taken from Psy-Q to a more PC-friendly format, some are even the original, uncompiled, Psy-Q files.
Model Formats for PSX
To be written
Model Formats for PC
The PC models are stored in the LGP files in the /DATA directory. The names for the models were obfuscated a little. The data can be found in the Hierarchy files (.HRC), Resource data files (.RSD), and Polygon files (.P).