From 86bf6a934b4c3cb04ed5539cd86e0b2b62221c86 Mon Sep 17 00:00:00 2001 From: Cyd Date: Fri, 7 Aug 2026 13:23:37 -0500 Subject: [PATCH] Map instance records carry their own length They are not a fixed 76 bytes. The first int of each record is its length, and while most placements are 76, every track also has eight of 140, two of 80 and one of 336 - 560 on Paingod's. Striding a fixed 76 landed mid-record on those, and hunting forward for the next plausible quaternion then locked onto arbitrary bytes: that is where the impossible class ids came from, and the "resource id" 1065353216, which is 0x3F800000 - float 1.0. Reading the length instead, all eighteen tracks parse to exactly their declared instance count with no bytes left over. That is the check that was missing before. It does not change what gets drawn, because the extra records were never drawable anyway. It does mean the parse is no longer guessing. --- docs/tracks.html | 26 +++++++++++++------------- tools/mapview/mapview.html | 2 +- tools/pages/navmap.py | 33 ++++++++++++++++++++++----------- 3 files changed, 36 insertions(+), 25 deletions(-) diff --git a/docs/tracks.html b/docs/tracks.html index 761baaa..a9aaf83 100644 --- a/docs/tracks.html +++ b/docs/tracks.html @@ -312,7 +312,7 @@ h1 em { font-style: normal; color: var(--sys); }
Extent
231 × 5708
Relief
90
-

Same footprint and instance count as -- Wiserguy's --

118 of 133 placements are drawn; the rest carry no map art or stand alone off the course

+

118 of 133 placements are drawn; the rest carry no map art or stand alone off the course

@@ -406,9 +406,9 @@ h1 em { font-style: normal; color: var(--sys); }
Cameras
20
Start boxes
20
Extent
1187 × 23298
-
Relief
415
+
Relief
627
-

594 of 607 placements are drawn; the rest carry no map art or stand alone off the course

+

595 of 607 placements are drawn; the rest carry no map art or stand alone off the course

@@ -428,7 +428,7 @@ h1 em { font-style: normal; color: var(--sys); }
-
Course traced from the gates
+
Course traced from the gates

-- Ares' Armpits --

trough

@@ -440,7 +440,7 @@ h1 em { font-style: normal; color: var(--sys); }
Extent
322 × 9217
Relief
530
-

580 of 633 placements are drawn; the rest carry no map art or stand alone off the course

+

619 of 633 placements are drawn; the rest carry no map art or stand alone off the course

@@ -456,11 +456,11 @@ h1 em { font-style: normal; color: var(--sys); }
Extent
3389 × 5959
Relief
266
-

678 of 695 placements are drawn; the rest carry no map art or stand alone off the course

+

683 of 695 placements are drawn; the rest carry no map art or stand alone off the course

-
Course traced from the gates
+
Course traced from the gates

-- Wiserguy's --

wiserguys

@@ -469,14 +469,14 @@ h1 em { font-style: normal; color: var(--sys); }
Instances
133
Cameras
16
Start boxes
9
-
Extent
231 × 5708
-
Relief
138
+
Extent
1513 × 5708
+
Relief
150
-

Same footprint and instance count as Wiseguy's Wake

117 of 133 placements are drawn; the rest carry no map art or stand alone off the course

+

118 of 133 placements are drawn; the rest carry no map art or stand alone off the course

-
Wall blocks — no single course to trace
+
Wall blocks — no single course to trace

-- Arena (Large) --

demoderb

@@ -488,7 +488,7 @@ h1 em { font-style: normal; color: var(--sys); }
Extent
2000 × 1995
Relief
0
-

437 of 455 placements are drawn; the rest carry no map art or stand alone off the course

+

443 of 455 placements are drawn; the rest carry no map art or stand alone off the course

@@ -504,7 +504,7 @@ h1 em { font-style: normal; color: var(--sys); }
Extent
1844 × 1850
Relief
55
-

678 of 695 placements are drawn; the rest carry no map art or stand alone off the course

+

683 of 695 placements are drawn; the rest carry no map art or stand alone off the course

diff --git a/tools/mapview/mapview.html b/tools/mapview/mapview.html index a738743..c889da6 100644 --- a/tools/mapview/mapview.html +++ b/tools/mapview/mapview.html @@ -150,7 +150,7 @@ kbd { like underway.

- +