Objects have multiple identifiers.
In many cases the high nibble of the unique ID is the low nibble of the shape class, but not always. For example, time portals are in shape class $01 so they get created along with enemy ships, but have a $6x unique ID like friendly bases.
Shape definitions begin at $4795 (click link and scroll up for detailed explanation).
Shape Class | Nums | Img | Score Class | Unique ID | Description |
---|---|---|---|---|---|
$00 (1 entry) | |||||
0 | - | $01 | Epoch logo | ||
$01 (4 entries) | |||||
1 | 7 | $11 | Base/500pts | ||
0,2,3 | 6 | $12 | Base/300pts | ||
$02 (8 entries) | |||||
0 | 5 | $e1 | Ship/100pts (two planes) | ||
1,3 | 2 | $21 | Ship/30pts | ||
6,7 | 3 | $22 | Ship/40pts | ||
2,5 | 4 | $23 | Ship/60pts | ||
4 | - | $6f | Time portal | ||
$03 (4 entries, even only) | |||||
0 | - | $31 | Enemy base projectile (flashing) | ||
2 | - | $32 | Enemy ship projectile | ||
$04 (1 entry) | |||||
0 | 6 | $12 | Reference to: Base/300pts | ||
$05 (8 entries) | |||||
0 | - | $51 | Time portal boundary | ||
1,7 | - | $52 | Time portal boundary | ||
2 | - | $53 | Time portal boundary | ||
3 | - | $54 | Time portal boundary | ||
4 | - | $55 | Time portal boundary | ||
5 | - | $56 | Time portal boundary (odd colors) | ||
6 | - | $57 | Time portal boundary | ||
$06 (1 entry) | |||||
0 | - | $61 | Friendly base | ||
$07 (8 entries) | |||||
0 | - | $71 | Star (white) | ||
1,7 | - | $72 | Star (blue) | ||
2 | - | $73 | Star (orange/black) | ||
3 | - | $74 | Star (purple) | ||
4,6 | - | $75 | Star (green/black) | ||
5 | - | $76 | Star (orange, rectangular) | ||
$08 (1 entry) | |||||
0 | - | $81 | Player projectile | ||
$09 (8 entries) | |||||
0,6 | - | $91 | Explosion chunk | ||
1,7 | - | $92 | Explosion chunk | ||
2 | - | $93 | Explosion chunk | ||
3 | - | $94 | Explosion chunk | ||
4 | - | $95 | Explosion chunk | ||
5 | - | $96 | Explosion chunk | ||
$0a (4 entries) | |||||
0 | - | $01 | Explosion flare | ||
1 | - | $02 | Explosion flare | ||
2 | - | $03 | Explosion flare | ||
3 | - | $03(!) | Explosion flare |
Notes on the visualization images:
Each shape has a 24-byte header that defines various parameters, such as unique ID, score class, valid initial Z position, and the number of elements. The header is followed by a series of 16-byte element definitions.
There are four kinds of elements:
$00
: point$01
: horizontal line$80
: filled rectangle$ff
: vertical lineElements are defined by five coordinates: left, top, right, bottom, and depth (Z). All five are signed 16-bit values. When not needed, the right and/or bottom coordinates are ignored.
Each element has one or two colors. Elements with two colors flip back and forth at a rate defined by the element. The colors are:
$00
: black$10
: white (single-pixel)$20
: green$30
: purple$40
: orange$50
: blue$60
: white (double-pixel)$ff
: do not drawNote the low nibble of each byte is zero. The color value is ORed with a pixel position (0-6 for even bytes, 8-14 for odd bytes) and used as an index into a table of pixel patterns.
Elements are drawn in the order in which they are defined.
Copyright 2020 by Andy McFadden