.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_0805A280 sub_0805A280: @ 0x0805A280 push {lr} ldr r2, _0805A294 @ =gUnk_081085D8 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0805A294: .4byte gUnk_081085D8 thumb_func_start sub_0805A298 sub_0805A298: @ 0x0805A298 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0805A2D6 adds r0, r4, #0 bl sub_0805A89C ldrh r0, [r4, #0x3e] bl CheckLocalFlag cmp r0, #0 bne _0805A2BA adds r1, r4, #0 adds r1, #0x23 movs r0, #1 b _0805A2C0 _0805A2BA: adds r1, r4, #0 adds r1, #0x23 movs r0, #2 _0805A2C0: strb r0, [r1] ldrb r0, [r1] bl sub_0805AAF0 ldr r2, _0805A2E0 @ =gScreen ldrh r1, [r2] movs r3, #0x90 lsls r3, r3, #7 adds r0, r3, #0 orrs r0, r1 strh r0, [r2] _0805A2D6: adds r0, r4, #0 bl sub_0805A8EC pop {r4, pc} .align 2, 0 _0805A2E0: .4byte gScreen thumb_func_start sub_0805A2E4 sub_0805A2E4: @ 0x0805A2E4 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0805A34C adds r0, r4, #0 bl sub_0805A89C adds r0, r4, #0 adds r0, #0x23 movs r5, #1 strb r5, [r0] movs r0, #1 bl sub_0805AAF0 ldrh r0, [r4, #0x3e] bl CheckLocalFlag cmp r0, #0 bne _0805A324 strb r5, [r4, #0xc] ldr r2, _0805A31C @ =gScreen ldrh r1, [r2] ldr r0, _0805A320 @ =0x0000B7FF ands r0, r1 strh r0, [r2] b _0805A35C .align 2, 0 _0805A31C: .4byte gScreen _0805A320: .4byte 0x0000B7FF _0805A324: movs r0, #0x48 bl CheckLocalFlag cmp r0, #0 beq _0805A332 movs r0, #4 b _0805A334 _0805A332: movs r0, #3 _0805A334: strb r0, [r4, #0xc] ldr r2, _0805A348 @ =gScreen ldrh r1, [r2] movs r3, #0x90 lsls r3, r3, #7 adds r0, r3, #0 orrs r0, r1 strh r0, [r2] b _0805A35C .align 2, 0 _0805A348: .4byte gScreen _0805A34C: ldr r0, _0805A36C @ =gUnk_081085F8 ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 _0805A35C: ldr r0, [r4, #4] cmp r0, #0 beq _0805A368 adds r0, r4, #0 bl sub_0805A8EC _0805A368: pop {r4, r5, pc} .align 2, 0 _0805A36C: .4byte gUnk_081085F8 thumb_func_start sub_0805A370 sub_0805A370: @ 0x0805A370 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xd] cmp r0, #0 beq _0805A38A ldr r0, _0805A38C @ =gUnk_080E4C08 bl LoadRoomEntityList movs r0, #3 strb r0, [r4, #0xc] ldr r0, _0805A390 @ =0x80100000 bl PlaySFX _0805A38A: pop {r4, pc} .align 2, 0 _0805A38C: .4byte gUnk_080E4C08 _0805A390: .4byte 0x80100000 thumb_func_start sub_0805A394 sub_0805A394: @ 0x0805A394 push {lr} movs r0, #3 movs r1, #0x13 movs r2, #4 bl sub_0805EB00 cmp r0, #0 beq _0805A3AA ldrb r0, [r0, #0xa] cmp r0, #4 bne _0805A3C4 _0805A3AA: movs r0, #0x48 bl SetLocalFlag movs r0, #0 bl ClearRoomFlag ldr r2, _0805A3C8 @ =gScreen ldrh r1, [r2] ldr r0, _0805A3CC @ =0x0000B7FF ands r0, r1 strh r0, [r2] bl DeleteThisEntity _0805A3C4: pop {pc} .align 2, 0 _0805A3C8: .4byte gScreen _0805A3CC: .4byte 0x0000B7FF thumb_func_start nullsub_496 nullsub_496: @ 0x0805A3D0 bx lr .align 2, 0 thumb_func_start sub_0805A3D4 sub_0805A3D4: @ 0x0805A3D4 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0805A448 adds r0, r4, #0 bl sub_0805A89C ldrb r0, [r4, #0xa] cmp r0, #3 bne _0805A3F2 adds r1, r4, #0 adds r1, #0x23 movs r0, #2 b _0805A3F8 _0805A3F2: adds r1, r4, #0 adds r1, #0x23 movs r0, #1 _0805A3F8: strb r0, [r1] ldrb r0, [r1] bl sub_0805AAF0 ldrh r0, [r4, #0x3e] bl CheckLocalFlag cmp r0, #0 bne _0805A428 ldrh r0, [r4, #0x3c] bl ClearFlag movs r0, #1 strb r0, [r4, #0xc] ldr r2, _0805A420 @ =gScreen ldrh r1, [r2] ldr r0, _0805A424 @ =0x0000B7FF ands r0, r1 strh r0, [r2] b _0805A458 .align 2, 0 _0805A420: .4byte gScreen _0805A424: .4byte 0x0000B7FF _0805A428: ldrh r0, [r4, #0x3c] bl SetFlag movs r0, #3 strb r0, [r4, #0xc] ldr r2, _0805A444 @ =gScreen ldrh r1, [r2] movs r3, #0x90 lsls r3, r3, #7 adds r0, r3, #0 orrs r0, r1 strh r0, [r2] b _0805A458 .align 2, 0 _0805A444: .4byte gScreen _0805A448: ldr r0, _0805A460 @ =gUnk_0810860C ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 _0805A458: adds r0, r4, #0 bl sub_0805A8EC pop {r4, pc} .align 2, 0 _0805A460: .4byte gUnk_0810860C thumb_func_start sub_0805A464 sub_0805A464: @ 0x0805A464 push {r4, lr} adds r4, r0, #0 ldrh r0, [r4, #0x3e] bl CheckLocalFlag cmp r0, #0 beq _0805A47E movs r0, #2 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #0 bl sub_0805A4CC _0805A47E: pop {r4, pc} thumb_func_start sub_0805A480 sub_0805A480: @ 0x0805A480 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xd] cmp r0, #0 beq _0805A494 movs r0, #3 strb r0, [r1, #0xc] ldrh r0, [r1, #0x3c] bl SetFlag _0805A494: pop {pc} .align 2, 0 thumb_func_start sub_0805A498 sub_0805A498: @ 0x0805A498 push {r4, lr} adds r4, r0, #0 ldrh r0, [r4, #0x3e] bl CheckLocalFlag cmp r0, #0 bne _0805A4B2 movs r0, #4 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #1 bl sub_0805A4CC _0805A4B2: pop {r4, pc} thumb_func_start sub_0805A4B4 sub_0805A4B4: @ 0x0805A4B4 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xd] cmp r0, #0 beq _0805A4C8 movs r0, #1 strb r0, [r1, #0xc] ldrh r0, [r1, #0x3c] bl ClearFlag _0805A4C8: pop {pc} .align 2, 0 thumb_func_start sub_0805A4CC sub_0805A4CC: @ 0x0805A4CC push {r4, lr} adds r4, r0, #0 movs r0, #0x8e movs r2, #0 bl CreateObject adds r3, r0, #0 cmp r3, #0 beq _0805A4F8 ldr r1, _0805A4FC @ =gRoomControls ldrh r0, [r1, #6] ldrh r2, [r4, #0x38] adds r0, r0, r2 movs r2, #0 strh r0, [r3, #0x2e] ldrh r0, [r1, #8] ldrh r1, [r4, #0x3a] adds r0, r0, r1 subs r0, #0x30 strh r0, [r3, #0x32] str r4, [r3, #0x50] strb r2, [r4, #0xd] _0805A4F8: pop {r4, pc} .align 2, 0 _0805A4FC: .4byte gRoomControls thumb_func_start sub_0805A500 sub_0805A500: @ 0x0805A500 push {r4, r5, lr} adds r4, r0, #0 ldrb r5, [r4, #0xc] cmp r5, #0 bne _0805A588 bl sub_0805A89C str r5, [r4, #0x28] movs r0, #0x36 bl CheckLocalFlag cmp r0, #0 beq _0805A538 adds r3, r4, #0 adds r3, #0x23 movs r0, #3 strb r0, [r3] movs r0, #5 strb r0, [r4, #0xc] ldr r2, _0805A534 @ =gScreen ldrh r1, [r2] movs r5, #0x90 lsls r5, r5, #7 adds r0, r5, #0 orrs r0, r1 b _0805A574 .align 2, 0 _0805A534: .4byte gScreen _0805A538: movs r0, #0x34 bl CheckLocalFlag cmp r0, #0 beq _0805A560 adds r3, r4, #0 adds r3, #0x23 movs r0, #4 strb r0, [r3] movs r0, #3 strb r0, [r4, #0xc] ldr r2, _0805A55C @ =gScreen ldrh r1, [r2] movs r5, #0x90 lsls r5, r5, #7 adds r0, r5, #0 orrs r0, r1 b _0805A574 .align 2, 0 _0805A55C: .4byte gScreen _0805A560: adds r3, r4, #0 adds r3, #0x23 movs r0, #4 strb r0, [r3] movs r0, #1 strb r0, [r4, #0xc] ldr r2, _0805A580 @ =gScreen ldrh r1, [r2] ldr r0, _0805A584 @ =0x0000B7FF ands r0, r1 _0805A574: strh r0, [r2] ldrb r0, [r3] bl sub_0805AAF0 b _0805A598 .align 2, 0 _0805A580: .4byte gScreen _0805A584: .4byte 0x0000B7FF _0805A588: ldr r0, _0805A5C0 @ =gUnk_08108620 ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 _0805A598: adds r0, r4, #0 bl sub_0805AA58 adds r0, r4, #0 bl sub_0805A9CC ldr r1, _0805A5C4 @ =gRoomControls ldrh r3, [r1] cmp r3, #1 bne _0805A5CC ldr r2, _0805A5C8 @ =gScreen ldrh r1, [r2] movs r5, #0x80 lsls r5, r5, #7 adds r0, r5, #0 orrs r0, r1 strh r0, [r2] strb r3, [r4, #0xd] b _0805A5F0 .align 2, 0 _0805A5C0: .4byte gUnk_08108620 _0805A5C4: .4byte gRoomControls _0805A5C8: .4byte gScreen _0805A5CC: ldrb r0, [r4, #0xd] cmp r0, #0 beq _0805A5F0 movs r0, #0 strb r0, [r4, #0xd] adds r0, r4, #0 adds r0, #0x20 ldrb r0, [r0] ldrb r1, [r1, #5] cmp r0, r1 beq _0805A5F0 ldr r2, _0805A5F4 @ =gScreen ldrh r1, [r2] ldr r0, _0805A5F8 @ =0x0000B7FF ands r0, r1 strh r0, [r2] bl DeleteThisEntity _0805A5F0: pop {r4, r5, pc} .align 2, 0 _0805A5F4: .4byte gScreen _0805A5F8: .4byte 0x0000B7FF thumb_func_start sub_0805A5FC sub_0805A5FC: @ 0x0805A5FC push {r4, lr} adds r4, r0, #0 movs r0, #0x34 bl CheckLocalFlag cmp r0, #0 beq _0805A616 movs r0, #2 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #2 bl sub_0805A4CC _0805A616: pop {r4, pc} thumb_func_start sub_0805A618 sub_0805A618: @ 0x0805A618 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xd] cmp r0, #0 beq _0805A626 movs r0, #3 strb r0, [r1, #0xc] _0805A626: pop {pc} thumb_func_start sub_0805A628 sub_0805A628: @ 0x0805A628 push {r4, lr} adds r4, r0, #0 movs r0, #0x36 bl CheckLocalFlag cmp r0, #0 beq _0805A64A movs r0, #4 strb r0, [r4, #0xc] adds r1, r4, #0 adds r1, #0x23 movs r0, #3 strb r0, [r1] adds r0, r4, #0 movs r1, #3 bl sub_0805A4CC _0805A64A: pop {r4, pc} thumb_func_start sub_0805A64C sub_0805A64C: @ 0x0805A64C push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xd] cmp r0, #0 beq _0805A65A movs r0, #5 strb r0, [r1, #0xc] _0805A65A: pop {pc} thumb_func_start sub_0805A65C sub_0805A65C: @ 0x0805A65C bx lr .align 2, 0 thumb_func_start sub_0805A660 sub_0805A660: @ 0x0805A660 bx lr .align 2, 0 thumb_func_start sub_0805A664 sub_0805A664: @ 0x0805A664 push {r4, lr} adds r4, r0, #0 ldr r1, _0805A688 @ =gUnk_08108638 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_0805A8EC adds r0, r4, #0 bl sub_0805A68C pop {r4, pc} .align 2, 0 _0805A688: .4byte gUnk_08108638 thumb_func_start sub_0805A68C sub_0805A68C: @ 0x0805A68C push {r4, lr} adds r4, r0, #0 movs r1, #0x38 ldrsh r0, [r4, r1] subs r0, #0x18 movs r2, #0x3a ldrsh r1, [r4, r2] subs r1, #0x18 movs r2, #0x30 movs r3, #0x30 bl sub_0806FBFC cmp r0, #0 beq _0805A6CC ldrh r1, [r4, #0x2c] ldr r0, _0805A6C4 @ =0x00001007 cmp r1, r0 bhi _0805A6E2 ldr r0, _0805A6C8 @ =gScreen adds r1, #1 movs r2, #0 strh r1, [r4, #0x2c] adds r0, #0x68 strh r1, [r0] adds r0, r4, #0 adds r0, #0x22 strb r2, [r0] b _0805A6E2 .align 2, 0 _0805A6C4: .4byte 0x00001007 _0805A6C8: .4byte gScreen _0805A6CC: ldrh r1, [r4, #0x2c] movs r0, #0x80 lsls r0, r0, #5 cmp r1, r0 bls _0805A6DA subs r0, r1, #1 strh r0, [r4, #0x2c] _0805A6DA: ldr r0, _0805A6E4 @ =gScreen ldrh r1, [r4, #0x2c] adds r0, #0x68 strh r1, [r0] _0805A6E2: pop {r4, pc} .align 2, 0 _0805A6E4: .4byte gScreen thumb_func_start sub_0805A6E8 sub_0805A6E8: @ 0x0805A6E8 push {r4, lr} adds r4, r0, #0 bl sub_0805A89C adds r1, r4, #0 adds r1, #0x23 movs r0, #0 strb r0, [r1] bl sub_0805AAF0 ldr r1, _0805A734 @ =gRoomControls ldrh r0, [r1, #6] ldrh r2, [r4, #0x38] adds r0, r0, r2 strh r0, [r4, #0x38] ldrh r0, [r1, #8] ldrh r3, [r4, #0x3a] adds r0, r0, r3 strh r0, [r4, #0x3a] adds r0, r4, #0 bl sub_0805A73C cmp r0, #0 bne _0805A71E ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] _0805A71E: movs r0, #0x80 lsls r0, r0, #5 strh r0, [r4, #0x2c] ldr r2, _0805A738 @ =gScreen ldrh r1, [r2] movs r3, #0x90 lsls r3, r3, #7 adds r0, r3, #0 orrs r0, r1 strh r0, [r2] pop {r4, pc} .align 2, 0 _0805A734: .4byte gRoomControls _0805A738: .4byte gScreen thumb_func_start sub_0805A73C sub_0805A73C: @ 0x0805A73C push {lr} adds r1, r0, #0 movs r2, #0x38 ldrsh r0, [r1, r2] subs r0, #6 movs r2, #0x3a ldrsh r1, [r1, r2] subs r1, #6 movs r2, #0xc movs r3, #0xc bl sub_0806FBFC pop {pc} .align 2, 0 thumb_func_start sub_0805A758 sub_0805A758: @ 0x0805A758 push {r4, lr} adds r4, r0, #0 bl sub_0805A73C cmp r0, #0 bne _0805A76A ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] _0805A76A: pop {r4, pc} thumb_func_start sub_0805A76C sub_0805A76C: @ 0x0805A76C push {r4, r5, r6, lr} adds r4, r0, #0 ldr r5, _0805A7D4 @ =gLinkEntity adds r0, r5, #0 adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 beq _0805A7D0 movs r1, #0x36 ldrsh r0, [r5, r1] cmp r0, #0 bne _0805A7D0 ldr r0, _0805A7D8 @ =gLinkState ldr r6, [r0, #0x2c] cmp r6, #0 bne _0805A7D0 adds r0, #0xa9 ldrb r0, [r0] cmp r0, #1 bgt _0805A7D0 cmp r0, #0 blt _0805A7D0 adds r0, r4, #0 bl sub_0805A73C cmp r0, #0 beq _0805A7D0 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] adds r0, r5, #0 bl sub_08004168 movs r0, #4 strb r0, [r5, #0x14] movs r1, #0x96 lsls r1, r1, #2 adds r0, r4, #0 bl sub_0805E4E0 movs r0, #0xff bl sub_08078A90 ldr r1, _0805A7DC @ =gUnk_02034490 movs r0, #1 strb r0, [r1] ldr r0, _0805A7E0 @ =gRoomControls str r6, [r0, #0x30] bl sub_08077B20 _0805A7D0: pop {r4, r5, r6, pc} .align 2, 0 _0805A7D4: .4byte gLinkEntity _0805A7D8: .4byte gLinkState _0805A7DC: .4byte gUnk_02034490 _0805A7E0: .4byte gRoomControls thumb_func_start sub_0805A7E4 sub_0805A7E4: @ 0x0805A7E4 push {lr} ldr r2, _0805A800 @ =gLinkState ldrb r0, [r2, #0xc] cmp r0, #0x12 beq _0805A7FE movs r1, #0 movs r0, #0x12 strb r0, [r2, #0xc] adds r0, r2, #0 adds r0, #0x38 strb r1, [r0] adds r0, #1 strb r1, [r0] _0805A7FE: pop {pc} .align 2, 0 _0805A800: .4byte gLinkState thumb_func_start sub_0805A804 sub_0805A804: @ 0x0805A804 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #4 bhi _0805A896 lsls r0, r0, #2 ldr r1, _0805A818 @ =_0805A81C adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0805A818: .4byte _0805A81C _0805A81C: @ jump table .4byte _0805A830 @ case 0 .4byte _0805A858 @ case 1 .4byte _0805A866 @ case 2 .4byte _0805A872 @ case 3 .4byte _0805A88A @ case 4 _0805A830: ldrh r0, [r4, #0x3e] bl CheckLocalFlag cmp r0, #0 beq _0805A83E movs r0, #1 b _0805A840 _0805A83E: movs r0, #2 _0805A840: strb r0, [r4, #0xc] movs r0, #1 strb r0, [r4, #0xd] ldrb r1, [r4, #0x10] movs r0, #0x20 orrs r0, r1 strb r0, [r4, #0x10] adds r0, r4, #0 movs r1, #6 bl sub_0805E3A0 b _0805A89A _0805A858: ldrh r0, [r4, #0x3e] bl CheckLocalFlag cmp r0, #0 bne _0805A89A movs r0, #2 b _0805A87E _0805A866: ldrb r0, [r4, #0xd] cmp r0, #0 beq _0805A89A movs r0, #3 strb r0, [r4, #0xc] b _0805A89A _0805A872: ldrh r0, [r4, #0x3e] bl CheckLocalFlag cmp r0, #0 beq _0805A89A movs r0, #4 _0805A87E: strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #4 bl sub_0805A4CC b _0805A89A _0805A88A: ldrb r0, [r4, #0xd] cmp r0, #0 beq _0805A89A movs r0, #1 strb r0, [r4, #0xc] b _0805A89A _0805A896: bl DeleteThisEntity _0805A89A: pop {r4, pc} thumb_func_start sub_0805A89C sub_0805A89C: @ 0x0805A89C push {r4, lr} adds r4, r0, #0 movs r1, #6 bl sub_0805E3A0 movs r2, #0 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x20 orrs r0, r1 strb r0, [r4, #0x10] movs r0, #8 strb r0, [r4, #0xe] movs r0, #0x10 strb r0, [r4, #0xf] adds r0, r4, #0 adds r0, #0x21 strb r2, [r0] adds r0, #1 strb r2, [r0] ldr r1, _0805A8E4 @ =gRoomControls ldrb r2, [r1, #5] subs r0, #2 strb r2, [r0] ldrh r0, [r1, #6] strh r0, [r4, #0x24] ldrh r0, [r1, #8] strh r0, [r4, #0x26] ldr r1, _0805A8E8 @ =sub_0805AAC8 adds r0, r4, #0 movs r2, #0 bl sub_08052D74 pop {r4, pc} .align 2, 0 _0805A8E4: .4byte gRoomControls _0805A8E8: .4byte sub_0805AAC8 thumb_func_start sub_0805A8EC sub_0805A8EC: @ 0x0805A8EC push {r4, r5, lr} adds r4, r0, #0 bl sub_0805AA58 adds r0, r4, #0 bl sub_0805A94C ldr r1, _0805A914 @ =gRoomControls ldrh r3, [r1] cmp r3, #1 bne _0805A91C ldr r2, _0805A918 @ =gScreen ldrh r1, [r2] movs r5, #0x80 lsls r5, r5, #7 adds r0, r5, #0 orrs r0, r1 strh r0, [r2] strb r3, [r4, #0xd] b _0805A940 .align 2, 0 _0805A914: .4byte gRoomControls _0805A918: .4byte gScreen _0805A91C: ldrb r0, [r4, #0xd] cmp r0, #0 beq _0805A940 movs r0, #0 strb r0, [r4, #0xd] adds r0, r4, #0 adds r0, #0x20 ldrb r0, [r0] ldrb r1, [r1, #5] cmp r0, r1 beq _0805A940 ldr r2, _0805A944 @ =gScreen ldrh r1, [r2] ldr r0, _0805A948 @ =0x0000B7FF ands r0, r1 strh r0, [r2] bl DeleteThisEntity _0805A940: pop {r4, r5, pc} .align 2, 0 _0805A944: .4byte gScreen _0805A948: .4byte 0x0000B7FF thumb_func_start sub_0805A94C sub_0805A94C: @ 0x0805A94C push {r4, lr} ldr r4, _0805A9C4 @ =gScreen ldr r3, _0805A9C8 @ =gRoomControls ldrh r1, [r3, #0xa] ldrh r2, [r0, #0x24] subs r1, r1, r2 ldrh r2, [r0, #0x34] adds r1, r1, r2 strh r1, [r4, #0x2e] ldrh r1, [r3, #0xc] ldrh r2, [r0, #0x26] subs r1, r1, r2 ldrh r0, [r0, #0x36] adds r1, r1, r0 strh r1, [r4, #0x30] movs r1, #0x2e ldrsh r0, [r4, r1] rsbs r0, r0, #0 movs r2, #0x80 lsls r2, r2, #1 adds r1, r0, r2 cmp r0, #0 bge _0805A97C movs r0, #0 _0805A97C: cmp r0, #0xf0 ble _0805A982 movs r0, #0xf0 _0805A982: cmp r1, #0 bge _0805A988 movs r1, #0 _0805A988: cmp r1, #0xf0 ble _0805A98E movs r1, #0xf0 _0805A98E: lsls r0, r0, #8 orrs r0, r1 adds r1, r4, #0 adds r1, #0x5a strh r0, [r1] movs r1, #0x30 ldrsh r0, [r4, r1] rsbs r0, r0, #0 adds r1, r0, r2 cmp r0, #0 bge _0805A9A6 movs r0, #0 _0805A9A6: cmp r0, #0xa0 ble _0805A9AC movs r0, #0xa0 _0805A9AC: cmp r1, #0 bge _0805A9B2 movs r1, #0 _0805A9B2: cmp r1, #0xa0 ble _0805A9B8 movs r1, #0xa0 _0805A9B8: lsls r0, r0, #8 orrs r0, r1 adds r1, r4, #0 adds r1, #0x5e strh r0, [r1] pop {r4, pc} .align 2, 0 _0805A9C4: .4byte gScreen _0805A9C8: .4byte gRoomControls thumb_func_start sub_0805A9CC sub_0805A9CC: @ 0x0805A9CC push {r4, r5, lr} adds r4, r0, #0 ldr r3, _0805AA4C @ =gScreen ldr r5, _0805AA50 @ =gRoomControls ldrh r0, [r5, #0xa] ldrh r1, [r4, #0x24] subs r0, r0, r1 ldrh r1, [r4, #0x34] adds r0, r0, r1 strh r0, [r3, #0x2e] movs r2, #0x2e ldrsh r0, [r3, r2] rsbs r2, r0, #0 movs r0, #0x80 lsls r0, r0, #1 adds r1, r2, r0 cmp r2, #0 bge _0805A9F2 movs r2, #0 _0805A9F2: cmp r2, #0xf0 ble _0805A9F8 movs r2, #0xf0 _0805A9F8: cmp r1, #0 bge _0805A9FE movs r1, #0 _0805A9FE: cmp r1, #0xf0 ble _0805AA04 movs r1, #0xf0 _0805AA04: lsls r0, r2, #8 orrs r0, r1 adds r1, r3, #0 adds r1, #0x5a strh r0, [r1] movs r1, #0xc ldrsh r0, [r5, r1] ldrh r1, [r4, #0x26] subs r0, r0, r1 movs r2, #0x36 ldrsh r1, [r4, r2] adds r2, r0, r1 movs r1, #0x3f adds r0, r2, #0 ands r0, r1 strh r0, [r3, #0x30] adds r0, r2, #0 cmp r0, #0 bge _0805AA2C adds r0, #0x3f _0805AA2C: asrs r0, r0, #6 lsls r0, r0, #9 ldr r1, _0805AA54 @ =gUnk_02001A40 adds r1, r0, r1 str r1, [r3, #0x34] adds r2, r3, #0 adds r2, #0x5e movs r0, #0xa0 strh r0, [r2] ldr r0, [r4, #0x28] cmp r0, r1 beq _0805AA4A str r1, [r4, #0x28] movs r0, #1 strh r0, [r3, #0x32] _0805AA4A: pop {r4, r5, pc} .align 2, 0 _0805AA4C: .4byte gScreen _0805AA50: .4byte gRoomControls _0805AA54: .4byte gUnk_02001A40 thumb_func_start sub_0805AA58 sub_0805AA58: @ 0x0805AA58 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] movs r5, #0xff lsls r0, r0, #0x18 cmp r0, #0 bne _0805AA8C movs r0, #8 strb r0, [r4, #0xe] adds r2, r4, #0 adds r2, #0x21 ldrb r0, [r2] adds r0, #1 movs r1, #3 ands r0, r1 strb r0, [r2] ldrb r0, [r2] lsls r0, r0, #5 ldr r1, _0805AABC @ =gUnk_085A97A0 adds r0, r0, r1 movs r1, #5 movs r2, #1 bl sub_0801D754 _0805AA8C: ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] ands r0, r5 cmp r0, #0 bne _0805AABA movs r0, #0x10 strb r0, [r4, #0xf] adds r2, r4, #0 adds r2, #0x22 ldrb r0, [r2] adds r0, #1 movs r1, #0xf ands r0, r1 strb r0, [r2] ldr r1, _0805AAC0 @ =gScreen ldr r3, _0805AAC4 @ =gUnk_081085B8 ldrb r0, [r2] lsls r0, r0, #1 adds r0, r0, r3 ldrh r0, [r0] adds r1, #0x68 strh r0, [r1] _0805AABA: pop {r4, r5, pc} .align 2, 0 _0805AABC: .4byte gUnk_085A97A0 _0805AAC0: .4byte gScreen _0805AAC4: .4byte gUnk_081085B8 thumb_func_start sub_0805AAC8 sub_0805AAC8: @ 0x0805AAC8 push {r4, lr} adds r4, r0, #0 adds r0, #0x23 ldrb r0, [r0] bl sub_0805AAF0 adds r0, r4, #0 bl sub_0805A280 pop {r4, pc} thumb_func_start sub_0805AADC sub_0805AADC: @ 0x0805AADC push {lr} ldr r1, _0805AAEC @ =gUnk_08108648 lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] bl sub_0801D7EC pop {pc} .align 2, 0 _0805AAEC: .4byte gUnk_08108648 thumb_func_start sub_0805AAF0 sub_0805AAF0: @ 0x0805AAF0 push {lr} bl sub_0805AADC ldr r3, _0805AB34 @ =gScreen adds r1, r3, #0 adds r1, #0x66 movs r2, #0 ldr r0, _0805AB38 @ =0x00003E48 strh r0, [r1] adds r1, #2 ldr r0, _0805AB3C @ =0x00001008 strh r0, [r1] ldr r0, _0805AB40 @ =0x00001E04 strh r0, [r3, #0x2c] ldr r0, _0805AB44 @ =gUnk_02001A40 str r0, [r3, #0x34] strh r2, [r3, #0x2e] strh r2, [r3, #0x30] movs r0, #1 strh r0, [r3, #0x32] subs r1, #8 ldr r0, _0805AB48 @ =0x00003F3F strh r0, [r1] adds r1, #2 movs r0, #0x37 strh r0, [r1] subs r1, #8 movs r0, #0xf0 strh r0, [r1] adds r1, #4 movs r0, #0xa0 strh r0, [r1] pop {pc} .align 2, 0 _0805AB34: .4byte gScreen _0805AB38: .4byte 0x00003E48 _0805AB3C: .4byte 0x00001008 _0805AB40: .4byte 0x00001E04 _0805AB44: .4byte gUnk_02001A40 _0805AB48: .4byte 0x00003F3F