v0.10.0 — GP Bikes attach + reload
FrostMod now attaches to GP Bikes as well as MX Bikes, and live-reloads its mods.
GP Bikes
Run frostmod.exe --game gpb (or --process gpbikes.exe). Drop a .pkz into
Documents\PiBoSo\GP Bikes\mods\tracks, press R in the console, and it shows up in-game
without restarting — the same as MX Bikes has always worked.
Injected into the game, the DLL works out which title it is inside from the host process, so
there is nothing to configure.
Under the hood
The two constants live reload needs were recovered from an unpacked gpbikes.exe: the boot
content-load routine (0xfb650) and the VFS directory walker (0x18f150). MX Bikes'
values are unchanged.
GP's scanner prologue turned out to be byte-for-byte identical to MX Bikes' — same 0x7f8
frame — so the signature-with-delta fallback that keeps FrostMod working across a game update
covers either title unchanged.
Changed
- Features whose offsets are MX-Bikes-only now stay off on other titles instead of firing
at addresses that mean nothing there. The server-browser filter is the one that matters: its
hook writes a jump at an address that is unrelated code on GP Bikes. The log says why. --updaterefuses to run while either game is open, not just MX Bikes — the DLL is locked
by whichever one loaded it.
Still MX Bikes only
Server-browser filter, master protocol, and direct connect. GP Bikes also has its own master
server and default port, so MX's don't carry over.
Known limits
The GP Bikes offsets were derived by static analysis and confirmed by two independent methods,
but have not been verified under a debugger. If reload misbehaves on GP Bikes, the console log
names the RVA it resolved — that's the thing to report. See tasks/gp-bikes-port.md.