If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Bugs:Gran Turismo 2

From The Cutting Room Floor
Jump to navigation Jump to search

This page details bugs of Gran Turismo 2.

Gran Turismo 2 is notorious for being rushed for the Christmas season of 1999 – this naturally resulted in several mistakes not being caught by testers and developers until after the game went gold. This sub-page describes bugs and other errors that may or may not have been fixed in subsequent revisions.

Code Bugs

This section covers issues caused by coding mistakes in either the game's executable or its overlays.

Machine Test/Garage Bug

Congratulations, you just got struck by the infamous "garage thief"

At an earlier point in development, the game was coded to accept up to ten Machine Test records per category – 0-400m, 0-1000m and Max Speed, with unused text strings supporting this. Later on this number was reduced to eight and memory was rearranged to account for this change, but the old number appears to still be referenced to some extent in the earliest Japanese and North American versions of the game. This leads to a notorious bug that usually results in vital garage information being overwritten.

In the original Japanese release of GT2, memory offset 0x1CD910 keeps track of how many max speed records the player has set under Machine Test, with record data itself starting at 0x1CD914. This is placed right next to the garage data, with memory offset 0x1CD9B4 keeping track of how many cars the player has collected and actual vehicle data starting at 0x1CD9B8. The same applies to the initial North American version, subtracting 0xA00 from each offset.

The most common form of this bug occurs when the player, after previously setting a speed record with at least eight different cars, makes the leaderboard again and then proceeds to beat that same car's record. When this happens, garage data is overwritten with twenty bytes from 0x1CD9B4 if it's the player's ninth record, or forty or more bytes from 0x1CD9C8 if the tenth or further attempt, with four FF bytes being written to 0x1CD9B8, 0x1CD9CC or any further offset depending on the value of 0x1CD910. With the number of cars being first in the death row, the garage may either appear as empty if the value is changed to zero, or be filled with several "No Name No Name" cars – typically displaying the night model of a race modified Eunos Roadster V-special (amivr)) – if a value above 0x64 is written there.

Alternatives to this glitch may involve the other two test categories, and careful exploitation enables the player to manipulate extra save data such as credits amassed and the last name used for record entries.

(US version offsets; explanation videos: GT2toXS; thefanman)

98.20% Completion

No, there's no secret drag tournament.

One of the game's most infamous errors, as well as a big subject of speculation and misinformation around the time of its release: the player is not able to reach 100% completion in the original Japanese version and the first two North American builds. While this has long been attributed to the "removal" of the drag racing game mode, the actual reason behind the issue isn't nearly as mysterious or interesting.

Percentage calculation is handled by a GT Mode-specific code overlay present in GT2.OVL, which contains an array of 248 event IDs that mirrors those found in gtmode_race.dat. Out of those entries, 25 belong to placeholders meant for triggering license and Machine Test modes from within GT Mode's menus, as well as complementary series races, none of which are ever marked as "complete" in the player's progression data. The game subtracts the number of "events" to be ignored from the total number of array entries, obtaining the value it compares against the player's total of complete events.

The problem with the early versions of the game is that the event data contains four inaccessible entries that are not ignored in this calculation: two Vauxhall Tigra races and two Peugeot 206 contests – the former meant strictly for the European version of the game, the latter being dummied out at some point. As a result, the game incorrectly expects 223 events for 100% completion, whereas only 219 are available, under normal circumstances, once the player has obtained the Super License.

The final Japanese build corrects this issue by simply bumping the number of ignored entries from 25 to 29. While this solution is good enough for that release as well as the final North American version, it generates another hiccup for the sole European build: while the player can't access both Opel and Vauxhall manufacturers at the same time, they're just one console reset and language change away from each other. This means that, while completing either pair of Tigra one-make races allows the player to reach 100% completion, completing both enables up to 100.91% as "221 out of 219 events" are marked as won.

(Research: Silent, pez2k)

2P Autumn Ring in Gran Turismo Mode

Turn 1 of Autumn Ring typically features billboards, none of which are present in the 2P version.

Events that make use of random courses – more specifically one-make races and the Event Synthesizer – select from a list of 39 possible circuits found in the GT Mode-specific overlay within GT2.OVL. Due to human error, Apricot Hill Raceway is never selected in its non-reverse form, as its internal name is misspelled as new_paramaS instead of the correct new_parmaS.

Unable to locate the correct pair of .tro and .trp files, the game falls back to the first track found in crsobj: 2p_autumn, which is the stripped-down two-player version of Autumn Ring, never intended to appear in GT Mode.

(Research: Silent, pez2k, Submaniac)

Merging Cars

The real merging simulator.

