The messages are encrypted using a polyalphabetic substitution cipher that appears like a monoalphabetic cypher after byte 8, which made it easy to crack.
Subtract an offset from the first 8 bytes in the file. The respective offsets are, in hexadecimal notation, 63, c6, 8c, 18, 30, 60, c0, 80. (Of course you can get these numbers by taking 63 and shifting it one bit to left for each consecutive number. You can see why this sequence ends after 8 bytes; it wouldve been harder to crack, had the bit pattern been rotated instead of shifted...)
Subtract 1 from all bytes. (This includes the bytes from the previous step!)
If a byte equals 195, delete it and add 64 to the next byte. This relocates extended characters to the windows ANSI character set, which is necessary for three of the four languages provided.
Each string ends with a 0 byte and contains no CR or LF codes. The next string is stored immediately after it. The last string in the file seems to always be ".
Each string has the form [key]message . Examples from english.fxt:
Answer the South Park phones to get jobs. Keep your eyes open for opportunities. Remember - you mess up, we mess you up. [duplicate_model]Another one? Where's your imagination, kid?
Example: 482 MOBILE_BRIEF 0 0 0 0 1440 displays Get your ass back to the phones in the park for more jobs.
helpxx : Used for info sign POWERUP objects, xx=ammo parameter
521 (8,124,4) POWERUP 14 10 makes an info sign that reads: [help10]Some buildings conceal courtyard areas. Check them out for a few fab surprises.
carxx : Car names for display; a car with no name will crash the game. xx=model byte in car record stored in STYLE file. Add [car88] to use the helicopter.
xxxareayyy : Display names for area yyy as defined in the corresponding *.cmp file. Does xxx correspond to the style number stored in the cmp file, to the sample number, or to the level?
missionxx : Mission name for display in pre-game screens; xx=MISSION.INI section number
cityx: Name of City for display in pre-game screens; x=hundreds digit of MISSION.INI section number?
cutxx : Text for Cutscene.
[cut12]I booked you a flight to San Andreas.
[m22demo]Time's up, sucker! Ya want more? Buy the real thing. [ipxnotinstalled]IPX Not Installed [bomb_cost]That'll be $%s.
Comment: The messages are really C printf format strings, so the % sign should not normally be used unless escaped with a '\'. %s means that the program inserts a string here.
Comment: This message can be shown be the ARMEDMESS Action.
Last change: 26 Apr 1998
unofficial GTA Reference