COB-exact: timeline 1:1 from cordoom.cob (activatescr/deactivatescr, disassembled with _cob_dis.py). StateChg staged-deploy family: 13 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

Frame 0 / 2520.00 s
COB timeline (CORDOOM.COB)
- 0.00–0.40 s — Closed rest pose (3DO zero point)
- 0.40–1.07 s — activatescr stage 1: hatch z-turn 0.0°→-31.6°
- 1.07–1.75 s — activatescr stage 2: hatch x-move 0.00 elmo→3.20 elmo, hatch y-move 0.00 elmo→-3.65 elmo, hatch z-turn -31.6°→-49.2°
- 1.75–2.42 s — activatescr stage 3: shell1a z-move 0.00 elmo→0.00 elmo, shell4b x-move 0.00 elmo→-4.15 elmo, shell3b z-move 0.00 elmo→-4.05 elmo, shell2b x-move 0.00 elmo→4.00 elmo …
- 2.42–3.08 s — activatescr stage 4: shell1a x-move 0.00 elmo→3.30 elmo, shell1a z-move 0.00 elmo→0.00 elmo, shell2a z-move 0.00 elmo→-3.30 elmo, shell3a x-move 0.00 elmo→-3.30 elmo …
- 3.08–3.98 s — activatescr stage 5: shell1a y-move 0.00 elmo→-11.45 elmo, shell2a y-move 0.00 elmo→-11.45 elmo, shell3a y-move 0.00 elmo→-11.40 elmo, shell4a y-move 0.00 elmo→-11.40 elmo
- 3.98–4.61 s — activatescr stage 7: turreta y-move 0.00 elmo→4.30 elmo
- 4.61–5.28 s — activatescr stage 8: turreta y-move 4.30 elmo→8.85 elmo, turretb y-move 0.00 elmo→4.45 elmo
- 5.28–5.96 s — activatescr stage 9: turreta y-move 8.85 elmo→11.55 elmo, turretb y-move 4.45 elmo→7.10 elmo, turretc y-move 0.00 elmo→2.65 elmo
- 5.96–6.63 s — activatescr stage 10: hatchc y-move 0.00 elmo→1.70 elmo, hatchc z-move 0.00 elmo→-0.70 elmo
- 6.63–7.31 s — activatescr stage 11: sleevec z-move 0.00 elmo→4.10 elmo, hatchb x-move 0.00 elmo→2.95 elmo, hatchb z-move 0.00 elmo→-3.35 elmo, hatchb y-turn 0.0°→-46.9°
- 7.31–8.00 s — activatescr stage 12: barrelc1 z-move 0.00 elmo→3.15 elmo, barrelc2 z-move 0.00 elmo→3.15 elmo, collarb z-move 0.00 elmo→3.40 elmo
- 8.00–8.68 s — activatescr stage 13: barrelb z-move 0.00 elmo→3.50 elmo
- 8.68–9.40 s — activatescr stage 14: barrela z-move 0.00 elmo→3.65 elmo
- 10.60–11.28 s — deactivatescr stage 1: barrela z-move 3.65 elmo→0.00 elmo
- 11.28–11.95 s — deactivatescr stage 2: barrelb z-move 3.50 elmo→0.00 elmo
- 11.95–12.63 s — deactivatescr stage 3: barrelc1 z-move 3.15 elmo→0.00 elmo, barrelc2 z-move 3.15 elmo→0.00 elmo, collarb z-move 3.40 elmo→0.00 elmo
- 12.63–13.32 s — deactivatescr stage 4: sleevec z-move 4.10 elmo→0.00 elmo, hatchb x-move 2.95 elmo→0.00 elmo, hatchb z-move -3.35 elmo→0.00 elmo, hatchb y-turn -46.9°→0.0°
- 13.32–14.00 s — deactivatescr stage 5: hatchc y-move 1.70 elmo→0.00 elmo, hatchc z-move -0.70 elmo→0.00 elmo
- 14.00–14.65 s — deactivatescr stage 6: turreta y-move 11.55 elmo→8.85 elmo, turretb y-move 7.10 elmo→4.45 elmo, turretc y-move 2.65 elmo→0.00 elmo
- 14.65–15.31 s — deactivatescr stage 7: turreta y-move 8.85 elmo→4.30 elmo, turretb y-move 4.45 elmo→0.00 elmo
- 15.31–16.27 s — deactivatescr stage 8: turreta y-move 4.30 elmo→0.00 elmo
- 16.27–16.93 s — deactivatescr stage 10: shell1a y-move -11.45 elmo→0.00 elmo, shell2a y-move -11.45 elmo→0.00 elmo, shell3a y-move -11.40 elmo→0.00 elmo, shell4a y-move -11.40 elmo→0.00 elmo
- 16.93–17.58 s — deactivatescr stage 11: shell1a x-move 3.30 elmo→0.00 elmo, shell1a z-move 0.00 elmo→0.00 elmo, shell2a z-move -3.30 elmo→0.00 elmo, shell3a x-move -3.30 elmo→0.00 elmo …
- 17.58–18.24 s — deactivatescr stage 12: shell1a z-move 0.00 elmo→0.00 elmo, shell4b x-move -4.15 elmo→0.00 elmo, shell3b z-move -4.05 elmo→0.00 elmo, shell2b x-move 4.00 elmo→0.00 elmo …
- 18.24–18.90 s — deactivatescr stage 13: hatch x-move 3.20 elmo→0.00 elmo, hatch y-move -3.65 elmo→0.00 elmo, hatch z-turn -49.2°→-31.6°
- 18.90–19.61 s — deactivatescr stage 14: hatch z-turn -31.6°→0.0°
- 19.61–20.21 s — closed again — loop restarts (fire/hit/death scripts are engine-driven, not in this loop)
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).