summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTal Hayon <talhayon1@gmail.com>2022-05-21 15:36:50 +0300
committerTal Hayon <talhayon1@gmail.com>2022-05-21 15:36:50 +0300
commit6bb4086f60ccd5e5c39de1a2de2875cdc4d740fb (patch)
tree1b1cf8a1cd0197c14720cfa134c3fca7eb52fbb6
parent74eaddb834871ee475e6f68d3a31786a2861a148 (diff)
Match sub_080AC6F0
-rw-r--r--asm/non_matching/gyorgTail/sub_080AC388.inc128
-rw-r--r--asm/non_matching/gyorgTail/sub_080AC6F0.inc63
-rw-r--r--src/projectile/gyorgTail.c56
3 files changed, 51 insertions, 196 deletions
diff --git a/asm/non_matching/gyorgTail/sub_080AC388.inc b/asm/non_matching/gyorgTail/sub_080AC388.inc
deleted file mode 100644
index 91a15698..00000000
--- a/asm/non_matching/gyorgTail/sub_080AC388.inc
+++ /dev/null
@@ -1,128 +0,0 @@
- .syntax unified
- push {r4, r5, r6, r7, lr}
- mov r7, sl
- mov r6, sb
- mov r5, r8
- push {r5, r6, r7}
- adds r5, r0, #0
- ldr r1, _080AC3E4 @ =gUnk_0812A9B8
- ldrb r0, [r5, #0xa]
- adds r0, r0, r1
- ldrb r3, [r0]
- ldr r0, [r5, #0x50]
- mov sl, r0
- ldrb r0, [r0, #0x14]
- movs r1, #0x80
- mov sb, r1
- mov r1, sb
- eors r1, r0
- adds r6, r5, #0
- adds r6, #0x7c
- ldrh r4, [r6]
- lsrs r0, r4, #8
- subs r1, r1, r0
- adds r2, r5, #0
- adds r2, #0x7a
- ldrh r7, [r2]
- mov ip, r7
- movs r7, #0
- ldrsh r0, [r2, r7]
- cmp r0, #0
- bge _080AC404
- subs r0, r1, r3
- movs r7, #0xff
- mov r8, r7
- ands r0, r7
- cmp r0, #0x7f
- bhi _080AC3E8
- movs r1, #0
- ldrsh r0, [r2, r1]
- rsbs r0, r0, #0
- strh r0, [r2]
- mov r2, sl
- ldrb r0, [r2, #0x14]
- mov r7, sb
- eors r0, r7
- subs r0, r0, r3
- b _080AC422
- .align 2, 0
-_080AC3E4: .4byte gUnk_0812A9B8
-_080AC3E8:
- mov r2, ip
- adds r0, r4, r2
- strh r0, [r6]
- adds r0, r1, r3
- mov r7, r8
- ands r0, r7
- cmp r0, #0x80
- bls _080AC45A
- mov r1, sl
- ldrb r0, [r1, #0x14]
- mov r2, sb
- eors r0, r2
- adds r0, r0, r3
- b _080AC44E
-_080AC404:
- adds r0, r1, r3
- movs r7, #0xff
- mov r8, r7
- ands r0, r7
- cmp r0, #0x80
- bls _080AC432
- movs r1, #0
- ldrsh r0, [r2, r1]
- rsbs r0, r0, #0
- strh r0, [r2]
- mov r2, sl
- ldrb r0, [r2, #0x14]
- mov r7, sb
- eors r0, r7
- adds r0, r0, r3
-_080AC422:
- movs r1, #0xff
- ands r0, r1
- lsls r0, r0, #8
- strh r0, [r6]
- adds r0, r5, #0
- bl sub_080AC884
- b _080AC45A
-_080AC432:
- mov r2, ip
- adds r0, r4, r2
- strh r0, [r6]
- subs r0, r1, r3
- mov r7, r8
- ands r0, r7
- subs r0, #1
- cmp r0, #0x7e
- bhi _080AC45A
- mov r1, sl
- ldrb r0, [r1, #0x14]
- mov r2, sb
- eors r0, r2
- subs r0, r0, r3
-_080AC44E:
- movs r1, #0xff
- ands r0, r1
- lsls r0, r0, #8
- movs r1, #0x80
- orrs r0, r1
- strh r0, [r6]
-_080AC45A:
- adds r0, r5, #0
- adds r0, #0x7c
- ldrh r0, [r0]
- lsrs r0, r0, #8
- strb r0, [r5, #0x15]
- adds r0, r5, #0
- bl sub_080AC6F0
- adds r0, r5, #0
- bl sub_080AC760
- adds r0, r5, #0
- bl sub_080AC7C4
- pop {r3, r4, r5}
- mov r8, r3
- mov sb, r4
- mov sl, r5
- pop {r4, r5, r6, r7, pc}
- .syntax divided
diff --git a/asm/non_matching/gyorgTail/sub_080AC6F0.inc b/asm/non_matching/gyorgTail/sub_080AC6F0.inc
deleted file mode 100644
index 74864ad8..00000000
--- a/asm/non_matching/gyorgTail/sub_080AC6F0.inc
+++ /dev/null
@@ -1,63 +0,0 @@
- .syntax unified
- push {r4, r5, lr}
- adds r4, r0, #0
- ldrb r0, [r4, #0x15]
- movs r2, #0x1f
- ands r2, r0
- lsrs r0, r0, #5
- lsls r1, r0, #1
- adds r3, r1, r0
- ldr r1, _080AC724 @ =gUnk_0812A9C0
- ldrb r0, [r4, #0x14]
- adds r0, r0, r1
- ldrb r0, [r0]
- subs r0, r0, r3
- adds r5, r1, #0
- cmp r0, #3
- bhi _080AC73A
- cmp r0, #1
- beq _080AC72E
- cmp r0, #1
- blo _080AC728
- cmp r0, #2
- beq _080AC732
- cmp r2, #0x19
- bhi _080AC75C
- b _080AC73A
- .align 2, 0
-_080AC724: .4byte gUnk_0812A9C0
-_080AC728:
- cmp r2, #6
- bls _080AC75C
- b _080AC73A
-_080AC72E:
- subs r0, r2, #5
- b _080AC736
-_080AC732:
- adds r0, r2, #0
- subs r0, #0xf
-_080AC736:
- cmp r0, #0xc
- bls _080AC75C
-_080AC73A:
- adds r0, r3, #3
- cmp r2, #0x1a
- bhi _080AC74E
- adds r0, r3, #2
- cmp r2, #0x10
- bhi _080AC74E
- adds r0, r3, #0
- cmp r2, #5
- bls _080AC74E
- adds r0, #1
-_080AC74E:
- movs r1, #0x18
- bl __modsi3
- strb r0, [r4, #0x14]
- adds r0, r0, r5
- ldrb r0, [r0]
- strb r0, [r4, #0x1e]
-_080AC75C:
- pop {r4, r5, pc}
- .align 2, 0
- .syntax divided
diff --git a/src/projectile/gyorgTail.c b/src/projectile/gyorgTail.c
index 41bc29f0..586c90bd 100644
--- a/src/projectile/gyorgTail.c
+++ b/src/projectile/gyorgTail.c
@@ -6,8 +6,6 @@
#include "projectile.h"
#include "hitbox.h"
-extern const u8 gUnk_0812A9C0[];
-
bool32 sub_080AC5E4(Entity*);
void sub_080AC388(Entity*);
void sub_080AC6F0(Entity*);
@@ -234,7 +232,57 @@ NONMATCH("asm/non_matching/gyorgTail/sub_080AC5E4.inc", bool32 sub_080AC5E4(Enti
}
END_NONMATCH
-ASM_FUNC("asm/non_matching/gyorgTail/sub_080AC6F0.inc", void sub_080AC6F0(Entity* this))
+void sub_080AC6F0(Entity* this) {
+ static const u8 gUnk_0812A9C0[] = { 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
+
+ u32 uVar1;
+ s32 iVar2;
+ s32 iVar3;
+ u32 uVar4;
+ u32 tmp;
+
+ uVar4 = this->direction & 0x1f;
+ uVar1 = this->direction >> 5;
+ iVar3 = uVar1 * 3;
+ tmp = gUnk_0812A9C0[this->animationState] - uVar1 * 3;
+ if (tmp <= 3) {
+ switch (tmp) {
+ default:
+ if (uVar4 > 0x19) {
+ return;
+ }
+ break;
+ case 0:
+ if (uVar4 < 7) {
+ return;
+ }
+ break;
+ case 1:
+ if (uVar4 - 5 < 0xd) {
+ return;
+ }
+ break;
+ case 2:
+ if (uVar4 - 0xf < 0xd) {
+ return;
+ }
+ break;
+ }
+ }
+ iVar2 = iVar3 + 3;
+ if (uVar4 < 0x1b) {
+ iVar2 = iVar3 + 2;
+ if (uVar4 < 0x11) {
+ iVar2 = iVar3;
+ if (5 < uVar4) {
+ iVar2 = iVar3 + 1;
+ }
+ }
+ }
+ this->animationState = iVar2 % 0x18;
+ this->frameIndex = gUnk_0812A9C0[iVar2 % 0x18];
+}
void sub_080AC760(Entity* param_1) {
s32 tmp;
@@ -311,5 +359,3 @@ void sub_080AC884(Entity* this) {
this->subtimer = 0x56;
}
}
-
-const u8 gUnk_0812A9C0[] = { 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };