diff --git a/Sprites/Enemies/deku_scrub_enemy.asm b/Sprites/Enemies/deku_scrub_enemy.asm index 90f6103..daa2355 100644 --- a/Sprites/Enemies/deku_scrub_enemy.asm +++ b/Sprites/Enemies/deku_scrub_enemy.asm @@ -47,15 +47,15 @@ Sprite_DekuScrubEnemy_Long: Sprite_DekuScrubEnemy_Prep: { - PHB : PHK : PLB + PHB : PHK : PLB - LDA SprSubtype, X : CMP #$01 : BNE .normal_scrub - LDA.b #$06 : STA SprAction, X ; Pea Shot State - LDA.b #$A0 : STA.b SprPrize, X - .normal_scrub + LDA SprSubtype, X : CMP #$01 : BNE .normal_scrub + LDA.b #$06 : STA SprAction, X ; Pea Shot State + LDA.b #$20 : STA.b SprPrize, X + .normal_scrub - PLB - RTL + PLB + RTL } ; 0-2 - Spitting @@ -88,7 +88,7 @@ Sprite_DekuScrubEnemy_Main: JSR CheckForPeaShotRedirect JSL Sprite_IsBelowPlayer : TYA - CMP #$00 : BNE .is_below_player + CMP #$00 : BNE .is_below_player ; Check if the player is too close LDA $22 : STA $02 LDA $20 : STA $03 @@ -98,8 +98,8 @@ Sprite_DekuScrubEnemy_Main: ; The player is below the scrub, so it should pop up LDA #$20 : STA SprTimerA, X %GotoAction(1) - .too_close - .is_below_player + .too_close + .is_below_player RTS } @@ -110,21 +110,21 @@ Sprite_DekuScrubEnemy_Main: %PlayAnimation(0,2,8) JSL Sprite_PlayerCantPassThrough - + JSR CheckForPeaShotRedirect LDA SprTimerA, X : BNE .not_done JSR SpawnPeaShot - LDA #$40 : STA SprTimerA, X + LDA #$50 : STA SprTimerA, X INC.w SprAction, X - .not_done + .not_done - LDA $22 : STA $02 - LDA $20 : STA $03 + LDA POSX : STA $02 + LDA POSY : STA $03 LDA SprX, X : STA $04 LDA SprY, X : STA $05 JSR GetDistance8bit : CMP #$18 : BCS .not_too_close %GotoAction(0) - .not_too_close + .not_too_close RTS } @@ -136,6 +136,10 @@ Sprite_DekuScrubEnemy_Main: JSL Sprite_PlayerCantPassThrough JSR CheckForPeaShotRedirect + + LDA.w SprTimerA, X : BNE + + %GotoAction(0) + + RTS } @@ -158,8 +162,8 @@ Sprite_DekuScrubEnemy_Main: LDA SprTimerA, X : BNE .not_done LDA #$40 : STA SprTimerA, X INC.w SprAction, X - .not_done - + .not_done + RTS } @@ -173,7 +177,7 @@ Sprite_DekuScrubEnemy_Main: LDA SprTimerA, X : BNE .not_done INC.w SprAction, X - .not_done + .not_done RTS } @@ -193,18 +197,22 @@ Sprite_DekuScrubEnemy_Main: ; 0x06 DekuScrubEnemy_PeaShot: { - %StartOnFrame(10) - %PlayAnimation(10,12,3) + %StartOnFrame(10) + %PlayAnimation(10,12,3) - %DoDamageToPlayerSameLayerOnContact() + %DoDamageToPlayerSameLayerOnContact() - JSL Sprite_MoveVert + JSL Sprite_MoveVert + JSL Sprite_CheckTileCollision + LDA.w SprCollision, X : BEQ .no_collision + STZ.w SprState, X + .no_collision - JSL Sprite_CheckDamageFromPlayerLong : BCC .no_damage - ; Apply force in the opposite direction - LDA #-16 : STA SprYSpeed, X + JSL Sprite_CheckDamageFromPlayerLong : BCC .no_damage + ; Apply force in the opposite direction + LDA #-16 : STA SprYSpeed, X .no_damage - RTS + RTS } } @@ -225,26 +233,19 @@ CheckForPeaShotRedirect: PLX JSL CheckIfHitBoxesOverlap : BCC .no_dano - INC.w SprAction, X + %GotoAction(3) + RTS .no_dano - ; Wait while the pea shot is on screen - ; Link may redirect it towards us - LDA SprTimerA, X : BNE .not_done - ; If the pea shot and deku scrub hitboxes intersect - ; We will go to recoil - PHX - LDA.w Offspring1_Id : TAX - JSL Sprite_SetupHitBox - PLX - JSL CheckIfHitBoxesOverlap : BCC .not_done2 - %GotoAction(3) - RTS - .not_done2 - - ; However, he may also dodge it and try to attack - ; So if he gets too close, we go back to hiding - %GotoAction(0) - .not_done + ; If the pea shot and deku scrub hitboxes intersect + ; We will go to recoil + PHX + LDA.w Offspring1_Id : TAX + JSL Sprite_SetupHitBox + PLX + JSL CheckIfHitBoxesOverlap : BCC .not_done2 + %GotoAction(3) + RTS + .not_done2 RTS } diff --git a/Sprites/ZSpriteLib/sprite_new_functions.asm b/Sprites/ZSpriteLib/sprite_new_functions.asm index a8c640a..09dfd98 100644 --- a/Sprites/ZSpriteLib/sprite_new_functions.asm +++ b/Sprites/ZSpriteLib/sprite_new_functions.asm @@ -448,274 +448,280 @@ Link_SetupHitBox: Sprite_SetupHitBox: -#_06F7EF: LDA.w $0F70, X -#_06F7F2: BMI .too_high + PHB : PHK : PLB + LDA.w $0F70, X + BMI .too_high -#_06F7F4: PHY + PHY -#_06F7F5: LDA.w $0F60, X -#_06F7F8: AND.b #$1F -#_06F7FA: TAY + LDA.w $0F60, X + AND.b #$1F + TAY -#_06F7FB: LDA.w $0D10, X -#_06F7FE: CLC -#_06F7FF: ADC.w .offset_x_low, Y -#_06F802: STA.b $04 + LDA.w $0D10, X + CLC + ADC.w .offset_x_low, Y + STA.b $04 -#_06F804: LDA.w $0D30, X -#_06F807: ADC.w .offset_x_high, Y -#_06F80A: STA.b $0A + LDA.w $0D30, X + ADC.w .offset_x_high, Y + STA.b $0A -#_06F80C: LDA.w $0D00, X -#_06F80F: CLC -#_06F810: ADC.w .offset_y_low, Y + LDA.w $0D00, X + CLC + ADC.w .offset_y_low, Y -#_06F813: PHP -#_06F814: SEC -#_06F815: SBC.w $0F70, X -#_06F818: STA.b $05 + PHP + SEC + SBC.w $0F70, X + STA.b $05 -#_06F81A: LDA.w $0D20, X -#_06F81D: SBC.b #$00 + LDA.w $0D20, X + SBC.b #$00 -#_06F81F: PLP -#_06F820: ADC.w .offset_y_high, Y -#_06F823: STA.b $0B + PLP + ADC.w .offset_y_high, Y + STA.b $0B -#_06F825: LDA.w .width, Y -#_06F828: STA.b $06 + LDA.w .width, Y + STA.b $06 -#_06F82A: LDA.w .height, Y -#_06F82D: STA.b $07 + LDA.w .height, Y + STA.b $07 -#_06F82F: PLY + PLY -#_06F830: RTL + PLB + + RTL ; --------------------------------------------------------- .too_high -#_06F831: LDA.b #$80 -#_06F833: STA.b $0A + LDA.b #$80 + STA.b $0A -#_06F835: RTL + PLB + + RTL .offset_x_low -#_06F72F: db 2 ; 0x00 -#_06F730: db 3 ; 0x01 -#_06F731: db 0 ; 0x02 -#_06F732: db -3 ; 0x03 -#_06F733: db -6 ; 0x04 -#_06F734: db 0 ; 0x05 -#_06F735: db 2 ; 0x06 -#_06F736: db -8 ; 0x07 -#_06F737: db 0 ; 0x08 -#_06F738: db -4 ; 0x09 -#_06F739: db -8 ; 0x0A -#_06F73A: db 0 ; 0x0B -#_06F73B: db -8 ; 0x0C -#_06F73C: db -16 ; 0x0D -#_06F73D: db 2 ; 0x0E -#_06F73E: db 2 ; 0x0F + db 2 ; 0x00 + db 3 ; 0x01 + db 0 ; 0x02 + db -3 ; 0x03 + db -6 ; 0x04 + db 0 ; 0x05 + db 2 ; 0x06 + db -8 ; 0x07 + db 0 ; 0x08 + db -4 ; 0x09 + db -8 ; 0x0A + db 0 ; 0x0B + db -8 ; 0x0C + db -16 ; 0x0D + db 2 ; 0x0E + db 2 ; 0x0F -#_06F73F: db 2 ; 0x10 -#_06F740: db 2 ; 0x11 -#_06F741: db 2 ; 0x12 -#_06F742: db -8 ; 0x13 -#_06F743: db 2 ; 0x14 -#_06F744: db 2 ; 0x15 -#_06F745: db -16 ; 0x16 -#_06F746: db -8 ; 0x17 -#_06F747: db -12 ; 0x18 -#_06F748: db 4 ; 0x19 -#_06F749: db -4 ; 0x1A -#_06F74A: db -12 ; 0x1B -#_06F74B: db 5 ; 0x1C -#_06F74C: db -32 ; 0x1D -#_06F74D: db -2 ; 0x1E -#_06F74E: db 4 ; 0x1F + db 2 ; 0x10 + db 2 ; 0x11 + db 2 ; 0x12 + db -8 ; 0x13 + db 2 ; 0x14 + db 2 ; 0x15 + db -16 ; 0x16 + db -8 ; 0x17 + db -12 ; 0x18 + db 4 ; 0x19 + db -4 ; 0x1A + db -12 ; 0x1B + db 5 ; 0x1C + db -32 ; 0x1D + db -2 ; 0x1E + db 4 ; 0x1F ; --------------------------------------------------------- .offset_x_high -#_06F74F: db 0 ; 0x00 -#_06F750: db 0 ; 0x01 -#_06F751: db 0 ; 0x02 -#_06F752: db -1 ; 0x03 -#_06F753: db -1 ; 0x04 -#_06F754: db 0 ; 0x05 -#_06F755: db 0 ; 0x06 -#_06F756: db -1 ; 0x07 -#_06F757: db 0 ; 0x08 -#_06F758: db -1 ; 0x09 -#_06F759: db -1 ; 0x0A -#_06F75A: db 0 ; 0x0B -#_06F75B: db -1 ; 0x0C -#_06F75C: db -1 ; 0x0D -#_06F75D: db 0 ; 0x0E -#_06F75E: db 0 ; 0x0F + db 0 ; 0x00 + db 0 ; 0x01 + db 0 ; 0x02 + db -1 ; 0x03 + db -1 ; 0x04 + db 0 ; 0x05 + db 0 ; 0x06 + db -1 ; 0x07 + db 0 ; 0x08 + db -1 ; 0x09 + db -1 ; 0x0A + db 0 ; 0x0B + db -1 ; 0x0C + db -1 ; 0x0D + db 0 ; 0x0E + db 0 ; 0x0F -#_06F75F: db 0 ; 0x10 -#_06F760: db 0 ; 0x11 -#_06F761: db 0 ; 0x12 -#_06F762: db -1 ; 0x13 -#_06F763: db 0 ; 0x14 -#_06F764: db 0 ; 0x15 -#_06F765: db -1 ; 0x16 -#_06F766: db -1 ; 0x17 -#_06F767: db -1 ; 0x18 -#_06F768: db 0 ; 0x19 -#_06F769: db -1 ; 0x1A -#_06F76A: db -1 ; 0x1B -#_06F76B: db 0 ; 0x1C -#_06F76C: db -1 ; 0x1D -#_06F76D: db -1 ; 0x1E -#_06F76E: db 0 ; 0x1F + db 0 ; 0x10 + db 0 ; 0x11 + db 0 ; 0x12 + db -1 ; 0x13 + db 0 ; 0x14 + db 0 ; 0x15 + db -1 ; 0x16 + db -1 ; 0x17 + db -1 ; 0x18 + db 0 ; 0x19 + db -1 ; 0x1A + db -1 ; 0x1B + db 0 ; 0x1C + db -1 ; 0x1D + db -1 ; 0x1E + db 0 ; 0x1F ; --------------------------------------------------------- .width -#_06F76F: db 12 ; 0x00 -#_06F770: db 1 ; 0x01 -#_06F771: db 16 ; 0x02 -#_06F772: db 20 ; 0x03 -#_06F773: db 20 ; 0x04 -#_06F774: db 8 ; 0x05 -#_06F775: db 4 ; 0x06 -#_06F776: db 32 ; 0x07 -#_06F777: db 48 ; 0x08 -#_06F778: db 24 ; 0x09 -#_06F779: db 32 ; 0x0A -#_06F77A: db 32 ; 0x0B -#_06F77B: db 32 ; 0x0C -#_06F77C: db 48 ; 0x0D -#_06F77D: db 12 ; 0x0E -#_06F77E: db 12 ; 0x0F + db 12 ; 0x00 + db 1 ; 0x01 + db 16 ; 0x02 + db 20 ; 0x03 + db 20 ; 0x04 + db 8 ; 0x05 + db 4 ; 0x06 + db 32 ; 0x07 + db 48 ; 0x08 + db 24 ; 0x09 + db 32 ; 0x0A + db 32 ; 0x0B + db 32 ; 0x0C + db 48 ; 0x0D + db 12 ; 0x0E + db 12 ; 0x0F -#_06F77F: db 60 ; 0x10 -#_06F780: db 124 ; 0x11 -#_06F781: db 12 ; 0x12 -#_06F782: db 32 ; 0x13 -#_06F783: db 4 ; 0x14 -#_06F784: db 12 ; 0x15 -#_06F785: db 48 ; 0x16 -#_06F786: db 32 ; 0x17 -#_06F787: db 40 ; 0x18 -#_06F788: db 8 ; 0x19 -#_06F789: db 24 ; 0x1A -#_06F78A: db 24 ; 0x1B -#_06F78B: db 5 ; 0x1C -#_06F78C: db 80 ; 0x1D -#_06F78D: db 4 ; 0x1E -#_06F78E: db 8 ; 0x1F + db 60 ; 0x10 + db 124 ; 0x11 + db 12 ; 0x12 + db 32 ; 0x13 + db 4 ; 0x14 + db 12 ; 0x15 + db 48 ; 0x16 + db 32 ; 0x17 + db 40 ; 0x18 + db 8 ; 0x19 + db 24 ; 0x1A + db 24 ; 0x1B + db 5 ; 0x1C + db 80 ; 0x1D + db 4 ; 0x1E + db 8 ; 0x1F ; --------------------------------------------------------- .offset_y_low -#_06F78F: db 0 ; 0x00 -#_06F790: db 3 ; 0x01 -#_06F791: db 4 ; 0x02 -#_06F792: db -4 ; 0x03 -#_06F793: db -8 ; 0x04 -#_06F794: db 2 ; 0x05 -#_06F795: db 0 ; 0x06 -#_06F796: db -16 ; 0x07 -#_06F797: db 12 ; 0x08 -#_06F798: db -4 ; 0x09 -#_06F799: db -8 ; 0x0A -#_06F79A: db 0 ; 0x0B -#_06F79B: db -10 ; 0x0C -#_06F79C: db -16 ; 0x0D -#_06F79D: db 2 ; 0x0E -#_06F79E: db 2 ; 0x0F + db 0 ; 0x00 + db 3 ; 0x01 + db 4 ; 0x02 + db -4 ; 0x03 + db -8 ; 0x04 + db 2 ; 0x05 + db 0 ; 0x06 + db -16 ; 0x07 + db 12 ; 0x08 + db -4 ; 0x09 + db -8 ; 0x0A + db 0 ; 0x0B + db -10 ; 0x0C + db -16 ; 0x0D + db 2 ; 0x0E + db 2 ; 0x0F -#_06F79F: db 2 ; 0x10 -#_06F7A0: db 2 ; 0x11 -#_06F7A1: db -3 ; 0x12 -#_06F7A2: db -12 ; 0x13 -#_06F7A3: db 2 ; 0x14 -#_06F7A4: db 10 ; 0x15 -#_06F7A5: db 0 ; 0x16 -#_06F7A6: db -12 ; 0x17 -#_06F7A7: db 16 ; 0x18 -#_06F7A8: db 4 ; 0x19 -#_06F7A9: db -4 ; 0x1A -#_06F7AA: db -12 ; 0x1B -#_06F7AB: db 3 ; 0x1C -#_06F7AC: db -16 ; 0x1D -#_06F7AD: db -8 ; 0x1E -#_06F7AE: db 10 ; 0x1F + db 2 ; 0x10 + db 2 ; 0x11 + db -3 ; 0x12 + db -12 ; 0x13 + db 2 ; 0x14 + db 10 ; 0x15 + db 0 ; 0x16 + db -12 ; 0x17 + db 16 ; 0x18 + db 4 ; 0x19 + db -4 ; 0x1A + db -12 ; 0x1B + db 3 ; 0x1C + db -16 ; 0x1D + db -8 ; 0x1E + db 10 ; 0x1F ; --------------------------------------------------------- .offset_y_high -#_06F7AF: db 0 ; 0x00 -#_06F7B0: db 0 ; 0x01 -#_06F7B1: db 0 ; 0x02 -#_06F7B2: db -1 ; 0x03 -#_06F7B3: db -1 ; 0x04 -#_06F7B4: db 0 ; 0x05 -#_06F7B5: db 0 ; 0x06 -#_06F7B6: db -1 ; 0x07 -#_06F7B7: db 0 ; 0x08 -#_06F7B8: db -1 ; 0x09 -#_06F7B9: db -1 ; 0x0A -#_06F7BA: db 0 ; 0x0B -#_06F7BB: db -1 ; 0x0C -#_06F7BC: db -1 ; 0x0D -#_06F7BD: db 0 ; 0x0E -#_06F7BE: db 0 ; 0x0F + db 0 ; 0x00 + db 0 ; 0x01 + db 0 ; 0x02 + db -1 ; 0x03 + db -1 ; 0x04 + db 0 ; 0x05 + db 0 ; 0x06 + db -1 ; 0x07 + db 0 ; 0x08 + db -1 ; 0x09 + db -1 ; 0x0A + db 0 ; 0x0B + db -1 ; 0x0C + db -1 ; 0x0D + db 0 ; 0x0E + db 0 ; 0x0F -#_06F7BF: db 0 ; 0x10 -#_06F7C0: db 0 ; 0x11 -#_06F7C1: db -1 ; 0x12 -#_06F7C2: db -1 ; 0x13 -#_06F7C3: db 0 ; 0x14 -#_06F7C4: db 0 ; 0x15 -#_06F7C5: db 0 ; 0x16 -#_06F7C6: db -1 ; 0x17 -#_06F7C7: db 0 ; 0x18 -#_06F7C8: db 0 ; 0x19 -#_06F7C9: db -1 ; 0x1A -#_06F7CA: db -1 ; 0x1B -#_06F7CB: db 0 ; 0x1C -#_06F7CC: db -1 ; 0x1D -#_06F7CD: db -1 ; 0x1E -#_06F7CE: db 0 ; 0x1F + db 0 ; 0x10 + db 0 ; 0x11 + db -1 ; 0x12 + db -1 ; 0x13 + db 0 ; 0x14 + db 0 ; 0x15 + db 0 ; 0x16 + db -1 ; 0x17 + db 0 ; 0x18 + db 0 ; 0x19 + db -1 ; 0x1A + db -1 ; 0x1B + db 0 ; 0x1C + db -1 ; 0x1D + db -1 ; 0x1E + db 0 ; 0x1F ; --------------------------------------------------------- .height -#_06F7CF: db 14 ; 0x00 -#_06F7D0: db 1 ; 0x01 -#_06F7D1: db 16 ; 0x02 -#_06F7D2: db 21 ; 0x03 -#_06F7D3: db 24 ; 0x04 -#_06F7D4: db 4 ; 0x05 -#_06F7D5: db 8 ; 0x06 -#_06F7D6: db 40 ; 0x07 -#_06F7D7: db 20 ; 0x08 -#_06F7D8: db 24 ; 0x09 -#_06F7D9: db 40 ; 0x0A -#_06F7DA: db 29 ; 0x0B -#_06F7DB: db 36 ; 0x0C -#_06F7DC: db 48 ; 0x0D -#_06F7DD: db 60 ; 0x0E -#_06F7DE: db 124 ; 0x0F + db 14 ; 0x00 + db 1 ; 0x01 + db 16 ; 0x02 + db 21 ; 0x03 + db 24 ; 0x04 + db 4 ; 0x05 + db 8 ; 0x06 + db 40 ; 0x07 + db 20 ; 0x08 + db 24 ; 0x09 + db 40 ; 0x0A + db 29 ; 0x0B + db 36 ; 0x0C + db 48 ; 0x0D + db 60 ; 0x0E + db 124 ; 0x0F + + db 12 ; 0x10 + db 12 ; 0x11 + db 17 ; 0x12 + db 28 ; 0x13 + db 4 ; 0x14 + db 2 ; 0x15 + db 28 ; 0x16 + db 20 ; 0x17 + db 10 ; 0x18 + db 4 ; 0x19 + db 24 ; 0x1A + db 16 ; 0x1B + db 5 ; 0x1C + db 48 ; 0x1D + db 8 ; 0x1E + db 12 ; 0x1F -#_06F7DF: db 12 ; 0x10 -#_06F7E0: db 12 ; 0x11 -#_06F7E1: db 17 ; 0x12 -#_06F7E2: db 28 ; 0x13 -#_06F7E3: db 4 ; 0x14 -#_06F7E4: db 2 ; 0x15 -#_06F7E5: db 28 ; 0x16 -#_06F7E6: db 20 ; 0x17 -#_06F7E7: db 10 ; 0x18 -#_06F7E8: db 4 ; 0x19 -#_06F7E9: db 24 ; 0x1A -#_06F7EA: db 16 ; 0x1B -#_06F7EB: db 5 ; 0x1C -#_06F7EC: db 48 ; 0x1D -#_06F7ED: db 8 ; 0x1E -#_06F7EE: db 12 ; 0x1F \ No newline at end of file