Add multiple enemy shots.

This commit is contained in:
Colin McMillen 2015-06-01 00:18:03 -04:00
parent 4bf0033962
commit 2bb1bc161d
2 changed files with 22 additions and 9 deletions

View File

@ -13,7 +13,7 @@
; 0030-003F: (x, y) velocities of each of the 8 possible shot states. ; 0030-003F: (x, y) velocities of each of the 8 possible shot states.
; 0040-009F: {sprite, x, y, x-velocity, y-velocity, unused} per player shot. ; 0040-009F: {sprite, x, y, x-velocity, y-velocity, unused} per player shot.
; If sprite is 0, the shot is disabled. ; If sprite is 0, the shot is disabled.
; 00A0-00FF: As above, for enemy shots. ; 00A0-015F: As above, for enemy shots.
; [gap] ; [gap]
; Sprite table buffers -- copied each frame to OAM during VBlank, using DMA. ; Sprite table buffers -- copied each frame to OAM during VBlank, using DMA.
; 1000-11FF: table 1 (4 bytes each: x/y coord, tile #, flip/priority/palette) ; 1000-11FF: table 1 (4 bytes each: x/y coord, tile #, flip/priority/palette)
@ -34,7 +34,7 @@
.define playerShotArray $40 .define playerShotArray $40
.define playerShotArrayLength 16 .define playerShotArrayLength 16
.define enemyShotArray $A0 .define enemyShotArray $A0
.define enemyShotArrayLength 16 .define enemyShotArrayLength 32
.define shotSize 6 .define shotSize 6
.define numSprites 128 .define numSprites 128

View File

@ -488,22 +488,35 @@ UpdateShotCooldown:
SpawnEnemyShots: SpawnEnemyShots:
lda vBlankCounter lda vBlankCounter
bit #%00111111 bit #%00001111
beq + beq +
rts rts
+
ldy #0
-
lda enemyShotArray, Y
cmp #0
beq +
.rept 6
iny
.endr
cpy #(enemyShotArrayLength * shotSize)
bne -
rts ; Too many shots; bail.
+ +
lda #12 ; Sprite number. lda #12 ; Sprite number.
sta enemyShotArray sta enemyShotArray, Y
lda #254 lda #254
sta enemyShotArray + 1 ; x. sta enemyShotArray + 1, Y ; x.
lda #((224 - 32) / 2) lda #((224 - 32) / 2)
and #%01111111 and #%01111111
sta enemyShotArray + 2 ; y. sta enemyShotArray + 2, Y ; y.
lda #-6 lda #-4
sta enemyShotArray + 3 ; x-velocity. sta enemyShotArray + 3, Y ; x-velocity.
GetRandomByte GetRandomByte
and #%00000111 ; [0, 7] and #%00000111 ; [0, 7]
@ -513,7 +526,7 @@ SpawnEnemyShots:
bne + bne +
lda #0 ; [-3, 3] with 2x chance of zero. lda #0 ; [-3, 3] with 2x chance of zero.
+ +
sta enemyShotArray + 4 ; y-velocity. sta enemyShotArray + 4, Y ; y-velocity.
rts rts