Wheels and tyres
A car’s wheel model, Scene\_library\Scene\Wheels\<CAR>_WheelLF.modelbin (one instance per corner), is stored at a normalised
size: rim lip radius 0.1397 m and the barrel 0 to 1 m deep in x (group bounds (−0.0135, ±0.1397) to (1.0, ±0.1397)), too small to clear the
240SX’s own 0.128 m brake rotors. Its meshes carry morph targets that size it (morph data). The
morph layout was read in car_standardCarLightScenario.vso and checked on the 240SX wheel and body. Observed
Counts come from a recorded census of the install’s media\Cars (682 cars, 197 tyre archives); the install is no longer available. Observed
Wheel morphs
Section titled “Wheel morphs”| Slot | Effect | Confidence |
|---|---|---|
weight[0] |
radius: radial delta 0.1842 m at the rim lip, proportional to the radius | Observed |
weight[1] |
width: x delta −0.8999 on the inner barrel, so the barrel depth is 1.0 − 0.9 w1 | Observed |
The single-target meshes of the wheel (the blur disc) carry the radius target on slot 0. Body panels carry one target on slot 0 (damage). Observed The weights the game uses come from the rim size and width of the fitted wheel, which are in the encrypted database (below). Inferred How the game turns those sizes into the two weights is code, not data, and has not been traced. Unknown
No car file names a tyre: the carbin has no tyre group, Manifest.xml lists none, and Cars\_library\scene\tires\*.zip (197
archives, each tireL_<name>.modelbin and tireR_<name>.modelbin) carry no car id. The game adds the tyre at run time from its
database. Observed
- Frame. All 197 tyre models are authored on the wheel’s normalised frame: bead radius 0.140 (the wheel’s rim lip 0.1397), tread radius ≈ 0.225, axle coordinate x from 0 to 1 (the wheel barrel’s depth at weight 0). The models differ in tread and sidewall detail, not in size. Observed
- Morph slots (5;
Mrphnames onlyweight[0..4]): slot 1 moves the bead radially by 0.184 (tapering to 0 at the tread), the same delta as the wheel’sweight[0], so slot 1 is the rim radius weight; slot 0 moves the tread radially by ≈ 0.27 (0 at the bead): the outer radius (sidewall height); slot 2 (−0.07 radial, ±0.2 axial at the sidewalls) and slots 3 and 4 (one-sided axial) deform the sidewall. Observed - Slots above 1 are contact-patch deformation. The vertex shader multiplies a slot index above 1 by a per-vertex factor
f = sat((0.225 − max(0, a·y − b·z + 0.225)) / 0.225)built from the per-wheel rowscb4[36]andcb4[37](wheel index clamped 0 to 3;f = 1when the per-draw switch row 0.wis 0): it localises slots 2 to 4 at the contact patch. Their weights are run time (load). Observed - Width. The tyre has no width morph, and its vertex shader reads only the object matrices (cb9 rows 0 to 2 and 12 to 14; rows 4 to 6 are read by the pixel shader only, for the sidewall projection), so nothing traced scales it. Observed
Of the 197 tyre archives (407 models), 195 have every material taken by a traced car_tires_pg recipe; tire_Spare_offRoad (black,
sidewall02, sidewallLOD2, tiretread, treadLOD2) and tire_PG_Full (scaling_text) have materials whose chain does not reach a shader.
Observed
Sizes in the game database
Section titled “Sizes in the game database”The decrypted game database holds each car’s stock tyre and rim size per
axle in Data_Car: FrontTireWidthMM, FrontTireAspect, FrontWheelDiameterIN and the same three for Rear, all
integers, on all 682 rows. Proven They are the tyre size in ISO metric notation (section width in millimetres, aspect
ratio in percent, rim diameter in inches): over the 682 cars widths run 90 to 535 mm, aspect ratios 23 to 115 and rims
5 to 24 inches, and the cars checked against their manufacturers’ figures agree (a 2023 Porsche 911 GT3 RS 275/35 R20
front and 335/30 R21 rear, a 2017 Nissan GT-R 255/40 R20 and 285/35 R20, a Toyota GR86 215/45 R17). Observed
Data_Car.StockWheelID names the stock wheel’s row of List_Wheels (whose MediaName is the wheel model’s name) on
every car. Proven Upgrade sizes are in List_UpgradeRimSizeFront / Rear (FrontWheelDiameter, RearWheelDiameter),
List_UpgradeCarBodyTireWidthFront / Rear and List_UpgradeCarBodyTireAspectRatioFront / Rear (offsets).
Observed
What no readable file holds
Section titled “What no readable file holds”Without the database’s keys nothing pins the wheel and tyre size; the car archives,
Locators.xml (camera and IK locators), the skeleton (no tyre bones), physicsdefinition.bin (hull points), the tyre and rim archives,
the Performance.zip benchmarks (body keyframes only) and the method-22 Physics, GameTunableSettings and ProfileSchema archives
hold no size. Observed There are 646 distinct wheel geometries over the 682 cars (34 shared groups, 70 cars). Observed
The stock sizes are in Data_Car (above); the code that converts them into the wheel’s weight[0], weight[1] and the tyre’s
slot 0 and 1 weights, and the tyre model chosen per car and upgrade, have not been traced. The tyre contact-patch weights are
computed at run time from load.