Skip to navigation

Elite on the BBC Micro and NES

Version analysis of SHIP_PYTHON_P

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_PYTHON_P Type: Variable Category: Drawing ships Summary: Ship blueprint for a Python (pirate) Deep dive: Ship blueprints

Code variation 1 of 5A variation in the comments only

This variation is blank in the Disc (flight) and 6502 Second Processor versions.

The ship blueprint for the pirate Python reuses the edges and faces data from the non-pirate Python, so the edges and faces data offsets are negative.
.SHIP_PYTHON_P EQUB 2 \ Max. canisters on demise = 2 EQUW 80 * 80 \ Targetable area = 80 * 80

Code variation 2 of 5Specific to an individual platform

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

EQUB LO(SHIP_PYTHON_P_EDGES - SHIP_PYTHON_P) \ Edges data offset (low) EQUB LO(SHIP_PYTHON_P_FACES - SHIP_PYTHON_P) \ Faces data offset (low)
EQUB LO(SHIP_PYTHON_EDGES - SHIP_PYTHON_P) \ Edges from Python EQUB LO(SHIP_PYTHON_FACES - SHIP_PYTHON_P) \ Faces from Python

Code variation 3 of 5Related to an advanced feature

The advanced versions of Elite have an extra edge count for the ship colour; Python pirates are shown in cyan.

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

EQUB 85 \ Max. edge count = (85 - 1) / 4 = 21
EQUB 89 \ Max. edge count = (89 - 1) / 4 = 22
 EQUB 0                 \ Gun vertex               = 0
 EQUB 42                \ Explosion count          = 9, as (4 * n) + 6 = 42
 EQUB 66                \ Number of vertices       = 66 / 6 = 11
 EQUB 26                \ Number of edges          = 26
 EQUW 200               \ Bounty                   = 200
 EQUB 52                \ Number of faces          = 52 / 4 = 13
 EQUB 40                \ Visibility distance      = 40
 EQUB 250               \ Max. energy              = 250
 EQUB 20                \ Max. speed               = 20

Code variation 4 of 5Specific to an individual platform

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

EQUB HI(SHIP_PYTHON_P_EDGES - SHIP_PYTHON_P) \ Edges data offset (high) EQUB HI(SHIP_PYTHON_P_FACES - SHIP_PYTHON_P) \ Faces data offset (high)
EQUB HI(SHIP_PYTHON_EDGES - SHIP_PYTHON_P) \ Edges from Python EQUB HI(SHIP_PYTHON_FACES - SHIP_PYTHON_P) \ Faces from Python
 EQUB 0                 \ Normals are scaled by    = 2^0 = 1
 EQUB %00011011         \ Laser power              = 3
                        \ Missiles                 = 3

.SHIP_PYTHON_P_VERTICES

      \    x,    y,    z, face1, face2, face3, face4, visibility
 VERTEX    0,    0,  224,     0,      1,    2,     3,         31    \ Vertex 0
 VERTEX    0,   48,   48,     0,      1,    4,     5,         31    \ Vertex 1
 VERTEX   96,    0,  -16,    15,     15,   15,    15,         31    \ Vertex 2
 VERTEX  -96,    0,  -16,    15,     15,   15,    15,         31    \ Vertex 3
 VERTEX    0,   48,  -32,     4,      5,    8,     9,         31    \ Vertex 4
 VERTEX    0,   24, -112,     9,      8,   12,    12,         31    \ Vertex 5
 VERTEX  -48,    0, -112,     8,     11,   12,    12,         31    \ Vertex 6
 VERTEX   48,    0, -112,     9,     10,   12,    12,         31    \ Vertex 7
 VERTEX    0,  -48,   48,     2,      3,    6,     7,         31    \ Vertex 8
 VERTEX    0,  -48,  -32,     6,      7,   10,    11,         31    \ Vertex 9
 VERTEX    0,  -24, -112,    10,     11,   12,    12,         31    \ Vertex 10

Code variation 5 of 5Specific to an individual platform

This variation is blank in the Master version.

.SHIP_PYTHON_P_EDGES \ vertex1, vertex2, face1, face2, visibility EDGE 0, 8, 2, 3, 31 \ Edge 0 EDGE 0, 3, 0, 2, 31 \ Edge 1 EDGE 0, 2, 1, 3, 31 \ Edge 2 EDGE 0, 1, 0, 1, 31 \ Edge 3 EDGE 2, 4, 9, 5, 31 \ Edge 4 EDGE 1, 2, 1, 5, 31 \ Edge 5 EDGE 2, 8, 7, 3, 31 \ Edge 6 EDGE 1, 3, 0, 4, 31 \ Edge 7 EDGE 3, 8, 2, 6, 31 \ Edge 8 EDGE 2, 9, 7, 10, 31 \ Edge 9 EDGE 3, 4, 4, 8, 31 \ Edge 10 EDGE 3, 9, 6, 11, 31 \ Edge 11 EDGE 3, 5, 8, 8, 7 \ Edge 12 EDGE 3, 10, 11, 11, 7 \ Edge 13 EDGE 2, 5, 9, 9, 7 \ Edge 14 EDGE 2, 10, 10, 10, 7 \ Edge 15 EDGE 2, 7, 9, 10, 31 \ Edge 16 EDGE 3, 6, 8, 11, 31 \ Edge 17 EDGE 5, 6, 8, 12, 31 \ Edge 18 EDGE 5, 7, 9, 12, 31 \ Edge 19 EDGE 7, 10, 12, 10, 31 \ Edge 20 EDGE 6, 10, 11, 12, 31 \ Edge 21 EDGE 4, 5, 8, 9, 31 \ Edge 22 EDGE 9, 10, 10, 11, 31 \ Edge 23 EDGE 1, 4, 4, 5, 31 \ Edge 24 EDGE 8, 9, 6, 7, 31 \ Edge 25 .SHIP_PYTHON_P_FACES \ normal_x, normal_y, normal_z, visibility FACE -27, 40, 11, 31 \ Face 0 FACE 27, 40, 11, 31 \ Face 1 FACE -27, -40, 11, 31 \ Face 2 FACE 27, -40, 11, 31 \ Face 3 FACE -19, 38, 0, 31 \ Face 4 FACE 19, 38, 0, 31 \ Face 5 FACE -19, -38, 0, 31 \ Face 6 FACE 19, -38, 0, 31 \ Face 7 FACE -25, 37, -11, 31 \ Face 8 FACE 25, 37, -11, 31 \ Face 9 FACE 25, -37, -11, 31 \ Face 10 FACE -25, -37, -11, 31 \ Face 11 FACE 0, 0, -112, 31 \ Face 12