From d68a8745f0d68c3b0e2c2b6a68858cc5d1e953f9 Mon Sep 17 00:00:00 2001 From: Jacob Babor Date: Fri, 26 Jun 2026 20:49:47 -0500 Subject: [PATCH] Disable unstable traffic scorer hook --- README.md | 29 +++- docs/traffic-system-debrief.md | 95 ++++++++++-- ...7_traffic_edge_score_crash_0316_report.txt | 142 ++++++++++++++++++ ...affic_edge_score_crash_0316_stacktrace.txt | 4 + ...eightGPS_traffic_edge_score_crash_0315.log | 29 ++++ red4ext/EdgeWeightGPS/src/Main.cpp | 2 +- 6 files changed, 287 insertions(+), 14 deletions(-) create mode 100644 logs/Cyberpunk2077_traffic_edge_score_crash_0316_report.txt create mode 100644 logs/Cyberpunk2077_traffic_edge_score_crash_0316_stacktrace.txt create mode 100644 logs/EdgeWeightGPS_traffic_edge_score_crash_0315.log diff --git a/README.md b/README.md index 5887c3c..507174c 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,21 @@ and test which fields the native planner actually consumes. ## Current Implementation +Current active work is a RED4ext shim under `red4ext/EdgeWeightGPS`. It has +confirmed the world-map GPS route path runs through the native async traffic +route pipeline, not the script-facing `RunGPSQuery`/`UpdateGPSQuery` helpers. +The shim can log the query lifecycle, async traffic result handoff, and route +postprocess stages. + +An experimental traffic candidate scorer hook at RVA `0x8d46cc` proved the game +does consult traffic lane flags while selecting route/projection candidates: +highway, road, and pavement flags were visible live and the hook changed their +scores. That detour currently crashes during load, so it is disabled by default +in source and disabled in the local game install as `EdgeWeightGPS.dll.disabled`. +It should be treated as evidence and an RE lead, not a playable mod. + +The older data-only tooling remains in the repo for reference: + This repo currently contains WolvenKit-export patchers: ```bash @@ -49,8 +64,8 @@ weighting. `patch_lane_connections.py` patches `all.lane_connections` by raising highway-enter/stay edge probabilities and lowering competing non-highway exits. -That candidate is staged as an experimental archive but has not yet been proven -to affect GPS routing. +That candidate loaded in game, but live testing did not show a GPS routing +change. After patching, deserialize the JSON back into CR2W and pack the resulting resources into an archive. @@ -71,9 +86,15 @@ A conservative speed archive, an aggressive speed archive, and a connection probability archive were built from the local Flatpak Steam Phantom Liberty install. All `zz_edge` archives are currently disabled in the game folder. +The RED4ext plugin is also currently disabled for normal play: + +```text +Cyberpunk 2077/red4ext/plugins/EdgeWeightGPS/EdgeWeightGPS.dll.disabled +``` + ```text Cyberpunk 2077/archive/pc/mod/zz_edge_weight_gps_highway_probability.archive.disabled ``` -Build outputs are ignored by git. Experimental archives should be enabled one at -a time and tested from a cold boot. +Build outputs are ignored by git. Experimental archives and RED4ext DLL builds +should be enabled one at a time and tested from a cold boot. diff --git a/docs/traffic-system-debrief.md b/docs/traffic-system-debrief.md index 638d8cc..c0ccb0a 100644 --- a/docs/traffic-system-debrief.md +++ b/docs/traffic-system-debrief.md @@ -708,13 +708,96 @@ The patch targets the EP1 traffic resource because Phantom Liberty is installed. On a non-PL install, the basegame archive resource would need to be patched instead. +## Native Async Traffic Route Pipeline + +The later RED4ext probes moved the active lead away from journal/mappin fanout +and into the native async traffic route pipeline. + +The useful runtime path is: + +```text +GPS query dispatch 0x70a570 +traffic request enqueue 0x8d17d8 +traffic result take 0x709d5c +route-record conversion 0x44a398 +route postprocess 0x44830c +``` + +`0x8d17d8` enqueues work into the traffic route service. `0x709d5c` later takes +the finished result from the service result table, and `0x44830c` postprocesses +the traffic result into the path object consumed by the game. Route records +captured at this stage matched `worldTrafficLanePersistent.nodeRefHash` values +from `all.traffic_persistent`, which confirms that the displayed/player GPS path +is backed by the traffic lane graph even though `maxSpeed` and connection +probability patches did not affect route choice. + +Static disassembly found a small traffic candidate scorer at `0x8d46cc`: + +```text +score ~= sqrt(candidate + 0x08) + + 2 * abs(candidate_z-ish - reference_z-ish) +``` + +It reads lane flags from `[candidate_lane + 0x88]` and branches on +`query + 0x41`: + +- `query41 != 0`: pavement lanes (`0x0008`) get a vanilla `+20.0` penalty. +- `query41 == 0`: road-flagged lanes (`0x0010`) get a vanilla `*1.75` + penalty and caller `0x8d4630` applies an additional geometry normalization. + +Only two direct callers reach this scorer: + +```text +0x8d4568 -> 0x8d46cc +0x8d466f -> 0x8d46cc +``` + +Both iterate 0x30-byte candidate records and keep the lowest score. This makes +`0x8d46cc` a bounded candidate/projection selector, not the full city-wide graph +search loop. + +An experimental hook multiplied the returned score by lane flag: + +- highway: `0.35` +- road: `0.70` +- GPSOnly: `1.35` +- pavement: `2.75` +- other: `1.50` + +Live logging proved the hook was attached and the corrected mode check was +active: + +```text +pavement query41=1 base=37.854 multiplier=2.750 result=104.099 +road query41=1 base=23.986 multiplier=0.700 result=16.790 +highway query41=1 base=39.640 multiplier=0.350 result=13.874 +``` + +However, that detour crashed during the load-time GPS warmup. The crash report +was an access violation reading `0x71`, and the crash reproduced until the +RED4ext plugin was disabled. The hook is therefore disabled by default in source +(`kEnableGpsTrafficEdgeWeightPatch = false`) and the local installed DLL is +renamed to `EdgeWeightGPS.dll.disabled`. + +The main takeaway is still valuable: traffic lane flags are available in native +route-side code, and `0x8d46cc` is an excellent landmark. It is not yet a safe +playable patch point. The next native work should avoid a full detour of this +hot scorer and instead look for either: + +- the broader search/expansion loop that feeds candidates into this selector +- an inline patch around the vanilla constants/branches if the selector proves + sufficient +- a safer result-stage rewrite only if upstream weighting cannot be patched + without desynchronizing the planner and renderer + ## Future Improvements Better versions of this mod could: -- hook the native destination-tracking handoff after the concrete mappin-system - method is identified -- trace the downstream GPS update that consumes the tracked mappin +- identify the broader async traffic route search/expansion loop around the + `0x8d25xx` to `0x8d49xx` cluster +- replace the crashing `0x8d46cc` detour with a narrower inline patch or a + safer caller-side hook - locate any native or baked edge-cost data not exposed in RTTI - inspect `GPSOnly` connector lanes if a later native trace proves they are consumed by the player GPS @@ -722,9 +805,3 @@ Better versions of this mod could: - generate a diff report of every changed lane with flags, length, speed, and graph component - ship multiple archives only if a data patch is proven to affect routing - -The next practical runtime step is no longer broad map/mappin logging. The -installed RED4ext shim now hooks `JournalManager.TrackEntry` directly and dumps -the listener array that native `TrackEntry` calls through. A short route-plotting -run should identify which native listener consumes tracked quest/objective -changes; that listener is the next focused static-disassembly target. diff --git a/logs/Cyberpunk2077_traffic_edge_score_crash_0316_report.txt b/logs/Cyberpunk2077_traffic_edge_score_crash_0316_report.txt new file mode 100644 index 0000000..32a66ff --- /dev/null +++ b/logs/Cyberpunk2077_traffic_edge_score_crash_0316_report.txt @@ -0,0 +1,142 @@ +Version=1 +EventType=REDEngineErrorReport +EventTime=0 +ReportIdentifier=ffffffff-ffffffff-00000001-00000000 +Sig[0].Name=StackHash +Sig[0].Value=0x0000000000000000 +Sig[1].Name=ErrorReason +Sig[1].Value=Unhandled exception +Sig[2].Name=InternalVersion +Sig[2].Value=3.0.5294808 P4CL: 9778208 Stream: //R6.Root/R6.Release +DynamicSig[1].Name=OS Version +DynamicSig[1].Value=10.0.19045.2.0.0.0.1 +LoadedModule[0]=Cyberpunk2077.exe +LoadedModule[1]=ntdll.dll +LoadedModule[2]=kernel32.dll +LoadedModule[3]=kernelbase.dll +LoadedModule[4]=USER32.dll +LoadedModule[5]=advapi32.dll +LoadedModule[6]=msvcrt.dll +LoadedModule[7]=rpcrt4.dll +LoadedModule[8]=cryptbase.dll +LoadedModule[9]=ucrtbase.dll +LoadedModule[10]=sechost.dll +LoadedModule[11]=gdi32.dll +LoadedModule[12]=win32u.dll +LoadedModule[13]=SHELL32.dll +LoadedModule[14]=shlwapi.dll +LoadedModule[15]=shcore.dll +LoadedModule[16]=dbghelp.dll +LoadedModule[17]=sl.interposer.dll +LoadedModule[18]=ole32.dll +LoadedModule[19]=combase.dll +LoadedModule[20]=coml2.dll +LoadedModule[21]=MSVCP140.dll +LoadedModule[22]=VCRUNTIME140.dll +LoadedModule[23]=VCRUNTIME140_1.dll +LoadedModule[24]=REDGalaxy64.dll +LoadedModule[25]=WS2_32.dll +LoadedModule[26]=CRYPT32.dll +LoadedModule[27]=bcrypt.dll +LoadedModule[28]=WININET.dll +LoadedModule[29]=mpr.dll +LoadedModule[30]=IPHLPAPI.DLL +LoadedModule[31]=dnsapi.dll +LoadedModule[32]=nsi.dll +LoadedModule[33]=MSWSOCK.dll +LoadedModule[34]=libxell.dll +LoadedModule[35]=dxgi.dll +LoadedModule[36]=SETUPAPI.dll +LoadedModule[37]=cfgmgr32.dll +LoadedModule[38]=VERSION.dll +LoadedModule[39]=libxess_fg.dll +LoadedModule[40]=XINPUT9_1_0.dll +LoadedModule[41]=libxess.dll +LoadedModule[42]=bink2w64.dll +LoadedModule[43]=WINMM.dll +LoadedModule[44]=redlexer_native.dll +LoadedModule[45]=PhysX3Common_x64.dll +LoadedModule[46]=PhysX3CharacterKinematic_x64.dll +LoadedModule[47]=PxFoundation_x64.dll +LoadedModule[48]=PhysX3Cooking_x64.dll +LoadedModule[49]=PhysX3_x64.dll +LoadedModule[50]=ffx_backend_dx12_x64.dll +LoadedModule[51]=ffx_fsr3_x64.dll +LoadedModule[52]=ffx_fsr3upscaler_x64.dll +LoadedModule[53]=ffx_opticalflow_x64.dll +LoadedModule[54]=ffx_frameinterpolation_x64.dll +LoadedModule[55]=libcurl.dll +LoadedModule[56]=WLDAP32.dll +LoadedModule[57]=Normaliz.dll +LoadedModule[58]=icuin.dll +LoadedModule[59]=icuuc.dll +LoadedModule[60]=icudt.dll +LoadedModule[61]=POWRPROF.dll +LoadedModule[62]=oo2ext_7_win64.dll +LoadedModule[63]=HID.DLL +LoadedModule[64]=amd_ags_x64.dll +LoadedModule[65]=vulkan-1.dll +LoadedModule[66]=winevulkan.dll +LoadedModule[67]=OLEAUT32.dll +LoadedModule[68]=imm32.dll +LoadedModule[69]=VERSION.dll +LoadedModule[70]=cyber_engine_tweaks.asi +LoadedModule[71]=MSVCP140_ATOMIC_WAIT.dll +LoadedModule[72]=D3DCOMPILER_47.dll +LoadedModule[73]=winmm.dll +LoadedModule[74]=msacm32.dll +LoadedModule[75]=RED4ext.dll +LoadedModule[76]=ArchiveXL.dll +LoadedModule[77]=Codeware.dll +LoadedModule[78]=EdgeWeightGPS.dll +LoadedModule[79]=input_loader.dll +LoadedModule[80]=mod_settings.dll +LoadedModule[81]=NewGamePlus.dll +LoadedModule[82]=RedData.dll +LoadedModule[83]=RedFileSystem.dll +LoadedModule[84]=TweakXL.dll +LoadedModule[85]=secur32.dll +LoadedModule[86]=Kerberos.dll +LoadedModule[87]=MSV1_0.dll +LoadedModule[88]=netapi32.dll +LoadedModule[89]=netutils.dll +LoadedModule[90]=wbemprox.dll +LoadedModule[91]=winspool.drv +LoadedModule[92]=compstui.dll +LoadedModule[93]=comctl32.dll +LoadedModule[94]=winex11.drv +LoadedModule[95]=uxtheme.dll +LoadedModule[96]=GameServicesSteam.dll +LoadedModule[97]=steam_api64.dll +LoadedModule[98]=netprofm.dll +LoadedModule[99]=steamclient64.dll +LoadedModule[100]=lsteamclient.dll +LoadedModule[101]=imagehlp.dll +LoadedModule[102]=PSAPI.DLL +LoadedModule[103]=gameoverlayrenderer64.dll +LoadedModule[104]=cryptnet.dll +LoadedModule[105]=WINTRUST.DLL +LoadedModule[106]=rsaenh.dll +LoadedModule[107]=GfnRuntimeSdk.dll +LoadedModule[108]=gdiplus.dll +LoadedModule[109]=scc_lib.dll +LoadedModule[110]=bcryptprimitives.dll +LoadedModule[111]=CChromaEditorLibrary64.dll +LoadedModule[112]=mfc140u.dll +LoadedModule[113]=msasn1.dll +LoadedModule[114]=wldp.dll +LoadedModule[115]=wineopenxr.dll +LoadedModule[116]=sl.common.dll +LoadedModule[117]=d3d12.dll +LoadedModule[118]=sl.pcl.dll +LoadedModule[119]=sl.reflex.dll +LoadedModule[120]=GFSDK_Aftermath_Lib.x64.dll +LoadedModule[121]=d3d12core.dll +LoadedModule[122]=amdxc64.dll +LoadedModule[123]=amd_fidelityfx_dx12.dll +LoadedModule[124]=mmdevapi.dll +LoadedModule[125]=winepulse.drv +LoadedModule[126]=winealsa.drv +LoadedModule[127]=Wtsapi32.dll +LoadedModule[128]=xinput1_4.dll +AppName=Cyberpunk2077.exe diff --git a/logs/Cyberpunk2077_traffic_edge_score_crash_0316_stacktrace.txt b/logs/Cyberpunk2077_traffic_edge_score_crash_0316_stacktrace.txt new file mode 100644 index 0000000..2d84181 --- /dev/null +++ b/logs/Cyberpunk2077_traffic_edge_score_crash_0316_stacktrace.txt @@ -0,0 +1,4 @@ +Error reason: Unhandled exception +Expression: EXCEPTION_ACCESS_VIOLATION (0xC0000005) +Message: The thread attempted to read inaccessible data at 0x71. +File: (0) diff --git a/logs/EdgeWeightGPS_traffic_edge_score_crash_0315.log b/logs/EdgeWeightGPS_traffic_edge_score_crash_0315.log new file mode 100644 index 0000000..63aa650 --- /dev/null +++ b/logs/EdgeWeightGPS_traffic_edge_score_crash_0315.log @@ -0,0 +1,29 @@ +2026-06-23 03:15:06.000 +0ms EdgeWeightGPS Main reason=Load handle=0x6ffff0740000 sdk=0x7f3a5c38 runtime=2.3.1 +2026-06-23 03:15:06.001 +1ms registered Running game-state callbacks +2026-06-23 03:15:06.009 +9ms hook attach RunGPSQuery body 0x29bd128 target=0x1429bd128 rva=0x29bd128 result=ok original=0x1018c0480 +2026-06-23 03:15:06.017 +17ms hook attach UpdateGPSQuery body 0x29bd254 target=0x1429bd254 rva=0x29bd254 result=ok original=0x1018c04e0 +2026-06-23 03:15:06.024 +24ms hook attach GPSQuerySubmit 0x70a42c target=0x14070a42c rva=0x70a42c result=ok original=0x1018c0540 +2026-06-23 03:15:06.032 +32ms hook attach GPSQueryDispatch 0x70a570 target=0x14070a570 rva=0x70a570 result=ok original=0x1018c05a0 +2026-06-23 03:15:06.039 +39ms hook attach GPSQueryResultFetch 0x7094b8 target=0x1407094b8 rva=0x7094b8 result=ok original=0x1018c0600 +2026-06-23 03:15:06.046 +46ms hook attach GPSQueryStatus 0xaa5704 target=0x140aa5704 rva=0xaa5704 result=ok original=0x1018c0660 +2026-06-23 03:15:06.054 +54ms hook attach GPSDispatchAdvance 0x8d17d8 target=0x1408d17d8 rva=0x8d17d8 result=ok original=0x1018c06c0 +2026-06-23 03:15:06.062 +62ms hook attach GPSTrafficResultTake 0x709d5c target=0x140709d5c rva=0x709d5c result=ok original=0x1018c0720 +2026-06-23 03:15:06.068 +68ms hook attach GPSRoutePostprocess 0x44830c target=0x14044830c rva=0x44830c result=ok original=0x1018c0780 +2026-06-23 03:15:06.075 +75ms hook attach GPSTrafficEdgeScore 0x8d46cc target=0x1408d46cc rva=0x8d46cc result=ok original=0x1018c07e0 +2026-06-23 03:15:26.225 +20225ms GameState Running OnEnter app=0x31fb80 +2026-06-23 03:15:26.307 +20307ms GameState Running OnUpdate app=0x31fb80 count=0 +2026-06-23 03:15:26.314 +20314ms GameState Running OnUpdate app=0x31fb80 count=1 +2026-06-23 03:15:26.321 +20321ms GameState Running OnUpdate app=0x31fb80 count=2 +2026-06-23 03:15:26.328 +20328ms GameState Running OnUpdate app=0x31fb80 count=3 +2026-06-23 03:15:26.335 +20335ms GameState Running OnUpdate app=0x31fb80 count=4 +2026-06-23 03:16:03.472 +56472ms hook GPSRoutePostprocess 0x44830c call=0 scale=0.5 outPath=0x66b8f460 trafficResult=0x66b8f560 trafficResult_count0c=3/0x3 trafficResult_records10=0x66b8f6a0 trafficResult_u2c=0/0x0 trafficResult_u30=0/0x0 trafficResult_u34=0/0x0 trafficResult_records10_raw=0064a343010000000100000000000000181b10ba050000000200000000000000c0f7b866000000001ec44e4001000000 routeRecords=0x66b8f430 ret_rva=0x447ba5 +2026-06-23 03:16:03.474 +56474ms hook GPSRoutePostprocess result call=0 outPath_bytes20=9023d0ac01000000030000000300000060a4518e010000000400000004000000902d7fb0010000000100000001000000c8e9b242010000000000000000000000 outPath_u20=2899321744/0xacd02390 outPath_u24=1/0x1 outPath_ptr28=0x300000003 outPath_vec20_data=0x1acd02390 outPath_vec20_count=3 outPath_vec20_first=(0,1.30084,0,1.30084) outPath_vec20_last=(89.4566,0,87.1738,0) outPath_vec20s16_data=0x1acd02390 outPath_vec20s16_count=3 outPath_vec20s16_first=(0,1.30084,0,1.30084) outPath_vec20s16_last=(87.1738,0,-5.91568e-12,0) outPath_u2c=3/0x3 outPath_u30=6682682464/0x18e51a460 outPath_u30lo=2387715168/0x8e51a460 outPath_u34hi=1/0x1 outPath_ptr28_capacity30=2387715168 outPath_ptr28_count34=1 outPath_ptr28_rec40raw= outPath_ptr28_rec40=[0:] outPath_vec38_data=0x400000004 outPath_vec38_count=4 outPath_vec38_first= outPath_vec38_last= outPath_flags40=11664/0x2d90 outPath_state42=127 outPath_u48=4294967297/0x100000001 outPath_u50=5413988808/0x142b2e9c8 +2026-06-23 03:16:03.474 +56474ms hook GPSRoutePostprocess 0x44830c call=1 scale=0.5 outPath=0x66b8f460 trafficResult=0x66b8f560 trafficResult_count0c=3/0x3 trafficResult_records10=0x66b8f6a0 trafficResult_u2c=0/0x0 trafficResult_u30=0/0x0 trafficResult_u34=0/0x0 trafficResult_records10_raw=0064a343010000000100000000000000a8c30fba050000000200000000000000c0f7b866000000001ec44e4001000000 routeRecords=0x66b8f430 ret_rva=0x447ba5 +2026-06-23 03:16:03.476 +56476ms hook GPSRoutePostprocess result call=1 outPath_bytes20=9023d0ac0100000003000000030000005038518e01000000040000000400000050257fb0010000000100000001000000c8e9b242010000000000000000000000 outPath_u20=2899321744/0xacd02390 outPath_u24=1/0x1 outPath_ptr28=0x300000003 outPath_vec20_data=0x1acd02390 outPath_vec20_count=3 outPath_vec20_first=(0,0.0721436,0,0.0721436) outPath_vec20_last=(89.4566,0,87.1738,0) outPath_vec20s16_data=0x1acd02390 outPath_vec20s16_count=3 outPath_vec20s16_first=(0,0.0721436,0,0.0721436) outPath_vec20s16_last=(87.1738,0,-5.91568e-12,0) outPath_u2c=3/0x3 outPath_u30=6682654800/0x18e513850 outPath_u30lo=2387687504/0x8e513850 outPath_u34hi=1/0x1 outPath_ptr28_capacity30=2387687504 outPath_ptr28_count34=1 outPath_ptr28_rec40raw= outPath_ptr28_rec40=[0:] outPath_vec38_data=0x400000004 outPath_vec38_count=4 outPath_vec38_first= outPath_vec38_last= outPath_flags40=9552/0x2550 outPath_state42=127 outPath_u48=4294967297/0x100000001 outPath_u50=5413988808/0x142b2e9c8 +2026-06-23 03:16:07.562 +60562ms hook GPSTrafficEdgeScore 0x8d46cc call=0 category=pavement driving=1 query41=1 laneFlags88=0xb base=37.854 multiplier=2.750 result=104.099 ctx=0x79a3f960 query=0x79a3fa00 candidate=0x1ad27f160 lane=0x15a37de8c0 ret_rva=0x8d456d +2026-06-23 03:16:07.563 +60563ms hook GPSTrafficEdgeScore 0x8d46cc call=1 category=pavement driving=1 query41=1 laneFlags88=0xb base=37.854 multiplier=2.750 result=104.099 ctx=0x79a3f960 query=0x79a3fa00 candidate=0x1ad27f190 lane=0x15a37de960 ret_rva=0x8d456d +2026-06-23 03:16:07.563 +60563ms hook GPSTrafficEdgeScore 0x8d46cc call=2 category=road driving=1 query41=1 laneFlags88=0x11 base=23.986 multiplier=0.700 result=16.790 ctx=0x79a3f960 query=0x79a3fa00 candidate=0x1ad27f1c0 lane=0x15a37dea00 ret_rva=0x8d456d +2026-06-23 03:16:07.563 +60563ms hook GPSTrafficEdgeScore 0x8d46cc call=3 category=road driving=1 query41=1 laneFlags88=0x11 base=28.956 multiplier=0.700 result=20.269 ctx=0x79a3f960 query=0x79a3fa00 candidate=0x1ad27f1f0 lane=0x15a37deaa0 ret_rva=0x8d456d +2026-06-23 03:16:07.564 +60564ms hook GPSTrafficEdgeScore 0x8d46cc call=4 category=highway driving=1 query41=1 laneFlags88=0x4011 base=39.640 multiplier=0.350 result=13.874 ctx=0x79a3f960 query=0x79a3fa00 candidate=0x1ad27f220 lane=0x15a37e4e00 ret_rva=0x8d456d +2026-06-23 03:16:07.564 +60564ms hook GPSTrafficEdgeScore 0x8d46cc call=5 category=highway driving=1 query41=1 laneFlags88=0x4011 base=37.488 multiplier=0.350 result=13.121 ctx=0x79a3f960 query=0x79a3fa00 candidate=0x1ad27f250 lane=0x15a37e4ea0 ret_rva=0x8d456d +2026-06-23 03:16:07.564 +60564ms hook GPSTrafficEdgeScore 0x8d46cc call=6 category=pavement driving=1 query41=1 laneFlags88=0xa00a base=31.869 multiplier=2.750 result=87.640 ctx=0x79a3f960 query=0x79a3fa00 candidate=0x5c3e97cc0 lane=0x15a3599060 ret_rva=0x8d4674 diff --git a/red4ext/EdgeWeightGPS/src/Main.cpp b/red4ext/EdgeWeightGPS/src/Main.cpp index 41854ac..21c781e 100644 --- a/red4ext/EdgeWeightGPS/src/Main.cpp +++ b/red4ext/EdgeWeightGPS/src/Main.cpp @@ -102,7 +102,7 @@ constexpr bool kEnableGpsProviderClassPatchTrace = false; constexpr bool kEnableGpsTraceHooks = true; constexpr bool kEnableGpsQueryLifecycleHooks = true; constexpr bool kEnableGpsAsyncTrafficProbe = true; -constexpr bool kEnableGpsTrafficEdgeWeightPatch = true; +constexpr bool kEnableGpsTrafficEdgeWeightPatch = false; constexpr bool kEnableGpsRouteJobLifecycleHooks = false; constexpr bool kEnableGpsRouteJobStartTrace = false; constexpr bool kEnableGpsLocalSearchHooks = false;