Decompile manager35

This commit is contained in:
octorock 2021-08-30 17:56:22 +02:00
parent 29d7c7bd6b
commit d632913122
47 changed files with 163 additions and 338 deletions

View File

@ -1,77 +0,0 @@
.syntax unified
push {r4, lr}
adds r4, r0, #0
cmp r4, #0
bne _0805D3F4
ldr r0, _0805D3E8 @ =gArea
ldr r1, _0805D3EC @ =0x0000088C
adds r0, r0, r1
ldr r0, [r0]
ldr r1, _0805D3F0 @ =sub_0805D470
cmp r0, r1
beq _0805D45E
movs r0, #0
bl _call_via_r1
b _0805D45E
.align 2, 0
_0805D3E8: .4byte gArea
_0805D3EC: .4byte 0x0000088C
_0805D3F0: .4byte sub_0805D470
_0805D3F4:
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _0805D43A
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, _0805D428 @ =gArea
ldr r2, _0805D42C @ =0x0000088C
adds r0, r0, r2
ldr r0, [r0]
cmp r0, #0
bne _0805D434
ldr r1, _0805D430 @ =sub_0805D470
adds r0, r4, #0
movs r2, #0
bl sub_08052D74
b _0805D45E
.align 2, 0
_0805D428: .4byte gArea
_0805D42C: .4byte 0x0000088C
_0805D430: .4byte sub_0805D470
_0805D434:
bl DeleteThisEntity
b _0805D45E
_0805D43A:
ldr r1, _0805D460 @ =gRoomControls
ldr r0, [r1, #0x28]
ldr r3, _0805D464 @ =0xFFFFC000
adds r0, r0, r3
str r0, [r1, #0x28]
ldr r0, [r1, #0x2c]
ldr r2, _0805D468 @ =0xFFFFE000
adds r0, r0, r2
str r0, [r1, #0x2c]
ldr r2, _0805D46C @ =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]
_0805D45E:
pop {r4, pc}
.align 2, 0
_0805D460: .4byte gRoomControls
_0805D464: .4byte 0xFFFFC000
_0805D468: .4byte 0xFFFFE000
_0805D46C: .4byte gScreen
.syntax divided

View File

@ -1,28 +0,0 @@
.syntax unified
push {lr}
movs r0, #0x4c
bl LoadGfxGroup
ldr r2, _0805D4A0 @ =gScreen
ldr r0, _0805D4A4 @ =0x00001E07
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, _0805D4A8 @ =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]
pop {pc}
.align 2, 0
_0805D4A0: .4byte gScreen
_0805D4A4: .4byte 0x00001E07
_0805D4A8: .4byte gRoomControls
.syntax divided

View File

@ -1,12 +0,0 @@
.syntax unified
push {lr}
ldr r2, _0805DC98 @ =gUnk_08108D98
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0805DC98: .4byte gUnk_08108D98
.syntax divided

View File

@ -1,21 +0,0 @@
.syntax unified
push {r4, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x3c]
bl CheckFlags
cmp r0, #0
beq _0805DCAE
bl DeleteThisEntity
_0805DCAE:
ldrh r0, [r4, #0x3e]
bl CheckFlags
cmp r0, #0
beq _0805DCC2
ldrh r0, [r4, #0x3c]
bl SetFlag
bl DeleteThisEntity
_0805DCC2:
movs r0, #1
strb r0, [r4, #0xc]
pop {r4, pc}
.syntax divided

View File

@ -1,47 +0,0 @@
.syntax unified
push {r4, r5, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x3e]
bl CheckFlags
cmp r0, #0
beq _0805DD1E
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x35
ldrb r0, [r0]
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0805DCEC
movs r0, #0x1e
strb r0, [r4, #0xe]
_0805DCEC:
ldr r5, _0805DD20 @ =gRoomControls
ldr r0, [r5, #0x30]
str r0, [r4, #0x14]
movs r0, #0x69
movs r1, #0
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _0805DD1E
ldrh r0, [r5, #6]
ldrh r2, [r4, #0x38]
adds r0, r0, r2
strh r0, [r1, #0x2e]
ldrh r0, [r5, #8]
ldrh r2, [r4, #0x3a]
adds r0, r0, r2
strh r0, [r1, #0x32]
str r1, [r4, #0x18]
str r1, [r5, #0x30]
adds r0, r1, #0
movs r1, #0x1e
bl sub_0805E4E0
_0805DD1E:
pop {r4, r5, pc}
.align 2, 0
_0805DD20: .4byte gRoomControls
.syntax divided

View File

@ -1,34 +0,0 @@
.syntax unified
push {r4, lr}
adds r4, r0, #0
movs r0, #0
movs r1, #8
bl sub_0805E4E0
ldr r0, _0805DD64 @ =gRoomControls
ldrb r1, [r0, #0xf]
movs r0, #4
ands r0, r1
cmp r0, #0
bne _0805DD60
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0805DD60
movs r0, #3
strb r0, [r4, #0xc]
ldrh r0, [r4, #0x3c]
bl SetFlag
adds r1, r4, #0
adds r1, #0x36
ldrb r0, [r1]
cmp r0, #0
bne _0805DD60
movs r0, #1
strb r0, [r1]
_0805DD60:
pop {r4, pc}
.align 2, 0
_0805DD64: .4byte gRoomControls
.syntax divided

View File

@ -1,40 +0,0 @@
.syntax unified
push {r4, lr}
adds r4, r0, #0
movs r0, #0
movs r1, #8
bl sub_0805E4E0
adds r1, r4, #0
adds r1, #0x36
ldrb r0, [r1]
cmp r0, #0
beq _0805DD94
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _0805DDAE
ldr r1, _0805DD90 @ =gRoomControls
ldr r0, [r4, #0x14]
str r0, [r1, #0x30]
b _0805DDAE
.align 2, 0
_0805DD90: .4byte gRoomControls
_0805DD94:
ldr r0, _0805DDB0 @ =gRoomControls
ldrb r1, [r0, #0xf]
movs r0, #4
ands r0, r1
cmp r0, #0
bne _0805DDAE
ldr r0, [r4, #0x18]
cmp r0, #0
beq _0805DDAA
bl DeleteEntity
_0805DDAA:
bl DeleteThisEntity
_0805DDAE:
pop {r4, pc}
.align 2, 0
_0805DDB0: .4byte gRoomControls
.syntax divided

View File

@ -267,6 +267,7 @@ extern void sub_0805EEB4(u8*, u32);
extern void sub_08056BDC(u32); extern void sub_08056BDC(u32);
extern void sub_08056F88(u32, u32); extern void sub_08056F88(u32, u32);
extern void sub_0805F8E4(u32 r0, WStruct* r1); extern void sub_0805F8E4(u32 r0, WStruct* r1);
extern void DoExitTransition(ScreenTransitionData*);
extern Entity* sub_08077C94(ItemBehavior*, u32); extern Entity* sub_08077C94(ItemBehavior*, u32);
extern Entity* sub_08077C0C(ItemBehavior*, u32); extern Entity* sub_08077C0C(ItemBehavior*, u32);
@ -280,5 +281,4 @@ extern bool32 sub_08077EFC(ItemBehavior*);
extern void sub_08078E84(Entity*, Entity*); extern void sub_08078E84(Entity*, Entity*);
extern void sub_080042D0(Entity*, u32, u16); extern void sub_080042D0(Entity*, u32, u16);
#endif #endif

View File

@ -169,6 +169,9 @@ typedef struct {
u8 unk3; u8 unk3;
u8 freezeTime; u8 freezeTime;
u8 unk9; u8 unk9;
u8 unk_0xa;
u8 unk_0xb;
u16 unk_0xc;
} EntityHandler; } EntityHandler;
extern EntityHandler gUnk_03003DC0; extern EntityHandler gUnk_03003DC0;

View File

@ -10,8 +10,6 @@ extern u32 gUnk_0200B650;
extern u32 gUnk_02025EB0; extern u32 gUnk_02025EB0;
extern u8 gUnk_02000070; extern u8 gUnk_02000070;
extern void DoExitTransition(ScreenTransitionData*);
void sub_080808D8(void) { void sub_080808D8(void) {
gScreenTransition.transitionType = 0; gScreenTransition.transitionType = 0;
} }

View File

@ -8,7 +8,6 @@
#include "functions.h" #include "functions.h"
extern void UnloadOBJPalette(Entity*); extern void UnloadOBJPalette(Entity*);
extern void DoExitTransition(ScreenTransitionData*);
extern u8 gEntCount; extern u8 gEntCount;

View File

@ -6,7 +6,6 @@
#include "structures.h" #include "structures.h"
#include "functions.h" #include "functions.h"
extern void DoExitTransition(ScreenTransitionData*);
extern void sub_0807B600(u32); extern void sub_0807B600(u32);
extern const u16 script_08012E20[]; extern const u16 script_08012E20[];

View File

@ -6,9 +6,7 @@
extern void sub_08001328(Entity*); extern void sub_08001328(Entity*);
extern Entity* sub_08049DF4(u32); extern Entity* sub_08049DF4(u32);
extern void DoExitTransition(u32*); extern ScreenTransitionData* gUnk_0813AB1C[];
extern u32* gUnk_0813AB1C[];
void sub_0802A78C(Entity*); void sub_0802A78C(Entity*);
void sub_0802A7D0(Entity*); void sub_0802A7D0(Entity*);

View File

@ -4,10 +4,9 @@
#include "functions.h" #include "functions.h"
extern void sub_08001328(Entity*); extern void sub_08001328(Entity*);
extern void DoExitTransition(u32*);
extern Entity* gUnk_020000B0; extern Entity* gUnk_020000B0;
extern u32* gUnk_0813AB1C[]; extern ScreenTransitionData* gUnk_0813AB1C[];
void sub_0802CF64(Entity*); void sub_0802CF64(Entity*);
void sub_0802CF8C(Entity*); void sub_0802CF8C(Entity*);

View File

@ -69,4 +69,4 @@ ASM_FUNC("asm/non_matching/manager1/nullsub_494.inc", void nullsub_494())
ASM_FUNC("asm/non_matching/manager1/sub_080573AC.inc", void sub_080573AC()) ASM_FUNC("asm/non_matching/manager1/sub_080573AC.inc", void sub_080573AC())
ASM_FUNC("asm/non_matching/manager1/sub_08057450.inc", void sub_08057450()) ASM_FUNC("asm/non_matching/manager1/sub_08057450.inc", void sub_08057450())

View File

@ -20,4 +20,4 @@ ASM_FUNC("asm/non_matching/manager10/sub_080598F8.inc", void sub_080598F8())
ASM_FUNC("asm/non_matching/manager10/sub_08059960.inc", void sub_08059960()) ASM_FUNC("asm/non_matching/manager10/sub_08059960.inc", void sub_08059960())
ASM_FUNC("asm/non_matching/manager10/sub_08059994.inc", void sub_08059994()) ASM_FUNC("asm/non_matching/manager10/sub_08059994.inc", void sub_08059994())

View File

@ -12,4 +12,4 @@ ASM_FUNC("asm/non_matching/manager12/sub_08059C8C.inc", void sub_08059C8C())
ASM_FUNC("asm/non_matching/manager12/sub_08059CC0.inc", void sub_08059CC0()) ASM_FUNC("asm/non_matching/manager12/sub_08059CC0.inc", void sub_08059CC0())
ASM_FUNC("asm/non_matching/manager12/TryLoadPrologueHyruleTown.inc", void TryLoadPrologueHyruleTown()) ASM_FUNC("asm/non_matching/manager12/TryLoadPrologueHyruleTown.inc", void TryLoadPrologueHyruleTown())

View File

@ -1,3 +1,3 @@
#include "manager.h" #include "manager.h"
ASM_FUNC("asm/non_matching/manager13/Manager13_Main.inc", void Manager13_Main()) ASM_FUNC("asm/non_matching/manager13/Manager13_Main.inc", void Manager13_Main())

View File

@ -22,4 +22,4 @@ ASM_FUNC("asm/non_matching/manager14/sub_0805A1D8.inc", void sub_0805A1D8())
ASM_FUNC("asm/non_matching/manager14/nullsub_495.inc", void nullsub_495()) ASM_FUNC("asm/non_matching/manager14/nullsub_495.inc", void nullsub_495())
ASM_FUNC("asm/non_matching/manager14/sub_0805A25C.inc", void sub_0805A25C()) ASM_FUNC("asm/non_matching/manager14/sub_0805A25C.inc", void sub_0805A25C())

View File

@ -3,4 +3,4 @@
ASM_FUNC("asm/non_matching/manager16/Manager16_Main.inc", void Manager16_Main()) ASM_FUNC("asm/non_matching/manager16/Manager16_Main.inc", void Manager16_Main())
ASM_FUNC("asm/non_matching/manager16/sub_0805ACC0.inc", void sub_0805ACC0()) ASM_FUNC("asm/non_matching/manager16/sub_0805ACC0.inc", void sub_0805ACC0())

View File

@ -16,10 +16,8 @@ typedef struct {
extern void (*const gUnk_08108654[])(Manager17*); extern void (*const gUnk_08108654[])(Manager17*);
void sub_0805AD80(Manager17*); void sub_0805AD80(Manager17*);
void Manager17_Main(Manager17* manager) { void Manager17_Main(Manager17* manager) {
gUnk_08108654[manager->manager.action](manager); gUnk_08108654[manager->manager.action](manager);
} }

View File

@ -4,4 +4,4 @@ ASM_FUNC("asm/non_matching/manager18/Manager18_Main.inc", void Manager18_Main())
ASM_FUNC("asm/non_matching/manager18/sub_0805AEDC.inc", void sub_0805AEDC()) ASM_FUNC("asm/non_matching/manager18/sub_0805AEDC.inc", void sub_0805AEDC())
ASM_FUNC("asm/non_matching/manager18/sub_0805AF3C.inc", void sub_0805AF3C()) ASM_FUNC("asm/non_matching/manager18/sub_0805AF3C.inc", void sub_0805AF3C())

View File

@ -9,7 +9,7 @@ void sub_0805AFFC(Manager*);
void Manager19_Main(Manager* this) { void Manager19_Main(Manager* this) {
if (this == NULL) { if (this == NULL) {
if ((void*)gArea.unk3 != sub_0805AFFC) { if ((void*)gArea.unk3 != sub_0805AFFC) {
sub_0805AFFC(this); sub_0805AFFC(this);
} }
} else { } else {
if (this->action == 0) { if (this->action == 0) {
@ -23,7 +23,7 @@ void Manager19_Main(Manager* this) {
} }
} else { } else {
gRoomControls.bg3OffsetX.WORD = gRoomControls.bg3OffsetX.WORD - 0x2000; gRoomControls.bg3OffsetX.WORD = gRoomControls.bg3OffsetX.WORD - 0x2000;
gScreen.affine.bg3xOffset = gRoomControls.roomScrollX + gRoomControls.bg3OffsetX.HALF.HI ; gScreen.affine.bg3xOffset = gRoomControls.roomScrollX + gRoomControls.bg3OffsetX.HALF.HI;
gScreen.affine.bg3yOffset = gRoomControls.roomScrollY + gRoomControls.bg3OffsetY.HALF.HI; gScreen.affine.bg3yOffset = gRoomControls.roomScrollY + gRoomControls.bg3OffsetY.HALF.HI;
} }
} }
@ -34,4 +34,4 @@ void sub_0805AFFC(Manager* this) {
gScreen.lcd.displayControl |= 0x800; gScreen.lcd.displayControl |= 0x800;
gScreen.affine.bg3xOffset = gRoomControls.roomScrollX + gRoomControls.bg3OffsetX.HALF.HI; gScreen.affine.bg3xOffset = gRoomControls.roomScrollX + gRoomControls.bg3OffsetX.HALF.HI;
gScreen.affine.bg3yOffset = gRoomControls.roomScrollY + gRoomControls.bg3OffsetY.HALF.HI; gScreen.affine.bg3yOffset = gRoomControls.roomScrollY + gRoomControls.bg3OffsetY.HALF.HI;
} }

View File

@ -9,4 +9,4 @@ ASM_FUNC("asm/non_matching/manager1B/sub_0805B474.inc", void sub_0805B474())
ASM_FUNC("asm/non_matching/manager1B/sub_0805B4B4.inc", void sub_0805B4B4()) ASM_FUNC("asm/non_matching/manager1B/sub_0805B4B4.inc", void sub_0805B4B4())
ASM_FUNC("asm/non_matching/manager1B/sub_0805B4D0.inc", void sub_0805B4D0()) ASM_FUNC("asm/non_matching/manager1B/sub_0805B4D0.inc", void sub_0805B4D0())

View File

@ -23,18 +23,18 @@ void sub_0805B5E0(Manager* this) {
default: default:
gScreen.affine.bg3yOffset = 0; gScreen.affine.bg3yOffset = 0;
gScreen.affine.bg3xOffset = 0; gScreen.affine.bg3xOffset = 0;
break; break;
case 1: case 1:
gScreen.affine.bg3xOffset = gRoomControls.roomScrollX + gRoomControls.bg3OffsetX.HALF.HI; gScreen.affine.bg3xOffset = gRoomControls.roomScrollX + gRoomControls.bg3OffsetX.HALF.HI;
gScreen.affine.bg3yOffset = gRoomControls.roomScrollY + gRoomControls.bg3OffsetY.HALF.HI; gScreen.affine.bg3yOffset = gRoomControls.roomScrollY + gRoomControls.bg3OffsetY.HALF.HI;
break; break;
} }
} }
void sub_0805B638(Manager* this) { void sub_0805B638(Manager* this) {
if (this->unk_0a == 1) { if (this->unk_0a == 1) {
gRoomControls.bg3OffsetX.WORD = gRoomControls.bg3OffsetX.WORD + 0x2000; gRoomControls.bg3OffsetX.WORD = gRoomControls.bg3OffsetX.WORD + 0x2000;
gScreen.affine.bg3xOffset = gRoomControls.roomScrollX + gRoomControls.bg3OffsetX.HALF.HI ; gScreen.affine.bg3xOffset = gRoomControls.roomScrollX + gRoomControls.bg3OffsetX.HALF.HI;
gScreen.affine.bg3yOffset = gRoomControls.roomScrollY + gRoomControls.bg3OffsetY.HALF.HI; gScreen.affine.bg3yOffset = gRoomControls.roomScrollY + gRoomControls.bg3OffsetY.HALF.HI;
} }
} }

View File

@ -28,8 +28,7 @@ void sub_0805B70C(Manager1F* this) {
this->manager.unk_0b = 1; this->manager.unk_0b = 1;
} }
this->manager.action = 1; this->manager.action = 1;
this->field_0x38 = this->field_0x38 = (this->field_0x38 >> 4 & 0x3fU) | (((this->field_0x3a << 0x10) >> 0x14 & 0x3fU) << 6);
(this->field_0x38 >> 4 & 0x3fU) | (((this->field_0x3a << 0x10) >> 0x14 & 0x3fU) << 6);
sub_0805B778(this); sub_0805B778(this);
} }
@ -48,6 +47,5 @@ void sub_0805B744(Manager1F* this) {
} }
void sub_0805B778(Manager1F* this) { void sub_0805B778(Manager1F* this) {
SetTileType(gUnk_08108C9C[this->manager.unk_0a * 2 + this->manager.unk_0b], SetTileType(gUnk_08108C9C[this->manager.unk_0a * 2 + this->manager.unk_0b], this->field_0x38, this->field_0x36);
this->field_0x38, this->field_0x36); }
}

View File

@ -22,4 +22,4 @@ ASM_FUNC("asm/non_matching/manager2/sub_080575C8.inc", void sub_080575C8(u32 par
ASM_FUNC("asm/non_matching/manager2/sub_08057688.inc", void sub_08057688()) ASM_FUNC("asm/non_matching/manager2/sub_08057688.inc", void sub_08057688())
ASM_FUNC("asm/non_matching/manager2/sub_080576A0.inc", void sub_080576A0()) ASM_FUNC("asm/non_matching/manager2/sub_080576A0.inc", void sub_080576A0())

View File

@ -15,4 +15,4 @@ ASM_FUNC("asm/non_matching/manager22/sub_0805BBBC.inc", void sub_0805BBBC())
ASM_FUNC("asm/non_matching/manager22/sub_0805BC04.inc", void sub_0805BC04()) ASM_FUNC("asm/non_matching/manager22/sub_0805BC04.inc", void sub_0805BC04())
ASM_FUNC("asm/non_matching/manager22/sub_0805BC4C.inc", void sub_0805BC4C()) ASM_FUNC("asm/non_matching/manager22/sub_0805BC4C.inc", void sub_0805BC4C())

View File

@ -305,7 +305,6 @@ void sub_0805C4E0(u32 pos, u32 layer) {
} }
} }
u32 sub_0805C608(void) u32 sub_0805C608(void) {
{ return gUnk_08108CFC[gArea.regret];
return gUnk_08108CFC[gArea.regret];
} }

View File

@ -9,7 +9,7 @@ typedef struct {
u16 flag; u16 flag;
u16 tilePos; u16 tilePos;
u16 tileType; // If the tile type at tilePos, tileLayer is tileType, set the local flag. u16 tileType; // If the tile type at tilePos, tileLayer is tileType, set the local flag.
} Manager2A_unk; // TODO result of GetCurrentRoomProperty(3)? } Manager2A_unk; // TODO result of GetCurrentRoomProperty(3)?
void sub_0805CFF0(Manager2A_unk*); void sub_0805CFF0(Manager2A_unk*);

View File

@ -1,13 +1,13 @@
#include "manager.h" #include "manager.h"
#include "flags.h" #include "flags.h"
#include "room.h" #include "room.h"
#include "functions.h" #include "functions.h"
#include "object.h" #include "object.h"
#include "audio.h" #include "audio.h"
typedef struct { typedef struct {
Manager manager; Manager manager;
Entity * field_0x20; Entity* field_0x20;
u8 field_0x24; u8 field_0x24;
u8 field_0x25; u8 field_0x25;
u8 field_0x26; u8 field_0x26;
@ -37,8 +37,6 @@ typedef struct {
u16 field_0x3e; u16 field_0x3e;
} Manager2B; } Manager2B;
extern void (*const gUnk_08108D30[])(Entity*); extern void (*const gUnk_08108D30[])(Entity*);
extern u8 gEntCount; extern u8 gEntCount;
@ -62,7 +60,7 @@ NONMATCH("asm/non_matching/manager2B/sub_0805D02C.inc", void sub_0805D02C(Manage
objectData = GetCurrentRoomProperty(this->manager.unk_0a); objectData = GetCurrentRoomProperty(this->manager.unk_0a);
counter = 0; counter = 0;
createdObjects = &this->field_0x20; createdObjects = &this->field_0x20;
while(counter < 4) { while (counter < 4) {
object = CreateObject(OBJECT_A0, objectData[2], counter); object = CreateObject(OBJECT_A0, objectData[2], counter);
object->x.HALF.HI = objectData[0] + gRoomControls.roomOriginX; object->x.HALF.HI = objectData[0] + gRoomControls.roomOriginX;
object->y.HALF.HI = objectData[1] + gRoomControls.roomOriginY; object->y.HALF.HI = objectData[1] + gRoomControls.roomOriginY;
@ -72,7 +70,7 @@ NONMATCH("asm/non_matching/manager2B/sub_0805D02C.inc", void sub_0805D02C(Manage
counter += 1; counter += 1;
objectData += 3; objectData += 3;
createdObjects += 1; createdObjects += 1;
} }
this->manager.action = 1; this->manager.action = 1;
this->manager.unk_0f = 0x3c; this->manager.unk_0f = 0x3c;
this->field_0x36 = 0; this->field_0x36 = 0;
@ -106,7 +104,7 @@ NONMATCH("asm/non_matching/manager2B/sub_0805D11C.inc", void sub_0805D11C(Manage
u32 counter; u32 counter;
counter = 0; counter = 0;
createdObjects = &this->field_0x20; createdObjects = &this->field_0x20;
while (counter < 4) { while (counter < 4) {
entity = *createdObjects; entity = *createdObjects;
*createdObjects = NULL; *createdObjects = NULL;

View File

@ -18,12 +18,12 @@ void Manager2C_Main(Manager2C* manager) {
manager->manager.action = 1; manager->manager.action = 1;
manager->field_0x3a = 0; manager->field_0x3a = 0;
} }
if (((CheckPlayerInRegion(manager->field_0x38, manager->field_0x3a, 0x14, 0x40) != 0) && if (((CheckPlayerInRegion(manager->field_0x38, manager->field_0x3a, 0x14, 0x40) != 0) &&
(((gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) +gPlayerEntity.height.HALF.HI) < 0)) && (((gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) + gPlayerEntity.height.HALF.HI) < 0)) &&
(gRoomControls.roomScrollY == gRoomControls.roomOriginY)) { (gRoomControls.roomScrollY == gRoomControls.roomOriginY)) {
MemClear(&gScreenTransition.areaID, 0x20); MemClear(&gScreenTransition.areaID, 0x20);
gScreenTransition.transitioningOut = 1; gScreenTransition.transitioningOut = 1;
gScreenTransition.transitionType = 0; gScreenTransition.transitionType = 0;
gScreenTransition.field_0xf = 0xb; gScreenTransition.field_0xf = 0xb;
gScreenTransition.areaID = manager->manager.unk_0b; gScreenTransition.areaID = manager->manager.unk_0b;
gScreenTransition.roomID = manager->manager.unk_0e; gScreenTransition.roomID = manager->manager.unk_0e;

View File

@ -1,6 +1,40 @@
#include "manager.h" #include "manager.h"
#include "area.h"
#include "room.h"
#include "screen.h"
#include "functions.h"
ASM_FUNC("asm/non_matching/manager2F/Manager2F_Main.inc", void Manager2F_Main()) void sub_0805D470(Manager*);
ASM_FUNC("asm/non_matching/manager2F/sub_0805D470.inc", void sub_0805D470()) void Manager2F_Main(Manager* this) {
if (this == NULL) {
if ((void*)gArea.unk3 != sub_0805D470) {
sub_0805D470(NULL);
}
} else {
if (this->action == 0) {
this->action = 1;
this->unk_10 |= 0x20;
sub_0805E3A0(this, 6);
if (gArea.unk3 == 0) {
sub_08052D74(this, sub_0805D470, NULL);
} else {
DeleteThisEntity();
}
} else {
gRoomControls.bg3OffsetX.WORD -= 0x4000;
gRoomControls.bg3OffsetY.WORD -= 0x2000;
gScreen.affine.bg3xOffset = gRoomControls.roomScrollX + gRoomControls.bg3OffsetX.HALF.HI;
gScreen.affine.bg3yOffset = gRoomControls.roomScrollY + gRoomControls.bg3OffsetY.HALF.HI;
}
}
}
void sub_0805D470(Manager* this) {
LoadGfxGroup(0x4c);
gScreen.affine.bg3Control = 0x1e07;
gScreen.lcd.displayControl |= 0x800;
gScreen.affine.bg3xOffset = gRoomControls.roomScrollX + gRoomControls.bg3OffsetX.HALF.HI;
gScreen.affine.bg3yOffset = gRoomControls.roomScrollY + gRoomControls.bg3OffsetY.HALF.HI;
}

View File

@ -1,4 +1,4 @@
#include "manager.h" #include "manager.h"
ASM_FUNC("asm/non_matching/manager31/Manager31_Main.inc", void Manager31_Main()) ASM_FUNC("asm/non_matching/manager31/Manager31_Main.inc", void Manager31_Main())

View File

@ -14,4 +14,4 @@ ASM_FUNC("asm/non_matching/manager32/sub_0805D9D8.inc", void sub_0805D9D8())
ASM_FUNC("asm/non_matching/manager32/sub_0805DA08.inc", void sub_0805DA08()) ASM_FUNC("asm/non_matching/manager32/sub_0805DA08.inc", void sub_0805DA08())
ASM_FUNC("asm/non_matching/manager32/sub_0805DA90.inc", void sub_0805DA90()) ASM_FUNC("asm/non_matching/manager32/sub_0805DA90.inc", void sub_0805DA90())

View File

@ -1,3 +1,3 @@
#include "manager.h" #include "manager.h"
ASM_FUNC("asm/non_matching/manager33/Manager33_Main.inc", void Manager33_Main(Manager* this)) ASM_FUNC("asm/non_matching/manager33/Manager33_Main.inc", void Manager33_Main(Manager* this))

View File

@ -1,11 +1,84 @@
#include "manager.h" #include "manager.h"
#include "flags.h"
#include "room.h"
#include "object.h"
ASM_FUNC("asm/non_matching/manager35/Manager35_Main.inc", void Manager35_Main()) typedef struct {
Manager manager;
u8 field_0x20[0x15];
u8 field_0x35;
u8 field_0x36;
u8 field_0x37;
s16 field_0x38;
s16 field_0x3a;
u16 field_0x3c;
u16 field_0x3e;
} Manager35;
ASM_FUNC("asm/non_matching/manager35/sub_0805DC9C.inc", void sub_0805DC9C()) extern void (*const gUnk_08108D98[])(Manager35*);
ASM_FUNC("asm/non_matching/manager35/sub_0805DCC8.inc", void sub_0805DCC8()) extern void sub_0805E4E0(Entity*, u32);
ASM_FUNC("asm/non_matching/manager35/sub_0805DD24.inc", void sub_0805DD24()) void Manager35_Main(Manager35* this) {
gUnk_08108D98[this->manager.action](this);
}
ASM_FUNC("asm/non_matching/manager35/sub_0805DD68.inc", void sub_0805DD68()) void sub_0805DC9C(Manager35* this) {
if (CheckFlags(this->field_0x3c) != 0) {
DeleteThisEntity();
}
if (CheckFlags(this->field_0x3e) != 0) {
SetFlag(this->field_0x3c);
DeleteThisEntity();
}
this->manager.action = 1;
}
void sub_0805DCC8(Manager35* this) {
Entity* object;
if (CheckFlags(this->field_0x3e) != 0) {
this->manager.action = 2;
this->manager.unk_0e = this->field_0x35;
if (this->manager.unk_0e == 0) {
this->manager.unk_0e = 0x1e;
}
this->manager.parent = (Manager*)gRoomControls.cameraTarget;
object = CreateObject(OBJECT_69, 0, 0);
if (object != NULL) {
object->x.HALF.HI = this->field_0x38 + gRoomControls.roomOriginX;
object->y.HALF.HI = this->field_0x3a + gRoomControls.roomOriginY;
*(Entity**)this->manager.unk_18 = object;
gRoomControls.cameraTarget = object;
sub_0805E4E0(object, 0x1e);
}
}
}
void sub_0805DD24(Manager35* this) {
sub_0805E4E0(0, 8);
if ((gRoomControls.unk6 & 4) == 0 && --this->manager.unk_0e == 0) {
this->manager.action = 3;
SetFlag(this->field_0x3c);
if (this->field_0x36 == 0) {
this->field_0x36 = 1;
}
}
}
void sub_0805DD68(Manager35* this) {
sub_0805E4E0(0, 8);
if (this->field_0x36 != 0) {
if (--this->field_0x36 == 0) {
gRoomControls.cameraTarget = (Entity*)this->manager.parent;
}
} else {
if ((gRoomControls.unk6 & 4) == 0) {
Entity* entity = *(Entity**)this->manager.unk_18;
if (entity != NULL) {
DeleteEntity(entity);
}
DeleteThisEntity();
}
}
}

View File

@ -20,4 +20,4 @@ ASM_FUNC("asm/non_matching/manager37/sub_0805E000.inc", void sub_0805E000())
ASM_FUNC("asm/non_matching/manager37/sub_0805E078.inc", void sub_0805E078()) ASM_FUNC("asm/non_matching/manager37/sub_0805E078.inc", void sub_0805E078())
ASM_FUNC("asm/non_matching/manager37/sub_0805E094.inc", void sub_0805E094()) ASM_FUNC("asm/non_matching/manager37/sub_0805E094.inc", void sub_0805E094())

View File

@ -3,8 +3,6 @@
#include "manager.h" #include "manager.h"
#include "functions.h" #include "functions.h"
extern void DoExitTransition(void*);
void Manager6_Main(Manager6* this) { void Manager6_Main(Manager6* this) {
u32 tmp; u32 tmp;
Manager6WarpData* i; Manager6WarpData* i;

View File

@ -32,7 +32,6 @@ typedef struct {
u16 field_0x3e; u16 field_0x3e;
} ManagerD; } ManagerD;
extern void (*const gUnk_08108308[])(ManagerD*); extern void (*const gUnk_08108308[])(ManagerD*);
extern u16* GetLayerByIndex(u32); extern u16* GetLayerByIndex(u32);
@ -52,7 +51,6 @@ void sub_08058DE8(ManagerD* this) {
puVar3 = (this->field_0x38 + 2) + puVar2; puVar3 = (this->field_0x38 + 2) + puVar2;
this->field_0x30 = puVar3; this->field_0x30 = puVar3;
this->field_0x28 = *puVar3; this->field_0x28 = *puVar3;
} }
} }

View File

@ -46,4 +46,4 @@ ASM_FUNC("asm/non_matching/managerF/sub_0805947C.inc", void sub_0805947C())
ASM_FUNC("asm/non_matching/managerF/sub_080594DC.inc", void sub_080594DC()) ASM_FUNC("asm/non_matching/managerF/sub_080594DC.inc", void sub_080594DC())
ASM_FUNC("asm/non_matching/managerF/sub_08059548.inc", void sub_08059548()) ASM_FUNC("asm/non_matching/managerF/sub_08059548.inc", void sub_08059548())

View File

@ -3,11 +3,9 @@
#include "script.h" #include "script.h"
#include "functions.h" #include "functions.h"
extern u32 gUnk_0813AD10; extern ScreenTransitionData gUnk_0813AD10;
extern u32 gUnk_0813AD24; extern ScreenTransitionData gUnk_0813AD24;
extern u32 gUnk_0813AD38; extern ScreenTransitionData gUnk_0813AD38;
extern void DoExitTransition(u32*);
void Emma(Entity* this) { void Emma(Entity* this) {
if (this->action == 0) { if (this->action == 0) {

View File

@ -4,7 +4,6 @@
#include "functions.h" #include "functions.h"
#include "textbox.h" #include "textbox.h"
extern void DoExitTransition(ScreenTransitionData*);
extern ScreenTransitionData gUnk_0813AD4C; extern ScreenTransitionData gUnk_0813AD4C;
void sub_0806E014(Entity* this); void sub_0806E014(Entity* this);

View File

@ -12,10 +12,8 @@ typedef struct {
u32 unk; u32 unk;
} struct_0806C2A0; } struct_0806C2A0;
extern void DoExitTransition(void*); extern ScreenTransitionData gUnk_0813AD60;
extern ScreenTransitionData gUnk_0813AD74;
extern void gUnk_0813AD60;
extern void gUnk_0813AD74;
void Simon(Entity* this) { void Simon(Entity* this) {
if (this->action == 0) { if (this->action == 0) {

View File

@ -232,4 +232,4 @@ void (*const BookActionFuncs[])(Entity*) = {
sub_0809B3C4, sub_0809B4A8, sub_0809B524, sub_0809B56C, sub_0809B5B4, sub_0809B5EC, sub_0809B3C4, sub_0809B4A8, sub_0809B524, sub_0809B56C, sub_0809B5B4, sub_0809B5EC,
}; };
const s8 gUnk_08123D94[] = { -22, -20, -20, -20 }; const s8 gUnk_08123D94[] = { -22, -20, -20, -20 };

View File

@ -4,8 +4,6 @@
#include "player.h" #include "player.h"
#include "functions.h" #include "functions.h"
extern void DoExitTransition(void*);
extern void (*const gUnk_08122254[])(Entity*); extern void (*const gUnk_08122254[])(Entity*);
extern u16 gUnk_0812225C[]; extern u16 gUnk_0812225C[];
@ -35,6 +33,6 @@ void sub_08090F00(Entity* this) {
} }
if ((gPlayerState.flags.all & 0x80) && sub_080041A0(this, &gPlayerEntity, 4, 4) && if ((gPlayerState.flags.all & 0x80) && sub_080041A0(this, &gPlayerEntity, 4, 4) &&
(gPlayerEntity.height.HALF.HI == 0) && (((u16)gPlayerState.field_0x90.HALF.LO) & gUnk_0812225C[this->type2])) { (gPlayerEntity.height.HALF.HI == 0) && (((u16)gPlayerState.field_0x90.HALF.LO) & gUnk_0812225C[this->type2])) {
DoExitTransition((Entity*)GetCurrentRoomProperty(this->actionDelay)); DoExitTransition(GetCurrentRoomProperty(this->actionDelay));
} }
} }

View File

@ -31,7 +31,6 @@ extern void sub_0806F948();
extern void sub_08077698(); extern void sub_08077698();
extern void sub_0805E544(); extern void sub_0805E544();
extern void sub_080717F8(); extern void sub_080717F8();
extern void DoExitTransition();
extern void UnfreezeTime(); extern void UnfreezeTime();
extern void sub_08071A6C(); extern void sub_08071A6C();
extern void sub_08052BB8(); extern void sub_08052BB8();