8.8 KiB
8.8 KiB
Route Entry and Trackers
Primary atlas sources:
This note isolates the lower route-entry, linked-site, route-link, and auxiliary tracker families that are easy to lose inside the broader runtime section.
Current grounded owners:
city_connection_try_build_route_with_optional_direct_site_placementroute_entry_collection_try_build_path_between_optional_endpoint_entriesroute_entry_collection_search_path_between_entry_or_coord_endpointsroute_entry_collection_create_endpoint_entry_from_coords_and_policyroute_entry_collection_map_track_lay_mode_to_endpoint_policy_byteaux_route_entry_tracker_collection_refresh_route_entry_group_membershipaux_route_entry_tracker_collection_try_split_route_entry_chain_into_fresh_groupaux_route_entry_tracker_route_entry_pair_pass_adjacent_chain_transfer_gateaux_route_entry_tracker_collection_try_transfer_adjacent_chain_between_groupsaux_route_entry_tracker_collection_reseed_group_from_route_entry_componentaux_route_entry_tracker_collection_refresh_component_labels_and_reseed_invalid_groupsaux_route_entry_tracker_query_tracker_component_labels_matchaux_route_entry_tracker_collection_query_component_label_by_tracker_idaux_route_entry_tracker_collection_refresh_owner_adjacent_compatible_group_linksaux_route_entry_tracker_dispatch_route_entry_pair_metric_queryaux_route_entry_tracker_query_route_entry_pair_metric_via_weighted_recursive_searchaux_route_entry_tracker_query_route_entry_pair_metric_via_recursive_neighbor_walkaux_route_entry_tracker_query_best_route_entry_pair_metric_with_endpoint_fallbacksplaced_structure_route_link_rebuild_route_style_grid_counters_and_endpoint_stateplaced_structure_rebuild_route_style_candidate_scores_and_peer_links
Current bounded policy split:
- policy byte
1: single-track endpoint synthesis and direct linked-site anchor create or replace - policy byte
2: broader linked-site anchor rebuild plus tracker regrouping - policy byte
4: double-track endpoint synthesis with the larger track-laying-capacity charge
Current bounded tracker side:
- allocator at
0x004a42b0 - refcount or destroy path at
0x004a4340 - group-id setter at
0x00489f80 - endpoint-membership probe at
0x00494ed0 - bind helper at
0x00494f00 - latch refresh at
0x00494fb0 - cached-match refresh at
0x00495020 - adjacent transfer gate at
0x004a4c00 - component-label refresh sweep at
0x004a5fc0 - component-label equality test at
0x004a62c0 - component-label query at
0x004a6320 - owner-adjacent compatible-group refresh at
0x004a6360 - pair-metric dispatcher at
0x004a65b0 - weighted recursive metric branch at
0x004a5280 - alternate recursive neighbor-walk branch at
0x004a5900 - endpoint-fallback chooser at
0x004a6630
Current bounded time-side cutover:
runtime_query_hundredths_scaled_build_versionat0x00482e00is the shared rounded hundredths-scaled executable or session build-version query above the>= 0x67branch in0x004a65b0- it is not a gameplay progress flag; in the local path it comes from the
RT3.EXEversion-info source through0x00482d10, then+0.0001,*100.0, and round, while the multiplayer path delegates through0x0046a4b0 - the recovered
>= 0x67,>= 0x68,>= 0x69, and>= 0x6acaller pattern now lines up with executable build values1.03,1.04,1.05, and1.06 - that makes the tracker cutover read more cleanly too:
0x004a65b0is now best treated as a pre-1.03versus1.03+route-metric compatibility dispatcher, not as any gameplay-time or era-side mode switch - the branch source is session-aware too: when multiplayer state is active, the same cutover can follow the session-side build path rather than only the local executable version, so mixed-version compatibility is now the strongest current explanation for why this lower metric split exists at all
- nearby callers now make two more compatibility reads concrete:
build
1.04+keeps oneRecycling Plantstem-specific branch alive inside0x004101e0, and build1.05+skips one older descriptor-side attenuation fallback in that same rebuild family - the adjacent world-side compatibility lane is bounded too:
build
1.03+can skip one older recursive connected-component bounds walk through0x004160c0 -> 0x00415f20when scenario field[0x006cec78+0x46c38]is already active - the wrapper above that compatibility read is bounded now too:
0x00416170maps the current tile rectangle into the component table rooted at0x0062ba7cand only re-enters0x004160c0when the current owner still lacks cached bounds and the local suppressor gates stay clear - the higher neighboring projected-rectangle lane is tighter too:
0x00418610refreshes the temporary sample band at0x0062b7d0, republishes the surviving rectangle through0x0044d410, and on the single-sample path re-enters0x004185a0to toggle mask bit0x01for the corresponding non-sentinel cells - the owner split above that lane is bounded now too:
0x00418be0is the broader local-runtime record builder from candidate stem plus projected scratch, while0x00418a60is the smaller current-subject clone path over the same mask-refresh and component-bounds helpers - the scratch tail is tighter now too:
0x00416620publishes the projected rectangle into the shared local-runtime globals, validates route-entry coverage through0x00494240, can branch into the special projected-slot picker0x00415570, and refreshes the compact per-cell side tables through0x00414e10 - the last side helpers under that local-runtime branch are bounded now too:
0x00414470is just the projected-slot cache setter above the subject-clone path, while0x00418040is the optional local-runtime overlay-payload renderer sampled by the broader stem-based builder at0x00418be0 - the higher local-runtime owner chain is bounded now too:
0x004133b0first drains the temporary placed-structure id queue through0x00414480and0x00413f50, rebuilding cloned local-runtime records through0x0040e450, and then sweeps all live placed structures through0x0040ee10 - the owner context above that local-runtime refresh is tighter now too:
inside the
Setting up Players and Companies...319lane ofworld_run_post_load_generation_pipeline, the pipeline refreshes the route-entry collection0x006cfca8, then the auxiliary route-entry tracker collection0x006cfcb4, then0x004133b0, then a flagged world-grid cleanup sweep through0x00448af0/0x00533fe0, and only after that the later route-entry post-pass at0x00491c20 - the side refresh split is tighter now too:
0x0040ee10publishes one local position/scalar triplet through0x00530720and then tails into0x0040e360, whose current grounded subtype-1, class-3branch recomputes a linked-site anchor triplet from the peer route-entry anchor when that anchor is still live - the heavier sibling above that side refresh is bounded now too:
0x0040eba0is the world-coordinate mutation helper that rewrites cached grid coordinates, updates the subtype-4proximity-bucket family when needed, rebuilds the same triplet, and then tails into0x0040e360
What this note is for:
- Route-search ownership and quality gates
- Linked-site route-anchor rebuilds
- Auxiliary route-entry tracker regrouping semantics
- Route-style peer-link emission and route-link state
- Track-laying-capacity interactions with route synthesis
Latest local closure:
- The linked-transit cache split is now locally bounded rather than just suggestive:
the pre-
1.03versus1.03+tracker metric dispatcher still matters for the weighted autoroute cache lanes atcompany_rebuild_linked_transit_autoroute_site_score_cache0x00407bd0, but the grounded downstream chain now stops at route choice rather than company pressure. Cache lane+0x16feeds the owned-site selectorcompany_select_best_owned_linked_transit_site_by_autoroute_score0x00408280, and the weighted peer-side bands then feedcompany_build_linked_transit_autoroute_entry0x00408380; train-side append and add-train helpers0x00409770and0x00409830only inherit that weighted choice by calling the builder. By contrast, the company-wide roster target atcompany_compute_owned_linked_transit_site_score_total0x00408f70still sums only raw cache+0x12beforecompany_balance_linked_transit_train_roster0x00409950reacts. So this local semantic edge is effectively closed: the compatibility split perturbs ranked site choice and seeded autoroute peer choice, not the later train-count target, and any further weighted-lane consumer would have to live outside the currently grounded local chain.