the cutting room mirror

Grand Theft Auto (Windows)

This article has a talk page!This article has a talk page!
view on tcrf.net

Grand Theft Auto began it's development under the working title Race’n’Chase.

Debug Mode#

Start a new game with any character, but change the character's name to porkcharsui. You'll hear a car accelerating and burning its tires. A set of debug commands will be available in the game.

If you quit the game, this debug mode will not work when you play the game again. You have to delete the player's name and enter it again to reactivate it.

Key

Effect

Home

Centers the game camera on top of you.

Numpad 8 / 4 / 6 / 2

Moves the camera Up / Left / Down / Right.

R

Calls the routine that changes the screen mode. This may not work on the latest version of the game.

F12

Restarts the level.

D

Takes a screenshot. (This does not work in the Steam version of the game.)

C

I am not a number, I am a free man! Er, woman! FYI, anything over 100 means you go boom.
Displays your character's coordinates on the map, as well as your ID in the game itself. When using a vehicle, this displays the car's ID number, its speed, and the amount of damage it has taken.

[ or L

Zooms in the camera.

K or ]

Zooms out the camera.

Num +

Enables Frame by frame mode. Continue to press Num + to go forward 1 frame per button press.

Left Alt

Slow motion. While Alt is held, the game only advances one frame in every five; releasing it returns to normal speed.

Cheat Codes#

Cheats are activated by renaming a player in the main menu. The game compares the new name with a list of 16 codes. When one matches, a confirmation sound plays and the effect is written into the player settings file, player_a.dat. The whole check is skipped when the game's demo-mode flag is set, so the codes do nothing in the retail demos.

How the Codes Are Stored#

The codes aren't stored as plain text, so they don't turn up when you search the executable. Each code is interleaved with part of a hidden message. The code's letters are in the even positions and the message's letters in the odd positions:

n h i e n r e e i   n a a r r t o h w e
n . i . n . e . i . n . a . r . o . w .    = nineinarow
. h . e . r . e .   . a . r . t . h . e    = "here arthe"

The comparison code (at 0x4A754 in the retail GTA24.EXE) compares each character of the player name with the code, but it moves through the code two bytes at a time. That means it reads only the even positions. A table of 16 pointers at 0x1424E4 gives the address of each code.

In the retail GTA24.EXE, the list is at memory address 0x150B5F, which is file offset 0x1E72C3. This is the full list as stored:

nhienreei naarrtohwe
scuhpeeart  wceoldle
ist s.g aflilnuds
6t0h3e1m7 6i9f
iytosut acnatnr u.m
isaommteh eolfa wt
shteemv easrmea tneost
csaalflem etnoi guesle
bsuoc kpflaesats
peo rbkec hcaarrseufiu
Hle awrith tohfe mG o.l dy
ioanmegvaerry pkennonw
i aqmunioet gwahraytp einsn
hgaotien gm atcoh ihnaep
iptecno u!l dbbee yfoour
snuocwk m.y rkoecikteht.

Hidden Message#

Read in order, the odd positions spell out a message from the developers. This is exactly as stored, typos and missing letters included:

here arthecheat codes . find them ifyou can . some of them are notsafe to useso please be careful wihthem . yonever know quie what is going to happen ! be fornow . keith.

With the spacing and missing letters restored, it reads: "Here are the cheat codes. Find them if you can. Some of them are not safe to use, so please be careful with them. You never know quite what is going to happen! Bye for now. Keith."

Codes and Effects#

The codes are case-sensitive and must be typed exactly, spaces included. Most effects only apply in single-player games. The effects below come from reading the code that each cheat triggers, not from testing in game. Effects that couldn't be pinned down are marked as probable or unconfirmed.

Code(s)

What the code does

Effect

nineinarow, super well, itsgallus

Clears the "locked" marker on every level

All levels unlocked

6031769, itstantrum

Sets lives to 255 instead of 4

Unlimited lives

iamthelaw, stevesmates

Sets the flag that multiplayer games use to turn the police off

No police (probable)

callmenigel, buckfast

Gives weapons 1 to 4, each with 99 ammo

All weapons

porkcharsui

Sets the debug flag

Debug mode (see above)

Heart of Gold

Sets six flags in the player's save, one for each of the six chapters

Unconfirmed, possibly marks every chapter as completed

iamgarypenn

Sets the language to 99

Uses the special script (see below)

iamnotgarypenn

Sets the language back to 255 (the default)

Returns to the normal script

hate machine

Sets the score multiplier to 10

×10 multiplier

itcouldbeyou

Writes 999,999,999 into the score fields

Maximum score

suckmyrocket

Gives weapons 1 to 4 with 99 ammo, sets get-out-of-jail-free card item flag to 1, and sets armour points to 3

All weapons plus 3 armour points and a get-out-of-jail-free card)

Special Script#

The iamgarypenn cheat switches the game script to a completely separate text file, SPECIAL.FXT, which contains a more foul-mouthed version of the script.

How the Game Switches Scripts#

The player settings in player_a.dat include a language byte, at memory address 0x1A5D3D in GTA24.EXE. Its default value is 255, which means "no override". iamgarypenn sets it to 99 and saves the file, and iamnotgarypenn sets it back to 255.

