3.3 KiB
3.3 KiB
RED4ext logging shim
EdgeWeightGPS is a RED4ext plugin used to probe native GPS/mappin code paths
without changing gameplay data.
It writes EdgeWeightGPS.log beside the installed DLL:
Cyberpunk 2077/red4ext/plugins/EdgeWeightGPS/EdgeWeightGPS.log
Current behavior:
- Logs plugin load/unload.
- Logs the RED4ext plugin handle and SDK pointer value passed to
Main. - Registers Running game-state callbacks so route tests can be timestamped.
- Hooks selected native wrappers and cores around
GPSSystem, mappin tracking, world-map mappin selection, and map path framing. - Hooks
JournalManager.TrackEntryat RVA0x5944fc, which is the native handoff used by quest/objective world-map route plotting. - Dumps the
JournalManagerlistener array at offsets0x210/0x21cand the listener vtable slots0x28,0x30, and0x50, matching the indirect calls made by the nativeTrackEntryimplementation. - Hooks the non-default journal listener callbacks seen during route plotting:
0xea89a8,0xea8958,0xe63f80,0xe63e6c,0xe63f00,0x8d136c,0x431a34,0x55a4e4, and0x14de238. - For those listener callbacks, logs the listener object, event pointer, common object fields, and vtable slots on candidate nested owner/service objects.
- Hooks the route handoff found from the journal listener bridge:
0x598250,0x13763d8,0xaa62d0,0xaa6330,0x27abd7c, and0x5625a4. - Logs mappin route-event fields, active/deactive route refs, the mappin
active-route map at
system + 0x1a0, and the route observer list atsystem + 0x280. - Resolves the native mappin system when one of those paths fires, logs relevant vtable slot addresses, and temporarily hooks the route-adjacent slots.
Current route-probe focus:
FrameMappinPathwrapper/core:0x27c4314,0x27bc1ecSetSelectedMappinwrappers/core:0x27c4a38,0x27c4944,0x27c49c4,0x27c1684TrackCustomPositionMappinwrapper/core:0x27c4aac,0x27c2318- mappin-system slots
0x1f0,0x280, and0x2f0 JournalManager.TrackEntryimplementation:0x5944fc- non-default
TrackEntrylistener callbacks listed above - journal/mappin route bridge candidate:
0x598250 - mappin route-event enqueue:
0x13763d8 - mappin route-event handler:
0xaa62d0 - mappin route activate/deactivate:
0xaa6330,0x27abd7c - route-build candidate called by the bridge:
0x5625a4
Quest/objective pins did not fire the mappin tracking hooks in live tests. The
REDscript decompile shows that those pins call JournalManager.TrackEntry
instead, so the current useful runtime question is which native listener reacts
to tracked-entry changes.
Most recent controlled test:
06:31:43: user hit Continue / GPS tick logged.06:32:02: automaticTrackEntryduring load, no route input.06:32:27: map opened.06:32:44,06:32:50,06:32:56: deliberate quest/objective route plots producedJournalManager::TrackEntrycalls from return RVA0x26ac34e.- After map open, the journal listener count rose to 254. Most listener entries
dispatch to no-op
0x14a700; the non-default callbacks above are the current drill-down targets.
Build and install from the Fedora toolbox:
toolbox run -c 2077 ./tools/install_red4ext_shim.sh
This shim is read-only. It does not enable any of the archived traffic data patches.