Live preview (JavaScript)
The loop is played live in your browser from the validated loop table (the same data the reference render below was made from); the badge on the player is its self-test (seam + motion probes). The pre-rendered reference follows.
Weapon-FX (preview layer)
Schüsse auf den echten TDF-Kadenz-Rastern. Projektile fliegen die TDF-Physik (velocity/acceleration) ab der COB-Mündung; guidance/turnrate sind eine dokumentierte Vorschau-Näherung (gerade Flugbahn). Strahlen 120 ms, Explosionen = Vorschau-Blitze skaliert nach areaofeffect — die Original-Frame-Sets stehen im TDF (explosionart). Sounds: soundstart/soundhit aus dem Archiv.
Infantry Fighting Vehicle — from the unit’s FBI.
COB-exact: timeline 1:1 from ar_ifv.cob (aim/fire (COB VM), disassembled with _cob_dis.py). StateChg staged-deploy family: 1 open stages, then the compiled close order — not a reversed activate. Fire/hit/death/smoke scripts are engine-driven or firing-only and not part of this loop.
Animation

PNG frames

COB timeline (AR_IFV.COB)
- 0.00–0.40 s — Rest pose (3DO zero point) | gatling/burst spin: gun z-turn — spins during the shots, then visibly winds back to its pre-spin angle (the documented turn-<0> convention) | drive/rotor spin: spin_me y-turn — one linear turn per loop, freeze calibrated to an exact 360°·k (shift <= half a turn)
- 0.40–0.85 s — AimPrimary(8192, 3641): +45° yaw / +20° pitch at the COB aim speeds (concurrent)
- 1.20–2.20 s — 4 shots at the VMG reloadtime (250 ms) — barrels/flares per the compiled script (flashes only)
- 4.80–4.80 s — AimPrimary(0, 0): back to the rest aim (the aim calls the engine sends next; RestoreAfterDelay pacing is engine-driven)
- 4.80–7.65 s — rest again — loop restarts seam-clean (frame N = frame 0, pixel-verified)
Every stage duration equals its COB sleep exactly; values are raw COB units (turns: BAM 65536 = 360°, moves: elmo × 163840). Renderer conversions follow the proven family conventions (_cob_anim.py).