Prev: 39829 Up: Map Next: 39933
39883: Draw a character
Used by the routines at 39795 and 39829.
Input
C Index of character to draw
IX Pointer to position data
39883 PUSH BC Store BC
39884 PUSH IX Store IX
39886 LD A,C Load A with character's index...
39887 LD (39905),A ...store in operand of instruction at 39904...
39890 LD E,4 ...and point HL at this character's attribute value (in characters' current stats table)...
39892 CALL 45406 ...
39895 LD A,(HL) Load character's attribute into A...
39896 LD (39943),A ...and modify instruction at 39942 with this value
39899 INC HL Advance HL to character graphic index...
39900 LD A,(HL) ...and load value into A
39901 OR A If this is not zero...
39902 JR NZ,39909 ...then skip ahead to 39909 (i.e. draw the character)
The operand of the instruction at 39904 represents the index of the character to draw. This is modified by the instruction at 39887.
39904 LD A,0 If character index is not zero (see trivia)...
39906 OR A ...i.e. not Off-White...
39907 JR NZ,39929 ...then skip ahead to 39929 (i.e. don't draw the character)
39909 LD C,(IX+1) Load C with character's x-coordinate (characters)
39912 LD B,(IX+2) Load B with character's y-coordinate (characters)
39915 PUSH IX Store IX (pointer to character's entry in table of characters' current positions)
39917 CALL 63504 Draw the graphic with lookup index A at character coordinates (C, B) with width 2 and height 4
39920 POP IX Restore IX (pointer to character's entry in table of characters' current positions)
39922 LD A,(23706) If player-attribute-update flag is set (player attribute update mode)...
39925 OR A ...
39926 CALL NZ,39933 ...then paint the character's attributes
39929 POP IX Restore IX
39931 POP BC Restore BC
39932 RET Return
Prev: 39829 Up: Map Next: 39933