mirror of https://github.com/zeldaret/tmc.git
Decompile managerD
This commit is contained in:
parent
0d8b5c786b
commit
08a5d972ed
|
|
@ -1,87 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start ManagerD_Main
|
||||
ManagerD_Main: @ 0x08058DD0
|
||||
push {lr}
|
||||
ldr r2, _08058DE4 @ =gUnk_08108308
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08058DE4: .4byte gUnk_08108308
|
||||
|
||||
thumb_func_start sub_08058DE8
|
||||
sub_08058DE8: @ 0x08058DE8
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrh r0, [r4, #0x3e]
|
||||
bl CheckFlags
|
||||
cmp r0, #0
|
||||
beq _08058DFC
|
||||
bl DeleteThisEntity
|
||||
b _08058E14
|
||||
_08058DFC:
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrh r0, [r4, #0x3a]
|
||||
bl GetLayerByIndex
|
||||
ldrh r1, [r4, #0x38]
|
||||
lsls r1, r1, #1
|
||||
adds r1, #4
|
||||
adds r0, r0, r1
|
||||
str r0, [r4, #0x30]
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r4, #0x28]
|
||||
_08058E14:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08058E18
|
||||
sub_08058E18: @ 0x08058E18
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldr r1, [r2, #0x30]
|
||||
ldrh r0, [r2, #0x28]
|
||||
ldrh r1, [r1]
|
||||
cmp r0, r1
|
||||
beq _08058E30
|
||||
ldrb r0, [r2, #0xc]
|
||||
adds r0, #1
|
||||
strb r0, [r2, #0xc]
|
||||
movs r0, #0xf
|
||||
strb r0, [r2, #0xe]
|
||||
_08058E30:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08058E34
|
||||
sub_08058E34: @ 0x08058E34
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _08058E5E
|
||||
ldrh r0, [r4, #0x3e]
|
||||
bl SetFlag
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
beq _08058E58
|
||||
bl GetCurrentRoomProperty
|
||||
bl LoadRoomEntityList
|
||||
_08058E58:
|
||||
adds r0, r4, #0
|
||||
bl DeleteManager
|
||||
_08058E5E:
|
||||
pop {r4, pc}
|
||||
|
|
@ -152,7 +152,7 @@ extern void Manager9_Main();
|
|||
extern void ManagerA_Main();
|
||||
extern void ManagerB_Main();
|
||||
extern void ManagerC_Main();
|
||||
extern void ManagerD_Main(Entity*);
|
||||
extern void ManagerD_Main();
|
||||
extern void ManagerE_Main();
|
||||
extern void ManagerF_Main(Entity*);
|
||||
extern void Manager10_Main(Entity*);
|
||||
|
|
|
|||
|
|
@ -513,7 +513,7 @@ SECTIONS {
|
|||
src/manager/managerA.o(.text);
|
||||
src/manager/managerB.o(.text);
|
||||
src/manager/managerC.o(.text);
|
||||
asm/managerD.o(.text);
|
||||
src/manager/managerD.o(.text);
|
||||
src/manager/managerE.o(.text);
|
||||
asm/managerF.o(.text);
|
||||
asm/manager10.o(.text);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,74 @@
|
|||
#include "manager.h"
|
||||
#include "flags.h"
|
||||
#include "room.h"
|
||||
#include "functions.h"
|
||||
|
||||
typedef struct {
|
||||
Manager manager;
|
||||
u8 field_0x20;
|
||||
u8 field_0x21;
|
||||
u8 field_0x22;
|
||||
u8 field_0x23;
|
||||
u8 field_0x24;
|
||||
u8 field_0x25;
|
||||
u8 field_0x26;
|
||||
u8 field_0x27;
|
||||
u16 field_0x28;
|
||||
u8 field_0x2a;
|
||||
u8 field_0x2b;
|
||||
u8 field_0x2c;
|
||||
u8 field_0x2d;
|
||||
u8 field_0x2e;
|
||||
u8 field_0x2f;
|
||||
u16* field_0x30;
|
||||
u8 field_0x34;
|
||||
u8 field_0x35;
|
||||
u8 field_0x36;
|
||||
u8 field_0x37;
|
||||
u16 field_0x38;
|
||||
u16 field_0x3a;
|
||||
u8 field_0x3c;
|
||||
u8 field_0x3d;
|
||||
u16 field_0x3e;
|
||||
} ManagerD;
|
||||
|
||||
|
||||
extern void (*const gUnk_08108308[])(ManagerD*);
|
||||
|
||||
extern u16* GetLayerByIndex(u32);
|
||||
|
||||
void ManagerD_Main(ManagerD* this) {
|
||||
gUnk_08108308[this->manager.action](this);
|
||||
}
|
||||
|
||||
void sub_08058DE8(ManagerD* this) {
|
||||
u16* puVar2;
|
||||
u16* puVar3;
|
||||
if (CheckFlags(this->field_0x3e) != 0) {
|
||||
DeleteThisEntity();
|
||||
} else {
|
||||
this->manager.action = 1;
|
||||
puVar2 = GetLayerByIndex(this->field_0x3a);
|
||||
puVar3 = (this->field_0x38 + 2) + puVar2;
|
||||
this->field_0x30 = puVar3;
|
||||
this->field_0x28 = *puVar3;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08058E18(ManagerD* this) {
|
||||
if (this->field_0x28 != *this->field_0x30) {
|
||||
this->manager.action += 1;
|
||||
this->manager.unk_0e = 0xf;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08058E34(ManagerD* this) {
|
||||
if (--this->manager.unk_0e == 0) {
|
||||
SetFlag(this->field_0x3e);
|
||||
if (this->manager.unk_0a != 0) {
|
||||
LoadRoomEntityList((EntityData*)GetCurrentRoomProperty(this->manager.unk_0a));
|
||||
}
|
||||
DeleteManager((Manager*)this);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue