Routines |
Prev: E5E4 | Up: Map | Next: E658 |
|
||||
Less "remove" and more "replace"; this routine erases the players cursor attributes, but it doesn't leave a hole - it replaces the attributes with the values they were prior to it being originally drawn.
This is the 4x4 block of attributes which were behind the cursor before it was initially painted.
|
||||
Remove_PlayerCursorAttributes | E63F | LD HL,$E5D0 | Load HL with SavedAttributesBlock. | |
This is a pointer to the starting attribute buffer location of the players cursor.
|
||||
E642 | LD DE,($E5E2) | Load DE with *Cursor_AttributePointer. | ||
The cursor block is 04x04 (04 rows of 04 bytes).
|
||||
E646 | LD B,$04 | Set a counter in B for 04 rows. | ||
Remove_PlayerCursorAttributes_Loop | E648 | PUSH BC | Stash the row counter on the stack. | |
E649 | LD BC,$0004 | Copy 0004 bytes from the stored attributes to the attribute buffer. | ||
E64C | LDIR | |||
One full row is 20 bytes, so this is 04 bytes less than one row. Hence this moves down one row, but back to the start of the line.
|
||||
E64E | EX DE,HL | Add 001C to the attribute buffer position. | ||
E64F | LD BC,$001C | |||
E652 | ADD HL,BC | |||
E653 | EX DE,HL | |||
E654 | POP BC | Restore the row counter from the stack. | ||
E655 | DJNZ Remove_PlayerCursorAttributes_Loop | Decrease the row counter by one and loop back to Remove_PlayerCursorAttributes_Loop until all the rows have been updated. | ||
E657 | RET | Return. |
Prev: E5E4 | Up: Map | Next: E658 |