Probe GPS search edge costs

This commit is contained in:
2026-06-20 14:03:39 -05:00
parent eee31e55d8
commit f00c7115e2
2 changed files with 266 additions and 0 deletions
+25
View File
@@ -236,6 +236,31 @@ Current static producer lead:
`0x41be69`; patching there would alter copied/displayed records after route
choice. The cost patch needs to happen upstream of the `0x44cc7c` result
construction path.
- `0x44f054` is the strongest route-planning lead so far. It validates the
packed start/target lane handles, initializes a search-state table and open
list, pushes the start state, repeatedly pops the best state, checks for the
destination handle, traverses adjacency lists, and writes predecessor,
accumulated-cost, and priority fields for improved neighbor states. This is
the native GPS graph search loop.
- The search-state record is 0x20 bytes. Offsets `+0x00/+0x04/+0x08` are a
world position, `+0x0c` is accumulated path cost, `+0x10` is priority
(`cost + heuristic`), `+0x14` stores open/closed flags and the predecessor
index, and `+0x18` stores the packed lane handle.
- `0x44f7bc` is the heuristic helper. It returns world-space distance to the
target scaled by the constant at `0x1431ef3a0` (`0.9990000129`), unless a
route-shape helper supplies a shorter adjusted distance.
- The search loop calls a strategy object's vtable slot `+0x08` as an edge
admissibility predicate and slot `+0x10` as the edge-cost callback. For the
base/class-filter strategies, slot `+0x10` resolves to `0x44f838`.
- `0x44f838` computes the geometric edge distance and multiplies it by
`provider[0x08 + classId * 4]`, where `classId` is
`(*(routePoint + 0x13) & 0x3f)`. The GPS planner is therefore weighted, but
by a compact baked road-class table, not by traffic `maxSpeed` or lane
connection probabilities.
- The active probe now hooks `0x44f054` and `0x44f838` read-only. It logs the
live provider vtable, the 64 class multipliers, start/target handles, and a
capped sample of edge-cost calls with point class IDs, masks, handles, and
returned costs.
Autodrive finding: