summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIbot02 <jtp.jtp@gmx.de>2021-02-01 12:49:26 +0100
committerIbot02 <jtp.jtp@gmx.de>2021-02-01 12:50:27 +0100
commit54d8f8fa1bd3211f3d1902bfb3091c2db878aebd (patch)
tree8ab3ace48e5634642691af724df58beebe091d40
parentf26c22b0bff32cafc59a6f57adf261be5174be57 (diff)
Manager28.c: match nonmatching
-rw-r--r--asm/non_matching/manager28/Manager28_Init.inc56
-rw-r--r--src/manager/manager28.c34
2 files changed, 18 insertions, 72 deletions
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--;
}