Prev: B090 Up: Map Next: B20E
B096: Object handlers, indexed by type
188 words, one per object type. The type byte of an object record is also its sprite number -- sprite_tbl has one word per type in the same order -- so one byte chooses both what an object does and what it looks like, and a handler animates its object by changing its type. jump_to_upd_object jumps through this.
Several types are drawn only in the status panel and never occupy the object table: the sun, the moon, the ends of their frame, the panel and border pieces and the lives icon. Their entries point at a bare RET or at a routine that only sets drawing offsets. Types 0 and 1 are not objects at all but the states of a free slot.
upd_sprite_jmp_tbl B096 DEFW no_update Type 0: empty slot
B098 DEFW no_update Type 1: an object that has just gone; it draws as nothing so its old image is wiped, and the renderer then frees the slot
B09A DEFW upd_2_4 Type 2: stone arch, the half that also nudges Sabreman into line with the doorway
B09C DEFW upd_3_5 Type 3: stone arch, the other half
B09E DEFW upd_2_4 Type 4: tree-room arch, the half that nudges Sabreman into the doorway
B0A0 DEFW upd_3_5 Type 5: tree-room arch, the other half
B0A2 DEFW upd_6_7 Type 6: rock, static
B0A4 DEFW upd_6_7 Type 7: plain block, static; at the end of the game each one left in the room becomes type 131
B0A6 DEFW upd_8 Type 8: portcullis at rest, deciding when to start moving (one moves at a time)
B0A8 DEFW upd_9 Type 9: portcullis moving; it kills what it lands on and crashes when it reaches the floor
B0AA DEFW upd_10 Type 10: a piece of room wall, static
B0AC DEFW upd_11 Type 11: a piece of room wall, static
B0AE DEFW upd_12_to_15 Type 12: a piece of room wall, static
B0B0 DEFW upd_12_to_15 Type 13: a piece of room wall, static
B0B2 DEFW upd_12_to_15 Type 14: a piece of room wall, static
B0B4 DEFW upd_12_to_15 Type 15: a piece of room wall, static
B0B6 DEFW upd_16_to_21_24_to_29 Type 16: Sabreman's legs, human, walking frame 0, first pair of facings
B0B8 DEFW upd_16_to_21_24_to_29 Type 17: Sabreman's legs, human, walking frame 1, first pair of facings
B0BA DEFW upd_16_to_21_24_to_29 Type 18: Sabreman's legs, human, walking frame 2, first pair of facings
B0BC DEFW upd_16_to_21_24_to_29 Type 19: Sabreman's legs, human, walking frame 3, first pair of facings
B0BE DEFW upd_16_to_21_24_to_29 Type 20: Sabreman's legs, human, walking frame 4, first pair of facings
B0C0 DEFW upd_16_to_21_24_to_29 Type 21: Sabreman's legs, human, walking frame 5, first pair of facings
B0C2 DEFW upd_22 Type 22: gargoyle, static and deadly
B0C4 DEFW upd_23 Type 23: spikes, static and deadly
B0C6 DEFW upd_16_to_21_24_to_29 Type 24: Sabreman's legs, human, walking frame 0, second pair of facings
B0C8 DEFW upd_16_to_21_24_to_29 Type 25: Sabreman's legs, human, walking frame 1, second pair of facings
B0CA DEFW upd_16_to_21_24_to_29 Type 26: Sabreman's legs, human, walking frame 2, second pair of facings
B0CC DEFW upd_16_to_21_24_to_29 Type 27: Sabreman's legs, human, walking frame 3, second pair of facings
B0CE DEFW upd_16_to_21_24_to_29 Type 28: Sabreman's legs, human, walking frame 4, second pair of facings
B0D0 DEFW upd_16_to_21_24_to_29 Type 29: Sabreman's legs, human, walking frame 5, second pair of facings
B0D2 DEFW upd_30_31_158_159 Type 30: upper body of the guard that walks round the room, one frame per facing
B0D4 DEFW upd_30_31_158_159 Type 31: upper body of the guard that walks round the room, one frame per facing
B0D6 DEFW upd_32_to_47 Type 32: Sabreman's upper body, human, walking frame 0, first pair of facings
B0D8 DEFW upd_32_to_47 Type 33: Sabreman's upper body, human, walking frame 1, first pair of facings
B0DA DEFW upd_32_to_47 Type 34: Sabreman's upper body, human, walking frame 2, first pair of facings
B0DC DEFW upd_32_to_47 Type 35: Sabreman's upper body, human, walking frame 3, first pair of facings
B0DE DEFW upd_32_to_47 Type 36: Sabreman's upper body, human, walking frame 4, first pair of facings
B0E0 DEFW upd_32_to_47 Type 37: Sabreman's upper body, human, walking frame 5, first pair of facings
B0E2 DEFW upd_32_to_47 Type 38: Sabreman's upper body, human, an occasional frame held for eight frames, first pair of facings
B0E4 DEFW upd_32_to_47 Type 39: Sabreman's upper body, human, an occasional frame held for eight frames, first pair of facings
B0E6 DEFW upd_32_to_47 Type 40: Sabreman's upper body, human, walking frame 0, second pair of facings
B0E8 DEFW upd_32_to_47 Type 41: Sabreman's upper body, human, walking frame 1, second pair of facings
B0EA DEFW upd_32_to_47 Type 42: Sabreman's upper body, human, walking frame 2, second pair of facings
B0EC DEFW upd_32_to_47 Type 43: Sabreman's upper body, human, walking frame 3, second pair of facings
B0EE DEFW upd_32_to_47 Type 44: Sabreman's upper body, human, walking frame 4, second pair of facings
B0F0 DEFW upd_32_to_47 Type 45: Sabreman's upper body, human, walking frame 5, second pair of facings
B0F2 DEFW upd_32_to_47 Type 46: Sabreman's upper body, human, an occasional frame held for eight frames, second pair of facings
B0F4 DEFW upd_32_to_47 Type 47: Sabreman's upper body, human, an occasional frame held for eight frames, second pair of facings
B0F6 DEFW upd_48_to_53_56_to_61 Type 48: Sabreman's legs, werewolf, walking frame 0, first pair of facings
B0F8 DEFW upd_48_to_53_56_to_61 Type 49: Sabreman's legs, werewolf, walking frame 1, first pair of facings
B0FA DEFW upd_48_to_53_56_to_61 Type 50: Sabreman's legs, werewolf, walking frame 2, first pair of facings
B0FC DEFW upd_48_to_53_56_to_61 Type 51: Sabreman's legs, werewolf, walking frame 3, first pair of facings
B0FE DEFW upd_48_to_53_56_to_61 Type 52: Sabreman's legs, werewolf, walking frame 4, first pair of facings
B100 DEFW upd_48_to_53_56_to_61 Type 53: Sabreman's legs, werewolf, walking frame 5, first pair of facings
B102 DEFW upd_54 Type 54: block that slides back and forth along X
B104 DEFW upd_55 Type 55: block that slides back and forth along Y
B106 DEFW upd_48_to_53_56_to_61 Type 56: Sabreman's legs, werewolf, walking frame 0, second pair of facings
B108 DEFW upd_48_to_53_56_to_61 Type 57: Sabreman's legs, werewolf, walking frame 1, second pair of facings
B10A DEFW upd_48_to_53_56_to_61 Type 58: Sabreman's legs, werewolf, walking frame 2, second pair of facings
B10C DEFW upd_48_to_53_56_to_61 Type 59: Sabreman's legs, werewolf, walking frame 3, second pair of facings
B10E DEFW upd_48_to_53_56_to_61 Type 60: Sabreman's legs, werewolf, walking frame 4, second pair of facings
B110 DEFW upd_48_to_53_56_to_61 Type 61: Sabreman's legs, werewolf, walking frame 5, second pair of facings
B112 DEFW upd_62 Type 62: the block tcdev called movable: stops every frame, falls, and blips the speaker every frame
B114 DEFW upd_63 Type 63: spiked ball that drops once, at random, one at a time; deadly
B116 DEFW upd_64_to_79 Type 64: werewolf upper body, walking frame 0, first pair of facings
B118 DEFW upd_64_to_79 Type 65: werewolf upper body, walking frame 1, first pair of facings
B11A DEFW upd_64_to_79 Type 66: werewolf upper body, walking frame 2, first pair of facings
B11C DEFW upd_64_to_79 Type 67: werewolf upper body, walking frame 3, first pair of facings
B11E DEFW upd_64_to_79 Type 68: werewolf upper body, walking frame 4, first pair of facings
B120 DEFW upd_64_to_79 Type 69: werewolf upper body, walking frame 5, first pair of facings
B122 DEFW upd_64_to_79 Type 70: werewolf upper body, an occasional frame, first pair of facings
B124 DEFW upd_64_to_79 Type 71: werewolf upper body, an occasional frame, first pair of facings
B126 DEFW upd_64_to_79 Type 72: werewolf upper body, walking frame 0, second pair of facings
B128 DEFW upd_64_to_79 Type 73: werewolf upper body, walking frame 1, second pair of facings
B12A DEFW upd_64_to_79 Type 74: werewolf upper body, walking frame 2, second pair of facings
B12C DEFW upd_64_to_79 Type 75: werewolf upper body, walking frame 3, second pair of facings
B12E DEFW upd_64_to_79 Type 76: werewolf upper body, walking frame 4, second pair of facings
B130 DEFW upd_64_to_79 Type 77: werewolf upper body, walking frame 5, second pair of facings
B132 DEFW upd_64_to_79 Type 78: werewolf upper body, an occasional frame, second pair of facings
B134 DEFW upd_64_to_79 Type 79: werewolf upper body, an occasional frame, second pair of facings
B136 DEFW upd_80_to_83 Type 80: ghost, wandering at random; deadly (bit 1 facing, bit 0 flapping)
B138 DEFW upd_80_to_83 Type 81: ghost, wandering at random; deadly (bit 1 facing, bit 0 flapping)
B13A DEFW upd_80_to_83 Type 82: ghost, wandering at random; deadly (bit 1 facing, bit 0 flapping)
B13C DEFW upd_80_to_83 Type 83: ghost, wandering at random; deadly (bit 1 facing, bit 0 flapping)
B13E DEFW upd_84 Type 84: table: falls, and stops after each push
B140 DEFW upd_85 Type 85: chest: falls; unlike the table, its handler does not stop it after a push
B142 DEFW upd_86_87 Type 86: flame that runs back and forth along X; deadly
B144 DEFW upd_86_87 Type 87: flame that runs back and forth along X; deadly
B146 DEFW upd_88_to_90 Type 88: the sun (drawn in the panel, never in the object table)
B148 DEFW upd_88_to_90 Type 89: the moon (drawn in the panel, never in the object table)
B14A DEFW upd_88_to_90 Type 90: left end of the sun and moon frame (panel only)
B14C DEFW upd_91 Type 91: block that sinks while something stands on it
B14E DEFW upd_92_to_95 Type 92: Sabreman changing between man and werewolf
B150 DEFW upd_92_to_95 Type 93: Sabreman changing between man and werewolf
B152 DEFW upd_92_to_95 Type 94: Sabreman changing between man and werewolf
B154 DEFW upd_92_to_95 Type 95: Sabreman changing between man and werewolf
B156 DEFW upd_96_to_102 Type 96: charm 0 of the seven, lying in a room
B158 DEFW upd_96_to_102 Type 97: charm 1 of the seven, lying in a room
B15A DEFW upd_96_to_102 Type 98: charm 2 of the seven, lying in a room
B15C DEFW upd_96_to_102 Type 99: charm 3 of the seven, lying in a room
B15E DEFW upd_96_to_102 Type 100: charm 4 of the seven, lying in a room
B160 DEFW upd_96_to_102 Type 101: charm 5 of the seven, lying in a room
B162 DEFW upd_96_to_102 Type 102: charm 6 of the seven, lying in a room
B164 DEFW upd_103 Type 103: extra life, lying in a room
B166 DEFW upd_104_to_110 Type 104: charm 0 dropped in the cauldron room, drifting to the cauldron
B168 DEFW upd_104_to_110 Type 105: charm 1 dropped in the cauldron room, drifting to the cauldron
B16A DEFW upd_104_to_110 Type 106: charm 2 dropped in the cauldron room, drifting to the cauldron
B16C DEFW upd_104_to_110 Type 107: charm 3 dropped in the cauldron room, drifting to the cauldron
B16E DEFW upd_104_to_110 Type 108: charm 4 dropped in the cauldron room, drifting to the cauldron
B170 DEFW upd_104_to_110 Type 109: charm 5 dropped in the cauldron room, drifting to the cauldron
B172 DEFW upd_104_to_110 Type 110: charm 6 dropped in the cauldron room, drifting to the cauldron
B174 DEFW upd_111 Type 111: extra life just collected; vanishes next frame
B176 DEFW upd_112_to_118_184 Type 112: death sparkle, frame 0
B178 DEFW upd_112_to_118_184 Type 113: death sparkle, frame 1
B17A DEFW upd_112_to_118_184 Type 114: death sparkle, frame 2
B17C DEFW upd_112_to_118_184 Type 115: death sparkle, frame 3
B17E DEFW upd_112_to_118_184 Type 116: death sparkle, frame 4
B180 DEFW upd_112_to_118_184 Type 117: death sparkle, frame 5
B182 DEFW upd_112_to_118_184 Type 118: death sparkle, frame 6
B184 DEFW upd_119 Type 119: death sparkle, last frame; vanishes next frame
B186 DEFW upd_120_to_126 Type 120: Sabreman materialising, frame 0
B188 DEFW upd_120_to_126 Type 121: Sabreman materialising, frame 1
B18A DEFW upd_120_to_126 Type 122: Sabreman materialising, frame 2
B18C DEFW upd_120_to_126 Type 123: Sabreman materialising, frame 3
B18E DEFW upd_120_to_126 Type 124: Sabreman materialising, frame 4
B190 DEFW upd_120_to_126 Type 125: Sabreman materialising, frame 5
B192 DEFW upd_120_to_126 Type 126: Sabreman materialising, frame 6
B194 DEFW upd_127 Type 127: Sabreman materialising, done: becomes the type saved at +16
B196 DEFW upd_128_to_130 Type 128: tree-trunk piece of a tree room's walls, static
B198 DEFW upd_128_to_130 Type 129: tree-trunk piece of a tree room's walls, static
B19A DEFW upd_128_to_130 Type 130: tree-trunk piece of a tree room's walls, static
B19C DEFW upd_131_to_133 Type 131: finale spark: rises circling the room, then homes on Sabreman and ends the game
B19E DEFW upd_131_to_133 Type 132: finale spark: rises circling the room, then homes on Sabreman and ends the game
B1A0 DEFW upd_131_to_133 Type 133: finale spark: rises circling the room, then homes on Sabreman and ends the game
B1A2 DEFW no_update Type 134: a piece of the status panel (panel only)
B1A4 DEFW no_update Type 135: a piece of the status panel (panel only)
B1A6 DEFW no_update Type 136: a piece of the status panel (panel only)
B1A8 DEFW no_update Type 137: a corner of the screen border (panel only)
B1AA DEFW no_update Type 138: an edge of the screen border (panel only)
B1AC DEFW no_update Type 139: an edge of the screen border (panel only)
B1AE DEFW no_update Type 140: the lives icon (panel only)
B1B0 DEFW upd_141 Type 141: the cauldron
B1B2 DEFW upd_142 Type 142: the cauldron's second sprite, with no size of its own
B1B4 DEFW upd_143 Type 143: block that crumbles away when stood on
B1B6 DEFW upd_144_to_149_152_to_157 Type 144: legs of a guard or the wizard, walking frame 0, first pair of facings
B1B8 DEFW upd_144_to_149_152_to_157 Type 145: legs of a guard or the wizard, walking frame 1, first pair of facings
B1BA DEFW upd_144_to_149_152_to_157 Type 146: legs of a guard or the wizard, walking frame 2, first pair of facings
B1BC DEFW upd_144_to_149_152_to_157 Type 147: legs of a guard or the wizard, walking frame 3, first pair of facings
B1BE DEFW upd_144_to_149_152_to_157 Type 148: legs of a guard or the wizard, walking frame 4, first pair of facings
B1C0 DEFW upd_144_to_149_152_to_157 Type 149: legs of a guard or the wizard, walking frame 5, first pair of facings
B1C2 DEFW upd_150_151 Type 150: upper body of the guard that walks back and forth along X, one frame per facing
B1C4 DEFW upd_150_151 Type 151: upper body of the guard that walks back and forth along X, one frame per facing
B1C6 DEFW upd_144_to_149_152_to_157 Type 152: legs of a guard or the wizard, walking frame 0, second pair of facings
B1C8 DEFW upd_144_to_149_152_to_157 Type 153: legs of a guard or the wizard, walking frame 1, second pair of facings
B1CA DEFW upd_144_to_149_152_to_157 Type 154: legs of a guard or the wizard, walking frame 2, second pair of facings
B1CC DEFW upd_144_to_149_152_to_157 Type 155: legs of a guard or the wizard, walking frame 3, second pair of facings
B1CE DEFW upd_144_to_149_152_to_157 Type 156: legs of a guard or the wizard, walking frame 4, second pair of facings
B1D0 DEFW upd_144_to_149_152_to_157 Type 157: legs of a guard or the wizard, walking frame 5, second pair of facings
B1D2 DEFW upd_30_31_158_159 Type 158: the wizard's upper body, one frame per facing
B1D4 DEFW upd_30_31_158_159 Type 159: the wizard's upper body, one frame per facing
B1D6 DEFW upd_160_to_163 Type 160: bubbles rising from the cauldron
B1D8 DEFW upd_160_to_163 Type 161: bubbles rising from the cauldron
B1DA DEFW upd_160_to_163 Type 162: bubbles rising from the cauldron
B1DC DEFW upd_160_to_163 Type 163: bubbles rising from the cauldron
B1DE DEFW upd_164_to_167 Type 164: repel spell, homing on Sabreman
B1E0 DEFW upd_164_to_167 Type 165: repel spell, homing on Sabreman
B1E2 DEFW upd_164_to_167 Type 166: repel spell, homing on Sabreman
B1E4 DEFW upd_164_to_167 Type 167: repel spell, homing on Sabreman
B1E6 DEFW upd_168_to_175 Type 168: picture of charm 0 over the cauldron, the one it wants next
B1E8 DEFW upd_168_to_175 Type 169: picture of charm 1 over the cauldron, the one it wants next
B1EA DEFW upd_168_to_175 Type 170: picture of charm 2 over the cauldron, the one it wants next
B1EC DEFW upd_168_to_175 Type 171: picture of charm 3 over the cauldron, the one it wants next
B1EE DEFW upd_168_to_175 Type 172: picture of charm 4 over the cauldron, the one it wants next
B1F0 DEFW upd_168_to_175 Type 173: picture of charm 5 over the cauldron, the one it wants next
B1F2 DEFW upd_168_to_175 Type 174: picture of charm 6 over the cauldron, the one it wants next
B1F4 DEFW upd_168_to_175 Type 175: would be the extra life over the cauldron; the code never makes it
B1F6 DEFW upd_176_177 Type 176: flickering fire; deadly
B1F8 DEFW upd_176_177 Type 177: flickering fire; deadly
B1FA DEFW upd_178_179 Type 178: ball bouncing up and down; deadly
B1FC DEFW upd_178_179 Type 179: ball bouncing up and down; deadly
B1FE DEFW upd_180_181 Type 180: flame that runs back and forth along Y; deadly
B200 DEFW upd_180_181 Type 181: flame that runs back and forth along Y; deadly
B202 DEFW upd_182_183 Type 182: ball that hops towards the werewolf and away from the man; deadly
B204 DEFW upd_182_183 Type 183: ball that hops towards the werewolf and away from the man; deadly
B206 DEFW upd_112_to_118_184 Type 184: crumbling block, vanishing
B208 DEFW upd_185_187 Type 185: crumbling block, last frame: zeroes the byte its +16 points at, then vanishes
B20A DEFW no_update Type 186: right end of the sun and moon frame (panel only)
B20C DEFW upd_185_187 Type 187: a charm destroyed where it met another object: zeroes its record, then vanishes
Objects made of two records -- Sabreman, the guards and the wizard -- keep the second at the next record up: a guard's upper body is followed by its legs, and its handler writes the legs' position and motion 32 bytes on. Sabreman is the other way round, legs first at object 0.
Prev: B090 Up: Map Next: B20E