diff --git a/equates.s b/equates.s index 557cad0..2d4b7dc 100644 --- a/equates.s +++ b/equates.s @@ -70,6 +70,7 @@ JD_OWNER = 146 JD_FACING = 148 JD_SCRATCH = 150 JD_AGE = 152 +JD_DEPLOYDELAY = 154 MAXPROJECTILES = 3 diff --git a/fan.s b/fan.s index 1b6012a..f335c02 100644 --- a/fan.s +++ b/fan.s @@ -8,7 +8,7 @@ FANRANGE = 100 ; In pixels FANMAGNITUDE = $20 ; 12.4 fixed point speed delta, in pixels FAN_AGE = 4 - + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; deployFan ; @@ -27,6 +27,9 @@ deployFan: sta projectileData+JD_VX,y sta projectileData+JD_VY,y + lda #1 + sta projectileData+JD_DEPLOYDELAY,y ; Let player admire new fan + RESTORE_AY rts @@ -81,7 +84,7 @@ updateFan: sec sbc #GAMEOBJECTHEIGHT sta gameObjectPool+GO_POSY,x - + updateFanDone: RESTORE_AXY rts @@ -148,6 +151,13 @@ renderFan: lda #14 jsr renderGameObject + ; Do deployment delay after first render + lda projectileData+JD_DEPLOYDELAY,y + beq renderFanDone + jsr delayLong + lda #0 + sta projectileData+JD_DEPLOYDELAY,y + renderFanDone: RESTORE_AXY rts diff --git a/gscats.2mg b/gscats.2mg index d6cc4d4..8047317 100644 Binary files a/gscats.2mg and b/gscats.2mg differ diff --git a/projectile.s b/projectile.s index 9b1e65e..a680d54 100644 --- a/projectile.s +++ b/projectile.s @@ -26,8 +26,9 @@ projectileData: .word 0 ; Facing (0,1) = (+X,-X) .word 0 ; Scratch space for subclasses .word 0 ; Age (in turns) + .word 0 ; Deployment delay needed? - .repeat 102 + .repeat 100 .byte 0 ; Padding to 256-byte boundary .endrepeat diff --git a/utility.s b/utility.s index f0ed556..6634977 100644 --- a/utility.s +++ b/utility.s @@ -180,3 +180,24 @@ delayShortInner: RESTORE_AXY rts + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; delayLong +; Sleeps for long time (about 1.5 sec, but not calculated as such) +; +delayLong: + SAVE_AXY + + ldy #$03 ; Loop a bit +delayLongOuter: + ldx #$ff +delayLongInner: + jsr delayShort + dex + bne delayLongInner + dey + bne delayLongOuter + + RESTORE_AXY + rts