diff --git a/Sprites/Enemies/puffstool.asm b/Sprites/Enemies/puffstool.asm index 47999a4..dd39f66 100644 --- a/Sprites/Enemies/puffstool.asm +++ b/Sprites/Enemies/puffstool.asm @@ -27,153 +27,151 @@ !ImperviousArrow = 00 ; 01 = Impervious to arrows !ImpervSwordHammer = 00 ; 01 = Impervious to sword and hammer attacks !Boss = 00 ; 00 = normal sprite, 01 = sprite is a boss + %Set_Sprite_Properties(Sprite_Puffstool_Prep, Sprite_Puffstool_Long) ; ========================================================= Sprite_Puffstool_Long: -PHB : PHK : PLB +{ + PHB : PHK : PLB -JSR Sprite_Puffstool_Draw ; Call the draw code -JSL Sprite_CheckActive ; Check if game is not paused -BCC .SpriteIsNotActive ; Skip Main code is sprite is innactive + JSR Sprite_Puffstool_Draw ; Call the draw code + JSL Sprite_CheckActive ; Check if game is not paused + BCC .SpriteIsNotActive ; Skip Main code is sprite is innactive -JSR Sprite_Puffstool_Main ; Call the main sprite code + JSR Sprite_Puffstool_Main ; Call the main sprite code -.SpriteIsNotActive -PLB ; Get back the databank we stored previously -RTL ; Go back to original code + .SpriteIsNotActive + PLB ; Get back the databank we stored previously + RTL ; Go back to original code +} ; ========================================================= Sprite_Puffstool_Prep: -PHB : PHK : PLB - - ; Add more code here to initialize data +{ + PHB : PHK : PLB + -PLB -RTL + + PLB + RTL +} ; ========================================================= Sprite_Puffstool_Main: -LDA.w SprAction, X; Load the SprAction -JSL UseImplicitRegIndexedLocalJumpTable; Goto the SprAction we are currently in -dw Action00 +{ + LDA.w SprAction, X + JSL UseImplicitRegIndexedLocalJumpTable + dw Puffstool_Walking + dw Puffstool_Stunned -Action00: + Puffstool_Walking: + { + %PlayAnimation(0,6,10) + RTS + } - - -RTS + Puffstool_Stunned: + { + %PlayAnimation(7,7,10) + RTS + } +} ; ========================================================= Sprite_Puffstool_Draw: -JSL Sprite_PrepOamCoord -JSL Sprite_OAM_AllocateDeferToPlayer +{ + JSL Sprite_PrepOamCoord + JSL Sprite_OAM_AllocateDeferToPlayer -LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame -LDA .start_index, Y : STA $06 + LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame + LDA .start_index, Y : STA $06 -PHX -LDX .nbr_of_tiles, Y ;amount of tiles -1 -LDY.b #$00 -.nextTile + PHX + LDX .nbr_of_tiles, Y ;amount of tiles -1 + LDY.b #$00 + .nextTile -PHX ; Save current Tile Index? - -TXA : CLC : ADC $06 ; Add Animation Index Offset + PHX ; Save current Tile Index? + + TXA : CLC : ADC $06 ; Add Animation Index Offset -PHA ; Keep the value with animation index offset? + PHA ; Keep the value with animation index offset? -ASL A : TAX + ASL A : TAX -REP #$20 + REP #$20 -LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y -AND.w #$0100 : STA $0E -INY -LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y -CLC : ADC #$0010 : CMP.w #$0100 -SEP #$20 -BCC .on_screen_y + LDA $00 : STA ($90), Y + AND.w #$0100 : STA $0E + INY + LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y + CLC : ADC #$0010 : CMP.w #$0100 + SEP #$20 + BCC .on_screen_y -LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way -STA $0E -.on_screen_y + LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way + STA $0E + .on_screen_y -PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore) -INY -LDA .chr, X : STA ($90), Y -INY -LDA .properties, X : STA ($90), Y + PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore) + INY + LDA .chr, X : STA ($90), Y + INY + LDA .properties, X : STA ($90), Y -PHY - -TYA : LSR #2 : TAY - -LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer - -PLY : INY - -PLX : DEX : BPL .nextTile + PHY + + TYA : LSR #2 : TAY + + LDA.b #$02 : ORA $0F : STA ($92), Y ; store size in oam buffer + + PLY : INY + + PLX : DEX : BPL .nextTile -PLX + PLX -RTS + RTS -; ========================================================= + ; ========================================================= -.start_index -db $00, $02, $04, $06, $08, $0A, $0C, $0E -.nbr_of_tiles -db 1, 1, 1, 1, 1, 1, 1, 0 -.x_offsets -dw 0, 0 -dw 0, 0 -dw 0, 0 -dw 0, 0 -dw 0, 0 -dw 0, 0 -dw 0, 0 -dw 0 -.y_offsets -dw -8, 0 -dw 0, -8 -dw 0, -8 -dw 0, -8 -dw 0, -8 -dw 0, -8 -dw 0, -8 -dw 0 -.chr -db $C0, $D0 -db $D2, $C2 -db $D4, $C4 -db $D2, $C2 -db $D0, $C0 -db $D2, $C2 -db $D4, $C4 -db $D6 -.properties -db $33, $33 -db $33, $33 -db $33, $33 -db $33, $33 -db $33, $33 -db $73, $73 -db $73, $73 -db $3D -.sizes -db $02, $02 -db $02, $02 -db $02, $02 -db $02, $02 -db $02, $02 -db $02, $02 -db $02, $02 -db $02 + .start_index + db $00, $02, $04, $06, $08, $0A, $0C, $0E + .nbr_of_tiles + db 1, 1, 1, 1, 1, 1, 1, 0 + .y_offsets + dw -8, 0 + dw 0, -8 + dw 0, -8 + dw 0, -8 + dw 0, -8 + dw 0, -8 + dw 0, -8 + dw 0 + .chr + db $C0, $D0 + db $D2, $C2 + db $D4, $C4 + db $D2, $C2 + db $D0, $C0 + db $D2, $C2 + db $D4, $C4 + db $D6 + .properties + db $33, $33 + db $33, $33 + db $33, $33 + db $33, $33 + db $33, $33 + db $73, $73 + db $73, $73 + db $3D +}