From 54d8f8fa1bd3211f3d1902bfb3091c2db878aebd Mon Sep 17 00:00:00 2001 From: Ibot02 Date: Mon, 1 Feb 2021 12:49:26 +0100 Subject: [PATCH] Manager28.c: match nonmatching --- asm/non_matching/manager28/Manager28_Init.inc | 56 ------------------- src/manager/manager28.c | 34 +++++------ 2 files changed, 18 insertions(+), 72 deletions(-) delete mode 100644 asm/non_matching/manager28/Manager28_Init.inc diff --git a/asm/non_matching/manager28/Manager28_Init.inc b/asm/non_matching/manager28/Manager28_Init.inc deleted file mode 100644 index 45cfc6cb..00000000 --- a/asm/non_matching/manager28/Manager28_Init.inc +++ /dev/null @@ -1,56 +0,0 @@ -sub_0805C94C: @ 0x0805C94C - push {r4, r5, r6, lr} - add r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _0805C9B0 - add r6, r4, #0 - add r6, r6, #0x20 - add r1, r6, #0 - mov r2, #0 - add r0, r4, #0 - add r0, r0, #0x3c -_0805C962: - str r2, [r0] - sub r0, r0, #0x4 - cmp r0, r1 - bge _0805C962 - add r0, r4, #0 - bl Manager28_FindMatchingEntities - add r5, r0, #0 - cmp r5, #0x1 - ble _0805C9A8 - bl GetEmptyManager - add r2, r0, #0 - cmp r2, #0 - beq _0805C9A8 - mov r0, #0x9 - strb r0, [r2, #0x8] - mov r0, #0x28 - strb r0, [r2, #0x9] - mov r0, #0x1 - strb r0, [r2, #0xa] - strb r5, [r2, #0xe] - add r1, r2, #0 - add r1, r1, #0x20 - add r0, r6, #0 - ldm r0!, {r3, r5, r6} - stm r1!, {r3, r5, r6} - ldm r0!, {r3, r5, r6} - stm r1!, {r3, r5, r6} - ldm r0!, {r3, r5} - stm r1!, {r3, r5} - add r0, r2, #0 - mov r1, #0x6 - bl AppendEntityToList -_0805C9A8: - add r0, r4, #0 - bl DeleteManager - b _0805C9B8 -_0805C9B0: - mov r1, #0 - mov r0, #0x1 - strb r0, [r4, #0xc] - strb r1, [r4, #0xf] -_0805C9B8: - pop {r4, r5, r6, pc} diff --git a/src/manager/manager28.c b/src/manager/manager28.c index 382f072f..66864d13 100644 --- a/src/manager/manager28.c +++ b/src/manager/manager28.c @@ -6,7 +6,9 @@ typedef struct { Manager manager; - Entity* enemies[8]; + struct { + Entity* enemies[8]; + } d; } Manager28; void Manager28_Entry(Manager28*); @@ -35,12 +37,12 @@ void Manager28_Entry(Manager28* this) { Manager28_ActionFuncs[this->manager.action](this); } -NONMATCH("asm/non_matching/manager28/Manager28_Init.inc", void Manager28_Init(Manager28* this)) { +void Manager28_Init(Manager28* this) { if (this->manager.unk_0a == DoInit) { s32 tmp2; int tmp4; for (tmp4 = 0; tmp4 < 8; tmp4++) { - this->enemies[tmp4] = 0; + this->d.enemies[tmp4] = 0; } tmp2 = Manager28_FindMatchingEntities(this); if (tmp2 > 1) { @@ -50,9 +52,10 @@ NONMATCH("asm/non_matching/manager28/Manager28_Init.inc", void Manager28_Init(Ma tmp3->manager.subtype = 0x28; tmp3->manager.unk_0a = DoNotInit; tmp3->manager.unk_0e = tmp2; - for (tmp4 = 0; tmp4 < 8; tmp4++) { - tmp3->enemies[tmp4] = this->enemies[tmp4]; - } + /* for (tmp4 = 0; tmp4 < 8; tmp4++) { */ + /* tmp3->enemies[tmp4] = this->enemies[tmp4]; */ + /* } */ + tmp3->d = this->d; AppendEntityToList(tmp3, 6); } } @@ -62,7 +65,6 @@ NONMATCH("asm/non_matching/manager28/Manager28_Init.inc", void Manager28_Init(Ma this->manager.unk_0f = 0; } } -END_NONMATCH void Manager28_Main(Manager28* this) { s32 n; @@ -73,16 +75,16 @@ void Manager28_Main(Manager28* this) { n = this->manager.unk_0e - 1; if ((this->manager.unk_0f++) & 1) { for (i = 0; i < n; i++) { - tmp = this->enemies[i]; + tmp = this->d.enemies[i]; for (j = i + 1; j < this->manager.unk_0e; j++) { - sub_08004484(tmp, this->enemies[j]); + sub_08004484(tmp, this->d.enemies[j]); } } } else { for (i = 0; i < n; i++) { - tmp = this->enemies[i]; + tmp = this->d.enemies[i]; for (j = i + 1; j < this->manager.unk_0e; j++) { - sub_08004484(this->enemies[j], tmp); + sub_08004484(this->d.enemies[j], tmp); } } } @@ -99,10 +101,10 @@ u32 Manager28_FindMatchingEntities(Manager28* this) { tmp2 = Manager28_FindMatchingEntity(tmp); if (!tmp2) continue; for (i = 0; i < re; i++) { - if (this->enemies[i] == tmp2) break; + if (this->d.enemies[i] == tmp2) break; } if (i != re) continue; - this->enemies[re++] = tmp2; + this->d.enemies[re++] = tmp2; if (re == 8) return 8; } return re; @@ -130,11 +132,11 @@ Entity* Manager28_FindMatchingEntity(EntityData* unk1) { void Manager28_RemoveDeletedEntities(Manager28* this) { s32 i; for (i = 0; i < this->manager.unk_0e; i++) { - if (this->enemies[i]->next == 0) { + if (this->d.enemies[i]->next == 0) { if (this->manager.unk_0e-1 == i) { - this->enemies[i] = 0; + this->d.enemies[i] = 0; } else { - this->enemies[i] = this->enemies[this->manager.unk_0e-1]; + this->d.enemies[i] = this->d.enemies[this->manager.unk_0e-1]; } this->manager.unk_0e--; }