Elite Phase 1 results - blueprint pipeline and mesh viewer, PC3 (HDMIWEB V6.03.02b3, 378 MHz), 2026-09-09

Pipeline: elite_tools/blueprints.py reads elite-source.asm (cassette) -> Bas/elite/data/ships.bas (+ ships.json).
  Every blueprint edge is drawn: face boundaries chained from the edge list, single-face detail edges as extra
  polygons (Cobra engine recesses, Viper vents), bare lines (Python fin lines x4, Thargoid vents x2, Cobra nose
  spike shared by faces 0/11, Missile fin lines x8 shared by two faces each) as sliver triangles (one extra
  vertex 0.5 units off the line).  Winding set so Draw3D's first-three-vertex normal agrees with the stored one.
  Cross-check vs Bas/3ddemo.bas: 9 ships identical (vertices + edge sets); demo Python lacked 8 edges,
  Thargoid 2, Cobra 1 (nose spike), Missile 8 (fins); Thargon absent from the demo.

Winding check (meshview.bas AUTOMODE=1 + meshcheck.py): engine DIAGNOSE verdict vs blueprint normal,
  12 ships x 3 orientations = 36 sets, 444 polygon verdicts.
  Real faces (boundary + detail): 0 mismatches.
  Sliver lines: 3 deviations (Cobra nose spike, 2 Missile fin lines) - inherent: a sliver's normal must be
  perpendicular to its line, so where the host normal is not, the cull angle differs (up to ~45 deg on fins).

Solid mode needs Draw3D WRITE ... depthmode 1 (vertex-based sort): with centroid sorting the coplanar detail
  quads on the Cobra's rear face can be painted over by the face itself (Peter, from 3ddemo experience).

Per-ship draw time, ms (wireframe / solid), near = 2.5 x size, mid = 5 x, far = 12 x
  Sidewinder  0.90/1.68  0.61/1.11  0.46/0.78      Coriolis    1.70/3.79  1.10/2.63  0.68/1.58
  Viper       0.82/1.88  0.59/1.26  0.45/0.88      Missile     1.09/2.64  0.75/1.68  0.56/1.15
  Mamba       0.93/1.75  0.64/1.19  0.47/0.85      Asteroid    1.35/2.09  0.87/1.38  0.57/0.92
  Python      0.96/1.99  0.67/1.38  0.50/1.04      Canister    0.99/2.28  0.66/1.45  0.48/0.96
  Cobra       1.07/2.52  0.73/1.71  0.54/1.24      Thargon     0.77/1.45  0.56/0.97  0.43/0.67
  Thargoid    0.99/1.62  0.67/1.05  0.49/0.73      Escape pod  0.59/0.82  0.46/0.64  0.37/0.49

Captures (sheet.bas -> SAVE IMAGE -> XMODEM S -> elite_tools/pc3.py grab): tests/captures/
  sheet_wire.png, sheet_solid.png (all 12 ships), sheet_big.png (Python, Missile, Thargoid, Coriolis),
  cobra_wire.png, cobra_solid.png, cobra_hline.png.
