diff --git a/findings/control-flow/trade-raid-rng-gate.md b/findings/control-flow/trade-raid-rng-gate.md index b1910bd..0662d02 100644 --- a/findings/control-flow/trade-raid-rng-gate.md +++ b/findings/control-flow/trade-raid-rng-gate.md @@ -385,3 +385,49 @@ rather than one; sectors with `tsnumflt` up to 2 and a `tsflt` entry that is a * rather than a freighter; and a `StarFleet` whose **`LocID` is a `TradeSector` id (832)** rather than a star system id — the first fleet in the corpus located anywhere but a star, which is precisely the state that makes the tail draw. + +--- + +## 9. VM141 as left, and two things that cost this lane time + +**Guest state.** Game stopped. `C:\SOTS\shim.cfg` is a copy of `shim.cfg.l3cont` (`hooks=off`, +`watch=on`, `watch.mode=cont` — the cheap config); the lane's dist is `C:\SOTS\shimdist-ac` +(`BUILD_ID ac-7e726b9-20260909T0017Z`) and `C:\SOTS\binkw32.dll` is that build's proxy, with the +original still at `binkw32_real.dll`. `SavedGames` has been restored from +`C:\SOTS\SavedGames-acstash` and additionally holds **`ac-turn20-raider.sav`** and L3's three saves, +so **every Load-dialog row position recorded by an earlier lane has moved on this guest** — screenshot +the dialog, do not reuse a remembered row. Also left, all harmless: `C:\SOTS\acdata\` (config text +extracted from `sots.gob`) and `C:\SOTS\ui\ac-*.ps1`. + +**`click_helper.ps1` gained six verbs**, purely additive, every existing verb byte-for-byte +unchanged; pre-lane backup at `click_helper.ps1.preAC`: + +``` +drag x1 y1 x2 y2 left-button drag (ported from VM144, lane L3) +rdrag x1 y1 x2 y2 RIGHT-button drag, 30 steps (the only thing that pans the tech tree) +sdrag x1 y1 x2 y2 slow left drag, 40 steps +wheel x y delta [n] n wheel notches +jmove x y move with a real relative mouse_event jiggle (new; ported from lane L2's ui.ps1) +jclick x y click with the same jiggle (new) +``` + +**The jiggle is needed to *read* the star map and harmful when *committing* to it.** `jmove` is what +makes the map's hover readout update — without it the `Sector 6 / Range 5.0 / ETA 2 Turns` line never +appears and you are clicking blind. But `jclick` on the sector marker **did not register the +destination**, twice, silently; a plain `click` at the same coordinate did, first time. So: `jmove` to +read, plain `click` to commit. Lane L2's note that the map "needs real mouse motion" is right about +motion and wrong if read as "use the jiggle for everything". + +**Verify a fleet order from the save, never from the panel.** The first move order left the fleet +panel showing no destination *and* the save showing `LocID 48` — unmoved — through two End Turns, +with no error anywhere. The second attempt showed `Dest: Sector 6, 2 Turns` in the panel and moved. +There is no failure signal; the only reliable check is `Flt.LocID` in the autosave. + +**Dev-box build note (not a repo change).** `cmake/toolchain-mingw-i686.cmake` links libgcc and +libstdc++ statically but not **libwinpthread**. On the WSL dev box the i686 mingw is the *posix* +threads model, so `binkw32.dll` comes out importing `libwinpthread-1.dll` and the game dies at load +with `0xC0000135 STATUS_DLL_NOT_FOUND` — no shim log, no banner, just an exit code in +`dxvklog\run.txt`. Adding `-DCMAKE_SHARED_LINKER_FLAGS=-static` fixes it. CT111 does not have this +problem (its mingw uses the win32 model), which is why no lane has hit it before; the toolchain file +was deliberately **not** changed, because that is a shared-infrastructure decision for the integrator +rather than a lane's.