From cd883f7c78361bbd4be06f561270075e41ec9ae1 Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 31 Aug 2024 16:25:44 -0400 Subject: [PATCH] add eon abyss village dog draw --- Sprites/NPCs/village_dog.asm | 117 +++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/Sprites/NPCs/village_dog.asm b/Sprites/NPCs/village_dog.asm index 7a4a266..1ce54ff 100644 --- a/Sprites/NPCs/village_dog.asm +++ b/Sprites/NPCs/village_dog.asm @@ -37,7 +37,12 @@ Sprite_VillageDog_Long: { PHB : PHK : PLB + LDA.w WORLDFLAG : BEQ .village + JSR Sprite_EonDog_Draw + JMP + + .village JSR Sprite_VillageDog_Draw ; Call the draw code + + JSL Sprite_DrawShadow JSL Sprite_CheckActive ; Check if game is not paused BCC .SpriteIsNotActive ; Skip Main code is sprite is innactive @@ -52,6 +57,10 @@ Sprite_VillageDog_Long: Sprite_VillageDog_Prep: { PHB : PHK : PLB + + LDA.w WORLDFLAG : BEQ .village + LDA.b #$07 : STA.w SprAction, X + .village PLB RTL @@ -93,6 +102,9 @@ Sprite_VillageDog_Main: dw Dog_WagTailLeft ; 05 dw Dog_WagTailRight ; 06 + dw EonDog_Handler ; 07 + dw EonDog_Right ; 08 + ; 0 Dog_Handler: { @@ -224,6 +236,24 @@ Sprite_VillageDog_Main: RTS } + EonDog_Handler: + { + %PlayAnimation(0,1,8) + + JSR HandleTossedDog + + RTS + } + + EonDog_Right: + { + %PlayAnimation(2,3,8) + + JSR HandleTossedDog + + RTS + } + } CheckIfPlayerIsNearby: @@ -383,4 +413,91 @@ Sprite_VillageDog_Draw: db $02 db $02, $02, $00, $00 db $02, $02, $00, $00 +} + +Sprite_EonDog_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, $01, $02, $03 + .nbr_of_tiles + db 0, 0, 0, 0 + .x_offsets + dw 0 + dw 0 + dw 0 + dw 0 + .y_offsets + dw 0 + dw 0 + dw 0 + dw 0 + .chr + db $C0 + db $C2 + db $C0 + db $C2 + .properties + db $3B + db $3B + db $7B + db $7B + .sizes + db $02 + db $02 + db $02 + db $02 } \ No newline at end of file