diff --git a/asm/non_matching/manager14/Manager14_Main.inc b/asm/non_matching/manager14/Manager14_Main.inc deleted file mode 100644 index da20afe1..00000000 --- a/asm/non_matching/manager14/Manager14_Main.inc +++ /dev/null @@ -1,19 +0,0 @@ - .syntax unified - push {r4, lr} - adds r4, r0, #0 - ldrh r0, [r4, #0x20] - adds r0, #1 - strh r0, [r4, #0x20] - ldr r1, _08059E7C @ =gUnk_081085A4 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0805A1D8 - pop {r4, pc} - .align 2, 0 -_08059E7C: .4byte gUnk_081085A4 - .syntax divided diff --git a/asm/non_matching/manager14/nullsub_495.inc b/asm/non_matching/manager14/nullsub_495.inc deleted file mode 100644 index 807ea5e0..00000000 --- a/asm/non_matching/manager14/nullsub_495.inc +++ /dev/null @@ -1,4 +0,0 @@ - .syntax unified - bx lr - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/manager14/sub_08059E80.inc b/asm/non_matching/manager14/sub_08059E80.inc deleted file mode 100644 index 1b598506..00000000 --- a/asm/non_matching/manager14/sub_08059E80.inc +++ /dev/null @@ -1,55 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r4, r0, #0 - bl EntityHasDuplicateID - cmp r0, #0 - beq _08059E90 - bl DeleteThisEntity -_08059E90: - adds r1, r4, #0 - adds r1, #0x22 - movs r2, #0 - movs r0, #1 - strb r0, [r1] - movs r0, #0 - strh r2, [r4, #0x20] - strb r0, [r4, #0xe] - movs r0, #4 - strb r0, [r4, #0xf] - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x20 - orrs r0, r1 - strb r0, [r4, #0x10] - ldr r3, _08059EE4 @ =gScreen - ldr r0, _08059EE8 @ =0x00001E04 - strh r0, [r3, #0x2c] - ldrh r0, [r3] - movs r5, #0x80 - lsls r5, r5, #4 - adds r1, r5, #0 - orrs r0, r1 - strh r0, [r3] - adds r1, r3, #0 - adds r1, #0x66 - ldr r0, _08059EEC @ =0x00003E48 - strh r0, [r1] - adds r1, #2 - movs r0, #0x80 - lsls r0, r0, #5 - strh r0, [r1] - movs r0, #0x80 - strh r0, [r3, #0x2e] - strh r2, [r3, #0x30] - ldr r1, _08059EF0 @ =nullsub_495 - ldr r2, _08059EF4 @ =sub_0805A25C - adds r0, r4, #0 - bl sub_08052D74 - pop {r4, r5, pc} - .align 2, 0 -_08059EE4: .4byte gScreen -_08059EE8: .4byte 0x00001E04 -_08059EEC: .4byte 0x00003E48 -_08059EF0: .4byte nullsub_495 -_08059EF4: .4byte sub_0805A25C - .syntax divided diff --git a/asm/non_matching/manager14/sub_08059EF8.inc b/asm/non_matching/manager14/sub_08059EF8.inc deleted file mode 100644 index 08bcb5db..00000000 --- a/asm/non_matching/manager14/sub_08059EF8.inc +++ /dev/null @@ -1,81 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - movs r6, #0xff - lsls r0, r0, #0x18 - lsrs r5, r0, #0x18 - cmp r5, #0 - bne _08059F90 - movs r0, #4 - strb r0, [r4, #0xf] - adds r0, r4, #0 - bl sub_08059F9C - cmp r0, #0 - beq _08059F64 - ldr r2, _08059F50 @ =gUnk_08108588 - ldrb r0, [r4, #0xe] - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r1, [r0] - ldr r0, _08059F54 @ =0x00000808 - cmp r1, r0 - beq _08059F5C - adds r1, r4, #0 - adds r1, #0x22 - movs r0, #1 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x24 - strb r5, [r0] - ldr r1, _08059F58 @ =gScreen - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] - ands r0, r6 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r0, [r0] - adds r1, #0x68 - strh r0, [r1] - b _08059F90 - .align 2, 0 -_08059F50: .4byte gUnk_08108588 -_08059F54: .4byte 0x00000808 -_08059F58: .4byte gScreen -_08059F5C: - adds r0, r4, #0 - adds r0, #0x22 - strb r5, [r0] - b _08059F90 -_08059F64: - adds r1, r4, #0 - adds r1, #0x22 - movs r0, #1 - strb r0, [r1] - ldr r3, _08059F94 @ =gUnk_08108588 - ldrb r2, [r4, #0xe] - lsls r0, r2, #1 - adds r0, r0, r3 - ldrh r1, [r0] - movs r0, #0x80 - lsls r0, r0, #5 - cmp r1, r0 - beq _08059F90 - ldr r0, _08059F98 @ =gScreen - subs r1, r2, #1 - strb r1, [r4, #0xe] - ands r1, r6 - lsls r1, r1, #1 - adds r1, r1, r3 - ldrh r1, [r1] - adds r0, #0x68 - strh r1, [r0] -_08059F90: - pop {r4, r5, r6, pc} - .align 2, 0 -_08059F94: .4byte gUnk_08108588 -_08059F98: .4byte gScreen - .syntax divided diff --git a/asm/non_matching/manager14/sub_08059F9C.inc b/asm/non_matching/manager14/sub_08059F9C.inc deleted file mode 100644 index 55a7686f..00000000 --- a/asm/non_matching/manager14/sub_08059F9C.inc +++ /dev/null @@ -1,61 +0,0 @@ - .syntax unified - push {r4, lr} - adds r4, r0, #0 - ldr r0, _08059FB4 @ =gRoomControls - ldrb r0, [r0, #5] - cmp r0, #0x17 - bhi _0805A03A - lsls r0, r0, #2 - ldr r1, _08059FB8 @ =_08059FBC - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08059FB4: .4byte gRoomControls -_08059FB8: .4byte _08059FBC -_08059FBC: @ jump table - .4byte _0805A036 @ case 0 - .4byte _0805A01C @ case 1 - .4byte _0805A03A @ case 2 - .4byte _0805A03A @ case 3 - .4byte _0805A03A @ case 4 - .4byte _0805A03A @ case 5 - .4byte _0805A03A @ case 6 - .4byte _0805A02A @ case 7 - .4byte _0805A036 @ case 8 - .4byte _0805A036 @ case 9 - .4byte _0805A03A @ case 10 - .4byte _0805A03A @ case 11 - .4byte _0805A03A @ case 12 - .4byte _0805A03A @ case 13 - .4byte _0805A03A @ case 14 - .4byte _0805A03A @ case 15 - .4byte _0805A03A @ case 16 - .4byte _0805A03A @ case 17 - .4byte _0805A03A @ case 18 - .4byte _0805A03A @ case 19 - .4byte _0805A03A @ case 20 - .4byte _0805A03A @ case 21 - .4byte _0805A03A @ case 22 - .4byte _0805A036 @ case 23 -_0805A01C: - movs r0, #0x16 - bl CheckLocalFlag - cmp r0, #0 - beq _0805A02A - movs r0, #0 - b _0805A03C -_0805A02A: - adds r0, r4, #0 - bl sub_0805A25C - bl DeleteThisEntity - b _0805A03C -_0805A036: - movs r0, #1 - b _0805A03C -_0805A03A: - movs r0, #0 -_0805A03C: - pop {r4, pc} - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/manager14/sub_0805A040.inc b/asm/non_matching/manager14/sub_0805A040.inc deleted file mode 100644 index b326f001..00000000 --- a/asm/non_matching/manager14/sub_0805A040.inc +++ /dev/null @@ -1,5 +0,0 @@ - .syntax unified - push {lr} - bl sub_0805A098 - pop {pc} - .syntax divided diff --git a/asm/non_matching/manager14/sub_0805A048.inc b/asm/non_matching/manager14/sub_0805A048.inc deleted file mode 100644 index 1e744aea..00000000 --- a/asm/non_matching/manager14/sub_0805A048.inc +++ /dev/null @@ -1,40 +0,0 @@ - .syntax unified - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0805A086 - movs r0, #4 - strb r0, [r4, #0xf] - ldr r2, _0805A090 @ =gScreen - ldr r3, _0805A094 @ =gUnk_08108588 - ldrb r0, [r4, #0xe] - adds r1, r0, #1 - strb r1, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x17 - adds r0, r0, r3 - ldrh r0, [r0] - adds r2, #0x68 - strh r0, [r2] - lsls r1, r1, #0x18 - lsrs r1, r1, #0x18 - cmp r1, #9 - bne _0805A086 - movs r0, #1 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x22 - movs r0, #0 - strb r0, [r1] -_0805A086: - adds r0, r4, #0 - bl sub_0805A098 - pop {r4, pc} - .align 2, 0 -_0805A090: .4byte gScreen -_0805A094: .4byte gUnk_08108588 - .syntax divided diff --git a/asm/non_matching/manager14/sub_0805A098.inc b/asm/non_matching/manager14/sub_0805A098.inc deleted file mode 100644 index 76e0471d..00000000 --- a/asm/non_matching/manager14/sub_0805A098.inc +++ /dev/null @@ -1,24 +0,0 @@ - .syntax unified - push {lr} - adds r1, r0, #0 - ldr r0, _0805A0B0 @ =gRoomControls - ldrb r0, [r0, #5] - cmp r0, #9 - bgt _0805A0B4 - cmp r0, #8 - bge _0805A0BC - cmp r0, #0 - beq _0805A0BC - b _0805A0B8 - .align 2, 0 -_0805A0B0: .4byte gRoomControls -_0805A0B4: - cmp r0, #0x17 - beq _0805A0BC -_0805A0B8: - movs r0, #3 - strb r0, [r1, #0xc] -_0805A0BC: - pop {pc} - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/manager14/sub_0805A0C0.inc b/asm/non_matching/manager14/sub_0805A0C0.inc deleted file mode 100644 index 0e67a842..00000000 --- a/asm/non_matching/manager14/sub_0805A0C0.inc +++ /dev/null @@ -1,41 +0,0 @@ - .syntax unified - push {r4, lr} - adds r3, r0, #0 - ldrb r0, [r3, #0xf] - subs r0, #1 - strb r0, [r3, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0805A106 - movs r0, #4 - strb r0, [r3, #0xf] - ldr r4, _0805A108 @ =gScreen - ldr r2, _0805A10C @ =gUnk_08108588 - ldrb r0, [r3, #0xe] - adds r1, r0, #0 - adds r1, #0xff - strb r1, [r3, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x17 - adds r0, r0, r2 - ldrh r2, [r0] - adds r0, r4, #0 - adds r0, #0x68 - strh r2, [r0] - lsls r1, r1, #0x18 - lsrs r1, r1, #0x18 - cmp r1, #0xff - bne _0805A106 - ldrh r1, [r4] - ldr r0, _0805A110 @ =0x0000F7FF - ands r0, r1 - strh r0, [r4] - bl sub_08056250 - bl DeleteThisEntity -_0805A106: - pop {r4, pc} - .align 2, 0 -_0805A108: .4byte gScreen -_0805A10C: .4byte gUnk_08108588 -_0805A110: .4byte 0x0000F7FF - .syntax divided diff --git a/asm/non_matching/manager14/sub_0805A114.inc b/asm/non_matching/manager14/sub_0805A114.inc deleted file mode 100644 index 553675ce..00000000 --- a/asm/non_matching/manager14/sub_0805A114.inc +++ /dev/null @@ -1,92 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r7, r0, #0 - adds r6, r1, #0 - ldr r2, _0805A154 @ =gUnk_03003DE4 - ldrb r1, [r2] - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #9 - ldr r1, _0805A158 @ =gUnk_02017AA0 - adds r4, r0, r1 - movs r5, #0 - mov r8, r2 - mov sb, r1 - ldr r2, _0805A15C @ =gScreen - ldr r0, _0805A160 @ =gSineTable - mov ip, r0 -_0805A13A: - movs r1, #0x30 - ldrsh r0, [r2, r1] - adds r3, r5, r0 - asrs r1, r3, #3 - movs r0, #7 - ands r1, r0 - cmp r1, #7 - bhi _0805A190 - lsls r0, r1, #2 - ldr r1, _0805A164 @ =_0805A168 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0805A154: .4byte gUnk_03003DE4 -_0805A158: .4byte gUnk_02017AA0 -_0805A15C: .4byte gScreen -_0805A160: .4byte gSineTable -_0805A164: .4byte _0805A168 -_0805A168: @ jump table - .4byte _0805A190 @ case 0 - .4byte _0805A18C @ case 1 - .4byte _0805A190 @ case 2 - .4byte _0805A190 @ case 3 - .4byte _0805A188 @ case 4 - .4byte _0805A190 @ case 5 - .4byte _0805A190 @ case 6 - .4byte _0805A18C @ case 7 -_0805A188: - subs r3, #8 - b _0805A190 -_0805A18C: - movs r0, #0xf0 - b _0805A192 -_0805A190: - movs r0, #0xf8 -_0805A192: - ands r3, r0 - adds r0, r6, r3 - movs r1, #0xff - ands r0, r1 - lsls r0, r0, #1 - add r0, ip - movs r1, #0 - ldrsh r0, [r0, r1] - muls r0, r7, r0 - lsrs r0, r0, #8 - ldrh r1, [r2, #0x2e] - adds r0, r0, r1 - strh r0, [r4] - adds r4, #2 - adds r5, #1 - cmp r5, #0x9f - ble _0805A13A - mov r0, r8 - ldrb r1, [r0] - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #9 - add r0, sb - ldr r1, _0805A1D0 @ =0x0400001C - ldr r2, _0805A1D4 @ =0xA2600001 - bl sub_0805622C - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0805A1D0: .4byte 0x0400001C -_0805A1D4: .4byte 0xA2600001 - .syntax divided diff --git a/asm/non_matching/manager14/sub_0805A1D8.inc b/asm/non_matching/manager14/sub_0805A1D8.inc deleted file mode 100644 index a91affc4..00000000 --- a/asm/non_matching/manager14/sub_0805A1D8.inc +++ /dev/null @@ -1,61 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r4, r0, #0 - ldr r1, _0805A244 @ =gRoomControls - ldr r0, [r1, #0x28] - ldr r2, _0805A248 @ =0xFFFFF000 - adds r0, r0, r2 - str r0, [r1, #0x28] - ldr r5, _0805A24C @ =gScreen - ldrh r0, [r1, #0x2a] - strh r0, [r5, #0x2e] - ldr r0, [r1, #0x2c] - adds r0, r0, r2 - str r0, [r1, #0x2c] - ldrh r0, [r1, #0x2e] - strh r0, [r5, #0x30] - ldrh r1, [r5] - movs r0, #0x80 - lsls r0, r0, #4 - ands r0, r1 - cmp r0, #0 - beq _0805A240 - ldrh r1, [r4, #0x20] - lsrs r1, r1, #1 - movs r0, #6 - bl sub_0805A114 - adds r0, r4, #0 - adds r0, #0x22 - ldrb r0, [r0] - cmp r0, #0 - bne _0805A240 - ldr r0, _0805A250 @ =gMain - ldrh r1, [r0, #0xc] - movs r0, #0x1f - ands r0, r1 - cmp r0, #0 - bne _0805A240 - adds r2, r4, #0 - adds r2, #0x24 - ldrb r0, [r2] - adds r0, #1 - movs r1, #3 - ands r0, r1 - strb r0, [r2] - ldr r1, _0805A254 @ =gUnk_0810859A - ldrb r0, [r2] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r1, [r0] - adds r0, r5, #0 - adds r0, #0x68 - strh r1, [r0] -_0805A240: - pop {r4, r5, pc} - .align 2, 0 -_0805A244: .4byte gRoomControls -_0805A248: .4byte 0xFFFFF000 -_0805A24C: .4byte gScreen -_0805A250: .4byte gMain -_0805A254: .4byte gUnk_0810859A - .syntax divided diff --git a/asm/non_matching/manager14/sub_0805A25C.inc b/asm/non_matching/manager14/sub_0805A25C.inc deleted file mode 100644 index 6a989185..00000000 --- a/asm/non_matching/manager14/sub_0805A25C.inc +++ /dev/null @@ -1,17 +0,0 @@ - .syntax unified - push {lr} - ldr r1, _0805A278 @ =gScreen - adds r2, r1, #0 - adds r2, #0x66 - movs r0, #0 - strh r0, [r2] - ldrh r2, [r1] - ldr r0, _0805A27C @ =0x0000F7FF - ands r0, r2 - strh r0, [r1] - bl sub_08056250 - pop {pc} - .align 2, 0 -_0805A278: .4byte gScreen -_0805A27C: .4byte 0x0000F7FF - .syntax divided diff --git a/assets/assets.json b/assets/assets.json index d00b1836..6320d5ab 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -33520,16 +33520,6 @@ "start": 1082672, "size": 88 }, - { - "path": "manager14/gUnk_08108588.bin", - "start": 1082760, - "size": 18 - }, - { - "path": "manager14/gUnk_0810859A.bin", - "start": 1082778, - "size": 10 - }, { "path": "manager15/gUnk_081085B8.bin", "start": 1082808, @@ -52701,4 +52691,4 @@ }, "size": 129 } -] \ No newline at end of file +] diff --git a/data/const/manager/manager14.s b/data/const/manager/manager14.s deleted file mode 100644 index 806b0dcf..00000000 --- a/data/const/manager/manager14.s +++ /dev/null @@ -1,18 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108588:: @ 08108588 - .incbin "manager14/gUnk_08108588.bin" - -gUnk_0810859A:: @ 0810859A - .incbin "manager14/gUnk_0810859A.bin" - -gUnk_081085A4:: @ 081085A4 - .4byte sub_08059E80 - .4byte sub_0805A040 - .4byte sub_0805A048 - .4byte sub_0805A0C0 - .4byte sub_08059EF8 diff --git a/include/functions.h b/include/functions.h index 65913c68..b4316733 100644 --- a/include/functions.h +++ b/include/functions.h @@ -222,7 +222,7 @@ extern void sub_08080CB4(Entity*); extern u32 sub_0800442E(Entity*); extern void sub_08081404(Entity*, u32); extern void sub_0807B7D8(u32, u32, u32); -extern void sub_08052D74(void*, void*, void*); +extern void sub_08052D74(void*, void (*)(), void (*)()); extern void sub_0800451C(Entity*); extern u32 sub_080002F0(u32, u32, u32); extern u32 sub_080040D8(Entity*, u8*, s32, s32); diff --git a/include/main.h b/include/main.h index 99007163..3225f2ed 100644 --- a/include/main.h +++ b/include/main.h @@ -97,6 +97,7 @@ extern u16 gPaletteBuffer[]; extern void VBlankInterruptWait(void); extern void DisableInterruptsAndDMA(void); extern void EnableVBlankIntr(void); +extern void sub_08056250(void); static void sub_08055F70(void); static bool32 SoftResetKeysPressed(void); diff --git a/linker.ld b/linker.ld index 486ed6d5..28c9e80d 100644 --- a/linker.ld +++ b/linker.ld @@ -1206,7 +1206,7 @@ SECTIONS { src/manager/manager10.o(.rodata); data/const/manager/manager12.o(.rodata); data/const/manager/manager13.o(.rodata); - data/const/manager/manager14.o(.rodata); + src/manager/manager14.o(.rodata); data/const/manager/manager15.o(.rodata); data/const/manager/manager17.o(.rodata); data/const/manager/manager18.o(.rodata); diff --git a/src/manager/manager14.c b/src/manager/manager14.c index bb7388ef..0b98f542 100644 --- a/src/manager/manager14.c +++ b/src/manager/manager14.c @@ -1,25 +1,199 @@ +#include "global.h" #include "manager.h" +#include "screen.h" +#include "room.h" +#include "flags.h" +#include "coord.h" +#include "main.h" +#include "functions.h" -ASM_FUNC("asm/non_matching/manager14/Manager14_Main.inc", void Manager14_Main()) +typedef struct { + Manager manager; + u16 unk_20; + u8 unk_22; + u8 unk_23[1]; + u8 unk_24; + u8 unk_25[0x1B]; +} Manager14; -ASM_FUNC("asm/non_matching/manager14/sub_08059E80.inc", void sub_08059E80()) +const u16 gUnk_08108588[] = { 0x1000, 0xF01, 0xE02, 0xD03, 0xC04, 0xB05, 0xA06, 0x907, 0x808 }; -ASM_FUNC("asm/non_matching/manager14/sub_08059EF8.inc", void sub_08059EF8()) +const u16 gUnk_0810859A[] = { 0x808, 0x907, 0xA06, 0x907 }; -ASM_FUNC("asm/non_matching/manager14/sub_08059F9C.inc", void sub_08059F9C()) +extern void sub_0805622C(u16*, u32, u32); +extern u16 gUnk_02017AA0[]; -ASM_FUNC("asm/non_matching/manager14/sub_0805A040.inc", void sub_0805A040()) +void Manager14_Main(Manager14*); +void sub_08059E80(Manager14*); +void sub_08059EF8(Manager14*); +u32 sub_08059F9C(Manager14*); +void sub_0805A040(Manager14*); +void sub_0805A048(Manager14*); +void sub_0805A098(Manager14*); +void sub_0805A0C0(Manager14*); +void sub_0805A114(u32, u32); +void sub_0805A1D8(Manager14*); +void nullsub_495(); +void sub_0805A25C(); -ASM_FUNC("asm/non_matching/manager14/sub_0805A048.inc", void sub_0805A048()) +void Manager14_Main(Manager14* this) { + static void (*const gUnk_081085A4[])(Manager14*) = { + sub_08059E80, sub_0805A040, sub_0805A048, sub_0805A0C0, sub_08059EF8, + }; + this->unk_20++; + gUnk_081085A4[this->manager.action](this); + sub_0805A1D8(this); +} -ASM_FUNC("asm/non_matching/manager14/sub_0805A098.inc", void sub_0805A098()) +void sub_08059E80(Manager14* this) { + if (EntityHasDuplicateID((Entity*)this)) { + DeleteThisEntity(); + } + this->unk_22 = 1; + this->unk_20 = 0; + this->manager.unk_0e = 0; + this->manager.unk_0f = 4; + this->manager.action = 4; + this->manager.unk_10 |= 0x20; + gScreen.bg3.control = 0x1E04; + gScreen.lcd.displayControl |= 0x800; + gScreen.controls.layerFXControl = 0x3E48; + gScreen.controls.alphaBlend = 0x1000; + gScreen.bg3.xOffset = 0x80; + gScreen.bg3.yOffset = 0; + sub_08052D74(this, nullsub_495, sub_0805A25C); +} -ASM_FUNC("asm/non_matching/manager14/sub_0805A0C0.inc", void sub_0805A0C0()) +void sub_08059EF8(Manager14* this) { + u32 tmp = --this->manager.unk_0f; + if (tmp == 0) { + this->manager.unk_0f = 4; + if (sub_08059F9C(this)) { + if (gUnk_08108588[this->manager.unk_0e] != 0x808) { + this->unk_22 = 1; + this->unk_24 = tmp; + gScreen.controls.alphaBlend = gUnk_08108588[++this->manager.unk_0e]; + } else { + this->unk_22 = tmp; + } + } else { + this->unk_22 = 1; + if (gUnk_08108588[this->manager.unk_0e] != 0x1000) { + gScreen.controls.alphaBlend = gUnk_08108588[--this->manager.unk_0e]; + } + } + } +} -ASM_FUNC("asm/non_matching/manager14/sub_0805A114.inc", void sub_0805A114()) +u32 sub_08059F9C(Manager14* this) { + switch (gRoomControls.roomID) { + case 1: + if (CheckLocalFlag(0x16)) { + return 0; + } + sub_0805A25C(this); + DeleteThisEntity(); + break; + case 7: + sub_0805A25C(this); + DeleteThisEntity(); + break; + case 0: + case 8 ... 9: + case 23: + return 1; + case 2 ... 6: + case 10 ... 22: + default: + return 0; + } +} -ASM_FUNC("asm/non_matching/manager14/sub_0805A1D8.inc", void sub_0805A1D8()) +void sub_0805A040(Manager14* this) { + sub_0805A098(this); +} -ASM_FUNC("asm/non_matching/manager14/nullsub_495.inc", void nullsub_495()) +void sub_0805A048(Manager14* this) { + if (--this->manager.unk_0f == 0) { + this->manager.unk_0f = 4; + gScreen.controls.alphaBlend = gUnk_08108588[this->manager.unk_0e++]; + if (this->manager.unk_0e == 9) { + this->manager.action = 1; + this->unk_22 = 0; + } + } + sub_0805A098(this); +} -ASM_FUNC("asm/non_matching/manager14/sub_0805A25C.inc", void sub_0805A25C()) +void sub_0805A098(Manager14* this) { + switch (gRoomControls.roomID) { + case 0: + case 8: + case 9: + case 0x17: + return; + default: + this->manager.action = 3; + } +} + +void sub_0805A0C0(Manager14* this) { + if (--this->manager.unk_0f == 0) { + this->manager.unk_0f = 4; + gScreen.controls.alphaBlend = gUnk_08108588[this->manager.unk_0e--]; + if (this->manager.unk_0e == 0xFF) { + gScreen.lcd.displayControl &= ~0x800; + sub_08056250(); + DeleteThisEntity(); + } + } +} + +void sub_0805A114(u32 unk0, u32 unk1) { + s32 i; + u16* p = &gUnk_02017AA0[gUnk_03003DE4 * 0x500]; + for (i = 0; i < 0xA0; i++) { + s32 tmp = i + gScreen.bg3.yOffset; + switch ((tmp >> 3) & 7) { + case 4: + tmp -= 8; + tmp &= 0xF8; + break; + case 1: + case 7: + tmp &= 0xF0; + break; + case 0: + case 2 ... 3: + case 5 ... 6: + default: + tmp &= 0xF8; + } + *p++ = gScreen.bg3.xOffset + ((gSineTable[(unk1 + tmp) & 0xFF] * unk0) >> 8); + } + sub_0805622C(&gUnk_02017AA0[gUnk_03003DE4 * 0x500], 0x0400001C, 0xA2600001); +} + +void sub_0805A1D8(Manager14* this) { + gRoomControls.bg3OffsetX.WORD -= 0x1000; + gScreen.bg3.xOffset = gRoomControls.bg3OffsetX.HALF.HI; + gRoomControls.bg3OffsetY.WORD -= 0x1000; + gScreen.bg3.yOffset = gRoomControls.bg3OffsetY.HALF.HI; + if (gScreen.lcd.displayControl & 0x800) { + sub_0805A114(6, this->unk_20 >> 1); + if (this->unk_22 == 0 && (gMain.ticks & 0x1F) == 0) { + this->unk_24++; + this->unk_24 &= 3; + gScreen.controls.alphaBlend = gUnk_0810859A[this->unk_24]; + } + } +} + +void nullsub_495() { +} + +void sub_0805A25C() { + gScreen.controls.layerFXControl = 0; + gScreen.lcd.displayControl &= ~0x800; + sub_08056250(); +} diff --git a/src/manager/manager1A.c b/src/manager/manager1A.c index b0401f28..d828bff5 100644 --- a/src/manager/manager1A.c +++ b/src/manager/manager1A.c @@ -31,8 +31,6 @@ void Manager1A_Main(Manager1A* this) { gUnk_08108668[this->manager.action](this); } -extern void sub_08052D74(void*, void*, void*); - typedef struct struct_08108764 { u8 unk_00; u8 unk_01; // area ID?