A rare bug present in the game's engine, presumably in a collision detection-related routine, results in cars occasionally merging into each other upon contact. The two cars will drive like this until one moves to the side just enough to break out of the other, getting rapidly launched sideways.

While the exact conditions for triggering this glitch aren't clear, it is mostly observed between cars of similar dimensions, and may happen to both A.I.-controlled cars and the player.

Faulty Data

This section covers errors regarding game data found in GT2.VOL.

A.I. Logic Data

What's wrong? Engine trouble?

Select courses, such as Laguna Seca Raceway and Seattle Circuit, suffer from issues where A.I. cars, typically after spinning out at certain points of the track, might get stuck in a reverse-brake loop until punted by another vehicle.

Track Collision Data

Some of the game's courses contain vulnerable points where the player may rub against a corner – typically involving tire barriers – and, with enough effort, break through the walls and gain access to out of bounds areas of the environment. These are most effectively exploited using four-wheel drive cars.

Laguna Seca Raceway

Being the most popular example of this phenomenon, this course has one known weak point: at the tire barriers outside of turn 1. While this is generally the easiest to exploit, it also comes with the downside of being off track, meaning the player is always treated as driving off-road and is never able to reach top speeds.

Red Rock Valley Speedway

The tire barriers right before turn 2 present an opportunity for breaking out of the course. Like Laguna Seca, this is done off-road and as such limits the player's top speed.

(Source: Eedron95)

Seattle Circuit

Both the full and short layouts of Seattle Circuit have vulnerable points around the main straight, with the full version having additional tire barriers elsewhere that may be breached with some effort. Unlike Laguna Seca, the player doesn't need to go off-road to exploit any of these weak points.

Apricot Hill Speedway

The right turn following Apricot Hill's Dunlop Bridge presents another opportunity for breaking out of bounds, with tire barriers being the culprit once more.

(Source: Eedron95)

Grand Valley Speedway

T1 of Grand Valley and its East layout contains yet another example of exploitable tire barriers.

(Source: Eedron95)

Special Stage Route 5

SSR5, along with its short Clubman layout, contains a number of weak points. The pit lane alone has three – two shared by both layouts and one unique to the full version, with two of them requiring use of Arcade Mode's Time Attack/Time Trial game mode for access. The remaining points are found at the various tire barriers separating the two layouts, with a total of eight being found between the two variants of the course.

Autumn Ring

Autumn Ring is an interesting course: the regular layout still features the alternate pit lane seen in its Mini variant, closed off by yellow barriers. The exit in particular is vulnerable enough to be breached, allowing access to the outside of the course as no collision data is present for the lane itself or its eye candy.

(Source: Eedron95)

Test Course

The pit lane of Test Course has a vulnerable point that requires Time Attack/Time Trial mode for access. This is located to the right of the last eye candy garage, with careful maneuvering being the key for a successful breach.

The alternate Machine Test variants of the track also have their own weak points at the pit lane's exit – closed off like in Autumn Ring – as well as the good ol' tire barriers.

(Source: Eedron95)

Pikes Peak Hill Climb

Pikes Peak is the only point-to-point course intended for racing in Gran Turismo 2. Naturally, its drivable area is bookended by tire barriers which present little challenge for somebody trying to go out of bounds...

(Source: Eedron95)

Motor Sports Land

This segregated kart track is something special: it doesn't suffer from particularly vulnerable pieces of scenery the player may clip through, but instead has issues with chunks of track not being loaded at all under certain circumstances.

The issue primarily occurs when the course is ran in revese direction. At least four turns, when taken too narrowly, will cause the game to stop loading further pieces of track, allowing the player to simply drive through scenery.

Mismatched Opponent Cars

This race car here is actually beatable with skills and good tuning.

The initial North American release of GT2 suffers from an issue where, in most events under the Endurance section, one A.I. opponent is "mismatched" compared to the rest of the line-up. This was caused by human error during the process of localizing the global opponent list, found in carparam/gtmode_race.dat, for western audiences.

