Skip to content

The car physics on POD Gold ​

2026-10-24, the pod-physics session.

The eight cars' paths in the recorded Gold race on Beltane, top view; rings where the port stopped following each car

The eight cars of the recorded Gold race (derived/physics/gold-beltane), seen from above. The rings mark where the port stopped following each car on its own. For most cars that is their first contact with another car. For the player (red) it is the moment the game put the car back on the track after it drove up a wall.

A step log in Gold ​

The step log is a small piece of code patched into the game. Gold's code is laid out differently, and the end of its code section already holds the display patches that let it run under Wine. So the log's hooks went into the spare bytes after the relocations instead, and its block table into the import section's spare bytes. The blocks are the same ones at Gold's addresses: the cars, the drivers, the race block and the frame time.

Gold would not start at first. It quit without a word right after reading the CD's label. The cause was its CPU check. It knows Intel, AMD K5 and K6, and Cyrix, and quits on anything else, and the emulated PC reports an AMD family 6. The race-loop session found the same thing at the same time and added a patch for it, and the step log now builds on that patch.

What Gold changed ​

The first Gold race gave 11,016 car steps. Every car word matched, but the tests still failed: one counter was off by one each time. It is the counter that makes the chassis look for the ground every 17th call. The first edition keeps it in the race block. Gold moved it to a global of its own, and its old place holds something else. That counter went into the log, the race was recorded again, and the original under the emulator then reproduced all 8,328 car steps.

Four differences between the editions, read in Gold's code and confirmed by the race:

  • The brakes and the torque use slightly different constants (0x14000 and 0x1cccc).
  • Each face of the track is 4 bytes longer, so every corner and flag sits 4 bytes further on.
  • The track's sector and surface tables moved.
  • The chassis counter has its own global, 0x4f3310.

The port carries these as a version switch. With Gold selected, 8,327 of 8,327 car steps match word for word. The one step left over is where the game put the player's car back on the track, which the port does not do yet. The first edition still matches all of its 20,488 steps.

Gold also moved rand()'s seed into the game thread's own data, which the snapshot does not hold. Inside the physics step only the smoke draws from it, and the car does not depend on it.

Next ​

Putting a car back on the track (0x415730 in Gold), now that a recording has a case of it. Then the car-to-car collisions, as before.

Prose CC0 1.0, code Apache 2.0. POD: Planet of Death is © Ubi Soft; none of its files are on this site.