From 52d74ad220a0221423103100316236cf7eb84260 Mon Sep 17 00:00:00 2001 From: scawful Date: Wed, 30 Aug 2023 21:05:25 -0400 Subject: [PATCH] Update sprites library --- Sprites/Kydrog/kydrog_boss.asm | 13 +--- Sprites/deku_scrub.asm | 135 ++++++++++++++++----------------- Sprites/farore.asm | 37 +-------- Sprites/sprites.asm | 53 +++++++++++++ Sprites/zora_prince.asm | 0 5 files changed, 124 insertions(+), 114 deletions(-) create mode 100644 Sprites/sprites.asm create mode 100644 Sprites/zora_prince.asm diff --git a/Sprites/Kydrog/kydrog_boss.asm b/Sprites/Kydrog/kydrog_boss.asm index 29687d2..d0a09af 100644 --- a/Sprites/Kydrog/kydrog_boss.asm +++ b/Sprites/Kydrog/kydrog_boss.asm @@ -130,11 +130,11 @@ macro StopIfTooClose() endmacro macro RandomStalfosOffspring() -JSL GetRandomInt : AND.b #$7F : BNE + + JSL GetRandomInt : AND.b #$7F : BNE + PHX : JSR Sprite_Offspring_Spawn : PLX + -JSL GetRandomInt : AND.b #$7F : BNE + + JSL GetRandomInt : AND.b #$7F : BNE + PHX : JSR Sprite_Offspring_SpawnHead : PLX + endmacro @@ -145,20 +145,17 @@ Sprite_KydrogBoss_Main: JSL UseImplicitRegIndexedLocalJumpTable; Goto the SprAction we are currently in dw KydrogBoss_Init ; 00 - dw KydrogBoss_WalkState ; 01 - dw KydrogBoss_WalkForward ; 02 dw KydrogBoss_WalkLeft ; 03 dw KydrogBoss_WalkRight ; 04 dw KydrogBoss_WalkBackward ; 05 - dw KydrogBoss_TakeDamage ; 06 dw KydrogBoss_TauntPlayer ; 07 dw KydrogBoss_SummonStalfos ; 08 - dw KydrogBoss_Death ; 09 + ; --------------------------------------------------------------------------- KydrogBoss_Init: { @@ -177,8 +174,6 @@ Sprite_KydrogBoss_Main: ; --------------------------------------------------------------------------- - - KydrogBoss_WalkState: { @@ -196,8 +191,6 @@ Sprite_KydrogBoss_Main: RTS .no_offspring - ; \return $0E is low byte of player_y_pos - sprite_y_pos - ; \return $0F is low byte of player_x_pos - sprite_x_pos LDA #$50 : STA $09, X JSL Sprite_DirectionToFacePlayer TYA : CMP.b #$02 : BCC .WalkRight diff --git a/Sprites/deku_scrub.asm b/Sprites/deku_scrub.asm index 7c39b83..d1c74b1 100644 --- a/Sprites/deku_scrub.asm +++ b/Sprites/deku_scrub.asm @@ -1,7 +1,7 @@ ; ============================================================================= -!SPRID = $A0; The sprite ID you are overwriting (HEX) -!NbrTiles = 00 ; Number of tiles used in a frame +!SPRID = $A0 ; The sprite ID you are overwriting (HEX) +!NbrTiles = 06 ; Number of tiles used in a frame !Harmless = 01 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless !HVelocity = 00 ; Is your sprite going super fast? put 01 if it is !Health = 00 ; Number of Health the sprite have @@ -36,8 +36,8 @@ Sprite_DekuScrub_Long: PHB : PHK : PLB JSR Sprite_DekuScrub_Draw ; Call the draw code - JSL Sprite_CheckActive ; Check if game is not paused - BCC .SpriteIsNotActive ; Skip Main code is sprite is innactive + JSL Sprite_CheckActive ; Check if game is not paused + BCC .SpriteIsNotActive ; Skip Main code is sprite is innactive JSR Sprite_DekuScrub_Main ; Call the main sprite code @@ -53,7 +53,7 @@ Sprite_DekuScrub_Prep: PHB : PHK : PLB LDA.l $7EF301 - BEQ .PlayIntro + BEQ .PlayIntro STZ.w $0DD0, X ; Kill the sprite .PlayIntro @@ -65,8 +65,8 @@ Sprite_DekuScrub_Prep: Sprite_DekuScrub_Main: { - LDA.w SprAction, X; Load the SprAction - JSL UseImplicitRegIndexedLocalJumpTable; Goto the SprAction we are currently in + LDA.w SprAction, X ; Load the SprAction + JSL UseImplicitRegIndexedLocalJumpTable ; Goto the SprAction we are currently in dw EstadoInactivo dw QuiereCuracion @@ -86,8 +86,8 @@ Sprite_DekuScrub_Main: QuiereCuracion: { %PlayAnimation(0, 1, 16) - LDA $FE : BEQ .ninguna_cancion - STZ $FE + LDA $FE : BEQ .ninguna_cancion + STZ $FE LDA.b #$C0 : STA.w SprTimerD, X %GotoAction(2) .ninguna_cancion @@ -98,7 +98,7 @@ Sprite_DekuScrub_Main: { %PlayAnimation(0, 1, 16) - LDA.w SprTimerD, X : BNE + + LDA.w SprTimerD, X : BNE + %ShowUnconditionalMessage($141) LDA.b #$C0 : STA.w SprTimerD, X @@ -111,9 +111,9 @@ Sprite_DekuScrub_Main: { LDA.w SprTimerD, X : BNE + - LDY #$0F : STZ $02E9 - JSL Link_ReceiveItem - LDA #$01 : STA.l $7EF301 + LDY #$0F : STZ $02E9 + JSL Link_ReceiveItem + LDA #$01 : STA.l $7EF301 LDA.b #$00 : STA $0DD0, X + RTS @@ -123,79 +123,78 @@ Sprite_DekuScrub_Main: ; ============================================================================= Sprite_DekuScrub_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 : 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 + 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 .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer + + PLY : INY + + PLX : DEX : BPL .nextTile -PLX + PLX -RTS - - -; ============================================================================= + RTS .start_index -db $00, $04 + db $00, $04 .nbr_of_tiles -db 3, 3 + db 3, 3 .x_offsets -dw 4, -4, -4, 4 -dw 4, -4, -4, 4 + dw 4, -4, -4, 4 + dw 4, -4, -4, 4 .y_offsets -dw 0, 0, -8, -8 -dw 0, 0, -8, -8 + dw 0, 0, -8, -8 + dw 0, 0, -8, -8 .chr -db $2C, $2C, $0C, $0C -db $2E, $2E, $0E, $0E + db $2C, $2C, $0C, $0C + db $2E, $2E, $0E, $0E .properties -db $33, $73, $33, $73 -db $33, $73, $33, $73 + db $33, $73, $33, $73 + db $33, $73, $33, $73 .sizes -db $02, $02, $02, $02 -db $02, $02, $02, $02 + db $02, $02, $02, $02 + db $02, $02, $02, $02 +} \ No newline at end of file diff --git a/Sprites/farore.asm b/Sprites/farore.asm index f53d585..fa5c9ae 100644 --- a/Sprites/farore.asm +++ b/Sprites/farore.asm @@ -1,40 +1,5 @@ ;============================================================================== -; Farore Sprite -; -;============================================================================== - -InCutScene = $7EF303 - -org $0083F8 -LDA InCutScene : BEQ .notInCutscene - STZ $F0 - STZ $F2 - STZ $F4 - STZ $F6 - STZ $F8 - STZ $FA ; kill all input - -.notInCutscene - -RTS - -warnpc $00841E - -incsrc sprite_macros.asm -incsrc sprite_functions_hooks.asm - -;============================================================================== - -org $298000 -incsrc sprite_new_table.asm - -;============================================================================== - -org $308000 -incsrc sprite_new_functions.asm - -;============================================================================== -; Sprite Properties +; Farore Sprite Properties ;============================================================================== !SPRID = $73; The sprite ID you are overwriting (HEX) !NbrTiles = 2 ; Number of tiles used in a frame diff --git a/Sprites/sprites.asm b/Sprites/sprites.asm new file mode 100644 index 0000000..cefbbea --- /dev/null +++ b/Sprites/sprites.asm @@ -0,0 +1,53 @@ +InCutScene = $7EF303 + +org $0083F8 +LDA InCutScene : BEQ .notInCutscene + STZ $F0 + STZ $F2 + STZ $F4 + STZ $F6 + STZ $F8 + STZ $FA ; kill all input + +.notInCutscene + +RTS + +warnpc $00841E + +incsrc ZSpriteLib/sprite_macros.asm +incsrc ZSpriteLib/sprite_functions_hooks.asm + +;============================================================================== + +org $298000 +incsrc ZSpriteLib/sprite_new_table.asm + +;============================================================================== + +org $308000 +incsrc ZSpriteLib/sprite_new_functions.asm + +incsrc "Sprites/farore.asm" +print "End of farore.asm ", pc + +incsrc "Sprites/Kydrog/kydrog.asm" +print "End of kydrog.asm ", pc + +incsrc "Sprites/Kydrog/kydrog_boss.asm" +print "End of kydrog_boss.asm ", pc + +incsrc "Sprites/maku_tree.asm" +print "End of maku_tree.asm ", pc + +incsrc "Sprites/mask_salesman.asm" +print "End of mask_salesman.asm ", pc + +incsrc "Sprites/deku_scrub.asm" +print "End of deku_scrub.asm ", pc + +incsrc "Sprites/anti_kirby.asm" +print "End of anti_kirby.asm ", pc + +incsrc "Sprites/VillageDog/village_dog.asm" +print "End of village_dog.asm ", pc \ No newline at end of file diff --git a/Sprites/zora_prince.asm b/Sprites/zora_prince.asm new file mode 100644 index 0000000..e69de29