Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- !explodeTime = $FF ; frames until the bob-omb explodes
- !xSpeed = $10 ; x speed to give the spawned bob-omb
- !shootTime = $FF ; frames between firing
- !xOff = $04 ; x offset from the shooter to spawn the bomb
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- print "INIT ",pc
- LDA #!shootTime
- STA $1540,x
- RTL
- print "MAIN ",pc
- PHB
- PHK
- PLB
- JSR Main
- PLB
- RTL
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- xOffs:
- db !xOff, $100-!xOff
- db $00,$FF
- Main:
- JSR SubOffscreenX0
- LDA $1540,x
- ORA $9D
- BNE Return
- LDA #!shootTime
- STA $1540,x
- JSR SubHorzPos
- LDA xOffs,y
- STA $00
- LDA xOffs+2,y
- STA $01
- LDA $186C,x
- BNE Return
- JSL $02A9DE
- BMI Return
- LDA #$09
- STA $14C8,y
- LDA #!SpriteNumber
- STA $009E,y
- LDA $E4,x
- CLC
- ADC $00
- STA $00E4,y
- LDA $14E0,x
- CLC
- ADC $01
- STA $14E0,y
- LDA $D8,x
- STA $00D8,y
- LDA $14D4,x
- STA $14D4,y
- PHX
- TYX
- JSL $07F7D2
- LDA #!explodeTime
- STA $1540,x
- LDA #!xSpeed
- STA $B6,x
- PLX
- Return:
- RTS
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- SubHorzPos:
- LDY.b #$00
- LDA $D1
- SEC
- SBC $E4,X
- STA $0F
- LDA $D2
- SBC.w $14E0,X
- BPL +
- INY
- +
- RTS
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- Table1: db $0C,$1C
- Table2: db $01,$02
- Table3: db $40,$B0
- Table6: db $01,$FF
- Table4: db $30,$C0,$A0,$C0,$A0,$F0,$60,$90,$30,$C0,$A0,$80,$A0,$40,$60,$B0
- Table5: db $01,$FF,$01,$FF,$01,$FF,$01,$FF,$01,$FF,$01,$FF,$01,$00,$01,$FF
- SubOffscreenX0:
- STZ $03
- JSR SubIsOffscreen
- BEQ ReturnSOS
- LDA $5B
- LSR
- BCS VerticalLevel
- LDA $D8,x
- CLC
- ADC #$50
- LDA $14D4,x
- ADC #$00
- CMP #$02
- BPL EraseSprite
- LDA $167A,x
- AND #$04
- BNE ReturnSOS
- LDA $13
- AND #$01
- ORA $03
- STA $01
- TAY
- LDA $1A
- CLC
- ADC Table4,y
- ROL $00
- CMP $E4,x
- PHP
- LDA $1B
- LSR $00
- ADC Table5,y
- PLP
- SBC $14E0,x
- STA $00
- LSR $01
- BCC Label20
- EOR #$80
- STA $00
- Label20:
- LDA $00
- BPL ReturnSOS
- EraseSprite:
- LDA $14C8,x
- CMP #$08
- BCC KillSprite
- LDY $161A,x
- CPY #$FF
- BEQ KillSprite
- LDA #$00
- STA $1938,y
- KillSprite:
- STZ $14C8,x
- ReturnSOS:
- RTS
- VerticalLevel:
- LDA $167A,x
- AND #$04
- BNE ReturnSOS
- LDA $13
- LSR
- BCS ReturnSOS
- AND #$01
- STA $01
- TAY
- LDA $1C
- CLC
- ADC Table3,y
- ROL $00
- CMP $D8,x
- PHP
- LDA $1D
- LSR $00
- ADC Table6,y
- PLP
- SBC $14D4,x
- STA $00
- LDY $02
- BEQ Label22
- EOR #$80
- STA $00
- Label22:
- LDA $00
- BPL ReturnSOS
- BMI EraseSprite
- SubIsOffscreen:
- LDA $15A0,x
- ORA $186C,x
- RTS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement