If it helps, here is the code:
Code: Select all
;====================================================================================
;Bullet
;====================================================================================
.proc bullet
rep #$30 ; A=16, X/Y=16
ldx ObjectTable+6,y
jmp (BulletIdentificationTable,x) ;jump to the code that corresponds with the object
.endproc
;====================================================================================
BulletIdentificationTable:
.word bulletright,bulletleft
;====================================================================================
.proc bulletright
lda ObjectTable+2,y
cmp #256
bcs terminate_bullet
clc
adc #$0A
sta ObjectTable+2,y
lda Bullet1MetaspriteTableSize ; Load number of Metasprites
sta MetaspriteCount ; ...and store it in MetaspriteCount
ldx #Bullet1MetaspriteTable ; Offset into MetaspriteTable
stx MetaspriteTableOffset
lda ObjectTable+2,y
sta MetaspriteXPosition
lda ObjectTable+4,y
sta MetaspriteYPosition
stz MetaspriteDirection
jsr start_metasprite ; jump to start_metasprite to build metasprites
rts
terminate_bullet:
lda #$0000
sta ObjectTable,y
rts
.endproc
;====================================================================================
.proc bulletleft
lda ObjectTable+2,y
cmp #256
bcs terminate_bullet
sec
sbc #$0A
sta ObjectTable+2,y
lda Bullet1MetaspriteTableSize ; Load number of Metasprites
sta MetaspriteCount ; ...and store it in MetaspriteCount
ldx #Bullet1MetaspriteTable ; Offset into MetaspriteTable
stx MetaspriteTableOffset
lda ObjectTable+2,y
sta MetaspriteXPosition
lda ObjectTable+4,y
sta MetaspriteYPosition
lda #$0001
sta MetaspriteDirection
jsr start_metasprite ; jump to start_metasprite to build metasprites
rts
terminate_bullet:
lda #$0000
sta ObjectTable,y
rts
.endproc