diff --git a/Sprites/Objects/collectible.asm b/Sprites/Objects/collectible.asm index 3a8ac2a..6f6f4a0 100644 --- a/Sprites/Objects/collectible.asm +++ b/Sprites/Objects/collectible.asm @@ -42,6 +42,10 @@ Sprite_Collectible_Long: JSR Sprite_SwordShield_Draw BRA + .not_intro_sword + LDA.b $8A : CMP.b #$4B : BNE .not_lupo_mountain + JSR Sprite_RockSirloin_Draw + BRA + + .not_lupo_mountain JSR Sprite_Pineapple_Draw + JSL Sprite_DrawShadow @@ -266,4 +270,76 @@ Sprite_SwordShield_Draw: db $33, $33, $B3 .sizes db $00, $00, $02 +} + +Sprite_RockSirloin_Draw: +{ + JSL Sprite_PrepOamCoord + JSL Sprite_OAM_AllocateDeferToPlayer + + LDA.w SprFrame, 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 ; Save current Tile Index? + + TXA : CLC : ADC $06 ; Add Animation Index Offset + + PHA ; Keep the value with animation index offset? + + ASL A : TAX + + 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.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 + + PHY + + TYA : LSR #2 : TAY + + LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer + + PLY : INY + + PLX : DEX : BPL .nextTile + + PLX + + RTS + + .start_index + db $00 + .nbr_of_tiles + db 0 + .x_offsets + dw 0 + .y_offsets + dw 0 + .chr + db $86 + .properties + db $37 + .sizes + db $02 } \ No newline at end of file