When the settings are loaded (0x50838), any value other than 255 is passed to the routine that chooses the text file (0xF9E5C):

Value

File loaded

0

..\gtadata\english.fxt

1

..\gtadata\french.fxt

2

..\gtadata\german.fxt

3

..\gtadata\italian.fxt

4

..\gtadata\japanese.fxt

99

..\gtadata\special.fxt

255

No override (uses the language setting chosen at startup)

SPECIAL.FXT is encrypted with the same key as ENGLISH.FXT.

Differences#

SPECIAL.FXT has the same 1,800 entries as ENGLISH.FXT, in the same order. 174 of them are different, and all 174 are Liberty City mission text (the 1xxx range). The San Andreas and Vice City text and all the menu text are identical to ENGLISH.FXT.

Each changed line was rewritten by hand rather than by swapping words. The same word is changed in different ways from line to line: "shithead", for example, becomes "fucker", "ya fuck" or "fuck". Some lines also have changes that have nothing to do with swearing. Every changed line is listed on this page; a few examples are below.

ENGLISH.FXT

SPECIAL.FXT

[1001]Answer the South Park phones to get jobs. Keep your eyes open for opportunities. Remember - you mess up, we mess you up.
[1001]Answer the South Park phones to get jobs. Keep your eyes open for opportunities. Remember - you fuck up, we fuck you up.
[1075]Two guys tore up the Cat House in South Island City. Started on the girls, too. Real messy. Bubby wants them screwed.
[1075]Two fuckers tore up the Cat House in South Island City. Started on the girls, too. Real messy. Bubby wants the fuckers fucked.
[1076]Some mutha's called the cops. Get over to Seymour Reamer's at Brocklyn Docks.
[1076]Some motherfucker's called the cops. Get over to Seymour Reamer's at Brocklyn Docks.

Unused Graphics#

Vehicles#

Helicopter. Doesn't really fly. When spawned in the game, it moves on the ground like a car.

Tram. Intended as the train equivalent for the San Andreas level, as evidenced by the tramway tracks found there. These tracks have all the required metadata in place so a tram can be re-added using an editor; trams were likely omitted because they keep on crashing into other vehicles, eventually getting stuck. A Tram would later make it into the 3D Universe in Grand Theft Auto: San Andreas, where they could still crash into vehicles.

Tiles#

From San Andreas' 24-bit tileset.

Sign#

While there are no subway stations in San Andreas, an equivalent feature was planned for the two chapters set in the city. There are two separate unused tramway lines in the northern portion of the city, with unique tram stop signs indicating the "stations". An unused vehicle sprite for the Tram also exists in the game files. In the final version, tramways are simply part of San Andreas' scenario.

Other#

GTA1_Petrol_bomb.png GTA1_PetrolBomb_Sprites.png

Intended for a Petrol Bomb item. This would eventually evolve to Molotov cocktails in Grand Theft Auto 2.

An unused set of sprites depicting the player character performing a crawling animation is left unused.

(Source: GTA Wiki)

Alternate Graphics Set#

This needs some investigation.
Discuss ideas and findings on the talk page.

The original split DOS/Windows release contains an alternate graphic set for the 320x200x256 resolution. Curiously, it still uses the old DeluxePaint palette, meaning it was probably done in 1995 when the game was still about dinosaurs.

Unused Text#

Demo Text#

Text carried over from the demo version.

 [m22demo]Time's up, sucker! Ya want more? Buy the real thing.
 [LoadingDemo]Loading Demo...

Maid's Corpse#

Unused entries in the ENGLISH.FXT file shows a third unused objective for the mission Heist Almighty - Porka Turbo. Originally, Bubby's wife Skye would have killed her house's maid for catching her having an affair with the "pool guy" (previously mentioned in Gangsta Bang - Taxi). Skye hides the maid's body in the trunk of a car, and the player is tasked by Bubby himself with delivering the body to Reeve's place. This segment of the mission would have taken place after delivering Jimmy Waterson to Bubby's place in Northwest Kings, and before the player is told to assassinate Dumb Kurt.

[1319]I want Jimmy picked up NOW! He's at the National Reserve Bank in South Ardler.
[1320]How ya doin', man? Let's get outta here! Bubby's place is in North West Kings.
[1321]Shit. My bitch wife just wasted the maid. Musta caught her with the pool guy again. The body's in a car in Central Kings. ***(UNUSED)***
[1322]Now ya got the car, take it to Reeve's in North East Estoria. Mind the cops. ***(UNUSED)***
[1323]An overrated hitman called Dumb Kurt just hit town. Hit him with a rigged car.
[1324]Murdered Dumb Kurt? I'm prouda ya. Now, if only we could get rid of The Man...

Unused Audio#

Unused Rave Track#

Small looped segments of existing tracks are heard in-game whenever a random sports car is seen passing by. One of the looped tracks does not match any of the in-game tracks.

Unused Vehicle Names#

 [car10]Breakdown Truck
 [car12]Tram
 [car36]APC

