![]() |
Sprites |
Every sprite, 94 pictures and the empty sprite, in three runs (from $7017, $7691 and $7B2F) between the fonts and the tiles, grouped by what uses them. A sprite is a width byte (bits 0-3 the width in bytes; bits 6 and 7 say whether it is stored mirrored or upside down at the moment), a height byte, and a mask byte and an image byte for each byte of each row, the bottom row first: Knight Lore's format (see Knight Lore's sprites). Where the mask is set the buffer is cleared, and the image is laid in wherever it is set, so an image bit shows whatever the mask, a mask bit alone is black, and where both are clear the background shows through -- here the blue-grey.
Each picture is drawn by the game: DRAW_SPRITE_AT, an entry point of DRAW_SPRITE, run in SkoolKit's simulator on a spare object record holding one of the sprite's graphics, into the play area's buffer, once over zeros and once over ones -- which separates the image from the mask -- at twice the Spectrum's size. The sprites that are drawn mirrored in play are shown both ways, the second with bit 6 of the record's flags set, so that TURN_SPRITE turns the stored bytes round before the drawing, as it does in the game. Every picture was checked against the sprite's bytes as the listing reads them, and the mirrored ones against those turned round: the same, pixel for pixel. No sprite is turned upside down: nothing sets the flag (TURN_SPRITE).
Beside each are the graphic numbers that name it (see the graphic table for what each is and does). No sprite is wider than four bytes, the widest the drawing code's unrolled runs would take five (SPRITE_ALIGNED_RUN).
None of them is another Ultimate game's: none of the 94 sprites' mask and image bytes is found anywhere in the snapshot of Knight Lore, Alien 8 or Pentagram (searched at this build).
The knight -- Finds and antibodies -- The four objects -- The four villains -- The monsters of 112-127 -- The monsters of 64-79 -- The creature -- Puffs: vanishing, appearing and dying -- Bonuses -- The ending's pit -- The empty sprite
The knight is two records, legs and top, each with its own sprite (UPDATE_TOP, UPDATE_KNIGHT). Here he is whole in his four facings, as the game draws him: from a real game, the facing poked into his legs' record at the start of a turn and the turn run (TURN_KNIGHT gives the legs their picture and mirroring from FACING_LOOKS, the top copies them), then his two records drawn by DRAW_SPRITE (DRAW_SPRITE) with the projection and each record's own drawing offset -- the top is drawn 11 lines above the legs. Facing +U or -V he comes towards the viewer and is seen from the front, his face showing (legs 24-29, top 40-45); facing +V or -U he goes away and is seen from behind (16-21, 32-37); the mirroring gives the second of each pair.
facing +V: legs 16, top 32, mirrored | facing +U: legs 24, top 40 | facing -V: legs 24, top 40, mirrored | facing -U: legs 16, top 32 |
| Sprite | Entry | What it shows | Size | Graphics |
|---|---|---|---|---|
| SPRITE16 $A055 | the knight's legs, from behind | 24 by 16 | 16 | |
| SPRITE17 $9FF3 | the knight's legs, from behind | 24 by 16 | 17, 21 | |
| SPRITE18 $9F91 | the knight's legs, from behind | 24 by 16 | 18, 20 | |
| SPRITE19 $9F2F | the knight's legs, from behind | 24 by 16 | 19 | |
| SPRITE22 $9E9D | the knight's top half, from behind | 24 by 24 | 22 | |
| SPRITE24 $A1EF | the knight's legs, from the front | 24 by 17 | 24 | |
| SPRITE25 $A187 | the knight's legs, from the front | 24 by 17 | 25, 29 | |
| SPRITE26 $A11F | the knight's legs, from the front | 24 by 17 | 26, 28 | |
| SPRITE27 $A0B7 | the knight's legs, from the front | 24 by 17 | 27 | |
| SPRITE30 $9E05 | the knight's top half, from the front | 24 by 25 | 30 | |
| SPRITE32 $98BF | the knight's top half, from behind | 24 by 24 | 32 | |
| SPRITE33 $9703 | the knight's top half, from behind | 24 by 24 | 33, 37 | |
| SPRITE34 $99E3 | the knight's top half, from behind | 24 by 24 | 34, 36 | |
| SPRITE35 $9951 | the knight's top half, from behind | 24 by 24 | 35 | |
| SPRITE38 $982D | the knight's top half, from behind | 24 by 24 | 38 | |
| SPRITE39 $9C3D | the knight's top half, from behind | 24 by 25 | 39 | |
| SPRITE40 $9B0D | the knight's top half, from the front | 24 by 25 | 40 | |
| SPRITE41 $9BA5 | the knight's top half, from the front | 24 by 25 | 41, 45 | |
| SPRITE42 $9795 | the knight's top half, from the front | 24 by 25 | 42, 44 | |
| SPRITE43 $9A75 | the knight's top half, from the front | 24 by 25 | 43 | |
| SPRITE46 $9CD5 | the knight's top half, from the front | 24 by 25 | 46 | |
| SPRITE47 $9D6D | the knight's top half, from the front | 24 by 25 | 47 |
Four kinds of four frames. A find wanders about a building until it is taken up, and is thrown as an antibody with the same pictures; the first frame of each kind is also a sparkle from a dead villain.
| Sprite | Entry | What it shows | Size | Graphics |
|---|---|---|---|---|
| SPRITE48 $8359 | a spiral | 16 by 13 | 48, 80, 140 | |
| SPRITE49 $838F | a spiral, turned | 16 by 13 | 49, 81 | |
| SPRITE50 $83C5 | a spiral, turned | 16 by 13 | 50, 82 | |
| SPRITE51 $83FB | a spiral, turned | 16 by 13 | 51, 83 | |
| SPRITE52 $8431 | a ball with spikes | 16 by 16 | 52, 84, 141 | |
| SPRITE53 $8473 | a round ball | 16 by 16 | 53, 55, 85, 87 | |
| SPRITE54 $84B5 | a ball with spikes, the other way | 16 by 16 | 54, 86 | |
| SPRITE56 $84F7 | two crossed sticks | 16 by 16 | 56, 88, 142 | |
| SPRITE57 $8539 | two crossed sticks, turning | 16 by 16 | 57, 89 | |
| SPRITE58 $857B | the sticks end on | 16 by 16 | 58, 90 | |
| SPRITE59 $85BD | two crossed sticks, turning | 16 by 16 | 59, 91 | |
| SPRITE60 $85FF | a small disc | 16 by 16 | 60, 92, 143 | |
| SPRITE61 $8641 | a disc | 16 by 16 | 61, 93 | |
| SPRITE62 $8683 | a disc with a mark | 16 by 16 | 62, 94 | |
| SPRITE63 $86C5 | a large disc with a three-lobed mark | 16 by 16 | 63, 95 |
Each is drawn the same lying (4-7) and thrown (8-11).
| Sprite | Entry | What it shows | Size | Graphics |
|---|---|---|---|---|
| SPRITE4 $7FA5 | a book | 24 by 19 | 4, 8 | |
| SPRITE5 $7F49 | a cross, lying down | 24 by 15 | 5, 9 | |
| SPRITE6 $8075 | an hourglass | 24 by 25 | 6, 10 | |
| SPRITE7 $8019 | a hammer | 24 by 15 | 7, 11 |
Up to two pictures each -- which one by its facing and the view -- and two walking frames: the ghost has one picture and two frames, the hooded figures two pictures and one frame, the skeleton two of each. The same sprites are the ending's villains (144-151).
| Sprite | Entry | What it shows | Size | Graphics |
|---|---|---|---|---|
| SPRITE96 $7D41 | a ghost | 24 by 43 | 96, 98, 144 | |
| SPRITE97 $7E45 | a ghost | 24 by 43 | 97, 99, 145 | |
| SPRITE100 $9567 | a hooded figure | 24 by 34 | 100-101, 146-147 | |
| SPRITE102 $9635 | a hooded figure, from behind | 24 by 34 | 102-103 | |
| SPRITE104 $8995 | a hooded figure with a scythe | 24 by 34 | 104-105, 148-149 | |
| SPRITE106 $7C79 | a hooded figure with a scythe, from behind | 24 by 33 | 106-107 | |
| SPRITE108 $810D | a skeleton | 24 by 34 | 108, 150 | |
| SPRITE109 $8707 | a skeleton | 24 by 36 | 109, 151 | |
| SPRITE110 $87E1 | a skeleton, from behind | 24 by 36 | 110 | |
| SPRITE111 $88BB | a skeleton, from behind | 24 by 36 | 111 |
Four kinds, each seen from in front and from behind, two frames each.
| Sprite | Entry | What it shows | Size | Graphics |
|---|---|---|---|---|
| SPRITE112 $93EF | a horned monster with its arms up | 24 by 31 | 112 | |
| SPRITE113 $94AB | a horned monster with its arms up | 24 by 31 | 113 | |
| SPRITE114 $81DB | a horned monster with its arms up, from behind | 24 by 32 | 114 | |
| SPRITE115 $829D | a horned monster with its arms up, from behind | 24 by 31 | 115 | |
| SPRITE116 $933F | a spiky round monster, grinning | 24 by 29 | 116 | |
| SPRITE117 $928F | a spiky round monster, grinning | 24 by 29 | 117 | |
| SPRITE118 $7691 | a spiky round monster, from behind | 24 by 27 | 118 | |
| SPRITE119 $7735 | a spiky round monster, from behind | 24 by 28 | 119 | |
| SPRITE120 $91F1 | a horned head | 24 by 26 | 120 | |
| SPRITE121 $9153 | a horned head | 24 by 26 | 121 | |
| SPRITE122 $77DF | a horned head, from behind | 24 by 26 | 122 | |
| SPRITE123 $787D | a horned head, from behind | 24 by 26 | 123 | |
| SPRITE124 $8FFF | a crested monster with teeth | 24 by 28 | 124 | |
| SPRITE125 $90A9 | a crested monster with teeth | 24 by 28 | 125 | |
| SPRITE126 $791B | a crested monster, from behind | 24 by 28 | 126 | |
| SPRITE127 $79C5 | a crested monster, from behind | 24 by 28 | 127 |
Four kinds, each with three pictures for its four frames: the second is also the fourth.
| Sprite | Entry | What it shows | Size | Graphics |
|---|---|---|---|---|
| SPRITE64 $8BCB | a blob | 24 by 17 | 64 | |
| SPRITE65 $8C33 | a blob | 24 by 17 | 65, 67 | |
| SPRITE66 $8C9B | a blob burst flat | 24 by 17 | 66 | |
| SPRITE68 $8E91 | a swarm of dots | 24 by 19 | 68 | |
| SPRITE69 $8F05 | a swarm of dots | 24 by 20 | 69, 71 | |
| SPRITE70 $8F7F | a swarm of dots | 24 by 21 | 70 | |
| SPRITE72 $8A63 | a dome, narrow | 24 by 20 | 72 | |
| SPRITE73 $8ADD | a dome | 24 by 20 | 73, 75 | |
| SPRITE74 $8B57 | a dome, wide | 24 by 19 | 74 | |
| SPRITE76 $8E07 | a long flat slug | 32 by 17 | 76 | |
| SPRITE77 $8D03 | a long flat slug | 32 by 17 | 77, 79 | |
| SPRITE78 $8D8D | a long flat slug | 32 by 15 | 78 |
Three pictures for four frames.
| Sprite | Entry | What it shows | Size | Graphics |
|---|---|---|---|---|
| SPRITE136 $7331 | a flaming face | 24 by 28 | 136 | |
| SPRITE137 $73DB | a flaming face, larger | 24 by 35 | 137, 139 | |
| SPRITE138 $74AF | a flaming face | 24 by 32 | 138 |
One set of four, played small to large for a thing vanishing and a villain dying, and large to small for a monster appearing.
| Sprite | Entry | What it shows | Size | Graphics |
|---|---|---|---|---|
| SPRITE12 $7B2F | a puff, smallest | 16 by 16 | 12, 131-132 | |
| SPRITE13 $7B71 | a puff | 16 by 16 | 13, 130, 133 | |
| SPRITE14 $7BB3 | a puff | 16 by 16 | 14, 129, 134 | |
| SPRITE15 $7BF5 | a puff, largest | 16 by 16 | 15, 128, 135 |
The faster walk and the hits back.
| Sprite | Entry | What it shows | Size | Graphics |
|---|---|---|---|---|
| SPRITE2 $7297 | a curled shape with a scroll on top: perhaps a winged boot | 32 by 19 | 2 | |
| SPRITE3 $7C37 | a flask | 16 by 16 | 3 |
Drawn only in the ending, at the screen positions of ENDING_RECORDS, and coloured by the attributes ENDING_PIT_FRONT gives them: the pieces are mostly mask, the dark of the pit, with lines of stone in white.
Put together by the game's DRAW_SPRITE_AT in the order the main loop updates the records, white on black as they are on the screen but for the colours; the second with one of the villains of the ending drawn between the back and the front, as it is while it sinks:
![]() the back and the front, where ENDING_RECORDS puts them | ![]() graphic 144 between them, placed by hand at x 100, y 80 |
| Sprite | Entry | What it shows | Size | Graphics |
|---|---|---|---|---|
| SPRITE152 $7017 | the front of the pit | 32 by 26 | 152 | |
| SPRITE153 $70E9 | a piece of the back of the pit | 16 by 21 | 153 | |
| SPRITE154 $713F | a piece of the back of the pit | 16 by 24 | 154 | |
| SPRITE155 $71A1 | a piece of the back of the pit | 16 by 28 | 155 | |
| SPRITE156 $7213 | a piece of the back of the pit | 16 by 20 | 156 | |
| SPRITE157 $7265 | a piece of the back of the pit | 16 by 12 | 157 |
No width and no height; graphics 0, 1, 23 and 31 name it.
| Sprite | Entry | What it shows | Size | Graphics |
|---|---|---|---|---|
| SPRITE0 $6FDA | nothing: the drawing code draws nothing | 0 by 0 | 0-1, 23, 31 |