Prev: 29690 Up: Map Next: 29763
29709: Animate puff of smoke then draw a character in position
Only called if high bit of Magic Knight's current room is set
Used by the routine at 29576.
Input
A Magic Knight's current room
IX Pointer to position data for this character (3 bytes: screen number, x-coordinate, y-coordinate)
29709 LD E,(IX+0) Load character's room index into E
29712 RES 7,E Reset the most significant bit
29714 CP E If new room index is different from Magic Knight's then...
29715 RET NZ ...return...
29716 RES 7,(IX+0) ...else reset high bit of character's room index
29720 PUSH BC Store BC
29721 LD C,63 Load C with 63 (index of first frame of puff of smoke animation)
29723 PUSH BC Store BC (C = index of puff of smoke)
29724 CALL 29690 Load character's coordinates into BC and graphic lookup index into A and draw to screen
29727 POP BC Restore BC (C = index of puff of smoke)
29728 LD B,5 Set B to 5 (as there are six frames we need to loop 5 times)
29730 PUSH BC Store BC (C = index of puff of smoke)
29731 HALT Wait for interrupts...
29732 HALT ...
29733 HALT ...
29734 HALT ...
29735 HALT ...
29736 HALT ...
29737 CALL 29690 Load object's coordinates into BC and graphic lookup index into A and draw to screen
29740 POP BC Restore BC (C = index of puff of smoke)
29741 INC C Advance C by one (to point to next frame of puff of smoke animation)
29742 PUSH BC Store BC (C = index of puff of smoke)
29743 CALL 29690 Load object's coordinates into BC and graphic lookup index into A and draw to screen
29746 POP BC Restore BC (C = index of puff of smoke)
29747 DJNZ 29730 Decrease B and loop back for next frame
29749 HALT Wait for interrupts...
29750 HALT ...
29751 HALT ...
29752 HALT ...
29753 HALT ...
29754 HALT ...
29755 CALL 29690 Load object's coordinates into BC and graphic lookup index into A and draw to screen
29758 POP BC Restore BC
29759 CALL 29680 Draw character to screen
29762 RET Return
Prev: 29690 Up: Map Next: 29763