diff --git a/asm/armos.s b/asm/armos.s index 7d5bd0fd..31a0c733 100644 --- a/asm/armos.s +++ b/asm/armos.s @@ -163,7 +163,7 @@ _080302BA: ldrb r0, [r4, #0xb] cmp r0, #0 beq _080302C6 - bl sub_0804B128 + bl GetCurrentRoomProperty str r0, [r4, #0x7c] _080302C6: adds r0, r4, #0 diff --git a/asm/bombarossa.s b/asm/bombarossa.s index ac7c0f55..d368a07e 100644 --- a/asm/bombarossa.s +++ b/asm/bombarossa.s @@ -41,7 +41,7 @@ sub_080333D4: @ 0x080333D4 ldrb r0, [r4, #0xa] cmp r0, #0 beq _0803340E - bl sub_0804B128 + bl GetCurrentRoomProperty str r0, [r4, #0x54] adds r1, r4, #0 adds r1, #0x54 diff --git a/asm/chestSpawner.s b/asm/chestSpawner.s index 8c30c704..bed7ffa9 100644 --- a/asm/chestSpawner.s +++ b/asm/chestSpawner.s @@ -291,7 +291,7 @@ sub_08084074: @ 0x08084074 push {r4, lr} adds r4, r0, #0 movs r0, #3 - bl sub_0804B128 + bl GetCurrentRoomProperty adds r1, r0, #0 cmp r1, #0 beq _080840A4 diff --git a/asm/code_08019444.s b/asm/code_08019444.s index 49dbad0a..9ea73655 100644 --- a/asm/code_08019444.s +++ b/asm/code_08019444.s @@ -3472,7 +3472,7 @@ _0801AE70: bl sub_0805BB74 _0801AE8C: movs r0, #5 - bl sub_0804B128 + bl GetCurrentRoomProperty cmp r0, #0 beq _0801AE9A bl _call_via_r0 diff --git a/asm/code_0804AEB0.s b/asm/code_0804AEB0.s index 420cc420..2c4fdb3b 100644 --- a/asm/code_0804AEB0.s +++ b/asm/code_0804AEB0.s @@ -169,7 +169,7 @@ sub_0804AFDC: @ 0x0804AFDC push {r4, lr} movs r4, #1 movs r0, #6 - bl sub_0804B128 + bl GetCurrentRoomProperty cmp r0, #0 beq _0804AFF0 bl _call_via_r0 diff --git a/asm/code_0804B058.s b/asm/code_0804B058.s index 008d524d..9df89063 100644 --- a/asm/code_0804B058.s +++ b/asm/code_0804B058.s @@ -120,8 +120,8 @@ _0804B120: .align 2, 0 _0804B124: .4byte gUnk_080D50FC - thumb_func_start sub_0804B128 -sub_0804B128: @ 0x0804B128 + thumb_func_start GetCurrentRoomProperty +GetCurrentRoomProperty: @ 0x0804B128 push {lr} adds r2, r0, #0 ldr r0, _0804B138 @ =gUnk_02017654 diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index 2d31c5f7..11d92150 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -5029,7 +5029,7 @@ sub_080A7CFC: @ 0x080A7CFC lsls r4, r4, #3 movs r6, #0 movs r0, #3 - bl sub_0804B128 + bl GetCurrentRoomProperty adds r1, r0, #0 cmp r1, #0 beq _080A7D38 diff --git a/asm/enemy50.s b/asm/enemy50.s index fa86ee59..74f04c95 100644 --- a/asm/enemy50.s +++ b/asm/enemy50.s @@ -440,7 +440,7 @@ sub_08040E3C: @ 0x08040E3C bne _08040E86 strb r5, [r4, #0xc] ldrb r0, [r4, #0xe] - bl sub_0804B128 + bl GetCurrentRoomProperty str r0, [r4, #0x54] b _08040E8C _08040E86: diff --git a/asm/floatingPlatform.s b/asm/floatingPlatform.s index 398b9268..7d1c24eb 100644 --- a/asm/floatingPlatform.s +++ b/asm/floatingPlatform.s @@ -44,7 +44,7 @@ sub_080860D8: @ 0x080860D8 orrs r0, r1 strb r0, [r2] ldrb r0, [r4, #0xb] - bl sub_0804B128 + bl GetCurrentRoomProperty str r0, [r4, #0x54] adds r1, r4, #0 adds r1, #0x54 diff --git a/asm/houseDoorExterior.s b/asm/houseDoorExterior.s index 8738f6ec..c05b8c50 100644 --- a/asm/houseDoorExterior.s +++ b/asm/houseDoorExterior.s @@ -43,7 +43,7 @@ _080866FE: adds r0, r6, #0 adds r0, #0x6c ldrb r0, [r0] - bl sub_0804B128 + bl GetCurrentRoomProperty adds r5, r0, #0 movs r0, #0 mov r8, r0 diff --git a/asm/lavaPlatform.s b/asm/lavaPlatform.s index 0187280e..e505fa7a 100644 --- a/asm/lavaPlatform.s +++ b/asm/lavaPlatform.s @@ -460,7 +460,7 @@ sub_080925A4: @ 0x080925A4 push {r4, r5, r6, r7, lr} adds r6, r0, #0 ldrb r0, [r6, #0xb] - bl sub_0804B128 + bl GetCurrentRoomProperty adds r5, r0, #0 ldrb r0, [r5, #9] cmp r0, #0xff diff --git a/asm/lightableSwitch.s b/asm/lightableSwitch.s deleted file mode 100644 index 5968aa6e..00000000 --- a/asm/lightableSwitch.s +++ /dev/null @@ -1,321 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start LightableSwitch -LightableSwitch: @ 0x0809E9FC - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0809EA18 @ =gUnk_081243B4 - ldrb r0, [r4, #0xa] - 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_0809EB30 - pop {r4, pc} - .align 2, 0 -_0809EA18: .4byte gUnk_081243B4 - - thumb_func_start sub_0809EA1C -sub_0809EA1C: @ 0x0809EA1C - push {lr} - ldr r2, _0809EA30 @ =gUnk_081243BC - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0809EA30: .4byte gUnk_081243BC - - thumb_func_start sub_0809EA34 -sub_0809EA34: @ 0x0809EA34 - push {r4, lr} - adds r4, r0, #0 - movs r2, #0 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - strb r2, [r4, #0x1e] - adds r1, r4, #0 - adds r1, #0x3c - movs r0, #7 - strb r0, [r1] - adds r1, #4 - movs r0, #0x48 - strb r0, [r1] - subs r1, #1 - movs r0, #0x28 - strb r0, [r1] - subs r1, #4 - movs r0, #0xa - strb r0, [r1] - ldr r0, _0809EA7C @ =gUnk_080FD150 - str r0, [r4, #0x48] - adds r0, r4, #0 - bl sub_0809EAD8 - adds r0, r4, #0 - bl UpdateSpriteOrderAndFlip - adds r0, r4, #0 - bl sub_0809EABC - pop {r4, pc} - .align 2, 0 -_0809EA7C: .4byte gUnk_080FD150 - - thumb_func_start sub_0809EA80 -sub_0809EA80: @ 0x0809EA80 - push {r4, r5, lr} - adds r5, r0, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0809EAB4 - adds r4, r5, #0 - adds r4, #0x86 - ldrh r0, [r4] - bl CheckFlags - cmp r0, #0 - beq _0809EAA6 - ldrh r0, [r4] - bl ClearFlag - b _0809EAAC -_0809EAA6: - ldrh r0, [r4] - bl SetFlag -_0809EAAC: - movs r0, #0x88 - lsls r0, r0, #1 - bl sub_08004488 -_0809EAB4: - adds r0, r5, #0 - bl sub_0809EABC - pop {r4, r5, pc} - - thumb_func_start sub_0809EABC -sub_0809EABC: @ 0x0809EABC - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - rsbs r1, r0, #0 - orrs r1, r0 - lsrs r1, r1, #0x1f - ldrb r0, [r4, #0x1e] - cmp r0, r1 - beq _0809EAD6 - strb r1, [r4, #0x1e] -_0809EAD6: - pop {r4, pc} - - thumb_func_start sub_0809EAD8 -sub_0809EAD8: @ 0x0809EAD8 - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xb] - cmp r0, #0 - beq _0809EAF8 - bl sub_0804B128 - str r0, [r5, #0x54] - adds r1, r5, #0 - adds r1, #0x54 - adds r2, r5, #0 - adds r2, #0x74 - adds r0, r5, #0 - bl sub_080A2CC0 - b _0809EB24 -_0809EAF8: - ldr r0, _0809EB28 @ =0x00004050 - movs r2, #0x2e - ldrsh r1, [r5, r2] - ldr r3, _0809EB2C @ =gRoomControls - ldrh r2, [r3, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - movs r4, #0x3f - ands r1, r4 - movs r6, #0x32 - ldrsh r2, [r5, r6] - ldrh r3, [r3, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - ands r2, r4 - lsls r2, r2, #6 - orrs r1, r2 - adds r2, r5, #0 - adds r2, #0x38 - ldrb r2, [r2] - bl SetTile -_0809EB24: - pop {r4, r5, r6, pc} - .align 2, 0 -_0809EB28: .4byte 0x00004050 -_0809EB2C: .4byte gRoomControls - - thumb_func_start sub_0809EB30 -sub_0809EB30: @ 0x0809EB30 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xb] - cmp r0, #0 - beq _0809EB64 - ldrb r1, [r4, #0x15] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _0809EB4A - adds r0, r4, #0 - bl sub_0806F69C -_0809EB4A: - adds r2, r4, #0 - adds r2, #0x74 - ldrh r0, [r2] - subs r0, #1 - strh r0, [r2] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _0809EB64 - adds r1, r4, #0 - adds r1, #0x54 - adds r0, r4, #0 - bl sub_080A2CC0 -_0809EB64: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0809EB68 -sub_0809EB68: @ 0x0809EB68 - push {lr} - ldr r2, _0809EB7C @ =gUnk_081243C4 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0809EB7C: .4byte gUnk_081243C4 - - thumb_func_start sub_0809EB80 -sub_0809EB80: @ 0x0809EB80 - push {r4, r5, lr} - adds r4, r0, #0 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - movs r5, #3 - strb r5, [r4, #0x1e] - adds r1, r4, #0 - adds r1, #0x3c - movs r0, #7 - strb r0, [r1] - adds r1, #4 - movs r0, #0x48 - strb r0, [r1] - subs r1, #1 - movs r0, #0x28 - strb r0, [r1] - subs r1, #4 - movs r0, #0xa - strb r0, [r1] - ldr r0, _0809EBD4 @ =gUnk_080FD150 - str r0, [r4, #0x48] - adds r0, r4, #0 - bl sub_0809EAD8 - adds r0, r4, #0 - bl UpdateSpriteOrderAndFlip - adds r0, r4, #0 - adds r0, #0x84 - ldrh r0, [r0] - bl CheckFlags - cmp r0, #0 - beq _0809EBD2 - strb r5, [r4, #0xc] - movs r0, #2 - strb r0, [r4, #0x1e] -_0809EBD2: - pop {r4, r5, pc} - .align 2, 0 -_0809EBD4: .4byte gUnk_080FD150 - - thumb_func_start sub_0809EBD8 -sub_0809EBD8: @ 0x0809EBD8 - push {lr} - adds r2, r0, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0809EC04 - movs r1, #2 - strb r1, [r2, #0xc] - movs r0, #0x10 - strb r0, [r2, #0xe] - strb r1, [r2, #0x1e] - adds r0, r2, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl SetFlag - movs r0, #0x88 - lsls r0, r0, #1 - bl sub_08004488 -_0809EC04: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0809EC08 -sub_0809EC08: @ 0x0809EC08 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x84 - ldrh r0, [r0] - bl CheckFlags - cmp r0, #0 - beq _0809EC1E - movs r0, #3 - strb r0, [r4, #0xc] - b _0809EC44 -_0809EC1E: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0809EC44 - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #3 - strb r0, [r4, #0x1e] - adds r0, r4, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl ClearFlag - movs r0, #0x88 - lsls r0, r0, #1 - bl sub_08004488 -_0809EC44: - pop {r4, pc} - .align 2, 0 - - thumb_func_start nullsub_126 -nullsub_126: @ 0x0809EC48 - bx lr - .align 2, 0 diff --git a/asm/lilypadSmall.s b/asm/lilypadSmall.s index 8a3a3f28..8d5da9c2 100644 --- a/asm/lilypadSmall.s +++ b/asm/lilypadSmall.s @@ -38,7 +38,7 @@ LilypadSmall: @ 0x08097A5C orrs r0, r1 strb r0, [r2] ldrb r0, [r5, #0xb] - bl sub_0804B128 + bl GetCurrentRoomProperty str r0, [r5, #0x54] adds r1, r5, #0 adds r1, #0x54 diff --git a/asm/manager1.s b/asm/manager1.s index 54924177..500a5767 100644 --- a/asm/manager1.s +++ b/asm/manager1.s @@ -145,7 +145,7 @@ sub_08057174: @ 0x08057174 push {r4, r5, r6, r7, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] - bl sub_0804B128 + bl GetCurrentRoomProperty adds r3, r0, #0 ldrb r0, [r3] cmp r0, #0xff diff --git a/asm/manager16.s b/asm/manager16.s index 012e4045..58f8404c 100644 --- a/asm/manager16.s +++ b/asm/manager16.s @@ -15,7 +15,7 @@ sub_0805AB4C: @ 0x0805AB4C push {r5, r6, r7} adds r6, r0, #0 ldrb r0, [r6, #0xa] - bl sub_0804B128 + bl GetCurrentRoomProperty adds r4, r0, #0 cmp r4, #0 bne _0805AB68 @@ -245,7 +245,7 @@ _0805AD06: cmp r0, r5 ble _0805AD2C ldrb r0, [r4, #0xa] - bl sub_0804B128 + bl GetCurrentRoomProperty adds r3, r0, #0 cmp r3, #0 bne _0805ACD0 diff --git a/asm/manager21.s b/asm/manager21.s index 8fba93b5..8aa896bd 100644 --- a/asm/manager21.s +++ b/asm/manager21.s @@ -20,7 +20,7 @@ sub_0805B820: @ 0x0805B820 str r1, [r5, #0x20] _0805B834: ldrb r0, [r5, #0xa] - bl sub_0804B128 + bl GetCurrentRoomProperty adds r4, r0, #0 movs r7, #0 ldrh r0, [r4] diff --git a/asm/manager26.s b/asm/manager26.s index d25d83f4..0cda662e 100644 --- a/asm/manager26.s +++ b/asm/manager26.s @@ -25,7 +25,7 @@ sub_0805C6D0: @ 0x0805C6D0 sub sp, #4 adds r5, r0, #0 ldrb r0, [r5, #0xa] - bl sub_0804B128 + bl GetCurrentRoomProperty adds r4, r0, #0 cmp r4, #0 bne _0805C6EA diff --git a/asm/manager28.s b/asm/manager28.s index 2fab85b9..2c6d28e3 100644 --- a/asm/manager28.s +++ b/asm/manager28.s @@ -180,7 +180,7 @@ sub_0805CA6C: @ 0x0805CA6C adds r6, r0, #0 movs r5, #0 ldrb r0, [r6, #0xb] - bl sub_0804B128 + bl GetCurrentRoomProperty adds r4, r0, #0 cmp r4, #0 bne _0805CACE diff --git a/asm/manager2A.s b/asm/manager2A.s index 2a7f9e27..840ddffa 100644 --- a/asm/manager2A.s +++ b/asm/manager2A.s @@ -17,7 +17,7 @@ sub_0805CFC0: @ 0x0805CFC0 strb r0, [r1, #0xc] _0805CFCE: movs r0, #3 - bl sub_0804B128 + bl GetCurrentRoomProperty adds r4, r0, #0 cmp r4, #0 beq _0805CFEE diff --git a/asm/manager2B.s b/asm/manager2B.s index 4263be0d..ed785d35 100644 --- a/asm/manager2B.s +++ b/asm/manager2B.s @@ -38,7 +38,7 @@ _0805D046: cmp r0, #0x43 bhi _0805D0B0 ldrb r0, [r6, #0xa] - bl sub_0804B128 + bl GetCurrentRoomProperty adds r5, r0, #0 movs r7, #0 movs r0, #0x36 diff --git a/asm/manager38.s b/asm/manager38.s index ab3e6bd3..20e701d6 100644 --- a/asm/manager38.s +++ b/asm/manager38.s @@ -28,7 +28,7 @@ sub_0805E0C0: @ 0x0805E0C0 strb r1, [r5, #0xc] strb r0, [r5, #0xe] ldrb r0, [r5, #0xa] - bl sub_0804B128 + bl GetCurrentRoomProperty adds r4, r0, #0 cmp r4, #0 bne _0805E0EC diff --git a/asm/manager6.s b/asm/manager6.s index 37065de0..34066ffa 100644 --- a/asm/manager6.s +++ b/asm/manager6.s @@ -16,7 +16,7 @@ sub_08057CB4: @ 0x08057CB4 movs r0, #1 strb r0, [r4, #0xc] ldrb r0, [r4, #0xa] - bl sub_0804B128 + bl GetCurrentRoomProperty str r0, [r4, #0x20] cmp r0, #0 bne _08057CD6 @@ -72,7 +72,7 @@ _08057D18: cmp r0, #0 bne _08057D3A ldrb r0, [r4, #6] - bl sub_0804B128 + bl GetCurrentRoomProperty bl DoExitTransition _08057D3A: adds r4, #8 diff --git a/asm/managerB.s b/asm/managerB.s index 49e89618..13d574b2 100644 --- a/asm/managerB.s +++ b/asm/managerB.s @@ -152,7 +152,7 @@ sub_080586EC: @ 0x080586EC bl DeleteThisEntity _0805870A: ldrb r0, [r7, #0xb] - bl sub_0804B128 + bl GetCurrentRoomProperty adds r4, r0, #0 cmp r4, #0 beq _0805875C diff --git a/asm/managerD.s b/asm/managerD.s index 9cbc62a5..b8ce9ae1 100644 --- a/asm/managerD.s +++ b/asm/managerD.s @@ -78,7 +78,7 @@ sub_08058E34: @ 0x08058E34 ldrb r0, [r4, #0xa] cmp r0, #0 beq _08058E58 - bl sub_0804B128 + bl GetCurrentRoomProperty bl LoadRoomEntityList _08058E58: adds r0, r4, #0 diff --git a/asm/managerE.s b/asm/managerE.s index 560d6e1d..96fd526f 100644 --- a/asm/managerE.s +++ b/asm/managerE.s @@ -48,7 +48,7 @@ _08058E9E: bl PlaySFX _08058EB4: ldrb r0, [r4, #0xa] - bl sub_0804B128 + bl GetCurrentRoomProperty bl LoadRoomEntityList bl DeleteThisEntity b _08058EC8 diff --git a/asm/minishSizedEntrance.s b/asm/minishSizedEntrance.s index c0c3e93d..f6b4ad3c 100644 --- a/asm/minishSizedEntrance.s +++ b/asm/minishSizedEntrance.s @@ -52,7 +52,7 @@ _08090F1C: cmp r0, #0 beq _08090F62 ldrb r0, [r4, #0xe] - bl sub_0804B128 + bl GetCurrentRoomProperty bl DoExitTransition _08090F62: pop {r4, r5, r6, pc} diff --git a/asm/object89.s b/asm/object89.s index 476e257f..92d513a3 100644 --- a/asm/object89.s +++ b/asm/object89.s @@ -349,14 +349,14 @@ sub_0809AD68: @ 0x0809AD68 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] - bl sub_0804B128 + bl GetCurrentRoomProperty bl LoadRoomEntityList movs r0, #0x17 bl GetInventoryValue cmp r0, #0 beq _0809AD8A ldrb r0, [r4, #0xb] - bl sub_0804B128 + bl GetCurrentRoomProperty bl LoadRoomEntityList _0809AD8A: pop {r4, pc} diff --git a/asm/object98.s b/asm/object98.s index 878da9bf..99e1d8ab 100644 --- a/asm/object98.s +++ b/asm/object98.s @@ -73,7 +73,7 @@ _0809E3A6: ldrb r0, [r4, #0xa] cmp r0, #0 beq _0809E3D8 - bl sub_0804B128 + bl GetCurrentRoomProperty str r0, [r4, #0x54] adds r1, r4, #0 adds r1, #0x54 diff --git a/asm/postman.s b/asm/postman.s index 75486be7..5393d0a9 100644 --- a/asm/postman.s +++ b/asm/postman.s @@ -44,7 +44,7 @@ sub_08060428: @ 0x08060428 ldrb r0, [r4, #0xb] cmp r0, #0 beq _08060444 - bl sub_0804B128 + bl GetCurrentRoomProperty adds r1, r0, #0 b _08060446 _08060444: diff --git a/asm/smallIceBlock.s b/asm/smallIceBlock.s index ef81550f..057ae10b 100644 --- a/asm/smallIceBlock.s +++ b/asm/smallIceBlock.s @@ -617,7 +617,7 @@ sub_0809963C: @ 0x0809963C ldrb r0, [r5, #0xb] cmp r0, #0 beq _08099684 - bl sub_0804B128 + bl GetCurrentRoomProperty adds r4, r0, #0 ldrh r0, [r4] bl CheckFlags diff --git a/asm/wizzrobeWind.s b/asm/wizzrobeWind.s index 46f4782c..55bd91a6 100644 --- a/asm/wizzrobeWind.s +++ b/asm/wizzrobeWind.s @@ -123,7 +123,7 @@ sub_0802F55C: @ 0x0802F55C adds r0, #0x80 strb r2, [r0] ldrb r0, [r4, #0xe] - bl sub_0804B128 + bl GetCurrentRoomProperty str r0, [r4, #0x54] adds r0, r4, #0 bl sub_0802FA48 diff --git a/include/functions.h b/include/functions.h index fabfcc43..454b8480 100644 --- a/include/functions.h +++ b/include/functions.h @@ -6,7 +6,7 @@ #include "entity.h" #include "position.h" -// Identified +// Identified - to be sorted into header files extern u32 Random(void); extern void PlaySFX(u32); extern void UpdateSpriteOrderAndFlip(Entity*); @@ -29,6 +29,8 @@ extern u32* StartCutscene(Entity*, u8*); extern void GetNextFrame(Entity*); extern u32 LoadExtraSpriteData(Entity*, u32*); extern void ResolveEntityOnTop(Entity*, Entity*); +extern void SetExtraSpriteFrame(Entity*, u32, u32); +extern void SetSpriteSubEntryOffsetData1(Entity*, u32, u32); // Unidentified extern void sub_0806ED78(Entity*); @@ -60,8 +62,6 @@ extern void sub_0807DD94(Entity*, u32); extern Entity* sub_0805EB00(u32, u32, u32); extern Entity* sub_0805EB2C(u32, u32, u32, u32, u32); extern s32 sub_0806ED9C(Entity*, u32, u32); -extern void SetExtraSpriteFrame(Entity*, u32, u32); -extern void SetSpriteSubEntryOffsetData1(Entity*, u32, u32); extern void sub_0807000C(Entity*); extern void sub_0805E47C(Entity*); extern void sub_0805E584(Entity*); diff --git a/linker.ld b/linker.ld index 3576b03d..d4f3553c 100644 --- a/linker.ld +++ b/linker.ld @@ -810,7 +810,7 @@ SECTIONS { asm/macroAcorn.o(.text); asm/object9B.o(.text); asm/treeHidingPortal.o(.text); - asm/lightableSwitch.o(.text); + src/lightableSwitch.o(.text); asm/object9E.o(.text); asm/fan.o(.text); asm/objectA0.o(.text); diff --git a/src/bladeTrap.c b/src/bladeTrap.c index 89d1663a..3c37d08a 100644 --- a/src/bladeTrap.c +++ b/src/bladeTrap.c @@ -4,7 +4,7 @@ extern void sub_080A2CC0(); extern void sub_0806F69C(); extern void sub_08004488(); -extern Entity* sub_0804B128(); +extern Entity* GetCurrentRoomProperty(); void BladeTrap(Entity* ent) { u16 uVar1; @@ -12,7 +12,7 @@ void BladeTrap(Entity* ent) { u16* puVar3; if (ent->action == 0) { ent->action = 1; - pEVar2 = sub_0804B128((u8)(ent->entityType).form); + pEVar2 = GetCurrentRoomProperty((u8)(ent->entityType).form); ent->attachedEntity = pEVar2; sub_080A2CC0((EntityData*)ent, &ent->attachedEntity, &ent->field_0x74); } diff --git a/src/lakituCloud.c b/src/lakituCloud.c index 9932b662..ab3e36cc 100644 --- a/src/lakituCloud.c +++ b/src/lakituCloud.c @@ -19,7 +19,7 @@ extern bool32 sub_0806F520(Entity *); extern void sub_0800449C(Entity *, u32); extern void sub_0803CE14(Entity *); extern void sub_0803CE3C(Entity *); -extern Entity *sub_0804B128(u8); +extern Entity *GetCurrentRoomProperty(u8); extern void sub_0806F4E8(Entity *); extern void sub_0806F69C(Entity *); extern void sub_08079D84(void); @@ -78,7 +78,7 @@ void sub_0803CD6C(Entity *this) { this->height.HALF.HI = -2; // Set parent to lakitu - lakitu = sub_0804B128(this->entityType.form); + lakitu = GetCurrentRoomProperty(this->entityType.form); this->attachedEntity = lakitu; this->parent = lakitu; diff --git a/src/lightableSwitch.c b/src/lightableSwitch.c new file mode 100644 index 00000000..a98a66ba --- /dev/null +++ b/src/lightableSwitch.c @@ -0,0 +1,145 @@ +#include "global.h" +#include "entity.h" +#include "room.h" +#include "flags.h" +#include "functions.h" + +extern void sub_0809EB30(Entity*); +extern void sub_0809EAD8(Entity*); +extern void sub_0809EABC(Entity*); +extern void sub_08004488(u32); +extern void sub_080A2CC0(Entity*, Entity**, u16*); +extern Entity* GetCurrentRoomProperty(u32); +extern void SetTile(u32, u32, u32); +extern void sub_0806F69C(Entity*); + +extern void (*const gUnk_081243B4[])(Entity*); +extern void (*const gUnk_081243BC[])(Entity*); +extern void (*const gUnk_081243C4[])(Entity*); + +extern BoundingBox gUnk_080FD150; + +void LightableSwitch(Entity* this) { + gUnk_081243B4[this->entityType.form](this); + sub_0809EB30(this); +} + +void sub_0809EA1C(Entity* this) { + gUnk_081243BC[this->action](this); +} + +void sub_0809EA34(Entity* this) { + this->action = 1; + this->flags = this->flags | 0x80; + this->frameIndex = 0; + this->field_0x3c = 7; + this->field_0x40 = 0x48; + this->damageType = 0x28; + this->flags2 = 10; + this->boundingBox = &gUnk_080FD150; + sub_0809EAD8(this); + UpdateSpriteOrderAndFlip(this); + sub_0809EABC(this); +} + +void sub_0809EA80(Entity* this) { + + if ((this->bitfield & 0x80) != 0) { + if (CheckFlags(this->field_0x86) != 0) { + ClearFlag(this->field_0x86); + } else { + SetFlag(this->field_0x86); + } + sub_08004488(0x110); + } + sub_0809EABC(this); +} + +void sub_0809EABC(Entity* this) { + bool32 anySet; + u32 f; + + f = CheckFlags(this->field_0x86); + anySet = (-f | f) >> 0x1F; + if (this->frameIndex != anySet) { + this->frameIndex = anySet; + } +} + +void sub_0809EAD8(Entity* this) { + u8 bVar1; + Entity* pEVar2; + + if (this->entityType.parameter != 0) { + + this->attachedEntity = GetCurrentRoomProperty(this->entityType.parameter); + sub_080A2CC0(this, &this->attachedEntity, &this->field_0x74); + + } else { + SetTile(0x4050, COORD_TO_TILE(this), this->collisionLayer); + } +} + +void sub_0809EB30(Entity* this) { + u16 uVar1; + u16* puVar2; + + if (this->entityType.parameter != 0) { + if ((this->direction & 0x80) == 0) { + sub_0806F69C(this); + } + puVar2 = &this->field_0x74; + if (!--*puVar2) { + sub_080A2CC0(this, &this->attachedEntity, puVar2); + } + } +} + +void sub_0809EB68(Entity* this) { + gUnk_081243C4[this->action](this); +} + +void sub_0809EB80(Entity* this) { + + this->action = 1; + this->flags = this->flags | 0x80; + this->frameIndex = 3; + this->field_0x3c = 7; + this->field_0x40 = 0x48; + this->damageType = 0x28; + this->flags2 = 10; + this->boundingBox = &gUnk_080FD150; + sub_0809EAD8(this); + UpdateSpriteOrderAndFlip(this); + if (CheckFlags(this->cutsceneBeh.HWORD) != 0) { + this->action = 3; + this->frameIndex = 2; + } +} + +void sub_0809EBD8(Entity* this) { + if ((this->bitfield & 0x80) != 0) { + this->action = 2; + this->actionDelay = 0x10; + this->frameIndex = 2; + SetFlag(this->field_0x86); + sub_08004488(0x110); + } +} + +void sub_0809EC08(Entity* this) { + + if (CheckFlags(this->cutsceneBeh.HWORD) != 0) { + this->action = 3; + + } else { + if (--this->actionDelay == 0) { + this->action = 1; + this->frameIndex = 3; + ClearFlag(this->field_0x86); + sub_08004488(0x110); + } + } +} + +void nullsub_126(Entity* this) { } \ No newline at end of file diff --git a/src/loadRoom.c b/src/loadRoom.c index 7acf18d1..c429264b 100644 --- a/src/loadRoom.c +++ b/src/loadRoom.c @@ -3,7 +3,7 @@ void LoadRoomEntityList(); s32 CheckGlobalFlag(u32 flag); -extern s32* sub_0804B128(u8 unk); +extern s32* GetCurrentRoomProperty(u8 unk); extern void sub_0804B058(s32* unk); extern void sub_0804B1AC(); extern void sub_0801AC98(); @@ -15,13 +15,13 @@ void LoadRoom(void) s32 iVar1; s32* dat; - sub_0804B128(1); + GetCurrentRoomProperty(1); LoadRoomEntityList(); - sub_0804B128(0); + GetCurrentRoomProperty(0); LoadRoomEntityList(); - if (CheckGlobalFlag(21)) sub_0804B058(sub_0804B128(2)); - sub_0804B128(3); + if (CheckGlobalFlag(21)) sub_0804B058(GetCurrentRoomProperty(2)); + GetCurrentRoomProperty(3); sub_0804B1AC(); sub_0801AC98(); } diff --git a/src/sub_0804AFF4.c b/src/sub_0804AFF4.c index a1a4731d..a7108fd6 100644 --- a/src/sub_0804AFF4.c +++ b/src/sub_0804AFF4.c @@ -1,7 +1,7 @@ #include "global.h" extern void sub_080186EC(); -extern u32* sub_0804B128(u8); +extern u32* GetCurrentRoomProperty(u8); extern u32 _call_via_r0(u32*); extern void sub_0804B16C(); @@ -9,11 +9,11 @@ void sub_0804AFF4(void) { u32* func; sub_080186EC(); - func = sub_0804B128(5); + func = GetCurrentRoomProperty(5); if (func != NULL) { _call_via_r0(func); } - func = sub_0804B128(7); + func = GetCurrentRoomProperty(7); if (func != NULL) { _call_via_r0(func); } @@ -27,13 +27,13 @@ sub_0804AFF4: @ 0x0804AFF4 push {lr} bl sub_080186EC movs r0, #5 - bl sub_0804B128 + bl GetCurrentRoomProperty cmp r0, #0 beq _0804B008 bl _call_via_r0 _0804B008: movs r0, #7 - bl sub_0804B128 + bl GetCurrentRoomProperty cmp r0, #0 beq _0804B016 bl _call_via_r0