Measured on the cartridge from the rung-10 checkpoint: `wXCoord` and `wYCoord` change at the *end* of a sixteen-frame step while the background scrolls throughout it, so for fifteen frames of every sixteen the screen buffer is centred one tile ahead of the coordinates. The cross-check compared the decode of the fly's own tile with the screen's reading of the tile ahead and refused. Pewter City decoded on 118 of 120 standing frames and on none of the moving ones, so every walk the fly actually took was re-planned over the ten-by-nine window, which is the oscillation of row 23. Nothing in the pinned symbol table says "a step is in progress" and a new address cannot be pinned without the disassembly `gen_symbols.py` reads, so the anchor is measured rather than named: the screen is centred on the fly's tile or on one of its four neighbours, and the one it is centred on is the one whose whole neighbourhood agrees with the decode. A decode with a wrong stride, a wrong quadrant or a half-loaded map agrees with none of the five, and neither does the mid-warp tear the per-serve check was added for, so both refusals stand. `state::step_destination` names the tile the step is landing on, for the ledger the next commit writes. The town fixture gains two landmarks beside the fly, because a neighbourhood that is the same tile id in every direction cannot tell one anchor from another. |
||
|---|---|---|
| .. | ||
| fly-session | ||
| fly-session-types | ||
| flybrain-core | ||
| flybrain-gb | ||
| flybus | ||
| flysim | ||