Decompile manager12

This commit is contained in:
octorock 2021-09-26 00:42:20 +02:00
parent ff21673dfb
commit 08659c4001
9 changed files with 173 additions and 430 deletions

View File

@ -1,32 +0,0 @@
.syntax unified
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _08059A20
movs r0, #1
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x22
movs r0, #0xff
strb r0, [r1]
subs r1, #1
movs r0, #1
rsbs r0, r0, #0
strb r0, [r1]
subs r1, #1
strb r0, [r1]
ldr r1, _08059A28 @ =sub_08059A2C
adds r0, r4, #0
movs r2, #0
bl sub_08052D74
adds r0, r4, #0
movs r1, #6
bl sub_0805E3A0
_08059A20:
adds r0, r4, #0
bl sub_08059A58
pop {r4, pc}
.align 2, 0
_08059A28: .4byte sub_08059A2C
.syntax divided

View File

@ -1,65 +0,0 @@
.syntax unified
push {r4, lr}
ldr r0, _08059D68 @ =gRoomControls
ldrb r0, [r0, #4]
cmp r0, #0x15
beq _08059D78
ldr r0, _08059D6C @ =gUnk_08108398
bl sub_08056300
adds r4, r0, #0
cmp r4, #0xff
beq _08059D36
movs r0, #0
adds r1, r4, #0
bl sub_08059CC0
_08059D36:
ldr r0, _08059D70 @ =gUnk_081083AE
bl sub_08056300
adds r4, r0, #0
cmp r4, #0xff
beq _08059D52
movs r0, #1
adds r1, r4, #0
bl sub_08059CC0
cmp r4, #2
bne _08059D52
bl sub_08059B18
_08059D52:
ldr r0, _08059D74 @ =gUnk_081083C4
bl sub_08056300
adds r4, r0, #0
cmp r4, #0xff
beq _08059DA0
movs r0, #2
adds r1, r4, #0
bl sub_08059CC0
b _08059DA0
.align 2, 0
_08059D68: .4byte gRoomControls
_08059D6C: .4byte gUnk_08108398
_08059D70: .4byte gUnk_081083AE
_08059D74: .4byte gUnk_081083C4
_08059D78:
ldr r0, _08059DA4 @ =gUnk_081083DA
bl sub_08056300
adds r4, r0, #0
cmp r4, #0xff
beq _08059D8C
movs r0, #0
adds r1, r4, #0
bl sub_08059CC0
_08059D8C:
ldr r0, _08059DA8 @ =gUnk_081083F2
bl sub_08056300
adds r4, r0, #0
cmp r4, #0xff
beq _08059DA0
movs r0, #2
adds r1, r4, #0
bl sub_08059CC0
_08059DA0:
pop {r4, pc}
.align 2, 0
_08059DA4: .4byte gUnk_081083DA
_08059DA8: .4byte gUnk_081083F2
.syntax divided

View File

@ -1,23 +0,0 @@
.syntax unified
push {lr}
adds r2, r0, #0
ldr r1, _08059A54 @ =gRoomVars
movs r0, #0xff
strb r0, [r1, #0x12]
movs r0, #1
rsbs r0, r0, #0
strb r0, [r1, #0x11]
strb r0, [r1, #0x10]
adds r1, r2, #0
adds r1, #0x22
strb r0, [r1]
subs r1, #1
strb r0, [r1]
subs r1, #1
strb r0, [r1]
adds r0, r2, #0
bl sub_08059A58
pop {pc}
.align 2, 0
_08059A54: .4byte gRoomVars
.syntax divided

View File

@ -1,87 +0,0 @@
.syntax unified
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, _08059AC4 @ =gRoomControls
ldrb r0, [r0, #4]
cmp r0, #0x15
beq _08059AD4
adds r4, r5, #0
adds r4, #0x20
ldr r3, _08059AC8 @ =gUnk_08108398
adds r0, r5, #0
movs r1, #0
adds r2, r4, #0
bl sub_08059C8C
cmp r0, #0
beq _08059A80
ldrb r1, [r4]
movs r0, #0
bl sub_08059CC0
_08059A80:
adds r4, r5, #0
adds r4, #0x21
ldr r3, _08059ACC @ =gUnk_081083AE
adds r0, r5, #0
movs r1, #1
adds r2, r4, #0
bl sub_08059C8C
cmp r0, #0
beq _08059AA6
ldrb r1, [r4]
movs r0, #1
bl sub_08059CC0
ldrb r0, [r4]
cmp r0, #2
bne _08059AA6
bl sub_08059B18
_08059AA6:
adds r4, r5, #0
adds r4, #0x22
ldr r3, _08059AD0 @ =gUnk_081083C4
adds r0, r5, #0
movs r1, #2
adds r2, r4, #0
bl sub_08059C8C
cmp r0, #0
beq _08059B0C
ldrb r1, [r4]
movs r0, #2
bl sub_08059CC0
b _08059B0C
.align 2, 0
_08059AC4: .4byte gRoomControls
_08059AC8: .4byte gUnk_08108398
_08059ACC: .4byte gUnk_081083AE
_08059AD0: .4byte gUnk_081083C4
_08059AD4:
adds r4, r5, #0
adds r4, #0x20
ldr r3, _08059B10 @ =gUnk_081083DA
adds r0, r5, #0
movs r1, #0
adds r2, r4, #0
bl sub_08059C8C
cmp r0, #0
beq _08059AF0
ldrb r1, [r4]
movs r0, #0
bl sub_08059CC0
_08059AF0:
adds r4, r5, #0
adds r4, #0x22
ldr r3, _08059B14 @ =gUnk_081083F2
adds r0, r5, #0
movs r1, #2
adds r2, r4, #0
bl sub_08059C8C
cmp r0, #0
beq _08059B0C
ldrb r1, [r4]
movs r0, #2
bl sub_08059CC0
_08059B0C:
pop {r4, r5, pc}
.align 2, 0
_08059B10: .4byte gUnk_081083DA
_08059B14: .4byte gUnk_081083F2
.syntax divided

View File

@ -1,172 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #4
movs r0, #0x18
bl CheckGlobalFlag
cmp r0, #0
beq _08059BEC
movs r6, #0
movs r0, #0x3f
mov sb, r0
movs r2, #0xc4
lsls r2, r2, #1
mov r8, r2
_08059B38:
movs r5, #0
lsls r1, r6, #4
mov r2, r8
lsrs r0, r2, #4
mov r2, sb
ands r0, r2
lsls r3, r0, #6
movs r7, #0x28
ldr r0, _08059BD8 @ =0x000004AB
adds r4, r1, r0
_08059B4C:
lsrs r1, r7, #4
mov r2, sb
ands r1, r2
orrs r1, r3
adds r0, r4, #0
movs r2, #1
str r3, [sp]
bl sub_0807B9B8
adds r7, #0x10
adds r4, #1
adds r5, #1
ldr r3, [sp]
cmp r5, #3
bls _08059B4C
movs r0, #0x10
add r8, r0
adds r6, #1
cmp r6, #3
bls _08059B38
movs r6, #0
movs r3, #0x3f
_08059B78:
movs r5, #0
lsls r1, r6, #4
adds r6, #1
mov r8, r6
movs r2, #0xc4
lsls r2, r2, #1
adds r0, r1, r2
lsrs r0, r0, #4
ands r0, r3
lsls r7, r0, #6
movs r6, #0x28
movs r0, #0x88
lsls r0, r0, #3
adds r4, r1, r0
_08059B94:
lsrs r1, r6, #4
ands r1, r3
orrs r1, r7
adds r0, r4, #0
movs r2, #2
str r3, [sp]
bl sub_0807B9B8
adds r6, #0x10
adds r4, #1
adds r5, #1
ldr r3, [sp]
cmp r5, #3
bls _08059B94
mov r6, r8
cmp r6, #2
bls _08059B78
ldr r1, _08059BDC @ =0x000005C2
movs r0, #0xd6
movs r2, #2
bl sub_0807B9B8
ldr r1, _08059BE0 @ =0x000005C3
movs r0, #0xd7
movs r2, #2
bl sub_0807B9B8
ldr r0, _08059BE4 @ =gUnk_086E8460
ldr r1, _08059BE8 @ =0x06001800
movs r2, #0x80
lsls r2, r2, #4
bl LoadResourceAsync
b _08059C5E
.align 2, 0
_08059BD8: .4byte 0x000004AB
_08059BDC: .4byte 0x000005C2
_08059BE0: .4byte 0x000005C3
_08059BE4: .4byte gUnk_086E8460
_08059BE8: .4byte 0x06001800
_08059BEC:
movs r0, #0x19
bl CheckGlobalFlag
cmp r0, #0
beq _08059C5E
movs r6, #0
movs r3, #0x3f
_08059BFA:
movs r5, #0
lsls r1, r6, #4
adds r6, #1
mov r8, r6
movs r2, #0xc4
lsls r2, r2, #1
adds r0, r1, r2
lsrs r0, r0, #4
ands r0, r3
lsls r7, r0, #6
movs r6, #0x28
ldr r0, _08059C68 @ =0x000004A6
adds r4, r1, r0
_08059C14:
lsrs r1, r6, #4
ands r1, r3
orrs r1, r7
adds r0, r4, #0
movs r2, #1
str r3, [sp]
bl sub_0807B9B8
adds r6, #0x10
adds r4, #1
adds r5, #1
ldr r3, [sp]
cmp r5, #3
bls _08059C14
mov r6, r8
cmp r6, #4
bls _08059BFA
ldr r0, _08059C6C @ =0x00000444
ldr r1, _08059C70 @ =0x00000602
movs r2, #2
bl sub_0807B9B8
ldr r0, _08059C74 @ =0x00000445
ldr r1, _08059C78 @ =0x00000605
movs r2, #2
bl sub_0807B9B8
ldr r0, _08059C7C @ =0x00000454
ldr r1, _08059C80 @ =0x00000642
movs r2, #2
bl sub_0807B9B8
ldr r0, _08059C84 @ =0x00000455
ldr r1, _08059C88 @ =0x00000645
movs r2, #2
bl sub_0807B9B8
_08059C5E:
add sp, #4
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08059C68: .4byte 0x000004A6
_08059C6C: .4byte 0x00000444
_08059C70: .4byte 0x00000602
_08059C74: .4byte 0x00000445
_08059C78: .4byte 0x00000605
_08059C7C: .4byte 0x00000454
_08059C80: .4byte 0x00000642
_08059C84: .4byte 0x00000455
_08059C88: .4byte 0x00000645
.syntax divided

View File

@ -1,41 +0,0 @@
.syntax unified
push {r4, r5, r6, lr}
adds r2, r1, #0
ldr r1, _08059CDC @ =gRoomVars
adds r1, #0x10
adds r0, r0, r1
strb r2, [r0]
ldr r0, _08059CE0 @ =gRoomControls
ldrb r0, [r0, #4]
cmp r0, #0x15
beq _08059CE8
lsls r1, r2, #4
ldr r0, _08059CE4 @ =gUnk_08108408
b _08059CEC
.align 2, 0
_08059CDC: .4byte gRoomVars
_08059CE0: .4byte gRoomControls
_08059CE4: .4byte gUnk_08108408
_08059CE8:
lsls r1, r2, #4
ldr r0, _08059D10 @ =gUnk_08108468
_08059CEC:
adds r6, r1, r0
ldr r0, [r6]
ldr r4, _08059D14 @ =gGlobalGfxAndPalettes
adds r0, r0, r4
ldr r1, [r6, #4]
movs r5, #0x80
lsls r5, r5, #5
adds r2, r5, #0
bl LoadResourceAsync
ldr r0, [r6, #8]
adds r0, r0, r4
ldr r1, [r6, #0xc]
adds r2, r5, #0
bl LoadResourceAsync
pop {r4, r5, r6, pc}
.align 2, 0
_08059D10: .4byte gUnk_08108468
_08059D14: .4byte gGlobalGfxAndPalettes
.syntax divided

View File

@ -46,8 +46,7 @@ typedef struct {
u8 field_0x9;
u8 unk2;
u8 filler2[5];
u8 unk_10;
u8 filler6[3];
u8 unk_10[4];
u32 roomFlags;
u32 unk3;
u8 filler4[48];

View File

@ -41,7 +41,8 @@ typedef struct {
/*0x141*/ u8 unk141[0x34f];
/*0x490*/ u32 unk490;
/*0x494*/ u32 unk494;
/*0x498*/ u8 filler498[0x1C];
/*0x498*/ u32 unk498;
/*0x49C*/ u8 filler49C[0x18];
} SaveFile;
extern SaveFile gSave;

View File

@ -1,15 +1,178 @@
#include "manager.h"
#include "room.h"
#include "functions.h"
#include "flags.h"
ASM_FUNC("asm/non_matching/manager12/Manager12_Main.inc", void Manager12_Main())
typedef struct {
Manager manager;
u8 field_0x20;
u8 field_0x21;
u8 field_0x22;
} Manager12;
ASM_FUNC("asm/non_matching/manager12/sub_08059A2C.inc", void sub_08059A2C())
void sub_08059A58(Manager12*);
ASM_FUNC("asm/non_matching/manager12/sub_08059A58.inc", void sub_08059A58())
void sub_08059A2C(Manager12*);
ASM_FUNC("asm/non_matching/manager12/sub_08059B18.inc", void sub_08059B18())
u32 sub_08056300(u16* arr);
extern u16 gUnk_081083DA;
extern u16 gUnk_081083F2;
extern u16 gUnk_08108398;
extern u16 gUnk_081083AE;
extern u16 gUnk_081083C4;
ASM_FUNC("asm/non_matching/manager12/sub_08059C8C.inc", void sub_08059C8C())
void sub_08059CC0(u32, u32);
void sub_08059B18();
ASM_FUNC("asm/non_matching/manager12/sub_08059CC0.inc", void sub_08059CC0())
bool32 sub_08059C8C(Manager12*, u32, u8*, u16*);
ASM_FUNC("asm/non_matching/manager12/TryLoadPrologueHyruleTown.inc", void TryLoadPrologueHyruleTown())
extern void sub_0807B9B8(s32, s32, s32);
extern u32 gUnk_086E8460;
typedef struct {
u32 field_0x0;
u32 field_0x4;
u32 field_0x8;
u32 field_0xc;
} Unknown;
extern Unknown gUnk_08108468[];
extern Unknown gUnk_08108408[];
extern const u8 gGlobalGfxAndPalettes[];
void Manager12_Main(Manager12* this) {
if (this->manager.action == 0) {
this->manager.action = 1;
this->field_0x22 = 0xff;
this->field_0x21 = 0xff;
this->field_0x20 = 0xff;
sub_08052D74(this, sub_08059A2C, NULL);
sub_0805E3A0(this, 6);
}
sub_08059A58(this);
}
void sub_08059A2C(Manager12* this) {
gRoomVars.unk_10[2] = 0xff;
gRoomVars.unk_10[1] = 0xff;
gRoomVars.unk_10[0] = 0xff;
this->field_0x22 = 0xff;
this->field_0x21 = 0xff;
this->field_0x20 = 0xff;
sub_08059A58(this);
}
void sub_08059A58(Manager12* this) {
if (gRoomControls.areaID != 0x15) {
if (sub_08059C8C(this, 0, &this->field_0x20, &gUnk_08108398) != 0) {
sub_08059CC0(0, (u32)this->field_0x20);
}
if (sub_08059C8C(this, 1, &this->field_0x21, &gUnk_081083AE) != 0) {
sub_08059CC0(1, this->field_0x21);
if (this->field_0x21 == 2) {
sub_08059B18();
}
}
if (sub_08059C8C(this, 2, &this->field_0x22, &gUnk_081083C4) != 0) {
sub_08059CC0(2, (u32)this->field_0x22);
}
} else {
if (sub_08059C8C(this, 0, &this->field_0x20, &gUnk_081083DA) != 0) {
sub_08059CC0(0, (u32)this->field_0x20);
}
if (sub_08059C8C(this, 2, &this->field_0x22, &gUnk_081083F2) != 0) {
sub_08059CC0(2, (u32)this->field_0x22);
}
}
}
#define COMMON(tmp2, tmp1) ((tmp2) >> 4 & 0x3f) | (((tmp1)+0x188U) >> 4 & 0x3f) << 6
void sub_08059B18(void) {
u32 loopVar;
u32 innerLoopVar;
if (CheckGlobalFlag(TATEKAKE_HOUSE) != 0) {
for(loopVar = 0; loopVar < 4; ++loopVar) {
for(innerLoopVar = 0; innerLoopVar < 4; ++innerLoopVar) {
sub_0807B9B8(loopVar * 0x10 + 0x4ab + innerLoopVar, COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10), 1);
}
}
for(loopVar = 0; loopVar < 3; ++loopVar) {
for(innerLoopVar = 0; innerLoopVar < 4; ++innerLoopVar) {
sub_0807B9B8(loopVar * 0x10 + 0x440 + innerLoopVar, COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10), 2);
}
}
sub_0807B9B8(0xd6, 0x5c2, 2);
sub_0807B9B8(0xd7, 0x5c3, 2);
LoadResourceAsync(&gUnk_086E8460, 0x6001800, 0x800);
} else {
if (CheckGlobalFlag(TATEKAKE_TOCHU) != 0) {
for(loopVar = 0; loopVar < 5; ++loopVar) {
for(innerLoopVar = 0; innerLoopVar < 4; ++innerLoopVar) {
sub_0807B9B8(loopVar * 0x10 + 0x4a6 + innerLoopVar, COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10), 1);
}
}
sub_0807B9B8(0x444, 0x602, 2);
sub_0807B9B8(0x445, 0x605, 2);
sub_0807B9B8(0x454, 0x642, 2);
sub_0807B9B8(0x455, 0x645, 2);
}
}
}
bool32 sub_08059C8C(Manager12* this, u32 param_2, u8* param_3, u16* param_4) {
bool32 bVar2;
*param_3 = sub_08056300(param_4);
if ((*param_3 != 0xff) && (gRoomVars.unk_10[param_2] != *param_3)) {
gRoomVars.unk_10[param_2] = *param_3;
return TRUE;
} else {
return FALSE;
}
}
void sub_08059CC0(u32 param_1, u32 param_2) {
Unknown* unknown;
gRoomVars.unk_10[param_1] = param_2;
if (gRoomControls.areaID != 0x15) {
unknown = &gUnk_08108408[param_2];
} else {
unknown = &gUnk_08108468[param_2];
}
LoadResourceAsync((void*)&gGlobalGfxAndPalettes + unknown->field_0x0, unknown->field_0x4, 0x1000);
LoadResourceAsync((void*)&gGlobalGfxAndPalettes + unknown->field_0x8, unknown->field_0xc, 0x1000);
}
void TryLoadPrologueHyruleTown(void) {
u32 tmp;
if (gRoomControls.areaID != 0x15) {
tmp = sub_08056300(&gUnk_08108398);
if (tmp != 0xff) {
sub_08059CC0(0, tmp);
}
tmp = sub_08056300(&gUnk_081083AE);
if ((tmp != 0xff) && (sub_08059CC0(1, tmp), tmp == 2)) {
sub_08059B18();
}
tmp = sub_08056300(&gUnk_081083C4);
if (tmp != 0xff) {
sub_08059CC0(2, tmp);
}
} else {
tmp = sub_08056300(&gUnk_081083DA);
if (tmp != 0xff) {
sub_08059CC0(0, tmp);
}
tmp = sub_08056300(&gUnk_081083F2);
if (tmp != 0xff) {
sub_08059CC0(2, tmp);
}
}
}