;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;? Block ; ;Set it to act like tile 129 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; JMP MarioBelow : JMP MarioAbove : JMP MarioSide : JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP MarioFireBall MarioBelow: LDA #$20 STA $7D LDA #$09 STA $1DFC JSR SetSpriteCoord1 LDA $13 AND #$03 CLC ADC #$04 JSR SpawnSprite MarioCape: SpriteV: SpriteH: MarioFireBall: MarioAbove: MarioSide: RTL SpawnSprite: PHX PHP SEP #$30 PHA LDX #$0B SpwnSprtTryAgain: LDA $14C8,x ;Sprite Status Table BEQ SpwnSprtSet DEX CPX #$FF BEQ SpwnSprtClear BRA SpwnSprtTryAgain SpwnSprtClear: DEC $1861 BPL SpwnSprtExist LDA #$01 STA $1861 SpwnSprtExist: LDA $1861 CLC ADC #$0A TAX SpwnSprtSet: STX $185E LDA #$0A STA $14C8,x ;Sprite Status Table PLA STA $9E,x ;Sprite Type JSL $07F7D2 ; reset sprite properties INC $15A0,x ;"Sprite off screen" flag, horizontal LDA $9A ;Sprite creation: X position (low) STA $E4,x ;Sprite Xpos Low Byte LDA $9B STA $14E0,x ;Sprite Xpos High Byte LDA $98 ;Sprite creation: Y position (low) SEC : SBC #$10 STA $D8,x ;Sprite Ypos Low Byte LDA $99 ;Sprite creation: Y position (high) STA $14D4,x ;Sprite Ypos High Byte LDA #$3E STA $1540,x ;Sprite Spin Jump Death Frame Counter LDA #$A0 STA $AA,x ;Sprite Y Speed LDA #$2C STA $144C,x LDA $190F,x ;Sprite Properties BPL SpwnSprtProp LDA #$10 STA $15AC,x SpwnSprtProp: PLP PLX RTS SetSpriteCoord1: PHP REP #$20 LDA $98 AND #$FFF0 STA $98 LDA $9A AND #$FFF0 STA $9A PLP RTS