Difference between revisions of "IMG archive"
(→Tools) |
(→Tools) |
||
Line 115: | Line 115: | ||
| style="text-align:center" | {{Icon|3}} {{Icon|VC}} {{Icon|SA}} || {{GTAF|524409|fastman92 IMG Console}} – by {{U|fastman92}} | | style="text-align:center" | {{Icon|3}} {{Icon|VC}} {{Icon|SA}} || {{GTAF|524409|fastman92 IMG Console}} – by {{U|fastman92}} | ||
|- | |- | ||
− | | style="text-align:center" | {{Icon|SA}} || {{GTAF|500814|IMG Limit Adjuster}} – by {{U|fastman92}} | + | | style="text-align:center" | {{Icon|SA}} || {{GTAF|500814|IMG & Stream Limit Adjuster}} – by {{U|fastman92}} |
<!-- | <!-- | ||
|- | |- |
Revision as of 11:17, 1 November 2012
GTA's most commonly used archive files are known by the extension .img
. They have a very simple format and currently exist in multiple versions.
Contents
Structure
Version 1 - GTA III & VC
Version 1 archives used in GTA III and Vice City, are actually split up into two files: the content directory (.dir
) and the actual archive (.img
).
The directory is a list of files each with name, offset and size of the file. The values for offset and size have to be multiplied by 2048, since files are aligned to 2 KB boundaries. This means that even a file with only 123 byte content will take up 2 KB in the archive. Files are stored (usually) unsorted, uncompressed and linear (no directory tree).
First you have to find out the number of entries (n).
Just divide the filesize of the .dir
file by 32 and you will get it.
There is no Header, like in V2 (San Andreas) Files!
Entry: (repeated n times)
4 byte - DWORD - offset of file inside archive (in blocks) 4 byte - DWORD - size of file (in blocks) 24 byte - CHAR[24] - name of file
The .img
file itself has no special structure or header, just all the files in 2 KB blocks.
This format was also used in the PC version of Bully: Scholarship Edition.
Version 2 - GTA SA
Version 2 archives, introduced with GTA San Andreas, combine .dir
and .img
files into one .img
file. The directory has the same format as in version 1, but is located at the beginning of the archive. Files are again aligned to 2 KB boundaries. File offsets are relative to the start of the whole archive, not to the end of the file list.
Header
Size of 8 bytes
4 byte - CHAR[4] - 4 byte - DWORD - Number of files on list (n)
Entry
Size of 32 bytes
4 byte - DWORD - File offset, in blocks 2 byte - WORD - Size, second priority in blocks 2 byte - WORD - Size, first priority in blocks 24 byte - CHAR[24] - File name (0x00) terminated.
If Size First Priority is NOT zero, it will be used as file size, else Size Second Priority will be used.
A major drawback of this format is the complicated extendability. If you have to add many files, it might happen that you run out of space for the directory, and have to move the first file(s) to the end.
Binary IPL files
Groups of binary IPL such as (countn2_stream0.ipl, countn2_stream1.ipl, countn2_stream0.ipl, countn2_stream3.ipl ...) have to be stored in continuous space in IMG archive, otherwise game will crash when loading. If countn2_stream0.ipl is on position 2048 and it takes 4096 bytes, then countn2_stream1.ipl must be on position 6144. If countn2_stream1.ipl was on position 8192 for instance and 6144 to 8192 bytes contained some random data then a game will crash during loading (about 55%).
Version 3 - GTA IV
GTA IV introduced yet another .img
file format. Not only the format is new, also there can be encrypted archive headers (see below). The internal IMG parser of the game works with 2 kb buffers, which means that the 2 kb bounds from earlier versions (blocks) are still present, yet optional.
IMG Header
The header of an unencrypted file always has a size of 20 bytes.
4 byte - DWORD - Identifier (0xA94E2A52 if the archive is not encrypted) 4 byte - DWORD - Version (always 3, if not the format would be differ) 4 byte - DWORD - Number of Items 4 byte - DWORD - Table Size (in bytes) 2 byte - WORD - Size of Table Items (needs to be always 0x10) 2 byte - WORD - Unknown
IMG Table
The table holds information about the items. Each item header has a size of 16 bytes .
4 byte - DWORD - Itemsize (in bytes) 4 byte - DWORD - Resource type 4 byte - DWORD - Offset (in blocks) 2 byte - WORD - Used Blocks 2 byte - WORD - Padding
Item Names' length will be calculate as :
Table Size - (Number of Items * Item Size)
Next that string will be split by '\x0'
A resource type is identified by the 4b DWORD value:
- 0x01: Generic
- 0x08: Texture archive
- 0x20: Bounds
- 0x6E: Model file
- 0x24: xpfl
Encryption
The header and directory (table) of IMG archives can be encrypted. This is usually the case if the 4 byte identifier at the start of the file seems invalid. Decryption is done via 16 repetitions of AES-128 in ECB mode.
Additional archives
It is possible to add additional IMG archives to the current default ones. The following examples are lines that can be added anywhere in either the default.dat or gta*.dat files.
CDIMAGE MODELS\FOO.IMG
| |
IMG MODELS\FOO.IMG
|
Where FOO can be any name. The FOO.IMG (and FOO.DIR for GTA III and Vice City) must be created and placed within the ..\models
folder in these examples. This method is primarily used for modifying version 2 of San Andreas, as well as for storing assets (models/textures/etc.) used in total conversions.
By default GTA San Andreas is able to load max of 8 archives (3 standard archives gta3.img, gta_int.img, player.img and 5 archives defined within default.dat or gta.dat). Using more than 8 archives crashes the game, although this can be fixed with fastman92's IMG Limit Adjuster.
Tools
ImgEd – by Dan Strandberg | |
IMG Manager – by xmen | |
GTAGarage: Spark – by aru | |
IMG Tool – by Spooky | |
G-IMG – by REspawn | |
GTAForums: fastman92 IMG Console – by fastman92 | |
GTAForums: IMG & Stream Limit Adjuster – by fastman92 | |
GTAForums: GTA Stories IMG Tool – by HackMan128 | |
SparkIV – by aru | |
OpenIV – by GooD-NTS | |
Shadow-Mapper – by Prince-Link |
Libraries
Version 2 only
Version 3 only
Grand Theft Auto IV | |
---|---|
File Formats | .dat • .gxt • .ide • .img • .ipl • .nod • .sco • .rpf • .rrr • .wad • .wbd/.wbn • .wdd • .wdr • .wft • .whm • .wpl • .wtd |
Documentation | Audio • Bink Video • Cryptography • Cutscenes • GXT Text • Image listing • Keycodes • Map Listing • Native functions • Paths • Radar Blips • Radio Stations • Saves • Scenarios • VTable • Weapons |
Tools | ASI Loader • ENBSeries • G-Texture • GIMS IV • Ingame WPL Editor • IV Needle • OpenIV • SparkIV • XLiveLess • WPL Manager • X Mod Installer Alice • C++ Script Hook • .NET Script Hook • Scocl |
Tutorials | Importing Textures with OpenIV • Importing Textures with SparkIV |
Modifications | GTA Connected • Gostown IV • Four Multiplayer • IV Multiplayer • CitizenMP:IV Reloaded |
Useful links | Community portal • Discussion forums • Modding forums • Mods on GTAGarage.com |