diff --git a/asm/non_matching/manager34/Manager34_Main.inc b/asm/non_matching/manager34/Manager34_Main.inc deleted file mode 100644 index c5a64403..00000000 --- a/asm/non_matching/manager34/Manager34_Main.inc +++ /dev/null @@ -1,16 +0,0 @@ - .syntax unified - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0805DBB0 @ =gUnk_08108D8C - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0805DBF0 - pop {r4, pc} - .align 2, 0 -_0805DBB0: .4byte gUnk_08108D8C - .syntax divided diff --git a/asm/non_matching/manager34/nullsub_498.inc b/asm/non_matching/manager34/nullsub_498.inc deleted file mode 100644 index 807ea5e0..00000000 --- a/asm/non_matching/manager34/nullsub_498.inc +++ /dev/null @@ -1,4 +0,0 @@ - .syntax unified - bx lr - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/manager34/sub_0805DBB4.inc b/asm/non_matching/manager34/sub_0805DBB4.inc deleted file mode 100644 index 65c91e5c..00000000 --- a/asm/non_matching/manager34/sub_0805DBB4.inc +++ /dev/null @@ -1,14 +0,0 @@ - .syntax unified - movs r1, #1 - strb r1, [r0, #0xc] - ldr r1, _0805DBC8 @ =gScreenTransition - adds r1, #0x3d - ldrb r2, [r1] - lsls r1, r2, #4 - subs r1, r1, r2 - lsls r1, r1, #2 - strh r1, [r0, #0x20] - bx lr - .align 2, 0 -_0805DBC8: .4byte gScreenTransition - .syntax divided diff --git a/asm/non_matching/manager34/sub_0805DBCC.inc b/asm/non_matching/manager34/sub_0805DBCC.inc deleted file mode 100644 index b9fdf79f..00000000 --- a/asm/non_matching/manager34/sub_0805DBCC.inc +++ /dev/null @@ -1,19 +0,0 @@ - .syntax unified - push {lr} - adds r1, r0, #0 - ldr r0, [r1, #0x14] - ldr r0, [r0, #4] - cmp r0, #0 - bne _0805DBE6 - movs r0, #2 - strb r0, [r1, #0xc] - ldrh r0, [r1, #0x20] - ldr r2, _0805DBE8 @ =0x0000012D - cmp r0, r2 - bls _0805DBE6 - strh r2, [r1, #0x20] -_0805DBE6: - pop {pc} - .align 2, 0 -_0805DBE8: .4byte 0x0000012D - .syntax divided diff --git a/asm/non_matching/manager34/sub_0805DC70.inc b/asm/non_matching/manager34/sub_0805DC70.inc deleted file mode 100644 index 062503cd..00000000 --- a/asm/non_matching/manager34/sub_0805DC70.inc +++ /dev/null @@ -1,9 +0,0 @@ - .syntax unified - push {lr} - bl sub_0805E5A8 - ldr r0, _0805DC80 @ =gUnk_0813AC48 - bl DoExitTransition - pop {pc} - .align 2, 0 -_0805DC80: .4byte gUnk_0813AC48 - .syntax divided diff --git a/src/manager/manager34.c b/src/manager/manager34.c index d3b4c51c..df4ce8e6 100644 --- a/src/manager/manager34.c +++ b/src/manager/manager34.c @@ -1,13 +1,39 @@ #include "manager.h" +#include "structures.h" +#include "functions.h" -ASM_FUNC("asm/non_matching/manager34/Manager34_Main.inc", void Manager34_Main()) +typedef struct { + Manager manager; + u16 field_0x20; +} Manager34; -ASM_FUNC("asm/non_matching/manager34/sub_0805DBB4.inc", void sub_0805DBB4()) +extern void (*const gUnk_08108D8C[])(Manager34*); +void sub_0805DBF0(Manager34*); -ASM_FUNC("asm/non_matching/manager34/sub_0805DBCC.inc", void sub_0805DBCC()) +extern ScreenTransitionData gUnk_0813AC48; -ASM_FUNC("asm/non_matching/manager34/nullsub_498.inc", void nullsub_498()) +void Manager34_Main(Manager34* this) { + gUnk_08108D8C[this->manager.action](this); + sub_0805DBF0(this); +} -ASM_FUNC("asm/non_matching/manager34/sub_0805DBF0.inc", void sub_0805DBF0()) +void sub_0805DBB4(Manager34* this) { + this->manager.action = 1; + this->field_0x20 = gScreenTransition.filler[0] * 0x3c; +} -ASM_FUNC("asm/non_matching/manager34/sub_0805DC70.inc", void sub_0805DC70()) \ No newline at end of file +void sub_0805DBCC(Manager34* this) { + if (((this->manager.parent)->next == NULL) && (this->manager.action = 2, 0x12d < this->field_0x20)) { + this->field_0x20 = 0x12d; + } +} + +void nullsub_498(Manager34* this) { +} + +ASM_FUNC("asm/non_matching/manager34/sub_0805DBF0.inc", void sub_0805DBF0(Manager34* this)) + +void sub_0805DC70(Manager34* this) { + sub_0805E5A8(); + DoExitTransition(&gUnk_0813AC48); +}