Skip to content

Porting more of the original made a replay agree less with the recording ​

Symptoms ​

After porting a function exactly (proved under the emulator), the replay of a recorded run matches the recording less often than before. In POD, porting the order between gates (the path tracker FUN_004b0ec0 and the order update FUN_004afd3c) dropped the samples with the game's order from 77% to 54%.

Cause ​

The ported function depends on state from code not yet ported, and the replay supplied it with a stand-in. In POD a computer car's place on the race paths is set at each "Troncon" gate from the lane its driver chooses (FUN_004593fc), which is not ported. The replay guessed the lane from the nearest first points, chose pit and special lanes the game never takes (entries flagged 0x80 or of type 4 to 6), and the trackers stuck where the car left that lane (measured: each tracker's link and value printed where the orders parted).

Evidence ​

The agreement rate per stretch of the race (in runs of 200 samples), then the trackers' link, point and value at the first long run of differences.

What to do ​

Build a stand-in from the original's own rules first, then fill in only what the recording lacks: here, keep to the lanes the game's chooser can take, and pick among them by where the car drove in the next two seconds. POD's replay went to 98.3%, then 99.4%. Mark the stand-in Deviation: in the test, report the agreement rate, and let the test require it (here at least 99%) so a regression shows. Record the missing state next time (POD's recorder now reads each driver's lane and path state).

Tried ​

  • Nearest first points of any link out: 54%.
  • Nearest points among the lanes the chooser can take: 98.3%.
  • The same, scored on the car's next 20 sampled positions: 99.4%; the remaining short runs need per-step positions.

Code: Apache 2.0. Content: CC0 1.0. No game material: bring your own copy.