From 3f247035d082137bedf87ef386db299cfe2150c1 Mon Sep 17 00:00:00 2001 From: octorock <79596758+octorock@users.noreply.github.com> Date: Sun, 29 Aug 2021 12:32:44 +0200 Subject: [PATCH] Decompile manager19 --- asm/non_matching/manager19/Manager19_Main.inc | 72 ------------------- asm/non_matching/manager19/sub_0805AFFC.inc | 25 ------- src/manager/manager19.c | 36 +++++++++- 3 files changed, 34 insertions(+), 99 deletions(-) delete mode 100644 asm/non_matching/manager19/Manager19_Main.inc delete mode 100644 asm/non_matching/manager19/sub_0805AFFC.inc diff --git a/asm/non_matching/manager19/Manager19_Main.inc b/asm/non_matching/manager19/Manager19_Main.inc deleted file mode 100644 index 5eb635c5..00000000 --- a/asm/non_matching/manager19/Manager19_Main.inc +++ /dev/null @@ -1,72 +0,0 @@ - .syntax unified - push {r4, lr} - adds r4, r0, #0 - cmp r4, #0 - bne _0805AF8C - ldr r0, _0805AF80 @ =gArea - ldr r1, _0805AF84 @ =0x0000088C - adds r0, r0, r1 - ldr r0, [r0] - ldr r1, _0805AF88 @ =sub_0805AFFC - cmp r0, r1 - beq _0805AFEE - movs r0, #0 - bl _call_via_r1 - b _0805AFEE - .align 2, 0 -_0805AF80: .4byte gArea -_0805AF84: .4byte 0x0000088C -_0805AF88: .4byte sub_0805AFFC -_0805AF8C: - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0805AFD2 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x20 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - movs r1, #6 - bl sub_0805E3A0 - ldr r0, _0805AFC0 @ =gArea - ldr r2, _0805AFC4 @ =0x0000088C - adds r0, r0, r2 - ldr r0, [r0] - cmp r0, #0 - bne _0805AFCC - ldr r1, _0805AFC8 @ =sub_0805AFFC - adds r0, r4, #0 - movs r2, #0 - bl sub_08052D74 - b _0805AFEE - .align 2, 0 -_0805AFC0: .4byte gArea -_0805AFC4: .4byte 0x0000088C -_0805AFC8: .4byte sub_0805AFFC -_0805AFCC: - bl DeleteThisEntity - b _0805AFEE -_0805AFD2: - ldr r1, _0805AFF0 @ =gRoomControls - ldr r0, [r1, #0x28] - ldr r3, _0805AFF4 @ =0xFFFFE000 - adds r0, r0, r3 - str r0, [r1, #0x28] - ldr r2, _0805AFF8 @ =gScreen - ldrh r0, [r1, #0x2a] - ldrh r3, [r1, #0xa] - adds r0, r0, r3 - strh r0, [r2, #0x2e] - ldrh r0, [r1, #0x2e] - ldrh r1, [r1, #0xc] - adds r0, r0, r1 - strh r0, [r2, #0x30] -_0805AFEE: - pop {r4, pc} - .align 2, 0 -_0805AFF0: .4byte gRoomControls -_0805AFF4: .4byte 0xFFFFE000 -_0805AFF8: .4byte gScreen - .syntax divided diff --git a/asm/non_matching/manager19/sub_0805AFFC.inc b/asm/non_matching/manager19/sub_0805AFFC.inc deleted file mode 100644 index e9ee5a41..00000000 --- a/asm/non_matching/manager19/sub_0805AFFC.inc +++ /dev/null @@ -1,25 +0,0 @@ - .syntax unified - ldr r2, _0805B024 @ =gScreen - ldr r0, _0805B028 @ =0x00001E03 - strh r0, [r2, #0x2c] - ldrh r1, [r2] - movs r3, #0x80 - lsls r3, r3, #4 - adds r0, r3, #0 - orrs r0, r1 - strh r0, [r2] - ldr r1, _0805B02C @ =gRoomControls - ldrh r0, [r1, #0x2a] - ldrh r3, [r1, #0xa] - adds r0, r0, r3 - strh r0, [r2, #0x2e] - ldrh r0, [r1, #0x2e] - ldrh r1, [r1, #0xc] - adds r0, r0, r1 - strh r0, [r2, #0x30] - bx lr - .align 2, 0 -_0805B024: .4byte gScreen -_0805B028: .4byte 0x00001E03 -_0805B02C: .4byte gRoomControls - .syntax divided diff --git a/src/manager/manager19.c b/src/manager/manager19.c index 900f8c02..b5586cf8 100644 --- a/src/manager/manager19.c +++ b/src/manager/manager19.c @@ -1,5 +1,37 @@ #include "manager.h" +#include "area.h" +#include "room.h" +#include "functions.h" +#include "screen.h" -ASM_FUNC("asm/non_matching/manager19/Manager19_Main.inc", void Manager19_Main()) +void sub_0805AFFC(Manager*); -ASM_FUNC("asm/non_matching/manager19/sub_0805AFFC.inc", void sub_0805AFFC()) \ No newline at end of file +void Manager19_Main(Manager* this) { + if (this == NULL) { + if ((void*)gArea.unk3 != sub_0805AFFC) { + sub_0805AFFC(this); + } + } else { + if (this->action == 0) { + this->action = 1; + this->unk_10 |= 0x20; + sub_0805E3A0(this, 6); + if (gArea.unk3 == 0) { + sub_08052D74(this, sub_0805AFFC, NULL); + } else { + DeleteThisEntity(); + } + } else { + gRoomControls.bg3OffsetX.WORD = gRoomControls.bg3OffsetX.WORD - 0x2000; + gScreen.affine.bg3xOffset = gRoomControls.roomScrollX + gRoomControls.bg3OffsetX.HALF.HI ; + gScreen.affine.bg3yOffset = gRoomControls.roomScrollY + gRoomControls.bg3OffsetY.HALF.HI; + } + } +} + +void sub_0805AFFC(Manager* this) { + gScreen.affine.bg3Control = 0x1e03; + gScreen.lcd.displayControl |= 0x800; + gScreen.affine.bg3xOffset = gRoomControls.roomScrollX + gRoomControls.bg3OffsetX.HALF.HI; + gScreen.affine.bg3yOffset = gRoomControls.roomScrollY + gRoomControls.bg3OffsetY.HALF.HI; +} \ No newline at end of file