Between the releases of the original Japanese version and the first North American build, Polyphony Digital introduced a handful of regional variants of existing cars, intended for use in the western versions of the game. This prompted the developers to update the opponent list, in order to replace the original JP-spec cars with the newly introduced alternatives, targeting three specific models: nzxsn (Z Ver.S 2seater TwinTurbo '94), us35n (Shelby GT350) and us50n (Shelby GT500KR).

The process of replacing the cars consisted of adding a new entry with the same ID as the original, then pushing said original to the end of the list with a new ID – this was to be done to two Zs, five GT350s and two GT500KRs. The person in charge of doing this took proper care of all but one of the GT500KRs – the one with ID 0x467, forgetting to push it to the tail end of the master list and effectively leaving two cars with the same ID placed right next to each other there.

As this specific Shelby opponent is referenced by the Grand Valley 300km endurance race (EGV0001), Polyphony's tooling placed it twice in its pool of possible opponents and, respecting the event's original number of entrants (eight), shifted every following entry by one position. This results in cars appearing in enduros where they're not supposed to, typically being outclassed by the opposition or, in one infamous case, sitting well above the power limit.

Event ID Event Name Opponent
ID
Opponent
Model
Opponent Car Name Intended
Event ID
EPS0001 Apricot Hill 200km 0x469 bub2n RUF BTR2 EGV0001
EST0001 Seattle Circuit 100 Miles 0x479 vgr5n TVR Griffith 500 EPS0001
ELS0001 Laguna Seca 200 Miles 0x486 dvpgn VIPER GTS EST0001
ERM0001 Millennium in Rome 0x494 d2tvr STP TAISAN VIPER ELS0001
ETM0001 Trial Mountain 30 Laps 0x49F uv2lr Vector M12 LM Edition ERM0001
ES50001 Special Stage Route 5 All-Night 0x4AF fcx3n Citroen Xantia 3.0i v6 ETM0001
EST0001 Seattle Circuit 100 Miles 0x4B9 bvcdr Vauxhall Calibra Touring car ES50001
DO70002 Tahiti Maze (Trial 2) 0x4BA ccamn CAMARO Z28 Coupe EST0001
N/A N/A 0x4BB fp2xr Peugeot 206 '99 RALLY CAR DO70002
(Original race data teardown: thefanman)

Tahiti Maze Rally Ghost

10,000 free credits!

As a direct result of the mistake above, the ghost car faced in the second dirt trial of Tahiti Maze becomes unable to actually complete the course, as it just drives into the wall at the first turn. This happens because the ghost data, located in the dirt directory of GT2.VOL, does not hold part parameters, and the game still needs to load an opponent from carparam/gtmode_race.dat like in regular race events. With the intended Peugeot 206 rally car being replaced by a Chevrolet Camaro Z28 in the event's opponent pool, the ghost – which inherits the body and replay name from ab_tahiti_test7.dgf – uses all performance parts from the Camaro and naturally goes out of sync.

Work on the initial North American version was wrapped up on December 8th (Japan Standard Time), with the US-specific parameter files being last modified on December 10th. This batch of changes solves the GT500KR issue by pushing it to the end of the opponent list and, in the process, reverts all issues with mismatched opponents, including the 206 which is now able to complete its lap around the course thanks to its opponent data actually matching what the ghost was originally recorded with.

License Test IB-4 Demonstration Replay

No, PD didn't give up trying to record this demo.

The second North American release introduces some minor cosmetic touch-ups to select license test courses, but also an unintended change to the surface data of test_s2 that causes the demo replay of license test IB-4 to go out of sync, resulting in the car driving on the grass and triggering an "Out of Course" failure. This is corrected in the final Japanese version.

Unobtainable Exxon GT-One

Toyota GT-One '99 in its original Esso livery, not meant to be obtainable in North American versions of GT2.

As the developers aimed for a more "realistic" experience for North American players, all cars with Esso logos – three Peugeot models and three Toyota vehicles – were supplanted by fictional Exxon variants in that region. While most of them were properly set up to be attainable, the two Toyota GT-One models awarded to the player still carry Esso branding due to developer oversight.

In order to completely "replace" the cars in regular gameplay, the developers would introduce alternate opponents to each event pool that referenced them in carparam/gtmode_race.dat, as well as change all references in GT Mode's menus for the US English language (found in gtmenu/usa/gtmenudat.dat) and make sure that license tests used the correct bodies where applicable (defined by carparam/license_data.dat). The one step they missed, however, is that of replacing the prize cars given for winning the Gran Turismo World League – GT-ONE '98 (t2g8r) – as well as completing all Super License tests with a gold prize – GT-ONE '99 (t2g9r). This means that, while the player is able to drive these Exxon-sponsored cars in the license tests featuring them (IA-10 and S-10, respectively) and they properly appear as opponents in relevant events, they are effectively unobtainable in favor of the original Esso-branded vehicles in all North American versions of the game.

Menu Widgets

GT Mode's menus make use of widgets in order to display various data fetched from the game's parameter files or player progression data, as well as to load different game modes. Over 3000 menu pages exist for each different language option, which naturally results in mishaps.

Italian Nationals Demo Button

The Italian Nationals event screen, in the original Japanese release of the game and the first two North American builds, does not allow the player to preview Race 1. This occurs because the demo button requires, in addition to the event's ID, two behavior flags: one indicating a race event trigger, and another that forces said race to be a preview. This specific button only has the first flag, which treats it the same as the "GO!" button and enters the race if the player meets the license and power requirements.

This error does not affect any languages in the European version, being corrected in the final Japanese and North American releases.

Pikes Peak Hill Climb Result Indicators

Lineup 2 Event Page
GT2-Revisional-DirtLineup2-JP10.png GT2-Revisional-PikesIn-JP10.png

The original Japanese version incorrectly displays results for Trials 2 and 3 of the Pikes Peak Hill Climb on page 2 of the Dirt Event section. This happens because the order in which the races are sorted on the event screen itself (DOC0003DOC0001DOC0002) does not match the rest of the dirt events and the line-up menu (DOC0003DOC0002DOC0001).

Artwork Errors

This section covers notable issues regarding the artwork of GT Mode menus as well as vehicle textures.

GT Mode Menus

Muscle Car Cup License Requirements

Lineup 2 (Baked onto BG) Event Page (Dynamic Widget)
GT2-NTSC-UC-v1.0-SpecialLineup2.png GT2-NTSC-UC-MuscleCarCup.png

While the Japanese versions of GT2 have lax license restrictions for the three Muscle Car Cup events, the North American and European builds require the beefier International A license. The artist in charge of GT Mode's menu pages didn't get the memo at first though, and the initial North American release of the game still shows the Japanese restrictions on page 2 of the Special Events section.

This was corrected in the second North American version by adding a second, adapted background image to gtmenu/commonpic.dat and referencing that instead of the original. The event page for the Muscle Car Cup itself did not need any changes, however, as it uses widgets that dynamically display the requirements matching the event's IDs in carparam/usa_gtmode_race.dat.

Pikes Peak Downhill Trial 3 Opponent

Event Page In-Game
GT2-Bugs-EvoIVMenu.png GT2-Bugs-EvoIVInGame.png

The Pikes Peak Downhill event page, in all versions of the game, lists a Mitsubishi Lancer Evolution IV GSR (mlnnr) as the ghost car opponent of Trial 3. The event, however, pits the player against a ghost of the later Evolution VI (m2g6r) model in-game. It's unknown whether this was just a typo that persisted through localisation, or if this indeed was the opponent originally intended for this event.

Coincidentally enough, m2g6r's replay name is [R]LANCER Evo.IV RS WRC'99 in the Test Drive demo build.

Car Textures

Hmmm...
To do:
The opening post of this GTP thread lists quite a few of these issues under the "Light version (bug fixes only)" spoiler, probably enough for a sub-page.

Due to the sheer amount of cars present in the game, it should be no surprise that a couple models are affected by minor texturing mishaps. This section showcases notable examples of texture errors, all of which survive in the latest versions of the game.

Audi S4

Daytime Nighttime
GT2-gas4r-cdp-texture.png

GT2-gas4r-cdp-InGame1.png

GT2-gas4r-cdp-InGame2.png
GT2-gas4r-cnp-texture.png

GT2-gas4r-cnp-InGame1.png

GT2-gas4r-cnp-InGame2.png

The Audi S4 racing modification (gas4r) is affected by an imperfection caused by part of its windshield, roof and side windows being covered by a duplicate of the car's headlamp texture. This only affects the nighttime texture sheet and is only noticeable in-game when using the high LOD textures.

Renault Laguna V6

Texture In-Game
GT2-frl6r-cdp-texture.png GT2-frl6r-cdp-InGame.png

Similarly to the Audi S4, the Renault Laguna racing modification (frl6r) is affected by a texture error, this time on both daytime and nighttime sheets. Most of its high LOD front bumper texture was overwritten by the road version's texture, resulting in a glitchy visual as said texture is not mirrored.

Missing Assets

Covered in this section are notable examples of the game falling back to "default" files due to complete absence of referenced assets.

Missing Garage Logos

Intended Used
GT2-carlogo-m2ttnp--.png
GT2-carlogo-m2ttnq--.png
GT2-carlogo-m2ttnl--.png
GT2-carlogo-m2ttnm--.png

Due to the absence of two logo files (mgttrn--.tim and mgttro--.tim) from the carlogo directory, applying a racing modification to the Mitsubishi 3000GT VR-4 Turbo '95 in the North American versions of the game results in the car's original logo, which reads 'GTO Twin Turbo', being used instead of its regionalised version. This occurs because, when the game fails to find "n--" (US GT Mode) and "o--" (US Arcade Mode) logo files, it resorts to the preceding "l--" (JP GT Mode) and "m--" (JP Arcade Mode) files. If those are also absent, it uses the files with the lowest filenames in the directory – a-a7rl--.tim and a-a7rlm--.tim, which belong to the Mazda RX-7 A-spec LM of defaultiness infamy (this is noticed in some of the game's unused cars).

Since the European files (mgttrp--.tim and mgttrq--.tim) are present in the directory, this error does not occur in the European version of GT2.