The Breakdown Truck and APC are just names, without corresponding images in the graphics files. From the other site, the Helicopter has graphics (as seen above), but no name declared in the text file.

Demo Versions#

This needs some investigation.
Discuss ideas and findings on the talk page.

To do:
Try to find pictures of the 4 demo versions.

There were 4 PC demos of Grand Theft Auto; a version with 8-bit (256) colour graphics, a 24-bit colour version, a 3DFX only demo, and a special ECTS (European Computer Trade Show) competition version which was 3DFX only.

Text Encryption#

Like the final game, the demo's script is in an encrypted ENGLISH.FXT file. The encryption scheme is the same, but the demos use a different key, so script decoder tools for the full game produce garbage when run on a demo file.

Each byte is shifted by a fixed amount, and the first 8 bytes also have an extra value subtracted that doubles with each byte (the seed shifted left by the byte's position, keeping only the low 8 bits).

Version

Header seed (first 8 bytes)

Shift (every byte)

Final

0x63

−1

Demo / ECTS Demo

0x67

+28 (0x1C)

8-bit, 24-bit and 3DFX Demos#

The three standard demos all share the same text file. It has 781 entries, compared with 1,800 in the final game. Only Liberty City's mission text is included. 771 entries are identical to the final game's.

Demo-Only Text#

Seven entries exist only in the demo. They appear to replace jobs that are locked off in the demo, telling the player to buy the full game instead.

[1531]If you want another job you better buy the game you cheapskate punk!
[1532]Want another job do ya? Buy the full game then!
[1533]This car will give you a bloody good job... if you buy the game!
[1534]Well done! If you were playing the full version you'd have found a secret bonus task.
[1535]I've got a great job for ya kid... hey! What do you mean you're only playing the demo version. Get out of my car and buy the game.
[1536]You cheap son of a bitch! If you buy the game and I'll let you see my little sister.
[1537]I've got a great killing spree lined you for you if you buy the full game!

Typo#

One of San Andreas' district names is misspelled in the demo and corrected in the final game.

Demo

Final

[002area016]Saliors Wharf
[002area016]Sailors Wharf

ECTS Competition Demo#

The ECTS demo's text file is much smaller, at 421 entries. It contains no Liberty City mission text at all. The only mission is a cut-down version of Tequila Slammer - Phone 3: Mission 1, in which El Burro bets his friend Jefe that the player can kill a number of federales against the clock. The file also has its own [comp-message] entry, next to the [demo-message] and [cd-message] entries found in every version.

[comp-message]ECTS Competition Version

412 of its entries match the final game exactly. Of the other 9, six change existing text: [mission1] and [2314]–[2318]. The other three are additions: [comp-message] above, and the extra [2500]/[2501] entries below.

Competition Changes#

The first mission slot is renamed, and two extra entries at the top of the file replace the usual mission complete and failed messages. The standard [2500]MISSION COMPLETE! and [2501]MISSION FAILED! entries are still in the file further down.

ECTS Demo

Final

[mission1]Competition
[mission1]Gangsta Bang
[2500]WELL DONE!
[2500]MISSION COMPLETE!
[2501]YOU LOSE!
[2501]MISSION FAILED!

Tequila Slammer - Phone 3: Mission 1#

The mission is easier in the ECTS demo: five kills in five minutes instead of eight in eight. Instead of Jefe's man taunting the player and naming each next target's location, the game simply counts down the kills left.

ECTS Demo

Final

[2314]I bet him you can kill five federales in less than five minutes. He say no way! You show him, pretty-boy!
[2314]I bet him you can kill eight federales in less than eight minutes. He say no way! You show him, pretty-boy!
[2315]FOUR TO GO!
[2315]Hahaha! Tha's the way, homeboy! The nex' one is in Chinatown.
[2316]THREE TO GO!
[2316]Ey ey ey! We're smokin' now, amigo! There's one in Glenwood go get him!
[2317]TWO TO GO!
[2317]Heheheh! One less pig to worry about, no? The nex' one is in Sailors Wharf.
[2318]ONE TO GO!
[2318]Caramba! You are getting vicious I think! The next victim is at the Marina.

Demo Mode#

The demo and retail executables share the same code for the demo's restrictions. What differs is a single start-up option, the demo-mode flag (0x19AF33 in the 24-bit demo's DEMO24.EXE). The demo sets it to 1 and the retail game sets it to 0. The flag is set in two separate start-up routines, and the retail game's are identical apart from that value.

The flag is checked in about 20 places.

Time Limit#

The demo ends after 400 seconds. The game counts time in ticks, 25 per second. When demo mode is on, the main loop compares the tick counter with 10,000 (400 × 25). Once the limit passes, it ends the game with reason 11, which shows this message:

[m22demo]Time's up, sucker! Ya want more? Buy the real thing.

An on-screen countdown shows the seconds remaining, calculated as (10,000 − ticks) ÷ 25. The timer code is still in the retail executable, but it never runs because the flag is always 0. That's why this message is left over as unused text in the final game.

Cheats Disabled#

The cheat code check is skipped completely when demo mode is on, so none of the codes work in the demo.