Skip to navigation

Elite on the BBC Micro and NES

Version analysis of SHIP_SPLINTER

This code appears in the following versions (click to see it in the source code):

Code variations between these versions are shown below.

Name: SHIP_SPLINTER Type: Variable Category: Drawing ships Summary: Ship blueprint for a splinter Deep dive: Ship blueprints
The ship blueprint for the splinter reuses the edges data from the escape pod, so the edges data offset is negative.
.SHIP_SPLINTER EQUB 0 + (11 << 4) \ Max. canisters on demise = 0 \ Market item when scooped = 11 + 1 = 12 (Minerals) EQUW 16 * 16 \ Targetable area = 16 * 16 EQUB LO(SHIP_ESCAPE_POD_EDGES - SHIP_SPLINTER) \ Edges from escape pod EQUB LO(SHIP_SPLINTER_FACES - SHIP_SPLINTER) + 24 \ Faces data offset (low)

Code variation 1 of 1Related to an advanced feature

The advanced versions of Elite have an extra edge count for the ship colour; splinters are shown in red.

Tap on a block to expand it, and tap it again to revert.

EQUB 25 \ Max. edge count = (25 - 1) / 4 = 6
EQUB 29 \ Max. edge count = (29 - 1) / 4 = 7
 EQUB 0                 \ Gun vertex               = 0
 EQUB 22                \ Explosion count          = 4, as (4 * n) + 6 = 22
 EQUB 24                \ Number of vertices       = 24 / 6 = 4
 EQUB 6                 \ Number of edges          = 6
 EQUW 0                 \ Bounty                   = 0
 EQUB 16                \ Number of faces          = 16 / 4 = 4
 EQUB 8                 \ Visibility distance      = 8
 EQUB 20                \ Max. energy              = 20
 EQUB 10                \ Max. speed               = 10

 EQUB HI(SHIP_ESCAPE_POD_EDGES - SHIP_SPLINTER)    \ Edges from escape pod
 EQUB HI(SHIP_SPLINTER_FACES - SHIP_SPLINTER)      \ Faces data offset (low)

 EQUB 5                 \ Normals are scaled by    = 2^5 = 32
 EQUB %00000000         \ Laser power              = 0
                        \ Missiles                 = 0

.SHIP_SPLINTER_VERTICES

      \    x,    y,    z, face1, face2, face3, face4, visibility
 VERTEX  -24,  -25,   16,     2,      1,    3,     3,         31    \ Vertex 0
 VERTEX    0,   12,  -10,     2,      0,    3,     3,         31    \ Vertex 1
 VERTEX   11,   -6,    2,     1,      0,    3,     3,         31    \ Vertex 2
 VERTEX   12,   42,    7,     1,      0,    2,     2,         31    \ Vertex 3

.SHIP_SPLINTER_FACES

    \ normal_x, normal_y, normal_z, visibility
 FACE       35,        0,        4,         31    \ Face 0
 FACE        3,        4,        8,         31    \ Face 1
 FACE        1,        8,       12,         31    \ Face 2
 FACE       18,       12,        0,         31    \ Face 3