Use the original handling, walls and projection from the executable

Decoded from SKIDMARKS_CD32's machine code:

- Car physics: the per-frame engine/grip/steering update, gravity and
  jumps, the hill effect on the throttle, and body tilt. Replaces the
  reconstructed handling model.
- The meaning of every .set value (separate drag, grip and power for
  human and computer drivers; steering, gravity, tow hitch), and the
  six handling presets, offered by a new Handling menu option.
- Walls: the road edges are quadratic B-splines through the gates'
  ends. They match the painted road edges.
- The real projection, which lifts points by their height; the height
  map is indexed by world cells, not screen pixels.
- Tracks have one more gate than the stored count: the last gate was
  being dropped on every track.

Computer drivers now follow the road between the walls and steer like
the original's. Vehicle assets store the values as `handling`; older
files still load. Docs describe the decoded logic.
This commit is contained in:
2026-10-20 07:32:46 +00:00
parent ee895e0455
commit 6226c88d4e
44 changed files with 1283 additions and 791 deletions
+10 -16
View File
@@ -4,20 +4,14 @@ name CAMARO
driver ROD
# yes = towed behind cars (Caravans option) instead of driven
trailer no
# The 16 values from the original .set file. Their meaning is not
# decoded yet, so the game does not use them; the handling below is
# a reconstruction.
original 54 35 32 8 7 22 22 16 49 14 53 0 0 0 0 0
# top speed on tarmac, world pixels per second
top 200
# acceleration and braking, world pixels per second squared
accel 170
brake 320
# sideways grip (higher = less sliding)
grip 5
# steering rate, radians per second
turn 3.6
# weight in collisions
#
# handling: the 16 values from the original .set file, used as the
# original game does. Counting from 1:
# 1 2 6 computer drivers: drag, grip, power
# 9 10 11 human drivers: drag, grip, power
# 3 steering, 5 gravity, 7 tow hitch distance; the rest are unused.
# Top speed = power * drag / (64 - drag) / 32 world units per frame,
# 50 frames a second (drag below 64). Higher grip, less sliding.
handling 54 35 32 8 7 22 22 16 49 14 53 0 0 0 0 0
# weight when cars collide (not from the original data)
mass 1
# speed and grip multiplier off the road
offroad 0.55
+10 -16
View File
@@ -4,20 +4,14 @@ name CARAVAN
driver SIMON
# yes = towed behind cars (Caravans option) instead of driven
trailer yes
# The 16 values from the original .set file. Their meaning is not
# decoded yet, so the game does not use them; the handling below is
# a reconstruction.
original 2 65532 65532 1 12 10 16 14 0 0 0 0 0 0 0 0
# top speed on tarmac, world pixels per second
top 200
# acceleration and braking, world pixels per second squared
accel 170
brake 320
# sideways grip (higher = less sliding)
grip 5
# steering rate, radians per second
turn 3.6
# weight in collisions
#
# handling: the 16 values from the original .set file, used as the
# original game does. Counting from 1:
# 1 2 6 computer drivers: drag, grip, power
# 9 10 11 human drivers: drag, grip, power
# 3 steering, 5 gravity, 7 tow hitch distance; the rest are unused.
# Top speed = power * drag / (64 - drag) / 32 world units per frame,
# 50 frames a second (drag below 64). Higher grip, less sliding.
handling 2 65532 65532 1 12 10 16 14 0 0 0 0 0 0 0 0
# weight when cars collide (not from the original data)
mass 1
# speed and grip multiplier off the road
offroad 0.55
+10 -16
View File
@@ -4,20 +4,14 @@ name COW
driver ROB
# yes = towed behind cars (Caravans option) instead of driven
trailer no
# The 16 values from the original .set file. Their meaning is not
# decoded yet, so the game does not use them; the handling below is
# a reconstruction.
original 15 14 34 8 4 598 15 12 13 4 2003 0 0 0 0 0
# top speed on tarmac, world pixels per second
top 170
# acceleration and braking, world pixels per second squared
accel 150
brake 320
# sideways grip (higher = less sliding)
grip 7
# steering rate, radians per second
turn 4.6
# weight in collisions
#
# handling: the 16 values from the original .set file, used as the
# original game does. Counting from 1:
# 1 2 6 computer drivers: drag, grip, power
# 9 10 11 human drivers: drag, grip, power
# 3 steering, 5 gravity, 7 tow hitch distance; the rest are unused.
# Top speed = power * drag / (64 - drag) / 32 world units per frame,
# 50 frames a second (drag below 64). Higher grip, less sliding.
handling 15 14 34 8 4 598 15 12 13 4 2003 0 0 0 0 0
# weight when cars collide (not from the original data)
mass 1.4
# speed and grip multiplier off the road
offroad 0.9
+10 -16
View File
@@ -4,20 +4,14 @@ name FORMULA 1
driver SIMON
# yes = towed behind cars (Caravans option) instead of driven
trailer no
# The 16 values from the original .set file. Their meaning is not
# decoded yet, so the game does not use them; the handling below is
# a reconstruction.
original 60 71 30 0 6 16 24 12 58 42 29 0 0 0 0 0
# top speed on tarmac, world pixels per second
top 240
# acceleration and braking, world pixels per second squared
accel 210
brake 320
# sideways grip (higher = less sliding)
grip 6.5
# steering rate, radians per second
turn 3.7
# weight in collisions
#
# handling: the 16 values from the original .set file, used as the
# original game does. Counting from 1:
# 1 2 6 computer drivers: drag, grip, power
# 9 10 11 human drivers: drag, grip, power
# 3 steering, 5 gravity, 7 tow hitch distance; the rest are unused.
# Top speed = power * drag / (64 - drag) / 32 world units per frame,
# 50 frames a second (drag below 64). Higher grip, less sliding.
handling 60 71 30 0 6 16 24 12 58 42 29 0 0 0 0 0
# weight when cars collide (not from the original data)
mass 0.9
# speed and grip multiplier off the road
offroad 0.45
+10 -16
View File
@@ -4,20 +4,14 @@ name MIDGET
driver ROB
# yes = towed behind cars (Caravans option) instead of driven
trailer no
# The 16 values from the original .set file. Their meaning is not
# decoded yet, so the game does not use them; the handling below is
# a reconstruction.
original 51 21 30 16 3 45 16 13 44 13 93 0 0 0 0 0
# top speed on tarmac, world pixels per second
top 205
# acceleration and braking, world pixels per second squared
accel 185
brake 320
# sideways grip (higher = less sliding)
grip 4
# steering rate, radians per second
turn 4
# weight in collisions
#
# handling: the 16 values from the original .set file, used as the
# original game does. Counting from 1:
# 1 2 6 computer drivers: drag, grip, power
# 9 10 11 human drivers: drag, grip, power
# 3 steering, 5 gravity, 7 tow hitch distance; the rest are unused.
# Top speed = power * drag / (64 - drag) / 32 world units per frame,
# 50 frames a second (drag below 64). Higher grip, less sliding.
handling 51 21 30 16 3 45 16 13 44 13 93 0 0 0 0 0
# weight when cars collide (not from the original data)
mass 0.85
# speed and grip multiplier off the road
offroad 0.6
+10 -16
View File
@@ -4,20 +4,14 @@ name MINI
driver ROB
# yes = towed behind cars (Caravans option) instead of driven
trailer no
# The 16 values from the original .set file. Their meaning is not
# decoded yet, so the game does not use them; the handling below is
# a reconstruction.
original 56 24 30 12 3 24 20 12 46 10 100 0 0 0 0 0
# top speed on tarmac, world pixels per second
top 190
# acceleration and braking, world pixels per second squared
accel 200
brake 320
# sideways grip (higher = less sliding)
grip 5.8
# steering rate, radians per second
turn 4.4
# weight in collisions
#
# handling: the 16 values from the original .set file, used as the
# original game does. Counting from 1:
# 1 2 6 computer drivers: drag, grip, power
# 9 10 11 human drivers: drag, grip, power
# 3 steering, 5 gravity, 7 tow hitch distance; the rest are unused.
# Top speed = power * drag / (64 - drag) / 32 world units per frame,
# 50 frames a second (drag below 64). Higher grip, less sliding.
handling 56 24 30 12 3 24 20 12 46 10 100 0 0 0 0 0
# weight when cars collide (not from the original data)
mass 0.8
# speed and grip multiplier off the road
offroad 0.55
+10 -16
View File
@@ -4,20 +4,14 @@ name POLICE
driver SIMON
# yes = towed behind cars (Caravans option) instead of driven
trailer no
# The 16 values from the original .set file. Their meaning is not
# decoded yet, so the game does not use them; the handling below is
# a reconstruction.
original 56 34 22 6 2 15 19 11 49 14 44 0 0 0 0 0
# top speed on tarmac, world pixels per second
top 215
# acceleration and braking, world pixels per second squared
accel 180
brake 320
# sideways grip (higher = less sliding)
grip 5
# steering rate, radians per second
turn 3.5
# weight in collisions
#
# handling: the 16 values from the original .set file, used as the
# original game does. Counting from 1:
# 1 2 6 computer drivers: drag, grip, power
# 9 10 11 human drivers: drag, grip, power
# 3 steering, 5 gravity, 7 tow hitch distance; the rest are unused.
# Top speed = power * drag / (64 - drag) / 32 world units per frame,
# 50 frames a second (drag below 64). Higher grip, less sliding.
handling 56 34 22 6 2 15 19 11 49 14 44 0 0 0 0 0
# weight when cars collide (not from the original data)
mass 1.2
# speed and grip multiplier off the road
offroad 0.55
+10 -16
View File
@@ -4,20 +4,14 @@ name PORSCHE
driver IMAGINE
# yes = towed behind cars (Caravans option) instead of driven
trailer no
# The 16 values from the original .set file. Their meaning is not
# decoded yet, so the game does not use them; the handling below is
# a reconstruction.
original 56 34 22 6 2 15 21 12 49 14 44 0 0 0 0 0
# top speed on tarmac, world pixels per second
top 225
# acceleration and braking, world pixels per second squared
accel 190
brake 320
# sideways grip (higher = less sliding)
grip 5.2
# steering rate, radians per second
turn 3.6
# weight in collisions
#
# handling: the 16 values from the original .set file, used as the
# original game does. Counting from 1:
# 1 2 6 computer drivers: drag, grip, power
# 9 10 11 human drivers: drag, grip, power
# 3 steering, 5 gravity, 7 tow hitch distance; the rest are unused.
# Top speed = power * drag / (64 - drag) / 32 world units per frame,
# 50 frames a second (drag below 64). Higher grip, less sliding.
handling 56 34 22 6 2 15 21 12 49 14 44 0 0 0 0 0
# weight when cars collide (not from the original data)
mass 1
# speed and grip multiplier off the road
offroad 0.55
+10 -16
View File
@@ -4,20 +4,14 @@ name TRUCK
driver ROD
# yes = towed behind cars (Caravans option) instead of driven
trailer no
# The 16 values from the original .set file. Their meaning is not
# decoded yet, so the game does not use them; the handling below is
# a reconstruction.
original 55 26 28 18 2 29 20 17 54 19 35 0 0 0 0 0
# top speed on tarmac, world pixels per second
top 195
# acceleration and braking, world pixels per second squared
accel 140
brake 320
# sideways grip (higher = less sliding)
grip 4.2
# steering rate, radians per second
turn 3
# weight in collisions
#
# handling: the 16 values from the original .set file, used as the
# original game does. Counting from 1:
# 1 2 6 computer drivers: drag, grip, power
# 9 10 11 human drivers: drag, grip, power
# 3 steering, 5 gravity, 7 tow hitch distance; the rest are unused.
# Top speed = power * drag / (64 - drag) / 32 world units per frame,
# 50 frames a second (drag below 64). Higher grip, less sliding.
handling 55 26 28 18 2 29 20 17 54 19 35 0 0 0 0 0
# weight when cars collide (not from the original data)
mass 1.8
# speed and grip multiplier off the road
offroad 0.75
+10 -16
View File
@@ -4,20 +4,14 @@ name BEETLE
driver ROB
# yes = towed behind cars (Caravans option) instead of driven
trailer no
# The 16 values from the original .set file. Their meaning is not
# decoded yet, so the game does not use them; the handling below is
# a reconstruction.
original 57 28 32 12 3 29 20 14 51 15 63 0 0 0 0 0
# top speed on tarmac, world pixels per second
top 185
# acceleration and braking, world pixels per second squared
accel 160
brake 320
# sideways grip (higher = less sliding)
grip 4.6
# steering rate, radians per second
turn 3.6
# weight in collisions
#
# handling: the 16 values from the original .set file, used as the
# original game does. Counting from 1:
# 1 2 6 computer drivers: drag, grip, power
# 9 10 11 human drivers: drag, grip, power
# 3 steering, 5 gravity, 7 tow hitch distance; the rest are unused.
# Top speed = power * drag / (64 - drag) / 32 world units per frame,
# 50 frames a second (drag below 64). Higher grip, less sliding.
handling 57 28 32 12 3 29 20 14 51 15 63 0 0 0 0 0
# weight when cars collide (not from the original data)
mass 1
# speed and grip multiplier off the road
offroad 0.55