GXT: Difference between revisions

m (→‎External links: clean up,)
mNo edit summary
 
(9 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{cleanup}}
A '''G'''TA Te'''xt''' (''GXT'') file contains almost all texts that are displayed on the screen of [[Grand Theft Auto 2]] and above. The location of those files may differ between the various game versions, but they are usually located in the <code>\text\</code> folder inside the games installation directory. Except for GTA 2 There is one GXT file for each language, but the number of gxt files does not define the number of supported languages by the game.  
A '''G'''TA Te'''xt''' (''GXT'') file contains almost all texts that are displayed on the screen of GTA2 and above. The location of those files may differ between the various game versions, but they are usualy located in a <code>text\</code> folder inside the games installation directory. There is one GXT file for each language, but the number of gxt files does not define the number of supported languages by the game. An entire list of all GXT text entry name [[Cryptography#CRC32|hashes]] between GTA3 and VCS is available with [[Sanny Builder]].


== File Format ==
== File format ==
Each GXT file can contain certain tables with subtables and entries. The entries are stored in [[Wikipedia:ASCII|ASCII]] standard. Just some special characters got some different bitsets.
=== GTA 2 ===
GTA 2 begins with a header followed by a TKEY block followed by a TDAT block. Within the TKEY block is an array of TKEY entries containing the offset to and the name of the TDAT entry. A TDAT entry contains the text to be displayed in the game.


=== GTA San Andreas / GTA IV Format ===
{|class="wikitable" style="max-width: 64em;"
==== Header ====
!colspan="3" |Header
The header contains data about the tables and their subtables.
|-
!Offset ||Type ||Description
|-
|0x00 ||char[4] ||style="width: 100%;" |
* <code>GBLE</code>: English
* <code>GBLF</code>: French
* <code>GBLG</code>: German
* <code>GBLI</code>: Italian
* <code>GBLS</code>: Spanish
* <code>GBLJ</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>


INT32  - 4b  - Version? (Always 0x080004)
The absolute location of the TDAT block is the size of TKEY block + 14.
CHAR[4] - 4b  - TABL


==== Table Block ====
{|class="wikitable" style="max-width: 64em;"
The ''Table Block'' contains data about the subtables and their offsets.
!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.


INT32  - 4b  - Blocksize
Characters beginning with 0x21 denote gang dialogue:
* <code>0x216B</code>: Krishna
//Array of [Blocksize / 12 Entries]
* <code>0x216C</code>: Loony
CHAR[8] - 8b  - Subtablename
* <code>0x216D</code>: Russian
INT32  - 4b  - Offset
* <code>0x216E</code>: Neutral
* <code>0x2172</code>: Redneck
* <code>0x2173</code>: Scientist
* <code>0x2179</code>: Yakuza
* <code>0x217A</code>: Zaibatsu
|}
</div>


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 III ===
[[Grand Theft Auto III]] is nearly identical to GTA 2 but without the header. It begins with a TKEY block followed by a TDAT block. Within the TKEY block is an array of TKEY entries containing the offset to and the name of the TDAT entry. A TDAT entry contains the text to be displayed in the game. The Xbox version of GTA Vice City uses this format also.


==== TKEY and TDAT ====
{|class="wikitable" style="max-width: 64em;"
===== TKEY =====
!colspan="3" |Block 1 (TKEY)
|-
!Offset ||Type ||style="width: 100%;" |Description
|-
|0x00 ||char[4] ||<code>TKEY</code>
|-
|0x04 ||dword ||Size of TKEY block
|-
|0x08 ||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 + 16.
|-
|0x04 ||char[8] ||TDAT entry name
|}
</div>


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 absolute location of the TDAT block is the size of TKEY block + 8.


CHAR[4] - 4b  - TKEY
{|class="wikitable" style="max-width: 64em;"
INT32  - 4b  - Blocksize
!colspan="3" |Block 2 (TDAT)
|-
//Array of [Blocksize / 8]
!Offset ||Type ||style="width: 100%;" |Description
INT32  - 4b  - Entryoffset
|-
INT32  - 4b  - [[Cryptography#CRC32|CRC32]] (Entryname)
|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 * 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 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 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.
=== GTA Vice City, GTA Liberty City Stories, and GTA Vice City Stories ===
 
[[Grand Theft Auto: Vice City]], [[Grand Theft Auto: Liberty City Stories]], and [[Grand Theft Auto: Vice City Stories]] begin with a TABL block, which was first introduced in GTA Vice City, followed by an array of TKEY blocks. Within each TKEY block is an array of TKEY entries containing the offset to and the name of the TDAT entry. A TDAT entry contains the text to be displayed in the game. The Xbox version of GTA Vice City uses GTA III's format instead.
===== TDAT =====
{|class="wikitable" style="max-width: 64em;"
 
!colspan="3" |Block 1 (TABL)
CHAR[4] - 4b  - TDAT
|-
INT32  - 4b  - Blocksize
!Offset ||Type ||style="width: 100%;" |Description
 
|-
From here the entryoffset of each entry points to the content. The content can have different sizes. However it always ends in '\0'!
|0x00 ||char[4] ||<code>TABL</code>
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!
|-
|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>


In GTA IV Japanese/Russian/1.0.0.4 versions, the data is stored in UTF-16 format, and the table below is likely irrelevant.
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.


'''Special Characters'''
{|class="wikitable" style="max-width: 64em;"
 
!colspan="3" |Block 2 (TKEY)
Here is a list of special characters for german language sets and their UINT8 Values:
 
{|
!Character
!Value
|-
|-
|Ä
!Offset ||Type ||style="width: 100%;" |Description
|131
|-
|-
|ä
|{{Hint|0x00|Omit for MAIN}} ||char[8] ||TKEY entry name
|154
|-
|-
|Ö
|{{Hint|0x08|0x00 for MAIN}} ||char[4] ||<code>TKEY</code>
|145
|-
|-
|ö
|{{Hint|0x0C|0x04 for MAIN}} ||dword ||Size of TKEY block
|168
|-
|-
|Ü
|{{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.
|149
|}
<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}}.
|172
|-
|-
|ß
|0x04 ||char[8] ||TDAT entry name
|150
|}
|}
</div>


=== GTA III / GTA Vice City Format ===
The absolute location of the TDAT block is the TKEY entry offset + size of TKEY block + {{Hint|16|8 for MAIN}}.


Vice City and GTA III GXTs are very similar to the SA GXTs. In this article all those additional infos are not listed.
{|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>
 
=== GTA San Andreas / GTA IV Format ===
Each GXT file contains certain tables with entries. And each entry has a unique CRC identifier and a normal text.


==== Header ====
==== Header ====
The header contains information about the GXT version.


The header contains data about the tables and their subtables.
  INT32  - 4b  - Version (0x080004 for ASCII, 0x100004 for UTF-16)
 
  CHAR[4] - 4b  - TABL


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


CHAR[4] - 4b  - TABL
  INT32  - 4b  - Blocksize
  INT32  - 4b  - Blocksize
   
   
Line 94: Line 207:
  CHAR[8] - 8b  - Subtablename
  CHAR[8] - 8b  - Subtablename
  INT32  - 4b  - Offset
  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 and TDAT ====
===== TKEY =====


===== 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
  CHAR[4] - 4b  - TKEY
  INT32  - 4b  - Blocksize
  INT32  - 4b  - Blocksize
   
   
  //Array of [Blocksize / 12]
  //Array of [Blocksize / 8]
  INT32  - 4b  - Entryoffset
  INT32  - 4b  - Entryoffset
  CHAR[8] - 8b   - Entryname
  INT32  - 4b   - CRC32 (Entryname)


Unlike San Andreas entrynames are stored directly in 8b chararrays here. This means to calculate the entries in the table you have to divide the blocksize through 12.
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.
The Entryoffsets are relative to the end of the "TDAT Header". This means you have to add the entryoffset to the stream position after the TDAT size. (TDAT_Offset + 8 + Entryoffset), to get to the entry.


===== TDAT =====
===== TDAT =====
Line 114: Line 231:
  INT32  - 4b  - Blocksize
  INT32  - 4b  - Blocksize


The TDAT-Block contains the strings which are displayed by the game. But here are some differences towards San Andreas. The strings are encoded 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.
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          : [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.
 
 
==== Sorting ====
The sorting method for TABL, TKEY, TDAT is as follow:
{| class="wikitable"
|-
! 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 [http://pastebin.com/raw.php?i=HwDP132U GXT source file]
|}


=== GTA2 Format ===
== 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.


Except for additional header at beginning GTA2 GXT files are identical to GTA3 format.  
=== GTA III ===
==== Font Style 0 (Bank) ====
The first 4 bytes can be one of following, and identify the language for the file:  
{|class="charmap"
GBLE - english
!
GBLF - french
!00
GBLG - german
!01
GBLI - italian
!02
GBLS - spanish
!03
GBLJ - japanese
!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"|'
|}


A uint16 file version follows which is always 100 (decimal)
==== 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;
|}


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.
==== 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>


The rest of file is same as gta3 with familiar tkey & tdat sections.
=== GTA 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
|}


== GXT Editing ==
==== 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
|}


=== Symbols & Colorcodes (Control Character) ===
==== Font Style 2 (Heading) ====
{| class="prettytable"
{|class="charmap"
! Symbol
!
! colspan="3" | Description
!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"|"
|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
! GTA III
|title="0x70" style="font-weight: bold;"|p
! Vice City
|title="0x71" style="font-weight: bold;"|q
! San Andreas
|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>
 
== 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.
 
=== Symbols and colors ===
{|class="wikitable center-col-1 center-col-2 center-col-3"
! style="width: 5em;"  | Token
! style="width: 15em;" | {{Icon|3}}
! style="width: 15em;" | {{Icon|VC}}
! style="width: 15em;" | {{Icon|SA}}
! style="width: 15em;" | {{Icon|LCS}}
|-
|-
| ~1~
| ~1~
| colspan="3" align="center" | number within a text
| colspan="4" | number within a text
|-
| ~A~
| -
| -
| L3 icon (PS2) / LStick icon (XBOX)
| style="text-align: center;" | -
|-
| ~B~
| -
| bold and unbold text; text must be enclosed by two of these tokens
| style="text-align: center;" | -
|
|-
| ~K~
| -
| -
| L1 icon (PS2) / LT icon (XBOX)
| style="text-align: center;" | -
|-
| ~Y~
| -
| -
|
| style="color:#FFE34F; text-align: center;" | yellow text
|-
|-
| ~a~
| ~a~
| colspan="3" align="center" | text within a text
| colspan="4" | text within a text
|-
|-
| ~b~
| ~b~
| style="color:rgb(124,162,236)" | blue text
| style="color:#80A7F3;" | blue text
| style="color:rgb(27,89,130)" | blue text
| style="color:#1B5982;" | blue text
| blue text
| blue text
| style="color:#4D9BD2; text-align: center;" | blue text
|-
| ~c~
| -
| -
| R3 icon (PS2) / RStick icon (XBOX)
| style="text-align: center;" | -
|-
|-
| ~d~
| ~d~
|  
| -
|  
| -
| -icon
| &#9660;-icon
| style="text-align: center;" | -
|-
|-
| ~g~
| ~g~
| style="color:rgb(92,156,103)" | green text
| style="color:#5FA06A" | green text
| style="color:rgb(255,150,225)" | hot pink text <!--(default color of pink styled 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
|-
|-
| ~h~
| ~h~
| colspan="2" align="center" | white text
| colspan="2" style="color:#E1E1E1;" | white text
| highlight
| style="text-align: left;" | highlight
| style="text-align: center;" | white text
|-
|-
| ~j~
| ~j~
|  
| -
|  
| -
| ?
| R1 icon (PS2) / RT icon (XBOX)
| style="text-align: center;" | -
|-
|-
| ~k~
| ~k~
| colspan="3" align="center" | key (followed by [[GXT#Keypresses|keypresses]])
| colspan="4" | key (followed by [[#Buttons|buttons]])
|-
|-
| ~l~
| ~l~
Line 183: Line 1,552:
| forces text to default color and ignores set colors
| forces text to default color and ignores set colors
| black text
| black text
|
|-
|-
| ~n~
| ~n~
|  
| -
|  
| -
| newline
| newline
| style="text-align: center;" | -
|-
|-
| ~m~
| ~m~
|  
| -
|  
| -
| ?
| L2 icon (PS2) / WHITE icon (XBOX)
| style="text-align: center;" | -
|-
|-
| ~o~
| ~o~
|  
| -
| style="color:rgb(229,125,126)" | pink text
| style="color:#E57D7E;" | pink text
| ?
| Circle icon (PS2) / B icon (XBOX)
| style="color:#E57D7E; text-align: center;" | pink text
|-
|-
| ~p~
| ~p~
| style="color:rgb(163,107,245)" | purple text
| colspan="2" style="color:#A86EFC;" | purple text
| style="color:rgb(168,110,252)" | purple text
| style="text-align: left;" | purple text
| purple text
| style="color:#9752C5; text-align: center;" | purple text
|-
|-
| ~q~
| ~q~
|  
| -
| style="color:rgb(199,144,203)" | plum pink text
| style="color:#C790CB;" | plum pink text
|
| Square icon (PS2) / X icon (XBOX)
| style="color:#C790CB; text-align: center;" | plum pink text
|-
|-
| ~r~
| ~r~
| style="color:rgb(110,42,71)" | red text
| style="color:#712B49;" | red text
| style="color:rgb(255,150,225)" | hot pink text
| style="color:#FF96E1;" | hot pink text
| red text
| red text
| style="color:#AE0000; text-align: center;" | red text
|-
|-
| ~s~
| ~s~
|  
| -
|  
| -
| reset color to standard
| reset color to standard
| style="text-align: center;" | -
|-
|-
| ~t~
| ~t~
|  
| -
| style="color:rgb(86,212,146)" | green text
| style="color:#56D492;" | green text
|
| Triangle icon (PS2) / Y icon (XBOX)
| style="color:#56D492; text-align: center;" | green text
|-
|-
| ~u~
| ~u~
|  
| -
|  
| -
| -icon
| &#9650;-icon
| style="text-align: center;" | -
|-
|-
| ~v~
| ~v~
|  
| -
|  
| -
| ?
| R2 icon (PS2) / BLACK icon (XBOX)
| style="text-align: center;" | -
|-
|-
| ~w~
| ~w~
| style="color:rgb(170,170,170)" | gray text
| colspan="2" style="color:#AFAFAF;" | gray text
| style="color:rgb(175,175,175)" | gray text <!--(default color of text box)-->
| style="text-align: left;" | white text
| white text
| style="color:#E1E1E1; text-align: center;" | white text
|-
|-
| ~x~
| ~x~
|  
| -
| style="color:rgb(132,146,197)" | light blue text
| style="color:#8492C5;" | light blue text
| ?
| Cross icon (PS2) / A icon (XBOX)
| style="color:#8492C5; text-align: center;" | light blue text
|-
|-
| ~y~
| ~y~
| style="color:rgb(204,191,103)" | yellow text
| style="color:#D2C46A;" | yellow text
| style="color:rgb(255,227,79)" | yellow text
| style="color:#FFE34F;" | yellow text
| yellow text
| yellow text
| style="color:#FFFF00; 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)
| style="text-align: center;" | -
|-
|-
| ~<~
| ~<~
|  
| -
|  
| -
| -icon
| &#9668;-icon
| style="text-align: center;" | -
|-
|-
| ~>~
| ~>~
|  
| -
|  
| -
| -icon
| &#9658;-icon
| style="text-align: center;" | -
|-
|-
! colspan="4" | Special symbols (otherwise normal or blank)
| ~f~
|-
| -
| <
| Text flashing
| ◄ icon
| -
| armor icon
|
|
|-
| >
| ► icon
| wanted level (star) icon
|
|-
| {
|
| heart icon
|
|-
| }
|
| dollar sign icon (not "$")
|
|-
| _
| colspan="2" align="center" | degree symbol (°)
|
|-
| @
| colspan="2" align="center" | trademark symbol (™)
|
|-
| ^
|
| inverted exclamation mark (¡)
|
|-
| &#124;
| circle icon
|
|
|-
| "
| triangle icon
|
|  
|}
|}
Note that using "~" by itself will crash the game when the game attempts to display it.
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 GTA 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>http://www.gtaforums.com/index.php?showtopic=849281&view=findpost&p=1068784991</ref> The token also appears in GXT key <code>RCH1_3</code> in all language files except the English one.


=== Keypresses ===
=== Buttons ===
You can use [[opcode]] [[00E1]] to check if these keys are being pressed.
You can use opcode 00E1 to check if these keys are being pressed.
==== Foot Controls ====
==== Foot Controls ====
{|class="prettytable collapsible"
{|class="wikitable collapsible center-col-2"
! Key
!Key
! Game
!Game
! Entry
!Entry
|-
|-
| Fire
|Fire
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~PED_FIREWEAPON~
|~PED_FIREWEAPON~
|-
|-
| Next Weapon / Target
|Next Weapon / Target
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~PED_CYCLE_WEAPON_RIGHT~
|~PED_CYCLE_WEAPON_RIGHT~
|-
|-
| Previous Weapon / Target
|Previous Weapon / Target
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~PED_CYCLE_WEAPON_LEFT~
|~PED_CYCLE_WEAPON_LEFT~
|-
|-
| Group Ctrl Foward
|Group Ctrl Forward
| align="center" | {{Icon|SA}}
|{{Icon|SA}}
| ~GROUP_CONTROL_FWD~
|~GROUP_CONTROL_FWD~
|-
|-
| Group Ctrl Back
|Group Ctrl Back
| align="center" | {{Icon|SA}}
|{{Icon|SA}}
| ~GROUP_CONTROL_BWD~
|~GROUP_CONTROL_BWD~
|-
|-
| Conversation - No
|Conversation - No
| align="center" | {{Icon|SA}}
|{{Icon|SA}}
| ~CONVERSATION_NO~
|~CONVERSATION_NO~
|-
|-
| Conversation - Yes
|Conversation - Yes
| align="center" | {{Icon|SA}}
|{{Icon|SA}}
| ~CONVERSATION_YES~
|~CONVERSATION_YES~
|-
|-
| Foward
|Forward
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~GO_FORWARD~
|~GO_FORWARD~
|-
|-
| Backwards
|Backwards
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~GO_BACK~
|~GO_BACK~
|-
|-
| Left
|Left
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~GO_LEFT~
|~GO_LEFT~
|-
|-
| Right
|Right
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~GO_RIGHT~
|~GO_RIGHT~
|-
|-
| Zoom In
|Zoom In
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~PED_SNIPER_ZOOM_IN~
|~PED_SNIPER_ZOOM_IN~
|-
|-
| Zoom Out
|Zoom Out
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~PED_SNIPER_ZOOM_OUT~
|~PED_SNIPER_ZOOM_OUT~
|-
|-
| Enter+Exit
|Enter+Exit
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_ENTER_EXIT~
|~VEHICLE_ENTER_EXIT~
|-
|-
| Change Camera
|Change Camera
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~
|~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~
|-
|-
| Jump
|Jump
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~PED_JUMPING~
|~PED_JUMPING~
|-
|-
| Sprint
|Sprint
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~PED_SPRINT~
|~PED_SPRINT~
|-
|-
| Target / Aim Weapon
|Target / Aim Weapon
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~PED_LOCK_TARGET~
|~PED_LOCK_TARGET~
|-
|-
| Crouch
|Crouch
| align="center" | {{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|VC}}&nbsp;{{Icon|SA}}
| ~PED_DUCK~
|~PED_DUCK~
|-
|-
| Action
|Action
| align="center" | {{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|VC}}&nbsp;{{Icon|SA}}
| ~PED_ANSWER_PHONE~
|~PED_ANSWER_PHONE~
|-
|-
| Walk
|Walk
| align="center" | {{Icon|SA}}
|{{Icon|SA}}
| ~SNEAK_ABOUT~
|~SNEAK_ABOUT~
|-
|-
| Look Behind
|Look Behind
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~PED_LOOKBEHIND~
|~PED_LOOKBEHIND~
|-
|-
| First Person Look Left
|Look Left
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}{{Ref|1|[1]}}
|{{Icon|3}}&nbsp;{{Icon|VC}}<sup>a</sup>
| ~PED_1RST_PERSON_LOOK_LEFT~
|~PED_1RST_PERSON_LOOK_LEFT~
|-
|-
| First Person Look Right
|Look Right
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}{{Ref|1|[1]}}
|{{Icon|3}}&nbsp;{{Icon|VC}}<sup>a</sup>
| ~PED_1RST_PERSON_LOOK_RIGHT~
|~PED_1RST_PERSON_LOOK_RIGHT~
|-
|-
| First Person Look Up
|Look Up
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}{{Ref|1|[1]}}
|{{Icon|3}}&nbsp;{{Icon|VC}}<sup>a</sup>
| ~PED_1RST_PERSON_LOOK_UP~
|~PED_1RST_PERSON_LOOK_UP~
|-
|-
| First Person Look Down
|Look Down
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}{{Ref|1|[1]}}
|{{Icon|3}}&nbsp;{{Icon|VC}}<sup>a</sup>
| ~PED_1RST_PERSON_LOOK_DOWN~
|~PED_1RST_PERSON_LOOK_DOWN~
|-
|-
| Cycle Target Left
|Next Target
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}{{Ref|1|[1]}}
|{{Icon|3}}&nbsp;{{Icon|VC}}<sup>a</sup>
| ~PED_CYCLE_TARGET_LEFT~
|~PED_CYCLE_TARGET_LEFT~
|-
|-
| Cycle Target Right
|Previous Target
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}{{Ref|1|[1]}}
|{{Icon|3}}&nbsp;{{Icon|VC}}<sup>a</sup>
| ~PED_CYCLE_TARGET_RIGHT~
|~PED_CYCLE_TARGET_RIGHT~
|-
|-
| Center Camera Behind Player
|Center Camera
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}{{Ref|1|[1]}}
|{{Icon|3}}&nbsp;{{Icon|VC}}<sup>a</sup>
| ~PED_CENTER_CAMERA_BEHIND_PLAYER~
|~PED_CENTER_CAMERA_BEHIND_PLAYER~
|}
|}


==== Vehicle Controls ====
==== Vehicle Controls ====
{|class="prettytable collapsible"
{|class="wikitable collapsible center-col-2"
! Key
!Key
! Game
!Game
! Entry
!Entry
|-
|-
| Fire
|Fire
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_FIREWEAPON~
|~VEHICLE_FIREWEAPON~
|-
|-
| Secondary Fire
|Secondary Fire
| align="center" | {{Icon|SA}}
|{{Icon|SA}}
| ~VEHICLE_FIREWEAPON_ALT~
|~VEHICLE_FIREWEAPON_ALT~
|-
|-
| Accelerate
|Accelerate
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_ACCELERATE~
|~VEHICLE_ACCELERATE~
|-
|-
| Brake / Reverse
|Brake / Reverse
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_BRAKE~
|~VEHICLE_BRAKE~
|-
|-
| Left
|Left
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_STEERLEFT~
|~VEHICLE_STEERLEFT~
|-
|-
| Right
|Right
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_STEERRIGHT~
|~VEHICLE_STEERRIGHT~
|-
|-
| Steer Foward / Down
|Steer Forward / Down
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_STEERDOWN~
|~VEHICLE_STEERDOWN~
|-
|-
| Steer Back / Up
|Steer Back / Up
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_STEERUP~
|~VEHICLE_STEERUP~
|-
|-
| Enter+Exit
|Enter+Exit
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_ENTER_EXIT~
|~VEHICLE_ENTER_EXIT~
|-
|-
| Trip Skip
|Trip Skip
| align="center" | {{Icon|SA}}
|{{Icon|SA}}
| ~CONVERSATION_YES~
|~CONVERSATION_YES~
|-
|-
| Change Radio Station
|Change Radio Station
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}
|{{Icon|3}}&nbsp;{{Icon|VC}}
| ~VEHICLE_CHANGE_RADIO_STATION~
|~VEHICLE_CHANGE_RADIO_STATION~
|-
|-
| Next Radio Station
|Next Radio Station
| align="center" | {{Icon|SA}}
|{{Icon|SA}}
| ~VEHICLE_RADIO_STATION_UP~
|~VEHICLE_RADIO_STATION_UP~
|-
|-
| Previous Radio Station
|Previous Radio Station
| align="center" | {{Icon|SA}}
|{{Icon|SA}}
| ~VEHICLE_RADIO_STATION_DOWN~
|~VEHICLE_RADIO_STATION_DOWN~
|-
|-
| User Track Skip
|User Track Skip
| align="center" | {{Icon|SA}}
|{{Icon|SA}}
| none
|none
|-
|-
| Horn
|Horn
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_HORN~
|~VEHICLE_HORN~
|-
|-
| Sub-mission
|Sub-mission
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~TOGGLE_SUBMISSIONS~
|~TOGGLE_SUBMISSIONS~
|-
|-
| Change Camera
|Change Camera
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~
|~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~
|-
|-
| Handbrake
|Handbrake
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_HANDBRAKE~
|~VEHICLE_HANDBRAKE~
|-
|-
| Mouse Look
|Mouse Look
| align="center" | {{Icon|SA}}
|{{Icon|SA}}
| ~VEHICLE_MOUSELOOK~
|~VEHICLE_MOUSELOOK~
|-
|-
| Look Left
|Look Left
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_LOOKLEFT~
|~VEHICLE_LOOKLEFT~
|-
|-
| Look Right
|Look Right
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_LOOKRIGHT~
|~VEHICLE_LOOKRIGHT~
|-
|-
| Turret Left / Special Ctrl Left
|Turret Left / Special Ctrl Left
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_TURRETLEFT~
|~VEHICLE_TURRETLEFT~
|-
|-
| Turret Right / Special Ctrl Right
|Turret Right / Special Ctrl Right
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_TURRETRIGHT~
|~VEHICLE_TURRETRIGHT~
|-
|-
| Turret Up / Special Ctrl Up
|Turret Up / Special Ctrl Up
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_TURRETUP~
|~VEHICLE_TURRETUP~
|-
|-
| Turret Down / Special Ctrl Down
|Turret Down / Special Ctrl Down
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}
|{{Icon|t}}
| ~VEHICLE_TURRETDOWN~
|~VEHICLE_TURRETDOWN~
|-
|-
| Look Behind
|Look Behind
| align="center" | {{Icon|3}}&nbsp;{{Icon|VC}}&nbsp;{{Icon|SA}}{{Ref|2|[2]}}
|{{Icon|t}}<sup>b</sup>
| ~VEHICLE_LOOKBEHIND~
|~VEHICLE_LOOKBEHIND~
|}
|}
{{Note|1|[1]}} Hardcoded key<br>
:a. Classic controls key only
{{Note|2|[2]}} Hardcoded key in III and VC, unavailable in SA
: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 useful 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~
*~SWITCH_DEBUG_CAM_ON~
*~TOGGLE_DPAD~
*~NETWORK_TALK~


{|
==Tools==
!
{|class="center-col-1"
|{{Icon|2}} ||[http://gtamp.com/GTA2/gta2gxt.rar GTA2 GXT Editor v2.0] - by 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}} ||[http://www.gtagarage.com/mods/show.php?id=1075 GXT Editor 1.3] - by Jevon
|-
|{{Icon|VC}} {{Icon|LCS}} {{Icon|VCS}} ||[[GXT Editor (VC)|GTA: Vice City GXT Editor v1.2]] - by CyQ
|-
|{{Icon|VC}} {{Icon|SA}} ||[https://github.com/CookiePLMonster/GXT-Builder GXT Builder], by Silent
|-
|{{Icon|SA}} ||[http://media.gtanet.com/hosted/gtatools.com/filedb/files/gta_sa_gxt.rar GTA San Andreas Text Editor] - by JernejL
|-
|-
|~TAKE_SCREEN_SHOT~
|{{Icon|SA}} ||[http://www.thegtaplace.com/downloads/f568-gta-san-andreas-gxt-editor-1-3 GTA: San Andreas GXT Editor v1.3] - by Hammer83
|-
|-
|~SWITCH_DEBUG_CAM_ON~
|{{Icon|SA}} ||[http://www.gtavision.com/index.php?section=downloads&site=download&id=1245 A-GXT Editor v1.0a] - by Aschratt
|-
|-
|~TOGGLE_DPAD~
|{{Icon|SA}} {{Icon|4}} ||[http://www.x-squares.com/File/fi/0/X_GXT_Editor.aspx X GXT Editor v2.1] - by xmen
|-
|-
|~NETWORK_TALK~
|{{Icon|4}} ||[[OpenIV]] - Have Inbuilt GXT file viewer
|}
|}


==Tools==
==Reference==
*[http://www.gtatools.com/filedb/action.php?action=file&id=22 GXT Editor for GTA 3] - by {{U|JernejL}}
<references />
*[[GXT Editor (VC)|GXT Editor for Vice City]] - by {{U|CyQ}}
*[http://www.gtatools.com/filedb/action.php?action=file&id=21 GXT Editor for San Andreas] - by {{U|JernejL}}


==External links==
==External links==
*[http://public.sannybuilder.com/GXT/ List of all GXT entries from GTA III to Vice City Stories]
*{{Icon|2}} [http://spaceeinstein.altervista.org/gxt/GTA2_EN.txt GXT entries in e.gxt] by [[User:Spaceeinstein|spaceeinstein]]
*[http://public.sannybuilder.com/GTA4/american.gxt.reversed.rar List of all GTA IV gxt text entry names]
*{{Icon|t}} {{Icon|LCS}} {{Icon|VCS}} [http://public.sannybuilder.com/GXT/ List of all English GXT entries] by Seemann
 
*{{Icon|3}} {{Icon|VC}} [http://spaceeinstein.altervista.org/gxt/ List of non-English GXT entries] by [[User:Spaceeinstein|spaceeinstein]]
*{{Icon|3}} [http://pastebin.com/raw.php?i=HwDP132U american.gxt source] - original code found by Wesser
*{{Icon|4}} [http://public.sannybuilder.com/GTA4/american.gxt.reversed.rar Some of GTA IV GXT text entry names]
*[http://www.gtaforums.com/index.php?showtopic=458584 List of usable characters] in GTA III and GTA Vice City by [[User:Spaceeinstein|spaceeinstein]]


[[Category:Other Formats]][[Category:GTA III Modifications]][[Category:GTA Vice City]]{{fdl}}
{{fdl}}
[[Category:Modifications]]
{{3-navi}}
{{VC-navi}}
[[Category:File Formats]]

Latest revision as of 09:35, 22 July 2018

A GTA Text (GXT) file contains almost all texts that are displayed on the screen of Grand Theft Auto 2 and above. The location of those files may differ between the various game versions, but they are usually located in the \text\ folder inside the games installation directory. Except for GTA 2 There is one GXT file for each language, but the number of gxt files does not define the number of supported languages by the game.

File format

GTA 2

GTA 2 begins with a header followed by a TKEY block followed by a TDAT block. Within the TKEY block is an array of TKEY entries containing the offset to and the name of the TDAT entry. A TDAT entry contains the text to be displayed in the game.

Header
Offset Type Description
0x00 char[4]
  • GBLE: English
  • GBLF: French
  • GBLG: German
  • GBLI: Italian
  • GBLS: Spanish
  • GBLJ: 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
  • 0x2172: Redneck
  • 0x2173: Scientist
  • 0x2179: Yakuza
  • 0x217A: Zaibatsu

GTA III

Grand Theft Auto III is nearly identical to GTA 2 but without the header. It begins with a TKEY block followed by a TDAT block. Within the TKEY block is an array of TKEY entries containing the offset to and the name of the TDAT entry. A TDAT entry contains the text to be displayed in the game. The Xbox version of GTA Vice City uses this format also.

Block 1 (TKEY)
Offset Type Description
0x00 char[4] TKEY
0x04 dword Size of TKEY block
0x08 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 + 16.
0x04 char[8] TDAT entry name

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

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 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 Vice City, GTA Liberty City Stories, and GTA Vice City Stories

Grand Theft Auto: Vice City, Grand Theft Auto: Liberty City Stories, and Grand Theft Auto: Vice City Stories begin with a TABL block, which was first introduced in GTA Vice City, followed by an array of TKEY blocks. Within each TKEY block is an array of TKEY entries containing the offset to and the name of the TDAT entry. A TDAT entry contains the text to be displayed in the game. The Xbox version of GTA Vice City uses GTA III's format instead.

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 San Andreas / GTA IV Format

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.

INT32   - 4b   - Version (0x080004 for ASCII, 0x100004 for 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

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.

GTA 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 GTA Vice City GTA San Andreas GTA Liberty City Stories
~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~ text within a text
~b~ 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
~h~ white text highlight 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
~n~ - - newline -
~m~ - - L2 icon (PS2) / WHITE icon (XBOX) -
~o~ - pink text Circle icon (PS2) / B icon (XBOX) pink text
~p~ 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
~s~ - - reset color to standard -
~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
~x~ - light blue text Cross icon (PS2) / A icon (XBOX) light blue text
~y~ 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 GTA 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 GTA Vice City GTA San Andreas ~PED_FIREWEAPON~
Next Weapon / Target GTA III GTA Vice City GTA San Andreas ~PED_CYCLE_WEAPON_RIGHT~
Previous Weapon / Target GTA III GTA Vice City GTA San Andreas ~PED_CYCLE_WEAPON_LEFT~
Group Ctrl Forward GTA San Andreas ~GROUP_CONTROL_FWD~
Group Ctrl Back GTA San Andreas ~GROUP_CONTROL_BWD~
Conversation - No GTA San Andreas ~CONVERSATION_NO~
Conversation - Yes GTA San Andreas ~CONVERSATION_YES~
Forward GTA III GTA Vice City GTA San Andreas ~GO_FORWARD~
Backwards GTA III GTA Vice City GTA San Andreas ~GO_BACK~
Left GTA III GTA Vice City GTA San Andreas ~GO_LEFT~
Right GTA III GTA Vice City GTA San Andreas ~GO_RIGHT~
Zoom In GTA III GTA Vice City GTA San Andreas ~PED_SNIPER_ZOOM_IN~
Zoom Out GTA III GTA Vice City GTA San Andreas ~PED_SNIPER_ZOOM_OUT~
Enter+Exit GTA III GTA Vice City GTA San Andreas ~VEHICLE_ENTER_EXIT~
Change Camera GTA III GTA Vice City GTA San Andreas ~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~
Jump GTA III GTA Vice City GTA San Andreas ~PED_JUMPING~
Sprint GTA III GTA Vice City GTA San Andreas ~PED_SPRINT~
Target / Aim Weapon GTA III GTA Vice City GTA San Andreas ~PED_LOCK_TARGET~
Crouch GTA Vice City GTA San Andreas ~PED_DUCK~
Action GTA Vice City GTA San Andreas ~PED_ANSWER_PHONE~
Walk GTA San Andreas ~SNEAK_ABOUT~
Look Behind GTA III GTA Vice City GTA San Andreas ~PED_LOOKBEHIND~
Look Left GTA III GTA Vice Citya ~PED_1RST_PERSON_LOOK_LEFT~
Look Right GTA III GTA Vice Citya ~PED_1RST_PERSON_LOOK_RIGHT~
Look Up GTA III GTA Vice Citya ~PED_1RST_PERSON_LOOK_UP~
Look Down GTA III GTA Vice Citya ~PED_1RST_PERSON_LOOK_DOWN~
Next Target GTA III GTA Vice Citya ~PED_CYCLE_TARGET_LEFT~
Previous Target GTA III GTA Vice Citya ~PED_CYCLE_TARGET_RIGHT~
Center Camera GTA III GTA Vice Citya ~PED_CENTER_CAMERA_BEHIND_PLAYER~

Vehicle Controls

Key Game Entry
Fire GTA III GTA Vice City GTA San Andreas ~VEHICLE_FIREWEAPON~
Secondary Fire GTA San Andreas ~VEHICLE_FIREWEAPON_ALT~
Accelerate GTA III GTA Vice City GTA San Andreas ~VEHICLE_ACCELERATE~
Brake / Reverse GTA III GTA Vice City GTA San Andreas ~VEHICLE_BRAKE~
Left GTA III GTA Vice City GTA San Andreas ~VEHICLE_STEERLEFT~
Right GTA III GTA Vice City GTA San Andreas ~VEHICLE_STEERRIGHT~
Steer Forward / Down GTA III GTA Vice City GTA San Andreas ~VEHICLE_STEERDOWN~
Steer Back / Up GTA III GTA Vice City GTA San Andreas ~VEHICLE_STEERUP~
Enter+Exit GTA III GTA Vice City GTA San Andreas ~VEHICLE_ENTER_EXIT~
Trip Skip GTA San Andreas ~CONVERSATION_YES~
Change Radio Station GTA III GTA Vice City ~VEHICLE_CHANGE_RADIO_STATION~
Next Radio Station GTA San Andreas ~VEHICLE_RADIO_STATION_UP~
Previous Radio Station GTA San Andreas ~VEHICLE_RADIO_STATION_DOWN~
User Track Skip GTA San Andreas none
Horn GTA III GTA Vice City GTA San Andreas ~VEHICLE_HORN~
Sub-mission GTA III GTA Vice City GTA San Andreas ~TOGGLE_SUBMISSIONS~
Change Camera GTA III GTA Vice City GTA San Andreas ~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~
Handbrake GTA III GTA Vice City GTA San Andreas ~VEHICLE_HANDBRAKE~
Mouse Look GTA San Andreas ~VEHICLE_MOUSELOOK~
Look Left GTA III GTA Vice City GTA San Andreas ~VEHICLE_LOOKLEFT~
Look Right GTA III GTA Vice City GTA San Andreas ~VEHICLE_LOOKRIGHT~
Turret Left / Special Ctrl Left GTA III GTA Vice City GTA San Andreas ~VEHICLE_TURRETLEFT~
Turret Right / Special Ctrl Right GTA III GTA Vice City GTA San Andreas ~VEHICLE_TURRETRIGHT~
Turret Up / Special Ctrl Up GTA III GTA Vice City GTA San Andreas ~VEHICLE_TURRETUP~
Turret Down / Special Ctrl Down GTA III GTA Vice City GTA San Andreas ~VEHICLE_TURRETDOWN~
Look Behind GTA III GTA Vice City GTA San Andreasb ~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 GTA Vice City GTA San Andreas GTA Liberty City Stories GTA Vice City Stories Grand Theft Auto GXT Editor v1.3 - by Zverik, retrieved from archive.org
GTA III GTA Vice City GTA San Andreas GTA Liberty City Stories GTA Vice City Stories GTA IV SAGE v0.9.7 - by AleX AciD
GTA III GTA Vice City GTA Liberty City Stories GTA Vice City Stories GTA Texter v2.0b3 - by feroCT5
GTA III GXT Editor 1.3 - by Jevon
GTA Vice City GTA Liberty City Stories GTA Vice City Stories GTA: Vice City GXT Editor v1.2 - by CyQ
GTA Vice City GTA San Andreas GXT Builder, by Silent
GTA San Andreas GTA San Andreas Text Editor - by JernejL
GTA San Andreas GTA: San Andreas GXT Editor v1.3 - by Hammer83
GTA San Andreas A-GXT Editor v1.0a - by Aschratt
GTA San Andreas GTA IV X GXT Editor v2.1 - by xmen
GTA IV OpenIV - Have Inbuilt GXT file viewer

Reference

External links

Copyrighted

This page is licensed under the GNU Free Documentation Licence. This page has a separate license to the CC-BY-SA that applies to most of Grand Theft Wiki.

The full text of the GNU FDL v1.2 is here. Click the "History" button to see the full list of authors. See Grand Theft Wiki:Copyright for more detail on our copyright policy.

GNU Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
See Grand Theft Wiki:Copyright for more information.