.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start Object10 Object10: @ 0x08084824 push {lr} ldr r2, _08084838 @ =gUnk_08120560 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08084838: .4byte gUnk_08120560 thumb_func_start sub_0808483C sub_0808483C: @ 0x0808483C push {r4, r5, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x19] movs r0, #0x3f ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x19] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2] ldrh r2, [r4, #0x2e] movs r1, #0x10 rsbs r1, r1, #0 adds r0, r1, #0 ands r0, r2 movs r2, #8 orrs r0, r2 strh r0, [r4, #0x2e] ldrh r0, [r4, #0x32] ands r1, r0 orrs r1, r2 strh r1, [r4, #0x32] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _080848C0 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r5, #0x32 ldrsh r0, [r4, r5] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r5, r4, #0 adds r5, #0x74 strh r1, [r5] adds r0, r4, #0 movs r1, #8 bl InitializeAnimation ldr r0, _080848C4 @ =0x00004016 ldrh r1, [r5] adds r4, #0x38 ldrb r2, [r4] bl SetTile movs r0, #0x89 lsls r0, r0, #1 bl PlaySFX pop {r4, r5, pc} .align 2, 0 _080848C0: .4byte gRoomControls _080848C4: .4byte 0x00004016 thumb_func_start sub_080848C8 sub_080848C8: @ 0x080848C8 push {r4, r5, lr} adds r4, r0, #0 ldr r0, _08084980 @ =gPlayerState adds r0, #0xa0 ldrb r0, [r0] cmp r0, #5 bne _08084994 ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 adds r0, #0x45 movs r5, #1 strb r5, [r0] movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x11] subs r0, #0x12 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r4, #0x11] ldr r0, _08084984 @ =gUnk_08120574 str r0, [r4, #0x48] ldrb r1, [r4, #0xa] adds r1, #1 lsls r0, r1, #4 subs r0, r0, r1 strb r0, [r4, #0xf] ldr r2, _08084988 @ =gPlayerEntity ldrh r0, [r4, #0x2e] ldrh r1, [r2, #0x2e] subs r0, r0, r1 adds r3, r4, #0 adds r3, #0x78 strh r0, [r3] ldrh r1, [r4, #0x32] ldrh r0, [r2, #0x32] subs r1, r1, r0 adds r0, r4, #0 adds r0, #0x7a strh r1, [r0] ldrh r0, [r3] cmp r0, #0 beq _0808493C lsls r0, r1, #0x10 cmp r0, #0 beq _0808493C ldr r0, _0808498C @ =gUnk_03004040 ldrb r1, [r4, #0xa] lsls r1, r1, #2 adds r1, r1, r0 ldr r0, [r1] str r5, [r0, #0x70] _0808493C: ldr r0, _08084990 @ =0x00000315 adds r1, r4, #0 adds r1, #0x74 ldrh r1, [r1] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl sub_08000152 ldrb r1, [r4, #0xa] adds r1, #1 ldr r0, _08084980 @ =gPlayerState ldr r0, [r0, #0x2c] adds r0, #0x68 ldrb r3, [r0] movs r0, #1 movs r2, #0 bl sub_08077CF8 str r0, [r4, #0x54] cmp r0, #0 beq _0808496A str r4, [r0, #0x50] _0808496A: adds r0, r4, #0 bl sub_0801766C adds r0, r4, #0 bl sub_0806FDA0 adds r0, r4, #0 bl sub_080849D8 b _080849D6 .align 2, 0 _08084980: .4byte gPlayerState _08084984: .4byte gUnk_08120574 _08084988: .4byte gPlayerEntity _0808498C: .4byte gUnk_03004040 _08084990: .4byte 0x00000315 _08084994: cmp r0, #4 beq _080849C4 ldr r0, _080849BC @ =0x00000315 adds r1, r4, #0 adds r1, #0x74 ldrh r1, [r1] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl sub_08000152 ldr r1, _080849C0 @ =gUnk_03004040 ldrb r0, [r4, #0xa] lsls r0, r0, #2 adds r0, r0, r1 movs r1, #0 str r1, [r0] bl DeleteThisEntity b _080849D6 .align 2, 0 _080849BC: .4byte 0x00000315 _080849C0: .4byte gUnk_03004040 _080849C4: ldrb r2, [r4, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #1 eors r1, r0 subs r0, #5 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] _080849D6: pop {r4, r5, pc} thumb_func_start sub_080849D8 sub_080849D8: @ 0x080849D8 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xf] adds r1, r0, #0 cmp r1, #1 bne _080849EE movs r0, #0x76 bl PlaySFX ldrb r0, [r4, #0xf] b _080849F2 _080849EE: cmp r1, #0 beq _080849F6 _080849F2: subs r0, #1 strb r0, [r4, #0xf] _080849F6: ldr r2, _08084A3C @ =gPlayerState adds r3, r2, #0 adds r3, #0xa0 ldrb r0, [r3] cmp r0, #5 beq _08084A04 b _08084AF8 _08084A04: ldr r0, _08084A40 @ =gUnk_03004040 ldrb r1, [r4, #0xa] lsls r1, r1, #2 adds r1, r1, r0 ldr r0, [r1] cmp r0, #0 beq _08084AF8 adds r0, r2, #0 adds r0, #0xa8 ldrb r0, [r0] cmp r0, #0x13 beq _08084AF8 adds r0, r4, #0 adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 beq _08084AF8 ldr r5, _08084A44 @ =gPlayerEntity adds r0, r5, #0 adds r0, #0x3d ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 cmp r0, #0 ble _08084A48 movs r0, #1 strb r0, [r3] b _08084AF8 .align 2, 0 _08084A3C: .4byte gPlayerState _08084A40: .4byte gUnk_03004040 _08084A44: .4byte gPlayerEntity _08084A48: adds r0, r4, #0 bl sub_080002B8 adds r0, r4, #0 bl sub_08084B1C adds r0, r4, #0 adds r0, #0x78 ldrh r0, [r0] ldrh r1, [r5, #0x2e] adds r0, r0, r1 strh r0, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x7a ldrh r0, [r0] ldrh r5, [r5, #0x32] adds r0, r0, r5 strh r0, [r4, #0x32] adds r0, r4, #0 bl sub_08084CAC adds r0, r4, #0 bl sub_080085B0 ldrh r2, [r4, #0x2a] ldr r1, _08084AB8 @ =0x00006666 adds r0, r1, #0 ands r0, r2 cmp r0, r1 beq _08084AEA movs r3, #0 ldr r5, _08084ABC @ =gUnk_0812056C ldrh r1, [r5] adds r0, r1, #0 ands r0, r2 cmp r1, r0 beq _08084AA6 adds r2, r5, #0 _08084A94: adds r2, #2 adds r3, #1 cmp r3, #3 bhi _08084AA6 ldrh r1, [r2] ldrh r0, [r4, #0x2a] ands r0, r1 cmp r1, r0 bne _08084A94 _08084AA6: cmp r3, #4 bne _08084AC0 movs r0, #0 strb r0, [r4, #0xe] ldrb r1, [r4, #0x18] subs r0, #4 ands r0, r1 movs r1, #1 b _08084ADE .align 2, 0 _08084AB8: .4byte 0x00006666 _08084ABC: .4byte gUnk_0812056C _08084AC0: ldrb r0, [r4, #0xe] cmp r0, #0 beq _08084AE4 subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 beq _08084AEA ldrb r2, [r4, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #1 eors r1, r0 subs r0, #5 ands r0, r2 _08084ADE: orrs r0, r1 strb r0, [r4, #0x18] b _08084B16 _08084AE4: movs r0, #0x1e strb r0, [r4, #0xe] b _08084B16 _08084AEA: ldr r0, _08084AF4 @ =gPlayerState adds r0, #0xa0 movs r1, #1 strb r1, [r0] b _08084B16 .align 2, 0 _08084AF4: .4byte gPlayerState _08084AF8: bl sub_0807A108 adds r0, r4, #0 movs r1, #0x30 movs r2, #0 bl CreateFx ldr r0, [r4, #0x54] bl DeleteEntity ldr r0, _08084B18 @ =0x0000018F bl PlaySFX bl DeleteThisEntity _08084B16: pop {r4, r5, pc} .align 2, 0 _08084B18: .4byte 0x0000018F thumb_func_start sub_08084B1C sub_08084B1C: @ 0x08084B1C push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} adds r4, r0, #0 ldr r3, _08084CA4 @ =gPlayerEntity ldrb r0, [r3, #0x10] strb r0, [r4, #0x10] adds r0, r3, #0 adds r0, #0x60 ldrh r1, [r0] adds r0, r4, #0 adds r0, #0x60 strh r1, [r0] ldrb r0, [r3, #0x1e] strb r0, [r4, #0x1e] adds r0, r3, #0 adds r0, #0x5b ldrb r0, [r0] adds r1, r4, #0 adds r1, #0x5b strb r0, [r1] ldrh r0, [r3, #0x12] strh r0, [r4, #0x12] ldrb r0, [r3, #0x15] strb r0, [r4, #0x15] ldrb r0, [r3, #0x14] strb r0, [r4, #0x14] ldrb r0, [r3, #0x18] movs r1, #1 mov r8, r1 movs r1, #0x40 ands r1, r0 ldrb r2, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 mov sb, r0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] ldrb r1, [r3, #0x19] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r4, #0x19] movs r7, #0x3f adds r0, r7, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r3, #0 adds r0, #0x29 ldrb r1, [r0] lsls r1, r1, #0x1d movs r0, #0x29 adds r0, r0, r4 mov ip, r0 movs r6, #7 lsrs r1, r1, #0x1d ldrb r2, [r0] movs r0, #8 rsbs r0, r0, #0 mov sl, r0 ands r0, r2 orrs r0, r1 mov r1, ip strb r0, [r1] ldrb r1, [r3, #0x1b] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r4, #0x1b] adds r0, r7, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x1b] adds r0, r3, #0 adds r0, #0x38 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] adds r0, r3, #0 adds r0, #0x3b ldrb r0, [r0] adds r1, r4, #0 adds r1, #0x3b strb r0, [r1] adds r0, r3, #0 adds r0, #0x3f ldrb r0, [r0] adds r1, #4 strb r0, [r1] adds r0, r3, #0 adds r0, #0x3c ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x3c strb r1, [r0] adds r0, r3, #0 adds r0, #0x40 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x40 strb r1, [r0] ldr r1, [r4, #0x54] adds r0, r4, #0 bl CopyPosition ldr r5, _08084CA8 @ =gPlayerState ldrb r0, [r5, #4] cmp r0, #0 beq _08084C6A ldr r1, [r4, #0x54] ldr r0, [r5, #0x2c] adds r0, #0x44 ldrb r0, [r0] adds r1, #0x44 strb r0, [r1] ldr r1, [r4, #0x54] ldr r0, [r5, #0x2c] ldrb r0, [r0, #0x1e] strb r0, [r1, #0x1e] ldr r3, [r4, #0x54] ldr r0, [r5, #0x2c] ldrb r1, [r0, #0x18] lsls r1, r1, #0x19 lsrs r1, r1, #0x1f mov r0, r8 ands r1, r0 lsls r1, r1, #6 ldrb r2, [r3, #0x18] mov r0, sb ands r0, r2 orrs r0, r1 strb r0, [r3, #0x18] ldr r3, [r4, #0x54] ldr r0, [r5, #0x2c] ldrb r1, [r0, #0x19] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r3, #0x19] adds r0, r7, #0 ands r0, r2 orrs r0, r1 strb r0, [r3, #0x19] ldr r2, [r4, #0x54] ldr r0, [r5, #0x2c] adds r0, #0x29 ldrb r0, [r0] lsls r0, r0, #0x1d lsrs r0, r0, #0x1d adds r2, #0x29 ands r6, r0 ldrb r1, [r2] mov r0, sl ands r0, r1 orrs r0, r6 strb r0, [r2] ldr r1, [r4, #0x54] ldrb r0, [r1, #0x18] lsls r0, r0, #0x19 cmp r0, #0 bge _08084C6A ldr r1, [r1, #0x48] ldrb r0, [r1] rsbs r0, r0, #0 strb r0, [r1] _08084C6A: adds r0, r4, #0 movs r1, #0 movs r2, #0 bl sub_0806FEBC adds r0, r4, #0 movs r1, #1 movs r2, #0 bl sub_0806FEBC adds r0, r4, #0 movs r1, #2 adds r2, r4, #0 bl sub_0806FEBC adds r0, r4, #0 movs r1, #3 movs r2, #0 bl sub_0806FEBC ldr r0, [r4, #0x54] adds r1, r4, #0 bl sub_08078E84 pop {r3, r4, r5} mov r8, r3 mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7, pc} .align 2, 0 _08084CA4: .4byte gPlayerEntity _08084CA8: .4byte gPlayerState thumb_func_start sub_08084CAC sub_08084CAC: @ 0x08084CAC push {r4, r5, r6, r7, lr} adds r5, r0, #0 ldr r6, _08084D18 @ =gUnk_03004040 ldrb r0, [r5, #0xa] lsls r0, r0, #2 adds r0, r0, r6 ldr r0, [r0] ldr r0, [r0, #0x70] cmp r0, #0 bne _08084D32 ldrb r0, [r5, #0x14] movs r2, #6 ands r2, r0 lsls r2, r2, #1 ldr r0, _08084D1C @ =gUnk_080B4468 adds r2, r2, r0 movs r1, #0x2e ldrsh r0, [r5, r1] movs r3, #0 ldrsh r1, [r2, r3] adds r0, r0, r1 ldr r4, _08084D20 @ =gRoomControls ldrh r1, [r4, #6] subs r0, r0, r1 asrs r0, r0, #4 movs r3, #0x3f ands r0, r3 movs r7, #0x32 ldrsh r1, [r5, r7] movs r7, #2 ldrsh r2, [r2, r7] adds r1, r1, r2 ldrh r2, [r4, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r3 lsls r1, r1, #6 orrs r0, r1 adds r1, r5, #0 adds r1, #0x38 ldrb r1, [r1] bl GetTileType bl sub_080002E4 cmp r0, #0x72 bne _08084D24 ldr r2, [r6] movs r1, #1 ldrb r5, [r5, #0xa] lsls r1, r5 ldr r0, [r2, #0x6c] orrs r0, r1 b _08084D30 .align 2, 0 _08084D18: .4byte gUnk_03004040 _08084D1C: .4byte gUnk_080B4468 _08084D20: .4byte gRoomControls _08084D24: ldr r2, [r6] movs r1, #1 ldrb r5, [r5, #0xa] lsls r1, r5 ldr r0, [r2, #0x6c] bics r0, r1 _08084D30: str r0, [r2, #0x6c] _08084D32: pop {r4, r5, r6, r7, pc}