From f94263db8ee202fccbbb8677a71bea9701d15f5a Mon Sep 17 00:00:00 2001 From: Behemoth Date: Tue, 25 Aug 2020 17:38:00 +0200 Subject: [PATCH] match non-matching acroBandits functions --- asm/non_matching/acroBandits/sub_08031C58.inc | 136 ------------------ asm/non_matching/acroBandits/sub_08031E04.inc | 41 ------ src/enemy/acroBandits.c | 43 ++---- 3 files changed, 13 insertions(+), 207 deletions(-) delete mode 100644 asm/non_matching/acroBandits/sub_08031C58.inc delete mode 100644 asm/non_matching/acroBandits/sub_08031E04.inc diff --git a/asm/non_matching/acroBandits/sub_08031C58.inc b/asm/non_matching/acroBandits/sub_08031C58.inc deleted file mode 100644 index 8d93c546..00000000 --- a/asm/non_matching/acroBandits/sub_08031C58.inc +++ /dev/null @@ -1,136 +0,0 @@ - - .syntax unified - - .text - - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r7, r0, #0 - bl GetNextFrame - adds r3, r7, #0 - adds r3, #0x5a - ldrb r1, [r3] - movs r0, #0x80 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r2, r0, #0x18 - cmp r2, #0 - beq _08031D54 - ldr r0, _08031D50 @ =gEntCount - ldrb r0, [r0] - cmp r0, #0x42 - bhi _08031D66 - bl Random - adds r6, r0, #0 - movs r0, #3 - mov sb, r0 - ands r6, r0 - movs r0, #0x2e - movs r1, #1 - bl CreateEnemy - adds r4, r0, #0 - movs r0, #0 - mov r8, r0 - mov r0, r8 - strb r0, [r4, #0xb] - mov r0, r8 - str r0, [r4, #0x50] - adds r0, r4, #0 - adds r0, #0x74 - strb r6, [r0] - adds r0, r7, #0 - adds r1, r4, #0 - bl sub_08031E48 - movs r0, #0x2e - movs r1, #1 - bl CreateEnemy - adds r5, r0, #0 - str r5, [r4, #0x54] - movs r0, #1 - strb r0, [r5, #0xb] - str r4, [r5, #0x50] - adds r0, r5, #0 - adds r0, #0x74 - strb r6, [r0] - adds r0, r7, #0 - adds r1, r5, #0 - bl sub_08031E48 - movs r0, #0x2e - movs r1, #1 - bl CreateEnemy - adds r4, r0, #0 - str r4, [r5, #0x54] - movs r0, #2 - strb r0, [r4, #0xb] - str r5, [r4, #0x50] - adds r0, r4, #0 - adds r0, #0x74 - strb r6, [r0] - adds r0, r7, #0 - adds r1, r4, #0 - bl sub_08031E48 - movs r0, #0x2e - movs r1, #1 - bl CreateEnemy - adds r5, r0, #0 - str r5, [r4, #0x54] - mov r0, sb - strb r0, [r5, #0xb] - str r4, [r5, #0x50] - adds r0, r5, #0 - adds r0, #0x74 - strb r6, [r0] - adds r0, r7, #0 - adds r1, r5, #0 - bl sub_08031E48 - movs r0, #0x2e - movs r1, #1 - bl CreateEnemy - adds r1, r0, #0 - str r1, [r5, #0x54] - movs r0, #4 - strb r0, [r1, #0xb] - str r5, [r1, #0x50] - mov r0, r8 - str r0, [r1, #0x54] - adds r0, r1, #0 - adds r0, #0x74 - strb r6, [r0] - adds r0, r7, #0 - bl sub_08031E48 - movs r0, #6 - strb r0, [r7, #0xc] - movs r0, #0x14 - strb r0, [r7, #0xe] - adds r2, r7, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #7 - orrs r0, r1 - strb r0, [r2] - adds r0, r7, #0 - movs r1, #7 - bl InitializeAnimation - b _08031D66 - .align 2, 0 -_08031D50: .4byte gEntCount -_08031D54: - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08031D66 - strb r2, [r3] - ldrb r1, [r7, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r7, #0x10] -_08031D66: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - .syntax divided - \ No newline at end of file diff --git a/asm/non_matching/acroBandits/sub_08031E04.inc b/asm/non_matching/acroBandits/sub_08031E04.inc deleted file mode 100644 index 464f2572..00000000 --- a/asm/non_matching/acroBandits/sub_08031E04.inc +++ /dev/null @@ -1,41 +0,0 @@ - - .syntax unified - - .text - - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - bl sub_08049DF4 - adds r2, r0, #0 - cmp r2, #0 - beq _08031E44 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r0, [r0] - movs r3, #6 - ands r3, r0 - ldr r0, _08031E40 @ =gUnk_080CE5C0 - adds r3, r3, r0 - movs r0, #0x2e - ldrsh r1, [r2, r0] - movs r0, #0 - ldrsb r0, [r3, r0] - adds r1, r1, r0 - movs r0, #0x32 - ldrsh r2, [r2, r0] - movs r0, #1 - ldrsb r0, [r3, r0] - adds r2, r2, r0 - adds r0, r4, #0 - movs r3, #0x50 - bl sub_0806FCB8 - b _08031E46 - .align 2, 0 -_08031E40: .4byte gUnk_080CE5C0 -_08031E44: - movs r0, #0 -_08031E46: - pop {r4, pc} - .syntax divided - \ No newline at end of file diff --git a/src/enemy/acroBandits.c b/src/enemy/acroBandits.c index 7289d3a7..e3c3d9be 100644 --- a/src/enemy/acroBandits.c +++ b/src/enemy/acroBandits.c @@ -29,7 +29,7 @@ extern void (*const gUnk_080CE58C[])(Entity*); extern void (*const gUnk_080CE5C8[])(Entity*); extern u8 gUnk_080CE5B0[8]; extern u8 gUnk_080CE5B8[8]; -extern union SplitHWord gUnk_080CE5C0[4]; +extern s8 gUnk_080CE5C0[8]; extern u16 gUnk_080CE5F0[5]; extern u8 gUnk_080CE5FA[20]; // Directions @@ -209,15 +209,14 @@ void sub_08031C1C(Entity* this) { } } -#if NON_MATCHING + void sub_08031C58(Entity* this) { - u8 tmp; Entity *a, *b; GetNextFrame(this); if (this->frames.b.f3) { if (gEntCount < 0x43) { - tmp = Random(); + u32 tmp = Random(); tmp &= 3; a = CreateEnemy(0x2e, 1); @@ -225,30 +224,30 @@ void sub_08031C58(Entity* this) { a->parent = NULL; a->field_0x74.HALF.LO = tmp; sub_08031E48(this, a); + a->attachedEntity = CreateEnemy(0x2e, 1); - b = CreateEnemy(0x2e, 1); - a->attachedEntity = b; + b = a->attachedEntity; b->entityType.parameter = 1; b->parent = a; b->field_0x74.HALF.LO = tmp; sub_08031E48(this, b); + b->attachedEntity = CreateEnemy(0x2e, 1); - a = CreateEnemy(0x2e, 1); - b->attachedEntity = a; + a = b->attachedEntity; a->entityType.parameter = 2; a->parent = b; a->field_0x74.HALF.LO = tmp; sub_08031E48(this, a); + a->attachedEntity = CreateEnemy(0x2e, 1); - b = CreateEnemy(0x2e, 1); - a->attachedEntity = b; + b = a->attachedEntity; b->entityType.parameter = 3; b->parent = a; b->field_0x74.HALF.LO = tmp; sub_08031E48(this, b); + b->attachedEntity = CreateEnemy(0x2e, 1); - a = CreateEnemy(0x2e, 1); - b->attachedEntity = a; + a = b->attachedEntity; a->entityType.parameter = 4; a->parent = b; a->attachedEntity = NULL; @@ -267,12 +266,6 @@ void sub_08031C58(Entity* this) { } } } -#else -NAKED -void sub_08031C58(Entity* this) { - asm(".include \"asm/non_matching/acroBandits/sub_08031C58.inc\""); -} -#endif void sub_08031D70(Entity* this) { GetNextFrame(this); @@ -308,27 +301,17 @@ void sub_08031DC4(Entity* this) { } } -#if NON_MATCHING u32 sub_08031E04(Entity* this) { Entity* ent; - union SplitHWord* tmp; - int x, y; + s8* tmp; ent = sub_08049DF4(1); if (ent == NULL) return 0; tmp = &gUnk_080CE5C0[this->frames.all & 6]; - x = ent->x.HALF.HI + tmp->HALF.LO; - y = ent->y.HALF.HI + tmp->HALF.HI; - return sub_0806FCB8(this, x, y, 0x50); + return sub_0806FCB8(this, ent->x.HALF.HI + tmp[0], ent->y.HALF.HI + tmp[1], 0x50); } -#else -NAKED -u32 sub_08031E04(Entity* this) { - asm(".include \"asm/non_matching/acroBandits/sub_08031E04.inc\""); -} -#endif void sub_08031E48(Entity* this, Entity* child) { CopyPosition(this, child);