Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- !HP = #04 ; BOOM-BOOM HP - Decimal, not hex
- !TILE = $2A
- YSpeedtable: db $0C,$F4
- YAcceleration: db $01,$FF
- frm:
- db $02,$03,$04,$05,$04,$03
- frmfly:
- db $06,$09,$08,$07
- frmhurt:
- db $0A,$0B
- Xspd:
- db $10,$F0
- Xspd2:
- db $18,$E8
- macro InitPointer(address)
- LDA <address>,x
- JSL $0086DF|!BankB
- dw INIT1
- dw INIT2
- dw INIT3
- endmacro
- macro InitRoutine(c2val,yspd,xspd)
- JSR FaceMario
- LDA #<c2val>
- STA !C2,x
- LDA #$10
- STA !154C,x
- LDA #<yspd>
- STA !AA,x
- LDY !157C,x
- LDA <xspd>,y
- STA !B6,x
- endmacro
- print "INIT ",pc
- JSR FaceMario
- STZ !1602,x
- LDA #$60
- STA !154C,x
- RTL
- print "MAIN ",pc
- PHB
- PHK
- PLB
- JSR Run
- PLB
- RTL
- FaceMario:
- %SubHorzPos()
- TYA
- STA !157C,x
- Return:
- RTS
- Run:
- JSR Graphics
- LDA $9D
- BNE Return
- LDA !14C8,x
- CMP #$08
- BNE Return
- %SubOffScreen()
- LDA !C2,x
- JSL $0086DF|!BankB
- dw boomstart1
- dw boomstart2
- dw boom1
- dw boom2
- dw boom3
- dw boomhurt
- dw boomdead
- dw genSphere
- thing1234:
- INC !1528,x
- JSL $01AA33|!BankB
- JSL $01AB99|!BankB
- LDA #$28
- STA $1DFC|!Base2
- LDA #$02
- STA $1DF9|!Base2
- LDA !1528,x
- CMP !HP
- BCS stof2
- LDA #$05
- STA !C2,x
- STZ !B6,x
- LDA #$60
- STA !154C,x
- RTS
- stof2:
- LDA #$06
- STA !C2,x
- STZ !B6,x
- LDA #$B0
- STA !1540,x
- RTS
- Interact:
- JSL $01A7DC|!BankB
- BCS hurt
- RTS
- hurt:
- %SubVertPos()
- LDA $0E
- CMP #$E6
- BMI thing1234
- JSL $00F5B7|!BankB
- RTS
- boom1:
- JSL $01802A|!BankB
- JSR Interact
- JSL $019138|!BankB
- LDA !1588,x
- AND #$03
- BEQ +
- JMP FlipDir
- +
- LDA !151C,x
- LSR #2
- TAY
- LDA frm,y
- STA !1602,x
- LDA $14
- AND #$03
- BEQ RETURN
- LDA !151C,x
- CMP #$0A
- BNE +
- STZ !151C,x
- RTS
- +
- INC !151C,x
- RTS
- HurtMario:
- JSL $00F5B7|!BankB
- RETURN: RTS
- boomstart1:
- JSL $01802A|!BankB
- JSL $01A7DC|!BankB
- BCS HurtMario
- STZ !1602,x
- LDA !154C,x
- BNE .End
- INC !C2,x
- LDA #$0A
- STA !154C,x
- .End
- RTS
- boomstart2:
- JSL $01802A|!BankB
- JSL $01A7DC|!BankB
- BCS HurtMario
- LDA #$01
- STA !1602,x
- LDA !154C,x
- BNE RETURN
- LDA !1528,x
- CMP #$02
- BCS stuffer
- %InitPointer(!extra_prop_1)
- stuffer:
- %InitPointer(!extra_prop_2)
- INIT1:
- %InitRoutine($02,$D0,Xspd)
- RTS
- INIT2:
- %InitRoutine($03,$C0,Xspd)
- STZ !1570,x
- STZ !187B,x
- LDA #$F0
- STA !163E,x
- RTS
- INIT3:
- %InitRoutine($04,$C0,Xspd2)
- LDA #$80
- STA !163E,x
- RTS
- FlipDir:
- LDA !B6,x
- EOR #$FF
- STA !B6,x
- RTS
- boom2:
- JSR Interact
- LDA $14
- LSR #2
- AND #$03
- TAY
- LDA frmfly,Y
- STA !1602,x
- JSL $019138|!BankB
- LDA !1588,x
- AND #$03
- BNE FlipDir
- JSL $01801A|!BankB
- JSL $018022|!BankB
- LDA $187B|!Base2,x
- BNE stuff2
- LDA !14D4,x
- XBA
- LDA !D8,x
- REP #$20
- CMP.w #$00F0
- SEP #$20
- BCS DoRise
- STZ !AA,x
- INC !187B,x
- DoRise:
- RTS
- otherapp:
- LDA !1564,x
- BNE +
- LDA #$A0
- STA !163E,x
- STA !1570,x
- JMP INIT2
- stuff2:
- LDA !1570,x
- BNE otherapp
- LDA !163E,x
- BEQ dothing35
- LDA !1FD6,x ;Load something
- AND #$01 ;AND #$01
- TAY ;Use as index for acceleration table
- LDA !AA,x ;
- CLC ; |Load Y speed
- ADC YAcceleration,y ; |Accelerate it
- STA !AA,x ;/
- CMP YSpeedtable,y ;If it didn't reach the desired Y speed
- BNE + ;Continue processing the sprite
- INC !1FD6,x ;If it reached the desired speed, change Y direction
- +
- RTS
- dothing35:
- INC !1570,x
- LDA #$50
- STA !1564,x
- LDA !14E0,x
- XBA
- LDA !E4,x
- REP #$20
- SEC
- SBC $94
- STA $00
- SEP #$20
- LDA !14D4,x
- XBA
- LDA !D8,x
- REP #$20
- SEC
- SBC $96
- SEC
- SBC #$0010
- STA $02
- SEP #$20
- LDA #$20
- %Aiming()
- LDA $00
- STA !B6,x
- LDA $02
- STA !AA,x
- RTS
- boom3:
- JSR boom1
- LDA !163E,x
- BNE .Return
- LDA #$B0
- STA !AA,x
- LDA #$80
- STA !163E,x
- .Return
- RTS
- boomhurt:
- JSL $01802A|!BankB
- LDA !154C,x
- BEQ thing4
- LDA $14
- LSR #2
- AND #$01
- TAY
- LDA frmhurt,y
- STA !1602,x
- RTS
- thing4:
- STZ !C2,x
- STZ !1602,x
- LDA #$60
- STA !154C,x
- RTS
- boomdead:
- JSL $01802A|!BankB
- LDA !1540,x
- BEQ SphereINIT
- LDA #$0A
- STA !1602,x
- RTS
- SphereINIT:
- LDA #$10
- STA $1DF9|!Base2
- STZ $00
- STZ $01
- LDA #$1C
- STA $02
- LDA #$01
- %SpawnSmoke()
- LDA #$07
- STA !C2,x
- LDA #$B8
- STA !AA,x
- RTS
- genSphere:
- JSL $01802A|!BankB
- LDA $9D
- BNE RETURN2
- JSR ContactSph
- LDA $14
- AND #$07
- BEQ RETURN2
- PHK
- PER $0006|!Base2
- PEA $B456|!Base2-1
- JML $01B159|!BankB ; Sparkles routine
- ContactSph:
- JSL $01A7DC|!BankB
- BCC RETURN2
- LDA #$FF
- STA $1493|!Base2
- LDA #$0B
- STA $1DFB|!Base2
- STZ !14C8,x
- DEC $13C6|!Base2
- RETURN2:
- RTS ; return
- TILEMAP:
- db $00,$00,$20,$20
- db $40,$40,$60,$60
- db $02,$08,$22,$28
- db $04,$06,$24,$26
- db $06,$04,$26,$24
- db $08,$02,$28,$22
- db $42,$44,$62,$64
- db $44,$42,$64,$62
- db $46,$48,$66,$68
- db $48,$46,$68,$66
- db $0A,$0A,$4A,$6A
- db $0A,$0A,$6A,$4A
- XDISP:
- db $F8,$08,$F8,$08
- YDISP:
- db $F0,$F0,$00,$00
- PROP:
- db $0D,$4D,$0D,$4D
- Graphics:
- %GetDrawInfo()
- LDA !C2,x
- CMP #$07
- BNE NormalGFX
- LDA $00
- STA $0300|!Base2,y
- LDA $01
- STA $0301|!Base2,y
- LDA #!TILE
- STA $0302|!Base2,y
- LDA #$0F
- ORA $64
- STA $0303|!Base2,y
- LDY #$02
- LDA #$00
- BRA DrawSprite
- NormalGFX:
- LDA !1602,x
- ASL #2
- STA $02
- LDA $1540|!Base2,x
- STA $03
- LDX #$03
- Loop:
- STX $04
- LDA $00
- CLC
- ADC XDISP,x
- STA $0300|!Base2,y
- LDA $01
- CLC
- ADC YDISP,x
- STA $0301|!Base2,y
- TXA
- CLC
- ADC $02
- TAX
- LDA TILEMAP,x
- STA $0302|!Base2,y
- LDX $04
- LDA PROP,x
- ORA $64
- STA $0303|!Base2,y
- LDA $03
- BEQ NextTile
- LDA $14
- LSR #2
- AND #$07
- TAX
- LDA $0303|!Base2,y
- AND #$F1
- ORA FlashTbl,x
- STA $0303|!Base2,y
- LDX $04
- NextTile:
- INY #4
- DEX
- BPL Loop
- LDX $15E9|!Base2
- LDY #$02
- LDA #$03
- DrawSprite:
- JSL $01B7B3|!BankB
- RTS
- FlashTbl:
- db $0C,$04,$0C,$06,$0C,$08,$0C,$0A
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement