Prev: EA1D Up: Map Next: EAA1
EA34: Deactivate the currently active effect spell
The player has cast the same spell as the current active ongoing effect spell - this deactivates the effect.
Clear the active spell name from small scroll in bottom right of screen:
shield spell active
EA34 LD L,$F9 Low byte of screen display address for left-hand character in scroll
EA36 LD A,$07 7 characters to clear
EA38 LD B,$08 8 pixel lines in each character
EA3A LD H,$50 High byte of screen display address
EA3C LD (HL),$00 Clear display byte
EA3E INC H Move down one pixel
EA3F DJNZ $EA3C Repeat x 8 pixels
EA41 INC L Move right one character square
EA42 DEC A Repeat for 7 character squares
EA43 JR NZ,$EA38
Check which spell was deactivated, and reset the relevant effect accordingly:
EA45 LD A,($EAE9) Check which effect spell was activated - spell number (0-27) in list at 6DFC
EA48 CP $02 SHIELD spell
EA4A JR Z,$EA56
EA4C CP $0B PROTECT spell
EA4E JR Z,$EA56
EA50 CP $12 DEFENCE spell
EA52 LD A,$00
EA54 JR NZ,$EA58
EA56 LD A,$FF SHIELD, PROTECT and DEFENCE also have a graphic shimmering barrier effect, which will need to be deactivated/erased. Set flag (255) to indicate that any current on-screen graphics will get erased.
For 'effect' spells, the number of charges for the spell is reduced when the spell is deactivated, otherwise the final charge would make the effect permanent.
EA58 LD ($EAE9),A Set active 'effect' spell to 0, or 255 if SHIELD, PROTECT or DEFENCE.
EA5B LD A,$00
EA5D LD ($EBD5),A Spell no longer active, so set the ongoing energy drain (e.g. SHIELD) or heal (e.g. CHALICE) byte value to zero
EA60 LD A,($EBC8) Check number of charges for spell
EA63 CP $FF If unlimited charges, no need to decrease
EA65 JR Z,$EA72
Decrease number of spell charges
EA67 DEC A Decrement spell charges counter
EA68 LD ($EBC8),A ..and store new value.
EA6B CP $00 Out of spell charges?
EA6D JR NZ,$EA72
EA6F LD ($EBC5),A ...If so, set the spell's acquired/owned flag to 0, so that the spell gets removed from Maroc's spell list
Sets the attributes of a 2x2 square in the top right of the scroll (that may have been flashing), and a line of 16 characters of the bottom of the scroll, to INK 0 (black) PAPER 6 (yellow).
EA72 LD HL,$5A57 Top right of scroll
EA75 LD (HL),$30 Set to INK 0, PAPER 6
EA77 INC HL Adjacent square
EA78 LD (HL),$30 Ditto
EA7A LD HL,$5A77 Same for the 2 squares below
EA7D LD (HL),$30
EA7F INC HL
EA80 LD (HL),$30
It's not clear why the bottom row of the scroll also needs setting - it may be that originally active effect spell names appeared here, rather than over on the bottom right.
EA82 LD HL,$5AC7 Bottom left of scroll
EA85 LD B,$10 16 characters along the bottom of the scroll
EA87 LD (HL),$30 Set to INK 0, PAPER 6
EA89 INC HL
EA8A DJNZ $EA87 Continue for rest of the row
Copy current spell data (at EBC5) into corresponding spell data at 6DFC
EA8C LD HL,$EBC5 Spell data buffer
EA8F LD DE,($EAE7) Get spell data address pointer to spell in list at 6DFC
EA93 LD BC,$0010 16 bytes of data to copy
EA96 LDIR
EA98 LD A,$00 Set spell selection status byte to 0
EA9A LD ($EAE1),A
EA9D CALL $DEF9 Clear all of the scroll text
This entry point is used by the routines at E77E, E9DD and EA1D.
EAA0 RET
Prev: EA1D Up: Map Next: EAA1