;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; SPRITE_ROUTINE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; X_Speed dcb $00,$00 ; X speed (right,left) RETURN RTS START_HB_CODE JSR SUB_GET_DIR ; \ always face mario TYA ; | STA $157C,x ; / SPRITE_ROUTINE LDA $14C8,x ; return if sprite status != 8 CMP #$08 BNE RETURN JSR SUB_GFX LDA $9D ; return if sprites locked BNE RETURN JSR SUB_OFF_SCREEN_X0 ; only process sprite while on screen LDA $15AC,x ; Don't interact with Mario if timer's set BNE RETURN1 LDY $157C,x ;\ LDA X_Speed,y ; | Set X speed based on direction STA $B6,x ;/ JSL SpawnCust JSR powerup_routine Powerup_routine LDA $187A ;\ If touching Mario... BNE RETURN1 ; | JSL $01A7DC ; | BCC RETURN1 ; | JSR PowerupRoutine ;/ Run powerup routine STZ $14C8,x ; Erase sprite RETURN1 JSL $01802A ; Update position based on speed value RETURN RTS