Files
2077-gps-mod/docs/red4ext-logging-shim.md
T
2026-06-20 00:25:47 -05:00

1.9 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.TrackEntry at RVA 0x5944fc, which is the native handoff used by quest/objective world-map route plotting.
  • Dumps the JournalManager listener array at offsets 0x210/0x21c and the listener vtable slots 0x28, 0x30, and 0x50, matching the indirect calls made by the native TrackEntry implementation.
  • 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:

  • FrameMappinPath wrapper/core: 0x27c4314, 0x27bc1ec
  • SetSelectedMappin wrappers/core: 0x27c4a38, 0x27c4944, 0x27c49c4, 0x27c1684
  • TrackCustomPositionMappin wrapper/core: 0x27c4aac, 0x27c2318
  • mappin-system slots 0x1f0, 0x280, and 0x2f0
  • JournalManager.TrackEntry implementation: 0x5944fc

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.

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.