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,