The actual uncap is achieved by replacing a Sleep(remaining_ms) call with a SwitchToThread() or YieldProcessor() loop, effectively eliminating forced waits. In some versions, the cap variable is NOPed:

// Example pseudocode reconstructed void UncapFPS::Initialize() auto pattern = PatternScan("48 8B 0D ? ? ? ? 48 85 C9 74 ? 83 B9 ? ? ? ? ?"); auto fps_limiter = relative_offset(pattern, 3); MH_CreateHook(fps_limiter, &UncappedLoop, (void**)&original_limiter);

Abstract This paper examines UncapFPS.asi , a plugin designed to remove the native 30/60/144 FPS cap in Rockstar Advanced Game Engine (RAGE) titles. We dissect its hooking methodology, memory patching strategy, and the consequential impact on game logic, physics, and rendering pipelines. Empirical results demonstrate that while visual smoothness improves, engine timestep coupling leads to secondary side effects including altered vehicle dynamics and mission script failures. 1. Introduction Many RAGE-based games (GTA V, Red Dead Redemption 2) tie core logic updates to the framerate. A hard cap prevents physics explosions but limits high-refresh-rate displays. UncapFPS.asi is a user-generated plugin that overrides this limit.