From 0c8b765fba1ef39de97629df8ec1d2ddd370eef0 Mon Sep 17 00:00:00 2001 From: scawful Date: Sun, 25 Feb 2024 10:26:01 -0500 Subject: [PATCH] Add Sprite_SetupHitbox and Link_SetupHitbox to common sprite lib --- Sprites/ZSpriteLib/sprite_new_functions.asm | 289 +++++++++++++++++++- 1 file changed, 288 insertions(+), 1 deletion(-) diff --git a/Sprites/ZSpriteLib/sprite_new_functions.asm b/Sprites/ZSpriteLib/sprite_new_functions.asm index 2f3253b..285e688 100644 --- a/Sprites/ZSpriteLib/sprite_new_functions.asm +++ b/Sprites/ZSpriteLib/sprite_new_functions.asm @@ -324,4 +324,291 @@ Link_CheckNewY_ButtonPress_Long: .fail CLC RTL -} \ No newline at end of file +} + +Link_SetupHitBox: +{ + LDA.b #$08 : STA $02 : STA $03 + + LDA $22 : CLC : ADC.b #$04 : STA $00 + LDA $23 : ADC.b #$00 : STA $08 + + LDA $20 : ADC.b #$08 : STA $01 + LDA $21 : ADC.b #$00 : STA $09 + + RTS +} + + +Sprite_SetupHitBox: +#_06F7EF: LDA.w $0F70, X +#_06F7F2: BMI .too_high + +#_06F7F4: PHY + +#_06F7F5: LDA.w $0F60, X +#_06F7F8: AND.b #$1F +#_06F7FA: TAY + +#_06F7FB: LDA.w $0D10, X +#_06F7FE: CLC +#_06F7FF: ADC.w .offset_x_low, Y +#_06F802: STA.b $04 + +#_06F804: LDA.w $0D30, X +#_06F807: ADC.w .offset_x_high, Y +#_06F80A: STA.b $0A + +#_06F80C: LDA.w $0D00, X +#_06F80F: CLC +#_06F810: ADC.w .offset_y_low, Y + +#_06F813: PHP +#_06F814: SEC +#_06F815: SBC.w $0F70, X +#_06F818: STA.b $05 + +#_06F81A: LDA.w $0D20, X +#_06F81D: SBC.b #$00 + +#_06F81F: PLP +#_06F820: ADC.w .offset_y_high, Y +#_06F823: STA.b $0B + +#_06F825: LDA.w .width, Y +#_06F828: STA.b $06 + +#_06F82A: LDA.w .height, Y +#_06F82D: STA.b $07 + +#_06F82F: PLY + +#_06F830: RTS + +; --------------------------------------------------------- + +.too_high +#_06F831: LDA.b #$80 +#_06F833: STA.b $0A + +#_06F835: RTS + +.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 + +#_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 + +; --------------------------------------------------------- + +.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 + +#_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 + +; --------------------------------------------------------- + +.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 + +#_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 + +; --------------------------------------------------------- + +.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 + +#_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 + +; --------------------------------------------------------- + +.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 + +#_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 + +; --------------------------------------------------------- + +.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 + +#_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