diff --git a/asm/manager11.s b/asm/manager11.s deleted file mode 100644 index e0d1626d..00000000 --- a/asm/manager11.s +++ /dev/null @@ -1,33 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_080599B8 -sub_080599B8: @ 0x080599B8 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _080599D6 - movs r0, #1 - strb r0, [r4, #0xc] - ldrh r0, [r4, #0x3c] - bl CheckFlags - cmp r0, #0 - beq _080599EA - bl DeleteThisEntity - b _080599EA -_080599D6: - ldrh r0, [r4, #0x3e] - bl CheckFlags - cmp r0, #0 - beq _080599EA - ldrh r0, [r4, #0x3c] - bl SetFlag - bl DeleteThisEntity -_080599EA: - pop {r4, pc} diff --git a/include/manager.h b/include/manager.h index 18c6d370..a455052d 100644 --- a/include/manager.h +++ b/include/manager.h @@ -103,6 +103,13 @@ typedef struct { u16 unk_3e; } ManagerE; +typedef struct Manager11 { + Manager manager; + u8 unk_20[0x1C]; + u16 unk_3c; + u16 unk_3e; +} Manager11; + typedef struct { u16 unk_00; u8 source_roomID; @@ -149,7 +156,7 @@ extern void sub_08058DD0(Entity*); extern void sub_08058E60(); extern void sub_08058ECC(Entity*); extern void sub_08059570(Entity*); -extern void sub_080599B8(Entity*); +extern void sub_080599B8(Manager11*); extern void sub_080599EC(Entity*); extern void sub_08059DAC(Entity*); extern void sub_08059E58(Entity*); diff --git a/linker.ld b/linker.ld index 8838ce5d..3ecd5a65 100644 --- a/linker.ld +++ b/linker.ld @@ -495,7 +495,7 @@ SECTIONS { src/manager/managerE.o(.text); asm/managerF.o(.text); asm/manager10.o(.text); - asm/manager11.o(.text); + src/manager/manager11.o(.text); asm/manager12.o(.text); asm/manager13.o(.text); asm/manager14.o(.text); diff --git a/src/manager/manager11.c b/src/manager/manager11.c new file mode 100644 index 00000000..841407fc --- /dev/null +++ b/src/manager/manager11.c @@ -0,0 +1,17 @@ +#include "global.h" +#include "manager.h" +#include "flags.h" + +void sub_080599B8(Manager11* this) { + if (!this->manager.action) { + this->manager.action = 1; + if (CheckFlags(this->unk_3c)) { + DeleteThisEntity(); + } + } else { + if (CheckFlags(this->unk_3e)) { + SetFlag(this->unk_3c); + DeleteThisEntity(); + } + } +}