Prev: 26587 Up: Map Next: 26712
26675: Redraw player ship
If the player's ship needs to move, erase and redraw it. The ypos adjustment typically comes from the keypress routine, and will be -1 to move a pixel left, or 1 to move a pixel right. This code is used in a more contrived manner to animate a new ship when an extra life is awarded.
Used by the routines at handle_inputs and new_player_ship.
Output
IX _PLAYER_XPOS
redraw_player_ship 26675 LD A,(_YPOS_ADJUST) Player ship position adjustment, -1, 0 or 1
26678 OR A Ship doesn't need to move, just return
26679 RET Z
26680 JP P,redraw_player_ship_0 1 has an odd number of bits. -1, even. A=0 if moving right, A=1 if moving left.
26683 XOR A
redraw_player_ship_0 26684 LD IX,_PLAYER_XPOS IX points to player ship pos, X
26688 CALL select_clear_player_ship_sprite Select clear sprite data based on A, into HL
26691 LD A,1 Mode clear
26693 CALL sprite_draw_or_clear Clear sprite side pixels, leaves HL at draw sprite data
26696 XOR A Mode set
26697 CALL sprite_draw_or_clear Draw sprite side pixels
26700 LD A,(_YPOS_ADJUST) Pick up adjustment again and add it to the current xpos value. Adding -1 or 1 makes it the correct position value. Then write it back out.
26703 LD B,A
26704 LD A,(_PLAYER_XPOS)
26707 ADD A,B
26708 LD (_PLAYER_XPOS),A
26711 RET
Prev: 26587 Up: Map Next: 26712