Difference between revisions of "GXT"

From GTAMods Wiki
Jump to navigation Jump to search
(GTA2 Format)
(Add gxt file links for IV, SA, VCS, LCS)
 
(111 intermediate revisions by 23 users not shown)
Line 1: Line 1:
A '''GXT''' file contains almost all text that are displayed on the screen of GTA2 and above. The files are located in the <code>text</code> folder. An entire list of all entries is available with [[Mission_Scripting_%28Overview%29#Sanny_Builder|Sanny Builder]].
+
{{TocRight}}
 +
A '''G'''TA Te'''xt''' (''GXT'') file is a file that contains strings that are presented to the player in GTA2 and above. Their placement differs between games, but GXT files are usually located in a <code>text</code> directory in the game installation folder. In games other than [[GTA 2]], there is one GXT file for each language, but the number of GXT files does not necessarily match the number of supported languages.
  
=File Stub=
+
== Purpose ==
 +
GXT files act as dictionaries that map short, symbolic strings (or some other unique value) to longer strings. Programmers use only the short key strings (such as "GM_OVR"), and then before these strings are shown to the user they are replaced with translated versions in their own language – "Game Over" if the user selected the English language. This allows the game to be easily translated into other languages without the need for major code changes: translators can simply translate the game text into the correct language and strings from the new language's GXT file will be used if the player selects that language.
  
Each GXT-File can contain certain tables with subtables and entries.
+
== File format ==
 +
=== GTA 2 ===
 +
GTA 2's GXT files begin with a header followed by a ''TKEY'' block and then a ''TDAT'' block. The TKEY block contains an array of entries that give the offset and name of the corresponding entry in the TDAT table. The TDAT entry contains the text that will be displayed in the game.
  
==San Andreas Format==
+
{|class="wikitable" style="max-width: 64em;"
 +
!colspan="3" |Header
 +
|-
 +
!Offset ||Type ||Description
 +
|-
 +
|0x00 ||char[3] ||style="width: 100%;" |<code>GBL</code>
 +
|-
 +
|0x03 ||char ||
 +
* <code>E</code>: English
 +
* <code>F</code>: French
 +
* <code>G</code>: German
 +
* <code>I</code>: Italian
 +
* <code>S</code>: Spanish
 +
* <code>J</code>: Japanese
 +
|-
 +
|0x04 ||word ||File version, always ''100''
 +
|-
 +
!colspan="3" |Block 1 (TKEY)
 +
|-
 +
|0x06 ||char[4] ||<code>TKEY</code>
 +
|-
 +
|0x0A ||dword ||Size of TKEY block
 +
|-
 +
|0x0E ||TKEY[n] ||Array of TKEY entries, where n is the number of entries. All entries are sorted in alphabetical order.
 +
|}
 +
<div style="margin-left: 3em;">
 +
{|class="wikitable" style="max-width: 64em;"
 +
|+ style="text-align: left;" |TKEY ({{Hint|0xC|12}} bytes):
 +
!Offset ||Type ||style="width: 100%;" |Description
 +
|-
 +
|0x00 ||dword ||TDAT entry offset. The value is relative to the location of the first entry of the array, which is, in absolute term, size of TKEY block + 22.
 +
|-
 +
|0x04 ||char[8] ||TDAT entry name
 +
|}
 +
</div>
 +
 
 +
The absolute location of the TDAT block is the size of TKEY block + 14.
 +
 
 +
{|class="wikitable" style="max-width: 64em;"
 +
!colspan="3" |Block 2 (TDAT)
 +
|-
 +
!Offset ||Type ||style="width: 100%;" |Description
 +
|-
 +
|0x00 ||char[4] ||<code>TDAT</code>
 +
|-
 +
|0x04 ||dword ||Size of TDAT block
 +
|-
 +
|0x08 ||TDAT[n] ||Array of TDAT entries, where n is the number of entries. Entries are not sorted in alphabetical order but their order comes from the order of their entry in the GXT source file.
 +
|}
 +
<div style="margin-left: 3em;">
 +
{|class="wikitable" style="max-width: 64em;"
 +
|+ style="text-align: left;" |TDAT (m * 2 bytes):
 +
!Offset ||Type ||style="width: 100%;" |Description
 +
|-
 +
|0x00 ||wchar_t[m] ||An array of wide characters (2 bytes per character) to be displayed in the game, where m is the number of characters. The array is terminated by a null character (<code>0x0000</code>). The location of the entry in absolute term is TDAT entry offset + size of TKEY block + 22.
 +
 
 +
Characters beginning with 0x21 denote gang dialogue:
 +
* <code>0x216B</code>: Krishna
 +
* <code>0x216C</code>: Loony
 +
* <code>0x216D</code>: Russian
 +
* <code>0x216E</code>: Neutral
 +
* <code>0x2170</code>: Police
 +
* <code>0x2172</code>: Redneck
 +
* <code>0x2173</code>: Scientist
 +
* <code>0x2179</code>: Yakuza
 +
* <code>0x217A</code>: Zaibatsu
 +
|}
 +
</div>
 +
 
 +
=== GTA III ===
 +
GTA III's GXT files are identical to those of GTA 2, except that they do not have headers – they start with the TKEY block instead. There is also no special treatment of characters starting with <code>0x21</code> in TDAT entries.
 +
 
 +
The Xbox version of Vice City uses this format as well.
 +
 
 +
=== GTA VC/LCS/VCS ===
 +
In Vice City, Vice City Stories and Liberty City Stories, there is a new ''TABL'' block which precedes the TKEY block. The Xbox version of Vice City uses the GTA III format.
 +
 
 +
{|class="wikitable" style="max-width: 64em;"
 +
!colspan="3" |Block 1 (TABL)
 +
|-
 +
!Offset ||Type ||style="width: 100%;" |Description
 +
|-
 +
|0x00 ||char[4] ||<code>TABL</code>
 +
|-
 +
|0x04 ||dword ||Size of TABL block
 +
|-
 +
|0x08 ||TABL[n] ||Array of TABL entries, where n is the number of entries. All entries are sorted in alphabetical order except the first one, <code>MAIN</code>.
 +
|}
 +
<div style="margin-left: 3em;">
 +
{|class="wikitable" style="max-width: 64em;"
 +
|+ style="text-align: left;" |TABL ({{Hint|0xC|12}} bytes):
 +
!Offset ||Type ||style="width: 100%;" |Description
 +
|-
 +
|0x00 ||char[8] ||TKEY entry name
 +
|-
 +
|0x04 ||dword ||TKEY entry offset. The value is absolute.
 +
|}
 +
</div>
 +
 
 +
The absolute location of the TKEY block is simply the TKEY entry offset. The TKEY block format is slightly different for the first block named <code>MAIN</code>. Hover over the dotted lines for information specific to that block. All other blocks follow the format shown below.
 +
 
 +
{|class="wikitable" style="max-width: 64em;"
 +
!colspan="3" |Block 2 (TKEY)
 +
|-
 +
!Offset ||Type ||style="width: 100%;" |Description
 +
|-
 +
|{{Hint|0x00|Omit for MAIN}} ||char[8] ||TKEY entry name
 +
|-
 +
|{{Hint|0x08|0x00 for MAIN}} ||char[4] ||<code>TKEY</code>
 +
|-
 +
|{{Hint|0x0C|0x04 for MAIN}} ||dword ||Size of TKEY block
 +
|-
 +
|{{Hint|0x10|0x08 for MAIN}} ||TKEY[n] ||Array of TKEY entries, where n is the number of entries. All entries are sorted in alphabetical order.
 +
|}
 +
<div style="margin-left: 3em;">
 +
{|class="wikitable" style="max-width: 64em;"
 +
|+ style="text-align: left;" |TKEY ({{Hint|0xC|12}} bytes):
 +
!Offset ||Type ||style="width: 100%;" |Description
 +
|-
 +
|0x00 ||dword ||TDAT entry offset. The value is relative to the location of the first entry of the array, which is, in absolute term, TKEY entry offset + size of TKEY block + {{Hint|16|12 for MAIN}}.
 +
|-
 +
|0x04 ||char[8] ||TDAT entry name
 +
|}
 +
</div>
  
===Header===
+
The absolute location of the TDAT block is the TKEY entry offset + size of TKEY block + {{Hint|16|8 for MAIN}}.
 +
 
 +
{|class="wikitable" style="max-width: 64em;"
 +
!colspan="3" |Block 3 (TDAT)
 +
|-
 +
!Offset ||Type ||style="width: 100%;" |Description
 +
|-
 +
|0x00 ||char[4] ||<code>TDAT</code>
 +
|-
 +
|0x04 ||dword ||Size of TDAT block
 +
|-
 +
|0x08 ||TDAT[n] ||Array of TDAT entries, where n is the number of entries. Entries are not sorted in alphabetical order but their order comes from the order of their entry in the [[#External links|GXT source file]].
 +
|}
 +
<div style="margin-left: 3em;">
 +
{|class="wikitable" style="max-width: 64em;"
 +
|+ style="text-align: left;" |TDAT (m bytes):
 +
!Offset ||Type ||style="width: 100%;" |Description
 +
|-
 +
|0x00 ||wchar_t[m] ||An array of wide characters (2 bytes per character) to be displayed in the game, where m is the number of characters. The array is terminated by a null character (<code>0x0000</code>). The characters are based on the character table in the fonts.txd file, which mostly follows ASCII. The location of the entry in absolute term is TDAT entry offset + size of TKEY block + 16.
 +
|}
 +
</div>
  
The header contains data about the tables and their subtables.
+
=== GTA SA/IV ===
 +
Each GXT file contains certain tables with entries. And each entry has a unique CRC identifier and a normal text.
  
INT32  - 4b  - Version? (Allways 0x080004)
+
==== Header ====
CHAR[4] - 4b  - TABL
+
The header contains information about the GXT version.
  
===Table Block===
+
INT16  - 2b  - Version (4)
 +
INT16  - 2b  - Number of bits per character (8: ASCII, 16: UTF-16)
  
 +
==== Table Block ====
 
The ''Table Block'' contains data about the subtables and their offsets.
 
The ''Table Block'' contains data about the subtables and their offsets.
  
 +
CHAR[4] - 4b  - TABL
 
  INT32  - 4b  - Blocksize
 
  INT32  - 4b  - Blocksize
 
   
 
   
Line 26: Line 177:
 
The Offset of the subtable points to an 8-byte Char Array with the subtable's name, followed by TKEY. For the MAIN Table this points directly to TKEY!
 
The Offset of the subtable points to an 8-byte Char Array with the subtable's name, followed by TKEY. For the MAIN Table this points directly to TKEY!
  
===TKEY and TDAT===
+
GTA San Andreas has a limit of max 200 tables to be stored per GXT file.
  
====TKEY====
+
==== TKEY and TDAT ====
 +
===== TKEY =====
  
 
The TKEY Block of an subtable contains the CRC32-values of the entrytitles. The game calculates the CRC32-value out of a given string and checks if they exist in the GXT.
 
The TKEY Block of an subtable contains the CRC32-values of the entrytitles. The game calculates the CRC32-value out of a given string and checks if they exist in the GXT.
Line 37: Line 189:
 
  //Array of [Blocksize / 8]
 
  //Array of [Blocksize / 8]
 
  INT32  - 4b  - Entryoffset
 
  INT32  - 4b  - Entryoffset
  INT32  - 4b  - CRC32 (Entrytitle)
+
  INT32  - 4b  - [[Cryptography#CRC32|CRC32]] (Entryname)
  
The TKEY block is directly followed by the TDAT Block which contains the contents of the entries. The Entryoffset is relative to the TDAT + 4 offset.
+
The TKEY block is directly followed by the TDAT Block which contains the contents of the entries. The Entryoffset is relative to the TDAT + 8 offset.
  
====TDAT====
+
===== TDAT =====
  
 
  CHAR[4] - 4b  - TDAT
 
  CHAR[4] - 4b  - TDAT
 
  INT32  - 4b  - Blocksize
 
  INT32  - 4b  - Blocksize
  
From here the Entryoffset of each entry points to the content. The content can have diffrent size. However it is allways endet by '\0'!
+
From here the entryoffset of each entry points to the content. The content can have different sizes. However it always ends in '\0'!
For Example "Hello!" needs to be "Hello!\0" here and this gives a size of 6 bytes. If this is the 1st content in TDAT the next got an offset of 0x06!
+
For Example "Hello!" needs to be transformed to "Hello!\0" here and this gives a size of 6 bytes (To tell it in a short form content is a null-terminated string). If this is the 1st content in TDAT the next got an offset of 0x06!
  
'''Special Characters'''
+
===== Encodings =====
  
Here is a list of special characters for german language sets and their UINT8 Values:
+
GTA SA          : [http://en.wikipedia.org/wiki/Windows-1252 Windows-1252] always.
 +
GTA IV(8 bits)  : Custom Encoding
 +
GTA IV(16 bits) : Well, its a fake 16 bits encoding, all you need to take care about first 8 bits(1 byte).
 +
                  Eg. A3F4 C2DD E922, read only A3, C2, E9.
  
{|
+
 
!Character
+
==== Sorting ====
!Value
+
The sorting method for TABL, TKEY, TDAT is as follow:
 +
{| class="wikitable"
 
|-
 
|-
+
! Section !! Sorting method
|131
 
 
|-
 
|-
|ä
+
| TABL || Sorted in alphabetical order
|154
 
 
|-
 
|-
|Ö
+
| TKEY || '''GTA SA''': Sorted from the lowest crc32 to the highest crc32,
|145
+
'''GTA IV''': Unknown. Perhaps randomized order.
 
|-
 
|-
|ö
+
| TDAT || Not sorted. The data is stored from the first line to the last line in the [http://pastebin.com/raw.php?i=HwDP132U GXT source file]
|168
 
|-
 
 
|149
 
|-
 
 
|172
 
|-
 
 
|150
 
 
|}
 
|}
  
===CRC32 Calculation===
+
=== GTA 1 Format ===
  
Here is a sample source which converts an CHAR[]-Array to an CRC32-polynom:
+
GTA 1 language files have .fxt extension, and it's different from other games' format. Except the first 8 byte it uses very simple encryption. To get text, just substract 1 from every byte. First 8 bytes have different encryption, probably just to confuse modders. For every byte substract a value returned from left shifting 99.
  
private static ulong[] table = new ulong[] {
+
== Character maps ==
            0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
+
These character maps display all possible characters that can be used in the GXT file. Each character is represented by a hexadecimal value, which can be constructed by adding the value in the leftmost column to the value in the topmost row, e.g. a capital letter A is represented by 0x41 in hex.
            0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
 
            0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
 
            0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
 
            0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
 
            0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
 
            0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
 
            0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
 
            0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
 
            0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
 
            0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
 
            0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
 
            0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
 
            0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
 
            0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
 
            0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
 
            0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
 
            0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
 
            0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
 
            0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
 
            0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
 
            0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
 
            0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
 
            0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
 
            0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
 
            0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
 
            0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
 
            0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
 
            0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
 
            0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
 
            0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
 
            0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
 
            0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
 
            0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
 
            0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
 
            0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
 
            0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
 
            0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
 
            0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
 
            0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
 
            0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
 
            0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
 
            0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
 
            0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
 
            0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
 
            0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
 
            0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
 
            0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
 
            0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
 
            0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
 
            0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
 
            0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
 
            0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
 
            0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
 
            0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
 
            0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
 
            0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
 
            0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
 
            0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
 
            0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
 
            0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
 
            0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
 
            0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
 
            0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
 
        };
 
 
        public static ulong StringToCRC32(char[] Value)
 
        {
 
            ulong CRC = 0xFFFFFFFF;      // Register Base-Value
 
 
            for (int i = 0; i < Value.Length; i++)
 
            {
 
                CRC = ((CRC & 0xFFFFFF00) / 0x100) & 0xFFFFFF ^ table[(ulong)Value[i] ^ CRC & 0xFF];
 
            }
 
            return CRC;
 
        }
 
(C#/C migration by [[User:Aschratt|Aschratt]])
 
  
It is impossible to get a string out of an CRC32-value. The game only checks if 2 values are identical. However this is not a very reliably way cause there can be more than 2 CRC32 Values for one string. But the probability for this is not very high!
+
=== GTA III ===
 +
==== Font Style 0 (Bank) ====
 +
{|class="charmap"
 +
!
 +
!00
 +
!01
 +
!02
 +
!03
 +
!04
 +
!05
 +
!06
 +
!07
 +
!08
 +
!09
 +
!0A
 +
!0B
 +
!0C
 +
!0D
 +
!0E
 +
!0F
 +
|-
 +
!20
 +
|title="0x20"|&nbsp;
 +
|title="0x21"|!
 +
|title="0x22"|&#x25b3;
 +
|title="0x23"|#
 +
|title="0x24"|$
 +
|title="0x25"|%
 +
|title="0x26"|&amp;
 +
|title="0x27"|'
 +
|title="0x28"|(
 +
|title="0x29"|)
 +
|title="0x2A"|*
 +
|title="0x2B"| +
 +
|title="0x2C"|,
 +
|title="0x2D"| -
 +
|title="0x2E"|.
 +
|title="0x2F"|/
 +
|-
 +
!30
 +
|title="0x30"|0
 +
|title="0x31"|1
 +
|title="0x32"|2
 +
|title="0x33"|3
 +
|title="0x34"|4
 +
|title="0x35"|5
 +
|title="0x36"|6
 +
|title="0x37"|7
 +
|title="0x38"|8
 +
|title="0x39"|9
 +
|title="0x3A"|:
 +
|title="0x3B"|;
 +
|title="0x3C"|&#x25c0;
 +
|title="0x3D"|=
 +
|title="0x3E"|&#x25b6;
 +
|title="0x3F"|?
 +
|-
 +
!40
 +
|title="0x40"|&trade;
 +
|title="0x41"|A
 +
|title="0x42"|B
 +
|title="0x43"|C
 +
|title="0x44"|D
 +
|title="0x45"|E
 +
|title="0x46"|F
 +
|title="0x47"|G
 +
|title="0x48"|H
 +
|title="0x49"|I
 +
|title="0x4A"|J
 +
|title="0x4B"|K
 +
|title="0x4C"|L
 +
|title="0x4D"|M
 +
|title="0x4E"|N
 +
|title="0x4F"|O
 +
|-
 +
!50
 +
|title="0x50"|P
 +
|title="0x51"|Q
 +
|title="0x52"|R
 +
|title="0x53"|S
 +
|title="0x54"|T
 +
|title="0x55"|U
 +
|title="0x56"|V
 +
|title="0x57"|W
 +
|title="0x58"|X
 +
|title="0x59"|Y
 +
|title="0x5A"|Z
 +
|title="0x5B"|[
 +
|title="0x5C"|\
 +
|title="0x5D"|]
 +
|title="0x5E"|^
 +
|title="0x5F"|&deg;
 +
|-
 +
!60
 +
|title="0x60"|`
 +
|title="0x61"|a
 +
|title="0x62"|b
 +
|title="0x63"|c
 +
|title="0x64"|d
 +
|title="0x65"|e
 +
|title="0x66"|f
 +
|title="0x67"|g
 +
|title="0x68"|h
 +
|title="0x69"|i
 +
|title="0x6A"|j
 +
|title="0x6B"|k
 +
|title="0x6C"|l
 +
|title="0x6D"|m
 +
|title="0x6E"|n
 +
|title="0x6F"|o
 +
|-
 +
!70
 +
|title="0x70"|p
 +
|title="0x71"|q
 +
|title="0x72"|r
 +
|title="0x73"|s
 +
|title="0x74"|t
 +
|title="0x75"|u
 +
|title="0x76"|v
 +
|title="0x77"|w
 +
|title="0x78"|x
 +
|title="0x79"|y
 +
|title="0x7A"|z
 +
|title="0x7B"|&nbsp;
 +
|title="0x7C"|&#x25ef;
 +
|title="0x7D"|&nbsp;
 +
|title="0x7E"|~
 +
|title="0x7F"|&nbsp;
 +
|-
 +
!80
 +
|title="0x80"|&Agrave;
 +
|title="0x81"|&Aacute;
 +
|title="0x82"|&Acirc;
 +
|title="0x83"|&Auml;
 +
|title="0x84"|&AElig;
 +
|title="0x85"|&Ccedil;
 +
|title="0x86"|&Egrave;
 +
|title="0x87"|&Eacute;
 +
|title="0x88"|&Ecirc;
 +
|title="0x89"|&Euml;
 +
|title="0x8A"|&Igrave;
 +
|title="0x8B"|&Iacute;
 +
|title="0x8C"|&Icirc;
 +
|title="0x8D"|&Iuml;
 +
|title="0x8E"|&Ograve;
 +
|title="0x8F"|&Oacute;
 +
|-
 +
!90
 +
|title="0x90"|&Ocirc;
 +
|title="0x91"|&Ouml;
 +
|title="0x92"|&Ugrave;
 +
|title="0x93"|&Uacute;
 +
|title="0x94"|&Ucirc;
 +
|title="0x95"|&Uuml;
 +
|title="0x96"|&szlig;
 +
|title="0x97"|&agrave;
 +
|title="0x98"|&aacute;
 +
|title="0x99"|&acirc;
 +
|title="0x9A"|&auml;
 +
|title="0x9B"|&aelig;
 +
|title="0x9C"|&ccedil;
 +
|title="0x9D"|&egrave;
 +
|title="0x9E"|&eacute;
 +
|title="0x9F"|&ecirc;
 +
|-
 +
!A0
 +
|title="0xA0"|&euml;
 +
|title="0xA1"|&igrave;
 +
|title="0xA2"|&iacute;
 +
|title="0xA3"|&icirc;
 +
|title="0xA4"|&iuml;
 +
|title="0xA5"|&ograve;
 +
|title="0xA6"|&oacute;
 +
|title="0xA7"|&ocirc;
 +
|title="0xA8"|&ouml;
 +
|title="0xA9"|&ugrave;
 +
|title="0xAA"|&uacute;
 +
|title="0xAB"|&ucirc;
 +
|title="0xAC"|&uuml;
 +
|title="0xAD"|&Ntilde;
 +
|title="0xAE"|&ntilde;
 +
|title="0xAF"|&iquest;
 +
|-
 +
!B0
 +
|title="0xB0"|&iexcl;
 +
|title="0xB1"|'
 +
|}
  
==Vice City & GTA III Format==
+
==== Font Style 1 (Pager) ====
 +
{|class="charmap"
 +
!
 +
!00
 +
!01
 +
!02
 +
!03
 +
!04
 +
!05
 +
!06
 +
!07
 +
!08
 +
!09
 +
!0A
 +
!0B
 +
!0C
 +
!0D
 +
!0E
 +
!0F
 +
|-
 +
!20
 +
|title="0x20"|&nbsp;
 +
|title="0x21" style="font-style: italic;"|!
 +
|title="0x22" style="font-style: italic;"|"
 +
|title="0x23" style="font-style: italic;"|#
 +
|title="0x24" style="font-style: italic;"|$
 +
|title="0x25" style="font-style: italic;"|%
 +
|title="0x26" style="font-style: italic;"|&amp;
 +
|title="0x27" style="font-style: italic;"|'
 +
|title="0x28" style="font-style: italic;"|(
 +
|title="0x29" style="font-style: italic;"|)
 +
|title="0x2A" style="font-style: italic;"| -
 +
|title="0x2B"|&nbsp;
 +
|title="0x2C" style="font-style: italic;"|,
 +
|title="0x2D" style="font-style: italic;"| -
 +
|title="0x2E" style="font-style: italic;"|.
 +
|title="0x2F"|&nbsp;
 +
|-
 +
!30
 +
|title="0x30" style="font-style: italic;"|0
 +
|title="0x31" style="font-style: italic;"|1
 +
|title="0x32" style="font-style: italic;"|2
 +
|title="0x33" style="font-style: italic;"|3
 +
|title="0x34" style="font-style: italic;"|4
 +
|title="0x35" style="font-style: italic;"|5
 +
|title="0x36" style="font-style: italic;"|6
 +
|title="0x37" style="font-style: italic;"|7
 +
|title="0x38" style="font-style: italic;"|8
 +
|title="0x39" style="font-style: italic;"|9
 +
|title="0x3A" style="font-style: italic;"|:
 +
|title="0x3B"|&nbsp;
 +
|title="0x3C"|&nbsp;
 +
|title="0x3D"|&nbsp;
 +
|title="0x3E"|&nbsp;
 +
|title="0x3F" style="font-style: italic;"|?
 +
|-
 +
!40
 +
|title="0x40"|&nbsp;
 +
|title="0x41" style="font-style: italic;"|A
 +
|title="0x42" style="font-style: italic;"|B
 +
|title="0x43" style="font-style: italic;"|C
 +
|title="0x44" style="font-style: italic;"|D
 +
|title="0x45" style="font-style: italic;"|E
 +
|title="0x46" style="font-style: italic;"|F
 +
|title="0x47" style="font-style: italic;"|G
 +
|title="0x48" style="font-style: italic;"|H
 +
|title="0x49" style="font-style: italic;"|I
 +
|title="0x4A" style="font-style: italic;"|J
 +
|title="0x4B" style="font-style: italic;"|K
 +
|title="0x4C" style="font-style: italic;"|L
 +
|title="0x4D" style="font-style: italic;"|M
 +
|title="0x4E" style="font-style: italic;"|N
 +
|title="0x4F" style="font-style: italic;"|O
 +
|-
 +
!50
 +
|title="0x50" style="font-style: italic;"|P
 +
|title="0x51" style="font-style: italic;"|Q
 +
|title="0x52" style="font-style: italic;"|R
 +
|title="0x53" style="font-style: italic;"|S
 +
|title="0x54" style="font-style: italic;"|T
 +
|title="0x55" style="font-style: italic;"|U
 +
|title="0x56" style="font-style: italic;"|V
 +
|title="0x57" style="font-style: italic;"|W
 +
|title="0x58" style="font-style: italic;"|X
 +
|title="0x59" style="font-style: italic;"|Y
 +
|title="0x5A" style="font-style: italic;"|Z
 +
|title="0x5B"|&nbsp;
 +
|title="0x5C"|&nbsp;
 +
|title="0x5D"|&nbsp;
 +
|title="0x5E"|&nbsp;
 +
|title="0x5F"|&nbsp;
 +
|-
 +
!60
 +
|title="0x60"|&nbsp;
 +
|title="0x61" style="font-style: italic;"|a
 +
|title="0x62" style="font-style: italic;"|b
 +
|title="0x63" style="font-style: italic;"|c
 +
|title="0x64" style="font-style: italic;"|d
 +
|title="0x65" style="font-style: italic;"|e
 +
|title="0x66" style="font-style: italic;"|f
 +
|title="0x67" style="font-style: italic;"|g
 +
|title="0x68" style="font-style: italic;"|h
 +
|title="0x69" style="font-style: italic;"|i
 +
|title="0x6A" style="font-style: italic;"|j
 +
|title="0x6B" style="font-style: italic;"|k
 +
|title="0x6C" style="font-style: italic;"|l
 +
|title="0x6D" style="font-style: italic;"|m
 +
|title="0x6E" style="font-style: italic;"|n
 +
|title="0x6F" style="font-style: italic;"|o
 +
|-
 +
!70
 +
|title="0x70" style="font-style: italic;"|p
 +
|title="0x71" style="font-style: italic;"|q
 +
|title="0x72" style="font-style: italic;"|r
 +
|title="0x73" style="font-style: italic;"|s
 +
|title="0x74" style="font-style: italic;"|t
 +
|title="0x75" style="font-style: italic;"|u
 +
|title="0x76" style="font-style: italic;"|v
 +
|title="0x77" style="font-style: italic;"|w
 +
|title="0x78" style="font-style: italic;"|x
 +
|title="0x79" style="font-style: italic;"|y
 +
|title="0x7A" style="font-style: italic;"|z
 +
|title="0x7B"|&nbsp;
 +
|title="0x7C"|&nbsp;
 +
|title="0x7D"|&nbsp;
 +
|title="0x7E"|~
 +
|title="0x7F"|&nbsp;
 +
|-
 +
!80
 +
|title="0x80" style="font-style: italic;"|&Agrave;
 +
|title="0x81" style="font-style: italic;"|&Aacute;
 +
|title="0x82" style="font-style: italic;"|&Acirc;
 +
|title="0x83" style="font-style: italic;"|&Auml;
 +
|title="0x84" style="font-style: italic;"|&AElig;
 +
|title="0x85" style="font-style: italic;"|&Ccedil;
 +
|title="0x86" style="font-style: italic;"|&Egrave;
 +
|title="0x87" style="font-style: italic;"|&Eacute;
 +
|title="0x88" style="font-style: italic;"|&Ecirc;
 +
|title="0x89" style="font-style: italic;"|&Euml;
 +
|title="0x8A" style="font-style: italic;"|&Igrave;
 +
|title="0x8B" style="font-style: italic;"|&Iacute;
 +
|title="0x8C" style="font-style: italic;"|&Icirc;
 +
|title="0x8D" style="font-style: italic;"|&Iuml;
 +
|title="0x8E" style="font-style: italic;"|&Ograve;
 +
|title="0x8F" style="font-style: italic;"|&Oacute;
 +
|-
 +
!90
 +
|title="0x90" style="font-style: italic;"|&Ocirc;
 +
|title="0x91" style="font-style: italic;"|&Ouml;
 +
|title="0x92" style="font-style: italic;"|&Ugrave;
 +
|title="0x93" style="font-style: italic;"|&Uacute;
 +
|title="0x94" style="font-style: italic;"|&Ucirc;
 +
|title="0x95" style="font-style: italic;"|&Uuml;
 +
|title="0x96" style="font-style: italic;"|&szlig;
 +
|title="0x97" style="font-style: italic;"|&agrave;
 +
|title="0x98" style="font-style: italic;"|&aacute;
 +
|title="0x99" style="font-style: italic;"|&acirc;
 +
|title="0x9A" style="font-style: italic;"|&auml;
 +
|title="0x9B" style="font-style: italic;"|&aelig;
 +
|title="0x9C" style="font-style: italic;"|&ccedil;
 +
|title="0x9D" style="font-style: italic;"|&egrave;
 +
|title="0x9E" style="font-style: italic;"|&eacute;
 +
|title="0x9F" style="font-style: italic;"|&ecirc;
 +
|-
 +
!A0
 +
|title="0xA0" style="font-style: italic;"|&euml;
 +
|title="0xA1" style="font-style: italic;"|&igrave;
 +
|title="0xA2" style="font-style: italic;"|&iacute;
 +
|title="0xA3" style="font-style: italic;"|&icirc;
 +
|title="0xA4" style="font-style: italic;"|&iuml;
 +
|title="0xA5" style="font-style: italic;"|&ograve;
 +
|title="0xA6" style="font-style: italic;"|&oacute;
 +
|title="0xA7" style="font-style: italic;"|&ocirc;
 +
|title="0xA8" style="font-style: italic;"|&ouml;
 +
|title="0xA9" style="font-style: italic;"|&ugrave;
 +
|title="0xAA" style="font-style: italic;"|&uacute;
 +
|title="0xAB" style="font-style: italic;"|&ucirc;
 +
|title="0xAC" style="font-style: italic;"|&uuml;
 +
|title="0xAD" style="font-style: italic;"|&Ntilde;
 +
|title="0xAE" style="font-style: italic;"|&ntilde;
 +
|title="0xAF" style="font-style: italic;"|&iquest;
 +
|-
 +
!B0
 +
|title="0xB0" style="font-style: italic;"|&iexcl;
 +
|}
  
Vice City and GTA III GXTs are very simelar to the SA GXTs. In this article all those additional infos are not listed.
+
==== Font Style 2 (Heading) ====
 +
{|class="charmap"
 +
!
 +
!00
 +
!01
 +
!02
 +
!03
 +
!04
 +
!05
 +
!06
 +
!07
 +
!08
 +
!09
 +
!0A
 +
!0B
 +
!0C
 +
!0D
 +
!0E
 +
!0F
 +
|-
 +
!20
 +
|title="0x20"|&nbsp;
 +
|title="0x21" style="font-weight: bold;"|!
 +
|title="0x22" style="font-weight: bold;"|&#x25b3;
 +
|title="0x23" style="font-weight: bold;"|&reg;
 +
|title="0x24" style="font-weight: bold;"|$
 +
|title="0x25" style="font-weight: bold;"|%
 +
|title="0x26" style="font-weight: bold;"|&amp;
 +
|title="0x27" style="font-weight: bold;"|'
 +
|title="0x28" style="font-weight: bold;"|(
 +
|title="0x29" style="font-weight: bold;"|)
 +
|title="0x2A"|&nbsp;
 +
|title="0x2B" style="font-weight: bold;"| +
 +
|title="0x2C" style="font-weight: bold;"|,
 +
|title="0x2D" style="font-weight: bold;"| -
 +
|title="0x2E" style="font-weight: bold;"|.
 +
|title="0x2F" style="font-weight: bold;"|&#x2715;
 +
|-
 +
!30
 +
|title="0x30" style="font-weight: bold;"|0
 +
|title="0x31" style="font-weight: bold;"|1
 +
|title="0x32" style="font-weight: bold;"|2
 +
|title="0x33" style="font-weight: bold;"|3
 +
|title="0x34" style="font-weight: bold;"|4
 +
|title="0x35" style="font-weight: bold;"|5
 +
|title="0x36" style="font-weight: bold;"|6
 +
|title="0x37" style="font-weight: bold;"|7
 +
|title="0x38" style="font-weight: bold;"|8
 +
|title="0x39" style="font-weight: bold;"|9
 +
|title="0x3A" style="font-weight: bold;"|:
 +
|title="0x3B" style="font-weight: bold;"|&#x25b2;
 +
|title="0x3C" style="font-weight: bold;"|&#x25c0;
 +
|title="0x3D" style="font-weight: bold;"|&#x25bc;
 +
|title="0x3E" style="font-weight: bold;"|&#x25b6;
 +
|title="0x3F" style="font-weight: bold;"|?
 +
|-
 +
!40
 +
|title="0x40" style="font-weight: bold;"|&trade;
 +
|title="0x41" style="font-weight: bold;"|a
 +
|title="0x42" style="font-weight: bold;"|b
 +
|title="0x43" style="font-weight: bold;"|c
 +
|title="0x44" style="font-weight: bold;"|d
 +
|title="0x45" style="font-weight: bold;"|e
 +
|title="0x46" style="font-weight: bold;"|f
 +
|title="0x47" style="font-weight: bold;"|g
 +
|title="0x48" style="font-weight: bold;"|h
 +
|title="0x49" style="font-weight: bold;"|i
 +
|title="0x4A" style="font-weight: bold;"|j
 +
|title="0x4B" style="font-weight: bold;"|k
 +
|title="0x4C" style="font-weight: bold;"|l
 +
|title="0x4D" style="font-weight: bold;"|m
 +
|title="0x4E" style="font-weight: bold;"|n
 +
|title="0x4F" style="font-weight: bold;"|o
 +
|-
 +
!50
 +
|title="0x50" style="font-weight: bold;"|p
 +
|title="0x51" style="font-weight: bold;"|q
 +
|title="0x52" style="font-weight: bold;"|r
 +
|title="0x53" style="font-weight: bold;"|s
 +
|title="0x54" style="font-weight: bold;"|t
 +
|title="0x55" style="font-weight: bold;"|u
 +
|title="0x56" style="font-weight: bold;"|v
 +
|title="0x57" style="font-weight: bold;"|w
 +
|title="0x58" style="font-weight: bold;"|x
 +
|title="0x59" style="font-weight: bold;"|y
 +
|title="0x5A" style="font-weight: bold;"|z
 +
|title="0x5B"|{{Hint|&nbsp;|Armor icon}}
 +
|title="0x5C"|\
 +
|title="0x5D"|{{Hint|&nbsp;|Wanted star icon}}
 +
|title="0x5E"|&#x2116;
 +
|title="0x5F"|&deg;
 +
|-
 +
!60
 +
|title="0x60" style="font-weight: bold;"|&copy;
 +
|title="0x61" style="font-weight: bold; font-style: italic;"|a
 +
|title="0x62" style="font-weight: bold; font-style: italic;"|b
 +
|title="0x63" style="font-weight: bold; font-style: italic;"|c
 +
|title="0x64" style="font-weight: bold; font-style: italic;"|d
 +
|title="0x65" style="font-weight: bold; font-style: italic;"|e
 +
|title="0x66" style="font-weight: bold; font-style: italic;"|f
 +
|title="0x67" style="font-weight: bold; font-style: italic;"|g
 +
|title="0x68" style="font-weight: bold; font-style: italic;"|h
 +
|title="0x69" style="font-weight: bold; font-style: italic;"|i
 +
|title="0x6A" style="font-weight: bold; font-style: italic;"|j
 +
|title="0x6B" style="font-weight: bold; font-style: italic;"|k
 +
|title="0x6C" style="font-weight: bold; font-style: italic;"|l
 +
|title="0x6D" style="font-weight: bold; font-style: italic;"|m
 +
|title="0x6E" style="font-weight: bold; font-style: italic;"|n
 +
|title="0x6F" style="font-weight: bold; font-style: italic;"|o
 +
|-
 +
!70
 +
|title="0x70" style="font-weight: bold; font-style: italic;"|p
 +
|title="0x71" style="font-weight: bold; font-style: italic;"|q
 +
|title="0x72" style="font-weight: bold; font-style: italic;"|r
 +
|title="0x73" style="font-weight: bold; font-style: italic;"|s
 +
|title="0x74" style="font-weight: bold; font-style: italic;"|t
 +
|title="0x75" style="font-weight: bold; font-style: italic;"|u
 +
|title="0x76" style="font-weight: bold; font-style: italic;"|v
 +
|title="0x77" style="font-weight: bold; font-style: italic;"|w
 +
|title="0x78" style="font-weight: bold; font-style: italic;"|x
 +
|title="0x79" style="font-weight: bold; font-style: italic;"|y
 +
|title="0x7A" style="font-weight: bold; font-style: italic;"|z
 +
|title="0x7B"|{{Hint|&nbsp;|Heart icon}}
 +
|title="0x7C"|&#x25ef;
 +
|title="0x7D"|&nbsp;
 +
|title="0x7E"|~
 +
|title="0x7F"|&nbsp;
 +
|-
 +
!80
 +
|title="0x80" style="font-weight: bold;"|&agrave;
 +
|title="0x81" style="font-weight: bold;"|&aacute;
 +
|title="0x82" style="font-weight: bold;"|&acirc;
 +
|title="0x83" style="font-weight: bold;"|&auml;
 +
|title="0x84" style="font-weight: bold;"|&aelig;
 +
|title="0x85" style="font-weight: bold;"|&ccedil;
 +
|title="0x86" style="font-weight: bold;"|&egrave;
 +
|title="0x87" style="font-weight: bold;"|&eacute;
 +
|title="0x88" style="font-weight: bold;"|&ecirc;
 +
|title="0x89" style="font-weight: bold;"|&euml;
 +
|title="0x8A" style="font-weight: bold;"|&igrave;
 +
|title="0x8B" style="font-weight: bold;"|&iacute;
 +
|title="0x8C" style="font-weight: bold;"|&icirc;
 +
|title="0x8D" style="font-weight: bold;"|&iuml;
 +
|title="0x8E" style="font-weight: bold;"|&ograve;
 +
|title="0x8F" style="font-weight: bold;"|&oacute;
 +
|-
 +
!90
 +
|title="0x90" style="font-weight: bold;"|&ocirc;
 +
|title="0x91" style="font-weight: bold;"|&ouml;
 +
|title="0x92" style="font-weight: bold;"|&ugrave;
 +
|title="0x93" style="font-weight: bold;"|&uacute;
 +
|title="0x94" style="font-weight: bold;"|&ucirc;
 +
|title="0x95" style="font-weight: bold;"|&uuml;
 +
|title="0x96" style="font-weight: bold;"|&szlig;
 +
|title="0x97" style="font-weight: bold; font-style: italic;"|&agrave;
 +
|title="0x98" style="font-weight: bold; font-style: italic;"|&aacute;
 +
|title="0x99" style="font-weight: bold; font-style: italic;"|&acirc;
 +
|title="0x9A" style="font-weight: bold; font-style: italic;"|&auml;
 +
|title="0x9B" style="font-weight: bold; font-style: italic;"|&aelig;
 +
|title="0x9C" style="font-weight: bold; font-style: italic;"|&ccedil;
 +
|title="0x9D" style="font-weight: bold; font-style: italic;"|&egrave;
 +
|title="0x9E" style="font-weight: bold; font-style: italic;"|&eacute;
 +
|title="0x9F" style="font-weight: bold; font-style: italic;"|&ecirc;
 +
|-
 +
!A0
 +
|title="0xA0" style="font-weight: bold; font-style: italic;"|&euml;
 +
|title="0xA1" style="font-weight: bold; font-style: italic;"|&igrave;
 +
|title="0xA2" style="font-weight: bold; font-style: italic;"|&iacute;
 +
|title="0xA3" style="font-weight: bold; font-style: italic;"|&icirc;
 +
|title="0xA4" style="font-weight: bold; font-style: italic;"|&iuml;
 +
|title="0xA5" style="font-weight: bold; font-style: italic;"|&ograve;
 +
|title="0xA6" style="font-weight: bold; font-style: italic;"|&oacute;
 +
|title="0xA7" style="font-weight: bold; font-style: italic;"|&ocirc;
 +
|title="0xA8" style="font-weight: bold; font-style: italic;"|&ouml;
 +
|title="0xA9" style="font-weight: bold; font-style: italic;"|&ugrave;
 +
|title="0xAA" style="font-weight: bold; font-style: italic;"|&uacute;
 +
|title="0xAB" style="font-weight: bold; font-style: italic;"|&ucirc;
 +
|title="0xAC" style="font-weight: bold; font-style: italic;"|&uuml;
 +
|title="0xAD" style="font-weight: bold;"|&ntilde;
 +
|title="0xAE" style="font-weight: bold;"|&ntilde;
 +
|title="0xAF" style="font-weight: bold;"|&iquest;
 +
|-
 +
!B0
 +
|title="0xB0" style="font-weight: bold;"|&iexcl;
 +
|}
 +
<small>
 +
* Characters in italic are the pager font.
 +
* Characters in bold use Pricedown font or have a dirty look.
 +
* Characters in both bold and italic use an italicized Pricedown font.
 +
* Hover your mouse over the dotted line for characters that cannot be displayed in the browser.
 +
</small>
  
===Header===
+
=== Vice City ===
 +
==== Font Style 0 (Bank) ====
 +
{|class="charmap"
 +
!
 +
!00
 +
!01
 +
!02
 +
!03
 +
!04
 +
!05
 +
!06
 +
!07
 +
!08
 +
!09
 +
!0A
 +
!0B
 +
!0C
 +
!0D
 +
!0E
 +
!0F
 +
|-
 +
!20
 +
|title="0x20"|&nbsp;
 +
|title="0x21" style="font-style: italic;"|!
 +
|title="0x22"|&nbsp;
 +
|title="0x23"|&nbsp;
 +
|title="0x24" style="font-style: italic;"|$
 +
|title="0x25" style="font-style: italic;"|%
 +
|title="0x26" style="font-style: italic;"|&amp;
 +
|title="0x27" style="font-style: italic;"|'
 +
|title="0x28" style="font-style: italic;"|[
 +
|title="0x29" style="font-style: italic;"|]
 +
|title="0x2A"|&nbsp;
 +
|title="0x2B" style="font-style: italic;"| +
 +
|title="0x2C" style="font-style: italic;"|,
 +
|title="0x2D" style="font-style: italic;"| -
 +
|title="0x2E" style="font-style: italic;"|.
 +
|title="0x2F"|&nbsp;
 +
|-
 +
!30
 +
|title="0x30" style="font-style: italic;"|0
 +
|title="0x31" style="font-style: italic;"|1
 +
|title="0x32" style="font-style: italic;"|2
 +
|title="0x33" style="font-style: italic;"|3
 +
|title="0x34" style="font-style: italic;"|4
 +
|title="0x35" style="font-style: italic;"|5
 +
|title="0x36" style="font-style: italic;"|6
 +
|title="0x37" style="font-style: italic;"|7
 +
|title="0x38" style="font-style: italic;"|8
 +
|title="0x39" style="font-style: italic;"|9
 +
|title="0x3A" style="font-style: italic;"|:
 +
|title="0x3B"|&nbsp;
 +
|title="0x3C"|&nbsp;
 +
|title="0x3D"|&nbsp;
 +
|title="0x3E"|&nbsp;
 +
|title="0x3F"|?
 +
|-
 +
!40
 +
|title="0x40"|&nbsp;
 +
|title="0x41" style="font-style: italic;"|A
 +
|title="0x42" style="font-style: italic;"|B
 +
|title="0x43" style="font-style: italic;"|C
 +
|title="0x44" style="font-style: italic;"|D
 +
|title="0x45" style="font-style: italic;"|E
 +
|title="0x46" style="font-style: italic;"|F
 +
|title="0x47" style="font-style: italic;"|G
 +
|title="0x48" style="font-style: italic;"|H
 +
|title="0x49" style="font-style: italic;"|I
 +
|title="0x4A" style="font-style: italic;"|J
 +
|title="0x4B" style="font-style: italic;"|K
 +
|title="0x4C" style="font-style: italic;"|L
 +
|title="0x4D" style="font-style: italic;"|M
 +
|title="0x4E" style="font-style: italic;"|N
 +
|title="0x4F" style="font-style: italic;"|O
 +
|-
 +
!50
 +
|title="0x50" style="font-style: italic;"|P
 +
|title="0x51" style="font-style: italic;"|Q
 +
|title="0x52" style="font-style: italic;"|R
 +
|title="0x53" style="font-style: italic;"|S
 +
|title="0x54" style="font-style: italic;"|T
 +
|title="0x55" style="font-style: italic;"|U
 +
|title="0x56" style="font-style: italic;"|V
 +
|title="0x57" style="font-style: italic;"|W
 +
|title="0x58" style="font-style: italic;"|X
 +
|title="0x59" style="font-style: italic;"|Y
 +
|title="0x5A" style="font-style: italic;"|Z
 +
|title="0x5B"|&nbsp;
 +
|title="0x5C" style="font-style: italic;"|\
 +
|title="0x5D"|&nbsp;
 +
|title="0x5E" style="font-style: italic;"|&iexcl;
 +
|title="0x5F" style="font-style: italic;"|\
 +
|-
 +
!60
 +
|title="0x60"|&nbsp;
 +
|title="0x61" style="font-style: italic;"|a
 +
|title="0x62" style="font-style: italic;"|b
 +
|title="0x63" style="font-style: italic;"|c
 +
|title="0x64" style="font-style: italic;"|d
 +
|title="0x65" style="font-style: italic;"|e
 +
|title="0x66" style="font-style: italic;"|f
 +
|title="0x67" style="font-style: italic;"|g
 +
|title="0x68" style="font-style: italic;"|h
 +
|title="0x69" style="font-style: italic;"|i
 +
|title="0x6A" style="font-style: italic;"|j
 +
|title="0x6B" style="font-style: italic;"|k
 +
|title="0x6C" style="font-style: italic;"|l
 +
|title="0x6D" style="font-style: italic;"|m
 +
|title="0x6E" style="font-style: italic;"|n
 +
|title="0x6F" style="font-style: italic;"|o
 +
|-
 +
!70
 +
|title="0x70" style="font-style: italic;"|p
 +
|title="0x71" style="font-style: italic;"|q
 +
|title="0x72" style="font-style: italic;"|r
 +
|title="0x73" style="font-style: italic;"|s
 +
|title="0x74" style="font-style: italic;"|t
 +
|title="0x75" style="font-style: italic;"|u
 +
|title="0x76" style="font-style: italic;"|v
 +
|title="0x77" style="font-style: italic;"|w
 +
|title="0x78" style="font-style: italic;"|x
 +
|title="0x79" style="font-style: italic;"|y
 +
|title="0x7A" style="font-style: italic;"|z
 +
|title="0x7B"|&nbsp;
 +
|title="0x7C"|&nbsp;
 +
|title="0x7D"|&nbsp;
 +
|title="0x7E"|~
 +
|title="0x7F"|&nbsp;
 +
|-
 +
!80
 +
|title="0x80" style="font-style: italic;"|&Agrave;
 +
|title="0x81" style="font-style: italic;"|&Aacute;
 +
|title="0x82" style="font-style: italic;"|&Acirc;
 +
|title="0x83" style="font-style: italic;"|&Auml;
 +
|title="0x84" style="font-style: italic;"|&AElig;
 +
|title="0x85" style="font-style: italic;"|&Ccedil;
 +
|title="0x86" style="font-style: italic;"|&Egrave;
 +
|title="0x87" style="font-style: italic;"|&Eacute;
 +
|title="0x88" style="font-style: italic;"|&Ecirc;
 +
|title="0x89" style="font-style: italic;"|&Euml;
 +
|title="0x8A" style="font-style: italic;"|&Igrave;
 +
|title="0x8B" style="font-style: italic;"|&Iacute;
 +
|title="0x8C" style="font-style: italic;"|&Icirc;
 +
|title="0x8D" style="font-style: italic;"|&Iuml;
 +
|title="0x8E" style="font-style: italic;"|&Ograve;
 +
|title="0x8F" style="font-style: italic;"|&Oacute;
 +
|-
 +
!90
 +
|title="0x90" style="font-style: italic;"|&Ocirc;
 +
|title="0x91" style="font-style: italic;"|&Ouml;
 +
|title="0x92" style="font-style: italic;"|&Ugrave;
 +
|title="0x93" style="font-style: italic;"|&Uacute;
 +
|title="0x94" style="font-style: italic;"|&Ucirc;
 +
|title="0x95" style="font-style: italic;"|&Uuml;
 +
|title="0x96" style="font-style: italic;"|&szlig;
 +
|title="0x97" style="font-style: italic;"|&agrave;
 +
|title="0x98" style="font-style: italic;"|&aacute;
 +
|title="0x99" style="font-style: italic;"|&acirc;
 +
|title="0x9A" style="font-style: italic;"|&auml;
 +
|title="0x9B" style="font-style: italic;"|&aelig;
 +
|title="0x9C" style="font-style: italic;"|&ccedil;
 +
|title="0x9D" style="font-style: italic;"|&egrave;
 +
|title="0x9E" style="font-style: italic;"|&eacute;
 +
|title="0x9F" style="font-style: italic;"|&ecirc;
 +
|-
 +
!A0
 +
|title="0xA0" style="font-style: italic;"|&euml;
 +
|title="0xA1" style="font-style: italic;"|&igrave;
 +
|title="0xA2" style="font-style: italic;"|&iacute;
 +
|title="0xA3" style="font-style: italic;"|&icirc;
 +
|title="0xA4" style="font-style: italic;"|&iuml;
 +
|title="0xA5" style="font-style: italic;"|&ograve;
 +
|title="0xA6" style="font-style: italic;"|&oacute;
 +
|title="0xA7" style="font-style: italic;"|&ocirc;
 +
|title="0xA8" style="font-style: italic;"|&ouml;
 +
|title="0xA9" style="font-style: italic;"|&ugrave;
 +
|title="0xAA" style="font-style: italic;"|&uacute;
 +
|title="0xAB" style="font-style: italic;"|&ucirc;
 +
|title="0xAC" style="font-style: italic;"|&uuml;
 +
|title="0xAD" style="font-style: italic;"|&Ntilde;
 +
|title="0xAE" style="font-style: italic;"|&ntilde;
 +
|title="0xAF" style="font-style: italic;"|&iquest;
 +
|-
 +
!B0
 +
|title="0xB0" style="font-style: italic;"|i
 +
|}
  
The header contains data about the tables and their subtables.
+
==== Font Style 1 (Standard) ====
 +
{|class="charmap"
 +
!
 +
!00
 +
!01
 +
!02
 +
!03
 +
!04
 +
!05
 +
!06
 +
!07
 +
!08
 +
!09
 +
!0A
 +
!0B
 +
!0C
 +
!0D
 +
!0E
 +
!0F
 +
|-
 +
!20
 +
|title="0x20"|&nbsp;
 +
|title="0x21"|!
 +
|title="0x22"|"
 +
|title="0x23"|#
 +
|title="0x24"|$
 +
|title="0x25"|%
 +
|title="0x26"|&amp;
 +
|title="0x27"|'
 +
|title="0x28"|(
 +
|title="0x29"|)
 +
|title="0x2A"|*
 +
|title="0x2B"| +
 +
|title="0x2C"|,
 +
|title="0x2D"| -
 +
|title="0x2E"|.
 +
|title="0x2F"|/
 +
|-
 +
!30
 +
|title="0x30"|0
 +
|title="0x31"|1
 +
|title="0x32"|2
 +
|title="0x33"|3
 +
|title="0x34"|4
 +
|title="0x35"|5
 +
|title="0x36"|6
 +
|title="0x37"|7
 +
|title="0x38"|8
 +
|title="0x39"|9
 +
|title="0x3A"|:
 +
|title="0x3B"|;
 +
|title="0x3C"|{{Hint|&nbsp;|Armor icon}}
 +
|title="0x3D"|=
 +
|title="0x3E"|{{Hint|&nbsp;|Wanted star icon}}
 +
|title="0x3F"|?
 +
|-
 +
!40
 +
|title="0x40"|&trade;
 +
|title="0x41"|A
 +
|title="0x42"|B
 +
|title="0x43"|C
 +
|title="0x44"|D
 +
|title="0x45"|E
 +
|title="0x46"|F
 +
|title="0x47"|G
 +
|title="0x48"|H
 +
|title="0x49"|I
 +
|title="0x4A"|J
 +
|title="0x4B"|K
 +
|title="0x4C"|L
 +
|title="0x4D"|M
 +
|title="0x4E"|N
 +
|title="0x4F"|O
 +
|-
 +
!50
 +
|title="0x50"|P
 +
|title="0x51"|Q
 +
|title="0x52"|R
 +
|title="0x53"|S
 +
|title="0x54"|T
 +
|title="0x55"|U
 +
|title="0x56"|V
 +
|title="0x57"|W
 +
|title="0x58"|X
 +
|title="0x59"|Y
 +
|title="0x5A"|Z
 +
|title="0x5B"|[
 +
|title="0x5C"|\
 +
|title="0x5D"|]
 +
|title="0x5E"|&iexcl;
 +
|title="0x5F"|&deg;
 +
|-
 +
!60
 +
|title="0x60"|`
 +
|title="0x61"|a
 +
|title="0x62"|b
 +
|title="0x63"|c
 +
|title="0x64"|d
 +
|title="0x65"|e
 +
|title="0x66"|f
 +
|title="0x67"|g
 +
|title="0x68"|h
 +
|title="0x69"|i
 +
|title="0x6A"|j
 +
|title="0x6B"|k
 +
|title="0x6C"|l
 +
|title="0x6D"|m
 +
|title="0x6E"|n
 +
|title="0x6F"|o
 +
|-
 +
!70
 +
|title="0x70"|p
 +
|title="0x71"|q
 +
|title="0x72"|r
 +
|title="0x73"|s
 +
|title="0x74"|t
 +
|title="0x75"|u
 +
|title="0x76"|v
 +
|title="0x77"|w
 +
|title="0x78"|x
 +
|title="0x79"|y
 +
|title="0x7A"|z
 +
|title="0x7B"|{{Hint|&nbsp;|Heart icon}}
 +
|title="0x7C"| |
 +
|title="0x7D" style="font-weight: bold;"|$
 +
|title="0x7E"|~
 +
|title="0x7F" style="font-weight: bold;"|)
 +
|-
 +
!80
 +
|title="0x80"|&Agrave;
 +
|title="0x81"|&Aacute;
 +
|title="0x82"|&Acirc;
 +
|title="0x83"|&Auml;
 +
|title="0x84"|&AElig;
 +
|title="0x85"|&Ccedil;
 +
|title="0x86"|&Egrave;
 +
|title="0x87"|&Eacute;
 +
|title="0x88"|&Ecirc;
 +
|title="0x89"|&Euml;
 +
|title="0x8A"|&Igrave;
 +
|title="0x8B"|&Iacute;
 +
|title="0x8C"|&Icirc;
 +
|title="0x8D"|&Iuml;
 +
|title="0x8E"|&Ograve;
 +
|title="0x8F"|&Oacute;
 +
|-
 +
!90
 +
|title="0x90"|&Ocirc;
 +
|title="0x91"|&Ouml;
 +
|title="0x92"|&Ugrave;
 +
|title="0x93"|&Uacute;
 +
|title="0x94"|&Ucirc;
 +
|title="0x95"|&Uuml;
 +
|title="0x96"|&szlig;
 +
|title="0x97"|&agrave;
 +
|title="0x98"|&aacute;
 +
|title="0x99"|&acirc;
 +
|title="0x9A"|&auml;
 +
|title="0x9B"|&aelig;
 +
|title="0x9C"|&ccedil;
 +
|title="0x9D"|&egrave;
 +
|title="0x9E"|&eacute;
 +
|title="0x9F"|&ecirc;
 +
|-
 +
!A0
 +
|title="0xA0"|&euml;
 +
|title="0xA1"|&igrave;
 +
|title="0xA2"|&iacute;
 +
|title="0xA3"|&icirc;
 +
|title="0xA4"|&iuml;
 +
|title="0xA5"|&ograve;
 +
|title="0xA6"|&oacute;
 +
|title="0xA7"|&ocirc;
 +
|title="0xA8"|&ouml;
 +
|title="0xA9"|&ugrave;
 +
|title="0xAA"|&uacute;
 +
|title="0xAB"|&ucirc;
 +
|title="0xAC"|&uuml;
 +
|title="0xAD"|&Ntilde;
 +
|title="0xAE"|&ntilde;
 +
|title="0xAF"|&iquest;
 +
|-
 +
!B0
 +
|title="0xB0" style="font-weight: bold;"|0
 +
|title="0xB1" style="font-weight: bold;"|1
 +
|title="0xB2" style="font-weight: bold;"|2
 +
|title="0xB3" style="font-weight: bold;"|3
 +
|title="0xB4" style="font-weight: bold;"|4
 +
|title="0xB5" style="font-weight: bold;"|5
 +
|title="0xB6" style="font-weight: bold;"|6
 +
|title="0xB7" style="font-weight: bold;"|7
 +
|title="0xB8" style="font-weight: bold;"|8
 +
|title="0xB9" style="font-weight: bold;"|9
 +
|title="0xBA" style="font-weight: bold;"|:
 +
|title="0xBB" style="font-weight: bold;"|a
 +
|}
  
INT32  - 4b  - Version? (Allways 0x080004)
+
==== Font Style 2 (Heading) ====
CHAR[4] - 4b  - TABL
+
{|class="charmap"
 
+
!
===Table Block===
+
!00
 
+
!01
INT32  - 4b  - Blocksize
+
!02
+
!03
//Array of [Blocksize / 12 Entries]
+
!04
CHAR[8] - 8b  - Subtablename
+
!05
INT32  - 4b  - Offset
+
!06
 +
!07
 +
!08
 +
!09
 +
!0A
 +
!0B
 +
!0C
 +
!0D
 +
!0E
 +
!0F
 +
|-
 +
!20
 +
|title="0x20"|&nbsp;
 +
|title="0x21" style="font-weight: bold;"|!
 +
|title="0x22"|"
 +
|title="0x23"|#
 +
|title="0x24" style="font-weight: bold;"|$
 +
|title="0x25"|%
 +
|title="0x26"|&amp;
 +
|title="0x27" style="font-weight: bold;"|'
 +
|title="0x28" style="font-weight: bold;"|(
 +
|title="0x29" style="font-weight: bold;"|)
 +
|title="0x2A"|*
 +
|title="0x2B"| +
 +
|title="0x2C"|,
 +
|title="0x2D"| -
 +
|title="0x2E" style="font-weight: bold;"|.
 +
|title="0x2F"|/
 +
|-
 +
!30
 +
|title="0x30" style="font-weight: bold;"|0
 +
|title="0x31" style="font-weight: bold;"|1
 +
|title="0x32" style="font-weight: bold;"|2
 +
|title="0x33" style="font-weight: bold;"|3
 +
|title="0x34" style="font-weight: bold;"|4
 +
|title="0x35" style="font-weight: bold;"|5
 +
|title="0x36" style="font-weight: bold;"|6
 +
|title="0x37" style="font-weight: bold;"|7
 +
|title="0x38" style="font-weight: bold;"|8
 +
|title="0x39" style="font-weight: bold;"|9
 +
|title="0x3A" style="font-weight: bold;"|:
 +
|title="0x3B"|;
 +
|title="0x3C"|{{Hint|&nbsp;|Armor icon}}
 +
|title="0x3D"|=
 +
|title="0x3E"|{{Hint|&nbsp;|Wanted star icon}}
 +
|title="0x3F"|?
 +
|-
 +
!40
 +
|title="0x40"|&trade;
 +
|title="0x41" style="font-weight: bold;"|a
 +
|title="0x42" style="font-weight: bold;"|b
 +
|title="0x43" style="font-weight: bold;"|c
 +
|title="0x44" style="font-weight: bold;"|d
 +
|title="0x45" style="font-weight: bold;"|e
 +
|title="0x46" style="font-weight: bold;"|f
 +
|title="0x47" style="font-weight: bold;"|g
 +
|title="0x48" style="font-weight: bold;"|h
 +
|title="0x49" style="font-weight: bold;"|i
 +
|title="0x4A" style="font-weight: bold;"|j
 +
|title="0x4B" style="font-weight: bold;"|k
 +
|title="0x4C" style="font-weight: bold;"|l
 +
|title="0x4D" style="font-weight: bold;"|m
 +
|title="0x4E" style="font-weight: bold;"|n
 +
|title="0x4F" style="font-weight: bold;"|o
 +
|-
 +
!50
 +
|title="0x50" style="font-weight: bold;"|p
 +
|title="0x51" style="font-weight: bold;"|q
 +
|title="0x52" style="font-weight: bold;"|r
 +
|title="0x53" style="font-weight: bold;"|s
 +
|title="0x54" style="font-weight: bold;"|t
 +
|title="0x55" style="font-weight: bold;"|u
 +
|title="0x56" style="font-weight: bold;"|v
 +
|title="0x57" style="font-weight: bold;"|w
 +
|title="0x58" style="font-weight: bold;"|x
 +
|title="0x59" style="font-weight: bold;"|y
 +
|title="0x5A" style="font-weight: bold;"|z
 +
|title="0x5B"|[
 +
|title="0x5C"|\
 +
|title="0x5D"|]
 +
|title="0x5E"|&iexcl;
 +
|title="0x5F"|&deg;
 +
|-
 +
!60
 +
|title="0x60"|`
 +
|title="0x61" style="font-weight: bold;"|a
 +
|title="0x62" style="font-weight: bold;"|b
 +
|title="0x63" style="font-weight: bold;"|c
 +
|title="0x64" style="font-weight: bold;"|d
 +
|title="0x65" style="font-weight: bold;"|e
 +
|title="0x66" style="font-weight: bold;"|f
 +
|title="0x67" style="font-weight: bold;"|g
 +
|title="0x68" style="font-weight: bold;"|h
 +
|title="0x69" style="font-weight: bold;"|i
 +
|title="0x6A" style="font-weight: bold;"|j
 +
|title="0x6B" style="font-weight: bold;"|k
 +
|title="0x6C" style="font-weight: bold;"|l
 +
|title="0x6D" style="font-weight: bold;"|m
 +
|title="0x6E" style="font-weight: bold;"|n
 +
|title="0x6F" style="font-weight: bold;"|o
 +
|-
 +
!70
 +
|title="0x70" style="font-weight: bold;"|p
 +
|title="0x71" style="font-weight: bold;"|q
 +
|title="0x72" style="font-weight: bold;"|r
 +
|title="0x73" style="font-weight: bold;"|s
 +
|title="0x74" style="font-weight: bold;"|t
 +
|title="0x75" style="font-weight: bold;"|u
 +
|title="0x76" style="font-weight: bold;"|v
 +
|title="0x77" style="font-weight: bold;"|w
 +
|title="0x78" style="font-weight: bold;"|x
 +
|title="0x79" style="font-weight: bold;"|y
 +
|title="0x7A" style="font-weight: bold;"|z
 +
|title="0x7B"|{{Hint|&nbsp;|Heart icon}}
 +
|title="0x7C"| |
 +
|title="0x7D" style="font-weight: bold;"|$
 +
|title="0x7E"|~
 +
|title="0x7F" style="font-weight: bold;"|)
 +
|-
 +
!80
 +
|title="0x80" style="font-weight: bold;"|&agrave;
 +
|title="0x81" style="font-weight: bold;"|&aacute;
 +
|title="0x82" style="font-weight: bold;"|&acirc;
 +
|title="0x83" style="font-weight: bold;"|&auml;
 +
|title="0x84" style="font-weight: bold;"|&aelig;
 +
|title="0x85" style="font-weight: bold;"|&ccedil;
 +
|title="0x86" style="font-weight: bold;"|&egrave;
 +
|title="0x87" style="font-weight: bold;"|&eacute;
 +
|title="0x88" style="font-weight: bold;"|&ecirc;
 +
|title="0x89" style="font-weight: bold;"|&euml;
 +
|title="0x8A" style="font-weight: bold;"|&igrave;
 +
|title="0x8B" style="font-weight: bold;"|&iacute;
 +
|title="0x8C" style="font-weight: bold;"|&icirc;
 +
|title="0x8D" style="font-weight: bold;"|&iuml;
 +
|title="0x8E" style="font-weight: bold;"|&ograve;
 +
|title="0x8F" style="font-weight: bold;"|&oacute;
 +
|-
 +
!90
 +
|title="0x90" style="font-weight: bold;"|&ocirc;
 +
|title="0x91" style="font-weight: bold;"|&ouml;
 +
|title="0x92" style="font-weight: bold;"|&ugrave;
 +
|title="0x93" style="font-weight: bold;"|&uacute;
 +
|title="0x94" style="font-weight: bold;"|&ucirc;
 +
|title="0x95" style="font-weight: bold;"|&uuml;
 +
|title="0x96" style="font-weight: bold;"|&szlig;
 +
|title="0x97" style="font-weight: bold;"|&agrave;
 +
|title="0x98" style="font-weight: bold;"|&aacute;
 +
|title="0x99" style="font-weight: bold;"|&acirc;
 +
|title="0x9A" style="font-weight: bold;"|&auml;
 +
|title="0x9B" style="font-weight: bold;"|&aelig;
 +
|title="0x9C" style="font-weight: bold;"|&ccedil;
 +
|title="0x9D" style="font-weight: bold;"|&egrave;
 +
|title="0x9E" style="font-weight: bold;"|&eacute;
 +
|title="0x9F" style="font-weight: bold;"|&ecirc;
 +
|-
 +
!A0
 +
|title="0xA0" style="font-weight: bold;"|&euml;
 +
|title="0xA1" style="font-weight: bold;"|&igrave;
 +
|title="0xA2" style="font-weight: bold;"|&iacute;
 +
|title="0xA3" style="font-weight: bold;"|&icirc;
 +
|title="0xA4" style="font-weight: bold;"|&iuml;
 +
|title="0xA5" style="font-weight: bold;"|&ograve;
 +
|title="0xA6" style="font-weight: bold;"|&oacute;
 +
|title="0xA7" style="font-weight: bold;"|&ocirc;
 +
|title="0xA8" style="font-weight: bold;"|&ouml;
 +
|title="0xA9" style="font-weight: bold;"|&ugrave;
 +
|title="0xAA" style="font-weight: bold;"|&uacute;
 +
|title="0xAB" style="font-weight: bold;"|&ucirc;
 +
|title="0xAC" style="font-weight: bold;"|&uuml;
 +
|title="0xAD" style="font-weight: bold;"|&ntilde;
 +
|title="0xAE" style="font-weight: bold;"|&ntilde;
 +
|title="0xAF" style="font-weight: bold;"|&iquest;
 +
|-
 +
!B0
 +
|title="0xB0" style="font-weight: bold;"|0
 +
|title="0xB1" style="font-weight: bold;"|1
 +
|title="0xB2" style="font-weight: bold;"|2
 +
|title="0xB3" style="font-weight: bold;"|3
 +
|title="0xB4" style="font-weight: bold;"|4
 +
|title="0xB5" style="font-weight: bold;"|5
 +
|title="0xB6" style="font-weight: bold;"|6
 +
|title="0xB7" style="font-weight: bold;"|7
 +
|title="0xB8" style="font-weight: bold;"|8
 +
|title="0xB9" style="font-weight: bold;"|9
 +
|title="0xBA" style="font-weight: bold;"|:
 +
|title="0xBB" style="font-weight: bold;"|a
 +
|title="0xBC" style="font-weight: bold;"|b
 +
|title="0xBD" style="font-weight: bold;"|c
 +
|title="0xBE" style="font-weight: bold;"|d
 +
|title="0xBF" style="font-weight: bold;"|e
 +
|-
 +
!C0
 +
|title="0xC0" style="font-weight: bold;"|f
 +
|title="0xC1" style="font-weight: bold;"|g
 +
|title="0xC2" style="font-weight: bold;"|h
 +
|title="0xC3" style="font-weight: bold;"|i
 +
|title="0xC4" style="font-weight: bold;"|j
 +
|title="0xC5" style="font-weight: bold;"|k
 +
|title="0xC6" style="font-weight: bold;"|l
 +
|title="0xC7" style="font-weight: bold;"|m
 +
|title="0xC8" style="font-weight: bold;"|n
 +
|title="0xC9" style="font-weight: bold;"|o
 +
|title="0xCA" style="font-weight: bold;"|p
 +
|title="0xCB" style="font-weight: bold;"|q
 +
|title="0xCC" style="font-weight: bold;"|r
 +
|title="0xCD" style="font-weight: bold;"|s
 +
|title="0xCE" style="font-weight: bold;"|t
 +
|title="0xCF" style="font-weight: bold;"|u
 +
|-
 +
!D0
 +
|title="0xD0" style="font-weight: bold;"|v
 +
|title="0xD1" style="font-weight: bold;"|w
 +
|title="0xD2" style="font-weight: bold;"|x
 +
|title="0xD3" style="font-weight: bold;"|y
 +
|title="0xD4" style="font-weight: bold;"|z
 +
|title="0xD5" style="font-weight: bold;"|&agrave;
 +
|title="0xD6" style="font-weight: bold;"|&aacute;
 +
|title="0xD7" style="font-weight: bold;"|&acirc;
 +
|title="0xD8" style="font-weight: bold;"|&auml;
 +
|title="0xD9" style="font-weight: bold;"|&aelig;
 +
|title="0xDA" style="font-weight: bold;"|&ccedil;
 +
|title="0xDB" style="font-weight: bold;"|&egrave;
 +
|title="0xDC" style="font-weight: bold;"|&eacute;
 +
|title="0xDD" style="font-weight: bold;"|&ecirc;
 +
|title="0xDE" style="font-weight: bold;"|&euml;
 +
|title="0xDF" style="font-weight: bold;"|&igrave;
 +
|-
 +
!E0
 +
|title="0xE0" style="font-weight: bold;"|&iacute;
 +
|title="0xE1" style="font-weight: bold;"|&icirc;
 +
|title="0xE2" style="font-weight: bold;"|&iuml;
 +
|title="0xE3" style="font-weight: bold;"|&ograve;
 +
|title="0xE4" style="font-weight: bold;"|&oacute;
 +
|title="0xE5" style="font-weight: bold;"|&ocirc;
 +
|title="0xE6" style="font-weight: bold;"|&ouml;
 +
|title="0xE7" style="font-weight: bold;"|&ugrave;
 +
|title="0xE8" style="font-weight: bold;"|&uacute;
 +
|title="0xE9" style="font-weight: bold;"|&ucirc;
 +
|title="0xEA" style="font-weight: bold;"|&uuml;
 +
|title="0xEB" style="font-weight: bold;"|&szlig;
 +
|title="0xEC" style="font-weight: bold;"|&ntilde;
 +
|title="0xED" style="font-weight: bold;"|&iquest;
 +
|title="0xEE" style="font-weight: bold;"|'
 +
|title="0xEF" style="font-weight: bold;"|.
 +
|}
 +
<small>
 +
* Characters in italic use Rage Italic font.
 +
* Characters in bold use Pricedown font or have a dirty look.
 +
* Hover your mouse over the dotted line for characters that cannot be displayed in the browser.
 +
</small>
  
===TKEY and TDAT===
+
* See also: [[GXT/Japanese|Japanese character map]]
  
====TKEY====
+
== Tokens ==
 +
A token is a character or string surrounded by <code>~</code> and is used for displaying colors, symbols, dynamic text, and button controls in text. Tokens with visible effects are listed in tables below. Note that using <code>~</code> by itself will crash the game when the game attempts to display it.
  
CHAR[4] - 4b  - TKEY
+
=== Symbols and colors ===
INT32  - 4b  - Blocksize
+
{|class="wikitable center-col-1 center-col-2 center-col-3 center-col-4"
+
! style="width: 5em;"  | Token
//Array of [Blocksize / 12]
+
! style="width: 15em;" | {{Icon|3}}
INT32  - 4b  - Entryoffset
+
! style="width: 15em;" | {{Icon|VC}}
CHAR[8] - 8b  - Entryname
+
! style="width: 15em;" | {{Icon|SA}}
 
+
! style="width: 15em;" | {{Icon|LCS}}
Unlike San Andreas entrynames are stored directly in 8b chararrays here. Ths means to calculate the entries in the table you have to divide the blocksize through 12.
+
! style="width: 15em;" | {{Icon|IV}}
 
 
====TDAT====
 
 
 
CHAR[4] - 4b  - TDAT
 
INT32  - 4b  - Blocksize
 
 
 
The TDAT-Block contains the strings which are displayed by the game. But here are some differencies towards San Andreas. The strings are encodet in unicode, which means that each character takes the space of 2 characters (which means 2 bytes per character). Mostly the last byte is 0x00.
 
 
 
==GTA2 Format==
 
 
 
Except for additional header at beginning gta2 gxt files are identical to GTA3 format.
 
 
The first 4 bytes can be one of following, and identify the language for the file:
 
GBLE - english
 
GBLF - french
 
GBLG - german
 
GBLI - italian
 
GBLS - spanish
 
GBLJ - japanese
 
 
 
A uint16 file version follows which is always 100 (decimal)
 
 
 
Text is stored with some specialities, characters are 16 bit while only one of these bytes is actual character the other may store special data such as gang message icon id, etc.. the text is zero-terminated.
 
 
 
The rest of file is same as gta3 with familiar tkey & tdat sections.
 
 
 
=GXT Editing=
 
 
 
==Symbols & Colorcodes (Control Character)==
 
{|
 
! Symbol
 
! Description
 
 
|-
 
|-
 
| ~1~
 
| ~1~
| number within a text
+
| colspan="4" | number within a text
 +
| {{a|c}} | -
 +
|-
 +
| ~A~
 +
| -
 +
| -
 +
| L3 icon (PS2) / LStick icon (XBOX)
 +
| {{a|c}} | -
 +
| {{a|c}} | -
 +
|-
 +
| ~B~
 +
| -
 +
| bold and unbold text; text must be enclosed by two of these tokens
 +
| {{a|c}} | -
 +
| {{a|c}} | -
 +
| {{a|c}} | -
 +
|-
 +
| ~K~
 +
| -
 +
| -
 +
| L1 icon (PS2) / LT icon (XBOX)
 +
| {{a|c}} | -
 +
| {{a|c}} | -
 +
|-
 +
| ~Y~
 +
| -
 +
| -
 +
| {{a|c}} | -
 +
| style="color:#FFE34F; text-align: center;" | yellow text
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~a~
 
| ~a~
| text within a text
+
| colspan="4" | area text
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~b~
 
| ~b~
 +
| style="color:#80A7F3;" | blue text
 +
| style="color:#1B5982;" | blue text
 
| blue text
 
| blue text
 +
| style="color:#4D9BD2; text-align: center;" | blue text
 +
| style="color:#336972; text-align: center;" | blue text
 +
|-
 +
| ~c~
 +
| -
 +
| -
 +
| R3 icon (PS2) / RStick icon (XBOX)
 +
| {{a|c}} | -
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~d~
 
| ~d~
 +
| -
 +
| -
 
| &#9660;-icon
 
| &#9660;-icon
 +
| {{a|c}} | -
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~g~
 
| ~g~
 +
| style="color:#5FA06A" | green text
 +
| style="color:#FF96E1;" | hot pink text <!--(default color of pink styled text)-->
 
| green text
 
| green text
 +
| style="color:#4B974B; text-align: center;" | green text
 +
| style="color:#577c58; text-align: center;" | green text
 
|-
 
|-
 
| ~h~
 
| ~h~
| highlight
+
| colspan="2" style="color:#E1E1E1;" | white text
 +
| {{a|c}} | highlight
 +
| style="text-align: center;" | white text
 +
| style="color:#d2d2d2; text-align: center;" | white text
 
|-
 
|-
 
| ~j~
 
| ~j~
| ? (Consoles Only ?)
+
| -
 +
| -
 +
| R1 icon (PS2) / RT icon (XBOX)
 +
| {{a|c}} | -
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~k~
 
| ~k~
| Key (followed by keycode)
+
| colspan="4" | key (followed by [[#Buttons|buttons]])
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~l~
 
| ~l~
 
| black text
 
| black text
 +
| forces text to default color and ignores set colors
 +
| black text
 +
|
 +
| style="text-align: center;" | black text
 +
|-
 +
| ~m~
 +
| -
 +
| -
 +
| L2 icon (PS2) / WHITE icon (XBOX)
 +
| {{a|c}} | -
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~n~
 
| ~n~
| newline
+
| -
|-
+
| style="text-align: center;" | Empty character, allows blanking out subtitles
| ~m~
+
| style="text-align: center;" | newline
| ? (Consoles Only ?)
+
| style="text-align: center;" | newline
 +
| style="text-align: center;" | newline
 
|-
 
|-
 
| ~o~
 
| ~o~
| ? (Consoles Only ?)
+
| -
 +
| style="color:#E57D7E;" | pink text
 +
| Circle icon (PS2) / B icon (XBOX)
 +
| style="color:#E57D7E; text-align: center;" | pink text
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~p~
 
| ~p~
| purple text
+
| colspan="2" style="color:#A86EFC;" | purple text
 +
| {{a|c}} | purple text
 +
| style="color:#9752C5; text-align: center;" | purple text
 +
| style="color:#986f9e; text-align: center;" | purple text
 +
|-
 +
| ~q~
 +
| -
 +
| style="color:#C790CB;" | plum pink text
 +
| Square icon (PS2) / X icon (XBOX)
 +
| style="color:#C790CB; text-align: center;" | plum pink text
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~r~
 
| ~r~
 +
| style="color:#712B49;" | red text
 +
| style="color:#FF96E1;" | hot pink text
 
| red text
 
| red text
 +
| style="color:#AE0000; text-align: center;" | red text
 +
| style="color:#994545; text-align: center;" | red text
 
|-
 
|-
 
| ~s~
 
| ~s~
| Reset to standart
+
| -
 +
| -
 +
| reset color to standard
 +
| {{a|c}} | -
 +
| style="color:#e1e1e1; text-align: center;" | white text
 +
|-
 +
| ~t~
 +
| -
 +
| style="color:#56D492;" | green text
 +
| Triangle icon (PS2) / Y icon (XBOX)
 +
| style="color:#56D492; text-align: center;" | green text
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~u~
 
| ~u~
 +
| -
 +
| -
 
| &#9650;-icon
 
| &#9650;-icon
 +
| {{a|c}} | -
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~v~
 
| ~v~
| ? (Consoles Only ?)
+
| -
 +
| -
 +
| R2 icon (PS2) / BLACK icon (XBOX)
 +
| {{a|c}} | -
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~w~
 
| ~w~
| white text
+
| colspan="2" style="color:#AFAFAF;" | gray text
 +
| {{a|c}} | white text
 +
| style="color:#E1E1E1; text-align: center;" | white text
 +
| style="color:#e1e1e1; text-align: center;" | white text
 
|-
 
|-
 
| ~x~
 
| ~x~
| ? (Consoles Only ?)
+
| -
 +
| style="color:#8492C5;" | light blue text
 +
| Cross icon (PS2) / A icon (XBOX)
 +
| style="color:#8492C5; text-align: center;" | light blue text
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~y~
 
| ~y~
 +
| style="color:#D2C46A;" | yellow text
 +
| style="color:#FFE34F;" | yellow text
 
| yellow text
 
| yellow text
 +
| style="color:#FFFF00; text-align: center;" | yellow text
 +
| style="color:#d7c579; text-align: center;" | yellow text
 
|-
 
|-
 
| ~z~
 
| ~z~
 +
| -
 +
| -
 
| subtitle (doesn't shown when the Subtitles option is off)
 
| subtitle (doesn't shown when the Subtitles option is off)
 +
| {{a|c}} | -
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~<~
 
| ~<~
 +
| -
 +
| -
 
| &#9668;-icon
 
| &#9668;-icon
 +
| {{a|c}} | -
 +
| {{a|c}} | -
 
|-
 
|-
 
| ~>~
 
| ~>~
 +
| -
 +
| -
 
| &#9658;-icon
 
| &#9658;-icon
 +
| {{a|c}} | -
 +
| {{a|c}} | -
 +
|-
 +
| ~f~
 +
| -
 +
| Text flashing
 +
| -
 +
| {{a|c}} | -
 +
| {{a|c}} | -
 
|}
 
|}
 +
In GTA III's original GXT files for the PC version, the token <code>l</code> is unused. The token <code>W</code> appears erroneously in GXT key <code>AS3_A</code> in all language files except the Italian one. In Vice City's original GXT files for the PC version, the tokens <code>B</code> and <code>l</code> are unused. <code>t</code> and <code>x</code> are unused in the English language file but appear to be used erroneously in other language files. The token <code>c</code> appears erroneously in GXT key <code>FIN_B5</code>; it could have represented the cyan color to match the color of the blip the text represents.{{Ref|1|[1]}} The token also appears in GXT key <code>RCH1_3</code> in all language files except the English one.
  
==Keypresses==
+
=== Buttons ===
====Foot Controls====
+
You can use [[opcode]] [[00E1]] to check if these keys are being pressed.
{|
+
==== Foot Controls ====
 +
{|class="wikitable collapsible"
 
! Key
 
! Key
 +
! Game
 
! Entry
 
! Entry
! SCM-Relation
 
 
|-
 
|-
 
| Fire
 
| Fire
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~PED_FIREWEAPON~
 
| ~PED_FIREWEAPON~
| 00E1: player 0 pressed_key 17
 
 
|-
 
|-
 
| Next Weapon / Target
 
| Next Weapon / Target
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~PED_CYCLE_WEAPON_RIGHT~
 
| ~PED_CYCLE_WEAPON_RIGHT~
| 00E1: player 0 pressed_key 7
 
 
|-
 
|-
 
| Previous Weapon / Target
 
| Previous Weapon / Target
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~PED_CYCLE_WEAPON_LEFT~
 
| ~PED_CYCLE_WEAPON_LEFT~
| 00E1: player 0 pressed_key 5
 
 
|-
 
|-
| Group Ctrl Foward (SA)
+
| Group Ctrl Forward
 +
| align="center" | {{Icon|SA}}
 
| ~GROUP_CONTROL_FWD~
 
| ~GROUP_CONTROL_FWD~
| 00E1: player 0 pressed_key 9
 
 
|-
 
|-
| Group Ctrl Back (SA)
+
| Group Ctrl Back
 +
| align="center" | {{Icon|SA}}
 
| ~GROUP_CONTROL_BWD~
 
| ~GROUP_CONTROL_BWD~
| 00E1: player 0 pressed_key 8
 
 
|-
 
|-
| Conversation - No (SA)
+
| Conversation - No
 +
| align="center" | {{Icon|SA}}
 
| ~CONVERSATION_NO~
 
| ~CONVERSATION_NO~
| 00E1: player 0 pressed_key 10
 
 
|-
 
|-
| Conversation - Yes (SA)
+
| Conversation - Yes
 +
| align="center" | {{Icon|SA}}
 
| ~CONVERSATION_YES~
 
| ~CONVERSATION_YES~
| 00E1: player 0 pressed_key 11
 
 
|-
 
|-
| Foward
+
| Forward
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~GO_FORWARD~
 
| ~GO_FORWARD~
| 00E1: player 0 pressed_key 1 *
 
 
|-
 
|-
 
| Backwards
 
| Backwards
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~GO_BACK~
 
| ~GO_BACK~
| 00E1: player 0 pressed_key 1 *
 
 
|-
 
|-
 
| Left
 
| Left
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~GO_LEFT~
 
| ~GO_LEFT~
| 00E1: player 0 pressed_key 0 *
 
 
|-
 
|-
 
| Right
 
| Right
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~GO_RIGHT~
 
| ~GO_RIGHT~
| 00E1: player 0 pressed_key 0 *
 
 
|-
 
|-
 
| Zoom In
 
| Zoom In
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~PED_SNIPER_ZOOM_IN~
 
| ~PED_SNIPER_ZOOM_IN~
| 00E1: player 0 pressed_key 5
 
 
|-
 
|-
 
| Zoom Out
 
| Zoom Out
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~PED_SNIPER_ZOOM_OUT~
 
| ~PED_SNIPER_ZOOM_OUT~
| 00E1: player 0 pressed_key 7
 
 
|-
 
|-
 
| Enter+Exit
 
| Enter+Exit
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_ENTER_EXIT~
 
| ~VEHICLE_ENTER_EXIT~
| 00E1: player 0 pressed_key 15
 
 
|-
 
|-
 
| Change Camera
 
| Change Camera
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~
 
| ~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~
| 00E1: player 0 pressed_key 13
 
 
|-
 
|-
 
| Jump
 
| Jump
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~PED_JUMPING~
 
| ~PED_JUMPING~
| 00E1: player 0 pressed_key 14
 
 
|-
 
|-
 
| Sprint
 
| Sprint
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~PED_SPRINT~
 
| ~PED_SPRINT~
| 00E1: player 0 pressed_key 16
 
 
|-
 
|-
| Aim Weapon
+
| Target / Aim Weapon
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~PED_LOCK_TARGET~
 
| ~PED_LOCK_TARGET~
| 00E1: player 0 pressed_key 6
 
 
|-
 
|-
| Crouch (VC, SA)
+
| Crouch
 +
| align="center" | {{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~PED_DUCK~
 
| ~PED_DUCK~
| 00E1: player 0 pressed_key 18
 
 
|-
 
|-
| Action (VC, SA)
+
| Action
 +
| align="center" | {{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~PED_ANSWER_PHONE~
 
| ~PED_ANSWER_PHONE~
| 00E1: player 0 pressed_key 4
 
 
|-
 
|-
| Walk (SA)
+
| Walk
 +
| align="center" | {{Icon|SA}}
 
| ~SNEAK_ABOUT~
 
| ~SNEAK_ABOUT~
| 00E1: player 0 pressed_key LALT
 
 
|-
 
|-
 
| Look Behind
 
| Look Behind
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~PED_LOOKBEHIND~
 
| ~PED_LOOKBEHIND~
| 00E1: player 0 pressed_key 19
 
|}
 
{|
 
 
|-
 
|-
| * = needs another [[OpCode]]!
+
| Look Left
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}{{Ref|a|[a]}}
 +
| ~PED_1RST_PERSON_LOOK_LEFT~
 +
|-
 +
| Look Right
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}{{Ref|a|[a]}}
 +
| ~PED_1RST_PERSON_LOOK_RIGHT~
 +
|-
 +
| Look Up
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}{{Ref|a|[a]}}
 +
| ~PED_1RST_PERSON_LOOK_UP~
 +
|-
 +
| Look Down
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}{{Ref|a|[a]}}
 +
| ~PED_1RST_PERSON_LOOK_DOWN~
 +
|-
 +
| Next Target
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}{{Ref|a|[a]}}
 +
| ~PED_CYCLE_TARGET_LEFT~
 +
|-
 +
| Previous Target
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}{{Ref|a|[a]}}
 +
| ~PED_CYCLE_TARGET_RIGHT~
 
|-
 
|-
| 0494: get_joystick 0 data_to $MOVE_AXIS_X $MOVE_AXIS_Y $SPECIAL_AXIS_X $SPECIAL_AXIS_Y
+
| Center Camera
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}{{Ref|a|[a]}}
 +
| ~PED_CENTER_CAMERA_BEHIND_PLAYER~
 
|}
 
|}
  
====Vehicle Controls====
+
==== Vehicle Controls ====
{|
+
{|class="wikitable collapsible"
 
! Key
 
! Key
 +
! Game
 
! Entry
 
! Entry
! SCM-Relation
 
 
|-
 
|-
 
| Fire
 
| Fire
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_FIREWEAPON~
 
| ~VEHICLE_FIREWEAPON~
| 00E1: player 0 pressed_key 17
 
 
|-
 
|-
 
| Secondary Fire
 
| Secondary Fire
 +
| align="center" | {{Icon|SA}}
 
| ~VEHICLE_FIREWEAPON_ALT~
 
| ~VEHICLE_FIREWEAPON_ALT~
| 00E1: player 0 pressed_key 4
 
 
|-
 
|-
 
| Accelerate
 
| Accelerate
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_ACCELERATE~
 
| ~VEHICLE_ACCELERATE~
| 00E1: player 0 pressed_key 16
 
 
|-
 
|-
 
| Brake / Reverse
 
| Brake / Reverse
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_BRAKE~
 
| ~VEHICLE_BRAKE~
| 00E1: player 0 pressed_key 14
 
 
|-
 
|-
 
| Left
 
| Left
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_STEERLEFT~
 
| ~VEHICLE_STEERLEFT~
| 00E1: player 0 pressed_key 0 *
 
 
|-
 
|-
 
| Right
 
| Right
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_STEERRIGHT~
 
| ~VEHICLE_STEERRIGHT~
| 00E1: player 0 pressed_key 0 *
 
 
|-
 
|-
| Steer Foward / Down
+
| Steer Forward / Down
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_STEERDOWN~
 
| ~VEHICLE_STEERDOWN~
| 00E1: player 0 pressed_key 1 *
 
 
|-
 
|-
 
| Steer Back / Up
 
| Steer Back / Up
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_STEERUP~
 
| ~VEHICLE_STEERUP~
| 00E1: player 0 pressed_key 1 *
 
 
|-
 
|-
 
| Enter+Exit
 
| Enter+Exit
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_ENTER_EXIT~
 
| ~VEHICLE_ENTER_EXIT~
| 00E1: player 0 pressed_key 15
 
 
|-
 
|-
 
| Trip Skip
 
| Trip Skip
 +
| align="center" | {{Icon|SA}}
 
| ~CONVERSATION_YES~
 
| ~CONVERSATION_YES~
| 00E1: player 0 pressed_key 11
+
|-
 +
| Change Radio Station
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}
 +
| ~VEHICLE_CHANGE_RADIO_STATION~
 
|-
 
|-
 
| Next Radio Station
 
| Next Radio Station
 +
| align="center" | {{Icon|SA}}
 
| ~VEHICLE_RADIO_STATION_UP~
 
| ~VEHICLE_RADIO_STATION_UP~
| 00E1: player 0 pressed_key 8
 
 
|-
 
|-
 
| Previous Radio Station
 
| Previous Radio Station
 +
| align="center" | {{Icon|SA}}
 
| ~VEHICLE_RADIO_STATION_DOWN~
 
| ~VEHICLE_RADIO_STATION_DOWN~
| 00E1: player 0 pressed_key 9
 
 
|-
 
|-
| User Track Skip (SA)
+
| User Track Skip
 +
| align="center" | {{Icon|SA}}
 
| none
 
| none
 
|-
 
|-
 
| Horn
 
| Horn
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_HORN~
 
| ~VEHICLE_HORN~
| 00E1: player 0 pressed_key 18
 
 
|-
 
|-
 
| Sub-mission
 
| Sub-mission
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~TOGGLE_SUBMISSIONS~
 
| ~TOGGLE_SUBMISSIONS~
| 00E1: player 0 pressed_key 19
 
 
|-
 
|-
 
| Change Camera
 
| Change Camera
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~
 
| ~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~
| 00E1: player 0 pressed_key 13
 
 
|-
 
|-
 
| Handbrake
 
| Handbrake
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_HANDBRAKE~
 
| ~VEHICLE_HANDBRAKE~
| 00E1: player 0 pressed_key 6
 
 
|-
 
|-
| Look Behind
+
| Mouse Look
| none
+
| align="center" | {{Icon|SA}}
|-
 
| Mouse Look (SA)
 
 
| ~VEHICLE_MOUSELOOK~
 
| ~VEHICLE_MOUSELOOK~
| 00E1: player 0 pressed_key RMB
 
 
|-
 
|-
 
| Look Left
 
| Look Left
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_LOOKLEFT~
 
| ~VEHICLE_LOOKLEFT~
| 00E1: player 0 pressed_key 5
 
 
|-
 
|-
 
| Look Right
 
| Look Right
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_LOOKRIGHT~
 
| ~VEHICLE_LOOKRIGHT~
| 00E1: player 0 pressed_key 7
 
 
|-
 
|-
| Special Ctrl Left
+
| Turret Left / Special Ctrl Left
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_TURRETLEFT~
 
| ~VEHICLE_TURRETLEFT~
| 00E1: player 0 pressed_key 2 *
 
 
|-
 
|-
| Special Ctrl Right
+
| Turret Right / Special Ctrl Right
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_TURRETRIGHT~
 
| ~VEHICLE_TURRETRIGHT~
| 00E1: player 0 pressed_key 2 *
 
 
|-
 
|-
| Special Ctrl Up
+
| Turret Up / Special Ctrl Up
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_TURRETUP~
 
| ~VEHICLE_TURRETUP~
| 00E1: player 0 pressed_key 3 *
 
 
|-
 
|-
| Special Ctrl Down
+
| Turret Down / Special Ctrl Down
 +
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
 
| ~VEHICLE_TURRETDOWN~
 
| ~VEHICLE_TURRETDOWN~
| 00E1: player 0 pressed_key 3 *
 
|}
 
{|
 
 
|-
 
|-
| * = needs another [[OpCode]]!
+
| Look Behind
|-
+
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}{{Ref|b|[b]}}
| 0494: get_joystick 0 data_to $MOVE_AXIS_X $MOVE_AXIS_Y $SPECIAL_AXIS_X $SPECIAL_AXIS_Y
+
| ~VEHICLE_LOOKBEHIND~
 
|}
 
|}
 +
:a. {{Note|a}} Classic controls key only
 +
:b. {{Note|b}} Hardcoded key in III and VC, unavailable in SA
  
====Unused====
+
==== Unused ====
  
Here are some keypress codes only used during development stage. They were removed or replaced later but probably they are still working. Maybe this is usefull for further research. Some are only used in PS2 Version.
+
Here are some keypress codes only used during development stage. They were removed or replaced later but probably they are still working. Maybe this is useful for further research. Some are only used in PS2 Version.
  
 
{|
 
{|
!
 
|-
 
 
|~TAKE_SCREEN_SHOT~
 
|~TAKE_SCREEN_SHOT~
 
|-
 
|-
Line 525: Line 1,911:
 
|-
 
|-
 
|~NETWORK_TALK~
 
|~NETWORK_TALK~
 +
|}
 +
 +
==Tools==
 +
{| class="center-col-1"
 +
| {{Icon|2}} || [http://gtamp.com/GTA2/gta2gxt.rar GTA2 GXT Editor v2.0] - by {{U|Delfi}}
 +
|-
 +
| {{Icon|t}} {{Icon|LCS}} {{Icon|VCS}} || [http://web.archive.org/web/20070102011246/http://zverik.rbcmail.ru/gxtedit13.zip Grand Theft Auto GXT Editor v1.3] - by Zverik, retrieved from archive.org
 +
|-
 +
| {{Icon|t}} {{Icon|LCS}} {{Icon|VCS}} {{Icon|4}} || [http://sannybuilder.com/forums/viewtopic.php?pid=9533 SAGE v0.9.7] - by AleX AciD
 +
|-
 +
| {{Icon|3}} {{Icon|VC}} {{Icon|LCS}} {{Icon|VCS}} || [http://gta.ferodesign.de/ GTA Texter v2.0b3] - by feroCT5
 +
|-
 +
| {{Icon|3}} || {{GTAG|1075|GXT Editor 1.3}} - by Jevon
 +
|-
 +
| {{Icon|VC}} {{Icon|LCS}} {{Icon|VCS}} || [[GXT Editor (VC)|GTA: Vice City GXT Editor v1.2]] - by {{U|CyQ}}
 
|-
 
|-
|~SHOW_MOUSE_POINTER_TOGGLE~
+
| {{Icon|VC}} {{Icon|SA}} || [https://github.com/CookiePLMonster/GXT-Builder GXT Builder], by {{U|Silent}}
 
|-
 
|-
|~PED_1RST_PERSON_LOOK_DOWN~
+
| {{Icon|SA}} || [http://media.gtanet.com/hosted/gtatools.com/filedb/files/gta_sa_gxt.rar GTA San Andreas Text Editor] - by {{U|JernejL}}
 
|-
 
|-
|~PED_1RST_PERSON_LOOK_UP~
+
| {{Icon|SA}} || [http://www.thegtaplace.com/downloads/f568-gta-san-andreas-gxt-editor-1-3 GTA: San Andreas GXT Editor v1.3] - by {{U|Hammer83}}
 
|-
 
|-
|~PED_1RST_PERSON_LOOK_RIGHT~
+
| {{Icon|SA}} || [http://www.gtavision.com/index.php?section=downloads&site=download&id=1245 A-GXT Editor v1.0a] - by {{U|Aschratt}}
 
|-
 
|-
|~PED_1RST_PERSON_LOOK_LEFT~
+
| {{Icon|SA}} {{Icon|4}} || [http://www.x-squares.com/File/fi/0/X_GXT_Editor.aspx X GXT Editor v2.1] - by {{U|xmen}}
 
|-
 
|-
|~PED_CENTER_CAMERA_BEHIND_PLAYER~
+
| {{Icon|4}} || [[OpenIV]] - Have Inbuilt GXT file viewer
 
|}
 
|}
 +
<!--{{Icon|3}} [http://www.gtatools.com/filedb/action.php?action=file&id=22 GTA 3 GXT] - by {{U|JernejL}}-->
 +
 +
==Reference==
 +
:1. {{Note|1}} {{GTAF|post|849281|1068784991}}
 +
 +
==External links==
 +
*{{Icon|2}} [http://spaceeinstein.altervista.org/gxt/GTA2_EN.txt GXT entries in e.gxt]
 +
*{{Icon|t}} {{Icon|LCS}} {{Icon|VCS}} [https://web.archive.org/web/20171028075956/http://public.sannybuilder.com/GXT/ List of all English GXT entries]
 +
*{{Icon|SA}} [https://anonymfile.com/39Lk/american.gxt San Andreas american.gxt file]
 +
*{{Icon|VCS}} [https://anonymfile.com/VxjB/american.gxt Vice City Stories american.gxt file]
 +
*{{Icon|LCS}} [https://anonymfile.com/k0Qb/english.gxt Liberty City Stories english.gxt file]
 +
*{{Icon|4}} [https://anonymfile.com/4YV8/american.gxt IV american.gxt file]
 +
*{{Icon|3}} {{Icon|VC}} [http://spaceeinstein.altervista.org/gxt/ List of non-English GXT entries]
 +
*{{Icon|4}} [http://public.sannybuilder.com/GTA4/american.gxt.reversed.rar Some of GTA IV GXT text entry names]
 +
*{{GTAF|458584|List of usable characters}}
  
[[Category:Other Formats]]
+
{{N|IV|VCS|LCS|SA|VC|III}}
 +
[[Category:File Formats]][[Category:GTA 2]]

Latest revision as of 10:43, 10 September 2023

A GTA Text (GXT) file is a file that contains strings that are presented to the player in GTA2 and above. Their placement differs between games, but GXT files are usually located in a text directory in the game installation folder. In games other than GTA 2, there is one GXT file for each language, but the number of GXT files does not necessarily match the number of supported languages.

Purpose

GXT files act as dictionaries that map short, symbolic strings (or some other unique value) to longer strings. Programmers use only the short key strings (such as "GM_OVR"), and then before these strings are shown to the user they are replaced with translated versions in their own language – "Game Over" if the user selected the English language. This allows the game to be easily translated into other languages without the need for major code changes: translators can simply translate the game text into the correct language and strings from the new language's GXT file will be used if the player selects that language.

File format

GTA 2

GTA 2's GXT files begin with a header followed by a TKEY block and then a TDAT block. The TKEY block contains an array of entries that give the offset and name of the corresponding entry in the TDAT table. The TDAT entry contains the text that will be displayed in the game.

Header
Offset Type Description
0x00 char[3] GBL
0x03 char
  • E: English
  • F: French
  • G: German
  • I: Italian
  • S: Spanish
  • J: Japanese
0x04 word File version, always 100
Block 1 (TKEY)
0x06 char[4] TKEY
0x0A dword Size of TKEY block
0x0E TKEY[n] Array of TKEY entries, where n is the number of entries. All entries are sorted in alphabetical order.
TKEY (0xC bytes):
Offset Type Description
0x00 dword TDAT entry offset. The value is relative to the location of the first entry of the array, which is, in absolute term, size of TKEY block + 22.
0x04 char[8] TDAT entry name

The absolute location of the TDAT block is the size of TKEY block + 14.

Block 2 (TDAT)
Offset Type Description
0x00 char[4] TDAT
0x04 dword Size of TDAT block
0x08 TDAT[n] Array of TDAT entries, where n is the number of entries. Entries are not sorted in alphabetical order but their order comes from the order of their entry in the GXT source file.
TDAT (m * 2 bytes):
Offset Type Description
0x00 wchar_t[m] An array of wide characters (2 bytes per character) to be displayed in the game, where m is the number of characters. The array is terminated by a null character (0x0000). The location of the entry in absolute term is TDAT entry offset + size of TKEY block + 22.

Characters beginning with 0x21 denote gang dialogue:

  • 0x216B: Krishna
  • 0x216C: Loony
  • 0x216D: Russian
  • 0x216E: Neutral
  • 0x2170: Police
  • 0x2172: Redneck
  • 0x2173: Scientist
  • 0x2179: Yakuza
  • 0x217A: Zaibatsu

GTA III

GTA III's GXT files are identical to those of GTA 2, except that they do not have headers – they start with the TKEY block instead. There is also no special treatment of characters starting with 0x21 in TDAT entries.

The Xbox version of Vice City uses this format as well.

GTA VC/LCS/VCS

In Vice City, Vice City Stories and Liberty City Stories, there is a new TABL block which precedes the TKEY block. The Xbox version of Vice City uses the GTA III format.

Block 1 (TABL)
Offset Type Description
0x00 char[4] TABL
0x04 dword Size of TABL block
0x08 TABL[n] Array of TABL entries, where n is the number of entries. All entries are sorted in alphabetical order except the first one, MAIN.
TABL (0xC bytes):
Offset Type Description
0x00 char[8] TKEY entry name
0x04 dword TKEY entry offset. The value is absolute.

The absolute location of the TKEY block is simply the TKEY entry offset. The TKEY block format is slightly different for the first block named MAIN. Hover over the dotted lines for information specific to that block. All other blocks follow the format shown below.

Block 2 (TKEY)
Offset Type Description
0x00 char[8] TKEY entry name
0x08 char[4] TKEY
0x0C dword Size of TKEY block
0x10 TKEY[n] Array of TKEY entries, where n is the number of entries. All entries are sorted in alphabetical order.
TKEY (0xC bytes):
Offset Type Description
0x00 dword TDAT entry offset. The value is relative to the location of the first entry of the array, which is, in absolute term, TKEY entry offset + size of TKEY block + 16.
0x04 char[8] TDAT entry name

The absolute location of the TDAT block is the TKEY entry offset + size of TKEY block + 16.

Block 3 (TDAT)
Offset Type Description
0x00 char[4] TDAT
0x04 dword Size of TDAT block
0x08 TDAT[n] Array of TDAT entries, where n is the number of entries. Entries are not sorted in alphabetical order but their order comes from the order of their entry in the GXT source file.
TDAT (m bytes):
Offset Type Description
0x00 wchar_t[m] An array of wide characters (2 bytes per character) to be displayed in the game, where m is the number of characters. The array is terminated by a null character (0x0000). The characters are based on the character table in the fonts.txd file, which mostly follows ASCII. The location of the entry in absolute term is TDAT entry offset + size of TKEY block + 16.

GTA SA/IV

Each GXT file contains certain tables with entries. And each entry has a unique CRC identifier and a normal text.

Header

The header contains information about the GXT version.

INT16   - 2b   - Version (4)
INT16   - 2b   - Number of bits per character (8: ASCII, 16: UTF-16)

Table Block

The Table Block contains data about the subtables and their offsets.

CHAR[4] - 4b   - TABL
INT32   - 4b   - Blocksize

//Array of [Blocksize / 12 Entries]
CHAR[8] - 8b   - Subtablename
INT32   - 4b   - Offset

The Offset of the subtable points to an 8-byte Char Array with the subtable's name, followed by TKEY. For the MAIN Table this points directly to TKEY!

GTA San Andreas has a limit of max 200 tables to be stored per GXT file.

TKEY and TDAT

TKEY

The TKEY Block of an subtable contains the CRC32-values of the entrytitles. The game calculates the CRC32-value out of a given string and checks if they exist in the GXT.

CHAR[4] - 4b   - TKEY
INT32   - 4b   - Blocksize

//Array of [Blocksize / 8]
INT32   - 4b   - Entryoffset
INT32   - 4b   - CRC32 (Entryname)

The TKEY block is directly followed by the TDAT Block which contains the contents of the entries. The Entryoffset is relative to the TDAT + 8 offset.

TDAT
CHAR[4] - 4b   - TDAT
INT32   - 4b   - Blocksize

From here the entryoffset of each entry points to the content. The content can have different sizes. However it always ends in '\0'! For Example "Hello!" needs to be transformed to "Hello!\0" here and this gives a size of 6 bytes (To tell it in a short form content is a null-terminated string). If this is the 1st content in TDAT the next got an offset of 0x06!

Encodings
GTA SA          : Windows-1252 always.
GTA IV(8 bits)  : Custom Encoding
GTA IV(16 bits) : Well, its a fake 16 bits encoding, all you need to take care about first 8 bits(1 byte). 
                  Eg. A3F4 C2DD E922, read only A3, C2, E9.


Sorting

The sorting method for TABL, TKEY, TDAT is as follow:

Section Sorting method
TABL Sorted in alphabetical order
TKEY GTA SA: Sorted from the lowest crc32 to the highest crc32,

GTA IV: Unknown. Perhaps randomized order.

TDAT Not sorted. The data is stored from the first line to the last line in the GXT source file

GTA 1 Format

GTA 1 language files have .fxt extension, and it's different from other games' format. Except the first 8 byte it uses very simple encryption. To get text, just substract 1 from every byte. First 8 bytes have different encryption, probably just to confuse modders. For every byte substract a value returned from left shifting 99.

Character maps

These character maps display all possible characters that can be used in the GXT file. Each character is represented by a hexadecimal value, which can be constructed by adding the value in the leftmost column to the value in the topmost row, e.g. a capital letter A is represented by 0x41 in hex.

GTA III

Font Style 0 (Bank)

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
20   ! # $ % & ' ( ) * + , - . /
30 0 1 2 3 4 5 6 7 8 9 : ; = ?
40 A B C D E F G H I J K L M N O
50 P Q R S T U V W X Y Z [ \ ] ^ °
60 ` a b c d e f g h i j k l m n o
70 p q r s t u v w x y z     ~  
80 À Á Â Ä Æ Ç È É Ê Ë Ì Í Î Ï Ò Ó
90 Ô Ö Ù Ú Û Ü ß à á â ä æ ç è é ê
A0 ë ì í î ï ò ó ô ö ù ú û ü Ñ ñ ¿
B0 ¡ '

Font Style 1 (Pager)

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
20   ! " # $ % & ' ( ) -   , - .  
30 0 1 2 3 4 5 6 7 8 9 :         ?
40   A B C D E F G H I J K L M N O
50 P Q R S T U V W X Y Z          
60   a b c d e f g h i j k l m n o
70 p q r s t u v w x y z       ~  
80 À Á Â Ä Æ Ç È É Ê Ë Ì Í Î Ï Ò Ó
90 Ô Ö Ù Ú Û Ü ß à á â ä æ ç è é ê
A0 ë ì í î ï ò ó ô ö ù ú û ü Ñ ñ ¿
B0 ¡

Font Style 2 (Heading)

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
20   ! ® $ % & ' ( )   + , - .
30 0 1 2 3 4 5 6 7 8 9 : ?
40 a b c d e f g h i j k l m n o
50 p q r s t u v w x y z   \   °
60 © a b c d e f g h i j k l m n o
70 p q r s t u v w x y z     ~  
80 à á â ä æ ç è é ê ë ì í î ï ò ó
90 ô ö ù ú û ü ß à á â ä æ ç è é ê
A0 ë ì í î ï ò ó ô ö ù ú û ü ñ ñ ¿
B0 ¡

  • Characters in italic are the pager font.
  • Characters in bold use Pricedown font or have a dirty look.
  • Characters in both bold and italic use an italicized Pricedown font.
  • Hover your mouse over the dotted line for characters that cannot be displayed in the browser.

Vice City

Font Style 0 (Bank)

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
20   !     $ % & ' [ ]   + , - .  
30 0 1 2 3 4 5 6 7 8 9 :         ?
40   A B C D E F G H I J K L M N O
50 P Q R S T U V W X Y Z   \   ¡ \
60   a b c d e f g h i j k l m n o
70 p q r s t u v w x y z       ~  
80 À Á Â Ä Æ Ç È É Ê Ë Ì Í Î Ï Ò Ó
90 Ô Ö Ù Ú Û Ü ß à á â ä æ ç è é ê
A0 ë ì í î ï ò ó ô ö ù ú û ü Ñ ñ ¿
B0 i

Font Style 1 (Standard)

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
20   ! " # $ % & ' ( ) * + , - . /
30 0 1 2 3 4 5 6 7 8 9 : ;   =   ?
40 A B C D E F G H I J K L M N O
50 P Q R S T U V W X Y Z [ \ ] ¡ °
60 ` a b c d e f g h i j k l m n o
70 p q r s t u v w x y z   | $ ~ )
80 À Á Â Ä Æ Ç È É Ê Ë Ì Í Î Ï Ò Ó
90 Ô Ö Ù Ú Û Ü ß à á â ä æ ç è é ê
A0 ë ì í î ï ò ó ô ö ù ú û ü Ñ ñ ¿
B0 0 1 2 3 4 5 6 7 8 9 : a

Font Style 2 (Heading)

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
20   ! " # $ % & ' ( ) * + , - . /
30 0 1 2 3 4 5 6 7 8 9 : ;   =   ?
40 a b c d e f g h i j k l m n o
50 p q r s t u v w x y z [ \ ] ¡ °
60 ` a b c d e f g h i j k l m n o
70 p q r s t u v w x y z   | $ ~ )
80 à á â ä æ ç è é ê ë ì í î ï ò ó
90 ô ö ù ú û ü ß à á â ä æ ç è é ê
A0 ë ì í î ï ò ó ô ö ù ú û ü ñ ñ ¿
B0 0 1 2 3 4 5 6 7 8 9 : a b c d e
C0 f g h i j k l m n o p q r s t u
D0 v w x y z à á â ä æ ç è é ê ë ì
E0 í î ï ò ó ô ö ù ú û ü ß ñ ¿ ' .

  • Characters in italic use Rage Italic font.
  • Characters in bold use Pricedown font or have a dirty look.
  • Hover your mouse over the dotted line for characters that cannot be displayed in the browser.

Tokens

A token is a character or string surrounded by ~ and is used for displaying colors, symbols, dynamic text, and button controls in text. Tokens with visible effects are listed in tables below. Note that using ~ by itself will crash the game when the game attempts to display it.

Symbols and colors

Token GTA III Vice City San Andreas Liberty City Stories GTA IV
~1~ number within a text -
~A~ - - L3 icon (PS2) / LStick icon (XBOX) - -
~B~ - bold and unbold text; text must be enclosed by two of these tokens - - -
~K~ - - L1 icon (PS2) / LT icon (XBOX) - -
~Y~ - - - yellow text -
~a~ area text -
~b~ blue text blue text blue text blue text blue text
~c~ - - R3 icon (PS2) / RStick icon (XBOX) - -
~d~ - - ▼-icon - -
~g~ green text hot pink text green text green text green text
~h~ white text highlight white text white text
~j~ - - R1 icon (PS2) / RT icon (XBOX) - -
~k~ key (followed by buttons) -
~l~ black text forces text to default color and ignores set colors black text black text
~m~ - - L2 icon (PS2) / WHITE icon (XBOX) - -
~n~ - Empty character, allows blanking out subtitles newline newline newline
~o~ - pink text Circle icon (PS2) / B icon (XBOX) pink text -
~p~ purple text purple text purple text purple text
~q~ - plum pink text Square icon (PS2) / X icon (XBOX) plum pink text -
~r~ red text hot pink text red text red text red text
~s~ - - reset color to standard - white text
~t~ - green text Triangle icon (PS2) / Y icon (XBOX) green text -
~u~ - - ▲-icon - -
~v~ - - R2 icon (PS2) / BLACK icon (XBOX) - -
~w~ gray text white text white text white text
~x~ - light blue text Cross icon (PS2) / A icon (XBOX) light blue text -
~y~ yellow text yellow text yellow text yellow text yellow text
~z~ - - subtitle (doesn't shown when the Subtitles option is off) - -
~<~ - - ◄-icon - -
~>~ - - ►-icon - -
~f~ - Text flashing - - -

In GTA III's original GXT files for the PC version, the token l is unused. The token W appears erroneously in GXT key AS3_A in all language files except the Italian one. In Vice City's original GXT files for the PC version, the tokens B and l are unused. t and x are unused in the English language file but appear to be used erroneously in other language files. The token c appears erroneously in GXT key FIN_B5; it could have represented the cyan color to match the color of the blip the text represents.[1] The token also appears in GXT key RCH1_3 in all language files except the English one.

Buttons

You can use opcode 00E1 to check if these keys are being pressed.

Foot Controls

Key Game Entry
Fire GTA III Vice City San Andreas ~PED_FIREWEAPON~
Next Weapon / Target GTA III Vice City San Andreas ~PED_CYCLE_WEAPON_RIGHT~
Previous Weapon / Target GTA III Vice City San Andreas ~PED_CYCLE_WEAPON_LEFT~
Group Ctrl Forward San Andreas ~GROUP_CONTROL_FWD~
Group Ctrl Back San Andreas ~GROUP_CONTROL_BWD~
Conversation - No San Andreas ~CONVERSATION_NO~
Conversation - Yes San Andreas ~CONVERSATION_YES~
Forward GTA III Vice City San Andreas ~GO_FORWARD~
Backwards GTA III Vice City San Andreas ~GO_BACK~
Left GTA III Vice City San Andreas ~GO_LEFT~
Right GTA III Vice City San Andreas ~GO_RIGHT~
Zoom In GTA III Vice City San Andreas ~PED_SNIPER_ZOOM_IN~
Zoom Out GTA III Vice City San Andreas ~PED_SNIPER_ZOOM_OUT~
Enter+Exit GTA III Vice City San Andreas ~VEHICLE_ENTER_EXIT~
Change Camera GTA III Vice City San Andreas ~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~
Jump GTA III Vice City San Andreas ~PED_JUMPING~
Sprint GTA III Vice City San Andreas ~PED_SPRINT~
Target / Aim Weapon GTA III Vice City San Andreas ~PED_LOCK_TARGET~
Crouch Vice City San Andreas ~PED_DUCK~
Action Vice City San Andreas ~PED_ANSWER_PHONE~
Walk San Andreas ~SNEAK_ABOUT~
Look Behind GTA III Vice City San Andreas ~PED_LOOKBEHIND~
Look Left GTA III Vice City[a] ~PED_1RST_PERSON_LOOK_LEFT~
Look Right GTA III Vice City[a] ~PED_1RST_PERSON_LOOK_RIGHT~
Look Up GTA III Vice City[a] ~PED_1RST_PERSON_LOOK_UP~
Look Down GTA III Vice City[a] ~PED_1RST_PERSON_LOOK_DOWN~
Next Target GTA III Vice City[a] ~PED_CYCLE_TARGET_LEFT~
Previous Target GTA III Vice City[a] ~PED_CYCLE_TARGET_RIGHT~
Center Camera GTA III Vice City[a] ~PED_CENTER_CAMERA_BEHIND_PLAYER~

Vehicle Controls

Key Game Entry
Fire GTA III Vice City San Andreas ~VEHICLE_FIREWEAPON~
Secondary Fire San Andreas ~VEHICLE_FIREWEAPON_ALT~
Accelerate GTA III Vice City San Andreas ~VEHICLE_ACCELERATE~
Brake / Reverse GTA III Vice City San Andreas ~VEHICLE_BRAKE~
Left GTA III Vice City San Andreas ~VEHICLE_STEERLEFT~
Right GTA III Vice City San Andreas ~VEHICLE_STEERRIGHT~
Steer Forward / Down GTA III Vice City San Andreas ~VEHICLE_STEERDOWN~
Steer Back / Up GTA III Vice City San Andreas ~VEHICLE_STEERUP~
Enter+Exit GTA III Vice City San Andreas ~VEHICLE_ENTER_EXIT~
Trip Skip San Andreas ~CONVERSATION_YES~
Change Radio Station GTA III Vice City ~VEHICLE_CHANGE_RADIO_STATION~
Next Radio Station San Andreas ~VEHICLE_RADIO_STATION_UP~
Previous Radio Station San Andreas ~VEHICLE_RADIO_STATION_DOWN~
User Track Skip San Andreas none
Horn GTA III Vice City San Andreas ~VEHICLE_HORN~
Sub-mission GTA III Vice City San Andreas ~TOGGLE_SUBMISSIONS~
Change Camera GTA III Vice City San Andreas ~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~
Handbrake GTA III Vice City San Andreas ~VEHICLE_HANDBRAKE~
Mouse Look San Andreas ~VEHICLE_MOUSELOOK~
Look Left GTA III Vice City San Andreas ~VEHICLE_LOOKLEFT~
Look Right GTA III Vice City San Andreas ~VEHICLE_LOOKRIGHT~
Turret Left / Special Ctrl Left GTA III Vice City San Andreas ~VEHICLE_TURRETLEFT~
Turret Right / Special Ctrl Right GTA III Vice City San Andreas ~VEHICLE_TURRETRIGHT~
Turret Up / Special Ctrl Up GTA III Vice City San Andreas ~VEHICLE_TURRETUP~
Turret Down / Special Ctrl Down GTA III Vice City San Andreas ~VEHICLE_TURRETDOWN~
Look Behind GTA III Vice City San Andreas[b] ~VEHICLE_LOOKBEHIND~
a. ^ Classic controls key only
b. ^ Hardcoded key in III and VC, unavailable in SA

Unused

Here are some keypress codes only used during development stage. They were removed or replaced later but probably they are still working. Maybe this is useful for further research. Some are only used in PS2 Version.

~TAKE_SCREEN_SHOT~
~SWITCH_DEBUG_CAM_ON~
~TOGGLE_DPAD~
~NETWORK_TALK~

Tools

GTA 2 GTA2 GXT Editor v2.0 - by Delfi
GTA III Vice City San Andreas Liberty City Stories Vice City Stories Grand Theft Auto GXT Editor v1.3 - by Zverik, retrieved from archive.org
GTA III Vice City San Andreas Liberty City Stories Vice City Stories GTA IV SAGE v0.9.7 - by AleX AciD
GTA III Vice City Liberty City Stories Vice City Stories GTA Texter v2.0b3 - by feroCT5
GTA III GTA Net GTAGarage: GXT Editor 1.3 - by Jevon
Vice City Liberty City Stories Vice City Stories GTA: Vice City GXT Editor v1.2 - by CyQ
Vice City San Andreas GXT Builder, by Silent
San Andreas GTA San Andreas Text Editor - by JernejL
San Andreas GTA: San Andreas GXT Editor v1.3 - by Hammer83
San Andreas A-GXT Editor v1.0a - by Aschratt
San Andreas GTA IV X GXT Editor v2.1 - by xmen
GTA IV OpenIV - Have Inbuilt GXT file viewer

Reference

1. ^ Post.png Post on GTAForums

External links