.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start GyorgMale GyorgMale: @ 0x080467F0 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 beq _08046810 adds r0, r4, #0 adds r0, #0x7d ldrb r1, [r0] movs r0, #3 ands r1, r0 ldrb r2, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] _08046810: ldr r1, _0804688C @ =gUnk_080D1AFC ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 ldrb r0, [r4, #0xc] adds r5, r4, #0 adds r5, #0x78 cmp r0, #7 beq _08046836 ldrh r3, [r5] adds r0, r4, #0 movs r1, #0xaa movs r2, #0xaa bl sub_0805EC9C _08046836: ldrh r0, [r5] lsrs r0, r0, #8 rsbs r0, r0, #0 strb r0, [r4, #0x14] adds r0, r4, #0 bl sub_08048004 ldrb r0, [r4, #0x18] lsls r0, r0, #0x1e lsrs r0, r0, #0x1e adds r1, r4, #0 adds r1, #0x7d strb r0, [r1] ldrb r2, [r4, #0x18] lsls r0, r2, #0x1e lsrs r0, r0, #0x1e cmp r0, #1 bne _08046878 movs r1, #0x32 ldrsh r0, [r4, r1] ldr r1, _08046890 @ =gRoomControls movs r3, #0xc ldrsh r1, [r1, r3] subs r0, r0, r1 adds r0, #0x30 movs r1, #0x80 lsls r1, r1, #1 cmp r0, r1 bls _08046878 movs r0, #4 rsbs r0, r0, #0 ands r0, r2 strb r0, [r4, #0x18] _08046878: ldr r2, _08046894 @ =gLinkEntity ldrh r1, [r2, #0x2e] adds r0, r4, #0 adds r0, #0x84 strh r1, [r0] ldrh r1, [r2, #0x32] adds r0, #2 strh r1, [r0] pop {r4, r5, pc} .align 2, 0 _0804688C: .4byte gUnk_080D1AFC _08046890: .4byte gRoomControls _08046894: .4byte gLinkEntity thumb_func_start sub_08046898 sub_08046898: @ 0x08046898 push {r4, r5, lr} adds r5, r0, #0 movs r0, #0x22 bl sub_080A7EE0 adds r1, r0, #0 cmp r1, #0 beq _0804690C movs r4, #0 movs r3, #1 movs r0, #1 strb r0, [r1, #0xa] str r5, [r1, #0x50] str r1, [r5, #0x54] strb r0, [r5, #0xc] strb r4, [r5, #0xd] ldrb r1, [r5, #0x19] movs r0, #3 orrs r1, r0 ldrb r2, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r2 orrs r0, r3 strb r0, [r5, #0x18] ldrb r2, [r5, #0x1b] movs r3, #0x3f adds r0, r3, #0 ands r0, r2 movs r2, #0x80 orrs r0, r2 strb r0, [r5, #0x1b] ands r1, r3 orrs r1, r2 strb r1, [r5, #0x19] adds r2, r5, #0 adds r2, #0x3c ldrb r1, [r2] movs r0, #0x10 orrs r0, r1 strb r0, [r2] adds r1, r5, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r0, r5, #0 adds r0, #0x7c strb r4, [r0] subs r0, #4 strh r4, [r0] adds r0, #2 strh r4, [r0] subs r0, #8 strh r4, [r0] adds r0, r5, #0 movs r1, #0 bl InitAnimationForceUpdate _0804690C: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08046910 sub_08046910: @ 0x08046910 push {r4, lr} adds r4, r0, #0 ldr r1, _0804692C @ =gUnk_080D1B1C ldrb r0, [r4, #0xd] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl UpdateAnimationSingleFrame pop {r4, pc} .align 2, 0 _0804692C: .4byte gUnk_080D1B1C thumb_func_start sub_08046930 sub_08046930: @ 0x08046930 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #0 beq _08046948 movs r0, #5 strb r0, [r4, #0xd] movs r0, #0x20 strb r0, [r4, #0x15] movs r0, #0xa0 lsls r0, r0, #2 strh r0, [r4, #0x24] _08046948: adds r0, r4, #0 bl sub_08047D88 adds r0, r4, #0 adds r0, #0x7c ldrb r0, [r0] cmp r0, #0 beq _0804696A movs r1, #0 movs r0, #1 strb r0, [r4, #0xd] strb r0, [r4, #0xe] strb r1, [r4, #0x14] strb r1, [r4, #0x15] movs r0, #0xa0 lsls r0, r0, #2 strh r0, [r4, #0x24] _0804696A: pop {r4, pc} thumb_func_start sub_0804696C sub_0804696C: @ 0x0804696C push {r4, r5, lr} adds r4, r0, #0 bl sub_08047E48 ldr r5, _080469C8 @ =gRoomControls ldrh r0, [r5, #8] movs r1, #0x98 lsls r1, r1, #1 adds r0, r0, r1 movs r2, #0x32 ldrsh r1, [r4, r2] cmp r0, r1 ble _080469A6 movs r0, #2 strb r0, [r4, #0xd] movs r0, #0x80 strb r0, [r4, #0x15] adds r0, #0x80 strh r0, [r4, #0x24] ldrb r0, [r4, #0x1b] movs r1, #0xc0 orrs r0, r1 strb r0, [r4, #0x1b] ldrb r0, [r4, #0x19] orrs r0, r1 strb r0, [r4, #0x19] movs r0, #0x2e bl PlaySFX _080469A6: ldrb r0, [r4, #0xe] cmp r0, #0 beq _080469C6 ldrh r0, [r5, #8] movs r1, #0x96 lsls r1, r1, #2 adds r0, r0, r1 movs r2, #0x32 ldrsh r1, [r4, r2] cmp r0, r1 ble _080469C6 movs r0, #0 strb r0, [r4, #0xe] movs r0, #0xf7 bl PlaySFX _080469C6: pop {r4, r5, pc} .align 2, 0 _080469C8: .4byte gRoomControls thumb_func_start sub_080469CC sub_080469CC: @ 0x080469CC push {r4, lr} adds r4, r0, #0 bl sub_08047E48 ldr r0, _080469F0 @ =gRoomControls ldrh r0, [r0, #8] movs r1, #0x84 lsls r1, r1, #2 adds r0, r0, r1 movs r2, #0x32 ldrsh r1, [r4, r2] cmp r0, r1 bge _080469EE movs r0, #3 strb r0, [r4, #0xd] movs r0, #0x90 strb r0, [r4, #0x15] _080469EE: pop {r4, pc} .align 2, 0 _080469F0: .4byte gRoomControls thumb_func_start sub_080469F4 sub_080469F4: @ 0x080469F4 push {r4, lr} adds r4, r0, #0 bl sub_08047E48 ldr r0, _08046A2C @ =gRoomControls ldrh r0, [r0, #8] movs r1, #0xa4 lsls r1, r1, #2 adds r0, r0, r1 movs r2, #0x32 ldrsh r1, [r4, r2] cmp r0, r1 bge _08046A28 movs r0, #4 strb r0, [r4, #0xd] ldrb r2, [r4, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 movs r2, #0x80 orrs r0, r2 strb r0, [r4, #0x1b] ldrb r0, [r4, #0x19] ands r1, r0 orrs r1, r2 strb r1, [r4, #0x19] _08046A28: pop {r4, pc} .align 2, 0 _08046A2C: .4byte gRoomControls thumb_func_start sub_08046A30 sub_08046A30: @ 0x08046A30 push {r4, lr} adds r4, r0, #0 bl sub_08047D88 ldr r0, [r4, #0x64] ldr r0, [r0] adds r0, #0x6c ldrh r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08046A50 movs r1, #0 movs r0, #2 strb r0, [r4, #0xc] strb r1, [r4, #0xd] _08046A50: pop {r4, pc} .align 2, 0 thumb_func_start sub_08046A54 sub_08046A54: @ 0x08046A54 push {r4, lr} adds r4, r0, #0 bl sub_08047E48 ldr r0, _08046A74 @ =gRoomControls ldrh r0, [r0, #6] movs r1, #0xe0 lsls r1, r1, #2 adds r0, r0, r1 movs r2, #0x2e ldrsh r1, [r4, r2] cmp r0, r1 bge _08046A72 movs r0, #6 strb r0, [r4, #0xd] _08046A72: pop {r4, pc} .align 2, 0 _08046A74: .4byte gRoomControls thumb_func_start sub_08046A78 sub_08046A78: @ 0x08046A78 push {r4, lr} adds r4, r0, #0 bl sub_08047D88 ldr r0, [r4, #0x64] ldr r0, [r0] adds r0, #0x6c ldrh r1, [r0] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _08046A98 movs r1, #0 movs r0, #3 strb r0, [r4, #0xc] strb r1, [r4, #0xd] _08046A98: pop {r4, pc} .align 2, 0 thumb_func_start sub_08046A9C sub_08046A9C: @ 0x08046A9C push {r4, lr} adds r4, r0, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #1 bne _08046ABA adds r0, r4, #0 adds r0, #0x5a ldrb r0, [r0] cmp r0, #1 bne _08046ABA adds r0, r4, #0 movs r1, #0 bl InitAnimationForceUpdate _08046ABA: ldr r1, _08046AE4 @ =gUnk_080D1B38 ldrb r0, [r4, #0xd] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl UpdateAnimationSingleFrame adds r0, r4, #0 adds r0, #0x7c ldrb r0, [r0] cmp r0, #0 beq _08046AE2 movs r1, #0 movs r0, #6 strb r0, [r4, #0xc] strb r1, [r4, #0xd] _08046AE2: pop {r4, pc} .align 2, 0 _08046AE4: .4byte gUnk_080D1B38 thumb_func_start sub_08046AE8 sub_08046AE8: @ 0x08046AE8 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xd] movs r0, #0xc0 lsls r0, r0, #1 strh r0, [r4, #0x24] ldr r0, [r4, #0x64] ldr r0, [r0, #4] ldrb r1, [r0, #0x14] lsrs r1, r1, #5 adds r0, r4, #0 bl sub_08048178 ldrb r0, [r4, #0x15] lsls r0, r0, #8 adds r1, r4, #0 adds r1, #0x76 strh r0, [r1] adds r0, r4, #0 bl sub_08047D88 pop {r4, pc} .align 2, 0 thumb_func_start sub_08046B18 sub_08046B18: @ 0x08046B18 push {r4, lr} adds r4, r0, #0 adds r0, #0x80 ldrh r0, [r0] movs r2, #0x2e ldrsh r1, [r4, r2] subs r0, r0, r1 adds r1, r4, #0 adds r1, #0x82 ldrh r1, [r1] movs r3, #0x32 ldrsh r2, [r4, r3] subs r1, r1, r2 bl sub_080045DA adds r1, r0, #0 ldrb r0, [r4, #0x15] cmp r1, r0 beq _08046B6C subs r0, r1, r0 movs r1, #0xff ands r0, r1 cmp r0, #0x80 bls _08046B54 adds r1, r4, #0 adds r1, #0x76 ldr r2, _08046B50 @ =0xFFFFFF00 b _08046B5C .align 2, 0 _08046B50: .4byte 0xFFFFFF00 _08046B54: adds r1, r4, #0 adds r1, #0x76 movs r2, #0x80 lsls r2, r2, #1 _08046B5C: adds r0, r2, #0 ldrh r3, [r1] adds r0, r0, r3 strh r0, [r1] ldrh r0, [r1] lsrs r0, r0, #8 strb r0, [r4, #0x15] b _08046B70 _08046B6C: movs r0, #2 strb r0, [r4, #0xd] _08046B70: adds r0, r4, #0 bl sub_08047D88 ldrb r0, [r4, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047EA4 pop {r4, pc} thumb_func_start sub_08046B8C sub_08046B8C: @ 0x08046B8C push {r4, r5, r6, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x80 ldrh r1, [r5] adds r6, r4, #0 adds r6, #0x82 ldrh r2, [r6] movs r3, #4 bl sub_0806FCB8 cmp r0, #0 beq _08046BD8 movs r0, #3 strb r0, [r4, #0xd] ldrb r0, [r4, #0x15] lsls r0, r0, #8 adds r1, r4, #0 adds r1, #0x76 strh r0, [r1] ldr r1, _08046BD4 @ =gRoomControls movs r2, #0x80 lsls r2, r2, #2 adds r0, r2, #0 ldrh r3, [r1, #6] adds r0, r0, r3 strh r0, [r5] adds r2, #0x10 adds r0, r2, #0 ldrh r1, [r1, #8] adds r0, r0, r1 strh r0, [r6] adds r0, r4, #0 bl sub_08047D88 b _08046C02 .align 2, 0 _08046BD4: .4byte gRoomControls _08046BD8: ldrh r0, [r5] movs r3, #0x2e ldrsh r1, [r4, r3] subs r0, r0, r1 ldrh r1, [r6] movs r3, #0x32 ldrsh r2, [r4, r3] subs r1, r1, r2 bl sub_080045DA strb r0, [r4, #0x15] ldrb r0, [r4, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047DF0 _08046C02: pop {r4, r5, r6, pc} thumb_func_start sub_08046C04 sub_08046C04: @ 0x08046C04 push {r4, lr} adds r4, r0, #0 adds r0, #0x80 ldrh r0, [r0] movs r2, #0x2e ldrsh r1, [r4, r2] subs r0, r0, r1 adds r1, r4, #0 adds r1, #0x82 ldrh r1, [r1] movs r3, #0x32 ldrsh r2, [r4, r3] subs r1, r1, r2 bl sub_080045DA adds r1, r0, #0 ldrb r0, [r4, #0x15] cmp r1, r0 beq _08046C58 subs r0, r1, r0 movs r1, #0xff ands r0, r1 cmp r0, #0x80 bls _08046C40 adds r1, r4, #0 adds r1, #0x76 ldr r2, _08046C3C @ =0xFFFFFF00 b _08046C48 .align 2, 0 _08046C3C: .4byte 0xFFFFFF00 _08046C40: adds r1, r4, #0 adds r1, #0x76 movs r2, #0x80 lsls r2, r2, #1 _08046C48: adds r0, r2, #0 ldrh r3, [r1] adds r0, r0, r3 strh r0, [r1] ldrh r0, [r1] lsrs r0, r0, #8 strb r0, [r4, #0x15] b _08046C6C _08046C58: movs r0, #4 strb r0, [r4, #0xd] adds r0, r1, #0 adds r0, #0x20 movs r1, #0xc0 ands r0, r1 lsrs r0, r0, #6 adds r1, r4, #0 adds r1, #0x70 strh r0, [r1] _08046C6C: adds r0, r4, #0 bl sub_08047D88 ldrb r0, [r4, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047EA4 pop {r4, pc} thumb_func_start sub_08046C88 sub_08046C88: @ 0x08046C88 push {r4, r5, r6, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x80 ldrh r1, [r5] adds r6, r4, #0 adds r6, #0x82 ldrh r2, [r6] movs r3, #4 bl sub_0806FCB8 cmp r0, #0 beq _08046CC0 movs r0, #1 strb r0, [r4, #0xd] adds r0, r4, #0 adds r0, #0x70 ldrh r0, [r0] bl sub_08048158 adds r1, r0, #0 adds r0, r4, #0 bl sub_08048178 adds r0, r4, #0 bl sub_08047D88 b _08046CEA _08046CC0: ldrh r0, [r5] movs r2, #0x2e ldrsh r1, [r4, r2] subs r0, r0, r1 ldrh r1, [r6] movs r3, #0x32 ldrsh r2, [r4, r3] subs r1, r1, r2 bl sub_080045DA strb r0, [r4, #0x15] ldrb r0, [r4, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047DF0 _08046CEA: pop {r4, r5, r6, pc} thumb_func_start sub_08046CEC sub_08046CEC: @ 0x08046CEC push {r4, lr} adds r4, r0, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0 bne _08046D0A adds r0, r4, #0 adds r0, #0x5a ldrb r0, [r0] cmp r0, #1 bne _08046D0A adds r0, r4, #0 movs r1, #1 bl InitAnimationForceUpdate _08046D0A: ldr r1, _08046D40 @ =gUnk_080D1B4C ldrb r0, [r4, #0xd] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl UpdateAnimationSingleFrame ldr r0, [r4, #0x64] ldr r0, [r0] adds r0, #0x6c ldrh r1, [r0] movs r0, #2 ands r0, r1 cmp r0, #0 beq _08046D3C movs r0, #0 movs r1, #2 strb r1, [r4, #0xc] strb r0, [r4, #0xd] ldrh r0, [r4, #0x24] strb r0, [r4, #0x14] _08046D3C: pop {r4, pc} .align 2, 0 _08046D40: .4byte gUnk_080D1B4C thumb_func_start sub_08046D44 sub_08046D44: @ 0x08046D44 push {lr} mov ip, r0 movs r0, #1 mov r1, ip strb r0, [r1, #0xd] movs r0, #0x80 lsls r0, r0, #2 strh r0, [r1, #0x24] ldr r0, [r1, #0x64] ldr r0, [r0, #4] ldrb r1, [r0, #0x14] lsrs r1, r1, #5 lsls r1, r1, #1 ldr r0, _08046D90 @ =gUnk_080D1B60 adds r1, r1, r0 ldr r3, _08046D94 @ =gRoomControls ldrh r0, [r3, #6] ldrh r2, [r1] adds r0, r0, r2 mov r2, ip adds r2, #0x80 strh r0, [r2] ldrh r0, [r3, #8] ldrh r1, [r1, #2] adds r0, r0, r1 mov r1, ip adds r1, #0x82 strh r0, [r1] mov r1, ip ldrb r0, [r1, #0x15] lsls r0, r0, #8 adds r1, #0x76 strh r0, [r1] mov r0, ip bl sub_08047D88 pop {pc} .align 2, 0 _08046D90: .4byte gUnk_080D1B60 _08046D94: .4byte gRoomControls thumb_func_start sub_08046D98 sub_08046D98: @ 0x08046D98 push {r4, lr} adds r4, r0, #0 adds r0, #0x80 ldrh r0, [r0] movs r2, #0x2e ldrsh r1, [r4, r2] subs r0, r0, r1 adds r1, r4, #0 adds r1, #0x82 ldrh r1, [r1] movs r3, #0x32 ldrsh r2, [r4, r3] subs r1, r1, r2 bl sub_080045DA adds r1, r0, #0 ldrb r0, [r4, #0x15] cmp r1, r0 beq _08046DEC subs r0, r1, r0 movs r1, #0xff ands r0, r1 cmp r0, #0x80 bls _08046DD4 adds r1, r4, #0 adds r1, #0x76 ldr r2, _08046DD0 @ =0xFFFFFF00 b _08046DDC .align 2, 0 _08046DD0: .4byte 0xFFFFFF00 _08046DD4: adds r1, r4, #0 adds r1, #0x76 movs r2, #0x80 lsls r2, r2, #1 _08046DDC: adds r0, r2, #0 ldrh r3, [r1] adds r0, r0, r3 strh r0, [r1] ldrh r0, [r1] lsrs r0, r0, #8 strb r0, [r4, #0x15] b _08046DF0 _08046DEC: movs r0, #2 strb r0, [r4, #0xd] _08046DF0: adds r0, r4, #0 bl sub_08047D88 ldrb r0, [r4, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047EA4 pop {r4, pc} thumb_func_start sub_08046E0C sub_08046E0C: @ 0x08046E0C push {r4, r5, r6, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x80 ldrh r1, [r5] adds r6, r4, #0 adds r6, #0x82 ldrh r2, [r6] movs r3, #4 bl sub_0806FCB8 cmp r0, #0 beq _08046E3C movs r0, #3 strb r0, [r4, #0xd] ldrb r0, [r4, #0x15] lsls r0, r0, #8 adds r1, r4, #0 adds r1, #0x76 strh r0, [r1] adds r0, r4, #0 bl sub_08047D88 b _08046E66 _08046E3C: ldrh r0, [r5] movs r2, #0x2e ldrsh r1, [r4, r2] subs r0, r0, r1 ldrh r1, [r6] movs r3, #0x32 ldrsh r2, [r4, r3] subs r1, r1, r2 bl sub_080045DA strb r0, [r4, #0x15] ldrb r0, [r4, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047DF0 _08046E66: pop {r4, r5, r6, pc} thumb_func_start sub_08046E68 sub_08046E68: @ 0x08046E68 push {r4, r5, r6, lr} adds r5, r0, #0 ldr r0, [r5, #0x64] ldr r0, [r0, #4] ldrb r1, [r0, #0x14] movs r0, #0x80 adds r6, r0, #0 eors r6, r1 ldrb r0, [r5, #0x15] cmp r6, r0 beq _08046EC6 subs r0, r6, r0 movs r1, #0xff ands r0, r1 cmp r0, #0x80 bls _08046E94 adds r1, r5, #0 adds r1, #0x76 ldr r2, _08046E90 @ =0xFFFFFF00 b _08046E9C .align 2, 0 _08046E90: .4byte 0xFFFFFF00 _08046E94: adds r1, r5, #0 adds r1, #0x76 movs r2, #0x80 lsls r2, r2, #1 _08046E9C: adds r0, r2, #0 ldrh r2, [r1] adds r0, r0, r2 strh r0, [r1] ldrh r0, [r1] lsrs r0, r0, #8 strb r0, [r5, #0x15] adds r0, r5, #0 bl sub_08047D88 ldrb r0, [r5, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r5, #0 bl sub_08047EA4 b _08046EEE _08046EC6: movs r0, #4 strb r0, [r5, #0xd] movs r0, #0x3f strb r0, [r5, #0xe] movs r4, #1 strb r4, [r5, #0xf] bl Random ldr r1, _08046EF0 @ =gUnk_080D1B70 ands r0, r4 lsls r0, r0, #1 adds r0, r0, r1 ldrb r0, [r0] adds r0, r0, r6 movs r1, #0xc0 ands r0, r1 strb r0, [r5, #0x15] adds r0, r5, #0 bl sub_08047D88 _08046EEE: pop {r4, r5, r6, pc} .align 2, 0 _08046EF0: .4byte gUnk_080D1B70 thumb_func_start sub_08046EF4 sub_08046EF4: @ 0x08046EF4 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] movs r3, #0xff lsls r0, r0, #0x18 cmp r0, #0 bne _08046F12 movs r0, #0x7f strb r0, [r4, #0xe] ldrb r0, [r4, #0x15] movs r1, #0x80 eors r0, r1 strb r0, [r4, #0x15] _08046F12: ldr r2, _08046F60 @ =gUnk_080D1B74 ldrb r0, [r4, #0xe] lsrs r0, r0, #3 movs r1, #0xf ands r0, r1 lsls r0, r0, #1 adds r0, r0, r2 ldrh r0, [r0] strh r0, [r4, #0x24] ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] ands r0, r3 cmp r0, #0 bne _08046F58 bl Random movs r1, #0x38 ands r0, r1 adds r0, #0x78 strb r0, [r4, #0xf] movs r0, #0x23 bl sub_080A7EE0 adds r2, r0, #0 cmp r2, #0 beq _08046F58 adds r1, r2, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] str r4, [r2, #0x50] adds r0, r2, #0 bl UpdateSpriteForCollisionLayer _08046F58: adds r0, r4, #0 bl sub_08047E48 pop {r4, pc} .align 2, 0 _08046F60: .4byte gUnk_080D1B74 thumb_func_start sub_08046F64 sub_08046F64: @ 0x08046F64 push {r4, lr} adds r4, r0, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0 bne _08046F82 adds r0, r4, #0 adds r0, #0x5a ldrb r0, [r0] cmp r0, #1 bne _08046F82 adds r0, r4, #0 movs r1, #1 bl InitAnimationForceUpdate _08046F82: ldr r1, _08046FE4 @ =gUnk_080D1B94 ldrb r0, [r4, #0xd] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl UpdateAnimationSingleFrame adds r1, r4, #0 adds r1, #0x7e ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _08046FC8 movs r0, #0x78 strh r0, [r1] movs r0, #0x23 bl sub_080A7EE0 adds r2, r0, #0 cmp r2, #0 beq _08046FC8 adds r1, r2, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] str r4, [r2, #0x50] adds r0, r2, #0 bl UpdateSpriteForCollisionLayer _08046FC8: ldr r0, [r4, #0x64] ldr r0, [r0] adds r0, #0x6c ldrh r1, [r0] movs r0, #4 ands r0, r1 cmp r0, #0 beq _08046FE0 movs r1, #0 movs r0, #5 strb r0, [r4, #0xc] strb r1, [r4, #0xd] _08046FE0: pop {r4, pc} .align 2, 0 _08046FE4: .4byte gUnk_080D1B94 thumb_func_start sub_08046FE8 sub_08046FE8: @ 0x08046FE8 push {lr} adds r3, r0, #0 movs r0, #1 strb r0, [r3, #0xd] movs r0, #0xe0 lsls r0, r0, #1 strh r0, [r3, #0x24] adds r1, r3, #0 adds r1, #0x7e movs r0, #0x1e strh r0, [r1] ldr r2, _08047028 @ =gRoomControls movs r1, #0xa4 lsls r1, r1, #2 adds r0, r1, #0 ldrh r1, [r2, #6] adds r0, r0, r1 adds r1, r3, #0 adds r1, #0x80 strh r0, [r1] movs r1, #0xc8 lsls r1, r1, #1 adds r0, r1, #0 ldrh r2, [r2, #8] adds r0, r0, r2 adds r1, r3, #0 adds r1, #0x82 strh r0, [r1] adds r0, r3, #0 bl sub_08047D88 pop {pc} .align 2, 0 _08047028: .4byte gRoomControls thumb_func_start sub_0804702C sub_0804702C: @ 0x0804702C push {r4, lr} adds r4, r0, #0 adds r0, #0x80 ldrh r0, [r0] movs r2, #0x2e ldrsh r1, [r4, r2] subs r0, r0, r1 adds r1, r4, #0 adds r1, #0x82 ldrh r1, [r1] movs r3, #0x32 ldrsh r2, [r4, r3] subs r1, r1, r2 bl sub_080045DA adds r3, r0, #0 ldrb r2, [r4, #0x15] subs r0, r2, r3 adds r0, #2 movs r1, #0xff ands r0, r1 cmp r0, #4 bls _0804706C subs r0, r3, r2 movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _08047068 subs r0, r2, #1 b _0804706A _08047068: adds r0, r2, #1 _0804706A: strb r0, [r4, #0x15] _0804706C: ldrb r0, [r4, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047DF0 adds r0, r4, #0 adds r0, #0x80 ldrh r1, [r0] adds r0, #2 ldrh r2, [r0] movs r0, #0x24 ldrsh r3, [r4, r0] asrs r3, r3, #0x10 adds r3, #0x10 adds r0, r4, #0 bl sub_0806FCB8 cmp r0, #0 beq _080470B0 movs r0, #2 strb r0, [r4, #0xd] ldrb r0, [r4, #0x15] lsls r0, r0, #8 adds r1, r4, #0 adds r1, #0x76 strh r0, [r1] movs r0, #0xa0 lsls r0, r0, #2 strh r0, [r4, #0x24] _080470B0: pop {r4, pc} .align 2, 0 thumb_func_start sub_080470B4 sub_080470B4: @ 0x080470B4 push {r4, lr} adds r4, r0, #0 movs r1, #0x40 ldrb r0, [r4, #0x15] cmp r1, r0 beq _0804710A subs r0, r1, r0 movs r1, #0xff ands r0, r1 cmp r0, #0x80 bls _080470D8 adds r1, r4, #0 adds r1, #0x76 ldr r2, _080470D4 @ =0xFFFFFF00 b _080470E0 .align 2, 0 _080470D4: .4byte 0xFFFFFF00 _080470D8: adds r1, r4, #0 adds r1, #0x76 movs r2, #0x80 lsls r2, r2, #1 _080470E0: adds r0, r2, #0 ldrh r2, [r1] adds r0, r0, r2 strh r0, [r1] ldrh r0, [r1] lsrs r0, r0, #8 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_08047D88 ldrb r0, [r4, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047EA4 b _0804713A _0804710A: movs r0, #3 strb r0, [r4, #0xd] movs r0, #0x80 lsls r0, r0, #2 strh r0, [r4, #0x24] ldrb r0, [r4, #0x15] lsls r0, r0, #8 adds r1, r4, #0 adds r1, #0x76 strh r0, [r1] bl Random ldr r2, _0804713C @ =gUnk_080D1BBC movs r1, #1 ands r1, r0 lsls r1, r1, #1 adds r1, r1, r2 ldrh r1, [r1] adds r0, r4, #0 adds r0, #0x74 strh r1, [r0] adds r0, r4, #0 bl sub_08047D88 _0804713A: pop {r4, pc} .align 2, 0 _0804713C: .4byte gUnk_080D1BBC thumb_func_start sub_08047140 sub_08047140: @ 0x08047140 push {lr} adds r2, r0, #0 adds r1, r2, #0 adds r1, #0x76 adds r0, #0x74 ldrh r0, [r0] ldrh r3, [r1] adds r0, r0, r3 strh r0, [r1] lsls r0, r0, #0x10 lsrs r0, r0, #0x18 strb r0, [r2, #0x15] cmp r0, #0xbf bls _08047164 movs r0, #0xc0 strb r0, [r2, #0x15] movs r0, #4 strb r0, [r2, #0xd] _08047164: ldrb r0, [r2, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r2, #0 bl sub_08047DF0 pop {pc} .align 2, 0 thumb_func_start sub_0804717C sub_0804717C: @ 0x0804717C push {r4, lr} adds r4, r0, #0 ldrh r2, [r4, #0x24] movs r0, #0x24 ldrsh r1, [r4, r0] ldr r0, _080471C0 @ =0x0000027F cmp r1, r0 bgt _08047192 adds r0, r2, #0 adds r0, #8 strh r0, [r4, #0x24] _08047192: ldrb r0, [r4, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047DF0 ldr r0, _080471C4 @ =gRoomControls ldrh r0, [r0, #6] movs r1, #0x80 lsls r1, r1, #2 adds r0, r0, r1 movs r2, #0x2e ldrsh r1, [r4, r2] cmp r0, r1 ble _080471BC movs r0, #5 strb r0, [r4, #0xd] _080471BC: pop {r4, pc} .align 2, 0 _080471C0: .4byte 0x0000027F _080471C4: .4byte gRoomControls thumb_func_start sub_080471C8 sub_080471C8: @ 0x080471C8 push {r4, r5, lr} adds r4, r0, #0 ldrh r2, [r4, #0x24] movs r0, #0x24 ldrsh r1, [r4, r0] movs r0, #0xc0 lsls r0, r0, #1 cmp r1, r0 ble _080471E0 adds r0, r2, #0 subs r0, #0x10 strh r0, [r4, #0x24] _080471E0: ldrb r0, [r4, #0x15] cmp r0, #0xdf bhi _080471EA adds r0, #1 strb r0, [r4, #0x15] _080471EA: ldrb r1, [r4, #0x15] movs r5, #0x80 lsls r5, r5, #1 subs r1, r5, r1 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047DF0 ldr r0, _0804722C @ =gRoomControls ldrh r0, [r0, #8] movs r1, #0xc8 lsls r1, r1, #1 adds r0, r0, r1 movs r2, #0x32 ldrsh r1, [r4, r2] cmp r0, r1 ble _08047238 adds r0, r4, #0 adds r0, #0x74 ldrh r0, [r0] cmp r0, r5 bls _08047234 bl Random adds r1, r0, #0 movs r0, #1 ands r1, r0 cmp r1, #0 beq _08047230 movs r0, #6 b _08047236 .align 2, 0 _0804722C: .4byte gRoomControls _08047230: strb r1, [r4, #0xd] b _08047238 _08047234: movs r0, #0 _08047236: strb r0, [r4, #0xd] _08047238: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0804723C sub_0804723C: @ 0x0804723C push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0x15] subs r0, #2 strb r0, [r4, #0x15] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xbf bhi _08047266 movs r0, #7 strb r0, [r4, #0xd] movs r0, #0x80 lsls r0, r0, #2 strh r0, [r4, #0x24] movs r0, #0xc0 strb r0, [r4, #0x15] adds r1, r4, #0 adds r1, #0x76 movs r0, #0xc0 lsls r0, r0, #8 strh r0, [r1] _08047266: adds r0, r4, #0 bl sub_08047D88 ldrb r0, [r4, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047EA4 pop {r4, pc} .align 2, 0 thumb_func_start sub_08047284 sub_08047284: @ 0x08047284 push {lr} adds r2, r0, #0 adds r1, r2, #0 adds r1, #0x76 ldrh r0, [r1] subs r0, #0xe0 strh r0, [r1] lsls r0, r0, #0x10 lsrs r0, r0, #0x18 strb r0, [r2, #0x15] cmp r0, #0x3f bhi _080472A4 movs r0, #0x40 strb r0, [r2, #0x15] movs r0, #8 strb r0, [r2, #0xd] _080472A4: ldrb r0, [r2, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r2, #0 bl sub_08047DF0 pop {pc} .align 2, 0 thumb_func_start sub_080472BC sub_080472BC: @ 0x080472BC push {r4, lr} adds r4, r0, #0 ldrh r2, [r4, #0x24] movs r0, #0x24 ldrsh r1, [r4, r0] ldr r0, _08047308 @ =0x000002FF cmp r1, r0 bgt _080472D2 adds r0, r2, #0 adds r0, #8 strh r0, [r4, #0x24] _080472D2: ldrb r0, [r4, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047DF0 ldr r0, _0804730C @ =gRoomControls ldrh r0, [r0, #6] movs r1, #0xac lsls r1, r1, #2 adds r0, r0, r1 movs r2, #0x2e ldrsh r1, [r4, r2] cmp r0, r1 bge _08047306 movs r0, #9 strb r0, [r4, #0xd] ldrb r0, [r4, #0x15] lsls r0, r0, #8 adds r1, r4, #0 adds r1, #0x76 strh r0, [r1] _08047306: pop {r4, pc} .align 2, 0 _08047308: .4byte 0x000002FF _0804730C: .4byte gRoomControls thumb_func_start sub_08047310 sub_08047310: @ 0x08047310 push {lr} adds r2, r0, #0 ldrh r3, [r2, #0x24] movs r0, #0x24 ldrsh r1, [r2, r0] ldr r0, _08047364 @ =0x0000017F cmp r1, r0 bgt _08047326 adds r0, r3, #0 subs r0, #0x10 strh r0, [r2, #0x24] _08047326: adds r1, r2, #0 adds r1, #0x76 ldr r3, _08047368 @ =0xFFFFFE30 adds r0, r3, #0 ldrh r3, [r1] adds r0, r0, r3 strh r0, [r1] lsls r0, r0, #0x10 lsrs r0, r0, #0x18 strb r0, [r2, #0x15] adds r0, #0x7f lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0x3f bhi _0804734C movs r0, #0xc0 strb r0, [r2, #0x15] movs r0, #4 strb r0, [r2, #0xd] _0804734C: ldrb r0, [r2, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r2, #0 bl sub_08047DF0 pop {pc} .align 2, 0 _08047364: .4byte 0x0000017F _08047368: .4byte 0xFFFFFE30 thumb_func_start sub_0804736C sub_0804736C: @ 0x0804736C push {r4, lr} adds r4, r0, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #1 bne _0804738A adds r0, r4, #0 adds r0, #0x5a ldrb r0, [r0] cmp r0, #1 bne _0804738A adds r0, r4, #0 movs r1, #0 bl InitAnimationForceUpdate _0804738A: ldr r0, _080473B4 @ =gUnk_080D1BC0 ldrb r1, [r4, #0xd] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl UpdateAnimationSingleFrame adds r0, r4, #0 adds r0, #0x45 ldrb r1, [r0] cmp r1, #0 bne _080473B0 movs r0, #7 strb r0, [r4, #0xc] strb r1, [r4, #0xd] _080473B0: pop {r4, pc} .align 2, 0 _080473B4: .4byte gUnk_080D1BC0 thumb_func_start sub_080473B8 sub_080473B8: @ 0x080473B8 push {lr} movs r1, #1 strb r1, [r0, #0xd] movs r1, #0x90 lsls r1, r1, #1 strh r1, [r0, #0x24] ldr r3, _080473EC @ =gRoomControls movs r2, #0x80 lsls r2, r2, #2 adds r1, r2, #0 ldrh r2, [r3, #6] adds r1, r1, r2 adds r2, r0, #0 adds r2, #0x80 strh r1, [r2] movs r2, #0xe8 lsls r2, r2, #1 adds r1, r2, #0 ldrh r3, [r3, #8] adds r1, r1, r3 adds r2, r0, #0 adds r2, #0x82 strh r1, [r2] bl sub_08047D88 pop {pc} .align 2, 0 _080473EC: .4byte gRoomControls thumb_func_start sub_080473F0 sub_080473F0: @ 0x080473F0 push {r4, lr} adds r4, r0, #0 adds r0, #0x80 ldrh r0, [r0] movs r2, #0x2e ldrsh r1, [r4, r2] subs r0, r0, r1 adds r1, r4, #0 adds r1, #0x82 ldrh r1, [r1] movs r3, #0x32 ldrsh r2, [r4, r3] subs r1, r1, r2 bl sub_080045DA adds r3, r0, #0 ldrb r2, [r4, #0x15] subs r0, r2, r3 adds r0, #2 movs r1, #0xff ands r0, r1 cmp r0, #4 bls _08047444 subs r1, r3, r2 movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08047438 movs r0, #1 rsbs r0, r0, #0 cmp r1, r0 bge _08047434 subs r0, r2, #2 b _08047442 _08047434: subs r0, r2, #1 b _08047442 _08047438: cmp r1, #1 ble _08047440 adds r0, r2, #2 b _08047442 _08047440: adds r0, r2, #1 _08047442: strb r0, [r4, #0x15] _08047444: ldrb r0, [r4, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047DF0 adds r0, r4, #0 adds r0, #0x80 ldrh r1, [r0] adds r0, #2 ldrh r2, [r0] adds r0, r4, #0 movs r3, #8 bl sub_0806FCB8 cmp r0, #0 beq _08047482 movs r0, #2 strb r0, [r4, #0xd] ldrb r0, [r4, #0x15] lsls r0, r0, #8 adds r1, r4, #0 adds r1, #0x76 strh r0, [r1] movs r0, #0xc0 lsls r0, r0, #1 strh r0, [r4, #0x24] _08047482: pop {r4, pc} thumb_func_start sub_08047484 sub_08047484: @ 0x08047484 push {r4, lr} adds r4, r0, #0 movs r1, #0x40 ldrb r0, [r4, #0x15] cmp r1, r0 beq _080474DA subs r0, r1, r0 movs r1, #0xff ands r0, r1 cmp r0, #0x80 bls _080474A8 adds r1, r4, #0 adds r1, #0x76 ldr r2, _080474A4 @ =0xFFFFFF00 b _080474B0 .align 2, 0 _080474A4: .4byte 0xFFFFFF00 _080474A8: adds r1, r4, #0 adds r1, #0x76 movs r2, #0x80 lsls r2, r2, #1 _080474B0: adds r0, r2, #0 ldrh r2, [r1] adds r0, r0, r2 strh r0, [r1] ldrh r0, [r1] lsrs r0, r0, #8 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_08047D88 ldrb r0, [r4, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047EA4 b _08047504 _080474DA: movs r0, #3 strb r0, [r4, #0xd] movs r0, #0x80 lsls r0, r0, #2 strh r0, [r4, #0x24] strb r1, [r4, #0x15] adds r1, r4, #0 adds r1, #0x76 movs r0, #0x80 lsls r0, r0, #7 strh r0, [r1] subs r1, #2 movs r0, #0xc0 lsls r0, r0, #1 strh r0, [r1] adds r1, #0xa movs r0, #0xf0 strh r0, [r1] adds r0, r4, #0 bl sub_08047D88 _08047504: pop {r4, pc} .align 2, 0 thumb_func_start sub_08047508 sub_08047508: @ 0x08047508 push {r4, lr} adds r4, r0, #0 ldr r2, _0804754C @ =gRoomControls ldrh r0, [r2, #6] movs r1, #0xd0 lsls r1, r1, #1 adds r0, r0, r1 movs r3, #0x2e ldrsh r1, [r4, r3] cmp r0, r1 bge _0804759A ldrb r1, [r4, #0x15] cmp r1, #0 bne _08047550 ldrh r0, [r2, #8] movs r1, #0x82 lsls r1, r1, #2 adds r0, r0, r1 movs r2, #0x32 ldrsh r1, [r4, r2] cmp r0, r1 blt _0804759A adds r0, r4, #0 adds r0, #0x74 ldrh r1, [r0] rsbs r1, r1, #0 strh r1, [r0] adds r2, r4, #0 adds r2, #0x76 ldrh r0, [r2] adds r0, r0, r1 strh r0, [r2] lsrs r0, r0, #8 b _08047598 .align 2, 0 _0804754C: .4byte gRoomControls _08047550: adds r0, r4, #0 adds r0, #0x74 movs r3, #0 ldrsh r2, [r0, r3] cmp r2, #0 bge _0804757E adds r3, r4, #0 adds r3, #0x76 ldrh r0, [r3] adds r0, r0, r2 strh r0, [r3] lsls r0, r0, #0x10 lsrs r0, r0, #0x18 strb r0, [r4, #0x15] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _0804759A movs r0, #0 strb r0, [r4, #0x15] movs r0, #0 strh r0, [r3] b _0804759A _0804757E: cmp r1, #0x3f bhi _0804759A adds r1, r4, #0 adds r1, #0x76 ldrh r0, [r1] adds r0, r0, r2 strh r0, [r1] lsls r0, r0, #0x10 lsrs r0, r0, #0x18 strb r0, [r4, #0x15] cmp r0, #0x3f bls _0804759A movs r0, #0x40 _08047598: strb r0, [r4, #0x15] _0804759A: adds r0, r4, #0 bl sub_08047E48 ldr r0, _080475F0 @ =gRoomControls ldrh r0, [r0, #6] movs r1, #0xa0 lsls r1, r1, #2 adds r0, r0, r1 movs r2, #0x2e ldrsh r1, [r4, r2] cmp r0, r1 bge _080475CA movs r0, #4 strb r0, [r4, #0xd] movs r0, #0x80 lsls r0, r0, #2 strh r0, [r4, #0x24] ldrb r0, [r4, #0x15] strb r0, [r4, #0x14] ldrb r0, [r4, #0x15] lsls r0, r0, #8 adds r1, r4, #0 adds r1, #0x76 strh r0, [r1] _080475CA: adds r1, r4, #0 adds r1, #0x7e ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _080475EE bl Random movs r1, #3 ands r1, r0 movs r0, #0x62 bl CreateEnemy cmp r0, #0 beq _080475EE str r4, [r0, #0x50] _080475EE: pop {r4, pc} .align 2, 0 _080475F0: .4byte gRoomControls thumb_func_start sub_080475F4 sub_080475F4: @ 0x080475F4 push {lr} adds r2, r0, #0 adds r1, r2, #0 adds r1, #0x76 movs r3, #0xc0 lsls r3, r3, #1 adds r0, r3, #0 ldrh r3, [r1] adds r0, r0, r3 strh r0, [r1] lsls r0, r0, #0x10 lsrs r0, r0, #0x18 strb r0, [r2, #0x15] cmp r0, #0xbf bls _08047626 movs r0, #0xc0 strb r0, [r2, #0x15] movs r0, #5 strb r0, [r2, #0xd] movs r0, #0x80 lsls r0, r0, #2 strh r0, [r2, #0x24] adds r1, #8 movs r0, #0x3c strh r0, [r1] _08047626: ldrb r0, [r2, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r2, #0 bl sub_08047DF0 pop {pc} thumb_func_start sub_0804763C sub_0804763C: @ 0x0804763C push {r4, lr} adds r4, r0, #0 ldr r2, _08047680 @ =gRoomControls ldrh r0, [r2, #6] movs r1, #0xf8 lsls r1, r1, #1 adds r0, r0, r1 movs r3, #0x2e ldrsh r1, [r4, r3] cmp r0, r1 ble _080476D0 ldrb r1, [r4, #0x15] cmp r1, #0 bne _08047684 ldrh r0, [r2, #8] movs r1, #0x82 lsls r1, r1, #2 adds r0, r0, r1 movs r2, #0x32 ldrsh r1, [r4, r2] cmp r0, r1 blt _080476D0 adds r0, r4, #0 adds r0, #0x74 ldrh r1, [r0] rsbs r1, r1, #0 strh r1, [r0] adds r2, r4, #0 adds r2, #0x76 ldrh r0, [r2] adds r0, r0, r1 strh r0, [r2] lsrs r0, r0, #8 b _080476CE .align 2, 0 _08047680: .4byte gRoomControls _08047684: adds r0, r4, #0 adds r0, #0x74 movs r3, #0 ldrsh r2, [r0, r3] cmp r2, #0 ble _080476B4 adds r3, r4, #0 adds r3, #0x76 ldrh r0, [r3] adds r0, r0, r2 strh r0, [r3] lsls r0, r0, #0x10 lsrs r0, r0, #0x18 strb r0, [r4, #0x15] movs r1, #0x80 ands r0, r1 lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 bne _080476D0 movs r0, #0 strb r0, [r4, #0x15] strh r1, [r3] b _080476D0 _080476B4: cmp r1, #0xc0 bls _080476D0 adds r1, r4, #0 adds r1, #0x76 ldrh r0, [r1] adds r0, r0, r2 strh r0, [r1] lsls r0, r0, #0x10 lsrs r0, r0, #0x18 strb r0, [r4, #0x15] cmp r0, #0xc0 bhi _080476D0 movs r0, #0xc0 _080476CE: strb r0, [r4, #0x15] _080476D0: adds r0, r4, #0 bl sub_08047E48 ldr r0, _08047728 @ =gRoomControls ldrh r0, [r0, #6] movs r1, #0xc0 lsls r1, r1, #1 adds r0, r0, r1 movs r2, #0x2e ldrsh r1, [r4, r2] cmp r0, r1 ble _08047700 movs r0, #6 strb r0, [r4, #0xd] movs r0, #0x80 lsls r0, r0, #2 strh r0, [r4, #0x24] ldrb r0, [r4, #0x15] strb r0, [r4, #0x14] ldrb r0, [r4, #0x15] lsls r0, r0, #8 adds r1, r4, #0 adds r1, #0x76 strh r0, [r1] _08047700: adds r1, r4, #0 adds r1, #0x7e ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _08047724 bl Random movs r1, #3 ands r1, r0 movs r0, #0x62 bl CreateEnemy cmp r0, #0 beq _08047724 str r4, [r0, #0x50] _08047724: pop {r4, pc} .align 2, 0 _08047728: .4byte gRoomControls thumb_func_start sub_0804772C sub_0804772C: @ 0x0804772C push {lr} adds r2, r0, #0 adds r1, r2, #0 adds r1, #0x76 ldr r3, _08047774 @ =0xFFFFFE80 adds r0, r3, #0 ldrh r3, [r1] adds r0, r0, r3 strh r0, [r1] lsls r0, r0, #0x10 lsrs r0, r0, #0x18 strb r0, [r2, #0x15] cmp r0, #0x40 bhi _0804775C movs r0, #0x40 strb r0, [r2, #0x15] movs r0, #3 strb r0, [r2, #0xd] movs r0, #0x80 lsls r0, r0, #2 strh r0, [r2, #0x24] adds r1, #8 movs r0, #0x1e strh r0, [r1] _0804775C: ldrb r0, [r2, #0x15] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r2, #0 bl sub_08047DF0 pop {pc} .align 2, 0 _08047774: .4byte 0xFFFFFE80 thumb_func_start sub_08047778 sub_08047778: @ 0x08047778 push {r4, lr} adds r4, r0, #0 ldr r1, _08047794 @ =gUnk_080D1BDC ldrb r0, [r4, #0xd] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl UpdateAnimationSingleFrame pop {r4, pc} .align 2, 0 _08047794: .4byte gUnk_080D1BDC thumb_func_start sub_08047798 sub_08047798: @ 0x08047798 push {r4, lr} adds r3, r0, #0 movs r0, #1 strb r0, [r3, #0xd] movs r0, #0x80 strh r0, [r3, #0x24] movs r0, #0x2e ldrsh r1, [r3, r0] ldr r2, _080477BC @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 ldr r0, _080477C0 @ =0x000001F7 cmp r1, r0 bgt _080477C4 adds r1, r3, #0 adds r1, #0x80 movs r0, #0xa8 b _080477CC .align 2, 0 _080477BC: .4byte gRoomControls _080477C0: .4byte 0x000001F7 _080477C4: adds r1, r3, #0 adds r1, #0x80 movs r0, #0xd2 lsls r0, r0, #2 _080477CC: strh r0, [r1] ldrh r0, [r2, #6] ldrh r4, [r1] adds r0, r0, r4 strh r0, [r1] movs r1, #0xd2 lsls r1, r1, #2 adds r0, r1, #0 ldrh r2, [r2, #8] adds r0, r0, r2 adds r1, r3, #0 adds r1, #0x82 strh r0, [r1] adds r0, r3, #0 bl sub_08047D88 pop {r4, pc} .align 2, 0 thumb_func_start sub_080477F0 sub_080477F0: @ 0x080477F0 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r4, r0, #0 ldrh r2, [r4, #0x24] movs r0, #0x24 ldrsh r1, [r4, r0] ldr r0, _08047868 @ =0x000002FF cmp r1, r0 bgt _0804780A adds r0, r2, #0 adds r0, #8 strh r0, [r4, #0x24] _0804780A: adds r7, r4, #0 adds r7, #0x80 ldrh r0, [r7] movs r2, #0x2e ldrsh r1, [r4, r2] subs r0, r0, r1 adds r6, r4, #0 adds r6, #0x82 ldrh r1, [r6] movs r3, #0x32 ldrsh r2, [r4, r3] subs r1, r1, r2 bl sub_080045DA strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_08047E48 ldr r0, _0804786C @ =gLinkEntity movs r2, #0x2e ldrsh r1, [r0, r2] movs r3, #0x32 ldrsh r2, [r0, r3] adds r0, r4, #0 movs r3, #0x80 bl sub_0806FCB8 adds r1, r0, #0 cmp r1, #0 bne _08047870 movs r0, #2 strb r0, [r4, #0xc] strb r1, [r4, #0xd] ldrb r2, [r4, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 movs r2, #0x80 orrs r0, r2 strb r0, [r4, #0x1b] ldrb r0, [r4, #0x19] ands r1, r0 orrs r1, r2 strb r1, [r4, #0x19] ldrb r0, [r4, #0x14] strb r0, [r4, #0x15] b _0804790C .align 2, 0 _08047868: .4byte 0x000002FF _0804786C: .4byte gLinkEntity _08047870: ldr r5, _080478FC @ =gRoomControls ldrh r1, [r5, #6] movs r0, #0x80 lsls r0, r0, #2 mov r8, r0 add r1, r8 ldrh r2, [r5, #8] movs r3, #0x84 lsls r3, r3, #2 adds r2, r2, r3 movs r3, #0x80 lsls r3, r3, #1 adds r0, r4, #0 bl sub_0806FCB8 cmp r0, #0 bne _080478A0 ldrb r0, [r4, #0x1b] movs r1, #0xc0 orrs r0, r1 strb r0, [r4, #0x1b] ldrb r0, [r4, #0x19] orrs r0, r1 strb r0, [r4, #0x19] _080478A0: ldrh r1, [r7] ldrh r2, [r6] adds r0, r4, #0 movs r3, #4 bl sub_0806FCB8 cmp r0, #0 beq _0804790C movs r0, #2 strb r0, [r4, #0xd] ldrb r0, [r4, #0x14] lsls r0, r0, #8 adds r1, r4, #0 adds r1, #0x76 strh r0, [r1] bl Random ldr r2, _08047900 @ =gUnk_080D1BF0 movs r1, #1 ands r0, r1 lsls r0, r0, #1 adds r0, r0, r2 ldrh r2, [r0] adds r0, r4, #0 adds r0, #0x74 strh r2, [r0] ldr r2, [r4, #0x64] ldr r0, [r2] adds r0, #0x6c ldrh r0, [r0] ands r1, r0 cmp r1, #0 beq _08047904 ldr r3, [r2, #4] ldrh r0, [r5, #6] add r0, r8 movs r2, #0x2e ldrsh r1, [r4, r2] movs r2, #0x83 cmp r0, r1 ble _080478F4 movs r2, #0x81 _080478F4: adds r0, r3, #0 adds r0, #0x79 strb r2, [r0] b _0804790C .align 2, 0 _080478FC: .4byte gRoomControls _08047900: .4byte gUnk_080D1BF0 _08047904: ldr r0, [r2, #4] adds r0, #0x79 movs r1, #0x80 strb r1, [r0] _0804790C: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_08047914 sub_08047914: @ 0x08047914 push {r4, lr} adds r4, r0, #0 bl sub_08047D88 ldrb r1, [r4, #0x14] movs r0, #0x1f ands r0, r1 cmp r0, #0 beq _08047950 adds r1, r4, #0 adds r1, #0x76 adds r0, r4, #0 adds r0, #0x74 ldrh r0, [r0] ldrh r2, [r1] adds r0, r0, r2 strh r0, [r1] lsrs r0, r0, #8 strb r0, [r4, #0x14] ldrb r0, [r4, #0x14] movs r1, #0x80 lsls r1, r1, #1 subs r1, r1, r0 movs r0, #0xff ands r1, r0 lsls r1, r1, #8 adds r0, r4, #0 bl sub_08047EA4 b _08047976 _08047950: movs r0, #3 strb r0, [r4, #0xd] adds r1, r4, #0 adds r1, #0x70 movs r0, #0x3c strh r0, [r1] ldrb r1, [r4, #0xa] lsls r0, r1, #4 subs r0, r0, r1 lsls r0, r0, #2 adds r0, #0x78 adds r1, r4, #0 adds r1, #0x7e strh r0, [r1] ldr r0, [r4, #0x64] ldr r0, [r0] ldrb r1, [r4, #0x14] bl sub_080A1D70 _08047976: pop {r4, pc} thumb_func_start sub_08047978 sub_08047978: @ 0x08047978 push {r4, lr} adds r4, r0, #0 bl sub_08047D88 adds r0, r4, #0 adds r0, #0x45 ldrb r1, [r0] cmp r1, #0 beq _080479C6 adds r2, r4, #0 adds r2, #0x70 ldrh r0, [r2] subs r1, r0, #1 strh r1, [r2] lsls r0, r1, #0x10 cmp r0, #0 bne _080479B6 adds r1, r4, #0 adds r1, #0x72 movs r0, #1 strh r0, [r1] ldrb r0, [r4, #0xa] cmp r0, #0 bne _080479AE movs r0, #0xb4 strh r0, [r2] b _080479CC _080479AE: movs r0, #0xb4 lsls r0, r0, #1 strh r0, [r2] b _080479CC _080479B6: lsls r0, r1, #0x10 lsrs r0, r0, #0x10 cmp r0, #0xf0 bne _080479CC adds r0, r4, #0 bl sub_0804813C b _080479CC _080479C6: adds r0, r4, #0 adds r0, #0x72 strh r1, [r0] _080479CC: adds r1, r4, #0 adds r1, #0x7e ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _080479F4 movs r0, #0xf0 strh r0, [r1] bl Random movs r1, #3 ands r1, r0 movs r0, #0x62 bl CreateEnemy cmp r0, #0 beq _080479F4 str r4, [r0, #0x50] _080479F4: ldr r0, _08047A78 @ =gLinkEntity movs r2, #0x2e ldrsh r1, [r0, r2] movs r3, #0x32 ldrsh r2, [r0, r3] adds r0, r4, #0 movs r3, #0x80 bl sub_0806FCB8 adds r1, r0, #0 cmp r1, #0 bne _08047A2C movs r0, #2 strb r0, [r4, #0xc] strb r1, [r4, #0xd] ldrb r2, [r4, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 movs r2, #0x80 orrs r0, r2 strb r0, [r4, #0x1b] ldrb r0, [r4, #0x19] ands r1, r0 orrs r1, r2 strb r1, [r4, #0x19] ldrb r0, [r4, #0x14] strb r0, [r4, #0x15] _08047A2C: adds r0, r4, #0 adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 bne _08047B06 ldr r0, [r4, #0x54] ldrb r0, [r0, #0xc] cmp r0, #1 bne _08047B06 movs r0, #4 strb r0, [r4, #0xd] ldrb r0, [r4, #0xa] cmp r0, #0 bne _08047AA4 ldr r0, [r4, #0x64] ldr r0, [r0, #4] ldrb r0, [r0, #0x14] lsrs r0, r0, #6 cmp r0, #1 bne _08047A80 ldr r2, _08047A7C @ =gRoomControls movs r1, #0xe0 lsls r1, r1, #1 adds r0, r1, #0 ldrh r3, [r2, #6] adds r0, r0, r3 adds r1, r4, #0 adds r1, #0x80 strh r0, [r1] movs r1, #0x94 lsls r1, r1, #2 adds r0, r1, #0 ldrh r2, [r2, #8] adds r0, r0, r2 adds r1, r4, #0 adds r1, #0x82 b _08047B04 .align 2, 0 _08047A78: .4byte gLinkEntity _08047A7C: .4byte gRoomControls _08047A80: ldr r2, _08047AA0 @ =gRoomControls movs r3, #0x90 lsls r3, r3, #2 adds r0, r3, #0 ldrh r1, [r2, #6] adds r0, r0, r1 adds r1, r4, #0 adds r1, #0x80 strh r0, [r1] adds r3, #0x10 adds r0, r3, #0 ldrh r2, [r2, #8] adds r0, r0, r2 adds r1, #2 b _08047B04 .align 2, 0 _08047AA0: .4byte gRoomControls _08047AA4: ldr r0, _08047AC4 @ =gRoomControls ldrh r1, [r0, #6] movs r2, #0x80 lsls r2, r2, #2 adds r1, r1, r2 movs r3, #0x2e ldrsh r2, [r4, r3] adds r3, r0, #0 cmp r1, r2 bge _08047AC8 adds r1, r4, #0 adds r1, #0x80 movs r0, #0xc8 lsls r0, r0, #1 b _08047AD0 .align 2, 0 _08047AC4: .4byte gRoomControls _08047AC8: adds r1, r4, #0 adds r1, #0x80 movs r0, #0x9c lsls r0, r0, #2 _08047AD0: strh r0, [r1] ldrh r0, [r3, #6] ldrh r2, [r1] adds r0, r0, r2 strh r0, [r1] ldrh r0, [r3, #8] movs r1, #0x84 lsls r1, r1, #2 adds r0, r0, r1 movs r2, #0x32 ldrsh r1, [r4, r2] cmp r0, r1 bge _08047AF4 adds r1, r4, #0 adds r1, #0x82 movs r0, #0xd0 lsls r0, r0, #1 b _08047AFC _08047AF4: adds r1, r4, #0 adds r1, #0x82 movs r0, #0xa0 lsls r0, r0, #2 _08047AFC: strh r0, [r1] ldrh r0, [r3, #8] ldrh r3, [r1] adds r0, r0, r3 _08047B04: strh r0, [r1] _08047B06: pop {r4, pc} thumb_func_start sub_08047B08 sub_08047B08: @ 0x08047B08 push {r4, r5, r6, r7, lr} adds r5, r0, #0 bl sub_08047D88 adds r4, r5, #0 adds r4, #0x80 ldrh r0, [r4] movs r2, #0x2e ldrsh r1, [r5, r2] subs r0, r0, r1 adds r6, r5, #0 adds r6, #0x82 ldrh r1, [r6] movs r3, #0x32 ldrsh r2, [r5, r3] subs r1, r1, r2 bl sub_080045DA strb r0, [r5, #0x15] movs r7, #0 movs r0, #0x80 lsls r0, r0, #2 strh r0, [r5, #0x24] adds r0, r5, #0 bl sub_08047E58 ldrh r1, [r4] ldrh r2, [r6] adds r0, r5, #0 movs r3, #4 bl sub_0806FCB8 cmp r0, #0 beq _08047B80 ldrb r0, [r5, #0xa] cmp r0, #0 bne _08047B60 movs r0, #7 strb r0, [r5, #0xc] strb r7, [r5, #0xd] ldrb r0, [r5, #0x15] movs r1, #0x80 eors r0, r1 b _08047B7E _08047B60: movs r0, #4 strb r0, [r5, #0xc] strb r7, [r5, #0xd] ldrb r2, [r5, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 movs r2, #0x80 orrs r0, r2 strb r0, [r5, #0x1b] ldrb r0, [r5, #0x19] ands r1, r0 orrs r1, r2 strb r1, [r5, #0x19] ldrb r0, [r5, #0x14] _08047B7E: strb r0, [r5, #0x15] _08047B80: pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_08047B84 sub_08047B84: @ 0x08047B84 push {r4, lr} adds r4, r0, #0 ldr r1, _08047BA0 @ =gUnk_080D1BF4 ldrb r0, [r4, #0xd] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl UpdateAnimationSingleFrame pop {r4, pc} .align 2, 0 _08047BA0: .4byte gUnk_080D1BF4 thumb_func_start sub_08047BA4 sub_08047BA4: @ 0x08047BA4 push {r4, lr} adds r4, r0, #0 movs r1, #0 movs r0, #1 strb r0, [r4, #0xd] movs r2, #0x78 strb r2, [r4, #0xe] strb r1, [r4, #0xf] ldr r0, _08047BD0 @ =gRoomControls ldrh r0, [r0, #6] movs r1, #0x80 lsls r1, r1, #2 adds r0, r0, r1 movs r3, #0x2e ldrsh r1, [r4, r3] cmp r0, r1 bge _08047BD4 adds r0, r4, #0 adds r0, #0x76 strh r2, [r0] b _08047BDC .align 2, 0 _08047BD0: .4byte gRoomControls _08047BD4: adds r1, r4, #0 adds r1, #0x76 movs r0, #0x88 strh r0, [r1] _08047BDC: ldr r0, _08047BEC @ =0x000001B5 bl PlaySFX adds r0, r4, #0 bl sub_08047BF0 pop {r4, pc} .align 2, 0 _08047BEC: .4byte 0x000001B5 thumb_func_start sub_08047BF0 sub_08047BF0: @ 0x08047BF0 push {r4, r5, r6, lr} adds r5, r0, #0 ldr r2, _08047CB8 @ =gUnk_080D1C00 ldrb r1, [r5, #0xe] movs r0, #3 ands r0, r1 adds r0, r0, r2 ldrb r0, [r0] strb r0, [r5, #0x15] movs r0, #0x80 lsls r0, r0, #1 strh r0, [r5, #0x24] adds r0, r5, #0 bl sub_08047E48 ldrb r0, [r5, #0xe] cmp r0, #0 bne _08047CC4 ldrb r1, [r5, #0xf] adds r0, r1, #1 strb r0, [r5, #0xf] movs r0, #0xf ands r0, r1 cmp r0, #0 bne _08047C74 adds r0, r5, #0 movs r1, #0x51 movs r2, #0 bl CreateFx adds r4, r0, #0 cmp r4, #0 beq _08047C74 bl Random movs r3, #0x1e adds r1, r0, #0 ands r1, r3 ldr r6, _08047CBC @ =0x0000FFF1 adds r2, r6, #0 adds r1, r2, r1 ldrh r6, [r4, #0x2e] adds r1, r1, r6 strh r1, [r4, #0x2e] lsrs r0, r0, #8 ands r0, r3 adds r2, r2, r0 ldrh r0, [r4, #0x32] adds r2, r2, r0 strh r2, [r4, #0x32] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r2] adds r1, r4, #0 adds r1, #0x38 movs r0, #1 strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteForCollisionLayer _08047C74: adds r0, r5, #0 adds r0, #0x76 ldrh r0, [r0] strb r0, [r5, #0x15] movs r0, #0xa0 lsls r0, r0, #1 strh r0, [r5, #0x24] adds r0, r5, #0 bl sub_08047E48 movs r2, #0x32 ldrsh r1, [r5, r2] ldr r0, _08047CC0 @ =gRoomControls ldrh r0, [r0, #8] movs r6, #0x9c lsls r6, r6, #2 adds r0, r0, r6 cmp r1, r0 ble _08047D10 movs r0, #2 strb r0, [r5, #0xd] adds r1, r5, #0 adds r1, #0x7e movs r0, #0xaa strh r0, [r1] adds r0, #0x83 bl PlaySFX adds r0, r5, #0 movs r1, #1 bl InitAnimationForceUpdate b _08047D10 .align 2, 0 _08047CB8: .4byte gUnk_080D1C00 _08047CBC: .4byte 0x0000FFF1 _08047CC0: .4byte gRoomControls _08047CC4: subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0x5a bne _08047CD4 ldr r4, [r5, #0x54] b _08047CDC _08047CD4: cmp r0, #0x3c bne _08047CF2 ldr r0, [r5, #0x54] ldr r4, [r0, #0x54] _08047CDC: ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #0x51 movs r2, #0 bl CreateFx b _08047D10 _08047CF2: cmp r0, #0x1e bne _08047D10 ldr r0, [r5, #0x54] ldr r0, [r0, #0x54] ldr r4, [r0, #0x54] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #0x51 movs r2, #0 bl CreateFx _08047D10: adds r0, r5, #0 adds r0, #0x78 ldrh r3, [r0] adds r0, r5, #0 movs r1, #0xaa movs r2, #0xaa bl sub_0805EC9C pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_08047D24 sub_08047D24: @ 0x08047D24 push {r4, lr} adds r4, r0, #0 adds r1, r4, #0 adds r1, #0x7e ldrh r0, [r1] adds r0, #8 movs r2, #0 strh r0, [r1] lsls r0, r0, #0x10 lsrs r1, r0, #0x10 movs r0, #0x80 lsls r0, r0, #4 cmp r1, r0 bls _08047D5A ldrb r0, [r4, #0xa] cmp r0, #0 bne _08047D4C ldr r0, [r4, #0x64] str r2, [r0, #8] b _08047D50 _08047D4C: ldr r0, [r4, #0x64] str r2, [r0, #0xc] _08047D50: movs r0, #0 str r0, [r4, #0x64] bl DeleteThisEntity b _08047D84 _08047D5A: ldr r0, _08047D68 @ =0x000001FF cmp r1, r0 bhi _08047D6C adds r0, r4, #0 bl sub_08047E48 b _08047D72 .align 2, 0 _08047D68: .4byte 0x000001FF _08047D6C: adds r0, r4, #0 bl sub_08047E58 _08047D72: adds r0, r4, #0 adds r0, #0x7e ldrh r2, [r0] subs r0, #6 ldrh r3, [r0] adds r0, r4, #0 adds r1, r2, #0 bl sub_0805EC9C _08047D84: pop {r4, pc} .align 2, 0 thumb_func_start sub_08047D88 sub_08047D88: @ 0x08047D88 push {r4, r5, lr} adds r3, r0, #0 adds r5, r3, #0 adds r5, #0x7c ldrb r2, [r5] lsls r1, r2, #1 movs r0, #0x7f ands r1, r0 movs r0, #0x80 ands r0, r2 orrs r1, r0 strb r1, [r5] ldrb r0, [r3, #0x19] lsrs r0, r0, #6 cmp r0, #3 bne _08047DB0 ldr r0, _08047DE8 @ =gLinkState ldrb r0, [r0, #0x14] cmp r0, #0 bne _08047DE6 _08047DB0: adds r0, r3, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #1 beq _08047DE6 ldr r4, _08047DEC @ =gLinkEntity movs r0, #0x2e ldrsh r1, [r4, r0] movs r0, #0x32 ldrsh r2, [r4, r0] adds r0, r3, #0 movs r3, #0x20 bl sub_0806FCB8 cmp r0, #0 beq _08047DE6 ldr r0, _08047DE8 @ =gLinkState movs r1, #1 strb r1, [r0, #0x14] movs r1, #0x36 ldrsh r0, [r4, r1] cmp r0, #0 bne _08047DE6 ldrb r0, [r5] movs r1, #1 orrs r0, r1 strb r0, [r5] _08047DE6: pop {r4, r5, pc} .align 2, 0 _08047DE8: .4byte gLinkState _08047DEC: .4byte gLinkEntity thumb_func_start sub_08047DF0 sub_08047DF0: @ 0x08047DF0 push {r4, r5, r6, lr} adds r5, r0, #0 adds r4, r1, #0 bl sub_08047D88 adds r0, r5, #0 adds r1, r4, #0 bl sub_08047EA4 movs r0, #0x2e ldrsh r4, [r5, r0] movs r2, #0x32 ldrsh r6, [r5, r2] movs r0, #0x24 ldrsh r1, [r5, r0] ldrb r2, [r5, #0x15] adds r0, r5, #0 bl sub_0806F62C adds r0, r5, #0 adds r0, #0x7c ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08047E42 bl sub_08079F8C cmp r0, #0 beq _08047E42 ldr r0, _08047E44 @ =gLinkEntity ldrh r1, [r5, #0x2e] subs r1, r1, r4 ldrh r2, [r0, #0x2e] adds r1, r1, r2 strh r1, [r0, #0x2e] ldrh r1, [r5, #0x32] subs r1, r1, r6 ldrh r2, [r0, #0x32] adds r1, r1, r2 strh r1, [r0, #0x32] _08047E42: pop {r4, r5, r6, pc} .align 2, 0 _08047E44: .4byte gLinkEntity thumb_func_start sub_08047E48 sub_08047E48: @ 0x08047E48 push {r4, lr} adds r4, r0, #0 bl sub_08047D88 adds r0, r4, #0 bl sub_08047E58 pop {r4, pc} thumb_func_start sub_08047E58 sub_08047E58: @ 0x08047E58 push {r4, r5, r6, lr} adds r4, r0, #0 movs r0, #0x2e ldrsh r5, [r4, r0] movs r2, #0x32 ldrsh r6, [r4, r2] movs r0, #0x24 ldrsh r1, [r4, r0] ldrb r2, [r4, #0x15] adds r0, r4, #0 bl sub_0806F62C adds r0, r4, #0 adds r0, #0x7c ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08047E9C bl sub_08079F8C cmp r0, #0 beq _08047E9C ldr r0, _08047EA0 @ =gLinkEntity ldrh r1, [r4, #0x2e] subs r1, r1, r5 ldrh r2, [r0, #0x2e] adds r1, r1, r2 strh r1, [r0, #0x2e] ldrh r1, [r4, #0x32] subs r1, r1, r6 ldrh r2, [r0, #0x32] adds r1, r1, r2 strh r1, [r0, #0x32] _08047E9C: pop {r4, r5, r6, pc} .align 2, 0 _08047EA0: .4byte gLinkEntity thumb_func_start sub_08047EA4 sub_08047EA4: @ 0x08047EA4 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r5, r0, #0 adds r0, #0x78 strh r1, [r0] ldrh r1, [r0] adds r0, #2 ldrh r0, [r0] subs r4, r1, r0 movs r0, #0x80 lsls r0, r0, #1 adds r1, r4, r0 adds r0, #0xff cmp r1, r0 bls _08047F58 adds r0, r5, #0 adds r0, #0x7c ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08047F4E adds r0, r5, #0 bl sub_08047F68 lsls r0, r0, #8 mov r8, r0 ldr r6, _08047F60 @ =gLinkEntity movs r1, #0x2e ldrsh r0, [r6, r1] movs r2, #0x2e ldrsh r1, [r5, r2] subs r0, r0, r1 movs r3, #0x32 ldrsh r1, [r6, r3] movs r7, #0x32 ldrsh r2, [r5, r7] subs r1, r1, r2 bl sub_080045DA adds r3, r0, #0 adds r0, r4, #0 cmp r4, #0 bge _08047F00 adds r0, #0xff _08047F00: asrs r0, r0, #8 subs r4, r3, r0 movs r0, #0xff ands r4, r0 ldr r2, _08047F64 @ =gSineTable lsls r0, r4, #1 adds r0, r0, r2 movs r7, #0 ldrsh r1, [r0, r7] lsls r0, r3, #1 adds r0, r0, r2 movs r7, #0 ldrsh r0, [r0, r7] subs r1, r1, r0 mov r0, r8 muls r0, r1, r0 adds r1, r0, #0 ldr r0, [r6, #0x2c] adds r0, r0, r1 str r0, [r6, #0x2c] adds r0, r4, #0 adds r0, #0x40 lsls r0, r0, #1 adds r0, r0, r2 movs r4, #0 ldrsh r1, [r0, r4] adds r0, r3, #0 adds r0, #0x40 lsls r0, r0, #1 adds r0, r0, r2 movs r7, #0 ldrsh r0, [r0, r7] subs r1, r1, r0 mov r0, r8 muls r0, r1, r0 adds r1, r0, #0 ldr r0, [r6, #0x30] subs r0, r0, r1 str r0, [r6, #0x30] _08047F4E: adds r0, r5, #0 adds r0, #0x78 ldrh r1, [r0] adds r0, #2 strh r1, [r0] _08047F58: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _08047F60: .4byte gLinkEntity _08047F64: .4byte gSineTable thumb_func_start sub_08047F68 sub_08047F68: @ 0x08047F68 push {r4, r5, lr} ldr r3, _08047F98 @ =gLinkEntity movs r1, #0x2e ldrsh r2, [r3, r1] movs r4, #0x2e ldrsh r1, [r0, r4] subs r2, r2, r1 movs r4, #0x32 ldrsh r1, [r3, r4] movs r3, #0x32 ldrsh r0, [r0, r3] subs r1, r1, r0 adds r4, r2, #0 muls r4, r2, r4 adds r2, r4, #0 adds r0, r1, #0 muls r0, r1, r0 adds r4, r2, r0 movs r0, #0x80 lsls r0, r0, #3 cmp r4, r0 bne _08047F9C movs r0, #0x20 b _08048002 .align 2, 0 _08047F98: .4byte gLinkEntity _08047F9C: ldr r0, _08047FB8 @ =gUnk_080D1C04 movs r3, #0x18 adds r2, r0, #0 ldrh r0, [r2, #0x20] cmp r4, r0 bge _08047FAA movs r3, #8 _08047FAA: lsls r0, r3, #1 adds r0, r0, r2 ldrh r0, [r0] cmp r4, r0 bge _08047FBC subs r3, #4 b _08047FBE .align 2, 0 _08047FB8: .4byte gUnk_080D1C04 _08047FBC: adds r3, #4 _08047FBE: lsls r0, r3, #1 adds r0, r0, r2 ldrh r0, [r0] cmp r4, r0 bge _08047FCC subs r3, #2 b _08047FCE _08047FCC: adds r3, #2 _08047FCE: lsls r0, r3, #1 adds r0, r0, r2 ldrh r0, [r0] cmp r4, r0 bge _08047FDC subs r3, #1 b _08047FDE _08047FDC: adds r3, #1 _08047FDE: lsls r0, r3, #1 adds r0, r0, r2 ldrh r1, [r0] cmp r4, r1 bge _08048000 subs r5, r3, #1 lsls r0, r5, #1 adds r0, r0, r2 ldrh r2, [r0] subs r0, r1, r2 lsrs r1, r0, #0x1f adds r0, r0, r1 asrs r0, r0, #1 adds r2, r2, r0 cmp r4, r2 bgt _08048000 adds r3, r5, #0 _08048000: adds r0, r3, #0 _08048002: pop {r4, r5, pc} thumb_func_start sub_08048004 sub_08048004: @ 0x08048004 push {r4, r5, r6, r7, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _08048010 b _08048138 _08048010: adds r0, r4, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0 beq _0804801C b _08048130 _0804801C: ldrb r0, [r4, #0x10] movs r1, #0x7f ands r1, r0 strb r1, [r4, #0x10] ldr r6, _080480A4 @ =gLinkEntity movs r1, #0x36 ldrsh r0, [r6, r1] cmp r0, #0 beq _08048030 b _08048138 _08048030: bl sub_08079F8C cmp r0, #0 bne _0804803A b _08048138 _0804803A: adds r1, r4, #0 adds r1, #0x7c ldrb r3, [r1] movs r0, #1 ands r0, r3 adds r5, r1, #0 cmp r0, #0 beq _080480BA ldrb r0, [r4, #0x19] lsrs r0, r0, #6 cmp r0, #3 bne _080480B0 movs r7, #0x2e ldrsh r2, [r6, r7] ldr r1, _080480A8 @ =gRoomControls ldrh r0, [r1, #6] subs r2, r2, r0 asrs r2, r2, #3 movs r7, #0x32 ldrsh r0, [r6, r7] ldrh r1, [r1, #8] subs r0, r0, r1 asrs r0, r0, #3 ldr r1, _080480AC @ =gUnk_02019EE0 lsls r0, r0, #7 adds r0, r0, r2 lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] cmp r0, #0 beq _080480B0 movs r0, #2 ands r0, r3 cmp r0, #0 bne _08048086 movs r0, #0x80 orrs r0, r3 strb r0, [r5] _08048086: ldrb r1, [r5] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _08048138 adds r0, r4, #0 adds r0, #0x84 ldrh r0, [r0] strh r0, [r6, #0x2e] adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] strh r0, [r6, #0x32] b _08048138 .align 2, 0 _080480A4: .4byte gLinkEntity _080480A8: .4byte gRoomControls _080480AC: .4byte gUnk_02019EE0 _080480B0: ldrb r1, [r5] movs r0, #0x7f ands r0, r1 strb r0, [r5] b _08048138 _080480BA: ldrb r0, [r4, #0x19] lsrs r0, r0, #6 cmp r0, #3 beq _08048124 movs r0, #0x2e ldrsh r1, [r4, r0] movs r3, #0x32 ldrsh r2, [r4, r3] adds r0, r6, #0 movs r3, #0x24 bl sub_0806FCB8 cmp r0, #0 beq _08048124 ldrb r1, [r5] movs r0, #2 ands r0, r1 cmp r0, #0 bne _08048124 movs r7, #0x2e ldrsh r0, [r6, r7] movs r2, #0x2e ldrsh r1, [r4, r2] subs r0, r0, r1 movs r3, #0x32 ldrsh r1, [r6, r3] movs r7, #0x32 ldrsh r2, [r4, r7] subs r1, r1, r2 bl sub_080045DA ldr r3, _0804812C @ =gSineTable lsls r1, r0, #1 adds r1, r1, r3 movs r2, #0 ldrsh r1, [r1, r2] lsls r2, r1, #3 adds r2, r2, r1 lsls r2, r2, #0xa ldr r1, [r4, #0x2c] adds r1, r1, r2 str r1, [r6, #0x2c] adds r0, #0x40 lsls r0, r0, #1 adds r0, r0, r3 movs r3, #0 ldrsh r0, [r0, r3] lsls r1, r0, #3 adds r1, r1, r0 lsls r1, r1, #0xa ldr r0, [r4, #0x30] subs r0, r0, r1 str r0, [r6, #0x30] _08048124: movs r0, #0 strb r0, [r5] b _08048138 .align 2, 0 _0804812C: .4byte gSineTable _08048130: ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] _08048138: pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_0804813C sub_0804813C: @ 0x0804813C push {lr} bl Random adds r2, r0, #0 movs r0, #7 ands r0, r2 lsrs r2, r2, #8 movs r1, #3 ands r2, r1 movs r1, #1 bl sub_080A1ED0 pop {pc} .align 2, 0 thumb_func_start sub_08048158 sub_08048158: @ 0x08048158 push {r4, r5, r6, lr} adds r5, r0, #0 ldr r6, _08048174 @ =gUnk_080D1C44 bl Random lsls r4, r5, #1 adds r4, r4, r5 movs r1, #3 bl __modsi3 adds r4, r4, r0 adds r4, r4, r6 ldrb r0, [r4] pop {r4, r5, r6, pc} .align 2, 0 _08048174: .4byte gUnk_080D1C44 thumb_func_start sub_08048178 sub_08048178: @ 0x08048178 push {r4, lr} adds r4, r0, #0 adds r2, r1, #0 ldr r0, [r4, #0x64] ldr r0, [r0, #4] ldrb r0, [r0, #0x14] lsrs r0, r0, #6 movs r1, #1 ands r0, r1 cmp r0, #0 beq _08048198 lsls r1, r2, #1 ldr r0, _08048194 @ =gUnk_080D1C60 b _0804819C .align 2, 0 _08048194: .4byte gUnk_080D1C60 _08048198: lsls r1, r2, #1 ldr r0, _080481B8 @ =gUnk_080D1C50 _0804819C: adds r3, r1, r0 ldr r2, _080481BC @ =gRoomControls ldrh r0, [r2, #6] ldrh r1, [r3] adds r0, r0, r1 adds r1, r4, #0 adds r1, #0x80 strh r0, [r1] ldrh r0, [r2, #8] ldrh r3, [r3, #2] adds r0, r0, r3 adds r1, #2 strh r0, [r1] pop {r4, pc} .align 2, 0 _080481B8: .4byte gUnk_080D1C50 _080481BC: .4byte gRoomControls