LDA gamepad
AND #%00010000 ;; if UP is pressed
BNE +
RTS ;; if not, stop the script
canShoot:
LDX player1_object
;;; IF YOU WANT TO USE AN SPECIFIC ANIMATION / ACTION STEP WHEN SHOOTING, comment out the following 3 lines:
;;; check if already shooting (assuming the shoot action step is 05)
;GetCurrentActionType player1_object
;CMP #$05
;BNE notAlreadyShooting
JMP checkIfCanShoot
notAlreadyShooting:
;;; IF YOU WANT TO USE AN SPECIFIC ANIMATION / ACTION STEP WHEN SHOOTING, comment out the following 1 line:
;;; if not already shooting, change it's action step (assuming the shoot action step is 05)
;ChangeObjectState #$05, #$02
;;; if you want your player stops when he's shooting, comment out the following lines:
;LDA Object_movement,x
;AND #%00001111
;STA Object_movement,x
;LDA #$00
;STA Object_h_speed_hi,x
;STA Object_h_speed_lo,x
;STA Object_v_speed_hi,x
;STA Object_v_speed_lo,x
;; if was already shooting
checkIfCanShoot:
;; will check if the weapon is charged (if Ammo > 0) :
LDA myAmmo
BNE continueShooting ;; if not equal to 0, we can shoot
;;if no Ammo, we're done here.
RTS
;; if enought Ammo we can continue shooting:
continueShooting:
LDA Object_movement,x
AND #%00000111
STA temp2
TAY
LDA Object_x_hi,x
SEC
SBC #$08 ;; width of projectile
STA temp
LDA Object_scroll,x
SBC #$00
STA temp3
LDA temp
;;; offset x for creation
CLC
ADC projOffsetTableX,y
STA temp
LDA temp3
ADC #$00
STA temp3
LDA Object_y_hi,x
CLC
ADC projOffsetTableY,y
sec
sbc #$08 ;; height of projectile
STA temp1
CreateObject temp, temp1, #OBJECT_PLAYER_PROJECTILE, #$00, temp3
;;;; x is now the newly created object's x.
LDA Object_movement,x
ORA temp2
STA Object_movement,x
LDY temp2
LDA directionTable,y
ORA Object_movement,x
STA Object_movement,x
;; start Updating Ammo
DEC myAmmo
LDA myAmmo
;;; we also need to set up the routine to update the HUD
;; for this to work right, health must be a "blank-then-draw" type element.
STA hudElementTilesToLoad
LDA #$00
STA hudElementTilesMax
UpdateHud HUD_myAmmo
;; finished Updating Ammo
;PlaySound #SND_SHOOT
doneShooting:
RTS