From 7a70c6568082e86b80ac1744b6410d90e08b341d Mon Sep 17 00:00:00 2001 From: octorock <79596758+octorock@users.noreply.github.com> Date: Sat, 18 Sep 2021 11:30:41 +0200 Subject: [PATCH] Decompile manager33 --- asm/non_matching/manager33/Manager33_Main.inc | 85 ------------------- src/manager/manager33.c | 32 ++++++- 2 files changed, 31 insertions(+), 86 deletions(-) delete mode 100644 asm/non_matching/manager33/Manager33_Main.inc diff --git a/asm/non_matching/manager33/Manager33_Main.inc b/asm/non_matching/manager33/Manager33_Main.inc deleted file mode 100644 index 21b47bcd..00000000 --- a/asm/non_matching/manager33/Manager33_Main.inc +++ /dev/null @@ -1,85 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r2, r0, #0 - ldr r5, _0805DB4C @ =gRoomControls - ldrh r0, [r5, #6] - movs r1, #0xfc - lsls r1, r1, #1 - mov r8, r1 - add r0, r8 - ldr r3, _0805DB50 @ =gPlayerEntity - movs r4, #0x2e - ldrsh r1, [r3, r4] - subs r0, r0, r1 - adds r4, r0, #0 - adds r4, #0x10 - ldrh r0, [r5, #8] - movs r7, #0xa0 - lsls r7, r7, #1 - adds r0, r0, r7 - movs r6, #0x32 - ldrsh r1, [r3, r6] - subs r0, r0, r1 - adds r0, #0x10 - ldrb r6, [r2, #0xc] - cmp r6, #0 - bne _0805DB58 - cmp r4, #0x1f - bhi _0805DB88 - cmp r0, #0x1f - bhi _0805DB88 - movs r0, #0x36 - ldrsh r1, [r3, r0] - movs r0, #0x18 - rsbs r0, r0, #0 - cmp r1, r0 - bge _0805DB88 - ldr r0, _0805DB54 @ =gPlayerState - adds r0, #0xa8 - ldrb r0, [r0] - cmp r0, #0x14 - bne _0805DB88 - adds r0, r6, #1 - strb r0, [r2, #0xc] - movs r0, #0x5a - strb r0, [r2, #0xe] - adds r0, #0xb0 - bl SoundReq - b _0805DB88 - .align 2, 0 -_0805DB4C: .4byte gRoomControls -_0805DB50: .4byte gPlayerEntity -_0805DB54: .4byte gPlayerState -_0805DB58: - ldrb r0, [r2, #0xe] - subs r0, #1 - strb r0, [r2, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0805DB88 - movs r0, #0x96 - movs r1, #1 - movs r2, #0 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _0805DB84 - ldrh r0, [r5, #6] - add r0, r8 - strh r0, [r1, #0x2e] - ldrh r0, [r5, #8] - adds r0, r0, r7 - strh r0, [r1, #0x32] - ldr r0, _0805DB90 @ =0x0000FFE8 - strh r0, [r1, #0x36] -_0805DB84: - bl DeleteThisEntity -_0805DB88: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0805DB90: .4byte 0x0000FFE8 - .syntax divided diff --git a/src/manager/manager33.c b/src/manager/manager33.c index df2feeb7..b284a1b5 100644 --- a/src/manager/manager33.c +++ b/src/manager/manager33.c @@ -1,3 +1,33 @@ #include "manager.h" +#include "room.h" +#include "player.h" +#include "audio.h" +#include "object.h" -ASM_FUNC("asm/non_matching/manager33/Manager33_Main.inc", void Manager33_Main(Manager* this)) +void Manager33_Main(Manager* this) { + RoomControls* roomControls = &gRoomControls; + u32 a = roomControls->roomOriginX + 0x1f8; + u32 x = (a - gPlayerEntity.x.HALF.HI) + 0x10; + u32 b = roomControls->roomOriginY + 0x140; + u32 y = (b - gPlayerEntity.y.HALF.HI) + 0x10; + if (this->action == 0) { + if (x < 0x20 && + y < 0x20 && + gPlayerEntity.height.HALF.HI < -0x18 && + gPlayerState.field_0xa8 == 0x14) { + this->action += 1; + this->unk_0e = 0x5a; + SoundReq(SFX_10A); + } + } else { + if (--this->unk_0e == 0) { + Entity* object = CreateObject(OBJECT_96, 1, 0); + if (object != NULL) { + object->x.HALF.HI = roomControls->roomOriginX + 0x1f8; + object->y.HALF.HI = roomControls->roomOriginY + 0x140; + object->height.HALF.HI = 0xffe8; + } + DeleteThisEntity(); + } + } +}