diff --git a/asm/non_matching/manager2F/Manager2F_Main.inc b/asm/non_matching/manager2F/Manager2F_Main.inc deleted file mode 100644 index 01d9f8d9..00000000 --- a/asm/non_matching/manager2F/Manager2F_Main.inc +++ /dev/null @@ -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 diff --git a/asm/non_matching/manager2F/sub_0805D470.inc b/asm/non_matching/manager2F/sub_0805D470.inc deleted file mode 100644 index 9417a56e..00000000 --- a/asm/non_matching/manager2F/sub_0805D470.inc +++ /dev/null @@ -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 diff --git a/asm/non_matching/manager35/Manager35_Main.inc b/asm/non_matching/manager35/Manager35_Main.inc deleted file mode 100644 index 5e14ae76..00000000 --- a/asm/non_matching/manager35/Manager35_Main.inc +++ /dev/null @@ -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 diff --git a/asm/non_matching/manager35/sub_0805DC9C.inc b/asm/non_matching/manager35/sub_0805DC9C.inc deleted file mode 100644 index 9b0f22ac..00000000 --- a/asm/non_matching/manager35/sub_0805DC9C.inc +++ /dev/null @@ -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 diff --git a/asm/non_matching/manager35/sub_0805DCC8.inc b/asm/non_matching/manager35/sub_0805DCC8.inc deleted file mode 100644 index a6463901..00000000 --- a/asm/non_matching/manager35/sub_0805DCC8.inc +++ /dev/null @@ -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 diff --git a/asm/non_matching/manager35/sub_0805DD24.inc b/asm/non_matching/manager35/sub_0805DD24.inc deleted file mode 100644 index ddac4697..00000000 --- a/asm/non_matching/manager35/sub_0805DD24.inc +++ /dev/null @@ -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 diff --git a/asm/non_matching/manager35/sub_0805DD68.inc b/asm/non_matching/manager35/sub_0805DD68.inc deleted file mode 100644 index c9e2894d..00000000 --- a/asm/non_matching/manager35/sub_0805DD68.inc +++ /dev/null @@ -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 diff --git a/include/functions.h b/include/functions.h index 15e0d175..0f8645d6 100644 --- a/include/functions.h +++ b/include/functions.h @@ -267,6 +267,7 @@ extern void sub_0805EEB4(u8*, u32); extern void sub_08056BDC(u32); extern void sub_08056F88(u32, u32); extern void sub_0805F8E4(u32 r0, WStruct* r1); +extern void DoExitTransition(ScreenTransitionData*); extern Entity* sub_08077C94(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_080042D0(Entity*, u32, u16); - #endif diff --git a/include/structures.h b/include/structures.h index 43455a79..20f83c3b 100644 --- a/include/structures.h +++ b/include/structures.h @@ -169,6 +169,9 @@ typedef struct { u8 unk3; u8 freezeTime; u8 unk9; + u8 unk_0xa; + u8 unk_0xb; + u16 unk_0xc; } EntityHandler; extern EntityHandler gUnk_03003DC0; diff --git a/src/code_0808091C.c b/src/code_0808091C.c index 0ea3dbcf..7d11a428 100644 --- a/src/code_0808091C.c +++ b/src/code_0808091C.c @@ -10,8 +10,6 @@ extern u32 gUnk_0200B650; extern u32 gUnk_02025EB0; extern u8 gUnk_02000070; -extern void DoExitTransition(ScreenTransitionData*); - void sub_080808D8(void) { gScreenTransition.transitionType = 0; } diff --git a/src/enemy/mazaalHead.c b/src/enemy/mazaalHead.c index 1139af36..1672b5c4 100644 --- a/src/enemy/mazaalHead.c +++ b/src/enemy/mazaalHead.c @@ -8,7 +8,6 @@ #include "functions.h" extern void UnloadOBJPalette(Entity*); -extern void DoExitTransition(ScreenTransitionData*); extern u8 gEntCount; diff --git a/src/enemy/mazaalMacro.c b/src/enemy/mazaalMacro.c index d3dbee34..0e32a810 100644 --- a/src/enemy/mazaalMacro.c +++ b/src/enemy/mazaalMacro.c @@ -6,7 +6,6 @@ #include "structures.h" #include "functions.h" -extern void DoExitTransition(ScreenTransitionData*); extern void sub_0807B600(u32); extern const u16 script_08012E20[]; diff --git a/src/enemy/wallMaster.c b/src/enemy/wallMaster.c index 394e8620..663c3612 100644 --- a/src/enemy/wallMaster.c +++ b/src/enemy/wallMaster.c @@ -6,9 +6,7 @@ extern void sub_08001328(Entity*); extern Entity* sub_08049DF4(u32); -extern void DoExitTransition(u32*); - -extern u32* gUnk_0813AB1C[]; +extern ScreenTransitionData* gUnk_0813AB1C[]; void sub_0802A78C(Entity*); void sub_0802A7D0(Entity*); diff --git a/src/enemy/wallMaster2.c b/src/enemy/wallMaster2.c index 7c488c30..a0c79d74 100644 --- a/src/enemy/wallMaster2.c +++ b/src/enemy/wallMaster2.c @@ -4,10 +4,9 @@ #include "functions.h" extern void sub_08001328(Entity*); -extern void DoExitTransition(u32*); extern Entity* gUnk_020000B0; -extern u32* gUnk_0813AB1C[]; +extern ScreenTransitionData* gUnk_0813AB1C[]; void sub_0802CF64(Entity*); void sub_0802CF8C(Entity*); diff --git a/src/manager/manager1.c b/src/manager/manager1.c index c0390149..200fc720 100644 --- a/src/manager/manager1.c +++ b/src/manager/manager1.c @@ -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_08057450.inc", void sub_08057450()) \ No newline at end of file +ASM_FUNC("asm/non_matching/manager1/sub_08057450.inc", void sub_08057450()) diff --git a/src/manager/manager10.c b/src/manager/manager10.c index e7c0b944..e1b1b2a8 100644 --- a/src/manager/manager10.c +++ b/src/manager/manager10.c @@ -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_08059994.inc", void sub_08059994()) \ No newline at end of file +ASM_FUNC("asm/non_matching/manager10/sub_08059994.inc", void sub_08059994()) diff --git a/src/manager/manager12.c b/src/manager/manager12.c index d69c5d19..15759fdd 100644 --- a/src/manager/manager12.c +++ b/src/manager/manager12.c @@ -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/TryLoadPrologueHyruleTown.inc", void TryLoadPrologueHyruleTown()) \ No newline at end of file +ASM_FUNC("asm/non_matching/manager12/TryLoadPrologueHyruleTown.inc", void TryLoadPrologueHyruleTown()) diff --git a/src/manager/manager13.c b/src/manager/manager13.c index cd151e5a..acfe8b48 100644 --- a/src/manager/manager13.c +++ b/src/manager/manager13.c @@ -1,3 +1,3 @@ #include "manager.h" -ASM_FUNC("asm/non_matching/manager13/Manager13_Main.inc", void Manager13_Main()) \ No newline at end of file +ASM_FUNC("asm/non_matching/manager13/Manager13_Main.inc", void Manager13_Main()) diff --git a/src/manager/manager14.c b/src/manager/manager14.c index eb3d820c..bb7388ef 100644 --- a/src/manager/manager14.c +++ b/src/manager/manager14.c @@ -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/sub_0805A25C.inc", void sub_0805A25C()) \ No newline at end of file +ASM_FUNC("asm/non_matching/manager14/sub_0805A25C.inc", void sub_0805A25C()) diff --git a/src/manager/manager16.c b/src/manager/manager16.c index 1436b67b..23292b39 100644 --- a/src/manager/manager16.c +++ b/src/manager/manager16.c @@ -3,4 +3,4 @@ ASM_FUNC("asm/non_matching/manager16/Manager16_Main.inc", void Manager16_Main()) -ASM_FUNC("asm/non_matching/manager16/sub_0805ACC0.inc", void sub_0805ACC0()) \ No newline at end of file +ASM_FUNC("asm/non_matching/manager16/sub_0805ACC0.inc", void sub_0805ACC0()) diff --git a/src/manager/manager17.c b/src/manager/manager17.c index 1722da42..d19440b0 100644 --- a/src/manager/manager17.c +++ b/src/manager/manager17.c @@ -16,10 +16,8 @@ typedef struct { extern void (*const gUnk_08108654[])(Manager17*); - void sub_0805AD80(Manager17*); - void Manager17_Main(Manager17* manager) { gUnk_08108654[manager->manager.action](manager); } diff --git a/src/manager/manager18.c b/src/manager/manager18.c index 4dd08c6d..98e3cf57 100644 --- a/src/manager/manager18.c +++ b/src/manager/manager18.c @@ -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_0805AF3C.inc", void sub_0805AF3C()) \ No newline at end of file +ASM_FUNC("asm/non_matching/manager18/sub_0805AF3C.inc", void sub_0805AF3C()) diff --git a/src/manager/manager19.c b/src/manager/manager19.c index b5586cf8..fa0f1912 100644 --- a/src/manager/manager19.c +++ b/src/manager/manager19.c @@ -9,7 +9,7 @@ void sub_0805AFFC(Manager*); void Manager19_Main(Manager* this) { if (this == NULL) { if ((void*)gArea.unk3 != sub_0805AFFC) { - sub_0805AFFC(this); + sub_0805AFFC(this); } } else { if (this->action == 0) { @@ -23,7 +23,7 @@ void Manager19_Main(Manager* this) { } } else { 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; } } @@ -34,4 +34,4 @@ void sub_0805AFFC(Manager* this) { gScreen.lcd.displayControl |= 0x800; gScreen.affine.bg3xOffset = gRoomControls.roomScrollX + gRoomControls.bg3OffsetX.HALF.HI; gScreen.affine.bg3yOffset = gRoomControls.roomScrollY + gRoomControls.bg3OffsetY.HALF.HI; -} \ No newline at end of file +} diff --git a/src/manager/manager1B.c b/src/manager/manager1B.c index 79cb5f45..e04dca81 100644 --- a/src/manager/manager1B.c +++ b/src/manager/manager1B.c @@ -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_0805B4D0.inc", void sub_0805B4D0()) \ No newline at end of file +ASM_FUNC("asm/non_matching/manager1B/sub_0805B4D0.inc", void sub_0805B4D0()) diff --git a/src/manager/manager1D.c b/src/manager/manager1D.c index 2e52aaf6..6d1a850b 100644 --- a/src/manager/manager1D.c +++ b/src/manager/manager1D.c @@ -23,18 +23,18 @@ void sub_0805B5E0(Manager* this) { default: gScreen.affine.bg3yOffset = 0; gScreen.affine.bg3xOffset = 0; - break; + break; case 1: gScreen.affine.bg3xOffset = gRoomControls.roomScrollX + gRoomControls.bg3OffsetX.HALF.HI; gScreen.affine.bg3yOffset = gRoomControls.roomScrollY + gRoomControls.bg3OffsetY.HALF.HI; - break; + break; } } void sub_0805B638(Manager* this) { if (this->unk_0a == 1) { 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; } -} \ No newline at end of file +} diff --git a/src/manager/manager1F.c b/src/manager/manager1F.c index 08fd71e8..1ad3135e 100644 --- a/src/manager/manager1F.c +++ b/src/manager/manager1F.c @@ -28,8 +28,7 @@ void sub_0805B70C(Manager1F* this) { this->manager.unk_0b = 1; } this->manager.action = 1; - this->field_0x38 = - (this->field_0x38 >> 4 & 0x3fU) | (((this->field_0x3a << 0x10) >> 0x14 & 0x3fU) << 6); + this->field_0x38 = (this->field_0x38 >> 4 & 0x3fU) | (((this->field_0x3a << 0x10) >> 0x14 & 0x3fU) << 6); sub_0805B778(this); } @@ -48,6 +47,5 @@ void sub_0805B744(Manager1F* this) { } void sub_0805B778(Manager1F* this) { - SetTileType(gUnk_08108C9C[this->manager.unk_0a * 2 + this->manager.unk_0b], - this->field_0x38, this->field_0x36); -} \ No newline at end of file + SetTileType(gUnk_08108C9C[this->manager.unk_0a * 2 + this->manager.unk_0b], this->field_0x38, this->field_0x36); +} diff --git a/src/manager/manager2.c b/src/manager/manager2.c index f634c42d..1198575c 100644 --- a/src/manager/manager2.c +++ b/src/manager/manager2.c @@ -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_080576A0.inc", void sub_080576A0()) \ No newline at end of file +ASM_FUNC("asm/non_matching/manager2/sub_080576A0.inc", void sub_080576A0()) diff --git a/src/manager/manager22.c b/src/manager/manager22.c index b5524f42..ba174d0a 100644 --- a/src/manager/manager22.c +++ b/src/manager/manager22.c @@ -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_0805BC4C.inc", void sub_0805BC4C()) \ No newline at end of file +ASM_FUNC("asm/non_matching/manager22/sub_0805BC4C.inc", void sub_0805BC4C()) diff --git a/src/manager/manager24.c b/src/manager/manager24.c index b0d78f36..88a5a8e9 100644 --- a/src/manager/manager24.c +++ b/src/manager/manager24.c @@ -305,7 +305,6 @@ void sub_0805C4E0(u32 pos, u32 layer) { } } -u32 sub_0805C608(void) -{ - return gUnk_08108CFC[gArea.regret]; +u32 sub_0805C608(void) { + return gUnk_08108CFC[gArea.regret]; } diff --git a/src/manager/manager2A.c b/src/manager/manager2A.c index 048df4cb..f82aabd7 100644 --- a/src/manager/manager2A.c +++ b/src/manager/manager2A.c @@ -9,7 +9,7 @@ typedef struct { u16 flag; u16 tilePos; 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*); diff --git a/src/manager/manager2B.c b/src/manager/manager2B.c index 3471a5bc..b3601007 100644 --- a/src/manager/manager2B.c +++ b/src/manager/manager2B.c @@ -1,13 +1,13 @@ #include "manager.h" #include "flags.h" -#include "room.h" +#include "room.h" #include "functions.h" #include "object.h" #include "audio.h" typedef struct { Manager manager; - Entity * field_0x20; + Entity* field_0x20; u8 field_0x24; u8 field_0x25; u8 field_0x26; @@ -37,8 +37,6 @@ typedef struct { u16 field_0x3e; } Manager2B; - - extern void (*const gUnk_08108D30[])(Entity*); 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); counter = 0; createdObjects = &this->field_0x20; - while(counter < 4) { + while (counter < 4) { object = CreateObject(OBJECT_A0, objectData[2], counter); object->x.HALF.HI = objectData[0] + gRoomControls.roomOriginX; 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; objectData += 3; createdObjects += 1; - } + } this->manager.action = 1; this->manager.unk_0f = 0x3c; this->field_0x36 = 0; @@ -106,7 +104,7 @@ NONMATCH("asm/non_matching/manager2B/sub_0805D11C.inc", void sub_0805D11C(Manage u32 counter; counter = 0; - createdObjects = &this->field_0x20; + createdObjects = &this->field_0x20; while (counter < 4) { entity = *createdObjects; *createdObjects = NULL; diff --git a/src/manager/manager2C.c b/src/manager/manager2C.c index ba66443d..3c578661 100644 --- a/src/manager/manager2C.c +++ b/src/manager/manager2C.c @@ -18,12 +18,12 @@ void Manager2C_Main(Manager2C* manager) { manager->manager.action = 1; manager->field_0x3a = 0; } - if (((CheckPlayerInRegion(manager->field_0x38, manager->field_0x3a, 0x14, 0x40) != 0) && - (((gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) +gPlayerEntity.height.HALF.HI) < 0)) && + if (((CheckPlayerInRegion(manager->field_0x38, manager->field_0x3a, 0x14, 0x40) != 0) && + (((gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) + gPlayerEntity.height.HALF.HI) < 0)) && (gRoomControls.roomScrollY == gRoomControls.roomOriginY)) { MemClear(&gScreenTransition.areaID, 0x20); gScreenTransition.transitioningOut = 1; - gScreenTransition.transitionType = 0; + gScreenTransition.transitionType = 0; gScreenTransition.field_0xf = 0xb; gScreenTransition.areaID = manager->manager.unk_0b; gScreenTransition.roomID = manager->manager.unk_0e; diff --git a/src/manager/manager2F.c b/src/manager/manager2F.c index 4d61dc37..68e41338 100644 --- a/src/manager/manager2F.c +++ b/src/manager/manager2F.c @@ -1,6 +1,40 @@ #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()) \ No newline at end of file +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; +} diff --git a/src/manager/manager31.c b/src/manager/manager31.c index 2186974b..1dfa0b75 100644 --- a/src/manager/manager31.c +++ b/src/manager/manager31.c @@ -1,4 +1,4 @@ #include "manager.h" -ASM_FUNC("asm/non_matching/manager31/Manager31_Main.inc", void Manager31_Main()) \ No newline at end of file +ASM_FUNC("asm/non_matching/manager31/Manager31_Main.inc", void Manager31_Main()) diff --git a/src/manager/manager32.c b/src/manager/manager32.c index ef35a608..4461617e 100644 --- a/src/manager/manager32.c +++ b/src/manager/manager32.c @@ -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_0805DA90.inc", void sub_0805DA90()) \ No newline at end of file +ASM_FUNC("asm/non_matching/manager32/sub_0805DA90.inc", void sub_0805DA90()) diff --git a/src/manager/manager33.c b/src/manager/manager33.c index 25d630d6..df2feeb7 100644 --- a/src/manager/manager33.c +++ b/src/manager/manager33.c @@ -1,3 +1,3 @@ #include "manager.h" -ASM_FUNC("asm/non_matching/manager33/Manager33_Main.inc", void Manager33_Main(Manager* this)) \ No newline at end of file +ASM_FUNC("asm/non_matching/manager33/Manager33_Main.inc", void Manager33_Main(Manager* this)) diff --git a/src/manager/manager35.c b/src/manager/manager35.c index 498af777..0afd3b02 100644 --- a/src/manager/manager35.c +++ b/src/manager/manager35.c @@ -1,11 +1,84 @@ #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()) \ No newline at end of file +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(); + } + } +} diff --git a/src/manager/manager37.c b/src/manager/manager37.c index 635bd5a5..b9b8cdcc 100644 --- a/src/manager/manager37.c +++ b/src/manager/manager37.c @@ -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_0805E094.inc", void sub_0805E094()) \ No newline at end of file +ASM_FUNC("asm/non_matching/manager37/sub_0805E094.inc", void sub_0805E094()) diff --git a/src/manager/manager6.c b/src/manager/manager6.c index 0f5637cb..7c7f3cfb 100644 --- a/src/manager/manager6.c +++ b/src/manager/manager6.c @@ -3,8 +3,6 @@ #include "manager.h" #include "functions.h" -extern void DoExitTransition(void*); - void Manager6_Main(Manager6* this) { u32 tmp; Manager6WarpData* i; diff --git a/src/manager/managerD.c b/src/manager/managerD.c index dcd31bb5..376fa94f 100644 --- a/src/manager/managerD.c +++ b/src/manager/managerD.c @@ -32,7 +32,6 @@ typedef struct { u16 field_0x3e; } ManagerD; - extern void (*const gUnk_08108308[])(ManagerD*); extern u16* GetLayerByIndex(u32); @@ -52,7 +51,6 @@ void sub_08058DE8(ManagerD* this) { puVar3 = (this->field_0x38 + 2) + puVar2; this->field_0x30 = puVar3; this->field_0x28 = *puVar3; - } } diff --git a/src/manager/managerF.c b/src/manager/managerF.c index 65fa7757..3f99ad78 100644 --- a/src/manager/managerF.c +++ b/src/manager/managerF.c @@ -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_08059548.inc", void sub_08059548()) \ No newline at end of file +ASM_FUNC("asm/non_matching/managerF/sub_08059548.inc", void sub_08059548()) diff --git a/src/npc/emma.c b/src/npc/emma.c index f7a8577a..cdbfe8e3 100644 --- a/src/npc/emma.c +++ b/src/npc/emma.c @@ -3,11 +3,9 @@ #include "script.h" #include "functions.h" -extern u32 gUnk_0813AD10; -extern u32 gUnk_0813AD24; -extern u32 gUnk_0813AD38; - -extern void DoExitTransition(u32*); +extern ScreenTransitionData gUnk_0813AD10; +extern ScreenTransitionData gUnk_0813AD24; +extern ScreenTransitionData gUnk_0813AD38; void Emma(Entity* this) { if (this->action == 0) { diff --git a/src/npc/picolyteBottle.c b/src/npc/picolyteBottle.c index 720cdf61..4dd3dcaf 100644 --- a/src/npc/picolyteBottle.c +++ b/src/npc/picolyteBottle.c @@ -4,7 +4,6 @@ #include "functions.h" #include "textbox.h" -extern void DoExitTransition(ScreenTransitionData*); extern ScreenTransitionData gUnk_0813AD4C; void sub_0806E014(Entity* this); diff --git a/src/npc/simon.c b/src/npc/simon.c index f5f1aad7..740ffa7e 100644 --- a/src/npc/simon.c +++ b/src/npc/simon.c @@ -12,10 +12,8 @@ typedef struct { u32 unk; } struct_0806C2A0; -extern void DoExitTransition(void*); - -extern void gUnk_0813AD60; -extern void gUnk_0813AD74; +extern ScreenTransitionData gUnk_0813AD60; +extern ScreenTransitionData gUnk_0813AD74; void Simon(Entity* this) { if (this->action == 0) { diff --git a/src/object/book.c b/src/object/book.c index ee53ef99..b51c4716 100644 --- a/src/object/book.c +++ b/src/object/book.c @@ -232,4 +232,4 @@ void (*const BookActionFuncs[])(Entity*) = { sub_0809B3C4, sub_0809B4A8, sub_0809B524, sub_0809B56C, sub_0809B5B4, sub_0809B5EC, }; -const s8 gUnk_08123D94[] = { -22, -20, -20, -20 }; \ No newline at end of file +const s8 gUnk_08123D94[] = { -22, -20, -20, -20 }; diff --git a/src/object/minishSizedEntrance.c b/src/object/minishSizedEntrance.c index 03467f41..ce5ab316 100644 --- a/src/object/minishSizedEntrance.c +++ b/src/object/minishSizedEntrance.c @@ -4,8 +4,6 @@ #include "player.h" #include "functions.h" -extern void DoExitTransition(void*); - extern void (*const gUnk_08122254[])(Entity*); extern u16 gUnk_0812225C[]; @@ -35,6 +33,6 @@ void sub_08090F00(Entity* this) { } 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])) { - DoExitTransition((Entity*)GetCurrentRoomProperty(this->actionDelay)); + DoExitTransition(GetCurrentRoomProperty(this->actionDelay)); } } diff --git a/src/player.c b/src/player.c index 21b3c234..8c3612f1 100644 --- a/src/player.c +++ b/src/player.c @@ -31,7 +31,6 @@ extern void sub_0806F948(); extern void sub_08077698(); extern void sub_0805E544(); extern void sub_080717F8(); -extern void DoExitTransition(); extern void UnfreezeTime(); extern void sub_08071A6C(); extern void sub_08052BB8();