Prev: C1FD Up: Map Next: C29A
C28A: Move a screen address up one pixel line
Used by the routine at DRAW_VILLAINS.
Within a character cell the high byte goes down one. Out of the top of a cell the low byte goes up a character row, and the eight the high byte borrowed are put back -- unless that takes the address out of the top of a third of the screen, when the borrow is just what is needed.
Input
DE a screen address
Output
DE the one a line above
SCREEN_LINE_UP C28A DEC D within the cell: done
C28B LD A,D
C28C CPL
C28D AND $07
C28F RET NZ
C290 LD A,E up a character row; out of the top of the third: done
C291 SUB $20
C293 LD E,A
C294 RET C
C295 LD A,D still in the third: the high byte back up by eight
C296 ADD A,$08
C298 LD D,A
C299 RET
Prev: C1FD Up: Map Next: C29A