From 2c083cdf90d29fbd2302f93557c9a3ad1d93e052 Mon Sep 17 00:00:00 2001 From: scawful Date: Thu, 6 Jun 2024 21:44:25 -0400 Subject: [PATCH] update korok draw routines --- Sprites/NPCs/korok.asm | 533 +++++++++++++++++++++++++---------------- 1 file changed, 322 insertions(+), 211 deletions(-) diff --git a/Sprites/NPCs/korok.asm b/Sprites/NPCs/korok.asm index 7f793b3..51db28d 100644 --- a/Sprites/NPCs/korok.asm +++ b/Sprites/NPCs/korok.asm @@ -75,7 +75,7 @@ Sprite_Korok_Main: ; ========================================================= ; Korok Draw Codes -Sprite_Korok_Draw: +Sprite_Korok_DrawMakar: { JSL Sprite_PrepOamCoord JSL Sprite_OAM_AllocateDeferToPlayer @@ -131,219 +131,330 @@ Sprite_Korok_Draw: RTS -; Korok Makar -.start_index -db $00, $02, $04, $07, $0A, $0D, $10, $13, $16, $19, $1C, $1F -.nbr_of_tiles -db 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 -.x_offsets -dw 0, 0 -dw 0, 0 -dw 0, 8, 0 -dw 0, 0, 8 -dw 0, 8, 0 -dw 0, 8, 0 -dw 0, 0, 8 -dw 0, 0, 8 -dw 0, 0, 8 -dw 0, 8, 0 -dw 0, 8, 0 -dw 0, 8, 0 -.y_offsets -dw -8, 0 -dw -8, 0 -dw -8, 8, 8 -dw 0, -8, -8 -dw -8, -8, 0 -dw -8, -8, 0 -dw 0, -8, -8 -dw 0, -8, -8 -dw 0, -8, -8 -dw 0, -8, -8 -dw 0, -8, -8 -dw 0, -8, -8 -.chr -db $00, $10 -db $00, $02 -db $00, $20, $21 -db $04, $38, $39 -db $38, $39, $06 -db $38, $39, $08 -db $22, $28, $29 -db $24, $28, $29 -db $26, $28, $29 -db $22, $28, $29 -db $24, $28, $29 -db $26, $28, $29 -.properties -db $3B, $3B -db $3B, $3B -db $3B, $7B, $7B -db $3B, $3B, $3B -db $3B, $3B, $3B -db $3B, $3B, $3B -db $3B, $3B, $3B -db $3B, $3B, $3B -db $3B, $3B, $3B -db $7B, $7B, $7B -db $7B, $7B, $7B -db $7B, $7B, $7B -.sizes -db $02, $02 -db $02, $02 -db $02, $00, $00 -db $02, $00, $00 -db $00, $00, $02 -db $00, $00, $02 -db $02, $00, $00 -db $02, $00, $00 -db $02, $00, $00 -db $02, $00, $00 -db $02, $00, $00 -db $02, $00, $00 + ; Korok Makar + .start_index + db $00, $02, $04, $07, $0A, $0D, $10, $13, $16, $19, $1C, $1F + .nbr_of_tiles + db 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 + .x_offsets + dw 0, 0 + dw 0, 0 + dw 0, 8, 0 + dw 0, 0, 8 + dw 0, 8, 0 + dw 0, 8, 0 + dw 0, 0, 8 + dw 0, 0, 8 + dw 0, 0, 8 + dw 0, 8, 0 + dw 0, 8, 0 + dw 0, 8, 0 + .y_offsets + dw -8, 0 + dw -8, 0 + dw -8, 8, 8 + dw 0, -8, -8 + dw -8, -8, 0 + dw -8, -8, 0 + dw 0, -8, -8 + dw 0, -8, -8 + dw 0, -8, -8 + dw 0, -8, -8 + dw 0, -8, -8 + dw 0, -8, -8 + .chr + db $00, $10 + db $00, $02 + db $00, $20, $21 + db $04, $38, $39 + db $38, $39, $06 + db $38, $39, $08 + db $22, $28, $29 + db $24, $28, $29 + db $26, $28, $29 + db $22, $28, $29 + db $24, $28, $29 + db $26, $28, $29 + .properties + db $3B, $3B + db $3B, $3B + db $3B, $7B, $7B + db $3B, $3B, $3B + db $3B, $3B, $3B + db $3B, $3B, $3B + db $3B, $3B, $3B + db $3B, $3B, $3B + db $3B, $3B, $3B + db $7B, $7B, $7B + db $7B, $7B, $7B + db $7B, $7B, $7B + .sizes + db $02, $02 + db $02, $02 + db $02, $00, $00 + db $02, $00, $00 + db $00, $00, $02 + db $00, $00, $02 + db $02, $00, $00 + db $02, $00, $00 + db $02, $00, $00 + db $02, $00, $00 + db $02, $00, $00 + db $02, $00, $00 +} -; Korok Hollo -.start_index -db $00, $02, $04, $06, $09, $0C, $0E, $10, $12, $14, $16, $18 -.nbr_of_tiles -db 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1 -.x_offsets -dw 0, 0 -dw 0, 0 -dw 0, 0 -dw 0, 0, 8 -dw 0, 8, 0 -dw 0, 0 -dw 0, 0 -dw 0, 0 -dw 0, 0 -dw 0, 0 -dw 0, 0 -dw 0, 0 -.y_offsets -dw 0, -8 -dw -8, 0 -dw -8, 0 -dw 0, -8, -8 -dw -8, -8, 0 -dw 0, -8 -dw 0, -8 -dw 0, -8 -dw 0, -8 -dw 0, -8 -dw 0, -8 -dw 0, -8 -.chr -db $1A, $0A -db $0C, $1C -db $0A, $0E -db $2E, $3A, $3B -db $3A, $3B, $4C -db $5E, $4E -db $4A, $7E -db $6A, $7E -db $6C, $7E -db $6A, $7E -db $6C, $7E -db $4A, $7E -.properties -db $3B, $3B -db $3B, $3B -db $3B, $3B -db $3B, $3B, $3B -db $3B, $3B, $3B -db $3B, $3B -db $3B, $3B -db $3B, $3B -db $3B, $3B -db $7B, $7B -db $7B, $7B -db $7B, $7B -.sizes -db $02, $02 -db $02, $02 -db $02, $02 -db $02, $00, $00 -db $00, $00, $02 -db $02, $02 -db $02, $02 -db $02, $02 -db $02, $02 -db $02, $02 -db $02, $02 -db $02, $02 +Sprite_Korok_DrawHollo: +{ + JSL Sprite_PrepOamCoord + JSL Sprite_OAM_AllocateDeferToPlayer -; Korok Rown -.start_index -db $00, $02, $04, $06, $09, $0C, $0F, $11, $13, $15, $17, $19 -.nbr_of_tiles -db 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1 -.x_offsets -dw 0, 0 -dw 0, 0 -dw 0, 0 -dw 0, 0, 8 -dw 0, 0, 8 -dw 0, 0, 8 -dw 0, 0 -dw 0, 0 -dw 0, 0 -dw 0, 0 -dw 0, 0 -dw 0, 0 -.y_offsets -dw -8, 0 -dw 0, -8 -dw 0, -8 -dw 0, -8, -8 -dw 0, -8, -8 -dw 0, -8, -8 -dw 0, -8 -dw -8, 0 -dw 0, -8 -dw 0, -8 -dw 0, -8 -dw 0, -8 -.chr -db $82, $92 -db $84, $82 -db $86, $82 -db $A4, $B2, $B3 -db $A6, $B2, $B3 -db $A6, $B2, $B3 -db $98, $88 -db $88, $8A -db $8C, $88 -db $98, $88 -db $8A, $88 -db $8C, $88 -.properties -db $37, $37 -db $37, $37 -db $37, $37 -db $37, $37, $37 -db $37, $37, $37 -db $77, $37, $37 -db $37, $37 -db $37, $37 -db $37, $37 -db $77, $77 -db $77, $77 -db $77, $77 -.sizes -db $02, $02 -db $02, $02 -db $02, $02 -db $02, $00, $00 -db $02, $00, $00 -db $02, $00, $00 -db $02, $02 -db $02, $02 -db $02, $02 -db $02, $02 -db $02, $02 -db $02, $02 + 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 ; 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 + + ; Korok Hollo + .start_index + db $00, $02, $04, $06, $09, $0C, $0E, $10, $12, $14, $16, $18 + .nbr_of_tiles + db 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1 + .x_offsets + dw 0, 0 + dw 0, 0 + dw 0, 0 + dw 0, 0, 8 + dw 0, 8, 0 + dw 0, 0 + dw 0, 0 + dw 0, 0 + dw 0, 0 + dw 0, 0 + dw 0, 0 + dw 0, 0 + .y_offsets + dw 0, -8 + dw -8, 0 + dw -8, 0 + dw 0, -8, -8 + dw -8, -8, 0 + dw 0, -8 + dw 0, -8 + dw 0, -8 + dw 0, -8 + dw 0, -8 + dw 0, -8 + dw 0, -8 + .chr + db $1A, $0A + db $0C, $1C + db $0A, $0E + db $2E, $3A, $3B + db $3A, $3B, $4C + db $5E, $4E + db $4A, $7E + db $6A, $7E + db $6C, $7E + db $6A, $7E + db $6C, $7E + db $4A, $7E + .properties + db $3B, $3B + db $3B, $3B + db $3B, $3B + db $3B, $3B, $3B + db $3B, $3B, $3B + db $3B, $3B + db $3B, $3B + db $3B, $3B + db $3B, $3B + db $7B, $7B + db $7B, $7B + db $7B, $7B + .sizes + db $02, $02 + db $02, $02 + db $02, $02 + db $02, $00, $00 + db $00, $00, $02 + db $02, $02 + db $02, $02 + db $02, $02 + db $02, $02 + db $02, $02 + db $02, $02 + db $02, $02 +} + +Sprite_Korok_DrawRown: +{ + JSL Sprite_PrepOamCoord + JSL Sprite_OAM_AllocateDeferToPlayer + + 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 ; 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 + + ; Korok Rown + .start_index + db $00, $02, $04, $06, $09, $0C, $0F, $11, $13, $15, $17, $19 + .nbr_of_tiles + db 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1 + .x_offsets + dw 0, 0 + dw 0, 0 + dw 0, 0 + dw 0, 0, 8 + dw 0, 0, 8 + dw 0, 0, 8 + dw 0, 0 + dw 0, 0 + dw 0, 0 + dw 0, 0 + dw 0, 0 + dw 0, 0 + .y_offsets + dw -8, 0 + dw 0, -8 + dw 0, -8 + dw 0, -8, -8 + dw 0, -8, -8 + dw 0, -8, -8 + dw 0, -8 + dw -8, 0 + dw 0, -8 + dw 0, -8 + dw 0, -8 + dw 0, -8 + .chr + db $82, $92 + db $84, $82 + db $86, $82 + db $A4, $B2, $B3 + db $A6, $B2, $B3 + db $A6, $B2, $B3 + db $98, $88 + db $88, $8A + db $8C, $88 + db $98, $88 + db $8A, $88 + db $8C, $88 + .properties + db $37, $37 + db $37, $37 + db $37, $37 + db $37, $37, $37 + db $37, $37, $37 + db $77, $37, $37 + db $37, $37 + db $37, $37 + db $37, $37 + db $77, $77 + db $77, $77 + db $77, $77 + .sizes + db $02, $02 + db $02, $02 + db $02, $02 + db $02, $00, $00 + db $02, $00, $00 + db $02, $00, $00 + db $02, $02 + db $02, $02 + db $02, $02 + db $02, $02 + db $02, $02 + db $02, $02 } \ No newline at end of file