summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhatal175 <hatal175@users.noreply.github.com>2023-04-24 10:17:53 +0000
committerhatal175 <hatal175@users.noreply.github.com>2023-04-24 21:17:31 +0000
commitb079dee500f7e6fb9fab92b4df2b0874f81a9fae (patch)
tree9b9ef97d2b14ca5983a2757046464f9a63d6986d
parentbc550a87931f4899dfaedf4ecf81c3cb7e4157dc (diff)
Match sub_080AC5E4
-rw-r--r--asm/non_matching/gyorgTail/sub_080AC5E4.inc134
-rw-r--r--src/projectile/gyorgTail.c46
2 files changed, 26 insertions, 154 deletions
diff --git a/asm/non_matching/gyorgTail/sub_080AC5E4.inc b/asm/non_matching/gyorgTail/sub_080AC5E4.inc
deleted file mode 100644
index 1bd2d4b8..00000000
--- a/asm/non_matching/gyorgTail/sub_080AC5E4.inc
+++ /dev/null
@@ -1,134 +0,0 @@
- .syntax unified
- push {r4, r5, r6, r7, lr}
- mov r7, sb
- mov r6, r8
- push {r6, r7}
- adds r5, r0, #0
- ldrb r4, [r5, #0xa]
- cmp r4, #0
- bne _080AC668
- ldr r0, _080AC664 @ =gEntCount
- ldrb r0, [r0]
- cmp r0, #0x43
- bhi _080AC670
- adds r1, r5, #0
- adds r1, #0x79
- movs r0, #0x11
- strb r0, [r1]
- movs r0, #0x22
- bl CreateProjectile
- adds r6, r0, #0
- ldrb r0, [r5, #0xa]
- strb r0, [r6, #0xa]
- movs r0, #1
- strb r0, [r6, #0xb]
- ldr r0, [r5, #0x50]
- str r0, [r6, #0x50]
- adds r1, r6, #0
- adds r1, #0x79
- movs r0, #0x12
- strb r0, [r1]
- str r6, [r5, #0x54]
- movs r0, #0x22
- bl CreateProjectile
- adds r7, r0, #0
- ldrb r0, [r5, #0xa]
- strb r0, [r7, #0xa]
- movs r0, #2
- strb r0, [r7, #0xb]
- ldr r0, [r5, #0x50]
- str r0, [r7, #0x50]
- adds r0, r7, #0
- adds r0, #0x79
- movs r1, #0x14
- mov r8, r1
- mov r1, r8
- strb r1, [r0]
- str r7, [r6, #0x54]
- movs r0, #0x22
- bl CreateProjectile
- ldrb r1, [r5, #0xa]
- strb r1, [r0, #0xa]
- movs r1, #3
- strb r1, [r0, #0xb]
- ldr r1, [r5, #0x50]
- str r1, [r0, #0x50]
- str r4, [r0, #0x54]
- adds r1, r0, #0
- adds r1, #0x79
- strb r4, [r1]
- str r0, [r7, #0x54]
- b _080AC6C8
- .align 2, 0
-_080AC664: .4byte gEntCount
-_080AC668:
- ldr r0, _080AC674 @ =gEntCount
- ldrb r0, [r0]
- cmp r0, #0x44
- bls _080AC678
-_080AC670:
- movs r0, #0
- b _080AC6E8
- .align 2, 0
-_080AC674: .4byte gEntCount
-_080AC678:
- adds r1, r5, #0
- adds r1, #0x79
- movs r0, #0
- mov sb, r0
- movs r0, #0xf
- strb r0, [r1]
- movs r0, #0x22
- bl CreateProjectile
- adds r6, r0, #0
- ldrb r0, [r5, #0xa]
- strb r0, [r6, #0xa]
- movs r0, #1
- strb r0, [r6, #0xb]
- ldr r0, [r5, #0x50]
- str r0, [r6, #0x50]
- adds r0, r6, #0
- adds r0, #0x79
- movs r1, #0x10
- mov r8, r1
- mov r1, r8
- strb r1, [r0]
- str r6, [r5, #0x54]
- movs r0, #0x22
- bl CreateProjectile
- adds r7, r0, #0
- ldrb r0, [r5, #0xa]
- strb r0, [r7, #0xa]
- movs r0, #2
- strb r0, [r7, #0xb]
- ldr r0, [r5, #0x50]
- str r0, [r7, #0x50]
- mov r0, sb
- str r0, [r7, #0x54]
- adds r1, r7, #0
- adds r1, #0x79
- movs r0, #0x20
- strb r0, [r1]
- str r7, [r6, #0x54]
-_080AC6C8:
- movs r0, #0x22
- bl CreateProjectile
- adds r6, r0, #0
- ldrb r0, [r5, #0xa]
- strb r0, [r6, #0xa]
- movs r0, #4
- strb r0, [r6, #0xb]
- ldr r0, [r5, #0x50]
- str r0, [r6, #0x50]
- str r5, [r6, #0x54]
- adds r0, r6, #0
- adds r0, #0x79
- mov r1, r8
- strb r1, [r0]
- movs r0, #1
-_080AC6E8:
- pop {r3, r4}
- mov r8, r3
- mov sb, r4
- pop {r4, r5, r6, r7, pc}
- .syntax divided
diff --git a/src/projectile/gyorgTail.c b/src/projectile/gyorgTail.c
index c3657692..1f191f7a 100644
--- a/src/projectile/gyorgTail.c
+++ b/src/projectile/gyorgTail.c
@@ -169,70 +169,76 @@ void sub_080AC560(Entity* this) {
this->y.WORD = entity->y.WORD - gSineTable[entity->direction + 0x40] * factor;
}
-NONMATCH("asm/non_matching/gyorgTail/sub_080AC5E4.inc", bool32 sub_080AC5E4(Entity* this)) {
+bool32 sub_080AC5E4(Entity* this) {
// TODO regalloc
Entity* entity;
+ Entity* new_var2;
Entity* entity2;
Entity* entity3;
Entity* entity4;
- u8 uVar3;
if (this->type == 0) {
- if (0x43 < gEntCount) {
+ if (gEntCount > 0x43) {
return FALSE;
}
this->field_0x78.HALF.HI = 0x11;
- entity = CreateProjectile(0x22);
+ entity = CreateProjectile(GYORG_TAIL);
entity->type = this->type;
entity->type2 = 1;
entity->parent = this->parent;
entity->field_0x78.HALF.HI = 0x12;
this->child = entity;
- entity2 = CreateProjectile(0x22);
+
+ entity2 = CreateProjectile(GYORG_TAIL);
entity2->type = this->type;
entity2->type2 = 2;
entity2->parent = this->parent;
entity2->field_0x78.HALF.HI = 0x14;
- uVar3 = entity2->field_0x78.HALF.HI;
- entity2->field_0x78.HALF.HI = uVar3;
entity->child = entity2;
- entity3 = CreateProjectile(0x22);
+
+ entity3 = CreateProjectile(GYORG_TAIL);
entity3->type = this->type;
entity3->type2 = 3;
entity3->parent = this->parent;
entity3->child = NULL;
entity3->field_0x78.HALF.HI = 0;
entity2->child = entity3;
+
+ entity = CreateProjectile(GYORG_TAIL);
+ entity->type = this->type;
+ entity->type2 = 4;
+ entity->parent = this->parent;
+ entity->child = this;
+ entity->field_0x78.HALF.HI = 0x14;
} else {
- if (0x44 < gEntCount) {
+ if (gEntCount > 0x44) {
return FALSE;
}
this->field_0x78.HALF.HI = 0xf;
- entity = CreateProjectile(0x22);
+ entity = CreateProjectile(GYORG_TAIL);
entity->type = this->type;
entity->type2 = 1;
entity->parent = this->parent;
entity->field_0x78.HALF.HI = 0x10;
- uVar3 = entity->field_0x78.HALF.HI;
- entity->field_0x78.HALF.HI = uVar3;
this->child = entity;
- entity2 = CreateProjectile(0x22);
+
+ entity2 = CreateProjectile(GYORG_TAIL);
entity2->type = this->type;
entity2->type2 = 2;
entity2->parent = this->parent;
entity2->child = NULL;
entity2->field_0x78.HALF.HI = 0x20;
entity->child = entity2;
+
+ entity = CreateProjectile(GYORG_TAIL);
+ entity->type = this->type;
+ entity->type2 = 4;
+ entity->parent = this->parent;
+ entity->child = this;
+ entity->field_0x78.HALF.HI = 0x10;
}
- entity = CreateProjectile(0x22);
- entity->type = this->type;
- entity->type2 = 4;
- entity->parent = this->parent;
- entity->child = this;
- entity->field_0x78.HALF.HI = uVar3;
return TRUE;
}
-END_NONMATCH
void sub_080AC6F0(Entity* this) {
static const u8 gUnk_0812A9C0[] = { 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,