Difference between revisions of "RenderWare"
Line 1: | Line 1: | ||
{{File-stub}} | {{File-stub}} | ||
{{TocRight}} | {{TocRight}} | ||
− | '''RenderWare''' (RW for short) is the graphics engine used by GTA III, Vice City and San Andreas | + | '''[https://en.wikipedia.org/wiki/RenderWare RenderWare]''' (RW for short) is the graphics engine by ''Criterion Software'' that was licensed and used by ''Rockstar games'' for their titles Manhunt, [[GTA III]], [[GTA_VC|Vice City]] and [[GTA_SA|San Andreas]], just as for various [https://en.wikipedia.org/wiki/List_of_RenderWare_games other games]. GTA III's portable successors ''[[GTA_LCS|Liberty City Stories]]'' and ''[[GTA_VCS|Vice City Stories]]'' use the [[Leeds Engine|Rockstar Leeds engine]] that is almost a clone of the original RenderWare engine, which was already influenced by Rockstar Game's custom engine called [[RAGE]], which was used in the later titles [[GTA_IV|GTA IV]] and [[GTA V]]. |
− | |||
− | Liberty City Stories and Vice City Stories use the [[Leeds Engine|Rockstar Leeds engine]] that is almost a clone of | ||
− | == | + | ==Versioning== |
− | + | Each GTA game was linked against a certain version of the RenderWare engine. The following table gives an overview over the different versions that apply to GTA. | |
{| class="wikitable" | {| class="wikitable" | ||
Line 38: | Line 36: | ||
|} | |} | ||
− | + | On binary level, versions are used in different cases, most notably the ''library identifier stamp'' found in RenderWare's binary stream files. The stamp contains the version and build number of the RW library that wrote the file. It is a number that appears in the form <code>0xVJNBB</code>, where V (3 bits) is the Renderware version, J (4 bits) is the major revision, N (4 bits) is the minor revision and B (6 bits) is the binary revision. Version 3.6.0.3 for instance would be encoded as <code>0x36003</code>. The library build is <code>0xFFFF</code> in all versions used by GTA. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | The | ||
− | |||
− | |||
− | |||
− | The library build is 0xFFFF in all versions used by GTA. | ||
To make the library ID stamp, <code>0x30000</code> is subtracted from the version first and then packed as follows (where D is the 16 bit build number): | To make the library ID stamp, <code>0x30000</code> is subtracted from the version first and then packed as follows (where D is the 16 bit build number): | ||
Line 92: | Line 77: | ||
</source> | </source> | ||
− | === | + | ==Binary Streams== |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | The most notable part of the engine when used in a modding context are the [[RenderWare binary stream file|binary stream files]], which contain either the games geometry ([[DFF]]) or it's textures ([[TXD]]). | |
− | + | {{N|4|SA|VC|3}} |
Revision as of 22:47, 21 January 2017
Contents |
RenderWare (RW for short) is the graphics engine by Criterion Software that was licensed and used by Rockstar games for their titles Manhunt, GTA III, Vice City and San Andreas, just as for various other games. GTA III's portable successors Liberty City Stories and Vice City Stories use the Rockstar Leeds engine that is almost a clone of the original RenderWare engine, which was already influenced by Rockstar Game's custom engine called RAGE, which was used in the later titles GTA IV and GTA V.
Versioning
Each GTA game was linked against a certain version of the RenderWare engine. The following table gives an overview over the different versions that apply to GTA.
III | Vice City | San Andreas | |
PS2 | 3.1.0.0 | 3.3.0.2 | 3.6.0.3 |
PC | 3.3.0.2 | 3.4.0.3 | 3.6.0.3 |
Xbox | 3.5.0.0 | 3.5.0.0 | 3.6.0.3 |
Android | 3.4.0.5 | 3.4.0.5 | 3.6.0.3 |
On binary level, versions are used in different cases, most notably the library identifier stamp found in RenderWare's binary stream files. The stamp contains the version and build number of the RW library that wrote the file. It is a number that appears in the form 0xVJNBB
, where V (3 bits) is the Renderware version, J (4 bits) is the major revision, N (4 bits) is the minor revision and B (6 bits) is the binary revision. Version 3.6.0.3 for instance would be encoded as 0x36003
. The library build is 0xFFFF
in all versions used by GTA.
To make the library ID stamp, 0x30000
is subtracted from the version first and then packed as follows (where D is the 16 bit build number):
VVJJ JJNN NNBB BBBB DDDD DDDD DDDD DDDD
Version 0x36003
build 0xFFFF
for instance is encoded as 0x1803FFFF
.
Version 3.1.0.0 and before had no binary revision and build number and the library ID stamp was just 0x00000VJN
(no 0x30000
subtracted).
Version 3.1.0.0 for instance would be encoded as 0x00000310
.
Version 3.1.0.1 (used in some GTA III files, build FFFF
) on the other hand is encoded as 0x0401FFFF
.
To find out what version a file has when reading, RW checks the upper 16 bits and assumes the old format when they're zero.
These C example functions pack and unpack library ID stamps:
RwUInt32
libraryIDPack(RwUInt32 version, RwUInt32 build)
{
if(version <= 0x31000)
return version>>8;
return (version-0x30000 & 0x3FF00) << 14 | (version & 0x3F) << 16 |
(build & 0xFFFF);
}
RwUInt32
libraryIDUnpackVersion(RwUInt32 libid)
{
if(libid & 0xFFFF0000)
return (libid>>14 & 0x3FF00) + 0x30000 |
(libid>>16 & 0x3F);
return libid<<8;
}
RwUInt32
libraryIDUnpackBuild(RwUInt32 libid)
{
if(libid & 0xFFFF0000)
return libid & 0xFFFF;
return 0;
}
Binary Streams
The most notable part of the engine when used in a modding context are the binary stream files, which contain either the games geometry (DFF) or it's textures (TXD).
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 |