.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_0807887C sub_0807887C: @ 0x0807887C push {r4, r5, r6, r7, lr} adds r5, r0, #0 adds r7, r1, #0 adds r6, r2, #0 adds r1, r5, #0 adds r1, #0x39 movs r0, #0 strb r0, [r1] adds r0, r5, #0 bl sub_08078904 adds r4, r0, #0 cmp r4, #0 bge _080788A4 movs r0, #0 bl sub_08078904 adds r4, r0, #0 cmp r4, #0 blt _080788BA _080788A4: ldr r2, _080788DC @ =gUnk_03003DF0 lsls r1, r4, #1 adds r1, r1, r4 lsls r1, r1, #2 adds r0, r2, #0 adds r0, #0x10 adds r0, r1, r0 str r5, [r0] adds r1, r1, r2 strb r7, [r1, #9] strb r6, [r1, #0xb] _080788BA: cmp r6, #0 beq _080788D6 movs r0, #6 movs r1, #9 movs r2, #6 bl FindEntityInListBySubtype cmp r0, #0 bne _080788D6 movs r0, #9 movs r1, #0 movs r2, #0 bl CreateObject _080788D6: adds r0, r4, #0 pop {r4, r5, r6, r7, pc} .align 2, 0 _080788DC: .4byte gUnk_03003DF0 thumb_func_start sub_080788E0 sub_080788E0: @ 0x080788E0 push {lr} bl sub_08078904 adds r1, r0, #0 cmp r1, #0 blt _080788FC lsls r0, r1, #1 adds r0, r0, r1 lsls r0, r0, #2 ldr r1, _08078900 @ =gUnk_03003DF8 adds r0, r0, r1 movs r1, #0xc bl _DmaZero _080788FC: pop {pc} .align 2, 0 _08078900: .4byte gUnk_03003DF8 thumb_func_start sub_08078904 sub_08078904: @ 0x08078904 push {lr} adds r3, r0, #0 movs r1, #0 ldr r0, _0807891C @ =gUnk_03003DF0 adds r2, r0, #0 adds r2, #0x10 _08078910: ldr r0, [r2] cmp r3, r0 bne _08078920 adds r0, r1, #0 b _0807892C .align 2, 0 _0807891C: .4byte gUnk_03003DF0 _08078920: adds r2, #0xc adds r1, #1 cmp r1, #0x1f bls _08078910 movs r0, #1 rsbs r0, r0, #0 _0807892C: pop {pc} .align 2, 0 thumb_func_start sub_08078930 sub_08078930: @ 0x08078930 push {lr} adds r3, r0, #0 ldr r2, _08078950 @ =gUnk_03003BE0 ldrb r0, [r2, #2] cmp r0, #0x1f bhi _0807894C lsls r0, r0, #2 adds r1, r2, #0 adds r1, #0xc adds r0, r0, r1 str r3, [r0] ldrb r0, [r2, #2] adds r0, #1 strb r0, [r2, #2] _0807894C: pop {pc} .align 2, 0 _08078950: .4byte gUnk_03003BE0 thumb_func_start sub_08078954 sub_08078954: @ 0x08078954 push {r4, r5, lr} adds r5, r0, #0 movs r4, #0 ldr r0, _08078970 @ =gUnk_03003BE0 ldrb r1, [r0, #2] adds r2, r0, #0 cmp r4, r1 bhs _080789A6 ldr r0, [r2, #0xc] cmp r0, r5 bne _08078974 subs r0, r1, #1 b _0807898C .align 2, 0 _08078970: .4byte gUnk_03003BE0 _08078974: adds r4, #1 ldrb r3, [r2, #2] cmp r4, r3 bhs _080789A6 lsls r0, r4, #2 adds r1, r2, #0 adds r1, #0xc adds r0, r0, r1 ldr r0, [r0] cmp r0, r5 bne _08078974 subs r0, r3, #1 _0807898C: strb r0, [r2, #2] ldrb r0, [r2, #2] cmp r4, r0 bhs _080789A6 lsls r0, r4, #2 adds r0, #0xc adds r1, r0, r2 _0807899A: ldr r0, [r1, #4] stm r1!, {r0} adds r4, #1 ldrb r0, [r2, #2] cmp r4, r0 blo _0807899A _080789A6: pop {r4, r5, pc} thumb_func_start sub_080789A8 sub_080789A8: @ 0x080789A8 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} ldr r1, _080789BC @ =gUnk_03003BE0 ldrb r0, [r1] cmp r0, #0 beq _080789C0 ldrb r0, [r1, #1] b _08078A88 .align 2, 0 _080789BC: .4byte gUnk_03003BE0 _080789C0: ldr r0, _08078A5C @ =gPlayerState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 bne _08078A56 ldr r0, _08078A60 @ =gPlayerEntity bl sub_080002D0 adds r4, r0, #0 cmp r4, #0xf bls _080789E6 ldr r0, _08078A64 @ =gUnk_080084BC adds r1, r4, #0 subs r1, #0x10 adds r1, r1, r0 ldrb r0, [r1] cmp r0, #0xf beq _08078A56 _080789E6: ldr r0, _08078A5C @ =gPlayerState ldrb r0, [r0, #0x12] cmp r0, #0x12 beq _08078A56 ldr r3, _08078A68 @ =gUnk_03003BE0 movs r0, #1 strb r0, [r3] ldrb r4, [r3, #2] cmp r4, #0 beq _08078A2E ldr r2, _08078A60 @ =gPlayerEntity ldrb r1, [r2, #0x14] movs r0, #6 ands r0, r1 ldr r1, _08078A6C @ =gUnk_0811BFE0 adds r6, r0, r1 adds r7, r2, #0 adds r3, #8 mov r8, r3 _08078A0C: lsls r0, r4, #2 mov r1, r8 adds r5, r0, r1 ldr r1, [r5] cmp r1, #0 beq _08078A26 ldrb r2, [r6] ldrb r3, [r6, #1] adds r0, r7, #0 bl sub_0807A180 cmp r0, #0 bne _08078A74 _08078A26: subs r4, #1 ldr r7, _08078A60 @ =gPlayerEntity cmp r4, #0 bne _08078A0C _08078A2E: ldr r0, _08078A60 @ =gPlayerEntity ldrb r1, [r0, #0x14] movs r2, #6 ands r2, r1 ldr r1, _08078A70 @ =gUnk_08007DF4 adds r2, r2, r1 movs r1, #0 ldrsb r1, [r2, r1] ldrb r2, [r2, #1] lsls r2, r2, #0x18 asrs r2, r2, #0x18 bl sub_0800029C ldr r4, _08078A68 @ =gUnk_03003BE0 strh r0, [r4, #4] movs r1, #6 bl sub_0806FC24 cmp r0, #0 bne _08078A84 _08078A56: movs r0, #0 b _08078A88 .align 2, 0 _08078A5C: .4byte gPlayerState _08078A60: .4byte gPlayerEntity _08078A64: .4byte gUnk_080084BC _08078A68: .4byte gUnk_03003BE0 _08078A6C: .4byte gUnk_0811BFE0 _08078A70: .4byte gUnk_08007DF4 _08078A74: mov r0, r8 subs r0, #8 ldr r1, [r5] str r1, [r0, #8] movs r1, #2 strb r1, [r0, #1] movs r0, #2 b _08078A88 _08078A84: movs r0, #1 strb r0, [r4, #1] _08078A88: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_08078A90 sub_08078A90: @ 0x08078A90 push {lr} adds r1, r0, #0 ldr r0, _08078AA4 @ =gPlayerState adds r2, r0, #0 adds r2, #0x8b ldrb r0, [r2] cmp r0, #3 beq _08078AA2 strb r1, [r2] _08078AA2: pop {pc} .align 2, 0 _08078AA4: .4byte gPlayerState thumb_func_start sub_08078AA8 sub_08078AA8: @ 0x08078AA8 ldr r3, _08078AB8 @ =gPlayerState movs r2, #0x16 strb r2, [r3, #0xc] ldr r2, _08078ABC @ =gScreenTransition strh r0, [r2, #0x36] adds r2, #0x35 strb r1, [r2] bx lr .align 2, 0 _08078AB8: .4byte gPlayerState _08078ABC: .4byte gScreenTransition thumb_func_start sub_08078AC0 sub_08078AC0: @ 0x08078AC0 push {r4, lr} ldr r3, _08078AEC @ =gPlayerState mov ip, r3 movs r3, #0xf mov r4, ip strb r3, [r4, #0xc] mov r3, ip adds r3, #0x38 strb r0, [r3] rsbs r0, r1, #0 orrs r0, r1 lsrs r0, r0, #0x1f mov r1, ip adds r1, #0x39 strb r0, [r1] rsbs r0, r2, #0 orrs r0, r2 lsrs r0, r0, #0x1f adds r1, #1 strb r0, [r1] pop {r4, pc} .align 2, 0 _08078AEC: .4byte gPlayerState thumb_func_start sub_08078AF0 sub_08078AF0: @ 0x08078AF0 push {r4, lr} ldr r3, _08078B40 @ =gPlayerState mov ip, r3 adds r3, #0x38 movs r4, #0 strb r1, [r3] mov r1, ip adds r1, #0x39 strb r2, [r1] adds r1, #1 strb r4, [r1] movs r1, #8 mov r2, ip strb r1, [r2, #0xc] adds r2, #0xa8 movs r1, #0x15 strb r1, [r2] mov r1, ip adds r1, #0x26 strb r4, [r1] movs r1, #1 mov r3, ip strb r1, [r3, #0x14] ldr r2, _08078B44 @ =gPlayerEntity str r0, [r2, #0x54] ldrb r1, [r2, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r2, #0x10] ldrb r1, [r2, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #2 orrs r0, r1 strb r0, [r2, #0x11] bl sub_0807A108 pop {r4, pc} .align 2, 0 _08078B40: .4byte gPlayerState _08078B44: .4byte gPlayerEntity thumb_func_start sub_08078B48 sub_08078B48: @ 0x08078B48 push {lr} ldr r1, _08078B80 @ =gPlayerState ldrb r0, [r1, #7] movs r2, #0x80 orrs r0, r2 strb r0, [r1, #7] ldrb r0, [r1, #0xb] orrs r0, r2 strb r0, [r1, #0xb] ldrb r0, [r1, #0xa] orrs r2, r0 strb r2, [r1, #0xa] adds r2, r1, #0 adds r2, #0x27 movs r0, #2 strb r0, [r2] adds r0, r1, #0 adds r0, #0xa8 ldrb r0, [r0] subs r0, #4 adds r2, r1, #0 cmp r0, #0x19 bhi _08078BF8 lsls r0, r0, #2 ldr r1, _08078B84 @ =_08078B88 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08078B80: .4byte gPlayerState _08078B84: .4byte _08078B88 _08078B88: @ jump table .4byte _08078C04 @ case 0 .4byte _08078C04 @ case 1 .4byte _08078BF8 @ case 2 .4byte _08078BF8 @ case 3 .4byte _08078BF8 @ case 4 .4byte _08078BF0 @ case 5 .4byte _08078BF8 @ case 6 .4byte _08078BF8 @ case 7 .4byte _08078BF8 @ case 8 .4byte _08078BF8 @ case 9 .4byte _08078BF8 @ case 10 .4byte _08078BF8 @ case 11 .4byte _08078BF8 @ case 12 .4byte _08078BF8 @ case 13 .4byte _08078BF8 @ case 14 .4byte _08078BF8 @ case 15 .4byte _08078BF8 @ case 16 .4byte _08078BF8 @ case 17 .4byte _08078BF8 @ case 18 .4byte _08078BF8 @ case 19 .4byte _08078BF8 @ case 20 .4byte _08078C04 @ case 21 .4byte _08078C04 @ case 22 .4byte _08078BF8 @ case 23 .4byte _08078BF8 @ case 24 .4byte _08078C04 @ case 25 _08078BF0: ldr r0, [r2, #0x30] ldr r1, _08078C18 @ =0xFFFBFFFF ands r0, r1 str r0, [r2, #0x30] _08078BF8: ldr r0, _08078C1C @ =gRoomVars ldrb r0, [r0, #6] cmp r0, #0 bne _08078C04 movs r0, #1 strb r0, [r2, #0x1a] _08078C04: ldr r0, _08078C20 @ =gPlayerEntity adds r0, #0x3d movs r1, #0xfe strb r1, [r0] adds r1, r2, #0 adds r1, #0x8a movs r0, #2 strb r0, [r1] pop {pc} .align 2, 0 _08078C18: .4byte 0xFFFBFFFF _08078C1C: .4byte gRoomVars _08078C20: .4byte gPlayerEntity thumb_func_start sub_08078C24 sub_08078C24: @ 0x08078C24 push {lr} ldr r3, _08078CAC @ =gPlayerState movs r2, #0 strb r2, [r3] strb r2, [r3, #1] strb r2, [r3, #2] strb r2, [r3, #3] strb r2, [r3, #4] strb r2, [r3, #5] strb r2, [r3, #6] strb r2, [r3, #7] movs r0, #0 strh r2, [r3, #8] strb r0, [r3, #0xa] strb r0, [r3, #0xb] movs r1, #0x35 adds r1, r1, r3 mov ip, r1 adds r1, r3, #0 adds r1, #0x36 strb r0, [r1] strb r0, [r3, #0xc] strb r0, [r3, #0xd] strb r0, [r3, #0xe] strb r0, [r3, #0x11] strb r0, [r3, #0x12] strb r0, [r3, #0x13] strb r0, [r3, #0x14] strb r0, [r3, #0x1b] strb r0, [r3, #0x1e] strb r0, [r3, #0x1f] subs r1, #0x16 strb r0, [r1] adds r1, #1 strb r0, [r1] strh r2, [r3, #0x22] strh r2, [r3, #0x24] adds r1, #5 strb r0, [r1] str r2, [r3, #0x2c] adds r1, #0x5a strh r2, [r1] mov r1, ip strb r0, [r1] str r2, [r3, #0x30] adds r1, r3, #0 adds r1, #0x38 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #5 strb r0, [r1] subs r1, #3 strb r0, [r1] movs r0, #1 rsbs r0, r0, #0 adds r1, #4 movs r2, #0x40 bl _DmaFill32 ldr r0, _08078CB0 @ =gUnk_03003DF0 movs r1, #0xc4 lsls r1, r1, #1 bl _DmaZero pop {pc} .align 2, 0 _08078CAC: .4byte gPlayerState _08078CB0: .4byte gUnk_03003DF0 thumb_func_start sub_08078CB4 sub_08078CB4: @ 0x08078CB4 push {lr} ldr r0, _08078CCC @ =gPlayerState ldrb r0, [r0, #5] subs r0, #3 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #1 bhi _08078CC8 bl sub_08078D60 _08078CC8: pop {pc} .align 2, 0 _08078CCC: .4byte gPlayerState thumb_func_start sub_08078CD0 sub_08078CD0: @ 0x08078CD0 push {r4, r5, lr} adds r5, r0, #0 ldr r4, [r5, #0x70] ldrh r0, [r5, #0x36] subs r0, #1 strh r0, [r4, #0x36] ldrb r1, [r5, #0x1b] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r4, #0x1b] movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r4, #0x1b] adds r0, r5, #0 adds r0, #0x38 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] ldr r1, _08078D28 @ =gUnk_0811C01C ldr r0, _08078D2C @ =gPlayerState ldr r0, [r0, #0x2c] ldrb r0, [r0, #0x1e] adds r0, r0, r1 ldrb r2, [r0] ldr r3, _08078D30 @ =gUnk_0811C0B0 ldrb r1, [r4, #0x1c] movs r0, #0x30 ands r0, r1 lsrs r0, r0, #2 adds r0, r0, r3 lsls r2, r2, #1 ldr r0, [r0] adds r2, r0, r2 ldrb r0, [r5, #0x18] lsls r0, r0, #0x19 cmp r0, #0 bge _08078D34 movs r1, #0 ldrsb r1, [r2, r1] ldrh r0, [r5, #0x2e] subs r0, r0, r1 b _08078D3C .align 2, 0 _08078D28: .4byte gUnk_0811C01C _08078D2C: .4byte gPlayerState _08078D30: .4byte gUnk_0811C0B0 _08078D34: movs r0, #0 ldrsb r0, [r2, r0] ldrh r1, [r5, #0x2e] adds r0, r0, r1 _08078D3C: strh r0, [r4, #0x2e] movs r0, #1 ldrsb r0, [r2, r0] ldrh r1, [r5, #0x32] adds r0, r0, r1 strh r0, [r4, #0x32] adds r0, r5, #0 movs r1, #0 adds r2, r4, #0 bl sub_0806FEBC ldr r1, [r4, #0x50] cmp r1, #0 beq _08078D5E adds r0, r4, #0 bl CopyPosition _08078D5E: pop {r4, r5, pc} thumb_func_start sub_08078D60 sub_08078D60: @ 0x08078D60 push {r4, r5, r6, lr} ldr r1, _08078DCC @ =gPlayerEntity ldr r0, [r1, #0x74] ldr r4, [r0, #0x54] ldrb r0, [r4, #0xc] adds r6, r1, #0 cmp r0, #2 beq _08078D72 b _08078E82 _08078D72: adds r0, r6, #0 adds r0, #0x63 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r1, [r6, #0x36] adds r0, r0, r1 strh r0, [r4, #0x36] ldrb r1, [r6, #0x1b] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r4, #0x1b] movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r4, #0x1b] adds r0, r6, #0 adds r0, #0x38 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] adds r0, r6, #0 adds r0, #0x5a ldrb r0, [r0] movs r2, #0x7f ands r2, r0 ldr r1, _08078DD0 @ =gUnk_0811C0E8 ldrb r0, [r4, #0x16] lsrs r0, r0, #4 lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] ldrb r0, [r6, #0x18] lsls r0, r0, #0x19 cmp r0, #0 bge _08078DD4 adds r2, r1, r2 movs r1, #0 ldrsb r1, [r2, r1] ldrh r0, [r6, #0x2e] subs r0, r0, r1 strh r0, [r4, #0x2e] adds r1, r2, #0 b _08078DE0 .align 2, 0 _08078DCC: .4byte gPlayerEntity _08078DD0: .4byte gUnk_0811C0E8 _08078DD4: adds r1, r1, r2 movs r0, #0 ldrsb r0, [r1, r0] ldrh r2, [r6, #0x2e] adds r0, r0, r2 strh r0, [r4, #0x2e] _08078DE0: movs r0, #1 ldrsb r0, [r1, r0] ldrh r1, [r4, #0x36] adds r0, r0, r1 strh r0, [r4, #0x36] adds r5, r6, #0 ldrh r0, [r5, #0x32] strh r0, [r4, #0x32] adds r0, r5, #0 adds r1, r4, #0 bl ResolveEntityOnTop ldr r0, _08078E34 @ =gPlayerState ldrb r0, [r0, #5] cmp r0, #4 bne _08078E4C ldrb r1, [r5, #0x19] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r4, #0x19] movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r4, #0 bl sub_0806F8DC ldrb r1, [r4, #0x16] movs r0, #0xf ands r0, r1 cmp r0, #2 bne _08078E82 ldr r0, _08078E38 @ =gScreenTransition ldr r1, [r0] movs r0, #3 ands r1, r0 cmp r1, #1 beq _08078E3C cmp r1, #3 beq _08078E44 b _08078E82 .align 2, 0 _08078E34: .4byte gPlayerState _08078E38: .4byte gScreenTransition _08078E3C: ldrh r0, [r4, #0x2e] adds r0, #1 strh r0, [r4, #0x2e] b _08078E82 _08078E44: ldrh r0, [r4, #0x2e] subs r0, #1 strh r0, [r4, #0x2e] b _08078E82 _08078E4C: ldrb r0, [r5, #0x14] lsrs r0, r0, #1 cmp r0, #0 beq _08078E62 adds r0, r5, #0 adds r0, #0x29 ldrb r1, [r0] lsls r1, r1, #0x1d lsrs r1, r1, #0x1d subs r1, #1 b _08078E6E _08078E62: adds r0, r6, #0 adds r0, #0x29 ldrb r1, [r0] lsls r1, r1, #0x1d lsrs r1, r1, #0x1d adds r1, #1 _08078E6E: adds r3, r4, #0 adds r3, #0x29 movs r0, #7 ands r1, r0 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] _08078E82: pop {r4, r5, r6, pc} thumb_func_start sub_08078E84 sub_08078E84: @ 0x08078E84 push {r4, r5, lr} adds r5, r0, #0 adds r4, r1, #0 ldr r0, _08078ED0 @ =gPlayerEntity cmp r4, r0 bne _08078EAC adds r0, r5, #0 bl sub_08079BD8 adds r0, r4, #0 adds r0, #0x62 ldrb r0, [r0] adds r1, r5, #0 adds r1, #0x62 strb r0, [r1] adds r0, r4, #0 adds r0, #0x63 ldrb r0, [r0] adds r1, #1 strb r0, [r1] _08078EAC: ldr r0, _08078ED4 @ =gSpritePtrs ldrh r2, [r4, #0x12] lsls r2, r2, #4 adds r0, #4 adds r2, r2, r0 ldrb r1, [r4, #0x1e] lsls r1, r1, #2 ldr r0, [r2] adds r0, r0, r1 ldrb r0, [r0, #1] cmp r0, #0 beq _08078ED8 adds r0, r4, #0 movs r1, #1 adds r2, r5, #0 bl sub_0806FEBC b _08078EE2 .align 2, 0 _08078ED0: .4byte gPlayerEntity _08078ED4: .4byte gSpritePtrs _08078ED8: adds r0, r4, #0 movs r1, #3 adds r2, r5, #0 bl sub_0806FEBC _08078EE2: pop {r4, r5, pc} thumb_func_start sub_08078EE4 sub_08078EE4: @ 0x08078EE4 ldr r2, _08078EF4 @ =gPlayerEntity ldr r1, _08078EF8 @ =gPlayerState ldrh r0, [r1, #0x16] strh r0, [r2, #0x2e] ldrh r0, [r1, #0x18] strh r0, [r2, #0x32] bx lr .align 2, 0 _08078EF4: .4byte gPlayerEntity _08078EF8: .4byte gPlayerState thumb_func_start sub_08078EFC sub_08078EFC: @ 0x08078EFC push {lr} ldr r3, _08078F18 @ =gPlayerState ldrb r2, [r3, #0xc] cmp r2, #0 beq _08078F20 ldr r0, _08078F1C @ =gPlayerEntity movs r1, #0 strb r2, [r0, #0xc] strb r1, [r0, #0xd] strb r1, [r3, #0xc] bl sub_08070680 movs r0, #1 b _08078F22 .align 2, 0 _08078F18: .4byte gPlayerState _08078F1C: .4byte gPlayerEntity _08078F20: movs r0, #0 _08078F22: pop {pc} thumb_func_start sub_08078F24 sub_08078F24: @ 0x08078F24 push {r4, lr} ldr r4, _08078F38 @ =gPlayerState ldrb r3, [r4, #0xd] movs r0, #0x80 ands r0, r3 cmp r0, #0 beq _08078F3C bl sub_08078F60 b _08078F5A .align 2, 0 _08078F38: .4byte gPlayerState _08078F3C: ldr r2, _08078F5C @ =gSineTable lsls r0, r3, #4 adds r0, r0, r2 ldrh r1, [r0] adds r0, r4, #0 adds r0, #0x8c strh r1, [r0] lsls r0, r3, #4 adds r0, #0x80 adds r0, r0, r2 ldrh r0, [r0] rsbs r0, r0, #0 adds r1, r4, #0 adds r1, #0x8e strh r0, [r1] _08078F5A: pop {r4, pc} .align 2, 0 _08078F5C: .4byte gSineTable thumb_func_start sub_08078F60 sub_08078F60: @ 0x08078F60 ldr r0, _08078F70 @ =gPlayerState adds r1, r0, #0 adds r1, #0x8c movs r2, #0 strh r2, [r1] adds r0, #0x8e strh r2, [r0] bx lr .align 2, 0 _08078F70: .4byte gPlayerState thumb_func_start sub_08078F74 sub_08078F74: @ 0x08078F74 push {lr} adds r2, r0, #0 ldr r0, _08078FA4 @ =gArea ldrb r0, [r0, #0x18] cmp r0, #3 bne _08078FAC ldr r3, _08078FA8 @ =gPlayerState adds r0, r3, #0 adds r0, #0x35 ldrb r0, [r0] cmp r0, #0xff beq _08078FAC movs r1, #0 movs r0, #0x81 strb r0, [r3, #2] movs r0, #0x15 strb r0, [r2, #0xc] strb r1, [r2, #0xd] movs r0, #0x80 lsls r0, r0, #0xa str r0, [r2, #0x20] movs r0, #1 b _08078FAE .align 2, 0 _08078FA4: .4byte gArea _08078FA8: .4byte gPlayerState _08078FAC: movs r0, #0 _08078FAE: pop {pc} thumb_func_start sub_08078FB0 sub_08078FB0: @ 0x08078FB0 push {r4, r5, r6, lr} adds r4, r0, #0 ldr r5, _08078FE0 @ =gPlayerState ldrb r1, [r5, #6] movs r6, #0x80 adds r0, r6, #0 ands r0, r1 cmp r0, #0 bne _08078FCA adds r1, r5, #0 adds r1, #0x35 movs r0, #0xff strb r0, [r1] _08078FCA: adds r0, r4, #0 bl sub_08079064 ldr r1, [r5, #0x30] movs r0, #8 ands r0, r1 cmp r0, #0 beq _08078FE4 movs r2, #0x58 b _08078FFA .align 2, 0 _08078FE0: .4byte gPlayerState _08078FE4: ands r1, r6 cmp r1, #0 beq _08078FEE movs r2, #0x18 b _08078FFA _08078FEE: ldrh r0, [r5, #8] lsrs r0, r0, #8 movs r2, #0xb8 cmp r0, #7 bne _08078FFA movs r2, #0x34 _08078FFA: ldr r0, _08079014 @ =gPlayerState adds r3, r0, #0 ldrb r1, [r0, #8] cmp r2, r1 bls _08079040 ldrb r0, [r4, #0x14] adds r2, r0, #0 cmp r2, #4 bls _08079018 ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 b _08079020 .align 2, 0 _08079014: .4byte gPlayerState _08079018: ldrb r1, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r1 _08079020: strb r0, [r4, #0x18] ldr r0, [r3, #0x30] movs r1, #0x80 lsls r1, r1, #0xc ands r0, r1 cmp r0, #0 beq _08079036 ldrh r1, [r3, #8] ldrb r0, [r4, #0x14] adds r2, r1, r0 b _08079042 _08079036: lsls r0, r2, #0x18 lsrs r0, r0, #0x19 ldrh r3, [r3, #8] adds r2, r0, r3 b _08079042 _08079040: ldrh r2, [r0, #8] _08079042: ldrh r0, [r4, #0x12] lsls r0, r0, #8 adds r1, r4, #0 adds r1, #0x58 ldrb r1, [r1] orrs r0, r1 cmp r2, r0 beq _08079062 lsrs r0, r2, #8 strh r0, [r4, #0x12] movs r0, #0xff ands r2, r0 adds r0, r4, #0 adds r1, r2, #0 bl InitAnimationForceUpdate _08079062: pop {r4, r5, r6, pc} thumb_func_start sub_08079064 sub_08079064: @ 0x08079064 push {r4, r5, r6, lr} adds r6, r0, #0 ldr r0, _0807909C @ =gPlayerState ldr r1, [r0, #0x30] ldr r2, _080790A0 @ =0x00100080 ands r1, r2 adds r5, r0, #0 cmp r1, #0 bne _080790DE movs r3, #0 movs r2, #0 ldr r1, _080790A4 @ =gUnk_03000B80 _0807907C: ldrb r0, [r1, #0xf] cmp r0, r3 bls _08079086 adds r3, r0, #0 ldrh r4, [r1, #0x10] _08079086: adds r1, #0x1c adds r2, #1 cmp r2, #3 bls _0807907C adds r2, r5, #0 ldrb r0, [r2, #0xe] cmp r0, r3 bhs _080790A8 strh r4, [r2, #8] b _080790DE .align 2, 0 _0807909C: .4byte gPlayerState _080790A0: .4byte 0x00100080 _080790A4: .4byte gUnk_03000B80 _080790A8: adds r0, r2, #0 adds r0, #0x26 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080790C0 ldr r0, _080790BC @ =0x000002BE strh r0, [r2, #8] b _080790DE .align 2, 0 _080790BC: .4byte 0x000002BE _080790C0: ldrh r1, [r5, #8] movs r0, #0xc1 lsls r0, r0, #3 cmp r1, r0 beq _080790D8 movs r0, #0x82 lsls r0, r0, #1 cmp r1, r0 beq _080790D8 ldr r0, _080790E0 @ =0x00000404 cmp r1, r0 bne _080790DE _080790D8: adds r0, r6, #0 bl sub_080790E4 _080790DE: pop {r4, r5, r6, pc} .align 2, 0 _080790E0: .4byte 0x00000404 thumb_func_start sub_080790E4 sub_080790E4: @ 0x080790E4 push {r4, r5, lr} adds r4, r0, #0 ldr r5, _08079128 @ =gPlayerState ldrb r0, [r5, #0xb] cmp r0, #0 bne _08079182 movs r0, #0x10 bl sub_080793E4 cmp r0, #0 beq _0807912C adds r1, r4, #0 adds r1, #0x3d movs r0, #0x14 strb r0, [r1] adds r1, #5 movs r0, #4 strb r0, [r1] ldrb r0, [r4, #0x14] lsls r0, r0, #2 movs r1, #0x10 eors r0, r1 adds r1, r4, #0 adds r1, #0x3e strb r0, [r1] movs r0, #2 rsbs r0, r0, #0 bl ModHealth movs r0, #0x7a bl PlaySFX b _08079182 .align 2, 0 _08079128: .4byte gPlayerState _0807912C: ldrb r1, [r5, #6] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _08079182 cmp r1, #0 bne _08079150 movs r0, #1 bl sub_080793E4 cmp r0, #0 beq _0807914C ldrb r0, [r4, #0xf] cmp r0, #5 bhi _08079154 adds r0, #1 _0807914C: strb r0, [r4, #0xf] b _08079182 _08079150: subs r0, r1, #1 strb r0, [r5, #6] _08079154: ldr r2, _08079174 @ =gPlayerState ldrb r0, [r4, #0x14] adds r1, r2, #0 adds r1, #0x35 strb r0, [r1] adds r1, #0x73 movs r0, #0x19 strb r0, [r1] ldr r0, [r2, #0x30] movs r1, #8 ands r0, r1 cmp r0, #0 beq _0807917C ldr r0, _08079178 @ =0x0000093C b _08079180 .align 2, 0 _08079174: .4byte gPlayerState _08079178: .4byte 0x0000093C _0807917C: movs r0, #0xcf lsls r0, r0, #2 _08079180: strh r0, [r2, #8] _08079182: pop {r4, r5, pc} thumb_func_start sub_08079184 sub_08079184: @ 0x08079184 ldr r0, _08079194 @ =gPlayerState movs r1, #0 strb r1, [r0, #5] strb r1, [r0, #1] ldr r0, _08079198 @ =gPlayerEntity str r1, [r0, #0x74] bx lr .align 2, 0 _08079194: .4byte gPlayerState _08079198: .4byte gPlayerEntity thumb_func_start sub_0807919C sub_0807919C: @ 0x0807919C push {lr} ldr r0, _080791B0 @ =gPlayerState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 bne _080791B4 bl sub_080791BC b _080791B8 .align 2, 0 _080791B0: .4byte gPlayerState _080791B4: bl sub_08079258 _080791B8: pop {pc} .align 2, 0 thumb_func_start sub_080791BC sub_080791BC: @ 0x080791BC ldr r0, _080791CC @ =gPlayerEntity movs r2, #0 movs r1, #1 strb r1, [r0, #0xc] strb r2, [r0, #0xd] strb r2, [r0, #0xf] bx lr .align 2, 0 _080791CC: .4byte gPlayerEntity thumb_func_start sub_080791D0 sub_080791D0: @ 0x080791D0 push {lr} ldr r3, _0807920C @ =gPlayerState ldr r0, [r3, #0x30] movs r1, #0x40 ands r0, r1 cmp r0, #0 bne _080791E8 ldr r0, _08079210 @ =gPlayerEntity ldrb r1, [r0, #0x18] movs r2, #3 orrs r1, r2 strb r1, [r0, #0x18] _080791E8: ldr r0, [r3, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 bne _08079214 ldr r2, _08079210 @ =gPlayerEntity adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #8 orrs r0, r1 strb r0, [r2] bl sub_0807921C b _08079218 .align 2, 0 _0807920C: .4byte gPlayerState _08079210: .4byte gPlayerEntity _08079214: bl sub_08079258 _08079218: pop {pc} .align 2, 0 thumb_func_start sub_0807921C sub_0807921C: @ 0x0807921C push {r4, lr} ldr r4, _0807924C @ =gPlayerEntity ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] ldrb r0, [r4, #0x18] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x18] ldr r2, _08079250 @ =gPlayerState ldr r0, [r2, #0x30] ldr r1, _08079254 @ =0xFECBF6FA ands r0, r1 str r0, [r2, #0x30] bl sub_08079938 bl sub_080791BC adds r0, r4, #0 bl sub_0805E374 pop {r4, pc} .align 2, 0 _0807924C: .4byte gPlayerEntity _08079250: .4byte gPlayerState _08079254: .4byte 0xFECBF6FA thumb_func_start sub_08079258 sub_08079258: @ 0x08079258 push {r4, lr} ldr r4, _080792AC @ =gPlayerState ldr r0, [r4, #0x30] movs r1, #0x40 ands r0, r1 ldr r3, _080792B0 @ =gPlayerEntity cmp r0, #0 bne _08079278 ldrb r1, [r3, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r3, #0x10] ldrb r0, [r3, #0x18] movs r1, #3 orrs r0, r1 strb r0, [r3, #0x18] _08079278: movs r0, #9 strb r0, [r3, #0xc] movs r0, #1 strb r0, [r3, #0xd] adds r2, r3, #0 adds r2, #0x3c ldrb r1, [r2] movs r0, #0xfb ands r0, r1 strb r0, [r2] movs r2, #0 ldr r0, _080792B4 @ =0x00000C18 strh r0, [r4, #8] ldr r0, [r4, #0x30] ldr r1, _080792B8 @ =0xFECFFEFA ands r0, r1 str r0, [r4, #0x30] adds r0, r4, #0 adds r0, #0x26 strb r2, [r0] strb r2, [r4, #0xc] adds r0, r3, #0 bl sub_0805E374 pop {r4, pc} .align 2, 0 _080792AC: .4byte gPlayerState _080792B0: .4byte gPlayerEntity _080792B4: .4byte 0x00000C18 _080792B8: .4byte 0xFECFFEFA thumb_func_start sub_080792BC sub_080792BC: @ 0x080792BC push {r4, lr} ldr r3, _080792D0 @ =gPlayerState movs r4, #0x13 strb r4, [r3, #0xc] adds r3, #0x38 strb r2, [r3] ldr r2, _080792D4 @ =gPlayerEntity strh r0, [r2, #0x24] strb r1, [r2, #0x15] pop {r4, pc} .align 2, 0 _080792D0: .4byte gPlayerState _080792D4: .4byte gPlayerEntity thumb_func_start sub_080792D8 sub_080792D8: @ 0x080792D8 push {r4, r5, r6, lr} ldr r5, _08079344 @ =gPlayerEntity adds r3, r5, #0 adds r3, #0x42 ldrb r0, [r3] cmp r0, #0 beq _080793E0 ldrb r2, [r5, #0xc] cmp r2, #0xb beq _08079338 ldr r0, _08079348 @ =gPlayerState ldrb r1, [r0, #0x1e] adds r6, r0, #0 cmp r1, #0 bne _08079338 ldrb r0, [r6, #5] subs r0, #1 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #3 bls _08079338 ldrb r0, [r6, #2] cmp r0, #0 bne _08079338 ldrb r0, [r6, #0x12] cmp r0, #0xff beq _08079338 ldrb r1, [r6, #7] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _08079338 adds r0, r6, #0 adds r0, #0x26 ldrb r1, [r0] movs r0, #0xf ands r0, r1 subs r0, #1 cmp r0, #0 bgt _08079338 cmp r2, #3 beq _08079338 ldr r1, [r6, #0x30] movs r0, #0x80 lsls r0, r0, #0xb ands r1, r0 cmp r1, #0 beq _0807934C _08079338: adds r1, r5, #0 adds r1, #0x42 movs r0, #0 strb r0, [r1] b _080793E0 .align 2, 0 _08079344: .4byte gPlayerEntity _08079348: .4byte gPlayerState _0807934C: cmp r2, #0x1d bne _0807935E adds r0, r5, #0 adds r0, #0x3e ldrb r0, [r0] cmp r0, #0x10 beq _0807935E strb r1, [r3] b _080793E0 _0807935E: adds r0, r5, #0 adds r0, #0x42 ldrb r3, [r0] movs r1, #0 ldrsb r1, [r0, r1] adds r2, r0, #0 cmp r1, #0 ble _08079372 subs r0, r3, #1 b _08079374 _08079372: adds r0, r3, #1 _08079374: strb r0, [r2] ldrb r0, [r2] cmp r0, #0 beq _080793E0 adds r4, r6, #0 ldrb r0, [r4, #7] movs r1, #0xdf ands r1, r0 strb r1, [r4, #7] adds r0, r5, #0 adds r0, #0x3d ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 cmp r0, #0 ble _080793CA adds r0, r4, #0 adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 bne _080793CA ldr r0, [r4, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 bne _080793CA ldrb r0, [r4, #2] cmp r0, #0 bne _080793CA bl ResetPlayer ldr r0, [r4, #0x30] movs r1, #8 ands r0, r1 cmp r0, #0 bne _080793C4 movs r0, #0x8a lsls r0, r0, #1 strh r0, [r4, #8] b _080793CA _080793C4: movs r0, #0x83 lsls r0, r0, #3 strh r0, [r6, #8] _080793CA: movs r1, #0xa0 lsls r1, r1, #2 adds r4, r5, #0 adds r4, #0x3e ldrb r2, [r4] adds r0, r5, #0 bl sub_080027EA ldrb r0, [r4] bl sub_0807A5B8 _080793E0: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_080793E4 sub_080793E4: @ 0x080793E4 push {r4, r5, lr} adds r5, r0, #0 ldr r0, _080793FC @ =gPlayerState adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 bne _08079408 ldr r1, _08079400 @ =gUnk_0811C0F8 ldr r0, _08079404 @ =gPlayerEntity ldrb r0, [r0, #0x14] lsrs r0, r0, #1 b _08079410 .align 2, 0 _080793FC: .4byte gPlayerState _08079400: .4byte gUnk_0811C0F8 _08079404: .4byte gPlayerEntity _08079408: ldr r1, _08079448 @ =gUnk_0811C0F8 ldr r0, _0807944C @ =gPlayerEntity ldrb r0, [r0, #0x15] lsrs r0, r0, #2 _08079410: lsls r0, r0, #1 adds r0, r0, r1 ldrh r4, [r0] bl sub_08079778 cmp r0, #0 beq _08079454 ldr r0, _08079450 @ =gPlayerState adds r0, #0x90 ldrh r0, [r0] ands r0, r4 cmp r0, #0 beq _08079454 cmp r5, #0 beq _08079442 bl sub_0807A500 ldr r1, _0807944C @ =gPlayerEntity adds r1, #0x38 ldrb r1, [r1] adds r2, r5, #0 bl sub_080002F0 cmp r0, #0 beq _08079454 _08079442: movs r0, #1 b _08079456 .align 2, 0 _08079448: .4byte gUnk_0811C0F8 _0807944C: .4byte gPlayerEntity _08079450: .4byte gPlayerState _08079454: movs r0, #0 _08079456: pop {r4, r5, pc} thumb_func_start sub_08079458 sub_08079458: @ 0x08079458 push {r4, r5, lr} ldr r4, _08079498 @ =gPlayerEntity movs r1, #0 movs r0, #0x19 strb r0, [r4, #0xc] str r1, [r4, #0x34] str r1, [r4, #0x20] adds r0, r4, #0 adds r0, #0x42 strb r1, [r0] bl sub_08078EE4 ldr r2, _0807949C @ =gPlayerState ldr r1, [r2, #0x30] movs r0, #0x80 lsls r0, r0, #0xa ands r0, r1 cmp r0, #0 bne _08079514 movs r0, #0x80 lsls r0, r0, #9 ands r1, r0 cmp r1, #0 beq _080794E4 adds r0, r2, #0 adds r0, #0x84 ldr r1, [r0] ldrh r0, [r1, #0x2e] strh r0, [r4, #0x2e] ldrh r0, [r1, #0x32] strh r0, [r4, #0x32] b _08079514 .align 2, 0 _08079498: .4byte gPlayerEntity _0807949C: .4byte gPlayerState _080794A0: ldr r2, _080794DC @ =gPlayerEntity ldr r0, [r4] lsrs r0, r0, #0x1e adds r1, r2, #0 adds r1, #0x38 strb r0, [r1] ldr r3, _080794E0 @ =gRoomControls ldr r0, [r4] movs r1, #0x3f ands r0, r1 lsls r0, r0, #4 ldrh r1, [r3, #6] adds r0, r0, r1 adds r0, #8 strh r0, [r2, #0x2e] ldr r0, [r4] movs r1, #0xfc lsls r1, r1, #4 ands r0, r1 lsrs r0, r0, #2 ldrh r3, [r3, #8] adds r0, r0, r3 adds r0, #8 strh r0, [r2, #0x32] ldrb r1, [r2, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r2, #0x10] b _08079514 .align 2, 0 _080794DC: .4byte gPlayerEntity _080794E0: .4byte gRoomControls _080794E4: movs r5, #0 ldr r1, [r2, #0x40] movs r0, #1 rsbs r0, r0, #0 cmp r1, r0 beq _08079514 adds r4, r2, #0 adds r4, #0x40 _080794F4: ldr r1, [r4] ldrh r0, [r4] lsrs r1, r1, #0x1e bl sub_080002E0 cmp r0, #0xf bne _080794A0 adds r4, #4 adds r5, #1 cmp r5, #0xf bhi _08079514 ldr r1, [r4] movs r0, #1 rsbs r0, r0, #0 cmp r1, r0 bne _080794F4 _08079514: ldr r0, _0807951C @ =gPlayerEntity bl UpdateSpriteForCollisionLayer pop {r4, r5, pc} .align 2, 0 _0807951C: .4byte gPlayerEntity thumb_func_start sub_08079520 sub_08079520: @ 0x08079520 push {lr} adds r1, r0, #0 ldr r0, _08079538 @ =gPlayerState ldrb r0, [r0, #0xd] cmp r0, #0x7f ble _08079532 ldrb r0, [r1, #0x14] lsrs r0, r0, #1 lsls r0, r0, #3 _08079532: strb r0, [r1, #0x15] pop {pc} .align 2, 0 _08079538: .4byte gPlayerState thumb_func_start sub_0807953C sub_0807953C: @ 0x0807953C ldr r1, _08079548 @ =0x00000F38 ldr r0, _0807954C @ =gPlayerState adds r0, #0x92 ldrh r0, [r0] ands r0, r1 bx lr .align 2, 0 _08079548: .4byte 0x00000F38 _0807954C: .4byte gPlayerState thumb_func_start sub_08079550 sub_08079550: @ 0x08079550 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} ldr r0, _080795A8 @ =gUnk_03004030 ldrb r0, [r0, #8] cmp r0, #0 beq _08079562 b _080796FC _08079562: ldr r2, _080795AC @ =gPlayerState ldrb r0, [r2, #0x1e] cmp r0, #0 beq _08079576 ldr r0, [r2, #0x30] movs r1, #0x80 lsls r1, r1, #3 ands r0, r1 cmp r0, #0 beq _080795B4 _08079576: adds r0, r2, #0 adds r0, #0x26 ldrb r0, [r0] ldr r1, _080795B0 @ =gPlayerEntity mov r8, r1 cmp r0, #0 bne _080795A0 ldrb r1, [r2, #0x1b] movs r0, #0x40 ands r0, r1 cmp r0, #0 bne _080795A0 mov r3, r8 ldrb r1, [r3, #0x15] ldrb r2, [r2, #0xd] cmp r1, r2 bne _080795A0 movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080795B4 _080795A0: movs r0, #0 mov r5, r8 strb r0, [r5, #0xf] b _080796FE .align 2, 0 _080795A8: .4byte gUnk_03004030 _080795AC: .4byte gPlayerState _080795B0: .4byte gPlayerEntity _080795B4: bl sub_08079778 cmp r0, #0 bne _080795BE b _080796FC _080795BE: ldr r3, _08079610 @ =gPlayerEntity ldrb r2, [r3, #0x14] movs r0, #6 ands r0, r2 ldr r1, _08079614 @ =gUnk_0811C100 adds r1, r0, r1 movs r0, #2 ands r0, r2 mov r8, r3 cmp r0, #0 beq _0807961C movs r6, #0x2e ldrsh r2, [r3, r6] movs r0, #0 ldrsb r0, [r1, r0] adds r2, r2, r0 ldr r4, _08079618 @ =gRoomControls ldrh r0, [r4, #6] subs r2, r2, r0 asrs r2, r2, #4 movs r3, #0x3f ands r2, r3 mov r0, r8 movs r5, #0x32 ldrsh r1, [r0, r5] ldr r0, [r0, #0x48] ldrb r5, [r0, #3] adds r0, r1, r5 ldrh r4, [r4, #8] subs r0, r0, r4 asrs r0, r0, #4 ands r0, r3 lsls r7, r0, #6 orrs r7, r2 subs r1, r1, r5 subs r1, r1, r4 asrs r1, r1, #4 ands r1, r3 lsls r4, r1, #6 orrs r4, r2 b _0807965E .align 2, 0 _08079610: .4byte gPlayerEntity _08079614: .4byte gUnk_0811C100 _08079618: .4byte gRoomControls _0807961C: mov r6, r8 movs r0, #0x2e ldrsh r2, [r6, r0] ldr r0, [r6, #0x48] ldrb r0, [r0, #4] mov ip, r0 adds r0, r2, r0 ldr r4, _080796EC @ =gRoomControls ldrh r3, [r4, #6] mov sb, r3 subs r0, r0, r3 asrs r7, r0, #4 movs r3, #0x3f ands r7, r3 movs r5, #0x32 ldrsh r0, [r6, r5] ldrb r1, [r1, #1] lsls r1, r1, #0x18 asrs r1, r1, #0x18 adds r0, r0, r1 ldrh r1, [r4, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r7, r0 mov r6, ip subs r2, r2, r6 mov r1, sb subs r2, r2, r1 asrs r4, r2, #4 ands r4, r3 orrs r4, r0 _0807965E: adds r0, r7, #0 mov r5, r8 adds r5, #0x38 ldrb r1, [r5] bl sub_080002C8 adds r3, r0, #0 ldr r6, _080796F0 @ =gUnk_0811C1E8 mov r1, r8 ldrb r0, [r1, #0x14] lsrs r0, r0, #1 lsls r0, r0, #2 adds r0, r0, r6 ldr r1, [r0] adds r0, r3, #0 bl sub_08007DD6 adds r3, r0, #0 cmp r3, #0 beq _080796FC adds r0, r4, #0 ldrb r1, [r5] bl sub_080002C8 adds r3, r0, #0 mov r5, r8 ldrb r0, [r5, #0x14] lsrs r0, r0, #1 lsls r0, r0, #2 adds r0, r0, r6 ldr r1, [r0] adds r0, r3, #0 bl sub_08007DD6 adds r3, r0, #0 cmp r3, #0 beq _080796FC ldr r1, _080796F4 @ =gPlayerState ldrb r2, [r1, #6] movs r0, #0x80 orrs r0, r2 strb r0, [r1, #6] ldrb r0, [r1, #0x1e] adds r4, r1, #0 cmp r0, #0 bne _080796C8 ldrb r0, [r5, #0xf] adds r0, #1 strb r0, [r5, #0xf] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #5 bls _080796FC _080796C8: ldr r0, _080796F8 @ =gPlayerEntity subs r1, r3, #1 movs r2, #0 strb r1, [r0, #0x14] movs r1, #4 strb r1, [r0, #0xc] strb r2, [r0, #0xd] ldrb r2, [r0, #0x10] movs r1, #0x7f ands r1, r2 strb r1, [r0, #0x10] movs r1, #0x81 strb r1, [r4, #2] bl sub_08070680 movs r0, #1 b _080796FE .align 2, 0 _080796EC: .4byte gRoomControls _080796F0: .4byte gUnk_0811C1E8 _080796F4: .4byte gPlayerState _080796F8: .4byte gPlayerEntity _080796FC: movs r0, #0 _080796FE: pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_08079708 sub_08079708: @ 0x08079708 push {r4, lr} ldr r4, _08079740 @ =gPlayerState adds r2, r4, #0 adds r2, #0xa8 movs r3, #0 movs r1, #0x12 strb r1, [r2] subs r2, #0x6c movs r1, #0xff strb r1, [r2] ldrb r2, [r0, #0x10] movs r1, #0x7f ands r1, r2 strb r1, [r0, #0x10] movs r1, #0xa strb r1, [r0, #0xc] strb r3, [r0, #0xd] bl sub_080085B0 ldr r0, [r4, #0x30] movs r1, #0x88 lsls r1, r1, #1 ands r0, r1 cmp r0, #0 bne _0807973E bl sub_0805E544 _0807973E: pop {r4, pc} .align 2, 0 _08079740: .4byte gPlayerState thumb_func_start sub_08079744 sub_08079744: @ 0x08079744 push {lr} adds r2, r0, #0 ldrh r0, [r2, #0x2e] movs r1, #0xf ands r1, r0 cmp r1, #8 beq _0807975E cmp r1, #8 ble _0807975A subs r0, #1 b _0807975C _0807975A: adds r0, #1 _0807975C: strh r0, [r2, #0x2e] _0807975E: ldrh r0, [r2, #0x32] movs r1, #0xf ands r1, r0 cmp r1, #8 beq _08079774 cmp r1, #8 ble _08079770 subs r0, #1 b _08079772 _08079770: adds r0, #1 _08079772: strh r0, [r2, #0x32] _08079774: pop {pc} .align 2, 0 thumb_func_start sub_08079778 sub_08079778: @ 0x08079778 push {lr} ldr r0, _08079790 @ =gPlayerState adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 bne _0807979C ldr r2, _08079794 @ =gUnk_0811C108 ldr r1, _08079798 @ =gPlayerEntity ldrb r0, [r1, #0x14] lsrs r0, r0, #1 b _080797A4 .align 2, 0 _08079790: .4byte gPlayerState _08079794: .4byte gUnk_0811C108 _08079798: .4byte gPlayerEntity _0807979C: ldr r2, _080797BC @ =gUnk_0811C108 ldr r1, _080797C0 @ =gPlayerEntity ldrb r0, [r1, #0x15] lsrs r0, r0, #2 _080797A4: lsls r0, r0, #1 adds r0, r0, r2 ldrh r2, [r0] movs r3, #0 ldrh r0, [r1, #0x2a] ands r0, r2 cmp r2, r0 bne _080797B6 movs r3, #1 _080797B6: adds r0, r3, #0 pop {pc} .align 2, 0 _080797BC: .4byte gUnk_0811C108 _080797C0: .4byte gPlayerEntity thumb_func_start sub_080797C4 sub_080797C4: @ 0x080797C4 push {lr} ldr r1, _080797E4 @ =gUnk_0811C110 ldr r2, _080797E8 @ =gPlayerEntity ldrb r0, [r2, #0x15] lsrs r0, r0, #3 lsls r0, r0, #1 adds r0, r0, r1 ldrh r1, [r0] movs r3, #0 ldrh r0, [r2, #0x2a] ands r0, r1 cmp r1, r0 bne _080797E0 movs r3, #1 _080797E0: adds r0, r3, #0 pop {pc} .align 2, 0 _080797E4: .4byte gUnk_0811C110 _080797E8: .4byte gPlayerEntity thumb_func_start sub_080797EC sub_080797EC: @ 0x080797EC push {r4, r5, lr} ldr r4, _08079804 @ =gPlayerState ldr r1, [r4, #0x30] movs r0, #8 ands r0, r1 cmp r0, #0 beq _0807985C ldrb r0, [r4, #5] cmp r0, #0 beq _0807980C ldr r5, _08079808 @ =0x00000934 b _0807991E .align 2, 0 _08079804: .4byte gPlayerState _08079808: .4byte 0x00000934 _0807980C: ldrb r0, [r4, #3] cmp r0, #0 beq _08079818 movs r5, #0x82 lsls r5, r5, #3 b _0807991E _08079818: adds r0, r4, #0 adds r0, #0x21 ldrb r0, [r0] cmp r0, #0 bne _080798A0 adds r0, r4, #0 adds r0, #0x26 ldrb r0, [r0] movs r5, #0xa4 lsls r5, r5, #2 cmp r0, #0 bne _0807991E movs r5, #0xb6 lsls r5, r5, #1 ldrb r1, [r4, #0x1b] movs r0, #0x48 ands r0, r1 cmp r0, #0 bne _080798C2 lsls r0, r1, #0x18 cmp r0, #0 bne _080798CE adds r1, r4, #0 adds r1, #0xa8 ldrb r0, [r1] cmp r0, #0 bne _08079852 movs r0, #1 strb r0, [r1] _08079852: ldr r5, _08079858 @ =0x00000404 b _0807991E .align 2, 0 _08079858: .4byte 0x00000404 _0807985C: ldrb r0, [r4, #0x1c] cmp r0, #0 bne _0807992E ldrb r0, [r4, #5] cmp r0, #0 beq _0807986E movs r5, #0xd2 lsls r5, r5, #2 b _0807991E _0807986E: ldrb r0, [r4, #0x1e] cmp r0, #0 beq _0807987A movs r5, #0xa6 lsls r5, r5, #2 b _0807991E _0807987A: movs r0, #0x80 lsls r0, r0, #5 ands r1, r0 cmp r1, #0 beq _0807988A movs r5, #0xe2 lsls r5, r5, #3 b _0807991E _0807988A: ldrb r0, [r4, #3] cmp r0, #0 beq _08079896 movs r5, #0xb0 lsls r5, r5, #1 b _0807991E _08079896: adds r0, r4, #0 adds r0, #0x21 ldrb r0, [r0] cmp r0, #0 beq _080798A6 _080798A0: movs r5, #0xa1 lsls r5, r5, #2 b _0807991E _080798A6: adds r0, r4, #0 adds r0, #0x26 ldrb r0, [r0] movs r5, #0xa4 lsls r5, r5, #2 cmp r0, #0 bne _0807991E movs r5, #0xb6 lsls r5, r5, #1 ldrb r1, [r4, #0x1b] movs r0, #0x48 ands r0, r1 cmp r0, #0 beq _080798C8 _080798C2: movs r0, #0x6c strb r0, [r4] b _0807992E _080798C8: lsls r0, r1, #0x18 cmp r0, #0 beq _080798FC _080798CE: movs r0, #0 bl sub_080793E4 cmp r0, #0 beq _0807991E bl sub_0807A500 ldr r1, _080798F8 @ =gPlayerEntity adds r1, #0x38 ldrb r1, [r1] bl sub_080002E0 cmp r0, #0xff beq _0807991E ldrb r1, [r4, #0x1b] movs r0, #0xf7 ands r0, r1 strb r0, [r4, #0x1b] movs r5, #0xb8 lsls r5, r5, #1 b _0807991E .align 2, 0 _080798F8: .4byte gPlayerEntity _080798FC: adds r1, r4, #0 adds r1, #0xa8 ldrb r0, [r1] cmp r0, #0 bne _0807990A movs r0, #1 strb r0, [r1] _0807990A: ldr r0, [r4, #0x30] movs r1, #0x80 lsls r1, r1, #0x10 ands r0, r1 movs r5, #0x82 lsls r5, r5, #1 cmp r0, #0 beq _0807991E movs r5, #0xc1 lsls r5, r5, #3 _0807991E: ldr r0, _08079930 @ =gPlayerState strh r5, [r0, #8] ldrb r0, [r0, #3] cmp r0, #0 bne _0807992E ldr r0, _08079934 @ =gPlayerEntity bl UpdateAnimationSingleFrame _0807992E: pop {r4, r5, pc} .align 2, 0 _08079930: .4byte gPlayerState _08079934: .4byte gPlayerEntity thumb_func_start sub_08079938 sub_08079938: @ 0x08079938 push {r4, lr} ldr r3, _08079954 @ =gPlayerState ldr r2, [r3, #0x30] movs r0, #8 ands r0, r2 mov ip, r3 cmp r0, #0 beq _080799E4 ldrb r0, [r3, #5] cmp r0, #0 beq _0807995C ldr r4, _08079958 @ =0x0000092C b _08079AD8 .align 2, 0 _08079954: .4byte gPlayerState _08079958: .4byte 0x0000092C _0807995C: mov r0, ip adds r0, #0x3d mov r3, ip ldrb r1, [r3, #0x1c] ldrb r0, [r0] orrs r0, r1 cmp r0, #0 beq _0807996E b _08079B14 _0807996E: movs r0, #0x80 lsls r0, r0, #0x12 ands r0, r2 cmp r0, #0 bne _08079A1E mov r4, ip ldrb r0, [r4, #3] cmp r0, #0 beq _08079988 ldr r4, _08079984 @ =0x00000414 b _08079AD8 .align 2, 0 _08079984: .4byte 0x00000414 _08079988: mov r0, ip adds r0, #0x21 ldrb r0, [r0] cmp r0, #0 bne _08079A5C mov r0, ip adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 bne _08079A6C mov r0, ip ldrb r1, [r0, #0x1b] movs r0, #0x48 ands r0, r1 cmp r0, #0 beq _080799AA b _08079B14 _080799AA: cmp r1, #0 beq _080799B0 b _08079AA4 _080799B0: mov r1, ip ldrb r0, [r1, #4] cmp r0, #0 beq _080799BA b _08079B14 _080799BA: movs r0, #0x20 ands r2, r0 cmp r2, #0 beq _080799D0 ldr r0, _080799D8 @ =gArea ldrb r0, [r0, #0x17] cmp r0, #4 bne _080799CC b _08079AD4 _080799CC: cmp r0, #5 bne _080799DC _080799D0: movs r4, #0x80 lsls r4, r4, #3 b _08079AD8 .align 2, 0 _080799D8: .4byte gArea _080799DC: ldr r4, _080799E0 @ =0x000002C2 b _08079AD8 .align 2, 0 _080799E0: .4byte 0x000002C2 _080799E4: mov r4, ip ldrb r0, [r4, #5] cmp r0, #0 beq _080799F2 movs r4, #0xd4 lsls r4, r4, #2 b _08079AD8 _080799F2: mov r0, ip adds r0, #0x3d mov r4, ip ldrb r1, [r4, #0x1c] ldrb r0, [r0] orrs r0, r1 cmp r0, #0 beq _08079A04 b _08079B14 _08079A04: movs r0, #0x80 lsls r0, r0, #0xc ands r0, r2 cmp r0, #0 beq _08079A14 movs r4, #0x8b lsls r4, r4, #4 b _08079AD8 _08079A14: movs r0, #0x80 lsls r0, r0, #0x12 ands r0, r2 cmp r0, #0 beq _08079A24 _08079A1E: movs r4, #0x81 lsls r4, r4, #4 b _08079AD8 _08079A24: mov r1, ip ldrb r0, [r1, #0x1e] cmp r0, #0 beq _08079A32 movs r4, #0xa6 lsls r4, r4, #2 b _08079AD8 _08079A32: movs r0, #0x80 lsls r0, r0, #5 ands r0, r2 cmp r0, #0 beq _08079A44 ldr r4, _08079A40 @ =0x0000070C b _08079AD8 .align 2, 0 _08079A40: .4byte 0x0000070C _08079A44: mov r4, ip ldrb r0, [r4, #3] cmp r0, #0 beq _08079A52 movs r4, #0xb2 lsls r4, r4, #1 b _08079AD8 _08079A52: mov r0, ip adds r0, #0x21 ldrb r0, [r0] cmp r0, #0 beq _08079A62 _08079A5C: movs r4, #0xa0 lsls r4, r4, #2 b _08079AD8 _08079A62: mov r0, ip adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 beq _08079A72 _08079A6C: movs r4, #0xa3 lsls r4, r4, #2 b _08079AD8 _08079A72: mov r0, ip ldrb r1, [r0, #0x1b] movs r0, #0x48 ands r0, r1 cmp r0, #0 bne _08079B14 movs r0, #0x20 ands r2, r0 cmp r2, #0 beq _08079AA0 ldr r0, _08079A98 @ =gArea ldrb r0, [r0, #0x17] ldr r4, _08079A9C @ =0x000002C2 cmp r0, #4 bne _08079AD8 movs r4, #0xa6 lsls r4, r4, #3 b _08079AD8 .align 2, 0 _08079A98: .4byte gArea _08079A9C: .4byte 0x000002C2 _08079AA0: cmp r1, #0 beq _08079AAA _08079AA4: movs r4, #0xb4 lsls r4, r4, #1 b _08079AD8 _08079AAA: ldrb r0, [r3, #4] cmp r0, #0 bne _08079B14 ldr r0, [r3, #0x30] movs r1, #0x80 lsls r1, r1, #0x10 ands r0, r1 cmp r0, #0 beq _08079AD4 ldr r0, _08079ACC @ =gUnk_03000B80 adds r0, #0x63 ldrb r0, [r0] cmp r0, #0 bne _08079B14 ldr r4, _08079AD0 @ =0x00000604 b _08079AD8 .align 2, 0 _08079ACC: .4byte gUnk_03000B80 _08079AD0: .4byte 0x00000604 _08079AD4: movs r4, #0x80 lsls r4, r4, #1 _08079AD8: mov r1, ip strh r4, [r1, #8] ldrb r0, [r1, #5] cmp r0, #0 bne _08079B10 movs r3, #0 movs r2, #0 ldr r1, _08079B18 @ =gUnk_03000B80 _08079AE8: ldrb r0, [r1, #0xf] cmp r0, r3 bls _08079AF0 adds r3, r0, #0 _08079AF0: adds r1, #0x1c adds r2, #1 cmp r2, #3 bls _08079AE8 mov r2, ip ldrb r0, [r2, #0xe] cmp r0, r3 blo _08079B14 lsls r0, r4, #0x18 lsrs r0, r0, #0x18 ldrb r3, [r2] cmp r0, r3 bne _08079B10 ldr r0, _08079B1C @ =gPlayerEntity bl UpdateAnimationSingleFrame _08079B10: ldr r0, _08079B20 @ =gPlayerState strb r4, [r0] _08079B14: pop {r4, pc} .align 2, 0 _08079B18: .4byte gUnk_03000B80 _08079B1C: .4byte gPlayerEntity _08079B20: .4byte gPlayerState thumb_func_start sub_08079B24 sub_08079B24: @ 0x08079B24 push {r4, r5, lr} ldr r2, _08079B60 @ =gPlayerEntity ldrb r0, [r2, #0xc] cmp r0, #0xa beq _08079BD4 adds r0, r2, #0 adds r0, #0x45 ldrb r3, [r0] cmp r3, #0 bne _08079BD4 ldr r4, _08079B64 @ =gPlayerState ldr r1, [r4, #0x30] ldr r0, _08079B68 @ =0xFEFFFFFF ands r1, r0 str r1, [r4, #0x30] adds r0, r2, #0 adds r0, #0x42 strb r3, [r0] ldrb r0, [r4, #7] cmp r0, #0 bne _08079BD4 adds r0, r4, #0 adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 beq _08079B6C bl sub_08079458 b _08079BC0 .align 2, 0 _08079B60: .4byte gPlayerEntity _08079B64: .4byte gPlayerState _08079B68: .4byte 0xFEFFFFFF _08079B6C: ldrb r0, [r4, #0x14] cmp r0, #0 bne _08079BC0 movs r3, #0x80 lsls r3, r3, #5 ands r3, r1 cmp r3, #0 bne _08079BC0 movs r5, #0x36 ldrsh r0, [r2, r5] cmp r0, #0 bge _08079BA6 ldr r0, [r2, #0x20] cmp r0, #0 ble _08079B8C str r3, [r2, #0x20] _08079B8C: ldrb r1, [r4, #2] movs r3, #0x41 adds r0, r3, #0 ands r0, r1 cmp r0, #0 bne _08079BD4 strb r3, [r4, #2] movs r0, #0xff strb r0, [r2, #0x15] movs r0, #1 rsbs r0, r0, #0 strb r0, [r4, #0xd] b _08079BD4 _08079BA6: movs r0, #2 ands r1, r0 cmp r1, #0 bne _08079BC0 bl sub_08079D48 cmp r0, #0 bne _08079BC0 ldrb r0, [r4, #0xa] movs r1, #0x10 orrs r0, r1 strb r0, [r4, #0xa] b _08079BD4 _08079BC0: ldr r2, _08079BD0 @ =gPlayerEntity ldrb r1, [r2, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r2, #0x10] movs r0, #0 b _08079BD6 .align 2, 0 _08079BD0: .4byte gPlayerEntity _08079BD4: movs r0, #1 _08079BD6: pop {r4, r5, pc} thumb_func_start sub_08079BD8 sub_08079BD8: @ 0x08079BD8 push {r4, r5, lr} ldr r4, _08079C2C @ =gPlayerEntity ldr r1, [r4, #0x2c] str r1, [r0, #0x2c] ldr r1, [r4, #0x30] str r1, [r0, #0x30] ldr r1, [r4, #0x34] str r1, [r0, #0x34] adds r1, r4, #0 adds r1, #0x38 ldrb r2, [r1] adds r1, r0, #0 adds r1, #0x38 strb r2, [r1] ldrb r3, [r4, #0x19] lsrs r3, r3, #6 lsls r3, r3, #6 ldrb r5, [r0, #0x19] movs r2, #0x3f adds r1, r2, #0 ands r1, r5 orrs r1, r3 strb r1, [r0, #0x19] ldrb r1, [r4, #0x1b] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r3, [r0, #0x1b] ands r2, r3 orrs r2, r1 strb r2, [r0, #0x1b] adds r4, #0x29 ldrb r2, [r4] lsls r2, r2, #0x1d adds r0, #0x29 lsrs r2, r2, #0x1d ldrb r3, [r0] movs r1, #8 rsbs r1, r1, #0 ands r1, r3 orrs r1, r2 strb r1, [r0] pop {r4, r5, pc} .align 2, 0 _08079C2C: .4byte gPlayerEntity thumb_func_start sub_08079C30 sub_08079C30: @ 0x08079C30 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r6, r0, #0 ldr r0, _08079C68 @ =gPlayerState ldrb r1, [r0, #0x14] adds r7, r0, #0 cmp r1, #0 beq _08079C44 b _08079D40 _08079C44: ldr r1, [r7, #0x30] movs r0, #2 ands r0, r1 cmp r0, #0 bne _08079D40 movs r0, #0x80 ands r1, r0 cmp r1, #0 bne _08079D36 ldrb r0, [r7, #0x13] subs r0, #0xd cmp r0, #0x1d bhi _08079CE8 lsls r0, r0, #2 ldr r1, _08079C6C @ =_08079C70 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08079C68: .4byte gPlayerState _08079C6C: .4byte _08079C70 _08079C70: @ jump table .4byte _08079D36 @ case 0 .4byte _08079D36 @ case 1 .4byte _08079D36 @ case 2 .4byte _08079D36 @ case 3 .4byte _08079CE8 @ case 4 .4byte _08079CE8 @ case 5 .4byte _08079CE8 @ case 6 .4byte _08079D36 @ case 7 .4byte _08079CE8 @ case 8 .4byte _08079CE8 @ case 9 .4byte _08079D36 @ case 10 .4byte _08079CE8 @ case 11 .4byte _08079CE8 @ case 12 .4byte _08079CE8 @ case 13 .4byte _08079CE8 @ case 14 .4byte _08079CE8 @ case 15 .4byte _08079CE8 @ case 16 .4byte _08079CE8 @ case 17 .4byte _08079CE8 @ case 18 .4byte _08079CE8 @ case 19 .4byte _08079CE8 @ case 20 .4byte _08079CE8 @ case 21 .4byte _08079CE8 @ case 22 .4byte _08079CE8 @ case 23 .4byte _08079CE8 @ case 24 .4byte _08079CE8 @ case 25 .4byte _08079CE8 @ case 26 .4byte _08079CE8 @ case 27 .4byte _08079CE8 @ case 28 .4byte _08079D36 @ case 29 _08079CE8: mov r8, r7 mov r0, r8 ldrb r4, [r0, #0x12] movs r2, #1 rsbs r2, r2, #0 adds r0, r6, #0 movs r1, #0 bl sub_080002B4 ldr r5, _08079D3C @ =gUnk_08007CAC adds r1, r5, #0 bl sub_08007DD6 cmp r4, r0 bne _08079D40 mov r0, r8 ldrb r4, [r0, #0x12] adds r0, r6, #0 movs r1, #2 movs r2, #0 bl sub_080002B4 adds r1, r5, #0 bl sub_08007DD6 cmp r4, r0 bne _08079D40 ldrb r4, [r7, #0x12] movs r1, #2 rsbs r1, r1, #0 adds r0, r6, #0 movs r2, #0 bl sub_080002B4 adds r1, r5, #0 bl sub_08007DD6 cmp r4, r0 bne _08079D40 _08079D36: movs r0, #1 b _08079D42 .align 2, 0 _08079D3C: .4byte gUnk_08007CAC _08079D40: movs r0, #0 _08079D42: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} thumb_func_start sub_08079D48 sub_08079D48: @ 0x08079D48 push {r4, lr} ldr r4, _08079D78 @ =gPlayerEntity adds r0, r4, #0 bl sub_08079C30 cmp r0, #0 beq _08079D72 bl sub_08008B22 cmp r0, #0 bne _08079D80 adds r0, r4, #0 bl sub_080002B8 lsls r0, r0, #0x10 lsrs r0, r0, #0x10 ldr r1, _08079D7C @ =gUnk_0811C268 bl sub_08007DD6 cmp r0, #0 bne _08079D80 _08079D72: movs r0, #1 b _08079D82 .align 2, 0 _08079D78: .4byte gPlayerEntity _08079D7C: .4byte gUnk_0811C268 _08079D80: movs r0, #0 _08079D82: pop {r4, pc} thumb_func_start sub_08079D84 sub_08079D84: @ 0x08079D84 push {lr} ldr r3, _08079DC0 @ =gPlayerEntity ldrb r0, [r3, #0xc] cmp r0, #1 beq _08079D92 cmp r0, #0x18 bne _08079DBE _08079D92: ldr r2, _08079DC4 @ =gPlayerState adds r1, r2, #0 adds r1, #0x38 movs r0, #0x9c strb r0, [r1] adds r1, #1 movs r0, #2 strb r0, [r1] adds r1, #1 movs r0, #0x3c strb r0, [r1] movs r0, #0xe strb r0, [r2, #0xc] adds r1, r3, #0 adds r1, #0x3d movs r0, #0x7c strb r0, [r1] bl sub_08077B20 ldr r0, _08079DC8 @ =0x00000193 bl PlaySFX _08079DBE: pop {pc} .align 2, 0 _08079DC0: .4byte gPlayerEntity _08079DC4: .4byte gPlayerState _08079DC8: .4byte 0x00000193 thumb_func_start sub_08079DCC sub_08079DCC: @ 0x08079DCC push {lr} ldr r0, _08079DFC @ =gPlayerEntity ldrb r0, [r0, #0xc] cmp r0, #1 bne _08079DF8 ldr r3, _08079E00 @ =gPlayerState adds r1, r3, #0 adds r1, #0x38 movs r2, #0 movs r0, #0xa0 strb r0, [r1] adds r1, #1 movs r0, #3 strb r0, [r1] adds r0, r3, #0 adds r0, #0x3a strb r2, [r0] movs r0, #0xe strb r0, [r3, #0xc] ldr r0, _08079E04 @ =0x00000193 bl PlaySFX _08079DF8: pop {pc} .align 2, 0 _08079DFC: .4byte gPlayerEntity _08079E00: .4byte gPlayerState _08079E04: .4byte 0x00000193 thumb_func_start sub_08079E08 sub_08079E08: @ 0x08079E08 push {r4, lr} ldr r0, _08079E50 @ =gPlayerEntity ldrh r2, [r0, #0x24] movs r3, #0x24 ldrsh r1, [r0, r3] adds r4, r0, #0 cmp r1, #0 beq _08079E2E ldr r0, _08079E54 @ =gPlayerState adds r0, #0x80 ldrh r0, [r0] adds r0, r2, r0 strh r0, [r4, #0x24] lsls r0, r0, #0x10 asrs r0, r0, #0x10 cmp r0, #0x1f bgt _08079E2E movs r0, #0x20 strh r0, [r4, #0x24] _08079E2E: adds r2, r4, #0 ldrb r1, [r2, #0x15] movs r0, #4 ands r0, r1 cmp r0, #0 bne _08079E40 ldrb r0, [r2, #0x15] bl sub_08079E90 _08079E40: adds r0, r4, #0 bl sub_0800857C ldrb r0, [r4, #0x15] bl sub_0807A5B8 pop {r4, pc} .align 2, 0 _08079E50: .4byte gPlayerEntity _08079E54: .4byte gPlayerState thumb_func_start sub_08079E58 sub_08079E58: @ 0x08079E58 push {r4, r5, r6, lr} adds r6, r0, #0 adds r4, r1, #0 ldr r5, _08079E8C @ =gPlayerEntity ldrb r1, [r5, #0x15] movs r0, #4 ands r0, r1 cmp r0, #0 bne _08079E70 adds r0, r4, #0 bl sub_08079E90 _08079E70: adds r0, r5, #0 bl sub_080085B0 lsls r1, r6, #0x10 asrs r1, r1, #0x10 lsls r2, r4, #0x18 lsrs r2, r2, #0x18 adds r0, r5, #0 bl sub_080027EA adds r0, r4, #0 bl sub_0807A5B8 pop {r4, r5, r6, pc} .align 2, 0 _08079E8C: .4byte gPlayerEntity thumb_func_start sub_08079E90 sub_08079E90: @ 0x08079E90 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} mov sb, r0 ldr r1, _08079EBC @ =gPlayerEntity ldrb r2, [r1, #0x15] movs r0, #8 ands r0, r2 adds r7, r1, #0 cmp r0, #0 beq _08079ECA movs r0, #0x10 ands r0, r2 cmp r0, #0 beq _08079EC0 ldr r0, [r7, #0x48] ldrb r0, [r0, #2] rsbs r0, r0, #0 lsls r0, r0, #0x10 lsrs r5, r0, #0x10 b _08079EC4 .align 2, 0 _08079EBC: .4byte gPlayerEntity _08079EC0: ldr r0, [r7, #0x48] ldrb r5, [r0, #2] _08079EC4: ldr r0, [r7, #0x48] ldrb r4, [r0, #3] b _08079EDE _08079ECA: ldr r0, [r7, #0x48] ldrb r5, [r0, #4] cmp r2, #0 beq _08079ED6 ldrb r4, [r0, #5] b _08079EDE _08079ED6: ldrb r0, [r0, #5] rsbs r0, r0, #0 lsls r0, r0, #0x10 lsrs r4, r0, #0x10 _08079EDE: lsls r0, r5, #0x10 asrs r0, r0, #0x10 mov r8, r0 lsls r0, r4, #0x10 asrs r6, r0, #0x10 adds r0, r7, #0 mov r1, r8 adds r2, r6, #0 bl sub_080002CC adds r1, r0, #0 mov r0, sb bl sub_08079F48 cmp r0, #0 bne _08079F3C ldrb r1, [r7, #0x15] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _08079F10 rsbs r0, r6, #0 lsls r0, r0, #0x10 lsrs r4, r0, #0x10 b _08079F18 _08079F10: mov r1, r8 rsbs r0, r1, #0 lsls r0, r0, #0x10 lsrs r5, r0, #0x10 _08079F18: ldr r0, _08079F38 @ =gPlayerEntity lsls r1, r5, #0x10 asrs r1, r1, #0x10 lsls r2, r4, #0x10 asrs r2, r2, #0x10 bl sub_080002CC adds r1, r0, #0 mov r0, sb bl sub_08079F48 cmp r0, #0 bne _08079F3C movs r0, #0 b _08079F3E .align 2, 0 _08079F38: .4byte gPlayerEntity _08079F3C: movs r0, #1 _08079F3E: pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_08079F48 sub_08079F48: @ 0x08079F48 push {lr} ldr r3, _08079F60 @ =gUnk_0811C118 lsrs r2, r0, #2 adds r0, r2, r3 ldrb r0, [r0] cmp r0, r1 bne _08079F68 ldr r0, _08079F64 @ =gPlayerEntity ldrb r1, [r0, #0x15] adds r1, #4 b _08079F7C .align 2, 0 _08079F60: .4byte gUnk_0811C118 _08079F64: .4byte gPlayerEntity _08079F68: adds r0, r2, #1 adds r0, r0, r3 ldrb r0, [r0] cmp r0, r1 beq _08079F76 movs r0, #0 b _08079F84 _08079F76: ldr r0, _08079F88 @ =gPlayerEntity ldrb r1, [r0, #0x15] subs r1, #4 _08079F7C: movs r2, #0x1f ands r1, r2 strb r1, [r0, #0x15] movs r0, #1 _08079F84: pop {pc} .align 2, 0 _08079F88: .4byte gPlayerEntity thumb_func_start sub_08079F8C sub_08079F8C: @ 0x08079F8C push {lr} ldr r2, _08079FB4 @ =gPlayerState ldr r0, [r2, #0x30] ldr r1, _08079FB8 @ =0x22189B75 ands r0, r1 cmp r0, #0 bne _08079FB0 adds r0, r2, #0 adds r0, #0x3c ldrb r0, [r0] cmp r0, #0 bne _08079FB0 ldr r0, _08079FBC @ =gPlayerEntity ldrb r0, [r0, #0xc] cmp r0, #3 beq _08079FB0 cmp r0, #0xb bne _08079FC0 _08079FB0: movs r0, #0 b _08079FC2 .align 2, 0 _08079FB4: .4byte gPlayerState _08079FB8: .4byte 0x22189B75 _08079FBC: .4byte gPlayerEntity _08079FC0: movs r0, #1 _08079FC2: pop {pc} thumb_func_start sub_08079FC4 sub_08079FC4: @ 0x08079FC4 push {lr} adds r1, r0, #0 ldr r0, _08079FD0 @ =gPlayerEntity bl sub_08079FD4 pop {pc} .align 2, 0 _08079FD0: .4byte gPlayerEntity thumb_func_start sub_08079FD4 sub_08079FD4: @ 0x08079FD4 push {r4, r5, r6, lr} sub sp, #4 adds r5, r0, #0 movs r0, #0x2e ldrsh r2, [r5, r0] ldr r3, _0807A008 @ =gRoomControls ldrh r0, [r3, #6] subs r2, r2, r0 asrs r2, r2, #4 movs r4, #0x3f ands r2, r4 movs r6, #0x32 ldrsh r0, [r5, r6] ldrh r3, [r3, #8] subs r0, r0, r3 asrs r0, r0, #4 ands r0, r4 lsls r0, r0, #6 orrs r2, r0 lsls r2, r2, #1 ldr r6, _0807A00C @ =gUnk_02027EB4 cmp r1, #2 bne _0807A004 ldr r6, _0807A010 @ =gUnk_0200D654 _0807A004: movs r4, #0 b _0807A028 .align 2, 0 _0807A008: .4byte gRoomControls _0807A00C: .4byte gUnk_02027EB4 _0807A010: .4byte gUnk_0200D654 _0807A014: cmp r1, #0x23 beq _0807A028 cmp r1, #0x27 beq _0807A028 ldr r0, _0807A04C @ =gUnk_080082DC subs r1, #0x10 adds r1, r1, r0 ldrb r0, [r1] cmp r0, #0 beq _0807A046 _0807A028: adds r4, #1 adds r0, r5, #0 mov r1, sp bl sub_08004202 adds r2, r0, #0 lsrs r0, r2, #1 adds r0, r6, r0 ldrb r1, [r0] cmp r1, #0xe bls _0807A046 cmp r1, #0xf bls _0807A028 cmp r1, #0x1d bne _0807A014 _0807A046: adds r0, r4, #0 add sp, #4 pop {r4, r5, r6, pc} .align 2, 0 _0807A04C: .4byte gUnk_080082DC thumb_func_start sub_0807A050 sub_0807A050: @ 0x0807A050 push {lr} ldr r3, _0807A088 @ =gPlayerState ldrb r2, [r3, #0xf] cmp r2, #0 beq _0807A06A ldr r0, _0807A08C @ =gTextBox ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0 bne _0807A06A subs r0, r2, #1 strb r0, [r3, #0xf] _0807A06A: movs r0, #0 bl sub_0807A094 adds r1, r0, #0 ldr r0, _0807A088 @ =gPlayerState adds r0, #0x83 ldrb r2, [r0] cmp r1, r2 beq _0807A084 strb r1, [r0] ldr r0, _0807A090 @ =gPlayerEntity bl sub_0801D2B4 _0807A084: pop {pc} .align 2, 0 _0807A088: .4byte gPlayerState _0807A08C: .4byte gTextBox _0807A090: .4byte gPlayerEntity thumb_func_start sub_0807A094 sub_0807A094: @ 0x0807A094 push {r4, r5, lr} adds r3, r0, #0 movs r2, #0x16 ldr r0, _0807A0AC @ =gPlayerState ldrb r0, [r0, #0xf] cmp r0, #0 beq _0807A0B0 movs r2, #0x1b cmp r0, #0x78 bls _0807A104 movs r2, #0x1a b _0807A104 .align 2, 0 _0807A0AC: .4byte gPlayerState _0807A0B0: ldr r0, _0807A0F0 @ =gUnk_02002A40 adds r1, r0, #0 adds r1, #0xb2 ldrb r1, [r1] adds r5, r0, #0 cmp r1, #0 beq _0807A104 movs r4, #1 cmp r3, #0 bne _0807A0D6 adds r0, #0xc4 ldrh r1, [r0] cmp r1, #0xb3 bhi _0807A0D6 movs r0, #8 ands r0, r1 cmp r0, #0 beq _0807A0D6 movs r4, #0 _0807A0D6: cmp r4, #0 beq _0807A104 adds r0, r5, #0 adds r0, #0xb2 ldrb r0, [r0] cmp r0, #0x30 beq _0807A102 cmp r0, #0x30 bgt _0807A0F4 cmp r0, #0x2f beq _0807A0FA b _0807A102 .align 2, 0 _0807A0F0: .4byte gUnk_02002A40 _0807A0F4: cmp r0, #0x31 beq _0807A0FE b _0807A102 _0807A0FA: movs r2, #0x18 b _0807A104 _0807A0FE: movs r2, #0x17 b _0807A104 _0807A102: movs r2, #0x19 _0807A104: adds r0, r2, #0 pop {r4, r5, pc} thumb_func_start sub_0807A108 sub_0807A108: @ 0x0807A108 push {lr} ldr r1, _0807A148 @ =gUnk_03004040 movs r0, #0 str r0, [r1] str r0, [r1, #4] str r0, [r1, #8] ldr r2, _0807A14C @ =gPlayerState ldr r0, [r2, #0x30] ldr r1, _0807A150 @ =0xFFBFFFFF ands r0, r1 str r0, [r2, #0x30] ldr r0, _0807A154 @ =gPlayerEntity ldrb r0, [r0, #0xc] cmp r0, #0x17 bne _0807A130 adds r0, r2, #0 adds r0, #0xa0 ldrb r0, [r0] cmp r0, #4 beq _0807A144 _0807A130: adds r1, r2, #0 adds r1, #0xa0 ldrb r0, [r1] subs r0, #4 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #1 bhi _0807A144 movs r0, #1 strb r0, [r1] _0807A144: pop {pc} .align 2, 0 _0807A148: .4byte gUnk_03004040 _0807A14C: .4byte gPlayerState _0807A150: .4byte 0xFFBFFFFF _0807A154: .4byte gPlayerEntity thumb_func_start sub_0807A158 sub_0807A158: @ 0x0807A158 push {r4, lr} ldr r4, _0807A178 @ =gUnk_02002A40 adds r0, r4, #0 adds r0, #0xb4 ldrb r0, [r0] bl sub_0805449C cmp r0, #0 bne _0807A17C adds r0, r4, #0 adds r0, #0xb5 ldrb r0, [r0] bl sub_0805449C b _0807A17E .align 2, 0 _0807A178: .4byte gUnk_02002A40 _0807A17C: movs r0, #1 _0807A17E: pop {r4, pc} thumb_func_start sub_0807A180 sub_0807A180: @ 0x0807A180 push {r4, r5, r6, lr} mov r6, r8 push {r6} sub sp, #0x88 adds r4, r0, #0 adds r5, r1, #0 adds r6, r2, #0 mov r8, r3 ldr r3, _0807A1B4 @ =0xFFFC0000 mov r1, sp movs r2, #0 bl PositionRelative mov r1, sp ldrb r0, [r4, #0x14] strb r0, [r1, #0x14] mov r0, sp adds r1, r5, #0 adds r2, r6, #0 mov r3, r8 bl sub_08003FDE add sp, #0x88 pop {r3} mov r8, r3 pop {r4, r5, r6, pc} .align 2, 0 _0807A1B4: .4byte 0xFFFC0000 thumb_func_start sub_0807A1B8 sub_0807A1B8: @ 0x0807A1B8 push {r4, lr} ldr r4, _0807A1DC @ =gPlayerEntity adds r0, r4, #0 movs r1, #0 movs r2, #0 bl sub_0807A1E8 ldr r1, _0807A1E0 @ =gPlayerState strb r0, [r1, #0x12] ldr r2, _0807A1E4 @ =gUnk_0811C120 ldrb r0, [r1, #0x12] lsls r0, r0, #2 adds r0, r0, r2 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 pop {r4, pc} .align 2, 0 _0807A1DC: .4byte gPlayerEntity _0807A1E0: .4byte gPlayerState _0807A1E4: .4byte gUnk_0811C120 thumb_func_start sub_0807A1E8 sub_0807A1E8: @ 0x0807A1E8 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r5, r0, #0 adds r6, r1, #0 mov r8, r2 movs r1, #0x2e ldrsh r0, [r5, r1] adds r0, r0, r6 ldr r2, _0807A288 @ =gRoomControls ldrh r1, [r2, #6] subs r1, r0, r1 lsrs r4, r1, #4 movs r3, #0x3f ands r4, r3 movs r7, #0x32 ldrsh r1, [r5, r7] add r1, r8 ldrh r2, [r2, #8] subs r2, r1, r2 asrs r2, r2, #4 ands r2, r3 lsls r2, r2, #6 orrs r4, r2 ldr r2, _0807A28C @ =gPlayerEntity adds r2, #0x38 ldrb r2, [r2] bl GetTileTypeByPos adds r2, r0, #0 ldr r1, _0807A290 @ =gPlayerState ldrh r0, [r1, #0x24] cmp r2, r0 beq _0807A23A adds r3, r1, #0 adds r3, #0x37 movs r0, #0 strb r0, [r3] ldrh r7, [r1, #0x24] cmp r2, r7 bne _0807A242 _0807A23A: adds r3, r1, #0 ldrh r0, [r3, #0x22] cmp r4, r0 beq _0807A24E _0807A242: ldr r0, _0807A290 @ =gPlayerState movs r1, #0 strh r4, [r0, #0x22] strh r2, [r0, #0x24] strb r1, [r0, #0x11] adds r3, r0, #0 _0807A24E: adds r2, r3, #0 ldrb r1, [r2, #0x11] adds r0, r1, #0 cmp r0, #0xff beq _0807A25C adds r0, r1, #1 strb r0, [r2, #0x11] _0807A25C: adds r2, #0x37 ldrb r1, [r2] adds r0, r1, #0 cmp r0, #0xff beq _0807A26A adds r0, r1, #1 strb r0, [r2] _0807A26A: ldrb r0, [r3, #0x12] strb r0, [r3, #0x13] adds r0, r5, #0 adds r1, r6, #0 mov r2, r8 bl sub_080002B4 adds r2, r0, #0 ldr r1, _0807A294 @ =gUnk_08007CAC bl sub_08007DD6 pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _0807A288: .4byte gRoomControls _0807A28C: .4byte gPlayerEntity _0807A290: .4byte gPlayerState _0807A294: .4byte gUnk_08007CAC thumb_func_start sub_0807A298 sub_0807A298: @ 0x0807A298 movs r1, #0 strb r1, [r0, #0xb] ldrb r1, [r0, #0x18] movs r2, #3 orrs r1, r2 strb r1, [r0, #0x18] ldr r2, _0807A2B4 @ =gPlayerState ldr r0, [r2, #0x30] movs r1, #0x41 rsbs r1, r1, #0 ands r0, r1 str r0, [r2, #0x30] bx lr .align 2, 0 _0807A2B4: .4byte gPlayerState thumb_func_start sub_0807A2B8 sub_0807A2B8: @ 0x0807A2B8 push {lr} bl sub_08008B22 cmp r0, #0 beq _0807A2C6 movs r0, #1 b _0807A2EC _0807A2C6: ldr r0, _0807A2F0 @ =gPlayerState ldrb r1, [r0, #2] movs r0, #0xc8 ands r0, r1 cmp r0, #0 bne _0807A2EA ldr r1, _0807A2F4 @ =gPlayerEntity adds r0, r1, #0 adds r0, #0x38 ldrb r0, [r0] cmp r0, #1 beq _0807A2EA adds r0, r1, #0 movs r1, #0x44 movs r2, #0 movs r3, #0 bl CreateObjectWithParent _0807A2EA: movs r0, #0 _0807A2EC: pop {pc} .align 2, 0 _0807A2F0: .4byte gPlayerState _0807A2F4: .4byte gPlayerEntity thumb_func_start sub_0807A2F8 sub_0807A2F8: @ 0x0807A2F8 push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} sub sp, #4 adds r4, r0, #0 ldr r0, _0807A364 @ =gRoomControls mov r8, r0 ldrb r0, [r0, #4] cmp r0, #8 bne _0807A312 b _0807A4F2 _0807A312: bl sub_08079778 orrs r0, r4 cmp r0, #0 bne _0807A31E b _0807A4F2 _0807A31E: ldr r7, _0807A368 @ =gPlayerEntity ldrb r1, [r7, #0x14] movs r0, #2 ands r0, r1 cmp r0, #0 beq _0807A36C movs r1, #0x2e ldrsh r2, [r7, r1] mov r6, r8 ldrh r0, [r6, #6] subs r2, r2, r0 asrs r2, r2, #4 movs r3, #0x3f ands r2, r3 movs r0, #0x32 ldrsh r1, [r7, r0] ldr r0, [r7, #0x48] ldrb r5, [r0, #5] adds r0, r1, r5 ldrh r4, [r6, #8] subs r0, r0, r4 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r0, r2 lsls r7, r0, #1 subs r1, r1, r5 subs r1, r1, r4 asrs r1, r1, #4 ands r1, r3 lsls r1, r1, #6 orrs r2, r1 lsls r6, r2, #1 b _0807A3A2 .align 2, 0 _0807A364: .4byte gRoomControls _0807A368: .4byte gPlayerEntity _0807A36C: movs r1, #0x2e ldrsh r3, [r7, r1] ldr r0, [r7, #0x48] ldrb r6, [r0, #2] adds r1, r3, r6 mov r2, r8 ldrh r5, [r2, #6] subs r1, r1, r5 asrs r1, r1, #4 movs r4, #0x3f ands r1, r4 movs r2, #0x32 ldrsh r0, [r7, r2] mov r7, r8 ldrh r2, [r7, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r4 lsls r0, r0, #6 orrs r1, r0 lsls r7, r1, #1 subs r3, r3, r6 subs r3, r3, r5 asrs r3, r3, #4 ands r3, r4 orrs r3, r0 lsls r6, r3, #1 _0807A3A2: movs r0, #0 mov sb, r0 ldr r1, _0807A3F4 @ =gPlayerEntity mov sl, r1 _0807A3AA: movs r2, #0 mov r8, r2 mov r0, sl mov r1, sp adds r2, r7, #0 bl sub_08004202 adds r7, r0, #0 lsrs r4, r7, #1 adds r0, r4, #0 movs r1, #1 bl sub_080002E0 cmp r0, #0 beq _0807A3FC lsls r0, r4, #0x10 lsrs r0, r0, #0x10 mov r1, sl adds r1, #0x38 ldrb r1, [r1] bl sub_080002C8 lsls r0, r0, #0x10 lsrs r0, r0, #0x10 mov r2, sl ldrb r1, [r2, #0x14] lsrs r1, r1, #1 lsls r1, r1, #2 ldr r2, _0807A3F8 @ =gUnk_0811C1D8 adds r1, r1, r2 ldr r1, [r1] bl sub_08007DD6 cmp r0, #0 beq _0807A468 b _0807A400 .align 2, 0 _0807A3F4: .4byte gPlayerEntity _0807A3F8: .4byte gUnk_0811C1D8 _0807A3FC: movs r0, #1 mov r8, r0 _0807A400: ldr r5, _0807A444 @ =gPlayerEntity adds r0, r5, #0 mov r1, sp adds r2, r6, #0 bl sub_08004202 adds r6, r0, #0 lsrs r4, r6, #1 adds r0, r4, #0 movs r1, #1 bl sub_080002E0 cmp r0, #0 beq _0807A44C lsls r0, r4, #0x10 lsrs r0, r0, #0x10 adds r1, r5, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080002C8 lsls r0, r0, #0x10 lsrs r0, r0, #0x10 ldrb r1, [r5, #0x14] lsrs r1, r1, #1 lsls r1, r1, #2 ldr r2, _0807A448 @ =gUnk_0811C1D8 adds r1, r1, r2 ldr r1, [r1] bl sub_08007DD6 cmp r0, #0 beq _0807A468 b _0807A450 .align 2, 0 _0807A444: .4byte gPlayerEntity _0807A448: .4byte gUnk_0811C1D8 _0807A44C: movs r0, #1 add r8, r0 _0807A450: mov r1, r8 cmp r1, #2 bne _0807A45E mov r2, sb cmp r2, #0 bne _0807A46E b _0807A4F2 _0807A45E: movs r0, #1 add sb, r0 mov r1, sb cmp r1, #1 bls _0807A3AA _0807A468: mov r2, sb cmp r2, #0 beq _0807A4F2 _0807A46E: bl CheckIsDungeon cmp r0, #0 beq _0807A4B0 ldr r4, _0807A4AC @ =gPlayerEntity adds r0, r4, #0 mov r1, sp adds r2, r7, #0 bl sub_08004202 adds r7, r0, #0 lsrs r0, r7, #1 movs r1, #2 bl sub_080002E0 cmp r0, #0 bne _0807A4F2 adds r0, r4, #0 mov r1, sp adds r2, r6, #0 bl sub_08004202 adds r6, r0, #0 lsrs r0, r6, #1 movs r1, #2 _0807A4A0: bl sub_080002E0 cmp r0, #0 beq _0807A4EC b _0807A4F2 .align 2, 0 _0807A4AC: .4byte gPlayerEntity _0807A4B0: mov r0, sb cmp r0, #2 bne _0807A4C2 ldr r0, _0807A4E8 @ =gPlayerEntity mov r1, sp adds r2, r7, #0 bl sub_08004202 adds r7, r0, #0 _0807A4C2: lsrs r0, r7, #1 movs r1, #1 bl sub_080002E0 cmp r0, #0 bne _0807A4F2 mov r1, sb cmp r1, #2 bne _0807A4E0 ldr r0, _0807A4E8 @ =gPlayerEntity mov r1, sp adds r2, r6, #0 bl sub_08004202 adds r6, r0, #0 _0807A4E0: lsrs r0, r6, #1 movs r1, #1 b _0807A4A0 .align 2, 0 _0807A4E8: .4byte gPlayerEntity _0807A4EC: mov r0, sb adds r0, #1 b _0807A4F4 _0807A4F2: movs r0, #0 _0807A4F4: add sp, #4 pop {r3, r4, r5} mov r8, r3 mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7, pc} thumb_func_start sub_0807A500 sub_0807A500: @ 0x0807A500 push {r4, r5, r6, lr} ldr r6, _0807A518 @ =gPlayerEntity ldrb r0, [r6, #0x14] lsrs r0, r0, #1 cmp r0, #1 beq _0807A574 cmp r0, #1 bgt _0807A51C cmp r0, #0 beq _0807A526 b _0807A5B4 .align 2, 0 _0807A518: .4byte gPlayerEntity _0807A51C: cmp r0, #2 beq _0807A554 cmp r0, #3 beq _0807A580 b _0807A5B4 _0807A526: movs r1, #0x2e ldrsh r0, [r6, r1] ldr r5, _0807A550 @ =gRoomControls ldrh r1, [r5, #6] subs r0, r0, r1 asrs r0, r0, #4 movs r4, #0x3f ands r0, r4 movs r2, #0x32 ldrsh r1, [r6, r2] ldr r3, [r6, #0x48] ldrb r2, [r3, #5] subs r1, r1, r2 movs r2, #1 ldrsb r2, [r3, r2] adds r1, r1, r2 ldrh r2, [r5, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r4 b _0807A5AA .align 2, 0 _0807A550: .4byte gRoomControls _0807A554: movs r5, #0x2e ldrsh r0, [r6, r5] ldr r4, _0807A570 @ =gRoomControls ldrh r1, [r4, #6] subs r0, r0, r1 asrs r0, r0, #4 movs r3, #0x3f ands r0, r3 ldr r2, [r6, #0x48] movs r5, #0x32 ldrsh r1, [r6, r5] ldrb r5, [r2, #5] adds r1, r1, r5 b _0807A59A .align 2, 0 _0807A570: .4byte gRoomControls _0807A574: ldr r2, [r6, #0x48] movs r1, #0x2e ldrsh r0, [r6, r1] ldrb r5, [r2, #2] adds r0, r0, r5 b _0807A58A _0807A580: movs r1, #0x2e ldrsh r0, [r6, r1] ldr r2, [r6, #0x48] ldrb r1, [r2, #2] subs r0, r0, r1 _0807A58A: ldr r4, _0807A5B0 @ =gRoomControls ldrh r1, [r4, #6] subs r0, r0, r1 asrs r0, r0, #4 movs r3, #0x3f ands r0, r3 movs r5, #0x32 ldrsh r1, [r6, r5] _0807A59A: ldrb r2, [r2, #1] lsls r2, r2, #0x18 asrs r2, r2, #0x18 adds r1, r1, r2 ldrh r2, [r4, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r3 _0807A5AA: lsls r1, r1, #6 orrs r0, r1 b _0807A5B6 .align 2, 0 _0807A5B0: .4byte gRoomControls _0807A5B4: movs r0, #0 _0807A5B6: pop {r4, r5, r6, pc} thumb_func_start sub_0807A5B8 sub_0807A5B8: @ 0x0807A5B8 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} mov sb, r0 ldr r2, _0807A5F8 @ =gPlayerState ldrb r3, [r2, #2] movs r4, #0x80 adds r0, r4, #0 ands r0, r3 cmp r0, #0 beq _0807A5D2 b _0807A736 _0807A5D2: ldr r1, [r2, #0x30] movs r0, #0x40 ands r0, r1 cmp r0, #0 beq _0807A5DE b _0807A736 _0807A5DE: adds r0, r2, #0 adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 beq _0807A5EA b _0807A736 _0807A5EA: adds r0, r1, #0 ands r0, r4 cmp r0, #0 beq _0807A600 ldr r7, _0807A5FC @ =gUnk_0800833C b _0807A63A .align 2, 0 _0807A5F8: .4byte gPlayerState _0807A5FC: .4byte gUnk_0800833C _0807A600: movs r0, #0x80 lsls r0, r0, #0x11 ands r1, r0 cmp r1, #0 bne _0807A60E cmp r3, #0 beq _0807A618 _0807A60E: ldr r7, _0807A614 @ =gUnk_0800845C b _0807A63A .align 2, 0 _0807A614: .4byte gUnk_0800845C _0807A618: ldrb r0, [r2, #5] cmp r0, #0 bne _0807A624 ldrb r0, [r2, #0x1c] cmp r0, #0 beq _0807A62C _0807A624: ldr r7, _0807A628 @ =gUnk_080084BC b _0807A63A .align 2, 0 _0807A628: .4byte gUnk_080084BC _0807A62C: adds r0, r2, #0 adds r0, #0xaa ldrb r0, [r0] ldr r7, _0807A740 @ =gUnk_080082DC cmp r0, #0 beq _0807A63A ldr r7, _0807A744 @ =gUnk_0800851C _0807A63A: mov r0, sb cmp r0, #0 beq _0807A6B8 cmp r0, #0x10 beq _0807A6B8 ldr r6, _0807A748 @ =gPlayerEntity ldr r2, [r6, #0x48] movs r1, #0x2e ldrsh r0, [r6, r1] ldrb r3, [r2, #2] adds r0, r0, r3 movs r1, #0 ldrsb r1, [r2, r1] adds r0, r0, r1 ldr r1, _0807A74C @ =gRoomControls mov r8, r1 ldrh r1, [r1, #6] subs r5, r0, r1 movs r3, #0x32 ldrsh r0, [r6, r3] movs r1, #1 ldrsb r1, [r2, r1] adds r0, r0, r1 mov r2, r8 ldrh r1, [r2, #8] subs r4, r0, r1 adds r0, r5, #0 adds r1, r4, #0 adds r2, r7, #0 bl sub_080086B4 cmp r0, #0 beq _0807A688 adds r0, r5, #0 adds r1, r4, #0 adds r2, r7, #0 movs r3, #1 bl sub_0807A750 _0807A688: movs r3, #0x2e ldrsh r1, [r6, r3] ldr r2, [r6, #0x48] ldrb r0, [r2, #2] subs r1, r1, r0 movs r0, #0 ldrsb r0, [r2, r0] adds r1, r1, r0 mov r2, r8 ldrh r0, [r2, #6] subs r5, r1, r0 adds r0, r5, #0 adds r1, r4, #0 adds r2, r7, #0 bl sub_080086B4 cmp r0, #0 beq _0807A6B8 adds r0, r5, #0 adds r1, r4, #0 adds r2, r7, #0 movs r3, #3 bl sub_0807A750 _0807A6B8: mov r3, sb cmp r3, #8 beq _0807A736 cmp r3, #0x18 beq _0807A736 ldr r6, _0807A748 @ =gPlayerEntity movs r0, #0x2e ldrsh r1, [r6, r0] ldr r2, [r6, #0x48] movs r0, #0 ldrsb r0, [r2, r0] adds r1, r1, r0 ldr r3, _0807A74C @ =gRoomControls mov r8, r3 ldrh r0, [r3, #6] subs r5, r1, r0 movs r1, #0x32 ldrsh r0, [r6, r1] ldrb r3, [r2, #5] adds r0, r0, r3 movs r1, #1 ldrsb r1, [r2, r1] adds r0, r0, r1 mov r2, r8 ldrh r1, [r2, #8] subs r4, r0, r1 adds r0, r5, #0 adds r1, r4, #0 adds r2, r7, #0 bl sub_080086B4 cmp r0, #0 beq _0807A706 adds r0, r5, #0 adds r1, r4, #0 adds r2, r7, #0 movs r3, #2 bl sub_0807A750 _0807A706: movs r3, #0x32 ldrsh r1, [r6, r3] ldr r2, [r6, #0x48] ldrb r0, [r2, #5] subs r1, r1, r0 movs r0, #1 ldrsb r0, [r2, r0] adds r1, r1, r0 mov r2, r8 ldrh r0, [r2, #8] subs r4, r1, r0 adds r0, r5, #0 adds r1, r4, #0 adds r2, r7, #0 bl sub_080086B4 cmp r0, #0 beq _0807A736 adds r0, r5, #0 adds r1, r4, #0 adds r2, r7, #0 movs r3, #0 bl sub_0807A750 _0807A736: pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7, pc} .align 2, 0 _0807A740: .4byte gUnk_080082DC _0807A744: .4byte gUnk_0800851C _0807A748: .4byte gPlayerEntity _0807A74C: .4byte gRoomControls thumb_func_start sub_0807A750 sub_0807A750: @ 0x0807A750 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r7, r0, #0 adds r6, r1, #0 mov r8, r2 adds r5, r3, #0 movs r0, #1 ands r0, r5 cmp r0, #0 bne _0807A76C movs r4, #0xf ands r4, r6 b _0807A770 _0807A76C: movs r4, #0xf ands r4, r7 _0807A770: cmp r4, #0 bne _0807A776 b _0807A88E _0807A776: cmp r4, #0xf bne _0807A77C b _0807A88E _0807A77C: lsrs r0, r7, #4 movs r2, #0x3f ands r0, r2 lsrs r1, r6, #4 ands r1, r2 lsls r1, r1, #6 orrs r0, r1 ldr r1, _0807A7A8 @ =gPlayerEntity adds r1, #0x38 ldrb r1, [r1] bl sub_080002E0 adds r1, r0, #0 cmp r1, #0xf bls _0807A7AE cmp r1, #0xff beq _0807A7AC mov r2, r8 adds r0, r1, r2 subs r0, #0x10 ldrb r1, [r0] b _0807A7AE .align 2, 0 _0807A7A8: .4byte gPlayerEntity _0807A7AC: movs r1, #0xf _0807A7AE: ldr r0, _0807A7D8 @ =gUnk_0800823C lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] movs r0, #1 ands r0, r5 cmp r0, #0 bne _0807A824 movs r0, #0xf ands r0, r7 movs r2, #0x80 lsls r2, r2, #8 asrs r2, r0 cmp r5, #0 bne _0807A7F4 ldr r3, _0807A7DC @ =gPlayerEntity cmp r4, #0xe bgt _0807A7F0 lsls r0, r4, #1 adds r1, r0, r1 b _0807A7E8 .align 2, 0 _0807A7D8: .4byte gUnk_0800823C _0807A7DC: .4byte gPlayerEntity _0807A7E0: adds r1, #2 adds r4, #1 cmp r4, #0xe bgt _0807A7F0 _0807A7E8: ldrh r0, [r1] ands r0, r2 cmp r0, #0 bne _0807A7E0 _0807A7F0: subs r4, #1 b _0807A816 _0807A7F4: ldr r3, _0807A800 @ =gPlayerEntity cmp r4, #0 ble _0807A814 lsls r0, r4, #1 adds r1, r0, r1 b _0807A80C .align 2, 0 _0807A800: .4byte gPlayerEntity _0807A804: subs r1, #2 subs r4, #1 cmp r4, #0 ble _0807A814 _0807A80C: ldrh r0, [r1] ands r0, r2 cmp r0, #0 bne _0807A804 _0807A814: adds r4, #1 _0807A816: movs r0, #0xf ands r0, r6 subs r0, r4, r0 ldrh r1, [r3, #0x32] adds r0, r0, r1 strh r0, [r3, #0x32] b _0807A88E _0807A824: movs r3, #0xf ands r6, r3 lsls r0, r6, #1 adds r0, r0, r1 ldrh r2, [r0] cmp r5, #1 bne _0807A85C subs r0, r3, r4 lsrs r2, r0 ldr r3, _0807A858 @ =gPlayerEntity cmp r4, #0 ble _0807A854 ands r5, r2 cmp r5, #0 beq _0807A854 movs r1, #1 _0807A844: lsrs r2, r2, #1 subs r4, #1 cmp r4, #0 ble _0807A854 adds r0, r2, #0 ands r0, r1 cmp r0, #0 bne _0807A844 _0807A854: adds r4, #1 b _0807A882 .align 2, 0 _0807A858: .4byte gPlayerEntity _0807A85C: lsls r2, r4 ldr r3, _0807A86C @ =gPlayerEntity cmp r4, #0xe bgt _0807A880 movs r1, #0x80 lsls r1, r1, #8 b _0807A878 .align 2, 0 _0807A86C: .4byte gPlayerEntity _0807A870: lsls r2, r2, #1 adds r4, #1 cmp r4, #0xe bgt _0807A880 _0807A878: adds r0, r2, #0 ands r0, r1 cmp r0, #0 bne _0807A870 _0807A880: subs r4, #1 _0807A882: movs r0, #0xf ands r0, r7 subs r0, r4, r0 ldrh r2, [r3, #0x2e] adds r0, r0, r2 strh r0, [r3, #0x2e] _0807A88E: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} thumb_func_start sub_0807A894 sub_0807A894: @ 0x0807A894 push {lr} ldrb r1, [r0, #0x15] cmp r1, #8 beq _0807A8BA cmp r1, #8 bgt _0807A8A6 cmp r1, #0 beq _0807A8B0 b _0807A8C8 _0807A8A6: cmp r1, #0x10 beq _0807A8B6 cmp r1, #0x18 beq _0807A8C0 b _0807A8C8 _0807A8B0: movs r2, #8 rsbs r2, r2, #0 b _0807A8CA _0807A8B6: movs r2, #5 b _0807A8CA _0807A8BA: movs r2, #0 movs r1, #8 b _0807A8CC _0807A8C0: movs r2, #0 movs r1, #8 rsbs r1, r1, #0 b _0807A8CC _0807A8C8: movs r2, #0 _0807A8CA: movs r1, #0 _0807A8CC: bl sub_080002B4 pop {pc} .align 2, 0 thumb_func_start nullsub_505 nullsub_505: @ 0x0807A8D4 bx lr .align 2, 0 thumb_func_start sub_0807A8D8 sub_0807A8D8: @ 0x0807A8D8 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} adds r5, r0, #0 ldr r0, _0807AA5C @ =gPlayerState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _0807A8F0 b _0807A9F6 _0807A8F0: movs r1, #0x2e ldrsh r0, [r5, r1] ldr r7, _0807AA60 @ =gRoomControls ldrh r1, [r7, #6] subs r0, r0, r1 asrs r0, r0, #4 movs r6, #0x3f ands r0, r6 movs r2, #0x32 ldrsh r1, [r5, r2] ldrh r2, [r7, #8] adds r2, #1 subs r1, r1, r2 asrs r1, r1, #4 ands r1, r6 lsls r1, r1, #6 orrs r0, r1 ldr r1, _0807AA64 @ =gPlayerEntity adds r1, #0x38 mov sb, r1 ldrb r1, [r1] bl sub_080002EC adds r4, r0, #0 movs r0, #0x20 mov r8, r0 ands r4, r0 cmp r4, #0 beq _0807A94E movs r2, #0x2e ldrsh r1, [r5, r2] ldrh r0, [r7, #6] subs r1, r1, r0 asrs r1, r1, #4 ands r1, r6 movs r2, #0x32 ldrsh r0, [r5, r2] ldrh r2, [r7, #8] adds r2, #1 subs r0, r0, r2 asrs r0, r0, #4 ands r0, r6 lsls r0, r0, #6 orrs r1, r0 adds r0, r5, #0 bl sub_0807AAF8 _0807A94E: movs r1, #0x2e ldrsh r0, [r5, r1] ldrh r1, [r7, #6] subs r1, #2 subs r0, r0, r1 asrs r0, r0, #4 ands r0, r6 movs r2, #0x32 ldrsh r1, [r5, r2] ldrh r2, [r7, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r6 lsls r1, r1, #6 orrs r0, r1 mov r2, sb ldrb r1, [r2] bl sub_080002EC adds r4, r0, #0 mov r0, r8 ands r4, r0 cmp r4, #0 beq _0807A9A2 movs r2, #0x2e ldrsh r1, [r5, r2] ldrh r0, [r7, #6] subs r0, #2 subs r1, r1, r0 asrs r1, r1, #4 ands r1, r6 movs r2, #0x32 ldrsh r0, [r5, r2] ldrh r2, [r7, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r6 lsls r0, r0, #6 orrs r1, r0 adds r0, r5, #0 bl sub_0807AAF8 _0807A9A2: movs r1, #0x2e ldrsh r0, [r5, r1] ldrh r1, [r7, #6] adds r1, #2 subs r0, r0, r1 asrs r0, r0, #4 ands r0, r6 movs r2, #0x32 ldrsh r1, [r5, r2] ldrh r2, [r7, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r6 lsls r1, r1, #6 orrs r0, r1 mov r2, sb ldrb r1, [r2] bl sub_080002EC adds r4, r0, #0 mov r0, r8 ands r4, r0 cmp r4, #0 beq _0807A9F6 movs r2, #0x2e ldrsh r1, [r5, r2] ldrh r0, [r7, #6] adds r0, #2 subs r1, r1, r0 asrs r1, r1, #4 ands r1, r6 movs r2, #0x32 ldrsh r0, [r5, r2] ldrh r2, [r7, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r6 lsls r0, r0, #6 orrs r1, r0 adds r0, r5, #0 bl sub_0807AAF8 _0807A9F6: movs r1, #0x2e ldrsh r0, [r5, r1] ldr r7, _0807AA60 @ =gRoomControls ldrh r1, [r7, #6] subs r0, r0, r1 asrs r0, r0, #4 movs r6, #0x3f ands r0, r6 movs r2, #0x32 ldrsh r1, [r5, r2] ldrh r2, [r7, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r6 lsls r1, r1, #6 orrs r0, r1 ldr r1, _0807AA64 @ =gPlayerEntity adds r1, #0x38 ldrb r1, [r1] bl sub_080002EC adds r4, r0, #0 movs r0, #0x20 ands r0, r4 cmp r0, #0 beq _0807AA4C movs r0, #0x2e ldrsh r1, [r5, r0] ldrh r0, [r7, #6] subs r1, r1, r0 asrs r1, r1, #4 ands r1, r6 movs r2, #0x32 ldrsh r0, [r5, r2] ldrh r2, [r7, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r6 lsls r0, r0, #6 orrs r1, r0 adds r0, r5, #0 bl sub_0807AAF8 _0807AA4C: movs r0, #2 ands r0, r4 cmp r0, #0 beq _0807AA68 adds r0, r5, #0 bl sub_0807AABC b _0807AA76 .align 2, 0 _0807AA5C: .4byte gPlayerState _0807AA60: .4byte gRoomControls _0807AA64: .4byte gPlayerEntity _0807AA68: movs r0, #4 ands r0, r4 cmp r0, #0 beq _0807AA76 adds r0, r5, #0 bl sub_0807AA80 _0807AA76: pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_0807AA80 sub_0807AA80: @ 0x0807AA80 push {lr} adds r3, r0, #0 ldr r0, _0807AAB8 @ =gPlayerState ldr r0, [r0, #0x30] movs r1, #0x40 ands r0, r1 cmp r0, #0 bne _0807AAB6 adds r0, r3, #0 adds r0, #0x38 movs r1, #2 strb r1, [r0] movs r1, #0x36 ldrsh r0, [r3, r1] cmp r0, #0 bne _0807AAB6 ldrb r2, [r3, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 movs r2, #0x40 orrs r0, r2 strb r0, [r3, #0x1b] ldrb r0, [r3, #0x19] ands r1, r0 orrs r1, r2 strb r1, [r3, #0x19] _0807AAB6: pop {pc} .align 2, 0 _0807AAB8: .4byte gPlayerState thumb_func_start sub_0807AABC sub_0807AABC: @ 0x0807AABC push {lr} adds r3, r0, #0 ldr r0, _0807AAF4 @ =gPlayerState ldr r0, [r0, #0x30] movs r1, #0x40 ands r0, r1 cmp r0, #0 bne _0807AAF2 adds r0, r3, #0 adds r0, #0x38 movs r1, #1 strb r1, [r0] movs r1, #0x36 ldrsh r0, [r3, r1] cmp r0, #0 bne _0807AAF2 ldrb r2, [r3, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 movs r2, #0x80 orrs r0, r2 strb r0, [r3, #0x1b] ldrb r0, [r3, #0x19] ands r1, r0 orrs r1, r2 strb r1, [r3, #0x19] _0807AAF2: pop {pc} .align 2, 0 _0807AAF4: .4byte gPlayerState thumb_func_start sub_0807AAF8 sub_0807AAF8: @ 0x0807AAF8 push {r4, lr} adds r3, r0, #0 adds r2, r1, #0 movs r1, #0x36 ldrsh r0, [r3, r1] cmp r0, #0 bne _0807AB3C adds r0, r3, #0 adds r0, #0x38 ldrb r0, [r0] lsls r0, r0, #0x1e orrs r2, r0 movs r3, #0 ldr r0, _0807AB40 @ =gPlayerState ldr r1, [r0, #0x40] adds r4, r0, #0 cmp r1, r2 beq _0807AB32 adds r1, r4, #0 adds r1, #0x40 _0807AB20: ldr r0, [r1] stm r1!, {r2} adds r2, r0, #0 adds r3, #1 cmp r3, #0xe bhi _0807AB32 ldr r0, [r1] cmp r0, r2 bne _0807AB20 _0807AB32: lsls r0, r3, #2 adds r1, r4, #0 adds r1, #0x40 adds r0, r0, r1 str r2, [r0] _0807AB3C: pop {r4, pc} .align 2, 0 _0807AB40: .4byte gPlayerState thumb_func_start sub_0807AB44 sub_0807AB44: @ 0x0807AB44 push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} adds r6, r0, #0 adds r7, r1, #0 mov r8, r2 movs r1, #0x2e ldrsh r0, [r6, r1] adds r0, r0, r7 ldr r2, _0807ABF0 @ =gRoomControls mov sb, r2 ldrh r1, [r2, #6] subs r0, r0, r1 asrs r0, r0, #4 movs r3, #0x3f mov sl, r3 ands r0, r3 movs r5, #0x32 ldrsh r1, [r6, r5] add r1, r8 ldrh r2, [r2, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r3 lsls r1, r1, #6 orrs r0, r1 adds r1, r6, #0 adds r1, #0x38 ldrb r1, [r1] bl GetTileType movs r1, #0xb bl sub_0806FC50 adds r5, r0, #0 cmp r5, #0 beq _0807AC44 ldrh r0, [r5, #6] cmp r0, #0x76 bne _0807ABF4 movs r0, #0x2a movs r1, #1 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _0807AC44 lsls r2, r7, #0x10 mov r0, r8 lsls r3, r0, #0x10 adds r0, r6, #0 adds r1, r4, #0 bl PositionRelative adds r0, r4, #0 bl sub_08004168 ldrh r0, [r5, #6] movs r2, #0x2e ldrsh r1, [r4, r2] mov r3, sb ldrh r2, [r3, #6] subs r1, r1, r2 asrs r1, r1, #4 mov r5, sl ands r1, r5 movs r3, #0x32 ldrsh r2, [r4, r3] mov r5, sb ldrh r3, [r5, #8] subs r2, r2, r3 asrs r2, r2, #4 mov r3, sl ands r2, r3 lsls r2, r2, #6 orrs r1, r2 adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl sub_0807B7D8 b _0807AC44 .align 2, 0 _0807ABF0: .4byte gRoomControls _0807ABF4: movs r0, #0x2a movs r1, #2 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _0807AC44 lsls r2, r7, #0x10 mov r0, r8 lsls r3, r0, #0x10 adds r0, r6, #0 adds r1, r4, #0 bl PositionRelative str r5, [r4, #0x54] ldr r0, _0807AC50 @ =0x0000404F movs r2, #0x2e ldrsh r1, [r4, r2] mov r3, sb ldrh r2, [r3, #6] subs r1, r1, r2 asrs r1, r1, #4 mov r5, sl ands r1, r5 movs r3, #0x32 ldrsh r2, [r4, r3] mov r5, sb ldrh r3, [r5, #8] subs r2, r2, r3 asrs r2, r2, #4 mov r3, sl ands r2, r3 lsls r2, r2, #6 orrs r1, r2 adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl SetTile _0807AC44: pop {r3, r4, r5} mov r8, r3 mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7, pc} .align 2, 0 _0807AC50: .4byte 0x0000404F thumb_func_start sub_0807AC54 sub_0807AC54: @ 0x0807AC54 push {lr} adds r2, r0, #0 ldr r0, _0807AC74 @ =gPlayerState ldrb r1, [r0, #0x11] adds r3, r0, #0 cmp r1, #0 beq _0807ACC6 ldrb r0, [r3, #0x12] cmp r0, #0x2a beq _0807ACA8 cmp r0, #0x2a bgt _0807AC78 cmp r0, #0x1e beq _0807AC82 b _0807ACC6 .align 2, 0 _0807AC74: .4byte gPlayerState _0807AC78: cmp r0, #0x2b beq _0807AC90 cmp r0, #0x2c beq _0807ACB6 b _0807ACC6 _0807AC82: ldrh r0, [r2, #0x2e] movs r1, #0x10 rsbs r1, r1, #0 ands r1, r0 movs r0, #8 orrs r1, r0 strh r1, [r2, #0x2e] _0807AC90: movs r0, #0 movs r1, #0x1d strb r1, [r2, #0xc] strb r0, [r2, #0xd] strh r0, [r2, #0x30] ldr r0, _0807ACA4 @ =0x000002CF strh r0, [r3, #8] movs r0, #1 b _0807ACC8 .align 2, 0 _0807ACA4: .4byte 0x000002CF _0807ACA8: ldrh r0, [r2, #0x2e] movs r1, #0x10 rsbs r1, r1, #0 ands r1, r0 movs r0, #8 orrs r1, r0 strh r1, [r2, #0x2e] _0807ACB6: movs r0, #0 movs r1, #0x1d strb r1, [r2, #0xc] movs r1, #1 strb r1, [r2, #0xd] strh r0, [r2, #0x30] movs r0, #1 b _0807ACC8 _0807ACC6: movs r0, #0 _0807ACC8: pop {pc} .align 2, 0 thumb_func_start sub_0807ACCC sub_0807ACCC: @ 0x0807ACCC push {r4, lr} adds r4, r0, #0 adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] adds r1, r4, #0 adds r1, #0x42 movs r0, #0 strb r0, [r1] movs r0, #0x72 bl GetInventoryValue movs r1, #0xc0 cmp r0, #1 bne _0807ACF4 adds r1, #0x40 _0807ACF4: movs r2, #0x24 ldrsh r0, [r4, r2] cmp r1, r0 ble _0807AD18 strh r1, [r4, #0x24] ldr r0, _0807AD14 @ =gPlayerState ldrb r1, [r0, #0xd] strb r1, [r4, #0x15] adds r0, #0x26 ldrb r1, [r0] movs r0, #0xf ands r0, r1 cmp r0, #1 bne _0807ADB4 b _0807AD1E .align 2, 0 _0807AD14: .4byte gPlayerState _0807AD18: ldrh r0, [r4, #0x24] subs r0, #4 strh r0, [r4, #0x24] _0807AD1E: ldr r2, _0807AD3C @ =gPlayerState adds r1, r2, #0 adds r1, #0x89 ldrb r0, [r1] cmp r0, #0 bne _0807AD40 adds r0, r4, #0 bl sub_0807ADB8 cmp r0, #0 bne _0807AD74 adds r0, r4, #0 bl sub_0807AE20 b _0807AD74 .align 2, 0 _0807AD3C: .4byte gPlayerState _0807AD40: subs r0, #1 strb r0, [r1] lsls r0, r0, #0x18 cmp r0, #0 beq _0807AD52 adds r0, r4, #0 bl sub_0807ADB8 b _0807AD74 _0807AD52: adds r2, #0x26 ldrb r1, [r2] movs r0, #0x7f ands r0, r1 strb r0, [r2] 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] ldr r0, _0807ADA0 @ =0x00000163 bl PlaySFX _0807AD74: ldr r0, _0807ADA4 @ =gPlayerState adds r0, #0x26 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0807ADA8 adds r2, r4, #0 adds r2, #0x3c ldrb r1, [r2] movs r0, #4 orrs r0, r1 strb r0, [r2] subs r2, #0x13 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 b _0807ADB2 .align 2, 0 _0807ADA0: .4byte 0x00000163 _0807ADA4: .4byte gPlayerState _0807ADA8: adds r2, r4, #0 adds r2, #0x3c ldrb r1, [r2] movs r0, #0xfb ands r0, r1 _0807ADB2: strb r0, [r2] _0807ADB4: pop {r4, pc} .align 2, 0 thumb_func_start sub_0807ADB8 sub_0807ADB8: @ 0x0807ADB8 push {r4, lr} adds r2, r0, #0 ldr r3, _0807ADF4 @ =gPlayerState adds r0, r3, #0 adds r0, #0x92 ldrh r1, [r0] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _0807AE1C movs r0, #0x26 adds r0, r0, r3 mov ip, r0 ldrb r0, [r0] movs r1, #0x80 eors r0, r1 mov r1, ip strb r0, [r1] movs r1, #0x80 ands r0, r1 lsls r0, r0, #0x18 lsrs r4, r0, #0x18 cmp r4, #0 beq _0807ADF8 adds r1, r3, #0 adds r1, #0x89 movs r0, #0x78 strb r0, [r1] b _0807AE0E .align 2, 0 _0807ADF4: .4byte gPlayerState _0807ADF8: 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] adds r0, r3, #0 adds r0, #0x89 strb r4, [r0] _0807AE0E: ldr r0, _0807AE18 @ =0x00000163 bl PlaySFX movs r0, #1 b _0807AE1E .align 2, 0 _0807AE18: .4byte 0x00000163 _0807AE1C: movs r0, #0 _0807AE1E: pop {r4, pc} thumb_func_start sub_0807AE20 sub_0807AE20: @ 0x0807AE20 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0x17 bne _0807AE32 ldr r0, _0807AE58 @ =gPlayerState ldrb r0, [r0, #0xa] cmp r0, #0 bne _0807AE74 _0807AE32: ldr r0, _0807AE5C @ =gRoomControls ldrh r0, [r0] cmp r0, #0 bne _0807AE74 ldr r0, _0807AE58 @ =gPlayerState adds r0, #0x92 ldrh r1, [r0] movs r0, #8 ands r0, r1 cmp r0, #0 beq _0807AE74 movs r0, #0x72 bl GetInventoryValue cmp r0, #1 bne _0807AE60 movs r0, #0xe0 lsls r0, r0, #1 b _0807AE64 .align 2, 0 _0807AE58: .4byte gPlayerState _0807AE5C: .4byte gRoomControls _0807AE60: movs r0, #0xc0 lsls r0, r0, #1 _0807AE64: strh r0, [r4, #0x24] adds r0, r4, #0 bl sub_08079520 movs r0, #0xb1 lsls r0, r0, #1 bl PlaySFX _0807AE74: movs r0, #0x10 bl sub_080793E4 cmp r0, #0 beq _0807AEA8 adds r1, r4, #0 adds r1, #0x3d movs r0, #0x14 strb r0, [r1] adds r1, #5 movs r0, #4 strb r0, [r1] ldrb r0, [r4, #0x14] lsls r0, r0, #2 movs r1, #0x10 eors r0, r1 adds r1, r4, #0 adds r1, #0x3e strb r0, [r1] movs r0, #2 rsbs r0, r0, #0 bl ModHealth movs r0, #0x7a bl PlaySFX _0807AEA8: ldrb r1, [r4, #0x15] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0807AECC ldr r0, _0807AEC8 @ =gScreenTransition ldr r0, [r0] movs r1, #0xf ands r0, r1 cmp r0, #0 bne _0807AEDE adds r0, r4, #0 movs r1, #4 bl sub_080A2A84 b _0807AEDE .align 2, 0 _0807AEC8: .4byte gScreenTransition _0807AECC: ldr r0, _0807AEE0 @ =gScreenTransition ldr r0, [r0] movs r1, #7 ands r0, r1 cmp r0, #0 bne _0807AEDE adds r0, r4, #0 bl CreateWaterTrace _0807AEDE: pop {r4, pc} .align 2, 0 _0807AEE0: .4byte gScreenTransition thumb_func_start sub_0807AEE4 sub_0807AEE4: @ 0x0807AEE4 push {r4, lr} ldr r0, _0807AFE4 @ =gPlayerState adds r4, r0, #0 adds r4, #0xac movs r0, #0 strh r0, [r4] movs r0, #0x48 bl GetInventoryValue cmp r0, #1 bne _0807AF02 ldrh r0, [r4] movs r1, #1 orrs r0, r1 strh r0, [r4] _0807AF02: movs r0, #0x49 bl GetInventoryValue cmp r0, #1 bne _0807AF14 ldrh r0, [r4] movs r1, #2 orrs r0, r1 strh r0, [r4] _0807AF14: movs r0, #0x4a bl GetInventoryValue cmp r0, #1 bne _0807AF26 ldrh r0, [r4] movs r1, #4 orrs r0, r1 strh r0, [r4] _0807AF26: movs r0, #0x4b bl GetInventoryValue cmp r0, #1 bne _0807AF38 ldrh r0, [r4] movs r1, #8 orrs r0, r1 strh r0, [r4] _0807AF38: movs r0, #0x4c bl GetInventoryValue cmp r0, #1 bne _0807AF4A ldrh r0, [r4] movs r1, #0x10 orrs r0, r1 strh r0, [r4] _0807AF4A: movs r0, #0x4d bl GetInventoryValue cmp r0, #1 bne _0807AF5C ldrh r0, [r4] movs r1, #0x20 orrs r0, r1 strh r0, [r4] _0807AF5C: movs r0, #0x4e bl GetInventoryValue cmp r0, #1 bne _0807AF6E ldrh r0, [r4] movs r1, #0x40 orrs r0, r1 strh r0, [r4] _0807AF6E: movs r0, #0x4f bl GetInventoryValue cmp r0, #1 bne _0807AF80 ldrh r0, [r4] movs r1, #0x80 orrs r0, r1 strh r0, [r4] _0807AF80: movs r0, #6 bl GetInventoryValue cmp r0, #1 bne _0807AF96 ldrh r0, [r4] movs r2, #0x80 lsls r2, r2, #1 adds r1, r2, #0 orrs r0, r1 strh r0, [r4] _0807AF96: movs r0, #0x73 bl GetInventoryValue cmp r0, #1 bne _0807AFAC ldrh r0, [r4] movs r3, #0x80 lsls r3, r3, #2 adds r1, r3, #0 orrs r0, r1 strh r0, [r4] _0807AFAC: movs r0, #0x74 bl GetInventoryValue cmp r0, #1 bne _0807AFC6 ldr r0, _0807AFE4 @ =gPlayerState adds r0, #0xac ldrh r2, [r0] movs r3, #0x80 lsls r3, r3, #3 adds r1, r3, #0 orrs r1, r2 strh r1, [r0] _0807AFC6: movs r0, #0x75 bl GetInventoryValue cmp r0, #1 bne _0807AFE0 ldr r0, _0807AFE4 @ =gPlayerState adds r0, #0xac ldrh r2, [r0] movs r3, #0x80 lsls r3, r3, #4 adds r1, r3, #0 orrs r1, r2 strh r1, [r0] _0807AFE0: pop {r4, pc} .align 2, 0 _0807AFE4: .4byte gPlayerState thumb_func_start sub_0807AFE8 sub_0807AFE8: @ 0x0807AFE8 push {lr} bl sub_08077B20 ldr r0, _0807B00C @ =gPlayerEntity movs r1, #0x43 movs r2, #0 bl CreateFx adds r1, r0, #0 cmp r1, #0 beq _0807B004 ldrh r0, [r1, #0x32] adds r0, #1 strh r0, [r1, #0x32] _0807B004: ldr r1, _0807B010 @ =gPlayerState movs r0, #9 strb r0, [r1, #0xc] pop {pc} .align 2, 0 _0807B00C: .4byte gPlayerEntity _0807B010: .4byte gPlayerState thumb_func_start sub_0807B014 sub_0807B014: @ 0x0807B014 push {lr} ldr r2, _0807B03C @ =gPlayerState adds r0, r2, #0 adds r0, #0xac ldrh r1, [r0] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _0807B044 ldr r0, _0807B040 @ =gUnk_02002A40 adds r1, r0, #0 adds r1, #0xaa adds r0, #0xab ldrb r1, [r1] ldrb r0, [r0] cmp r1, r0 bne _0807B044 movs r0, #0xf b _0807B066 .align 2, 0 _0807B03C: .4byte gPlayerState _0807B040: .4byte gUnk_02002A40 _0807B044: adds r0, r2, #0 adds r0, #0xac ldrh r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0807B064 ldr r0, _0807B060 @ =gUnk_02002A40 adds r0, #0xaa ldrb r0, [r0] cmp r0, #8 bhi _0807B064 movs r0, #0x16 b _0807B066 .align 2, 0 _0807B060: .4byte gUnk_02002A40 _0807B064: movs r0, #0 _0807B066: pop {pc} thumb_func_start sub_0807B068 sub_0807B068: @ 0x0807B068 push {lr} ldr r2, _0807B090 @ =gPlayerState ldrb r1, [r2, #0x1e] ldrb r0, [r2, #4] orrs r0, r1 cmp r0, #0 bne _0807B0C2 adds r0, r2, #0 adds r0, #0x26 ldrb r1, [r0] cmp r1, #0 beq _0807B0A4 movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0807B098 ldr r0, _0807B094 @ =0x00000C1C strh r0, [r2, #8] b _0807B0C2 .align 2, 0 _0807B090: .4byte gPlayerState _0807B094: .4byte 0x00000C1C _0807B098: ldr r0, _0807B0A0 @ =0x00000C0C strh r0, [r2, #8] b _0807B0C2 .align 2, 0 _0807B0A0: .4byte 0x00000C0C _0807B0A4: ldrb r1, [r2, #0xd] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0807B0B8 ldrh r0, [r2, #8] ldr r1, _0807B0B4 @ =0x00000C18 b _0807B0BC .align 2, 0 _0807B0B4: .4byte 0x00000C18 _0807B0B8: ldrh r0, [r2, #8] ldr r1, _0807B0C4 @ =0x00000C04 _0807B0BC: cmp r0, r1 beq _0807B0C2 strh r1, [r2, #8] _0807B0C2: pop {pc} .align 2, 0 _0807B0C4: .4byte 0x00000C04 thumb_func_start sub_0807B0C8 sub_0807B0C8: @ 0x0807B0C8 push {r4, lr} ldr r4, _0807B0F8 @ =gPlayerEntity 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 pop {r4, pc} .align 2, 0 _0807B0F8: .4byte gPlayerEntity thumb_func_start sub_0807B0FC sub_0807B0FC: @ 0x0807B0FC push {lr} ldr r2, _0807B110 @ =gUnk_0811C27C ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0807B110: .4byte gUnk_0811C27C thumb_func_start sub_0807B114 sub_0807B114: @ 0x0807B114 movs r1, #1 strb r1, [r0, #0xd] ldr r1, _0807B124 @ =gPlayerState adds r1, #0x38 ldrb r1, [r1] adds r0, #0x6c strb r1, [r0] bx lr .align 2, 0 _0807B124: .4byte gPlayerState thumb_func_start sub_0807B128 sub_0807B128: @ 0x0807B128 push {lr} ldr r2, _0807B140 @ =gUnk_0811C284 adds r1, r0, #0 adds r1, #0x6c ldrb r1, [r1] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0807B140: .4byte gUnk_0811C284 thumb_func_start sub_0807B144 sub_0807B144: @ 0x0807B144 push {lr} ldrb r2, [r0, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r2 movs r2, #1 orrs r1, r2 strb r1, [r0, #0x18] ldrb r1, [r0, #0x14] lsls r1, r1, #2 strb r1, [r0, #0x15] movs r1, #0xa0 strh r1, [r0, #0x24] movs r1, #0x80 lsls r1, r1, #0xb str r1, [r0, #0x20] ldr r1, _0807B170 @ =gPlayerState movs r0, #0x81 strb r0, [r1, #2] bl sub_080791BC pop {pc} .align 2, 0 _0807B170: .4byte gPlayerState thumb_func_start nullsub_506 nullsub_506: @ 0x0807B174 bx lr .align 2, 0 thumb_func_start sub_0807B178 sub_0807B178: @ 0x0807B178 push {lr} ldrb r2, [r0, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r2 movs r2, #1 orrs r1, r2 strb r1, [r0, #0x18] movs r2, #0 movs r1, #0x10 strb r1, [r0, #0x15] strh r2, [r0, #0x24] movs r1, #0x80 lsls r1, r1, #0xb str r1, [r0, #0x20] ldr r1, _0807B1A4 @ =gPlayerState movs r0, #0x81 strb r0, [r1, #2] bl sub_080791BC pop {pc} .align 2, 0 _0807B1A4: .4byte gPlayerState thumb_func_start sub_0807B1A8 sub_0807B1A8: @ 0x0807B1A8 push {r4, lr} adds r4, r0, #0 ldr r1, _0807B1D4 @ =gUnk_0811C298 adds r0, #0x6e ldrb r0, [r0] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 ldr r0, _0807B1D8 @ =gScreenTransition ldr r0, [r0] movs r1, #7 ands r0, r1 cmp r0, #0 bne _0807B1D0 adds r0, r4, #0 bl CreateSparkle _0807B1D0: pop {r4, pc} .align 2, 0 _0807B1D4: .4byte gUnk_0811C298 _0807B1D8: .4byte gScreenTransition thumb_func_start sub_0807B1DC sub_0807B1DC: @ 0x0807B1DC adds r2, r0, #0 adds r2, #0x6e ldrb r1, [r2] adds r1, #1 strb r1, [r2] movs r1, #0x1e strb r1, [r0, #0xe] bx lr thumb_func_start sub_0807B1EC sub_0807B1EC: @ 0x0807B1EC push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xe] subs r0, #1 strb r0, [r2, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0807B212 adds r1, r2, #0 adds r1, #0x6e ldrb r0, [r1] adds r0, #1 strb r0, [r1] movs r0, #0x80 lsls r0, r0, #9 str r0, [r2, #0x20] ldr r1, _0807B214 @ =gPlayerState ldr r0, _0807B218 @ =0x000002C2 strh r0, [r1, #8] _0807B212: pop {pc} .align 2, 0 _0807B214: .4byte gPlayerState _0807B218: .4byte 0x000002C2 thumb_func_start sub_0807B21C sub_0807B21C: @ 0x0807B21C push {r4, lr} adds r4, r0, #0 bl UpdateAnimationSingleFrame ldr r0, [r4, #0x20] cmp r0, #0 bge _0807B236 movs r1, #0x80 lsls r1, r1, #3 adds r0, r4, #0 bl sub_08003FC4 b _0807B240 _0807B236: movs r1, #0x80 lsls r1, r1, #4 adds r0, r4, #0 bl sub_08003FC4 _0807B240: ldr r1, [r4, #0x20] ldr r0, _0807B260 @ =0xFFFF8000 cmp r1, r0 bge _0807B25E movs r1, #0 movs r0, #0x78 strb r0, [r4, #0xe] strb r1, [r4, #0xf] adds r1, r4, #0 adds r1, #0x6e ldrb r0, [r1] adds r0, #1 strb r0, [r1] ldr r0, [r4, #0x34] str r0, [r4, #0x68] _0807B25E: pop {r4, pc} .align 2, 0 _0807B260: .4byte 0xFFFF8000 thumb_func_start sub_0807B264 sub_0807B264: @ 0x0807B264 push {r4, lr} adds r4, r0, #0 bl UpdateAnimationSingleFrame ldrb r0, [r4, #0xf] adds r0, #2 strb r0, [r4, #0xf] ldr r1, _0807B2B4 @ =gSineTable ldrb r0, [r4, #0xf] lsls r0, r0, #1 adds r0, r0, r1 movs r2, #0 ldrsh r1, [r0, r2] asrs r1, r1, #7 lsls r1, r1, #0x10 ldr r0, [r4, #0x68] adds r0, r0, r1 str r0, [r4, #0x34] ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0807B2B0 movs r0, #0x50 strb r0, [r4, #0xe] movs r0, #0x80 lsls r0, r0, #8 str r0, [r4, #0x20] adds r1, r4, #0 adds r1, #0x6e ldrb r0, [r1] adds r0, #1 strb r0, [r1] movs r0, #0xa9 lsls r0, r0, #1 bl PlaySFX _0807B2B0: pop {r4, pc} .align 2, 0 _0807B2B4: .4byte gSineTable thumb_func_start sub_0807B2B8 sub_0807B2B8: @ 0x0807B2B8 push {r4, lr} adds r4, r0, #0 ldr r1, _0807B2F0 @ =0xFFFFE000 bl sub_08003FC4 adds r0, r4, #0 bl UpdateAnimationSingleFrame ldrb r0, [r4, #0xe] cmp r0, #0 beq _0807B2EC subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0807B2EC adds r0, r4, #0 adds r0, #0x6d ldrb r1, [r0] lsls r0, r1, #2 adds r0, r0, r1 lsls r0, r0, #2 ldr r1, _0807B2F4 @ =gUnk_0813AD88 adds r0, r0, r1 bl DoExitTransition _0807B2EC: pop {r4, pc} .align 2, 0 _0807B2F0: .4byte 0xFFFFE000 _0807B2F4: .4byte gUnk_0813AD88 thumb_func_start sub_0807B2F8 sub_0807B2F8: @ 0x0807B2F8 push {lr} adds r2, r0, #0 adds r1, r2, #0 adds r1, #0x6e ldrb r0, [r1] cmp r0, #0 bne _0807B310 adds r0, #1 strb r0, [r1] adds r0, r2, #0 bl sub_0809D738 _0807B310: pop {pc} .align 2, 0 thumb_func_start SetTileType SetTileType: @ 0x0807B314 push {r4, r5, r6, r7, lr} adds r5, r0, #0 adds r4, r1, #0 adds r6, r2, #0 ldr r0, _0807B3A0 @ =0x000007FF cmp r5, r0 bhi _0807B410 adds r0, r4, #0 adds r1, r6, #0 bl DeleteLoadedTileEntity adds r0, r6, #0 bl GetLayerByIndex adds r2, r0, #0 lsls r1, r5, #1 ldr r3, _0807B3A4 @ =0x00006004 adds r0, r2, r3 adds r0, r0, r1 ldrh r0, [r0] mov ip, r0 lsls r1, r4, #1 adds r0, r2, #4 adds r0, r0, r1 mov r1, ip strh r1, [r0] ldr r0, _0807B3A8 @ =gUnk_080B3E80 adds r0, r5, r0 ldrb r3, [r0] ldr r1, _0807B3AC @ =0x00002004 adds r0, r2, r1 adds r0, r0, r4 strb r3, [r0] ldr r7, _0807B3B0 @ =gRoomControls ldrb r1, [r7, #0xf] movs r0, #2 ands r0, r1 cmp r0, #0 beq _0807B36C ldr r0, _0807B3B4 @ =gUnk_02025EB0 ldr r1, _0807B3AC @ =0x00002004 adds r0, r0, r1 adds r0, r4, r0 strb r3, [r0] _0807B36C: ldr r3, _0807B3B8 @ =0x0000B004 adds r1, r2, r3 adds r1, r1, r4 ldr r0, _0807B3BC @ =gUnk_080B37A0 adds r0, r5, r0 ldrb r0, [r0] strb r0, [r1] ldrb r1, [r7, #0xf] movs r0, #1 ands r0, r1 cmp r0, #0 bne _0807B430 movs r1, #0x3f ands r1, r4 lsls r1, r1, #1 movs r0, #0xfc lsls r0, r0, #4 ands r0, r4 lsls r0, r0, #2 adds r1, r1, r0 cmp r6, #2 beq _0807B3C4 lsls r1, r1, #1 ldr r0, _0807B3C0 @ =gUnk_02019EE0 b _0807B3C8 .align 2, 0 _0807B3A0: .4byte 0x000007FF _0807B3A4: .4byte 0x00006004 _0807B3A8: .4byte gUnk_080B3E80 _0807B3AC: .4byte 0x00002004 _0807B3B0: .4byte gRoomControls _0807B3B4: .4byte gUnk_02025EB0 _0807B3B8: .4byte 0x0000B004 _0807B3BC: .4byte gUnk_080B37A0 _0807B3C0: .4byte gUnk_02019EE0 _0807B3C4: lsls r1, r1, #1 ldr r0, _0807B400 @ =gMapDataTopSpecial _0807B3C8: adds r3, r1, r0 mov r1, ip lsls r0, r1, #3 ldr r1, _0807B404 @ =0x00007004 adds r0, r0, r1 adds r0, r2, r0 ldrh r1, [r0] strh r1, [r3] ldrh r1, [r0, #2] strh r1, [r3, #2] movs r1, #0x80 lsls r1, r1, #1 adds r2, r3, r1 ldrh r1, [r0, #4] strh r1, [r2] movs r2, #0x81 lsls r2, r2, #1 adds r1, r3, r2 ldrh r0, [r0, #6] strh r0, [r1] ldr r0, _0807B408 @ =gRoomControls ldrh r0, [r0] cmp r0, #1 beq _0807B430 ldr r1, _0807B40C @ =gUnk_02000070 movs r0, #1 strb r0, [r1] b _0807B430 .align 2, 0 _0807B400: .4byte gMapDataTopSpecial _0807B404: .4byte 0x00007004 _0807B408: .4byte gRoomControls _0807B40C: .4byte gUnk_02000070 _0807B410: ldr r0, _0807B424 @ =0x00003FFF cmp r5, r0 bls _0807B428 adds r0, r5, #0 adds r1, r4, #0 adds r2, r6, #0 bl SetTile b _0807B430 .align 2, 0 _0807B424: .4byte 0x00003FFF _0807B428: adds r0, r4, #0 adds r1, r6, #0 bl sub_0807BA8C _0807B430: pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_0807B434 sub_0807B434: @ 0x0807B434 push {r4, r5, lr} adds r4, r0, #0 adds r5, r1, #0 bl GetTileType cmp r0, #0x37 bhi _0807B44A cmp r0, #0x36 blo _0807B44A movs r0, #0 b _0807B462 _0807B44A: lsls r0, r4, #0x10 lsrs r0, r0, #0x10 lsls r1, r5, #0x18 lsrs r1, r1, #0x18 bl sub_080002C8 adds r1, r0, #0 movs r0, #0xd eors r1, r0 rsbs r0, r1, #0 orrs r0, r1 lsrs r0, r0, #0x1f _0807B462: pop {r4, r5, pc} thumb_func_start sub_0807B464 sub_0807B464: @ 0x0807B464 push {lr} lsls r0, r0, #0x10 lsrs r0, r0, #0x10 lsls r1, r1, #0x18 lsrs r1, r1, #0x18 bl sub_080002C8 movs r1, #0 cmp r0, #0x56 bne _0807B47A movs r1, #1 _0807B47A: adds r0, r1, #0 pop {pc} .align 2, 0 thumb_func_start sub_0807B480 sub_0807B480: @ 0x0807B480 push {r4, r5, r6, r7, lr} adds r6, r0, #0 adds r7, r1, #0 movs r1, #2 bl sub_0807B464 cmp r0, #0 beq _0807B558 adds r0, r6, #0 subs r0, #0x40 movs r1, #2 bl sub_0807B464 adds r5, r0, #0 adds r0, r6, #1 movs r1, #2 bl sub_0807B464 lsls r0, r0, #1 orrs r5, r0 adds r4, r6, #0 adds r4, #0x40 adds r0, r4, #0 movs r1, #2 bl sub_0807B464 lsls r0, r0, #2 orrs r5, r0 subs r0, r6, #1 movs r1, #2 bl sub_0807B464 lsls r0, r0, #3 orrs r5, r0 adds r0, r6, #0 adds r0, #0x41 movs r1, #1 bl sub_0807B464 lsls r0, r0, #1 orrs r5, r0 adds r0, r6, #0 adds r0, #0x3f movs r1, #1 bl sub_0807B464 lsls r0, r0, #3 orrs r5, r0 adds r0, r4, #0 movs r1, #2 bl GetTileType cmp r0, #0 beq _0807B4FA adds r0, r6, #0 adds r0, #0x80 movs r1, #1 bl sub_0807B464 lsls r0, r0, #2 orrs r5, r0 _0807B4FA: ldr r0, _0807B514 @ =gUnk_0811C2CC lsls r1, r5, #1 adds r1, r1, r0 ldrh r4, [r1] adds r0, r6, #0 movs r1, #2 bl GetTileType lsls r0, r0, #0x10 lsrs r0, r0, #0x10 ldr r2, _0807B518 @ =gUnk_0811C2EC movs r3, #0 b _0807B51E .align 2, 0 _0807B514: .4byte gUnk_0811C2CC _0807B518: .4byte gUnk_0811C2EC _0807B51C: adds r2, #6 _0807B51E: ldrh r1, [r2] cmp r1, #0 beq _0807B52A cmp r0, r1 bne _0807B51C ldrh r3, [r2, #2] _0807B52A: movs r0, #1 lsls r0, r7 bics r3, r0 ldr r2, _0807B534 @ =gUnk_0811C2EC b _0807B53A .align 2, 0 _0807B534: .4byte gUnk_0811C2EC _0807B538: adds r2, #6 _0807B53A: ldrh r0, [r2] cmp r0, #0 beq _0807B54E ldrh r0, [r2, #2] cmp r3, r0 bne _0807B538 ldrh r0, [r2, #4] cmp r5, r0 bne _0807B538 ldrh r4, [r2] _0807B54E: adds r0, r4, #0 adds r1, r6, #0 movs r2, #2 bl SetTileType _0807B558: pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_0807B55C sub_0807B55C: @ 0x0807B55C push {r4, r5, r6, r7, lr} adds r5, r0, #0 adds r6, r1, #0 adds r7, r2, #0 bl sub_0807B464 cmp r0, #0 beq _0807B5AC adds r0, r5, #0 subs r0, #0x40 adds r1, r6, #0 bl sub_0807B464 adds r4, r0, #0 adds r0, r5, #1 adds r1, r6, #0 bl sub_0807B464 lsls r0, r0, #1 orrs r4, r0 adds r0, r5, #0 adds r0, #0x40 adds r1, r6, #0 bl sub_0807B464 lsls r0, r0, #2 orrs r4, r0 subs r0, r5, #1 adds r1, r6, #0 bl sub_0807B464 lsls r0, r0, #3 orrs r0, r4 lsls r0, r0, #1 adds r0, r0, r7 ldrh r0, [r0] adds r1, r5, #0 adds r2, r6, #0 bl SetTileType _0807B5AC: pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_0807B5B0 sub_0807B5B0: @ 0x0807B5B0 push {r4, r5, r6, r7, lr} adds r3, r0, #0 movs r1, #0x2e ldrsh r0, [r3, r1] ldr r6, _0807B5F8 @ =gUnk_0811C456 ldrb r1, [r3, #0x14] movs r2, #6 ands r2, r1 lsls r1, r2, #1 adds r1, r1, r6 movs r4, #0 ldrsh r1, [r1, r4] adds r0, r0, r1 ldr r5, _0807B5FC @ =gRoomControls ldrh r1, [r5, #6] subs r0, r0, r1 asrs r0, r0, #4 movs r4, #0x3f ands r0, r4 movs r7, #0x32 ldrsh r1, [r3, r7] adds r2, #1 lsls r2, r2, #1 adds r2, r2, r6 movs r3, #0 ldrsh r2, [r2, r3] adds r1, r1, r2 ldrh r2, [r5, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r4 lsls r1, r1, #6 orrs r0, r1 bl sub_0807B600 pop {r4, r5, r6, r7, pc} .align 2, 0 _0807B5F8: .4byte gUnk_0811C456 _0807B5FC: .4byte gRoomControls thumb_func_start sub_0807B600 sub_0807B600: @ 0x0807B600 push {r4, r5, r6, lr} adds r5, r0, #0 adds r6, r5, #0 subs r6, #0x40 lsls r0, r5, #0x10 lsrs r0, r0, #0x10 movs r1, #1 bl sub_080002C8 cmp r0, #0x56 beq _0807B61A movs r0, #0 b _0807B76E _0807B61A: adds r0, r5, #0 movs r1, #1 bl GetTileType adds r1, r0, #0 ldr r0, _0807B634 @ =0x0000026A cmp r1, r0 bne _0807B638 adds r0, r5, #0 bl sub_0807B820 b _0807B76C .align 2, 0 _0807B634: .4byte 0x0000026A _0807B638: ldr r0, _0807B648 @ =0x00000267 cmp r1, r0 bne _0807B64C adds r0, r5, #0 adds r0, #0x40 bl sub_0807B820 b _0807B76C .align 2, 0 _0807B648: .4byte 0x00000267 _0807B64C: ldr r0, _0807B65C @ =0x0000027A cmp r1, r0 bne _0807B660 adds r0, r5, #0 bl sub_0807B8A8 b _0807B76C .align 2, 0 _0807B65C: .4byte 0x0000027A _0807B660: ldr r0, _0807B670 @ =0x00000277 cmp r1, r0 bne _0807B674 adds r0, r5, #0 adds r0, #0x40 bl sub_0807B8A8 b _0807B76C .align 2, 0 _0807B670: .4byte 0x00000277 _0807B674: ldr r0, _0807B684 @ =0x0000028A cmp r1, r0 bne _0807B688 adds r0, r5, #0 bl sub_0807B930 b _0807B76C .align 2, 0 _0807B684: .4byte 0x0000028A _0807B688: ldr r0, _0807B698 @ =0x00000287 cmp r1, r0 bne _0807B69C adds r0, r5, #0 adds r0, #0x40 bl sub_0807B930 b _0807B76C .align 2, 0 _0807B698: .4byte 0x00000287 _0807B69C: adds r0, r5, #0 movs r1, #2 bl GetTileType cmp r0, #0 beq _0807B6EC ldr r0, _0807B6E8 @ =0x000002F2 adds r1, r5, #0 movs r2, #1 bl SetTileType adds r0, r6, #0 movs r1, #1 bl sub_080002E0 cmp r0, #3 bne _0807B6CA movs r0, #0xbd lsls r0, r0, #2 adds r1, r6, #0 movs r2, #1 bl SetTileType _0807B6CA: adds r0, r5, #0 adds r0, #0x40 movs r1, #1 bl sub_080002E0 cmp r0, #3 bne _0807B6F8 movs r0, #0xbd lsls r0, r0, #2 adds r1, r5, #0 movs r2, #1 bl SetTileType b _0807B6F8 .align 2, 0 _0807B6E8: .4byte 0x000002F2 _0807B6EC: movs r0, #0xbd lsls r0, r0, #2 adds r1, r5, #0 movs r2, #1 bl SetTileType _0807B6F8: adds r0, r6, #0 movs r1, #2 bl sub_0807B464 cmp r0, #0 beq _0807B748 movs r0, #0 adds r1, r6, #0 movs r2, #2 bl SetTileType adds r0, r6, #0 movs r1, #1 bl GetTileType ldr r1, _0807B770 @ =0x000002F2 cmp r0, r1 bne _0807B728 movs r0, #0xbd lsls r0, r0, #2 adds r1, r6, #0 movs r2, #1 bl SetTileType _0807B728: adds r0, r5, #1 ldr r4, _0807B774 @ =gUnk_0811C2AC movs r1, #1 adds r2, r4, #0 bl sub_0807B55C subs r0, r5, #1 movs r1, #1 adds r2, r4, #0 bl sub_0807B55C adds r0, r6, #0 movs r1, #1 adds r2, r4, #0 bl sub_0807B55C _0807B748: adds r0, r6, #1 movs r1, #3 bl sub_0807B480 subs r0, r6, #1 movs r1, #1 bl sub_0807B480 adds r0, r6, #0 adds r0, #0x40 movs r1, #0 bl sub_0807B480 adds r0, r6, #0 subs r0, #0x40 movs r1, #2 bl sub_0807B480 _0807B76C: movs r0, #1 _0807B76E: pop {r4, r5, r6, pc} .align 2, 0 _0807B770: .4byte 0x000002F2 _0807B774: .4byte gUnk_0811C2AC thumb_func_start sub_0807B778 sub_0807B778: @ 0x0807B778 push {r4, r5, r6, lr} adds r5, r0, #0 adds r6, r1, #0 lsls r0, r5, #0x10 lsrs r0, r0, #0x10 lsls r1, r6, #0x18 lsrs r1, r1, #0x18 bl sub_080002C8 cmp r0, #0xd bne _0807B7D0 adds r0, r5, #0 subs r0, #0x40 adds r1, r6, #0 bl sub_0807B434 adds r4, r0, #0 adds r0, r5, #1 adds r1, r6, #0 bl sub_0807B434 lsls r0, r0, #1 orrs r4, r0 adds r0, r5, #0 adds r0, #0x40 adds r1, r6, #0 bl sub_0807B434 lsls r0, r0, #2 orrs r4, r0 subs r0, r5, #1 adds r1, r6, #0 bl sub_0807B434 lsls r0, r0, #3 orrs r0, r4 ldr r1, _0807B7D4 @ =gUnk_0811C466 lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] adds r1, r5, #0 adds r2, r6, #0 bl SetTileType _0807B7D0: pop {r4, r5, r6, pc} .align 2, 0 _0807B7D4: .4byte gUnk_0811C466