From 3fbad9f8c399b900e38f74a1222dec13dbf0ad92 Mon Sep 17 00:00:00 2001 From: Jacob Babor Date: Sat, 20 Jun 2026 15:44:34 -0500 Subject: [PATCH] Disable GPS tracing for calibration build --- red4ext/EdgeWeightGPS/src/Main.cpp | 429 +++++++++++++++-------------- 1 file changed, 228 insertions(+), 201 deletions(-) diff --git a/red4ext/EdgeWeightGPS/src/Main.cpp b/red4ext/EdgeWeightGPS/src/Main.cpp index b80dafd..bdef5ba 100644 --- a/red4ext/EdgeWeightGPS/src/Main.cpp +++ b/red4ext/EdgeWeightGPS/src/Main.cpp @@ -97,7 +97,10 @@ constexpr bool kEnableVerboseRouteObserverHooks = false; constexpr bool kEnableVerboseMappinRouteState = false; constexpr bool kEnableGpsMultiplierHooks = false; constexpr bool kEnableGpsCostTablePatch = true; +constexpr bool kEnableGpsTraceHooks = false; +constexpr bool kEnableGpsRouteJobStartTrace = false; constexpr bool kEnableGpsLocalSearchHooks = false; +constexpr bool kEnableRouteUiTraceHooks = false; constexpr uintptr_t kGpsSystemTickRva = 0x0E6B62C; constexpr uintptr_t kJournalTrackEntryImplRva = 0x05944FC; constexpr uintptr_t kJournalListenerArrayOffset = 0x210; @@ -1678,7 +1681,7 @@ private: void LogPatch(const char* aMessage, const char* aReason) { const auto patchLogCall = NextGpsAsyncLogCall(gGpsCostTablePatchLogCount); - if (patchLogCall >= 64) + if (patchLogCall >= 16) { return; } @@ -3324,7 +3327,7 @@ bool DetourGpsRouteJobStart(void* aRouteSystem, void* aActiveEntry, float aDelta constexpr uint32_t kMaxCalls = 128; const auto callCount = NextGpsAsyncLogCall(gGpsRouteJobStartLogCount); - const auto shouldLog = callCount < kMaxCalls; + const auto shouldLog = kEnableGpsRouteJobStartTrace && callCount < kMaxCalls; if (shouldLog) { std::ostringstream line; @@ -4027,43 +4030,49 @@ RED4EXT_C_EXPORT bool RED4EXT_CALL Main(RED4ext::v1::PluginHandle aHandle, RED4e const auto added = aSdk->gameStates->Add(aHandle, kGameStateRunning, &gRunningState); LogRed4ext(added ? "registered Running game-state callbacks" : "failed to register Running game-state callbacks"); - AttachProbeHook("RunGPSQuery body 0x29bd128", kRunGpsQueryBodyRva, - reinterpret_cast(&DetourRunGpsQueryBody), - reinterpret_cast(&gOriginalRunGpsQueryBody)); - AttachProbeHook("UpdateGPSQuery body 0x29bd254", kUpdateGpsQueryBodyRva, - reinterpret_cast(&DetourUpdateGpsQueryBody), - reinterpret_cast(&gOriginalUpdateGpsQueryBody)); - AttachProbeHook("GPSQuerySubmit 0x70a42c", kGpsQuerySubmitRva, - reinterpret_cast(&DetourGpsQuerySubmit), - reinterpret_cast(&gOriginalGpsQuerySubmit)); - AttachProbeHook("GPSQueryDispatch 0x70a570", kGpsQueryDispatchRva, - reinterpret_cast(&DetourGpsQueryDispatch), - reinterpret_cast(&gOriginalGpsQueryDispatch)); - AttachProbeHook("GPSQueryResultFetch 0x7094b8", kGpsQueryResultFetchRva, - reinterpret_cast(&DetourGpsQueryResultFetch), - reinterpret_cast(&gOriginalGpsQueryResultFetch)); - AttachProbeHook("GPSQueryStatus 0xaa5704", kGpsQueryStatusRva, - reinterpret_cast(&DetourGpsQueryStatus), - reinterpret_cast(&gOriginalGpsQueryStatus)); - AttachProbeHook("GPSDispatchAdvance 0x8d17d8", kGpsDispatchAdvanceRva, - reinterpret_cast(&DetourGpsDispatchAdvance), - reinterpret_cast(&gOriginalGpsDispatchAdvance)); - AttachProbeHook("GPSAsyncWorkerTick 0x126b28", kGpsAsyncWorkerTickRva, - reinterpret_cast(&DetourGpsAsyncWorkerTick), - reinterpret_cast(&gOriginalGpsAsyncWorkerTick)); - AttachProbeHook("GPSRouteJobStart 0x818928", kGpsRouteJobStartRva, - reinterpret_cast(&DetourGpsRouteJobStart), - reinterpret_cast(&gOriginalGpsRouteJobStart)); - AttachProbeHook("GPSRouteJobPoll 0x883cd8", kGpsRouteJobPollRva, - reinterpret_cast(&DetourGpsRouteJobPoll), - reinterpret_cast(&gOriginalGpsRouteJobPoll)); - AttachProbeHook("GPSRouteFinish 0x11f5f60", kGpsRouteFinishRva, - reinterpret_cast(&DetourGpsRouteFinish), - reinterpret_cast(&gOriginalGpsRouteFinish)); - AttachProbeHook("GPSRouteJobBuild 0x818ba8", kGpsRouteJobBuildRva, - reinterpret_cast(&DetourGpsRouteJobBuild), - reinterpret_cast(&gOriginalGpsRouteJobBuild)); - if (kEnableGpsLocalSearchHooks) + if (kEnableGpsTraceHooks) + { + AttachProbeHook("RunGPSQuery body 0x29bd128", kRunGpsQueryBodyRva, + reinterpret_cast(&DetourRunGpsQueryBody), + reinterpret_cast(&gOriginalRunGpsQueryBody)); + AttachProbeHook("UpdateGPSQuery body 0x29bd254", kUpdateGpsQueryBodyRva, + reinterpret_cast(&DetourUpdateGpsQueryBody), + reinterpret_cast(&gOriginalUpdateGpsQueryBody)); + AttachProbeHook("GPSQuerySubmit 0x70a42c", kGpsQuerySubmitRva, + reinterpret_cast(&DetourGpsQuerySubmit), + reinterpret_cast(&gOriginalGpsQuerySubmit)); + AttachProbeHook("GPSQueryDispatch 0x70a570", kGpsQueryDispatchRva, + reinterpret_cast(&DetourGpsQueryDispatch), + reinterpret_cast(&gOriginalGpsQueryDispatch)); + AttachProbeHook("GPSQueryResultFetch 0x7094b8", kGpsQueryResultFetchRva, + reinterpret_cast(&DetourGpsQueryResultFetch), + reinterpret_cast(&gOriginalGpsQueryResultFetch)); + AttachProbeHook("GPSQueryStatus 0xaa5704", kGpsQueryStatusRva, + reinterpret_cast(&DetourGpsQueryStatus), + reinterpret_cast(&gOriginalGpsQueryStatus)); + AttachProbeHook("GPSDispatchAdvance 0x8d17d8", kGpsDispatchAdvanceRva, + reinterpret_cast(&DetourGpsDispatchAdvance), + reinterpret_cast(&gOriginalGpsDispatchAdvance)); + AttachProbeHook("GPSAsyncWorkerTick 0x126b28", kGpsAsyncWorkerTickRva, + reinterpret_cast(&DetourGpsAsyncWorkerTick), + reinterpret_cast(&gOriginalGpsAsyncWorkerTick)); + AttachProbeHook("GPSRouteJobPoll 0x883cd8", kGpsRouteJobPollRva, + reinterpret_cast(&DetourGpsRouteJobPoll), + reinterpret_cast(&gOriginalGpsRouteJobPoll)); + AttachProbeHook("GPSRouteFinish 0x11f5f60", kGpsRouteFinishRva, + reinterpret_cast(&DetourGpsRouteFinish), + reinterpret_cast(&gOriginalGpsRouteFinish)); + AttachProbeHook("GPSRouteJobBuild 0x818ba8", kGpsRouteJobBuildRva, + reinterpret_cast(&DetourGpsRouteJobBuild), + reinterpret_cast(&gOriginalGpsRouteJobBuild)); + } + if (kEnableGpsCostTablePatch || kEnableGpsRouteJobStartTrace) + { + AttachProbeHook("GPSRouteJobStart 0x818928", kGpsRouteJobStartRva, + reinterpret_cast(&DetourGpsRouteJobStart), + reinterpret_cast(&gOriginalGpsRouteJobStart)); + } + if (kEnableGpsTraceHooks && kEnableGpsLocalSearchHooks) { AttachProbeHook("GPSRouteProducer 0x44cc7c", kGpsRouteProducerRva, reinterpret_cast(&DetourGpsRouteProducer), @@ -4082,126 +4091,141 @@ RED4EXT_C_EXPORT bool RED4EXT_CALL Main(RED4ext::v1::PluginHandle aHandle, RED4e reinterpret_cast(&DetourGpsNodeMultiplier), reinterpret_cast(&gOriginalGpsNodeMultiplier)); } - AttachProbeHook("GPSSystem/Tick", kGpsSystemTickRva, reinterpret_cast(&DetourGpsSystemTick), - reinterpret_cast(&gOriginalGpsSystemTick)); - AttachProbeHook("JournalManager::TrackEntry impl", kJournalTrackEntryImplRva, - reinterpret_cast(&DetourJournalTrackEntry), - reinterpret_cast(&gOriginalJournalTrackEntry)); - if (kEnableVerboseJournalListenerHooks) + if (kEnableRouteUiTraceHooks) { - AttachProbeHook("JournalListener::Objective vt28", kJournalListenerObjectiveVt28Rva, - reinterpret_cast(&DetourJournalListenerObjectiveVt28), - reinterpret_cast(&gOriginalJournalListenerObjectiveVt28)); - AttachProbeHook("JournalListener::Objective vt30", kJournalListenerObjectiveVt30Rva, - reinterpret_cast(&DetourJournalListenerObjectiveVt30), - reinterpret_cast(&gOriginalJournalListenerObjectiveVt30)); - AttachProbeHook("JournalListener::Route vt28", kJournalListenerRouteVt28Rva, - reinterpret_cast(&DetourJournalListenerRouteVt28), - reinterpret_cast(&gOriginalJournalListenerRouteVt28)); - AttachProbeHook("JournalListener::Route vt30", kJournalListenerRouteVt30Rva, - reinterpret_cast(&DetourJournalListenerRouteVt30), - reinterpret_cast(&gOriginalJournalListenerRouteVt30)); - AttachProbeHook("JournalListener::RouteAlt vt28", kJournalListenerRouteAltVt28Rva, - reinterpret_cast(&DetourJournalListenerRouteAltVt28), - reinterpret_cast(&gOriginalJournalListenerRouteAltVt28)); - AttachProbeHook("JournalListener::RouteAlt vt30", kJournalListenerRouteAltVt30Rva, - reinterpret_cast(&DetourJournalListenerRouteAltVt30), - reinterpret_cast(&gOriginalJournalListenerRouteAltVt30)); - AttachProbeHook("JournalListener::UI vt28", kJournalListenerUiVt28Rva, - reinterpret_cast(&DetourJournalListenerUiVt28), - reinterpret_cast(&gOriginalJournalListenerUiVt28)); - AttachProbeHook("JournalListener::UI vt30", kJournalListenerUiVt30Rva, - reinterpret_cast(&DetourJournalListenerUiVt30), - reinterpret_cast(&gOriginalJournalListenerUiVt30)); - AttachProbeHook("JournalListener::Tracker vt28", kJournalListenerTrackerVt28Rva, - reinterpret_cast(&DetourJournalListenerTrackerVt28), - reinterpret_cast(&gOriginalJournalListenerTrackerVt28)); + AttachProbeHook("GPSSystem/Tick", kGpsSystemTickRva, reinterpret_cast(&DetourGpsSystemTick), + reinterpret_cast(&gOriginalGpsSystemTick)); + AttachProbeHook("JournalManager::TrackEntry impl", kJournalTrackEntryImplRva, + reinterpret_cast(&DetourJournalTrackEntry), + reinterpret_cast(&gOriginalJournalTrackEntry)); + if (kEnableVerboseJournalListenerHooks) + { + AttachProbeHook("JournalListener::Objective vt28", kJournalListenerObjectiveVt28Rva, + reinterpret_cast(&DetourJournalListenerObjectiveVt28), + reinterpret_cast(&gOriginalJournalListenerObjectiveVt28)); + AttachProbeHook("JournalListener::Objective vt30", kJournalListenerObjectiveVt30Rva, + reinterpret_cast(&DetourJournalListenerObjectiveVt30), + reinterpret_cast(&gOriginalJournalListenerObjectiveVt30)); + AttachProbeHook("JournalListener::Route vt28", kJournalListenerRouteVt28Rva, + reinterpret_cast(&DetourJournalListenerRouteVt28), + reinterpret_cast(&gOriginalJournalListenerRouteVt28)); + AttachProbeHook("JournalListener::Route vt30", kJournalListenerRouteVt30Rva, + reinterpret_cast(&DetourJournalListenerRouteVt30), + reinterpret_cast(&gOriginalJournalListenerRouteVt30)); + AttachProbeHook("JournalListener::RouteAlt vt28", kJournalListenerRouteAltVt28Rva, + reinterpret_cast(&DetourJournalListenerRouteAltVt28), + reinterpret_cast(&gOriginalJournalListenerRouteAltVt28)); + AttachProbeHook("JournalListener::RouteAlt vt30", kJournalListenerRouteAltVt30Rva, + reinterpret_cast(&DetourJournalListenerRouteAltVt30), + reinterpret_cast(&gOriginalJournalListenerRouteAltVt30)); + AttachProbeHook("JournalListener::UI vt28", kJournalListenerUiVt28Rva, + reinterpret_cast(&DetourJournalListenerUiVt28), + reinterpret_cast(&gOriginalJournalListenerUiVt28)); + AttachProbeHook("JournalListener::UI vt30", kJournalListenerUiVt30Rva, + reinterpret_cast(&DetourJournalListenerUiVt30), + reinterpret_cast(&gOriginalJournalListenerUiVt30)); + AttachProbeHook("JournalListener::Tracker vt28", kJournalListenerTrackerVt28Rva, + reinterpret_cast(&DetourJournalListenerTrackerVt28), + reinterpret_cast(&gOriginalJournalListenerTrackerVt28)); + } + AttachProbeHook("JournalRouteBridge::Update candidate", kJournalRouteBridgeRva, + reinterpret_cast(&DetourJournalRouteBridge), + reinterpret_cast(&gOriginalJournalRouteBridge)); + AttachProbeHook("MappinSystem::RouteEventEnqueue slot240", kMappinRouteEventEnqueueRva, + reinterpret_cast(&DetourMappinRouteEventEnqueue), + reinterpret_cast(&gOriginalMappinRouteEventEnqueue)); + AttachProbeHook("MappinRouteEvent::Handle", kMappinRouteEventHandlerRva, + reinterpret_cast(&DetourMappinRouteEventHandler), + reinterpret_cast(&gOriginalMappinRouteEventHandler)); + AttachProbeHook("MappinSystem::RouteActivate", kMappinRouteActivateRva, + reinterpret_cast(&DetourMappinRouteActivate), + reinterpret_cast(&gOriginalMappinRouteActivate)); + AttachProbeHook("MappinSystem::RouteDeactivate", kMappinRouteDeactivateRva, + reinterpret_cast(&DetourMappinRouteDeactivate), + reinterpret_cast(&gOriginalMappinRouteDeactivate)); + AttachProbeHook("RouteBuildCandidate 0x5625a4", kRouteBuildCandidateRva, + reinterpret_cast(&DetourRouteBuildCandidate), + reinterpret_cast(&gOriginalRouteBuildCandidate)); + if (kEnableVerboseRouteObserverHooks) + { + AttachProbeHook("RouteObserver0::Activate slot48", kRouteObserver0ActivateRva, + reinterpret_cast(&DetourRouteObserver0Activate), + reinterpret_cast(&gOriginalRouteObserver0Activate)); + AttachProbeHook("RouteObserver1::Activate slot48", kRouteObserver1ActivateRva, + reinterpret_cast(&DetourRouteObserver1Activate), + reinterpret_cast(&gOriginalRouteObserver1Activate)); + AttachProbeHook("RouteObserver23::Activate slot48", kRouteObserver23ActivateRva, + reinterpret_cast(&DetourRouteObserver23Activate), + reinterpret_cast(&gOriginalRouteObserver23Activate)); + AttachProbeHook("RouteObserver0::Deactivate slot50", kRouteObserver0DeactivateRva, + reinterpret_cast(&DetourRouteObserver0Deactivate), + reinterpret_cast(&gOriginalRouteObserver0Deactivate)); + AttachProbeHook("RouteObserver1::Deactivate slot50", kRouteObserver1DeactivateRva, + reinterpret_cast(&DetourRouteObserver1Deactivate), + reinterpret_cast(&gOriginalRouteObserver1Deactivate)); + AttachProbeHook("RouteObserver23::Deactivate slot50", kRouteObserver23DeactivateRva, + reinterpret_cast(&DetourRouteObserver23Deactivate), + reinterpret_cast(&gOriginalRouteObserver23Deactivate)); + } + AttachProbeHook("FrameMappinPathWrapper", kFrameMappinPathWrapperRva, + reinterpret_cast(&DetourFrameMappinPathWrapper), + reinterpret_cast(&gOriginalFrameMappinPathWrapper)); + AttachProbeHook("FrameMappinPathCore", kFrameMappinPathCoreRva, + reinterpret_cast(&DetourFrameMappinPathCore), + reinterpret_cast(&gOriginalFrameMappinPathCore)); + AttachProbeHook("SetSelectedMappinWrapper", kSetSelectedMappinWrapperRva, + reinterpret_cast(&DetourSetSelectedMappinWrapper), + reinterpret_cast(&gOriginalSetSelectedMappinWrapper)); + AttachProbeHook("SetSelectedMappinByIdWrapper", kSetSelectedMappinByIdWrapperRva, + reinterpret_cast(&DetourSetSelectedMappinByIdWrapper), + reinterpret_cast(&gOriginalSetSelectedMappinByIdWrapper)); + AttachProbeHook("SetSelectedMappinByPositionWrapper", kSetSelectedMappinByPositionWrapperRva, + reinterpret_cast(&DetourSetSelectedMappinByPositionWrapper), + reinterpret_cast(&gOriginalSetSelectedMappinByPositionWrapper)); + AttachProbeHook("SetSelectedMappinCore", kSetSelectedMappinCoreRva, + reinterpret_cast(&DetourSetSelectedMappinCore), + reinterpret_cast(&gOriginalSetSelectedMappinCore)); + AttachProbeHook("TrackCustomPositionMappinWrapper", kTrackCustomPositionMappinWrapperRva, + reinterpret_cast(&DetourTrackCustomPositionMappinWrapper), + reinterpret_cast(&gOriginalTrackCustomPositionMappinWrapper)); + AttachProbeHook("TrackCustomPositionMappinCore", kTrackCustomPositionMappinCoreRva, + reinterpret_cast(&DetourTrackCustomPositionMappinCore), + reinterpret_cast(&gOriginalTrackCustomPositionMappinCore)); + AttachProbeHook("UntrackCustomPositionMappinWrapper", kUntrackCustomPositionMappinWrapperRva, + reinterpret_cast(&DetourUntrackCustomPositionMappinWrapper), + reinterpret_cast(&gOriginalUntrackCustomPositionMappinWrapper)); + AttachProbeHook("TrackMappinWrapper", kTrackMappinWrapperRva, + reinterpret_cast(&DetourTrackMappinWrapper), + reinterpret_cast(&gOriginalTrackMappinWrapper)); + AttachProbeHook("TrackMappinCore", kTrackMappinCoreRva, reinterpret_cast(&DetourTrackMappinCore), + reinterpret_cast(&gOriginalTrackMappinCore)); + AttachProbeHook("SetMappinTrackingAlternativeWrapper", kSetMappinTrackingAlternativeWrapperRva, + reinterpret_cast(&DetourSetMappinTrackingAlternativeWrapper), + reinterpret_cast(&gOriginalSetMappinTrackingAlternativeWrapper)); } - AttachProbeHook("JournalRouteBridge::Update candidate", kJournalRouteBridgeRva, - reinterpret_cast(&DetourJournalRouteBridge), - reinterpret_cast(&gOriginalJournalRouteBridge)); - AttachProbeHook("MappinSystem::RouteEventEnqueue slot240", kMappinRouteEventEnqueueRva, - reinterpret_cast(&DetourMappinRouteEventEnqueue), - reinterpret_cast(&gOriginalMappinRouteEventEnqueue)); - AttachProbeHook("MappinRouteEvent::Handle", kMappinRouteEventHandlerRva, - reinterpret_cast(&DetourMappinRouteEventHandler), - reinterpret_cast(&gOriginalMappinRouteEventHandler)); - AttachProbeHook("MappinSystem::RouteActivate", kMappinRouteActivateRva, - reinterpret_cast(&DetourMappinRouteActivate), - reinterpret_cast(&gOriginalMappinRouteActivate)); - AttachProbeHook("MappinSystem::RouteDeactivate", kMappinRouteDeactivateRva, - reinterpret_cast(&DetourMappinRouteDeactivate), - reinterpret_cast(&gOriginalMappinRouteDeactivate)); - AttachProbeHook("RouteBuildCandidate 0x5625a4", kRouteBuildCandidateRva, - reinterpret_cast(&DetourRouteBuildCandidate), - reinterpret_cast(&gOriginalRouteBuildCandidate)); - if (kEnableVerboseRouteObserverHooks) - { - AttachProbeHook("RouteObserver0::Activate slot48", kRouteObserver0ActivateRva, - reinterpret_cast(&DetourRouteObserver0Activate), - reinterpret_cast(&gOriginalRouteObserver0Activate)); - AttachProbeHook("RouteObserver1::Activate slot48", kRouteObserver1ActivateRva, - reinterpret_cast(&DetourRouteObserver1Activate), - reinterpret_cast(&gOriginalRouteObserver1Activate)); - AttachProbeHook("RouteObserver23::Activate slot48", kRouteObserver23ActivateRva, - reinterpret_cast(&DetourRouteObserver23Activate), - reinterpret_cast(&gOriginalRouteObserver23Activate)); - AttachProbeHook("RouteObserver0::Deactivate slot50", kRouteObserver0DeactivateRva, - reinterpret_cast(&DetourRouteObserver0Deactivate), - reinterpret_cast(&gOriginalRouteObserver0Deactivate)); - AttachProbeHook("RouteObserver1::Deactivate slot50", kRouteObserver1DeactivateRva, - reinterpret_cast(&DetourRouteObserver1Deactivate), - reinterpret_cast(&gOriginalRouteObserver1Deactivate)); - AttachProbeHook("RouteObserver23::Deactivate slot50", kRouteObserver23DeactivateRva, - reinterpret_cast(&DetourRouteObserver23Deactivate), - reinterpret_cast(&gOriginalRouteObserver23Deactivate)); - } - AttachProbeHook("FrameMappinPathWrapper", kFrameMappinPathWrapperRva, - reinterpret_cast(&DetourFrameMappinPathWrapper), - reinterpret_cast(&gOriginalFrameMappinPathWrapper)); - AttachProbeHook("FrameMappinPathCore", kFrameMappinPathCoreRva, - reinterpret_cast(&DetourFrameMappinPathCore), - reinterpret_cast(&gOriginalFrameMappinPathCore)); - AttachProbeHook("SetSelectedMappinWrapper", kSetSelectedMappinWrapperRva, - reinterpret_cast(&DetourSetSelectedMappinWrapper), - reinterpret_cast(&gOriginalSetSelectedMappinWrapper)); - AttachProbeHook("SetSelectedMappinByIdWrapper", kSetSelectedMappinByIdWrapperRva, - reinterpret_cast(&DetourSetSelectedMappinByIdWrapper), - reinterpret_cast(&gOriginalSetSelectedMappinByIdWrapper)); - AttachProbeHook("SetSelectedMappinByPositionWrapper", kSetSelectedMappinByPositionWrapperRva, - reinterpret_cast(&DetourSetSelectedMappinByPositionWrapper), - reinterpret_cast(&gOriginalSetSelectedMappinByPositionWrapper)); - AttachProbeHook("SetSelectedMappinCore", kSetSelectedMappinCoreRva, - reinterpret_cast(&DetourSetSelectedMappinCore), - reinterpret_cast(&gOriginalSetSelectedMappinCore)); - AttachProbeHook("TrackCustomPositionMappinWrapper", kTrackCustomPositionMappinWrapperRva, - reinterpret_cast(&DetourTrackCustomPositionMappinWrapper), - reinterpret_cast(&gOriginalTrackCustomPositionMappinWrapper)); - AttachProbeHook("TrackCustomPositionMappinCore", kTrackCustomPositionMappinCoreRva, - reinterpret_cast(&DetourTrackCustomPositionMappinCore), - reinterpret_cast(&gOriginalTrackCustomPositionMappinCore)); - AttachProbeHook("UntrackCustomPositionMappinWrapper", kUntrackCustomPositionMappinWrapperRva, - reinterpret_cast(&DetourUntrackCustomPositionMappinWrapper), - reinterpret_cast(&gOriginalUntrackCustomPositionMappinWrapper)); - AttachProbeHook("TrackMappinWrapper", kTrackMappinWrapperRva, - reinterpret_cast(&DetourTrackMappinWrapper), - reinterpret_cast(&gOriginalTrackMappinWrapper)); - AttachProbeHook("TrackMappinCore", kTrackMappinCoreRva, reinterpret_cast(&DetourTrackMappinCore), - reinterpret_cast(&gOriginalTrackMappinCore)); - AttachProbeHook("SetMappinTrackingAlternativeWrapper", kSetMappinTrackingAlternativeWrapperRva, - reinterpret_cast(&DetourSetMappinTrackingAlternativeWrapper), - reinterpret_cast(&gOriginalSetMappinTrackingAlternativeWrapper)); } if (aReason == RED4ext::v1::EMainReason::Unload) { - DetachProbeHook("RunGPSQuery body 0x29bd128", kRunGpsQueryBodyRva); - DetachProbeHook("UpdateGPSQuery body 0x29bd254", kUpdateGpsQueryBodyRva); - DetachProbeHook("GPSQuerySubmit 0x70a42c", kGpsQuerySubmitRva); - DetachProbeHook("GPSQueryDispatch 0x70a570", kGpsQueryDispatchRva); - DetachProbeHook("GPSQueryResultFetch 0x7094b8", kGpsQueryResultFetchRva); - DetachProbeHook("GPSQueryStatus 0xaa5704", kGpsQueryStatusRva); - if (kEnableGpsLocalSearchHooks) + if (kEnableGpsTraceHooks) + { + DetachProbeHook("RunGPSQuery body 0x29bd128", kRunGpsQueryBodyRva); + DetachProbeHook("UpdateGPSQuery body 0x29bd254", kUpdateGpsQueryBodyRva); + DetachProbeHook("GPSQuerySubmit 0x70a42c", kGpsQuerySubmitRva); + DetachProbeHook("GPSQueryDispatch 0x70a570", kGpsQueryDispatchRva); + DetachProbeHook("GPSQueryResultFetch 0x7094b8", kGpsQueryResultFetchRva); + DetachProbeHook("GPSQueryStatus 0xaa5704", kGpsQueryStatusRva); + DetachProbeHook("GPSDispatchAdvance 0x8d17d8", kGpsDispatchAdvanceRva); + DetachProbeHook("GPSAsyncWorkerTick 0x126b28", kGpsAsyncWorkerTickRva); + DetachProbeHook("GPSRouteJobPoll 0x883cd8", kGpsRouteJobPollRva); + DetachProbeHook("GPSRouteFinish 0x11f5f60", kGpsRouteFinishRva); + DetachProbeHook("GPSRouteJobBuild 0x818ba8", kGpsRouteJobBuildRva); + } + if (kEnableGpsCostTablePatch || kEnableGpsRouteJobStartTrace) + { + DetachProbeHook("GPSRouteJobStart 0x818928", kGpsRouteJobStartRva); + } + if (kEnableGpsTraceHooks && kEnableGpsLocalSearchHooks) { DetachProbeHook("GPSRouteProducer 0x44cc7c", kGpsRouteProducerRva); DetachProbeHook("GPSSearch 0x44f054", kGpsSearchRva); @@ -4212,56 +4236,59 @@ RED4EXT_C_EXPORT bool RED4EXT_CALL Main(RED4ext::v1::PluginHandle aHandle, RED4e DetachProbeHook("GPSAuxMultiplier 0x40bb00", kGpsAuxMultiplierRva); DetachProbeHook("GPSNodeMultiplier 0x40bb40", kGpsNodeMultiplierRva); } - DetachProbeHook("GPSSystem/Tick", kGpsSystemTickRva); - DetachProbeHook("JournalManager::TrackEntry impl", kJournalTrackEntryImplRva); - if (kEnableVerboseJournalListenerHooks) + if (kEnableRouteUiTraceHooks) { - DetachProbeHook("JournalListener::Objective vt28", kJournalListenerObjectiveVt28Rva); - DetachProbeHook("JournalListener::Objective vt30", kJournalListenerObjectiveVt30Rva); - DetachProbeHook("JournalListener::Route vt28", kJournalListenerRouteVt28Rva); - DetachProbeHook("JournalListener::Route vt30", kJournalListenerRouteVt30Rva); - DetachProbeHook("JournalListener::RouteAlt vt28", kJournalListenerRouteAltVt28Rva); - DetachProbeHook("JournalListener::RouteAlt vt30", kJournalListenerRouteAltVt30Rva); - DetachProbeHook("JournalListener::UI vt28", kJournalListenerUiVt28Rva); - DetachProbeHook("JournalListener::UI vt30", kJournalListenerUiVt30Rva); - DetachProbeHook("JournalListener::Tracker vt28", kJournalListenerTrackerVt28Rva); + DetachProbeHook("GPSSystem/Tick", kGpsSystemTickRva); + DetachProbeHook("JournalManager::TrackEntry impl", kJournalTrackEntryImplRva); + if (kEnableVerboseJournalListenerHooks) + { + DetachProbeHook("JournalListener::Objective vt28", kJournalListenerObjectiveVt28Rva); + DetachProbeHook("JournalListener::Objective vt30", kJournalListenerObjectiveVt30Rva); + DetachProbeHook("JournalListener::Route vt28", kJournalListenerRouteVt28Rva); + DetachProbeHook("JournalListener::Route vt30", kJournalListenerRouteVt30Rva); + DetachProbeHook("JournalListener::RouteAlt vt28", kJournalListenerRouteAltVt28Rva); + DetachProbeHook("JournalListener::RouteAlt vt30", kJournalListenerRouteAltVt30Rva); + DetachProbeHook("JournalListener::UI vt28", kJournalListenerUiVt28Rva); + DetachProbeHook("JournalListener::UI vt30", kJournalListenerUiVt30Rva); + DetachProbeHook("JournalListener::Tracker vt28", kJournalListenerTrackerVt28Rva); + } + DetachProbeHook("JournalRouteBridge::Update candidate", kJournalRouteBridgeRva); + DetachProbeHook("MappinSystem::RouteEventEnqueue slot240", kMappinRouteEventEnqueueRva); + DetachProbeHook("MappinRouteEvent::Handle", kMappinRouteEventHandlerRva); + DetachProbeHook("MappinSystem::RouteActivate", kMappinRouteActivateRva); + DetachProbeHook("MappinSystem::RouteDeactivate", kMappinRouteDeactivateRva); + DetachProbeHook("RouteBuildCandidate 0x5625a4", kRouteBuildCandidateRva); + if (kEnableVerboseRouteObserverHooks) + { + DetachProbeHook("RouteObserver0::Activate slot48", kRouteObserver0ActivateRva); + DetachProbeHook("RouteObserver1::Activate slot48", kRouteObserver1ActivateRva); + DetachProbeHook("RouteObserver23::Activate slot48", kRouteObserver23ActivateRva); + DetachProbeHook("RouteObserver0::Deactivate slot50", kRouteObserver0DeactivateRva); + DetachProbeHook("RouteObserver1::Deactivate slot50", kRouteObserver1DeactivateRva); + DetachProbeHook("RouteObserver23::Deactivate slot50", kRouteObserver23DeactivateRva); + } + DetachProbeHook("FrameMappinPathWrapper", kFrameMappinPathWrapperRva); + DetachProbeHook("FrameMappinPathCore", kFrameMappinPathCoreRva); + DetachProbeHook("SetSelectedMappinWrapper", kSetSelectedMappinWrapperRva); + DetachProbeHook("SetSelectedMappinByIdWrapper", kSetSelectedMappinByIdWrapperRva); + DetachProbeHook("SetSelectedMappinByPositionWrapper", kSetSelectedMappinByPositionWrapperRva); + DetachProbeHook("SetSelectedMappinCore", kSetSelectedMappinCoreRva); + DetachProbeHook("TrackCustomPositionMappinWrapper", kTrackCustomPositionMappinWrapperRva); + DetachProbeHook("TrackCustomPositionMappinCore", kTrackCustomPositionMappinCoreRva); + DetachProbeHook("UntrackCustomPositionMappinWrapper", kUntrackCustomPositionMappinWrapperRva); + DetachProbeHook("TrackMappinWrapper", kTrackMappinWrapperRva); + DetachProbeHook("TrackMappinCore", kTrackMappinCoreRva); + DetachProbeHook("SetMappinTrackingAlternativeWrapper", kSetMappinTrackingAlternativeWrapperRva); + DetachAbsoluteHook("MappinSystem::UpdateCustomPosition slot1f0", gMappinUpdateCustomPositionTarget); + DetachAbsoluteHook("MappinSystem::SetTracked slot220", gMappinSetTrackedTarget); + DetachAbsoluteHook("MappinSystem::ClearTracked slot228", gMappinClearTrackedTarget); + DetachAbsoluteHook("MappinSystem::FramePath slot280", gMappinFramePathTarget); + DetachAbsoluteHook("MappinSystem::PositionQuery slot2e0", gMappinPositionQueryTarget); + DetachAbsoluteHook("MappinSystem::CreateCustomPosition slot2f0", gMappinCreateCustomPositionTarget); + DetachAbsoluteHook("MappinSystem::ReleaseQuery slot368", gMappinReleaseQueryTarget); + DetachAbsoluteHook("MappinSystem::ActiveRoute slot3a8", gMappinActiveRouteTarget); + DetachAbsoluteHook("Observer1Service::RouteLookup slot220", gObserver1ServiceRouteLookupTarget); } - DetachProbeHook("JournalRouteBridge::Update candidate", kJournalRouteBridgeRva); - DetachProbeHook("MappinSystem::RouteEventEnqueue slot240", kMappinRouteEventEnqueueRva); - DetachProbeHook("MappinRouteEvent::Handle", kMappinRouteEventHandlerRva); - DetachProbeHook("MappinSystem::RouteActivate", kMappinRouteActivateRva); - DetachProbeHook("MappinSystem::RouteDeactivate", kMappinRouteDeactivateRva); - DetachProbeHook("RouteBuildCandidate 0x5625a4", kRouteBuildCandidateRva); - if (kEnableVerboseRouteObserverHooks) - { - DetachProbeHook("RouteObserver0::Activate slot48", kRouteObserver0ActivateRva); - DetachProbeHook("RouteObserver1::Activate slot48", kRouteObserver1ActivateRva); - DetachProbeHook("RouteObserver23::Activate slot48", kRouteObserver23ActivateRva); - DetachProbeHook("RouteObserver0::Deactivate slot50", kRouteObserver0DeactivateRva); - DetachProbeHook("RouteObserver1::Deactivate slot50", kRouteObserver1DeactivateRva); - DetachProbeHook("RouteObserver23::Deactivate slot50", kRouteObserver23DeactivateRva); - } - DetachProbeHook("FrameMappinPathWrapper", kFrameMappinPathWrapperRva); - DetachProbeHook("FrameMappinPathCore", kFrameMappinPathCoreRva); - DetachProbeHook("SetSelectedMappinWrapper", kSetSelectedMappinWrapperRva); - DetachProbeHook("SetSelectedMappinByIdWrapper", kSetSelectedMappinByIdWrapperRva); - DetachProbeHook("SetSelectedMappinByPositionWrapper", kSetSelectedMappinByPositionWrapperRva); - DetachProbeHook("SetSelectedMappinCore", kSetSelectedMappinCoreRva); - DetachProbeHook("TrackCustomPositionMappinWrapper", kTrackCustomPositionMappinWrapperRva); - DetachProbeHook("TrackCustomPositionMappinCore", kTrackCustomPositionMappinCoreRva); - DetachProbeHook("UntrackCustomPositionMappinWrapper", kUntrackCustomPositionMappinWrapperRva); - DetachProbeHook("TrackMappinWrapper", kTrackMappinWrapperRva); - DetachProbeHook("TrackMappinCore", kTrackMappinCoreRva); - DetachProbeHook("SetMappinTrackingAlternativeWrapper", kSetMappinTrackingAlternativeWrapperRva); - DetachAbsoluteHook("MappinSystem::UpdateCustomPosition slot1f0", gMappinUpdateCustomPositionTarget); - DetachAbsoluteHook("MappinSystem::SetTracked slot220", gMappinSetTrackedTarget); - DetachAbsoluteHook("MappinSystem::ClearTracked slot228", gMappinClearTrackedTarget); - DetachAbsoluteHook("MappinSystem::FramePath slot280", gMappinFramePathTarget); - DetachAbsoluteHook("MappinSystem::PositionQuery slot2e0", gMappinPositionQueryTarget); - DetachAbsoluteHook("MappinSystem::CreateCustomPosition slot2f0", gMappinCreateCustomPositionTarget); - DetachAbsoluteHook("MappinSystem::ReleaseQuery slot368", gMappinReleaseQueryTarget); - DetachAbsoluteHook("MappinSystem::ActiveRoute slot3a8", gMappinActiveRouteTarget); - DetachAbsoluteHook("Observer1Service::RouteLookup slot220", gObserver1ServiceRouteLookupTarget); } return true;