Prev: 55188 Up: Map Next: 55347
55283: Check which spell has been cast
Follows the previous routine at 55188.
Check which (if any) spell, or spell type, has been cast/activated (rather than merely selected) - using spell number - from the spells list at 28156 and stored at 60140.
55283 LD A,(60140)
55286 CP 0 No spell cast, or MOVE spell in effect
55288 JP Z,55553
55291 CP 1 SERVANT spell
55293 JR Z,55347
55295 CP 8 HAIL spell
55297 JP Z,55502
55300 CP 12 WAYSTONE spell
55302 JP Z,55509
55305 CP 16 FREEZE spell
55307 JP Z,55522
55310 CP 17 SUMMON spell
55312 JP Z,55529
55315 CP 19 PORTAL spell
55317 JP Z,55536
Maroc has cast some other spell:
55320 LD A,(60359) Check the type of spell cast
55323 CP 2 Spell type 2 = spell that generates a controllable graphic, e.g. SERVANT, MISSILE, OPEN
55325 JP NZ,55553 If not one of these spell types, skip out of this routine for other checks
Spell has been cast that involves a controllable cursor:
  • Bit 7 of the spell info byte at 60362, if set, tells us this is a missile/bolt aiming cursor
  • If not set, it's a spell whose cursor position will need checking for room events/collisions (SERVANT, OPEN, REVEAL etc.)
55328 LD A,(60362) Get byte indicating spell cursor type
55331 CP 0 If not active, can skip to next routine
55333 JP Z,55553
55336 LD C,A Otherwise, temp store this value in the C register
55337 AND 128 Bit 7 of this byte is set for bolt spells (MISSILE, FIREBALL etc.)
55339 CP 0
55341 JP Z,55474 If NOT set, it's another sort of aiming cursor, so can jump out here and deal with this spell's potential event/collision actions
55344 JP 55553 If set, it's a bolt/missile type spell, fine to jump out of this routine
Prev: 55188 Up: Map Next: 55347