.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_0802720C sub_0802720C: @ 0x0802720C push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] ldrb r0, [r0, #0xd] strb r0, [r4, #0xd] ldrb r0, [r4, #0xd] cmp r0, #0xc bhi _080272CA lsls r0, r0, #2 ldr r1, _08027228 @ =_0802722C adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08027228: .4byte _0802722C _0802722C: @ jump table .4byte _080272C4 @ case 0 .4byte _08027260 @ case 1 .4byte _08027260 @ case 2 .4byte _0802726E @ case 3 .4byte _080272AA @ case 4 .4byte _0802726E @ case 5 .4byte _080272CA @ case 6 .4byte _080272CA @ case 7 .4byte _08027282 @ case 8 .4byte _080272CA @ case 9 .4byte _080272A0 @ case 10 .4byte _080272CA @ case 11 .4byte _08027260 @ case 12 _08027260: adds r1, r4, #0 adds r1, #0x7a movs r0, #0xa0 strh r0, [r1] subs r1, #4 strh r0, [r1] b _080272AA _0802726E: adds r0, r4, #0 adds r0, #0x83 ldrb r0, [r0] cmp r0, #0 beq _080272CA adds r1, r4, #0 adds r1, #0x7d movs r0, #0 strb r0, [r1] b _080272AA _08027282: ldrb r0, [r4, #0xf] cmp r0, #3 bhi _080272CA adds r0, r4, #0 bl sub_0802757C adds r0, r4, #0 adds r0, #0x83 ldrb r0, [r0] cmp r0, #0 bne _080272CA ldrb r0, [r4, #0xf] adds r0, #1 strb r0, [r4, #0xf] b _080272CA _080272A0: adds r2, r4, #0 adds r2, #0x7d ldrb r0, [r2] cmp r0, #0 bne _080272B2 _080272AA: adds r0, r4, #0 bl sub_0802757C b _080272CA _080272B2: adds r1, r4, #0 adds r1, #0x84 ldrb r0, [r1] cmp r0, #0 beq _080272CA movs r0, #0 strb r0, [r2] strb r0, [r1] b _080272CA _080272C4: adds r0, r4, #0 bl sub_0802757C _080272CA: ldr r0, [r4, #0x50] ldr r0, [r0, #0x34] str r0, [r4, #0x34] pop {r4, pc} .align 2, 0 thumb_func_start sub_080272D4 sub_080272D4: @ 0x080272D4 push {r4, r5, r6, lr} adds r6, r0, #0 ldr r0, [r6, #0x50] ldrb r0, [r0, #0xd] cmp r0, #0xc bls _080272E2 b _08027532 _080272E2: lsls r0, r0, #2 ldr r1, _080272EC @ =_080272F0 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080272EC: .4byte _080272F0 _080272F0: @ jump table .4byte _08027508 @ case 0 .4byte _08027324 @ case 1 .4byte _08027324 @ case 2 .4byte _08027332 @ case 3 .4byte _0802733E @ case 4 .4byte _08027332 @ case 5 .4byte _08027368 @ case 6 .4byte _08027532 @ case 7 .4byte _08027346 @ case 8 .4byte _08027454 @ case 9 .4byte _0802748C @ case 10 .4byte _08027532 @ case 11 .4byte _08027324 @ case 12 _08027324: adds r1, r6, #0 adds r1, #0x7a movs r0, #0xa0 strh r0, [r1] subs r1, #4 strh r0, [r1] b _0802733E _08027332: adds r0, r6, #0 adds r0, #0x83 ldrb r0, [r0] cmp r0, #0 bne _0802733E b _08027532 _0802733E: adds r0, r6, #0 bl sub_0802757C b _08027532 _08027346: ldrb r0, [r6, #0xf] cmp r0, #2 bls _0802734E b _08027532 _0802734E: adds r0, r6, #0 bl sub_0802757C adds r0, r6, #0 adds r0, #0x83 ldrb r0, [r0] cmp r0, #0 beq _08027360 b _08027532 _08027360: ldrb r0, [r6, #0xf] adds r0, #1 strb r0, [r6, #0xf] b _08027532 _08027368: ldr r5, [r6, #0x48] adds r0, r6, #0 adds r0, #0x7a ldrh r1, [r0] movs r4, #0x80 lsls r4, r4, #9 adds r0, r4, #0 bl __divsi3 lsls r1, r0, #3 adds r1, r1, r0 lsrs r1, r1, #7 strb r1, [r5, #6] ldr r5, [r6, #0x48] adds r0, r6, #0 adds r0, #0x76 ldrh r1, [r0] adds r0, r4, #0 bl __divsi3 lsls r1, r0, #2 adds r1, r1, r0 lsrs r1, r1, #6 strb r1, [r5, #7] adds r0, r6, #0 adds r0, #0x84 ldrb r0, [r0] cmp r0, #0 bne _080273A4 b _08027532 _080273A4: adds r0, r6, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08027444 adds r2, r6, #0 adds r2, #0x3d ldrb r1, [r2] movs r0, #0 ldrsb r0, [r2, r0] cmp r0, #0 beq _08027444 ldr r0, [r6, #0x54] ldr r0, [r0, #0x68] adds r0, #0x3d strb r1, [r0] ldr r0, [r6, #0x54] ldr r0, [r0, #0x50] ldrb r1, [r2] adds r0, #0x3d strb r1, [r0] ldr r0, [r6, #0x54] ldrb r1, [r2] adds r0, #0x3d strb r1, [r0] ldr r0, [r6, #0x54] bl sub_08027D20 adds r2, r0, #0 cmp r2, #0 beq _08027406 ldrh r0, [r6, #0x2e] adds r0, #1 strh r0, [r2, #0x2e] adds r0, r6, #0 adds r0, #0x63 ldrb r0, [r0] adds r0, #0x20 adds r1, r2, #0 adds r1, #0x63 strb r0, [r1] adds r0, r6, #0 adds r0, #0x62 ldrb r1, [r0] adds r0, r2, #0 adds r0, #0x62 strb r1, [r0] _08027406: ldr r0, [r6, #0x54] bl sub_08027C54 cmp r0, #0 beq _0802741C ldr r0, [r6, #0x54] adds r0, #0x84 ldr r0, [r0] ldrb r0, [r0, #4] cmp r0, #2 beq _08027428 _0802741C: ldr r0, _08027424 @ =0x00000127 bl SoundReq b _08027444 .align 2, 0 _08027424: .4byte 0x00000127 _08027428: bl sub_08078B48 ldr r0, _0802744C @ =gRoomControls ldr r2, [r6, #0x54] str r2, [r0, #0x30] ldr r1, _08027450 @ =gPauseMenuOptions movs r0, #1 strb r0, [r1] movs r0, #9 strb r0, [r2, #0xd] movs r0, #0x94 lsls r0, r0, #1 bl SoundReq _08027444: adds r0, r6, #0 bl sub_08027A60 b _08027484 .align 2, 0 _0802744C: .4byte gRoomControls _08027450: .4byte gPauseMenuOptions _08027454: ldr r5, [r6, #0x48] adds r0, r6, #0 adds r0, #0x7a ldrh r1, [r0] movs r4, #0x80 lsls r4, r4, #9 adds r0, r4, #0 bl __divsi3 lsls r1, r0, #3 adds r1, r1, r0 lsrs r1, r1, #7 strb r1, [r5, #6] ldr r5, [r6, #0x48] adds r0, r6, #0 adds r0, #0x76 ldrh r1, [r0] adds r0, r4, #0 bl __divsi3 lsls r1, r0, #2 adds r1, r1, r0 lsrs r1, r1, #6 strb r1, [r5, #7] _08027484: adds r0, r6, #0 bl sub_0800445C b _08027532 _0802748C: adds r2, r6, #0 adds r2, #0x7d ldrb r0, [r2] cmp r0, #0 bne _0802749E adds r0, r6, #0 bl sub_0802757C b _080274AE _0802749E: adds r1, r6, #0 adds r1, #0x84 ldrb r0, [r1] cmp r0, #0 beq _080274AE movs r0, #0 strb r0, [r2] strb r0, [r1] _080274AE: adds r2, r6, #0 adds r2, #0x83 adds r0, r6, #0 adds r0, #0x81 ldrb r1, [r0] lsrs r0, r1, #1 ldrb r2, [r2] adds r0, r2, r0 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, r1 bls _080274F4 lsls r0, r2, #0x18 cmp r0, #0 ble _080274E0 adds r0, r6, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0xc beq _08027532 adds r0, r6, #0 movs r1, #0xc bl InitAnimationForceUpdate b _08027532 _080274E0: adds r0, r6, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0xb beq _08027532 adds r0, r6, #0 movs r1, #0xb bl InitAnimationForceUpdate b _08027532 _080274F4: adds r0, r6, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0xa beq _08027532 adds r0, r6, #0 movs r1, #0xa bl InitAnimationForceUpdate b _08027532 _08027508: ldr r0, [r6, #0x54] adds r0, #0x84 ldr r0, [r0] ldrb r0, [r0, #3] cmp r0, #8 bne _08027532 adds r0, r6, #0 bl sub_0802757C adds r0, r6, #0 adds r0, #0x7d ldrb r0, [r0] cmp r0, #1 bne _08027532 adds r1, r6, #0 adds r1, #0x81 ldrb r0, [r1] cmp r0, #0 beq _08027532 subs r0, #4 strb r0, [r1] _08027532: ldr r0, [r6, #0x50] ldr r0, [r0, #0x34] str r0, [r6, #0x34] adds r1, r6, #0 adds r1, #0x41 movs r0, #0 strb r0, [r1] adds r0, r6, #0 bl UpdateAnimationSingleFrame pop {r4, r5, r6, pc} thumb_func_start sub_08027548 sub_08027548: @ 0x08027548 push {r4, r5, r6, lr} sub sp, #4 adds r4, r0, #0 adds r6, r1, #0 movs r5, #0 movs r0, #1 strb r0, [r4, #0xd] movs r0, #0xff str r0, [sp] adds r0, r4, #0 movs r1, #0x90 movs r2, #0xb0 movs r3, #8 bl sub_08027B98 adds r0, r4, #0 adds r0, #0x7d strb r5, [r0] adds r0, r4, #0 movs r1, #0 adds r2, r6, #0 bl sub_080276F4 add sp, #4 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_0802757C sub_0802757C: @ 0x0802757C push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} adds r5, r0, #0 adds r6, r5, #0 adds r6, #0x7d ldrb r1, [r6] cmp r1, #0 beq _080275BA ldrb r0, [r5, #0xa] cmp r0, #1 beq _080275AE ldr r0, [r5, #0x54] adds r0, #0x7d ldrb r0, [r0] movs r1, #0x83 adds r1, r1, r5 mov sl, r1 cmp r0, #0 beq _08027676 movs r0, #0 strb r0, [r6] b _08027676 _080275AE: subs r0, r1, #1 strb r0, [r6] movs r2, #0x83 adds r2, r2, r5 mov sl, r2 b _08027676 _080275BA: movs r0, #0x85 adds r0, r0, r5 mov ip, r0 ldrb r1, [r0] mov sb, r1 cmp r1, #1 bne _0802761E adds r1, r5, #0 adds r1, #0x82 adds r0, r5, #0 adds r0, #0x86 ldrh r0, [r0] ldrh r2, [r1] adds r0, r0, r2 strh r0, [r1] adds r0, r5, #0 adds r0, #0x83 adds r2, r5, #0 adds r2, #0x81 movs r4, #0 ldrsb r4, [r0, r4] movs r3, #0 ldrsb r3, [r2, r3] mov r8, r1 mov sl, r0 adds r7, r2, #0 cmp r4, r3 blt _08027676 movs r0, #0 mov r1, ip strb r0, [r1] ldrb r0, [r5, #0xa] cmp r0, #1 bne _08027616 ldr r1, [r5, #0x50] adds r0, r1, #0 adds r0, #0x81 ldrb r0, [r0] lsls r0, r0, #8 adds r1, #0x86 ldrh r1, [r1] bl __divsi3 adds r0, #1 strb r0, [r6] b _0802761A _08027616: mov r2, sb strb r2, [r6] _0802761A: ldrb r0, [r7] b _08027670 _0802761E: adds r2, r5, #0 adds r2, #0x82 adds r1, r5, #0 adds r1, #0x86 ldrh r0, [r2] ldrh r1, [r1] subs r0, r0, r1 strh r0, [r2] adds r1, r5, #0 adds r1, #0x83 movs r4, #0 ldrsb r4, [r1, r4] adds r0, r5, #0 adds r0, #0x81 ldrb r3, [r0] mov r8, r2 mov sl, r1 adds r7, r0, #0 cmn r4, r3 bgt _08027676 movs r1, #1 mov r2, ip strb r1, [r2] ldrb r0, [r5, #0xa] cmp r0, #1 bne _0802766A ldr r1, [r5, #0x50] adds r0, r1, #0 adds r0, #0x81 ldrb r0, [r0] lsls r0, r0, #8 adds r1, #0x86 ldrh r1, [r1] bl __divsi3 adds r0, #1 strb r0, [r6] b _0802766C _0802766A: strb r1, [r6] _0802766C: ldrb r0, [r7] rsbs r0, r0, #0 _08027670: lsls r0, r0, #8 mov r1, r8 strh r0, [r1] _08027676: ldr r2, [r5, #0x50] adds r0, r2, #0 adds r0, #0x63 movs r1, #0 ldrsb r1, [r0, r1] lsls r1, r1, #0x10 ldr r0, [r2, #0x30] adds r0, r0, r1 str r0, [r5, #0x30] adds r0, r2, #0 adds r0, #0x62 movs r1, #0 ldrsb r1, [r0, r1] lsls r1, r1, #0x10 ldr r0, [r2, #0x2c] adds r0, r0, r1 str r0, [r5, #0x2c] ldrb r1, [r5, #0xe] lsls r1, r1, #8 mov r0, sl ldrb r2, [r0] adds r0, r5, #0 bl LinearMoveAngle ldrb r0, [r5, #0xa] cmp r0, #1 beq _080276D2 ldr r1, [r5, #0x54] ldr r0, [r5, #0x30] str r0, [r1, #0x30] ldr r1, [r5, #0x54] ldr r0, [r5, #0x2c] str r0, [r1, #0x2c] ldr r0, [r5, #0x54] ldrb r1, [r0, #0xe] lsls r1, r1, #8 adds r2, r0, #0 adds r2, #0x83 ldrb r2, [r2] bl LinearMoveAngle ldr r0, [r5, #0x68] ldr r1, [r5, #0x54] ldrb r2, [r1, #0xa] bl sub_080279AC _080276D2: ldr r0, [r5, #0x68] ldrb r2, [r5, #0xa] adds r1, r5, #0 bl sub_080279AC mov r1, sl ldrb r0, [r1] rsbs r0, r0, #0 adds r1, r5, #0 adds r1, #0x7f strb r0, [r1] pop {r3, r4, r5} mov r8, r3 mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_080276F4 sub_080276F4: @ 0x080276F4 push {r4, r5, r6, r7, lr} adds r6, r2, #0 ldr r5, [r0, #0x54] ldr r4, [r0, #0x68] ldr r0, [r0, #0x50] mov ip, r0 adds r0, #0x84 movs r2, #0 strb r2, [r0] adds r0, r4, #0 adds r0, #0x84 strb r2, [r0] adds r0, r5, #0 adds r0, #0x84 strb r2, [r0] mov r0, ip adds r0, #0x7e movs r7, #0 strh r2, [r0] adds r0, r4, #0 adds r0, #0x7e strh r2, [r0] adds r0, r5, #0 adds r0, #0x7e strh r2, [r0] mov r0, ip adds r0, #0x7d strb r7, [r0] adds r0, r4, #0 adds r0, #0x7d strb r7, [r0] ldr r0, _080277AC @ =gUnk_080CC27C lsls r1, r1, #2 adds r0, r1, r0 ldrh r2, [r0] adds r3, r5, #0 adds r3, #0x86 strh r2, [r3] ldrb r0, [r0, #2] adds r2, r5, #0 adds r2, #0x81 strb r0, [r2] ldr r0, _080277B0 @ =gUnk_080CC2BC adds r0, r1, r0 ldrh r2, [r0] adds r3, r4, #0 adds r3, #0x86 strh r2, [r3] ldrb r0, [r0, #2] adds r2, r4, #0 adds r2, #0x81 strb r0, [r2] ldr r0, _080277B4 @ =gUnk_080CC29C adds r1, r1, r0 ldrh r0, [r1] mov r2, ip adds r2, #0x86 strh r0, [r2] ldrb r0, [r1, #2] mov r1, ip adds r1, #0x81 strb r0, [r1] cmp r6, #0 bne _080277AA mov r0, ip adds r0, #0x85 strb r7, [r0] adds r0, r4, #0 adds r0, #0x85 strb r7, [r0] adds r0, r5, #0 adds r0, #0x85 strb r7, [r0] mov r0, ip adds r0, #0x82 strh r6, [r0] adds r0, r4, #0 adds r0, #0x82 strh r6, [r0] adds r0, r5, #0 adds r0, #0x82 strh r6, [r0] ldrb r0, [r1] lsls r0, r0, #7 ldrh r1, [r2] bl __divsi3 adds r0, #1 adds r1, r5, #0 adds r1, #0x7d strb r0, [r1] _080277AA: pop {r4, r5, r6, r7, pc} .align 2, 0 _080277AC: .4byte gUnk_080CC27C _080277B0: .4byte gUnk_080CC2BC _080277B4: .4byte gUnk_080CC29C thumb_func_start sub_080277B8 sub_080277B8: @ 0x080277B8 push {r4, r5, lr} adds r5, r0, #0 adds r4, r1, #0 ldr r1, [r5, #0x54] adds r3, r1, #0 adds r3, #0x7a ldrh r0, [r3] cmp r4, r0 bls _080277DC adds r0, r0, r2 strh r0, [r3] ldr r0, [r1, #0x74] ldr r2, _080277D8 @ =0xFFFE8000 adds r0, r0, r2 str r0, [r1, #0x74] b _080277F0 .align 2, 0 _080277D8: .4byte 0xFFFE8000 _080277DC: strh r4, [r3] adds r1, #0x7c movs r0, #8 strb r0, [r1] adds r0, r5, #0 adds r0, #0x84 ldr r1, [r0] ldrb r0, [r1, #3] adds r0, #1 strb r0, [r1, #3] _080277F0: adds r0, r5, #0 bl sub_080277F8 pop {r4, r5, pc} thumb_func_start sub_080277F8 sub_080277F8: @ 0x080277F8 push {r4, r5, r6, r7, lr} adds r6, r0, #0 ldr r3, [r6, #0x54] ldr r5, [r6, #0x68] ldr r4, [r6, #0x50] ldrh r2, [r6, #0x2e] strh r2, [r5, #0x2e] movs r7, #0xe strb r7, [r5, #0xe] ldrh r0, [r6, #0x32] subs r0, #0xe strh r0, [r5, #0x32] strh r2, [r4, #0x2e] movs r0, #0x7a adds r0, r0, r3 mov ip, r0 ldrh r1, [r0] subs r1, #0xa0 asrs r1, r1, #4 movs r0, #0x12 subs r0, r0, r1 strb r0, [r4, #0xe] ldrb r1, [r4, #0xe] ldrh r0, [r5, #0x32] subs r0, r0, r1 strh r0, [r4, #0x32] strh r2, [r3, #0x2e] mov r1, ip ldrh r0, [r1] cmp r0, #0xa0 bls _0802784E subs r0, #0xa0 asrs r0, r0, #2 movs r1, #0xe subs r1, r1, r0 strb r1, [r3, #0xe] movs r0, #0x80 ands r1, r0 cmp r1, #0 beq _08027850 movs r0, #0 strb r0, [r3, #0xe] b _08027850 _0802784E: strb r7, [r3, #0xe] _08027850: ldrb r1, [r3, #0xe] ldrh r0, [r4, #0x32] subs r0, r0, r1 strh r0, [r3, #0x32] ldr r0, [r3, #0x74] str r0, [r4, #0x74] ldr r0, [r3, #0x78] str r0, [r4, #0x78] ldr r0, [r3, #0x74] str r0, [r5, #0x74] ldr r0, [r3, #0x78] str r0, [r5, #0x78] adds r0, r6, #0 bl sub_08027984 pop {r4, r5, r6, r7, pc} thumb_func_start sub_08027870 sub_08027870: @ 0x08027870 push {r4, r5, r6, r7, lr} adds r7, r0, #0 ldr r4, [r7, #0x54] ldr r5, [r7, #0x68] ldr r6, [r7, #0x50] ldr r0, [r4, #0x74] str r0, [r6, #0x74] ldr r0, [r4, #0x78] str r0, [r6, #0x78] ldr r0, [r4, #0x74] str r0, [r5, #0x74] ldr r0, [r4, #0x78] str r0, [r5, #0x78] adds r0, r4, #0 adds r0, #0x83 ldrb r0, [r0] rsbs r0, r0, #0 adds r1, r4, #0 adds r1, #0x7f strb r0, [r1] adds r0, r5, #0 adds r0, #0x83 ldrb r0, [r0] rsbs r0, r0, #0 adds r1, r5, #0 adds r1, #0x7f strb r0, [r1] adds r0, r6, #0 adds r0, #0x83 ldrb r0, [r0] rsbs r0, r0, #0 adds r1, r6, #0 adds r1, #0x7f strb r0, [r1] adds r1, r5, #0 adds r1, #0x7a ldrh r0, [r1] cmp r0, #0xa0 bls _080278C2 movs r0, #0xe b _080278CC _080278C2: ldrh r1, [r1] movs r0, #0xa0 subs r0, r0, r1 asrs r0, r0, #3 adds r0, #0xe _080278CC: strb r0, [r5, #0xe] adds r1, r6, #0 adds r1, #0x7a ldrh r0, [r1] cmp r0, #0xa0 bls _080278EA adds r2, r4, #0 adds r2, #0x7a ldrh r1, [r2] subs r1, #0xa0 asrs r1, r1, #4 movs r0, #0x12 subs r0, r0, r1 strb r0, [r6, #0xe] b _080278FA _080278EA: ldrh r1, [r1] movs r0, #0xa0 subs r0, r0, r1 asrs r0, r0, #2 adds r0, #0x12 strb r0, [r6, #0xe] adds r2, r4, #0 adds r2, #0x7a _080278FA: adds r0, r2, #0 ldrh r1, [r0] cmp r1, #0xa0 bls _0802791A adds r0, r1, #0 subs r0, #0xa0 asrs r0, r0, #2 movs r1, #0xe subs r1, r1, r0 strb r1, [r4, #0xe] movs r0, #0x80 ands r1, r0 cmp r1, #0 beq _08027934 movs r0, #0 b _08027932 _0802791A: cmp r1, #0x7f bhi _08027928 ldrh r1, [r0] movs r0, #0xa0 subs r0, r0, r1 asrs r0, r0, #2 b _08027930 _08027928: ldrh r1, [r2] movs r0, #0xa0 subs r0, r0, r1 asrs r0, r0, #1 _08027930: adds r0, #0xe _08027932: strb r0, [r4, #0xe] _08027934: ldr r0, [r7, #0x2c] str r0, [r5, #0x2c] ldr r0, [r7, #0x30] str r0, [r5, #0x30] ldrb r1, [r5, #0xe] lsls r1, r1, #8 adds r0, r5, #0 adds r0, #0x83 ldrb r2, [r0] adds r0, r5, #0 bl LinearMoveAngle ldr r0, [r5, #0x2c] str r0, [r6, #0x2c] ldr r0, [r5, #0x30] str r0, [r6, #0x30] ldrb r1, [r6, #0xe] lsls r1, r1, #8 adds r0, r6, #0 adds r0, #0x83 ldrb r2, [r0] adds r0, r6, #0 bl LinearMoveAngle ldr r0, [r6, #0x2c] str r0, [r4, #0x2c] ldr r0, [r6, #0x30] str r0, [r4, #0x30] ldrb r1, [r4, #0xe] lsls r1, r1, #8 adds r0, r4, #0 adds r0, #0x83 ldrb r2, [r0] adds r0, r4, #0 bl LinearMoveAngle adds r0, r7, #0 bl sub_08027984 pop {r4, r5, r6, r7, pc} thumb_func_start sub_08027984 sub_08027984: @ 0x08027984 push {r4, r5, r6, lr} adds r4, r0, #0 ldr r1, [r4, #0x54] ldr r5, [r4, #0x68] ldr r6, [r4, #0x50] ldrb r2, [r1, #0xa] bl sub_080279AC ldrb r2, [r5, #0xa] adds r0, r4, #0 adds r1, r5, #0 bl sub_080279AC ldrb r2, [r6, #0xa] adds r0, r4, #0 adds r1, r6, #0 bl sub_080279AC pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_080279AC sub_080279AC: @ 0x080279AC push {r4, r5, r6, lr} mov ip, r1 movs r3, #4 subs r3, r3, r2 ldrh r1, [r1, #0x2e] ldrh r4, [r0, #0x2e] subs r1, r1, r4 mov r6, ip adds r6, #0x62 strb r1, [r6] mov r2, ip ldrh r1, [r2, #0x32] ldrh r2, [r0, #0x32] adds r0, r2, r3 subs r1, r1, r0 mov r5, ip adds r5, #0x63 strb r1, [r5] mov r0, ip strh r4, [r0, #0x2e] adds r2, r2, r3 strh r2, [r0, #0x32] ldr r1, [r0, #0x48] ldrb r0, [r6] strb r0, [r1] mov r2, ip ldr r1, [r2, #0x48] ldrb r0, [r5] strb r0, [r1, #1] pop {r4, r5, r6, pc} thumb_func_start sub_080279E8 sub_080279E8: @ 0x080279E8 push {r4, lr} sub sp, #4 adds r2, r0, #0 ldr r4, [r2, #0x54] adds r0, #0x81 ldrb r0, [r0] cmp r0, #0x80 bne _08027A20 adds r0, r2, #0 adds r0, #0x76 ldrh r1, [r0] adds r0, #0xe ldr r0, [r0] ldrb r0, [r0, #5] subs r1, r1, r0 cmp r1, #0x80 bne _08027A58 adds r0, r2, #0 adds r0, #0x82 ldrb r1, [r0] movs r0, #1 str r0, [sp] adds r0, r2, #0 movs r2, #0xa0 movs r3, #0x20 bl sub_08027B98 b _08027A58 _08027A20: adds r0, r4, #0 adds r0, #0x76 ldrh r1, [r0] adds r3, r0, #0 cmp r1, #0xa0 bls _08027A30 subs r0, r1, #4 b _08027A32 _08027A30: movs r0, #0xa0 _08027A32: strh r0, [r3] adds r0, r4, #0 adds r0, #0x7a ldrh r2, [r0] adds r1, r0, #0 cmp r2, #0xa0 bls _08027A44 subs r0, r2, #4 b _08027A46 _08027A44: movs r0, #0xa0 _08027A46: strh r0, [r1] ldrh r0, [r3] cmp r0, #0xa0 bne _08027A58 ldrh r0, [r1] cmp r0, #0xa0 bne _08027A58 movs r0, #1 b _08027A5A _08027A58: movs r0, #0 _08027A5A: add sp, #4 pop {r4, pc} .align 2, 0 thumb_func_start sub_08027A60 sub_08027A60: @ 0x08027A60 push {lr} adds r2, r0, #0 adds r0, #0x7c ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08027A78 ldr r0, [r2, #0x74] movs r1, #0x80 lsls r1, r1, #7 b _08027A7C _08027A78: ldr r0, [r2, #0x74] ldr r1, _08027AA0 @ =0xFFFFC000 _08027A7C: adds r0, r0, r1 str r0, [r2, #0x74] adds r3, r2, #0 adds r3, #0x7c ldrb r0, [r3] adds r2, r0, #1 strb r2, [r3] movs r0, #0x7f ands r0, r2 cmp r0, #0x28 bne _08027A9C movs r1, #0x80 movs r0, #0x80 ands r2, r0 eors r2, r1 strb r2, [r3] _08027A9C: pop {pc} .align 2, 0 _08027AA0: .4byte 0xFFFFC000 thumb_func_start sub_08027AA4 sub_08027AA4: @ 0x08027AA4 push {r4, r5, lr} adds r5, r0, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08027B94 movs r0, #0x7f ands r0, r1 cmp r0, #0x13 beq _08027AC2 cmp r0, #0x1b beq _08027B44 b _08027B94 _08027AC2: movs r0, #0x84 bl SoundReq ldrb r3, [r5, #0xb] adds r0, r5, #0 movs r1, #0x49 movs r2, #9 bl CreateObjectWithParent ldr r0, _08027B3C @ =0x00000155 bl SoundReq adds r0, r5, #0 adds r0, #0x84 ldr r4, [r0] adds r1, r5, #0 adds r1, #0x3d movs r0, #3 strb r0, [r1] ldrb r0, [r4, #6] adds r0, #1 strb r0, [r4, #6] ldrb r0, [r4, #6] movs r1, #3 bl __divsi3 adds r1, r0, #0 lsls r0, r1, #0x18 lsrs r0, r0, #0x15 ldrb r2, [r4, #5] cmp r0, r2 beq _08027B06 lsls r0, r1, #3 strb r0, [r4, #5] _08027B06: movs r0, #0xb4 str r0, [r4, #8] movs r0, #5 ldrsb r0, [r4, r0] cmp r0, #0 bge _08027B94 movs r0, #0x40 strb r0, [r4, #1] adds r1, r5, #0 adds r1, #0x3f movs r0, #0 strb r0, [r1] ldrb r0, [r5, #0xd] cmp r0, #2 bne _08027B2A adds r0, r5, #0 bl sub_08027BBC _08027B2A: adds r0, r5, #0 bl sub_08027D20 ldr r0, _08027B40 @ =0x00000127 bl SoundReq _08027B36: movs r0, #1 b _08027B96 .align 2, 0 _08027B3C: .4byte 0x00000155 _08027B40: .4byte 0x00000127 _08027B44: adds r1, r5, #0 adds r1, #0x3d movs r0, #0xe2 strb r0, [r1] ldr r0, [r5, #0x4c] ldrb r0, [r0, #0xa] adds r0, #1 cmp r0, #2 beq _08027B74 cmp r0, #2 bgt _08027B60 cmp r0, #1 beq _08027B84 b _08027B36 _08027B60: cmp r0, #3 bne _08027B36 adds r1, r5, #0 adds r1, #0x42 movs r0, #0x1a strb r0, [r1] adds r1, #4 movs r0, #0xe0 lsls r0, r0, #1 b _08027B90 _08027B74: adds r1, r5, #0 adds r1, #0x42 movs r0, #0x14 strb r0, [r1] adds r1, #4 movs r0, #0xc0 lsls r0, r0, #1 b _08027B90 _08027B84: adds r1, r5, #0 adds r1, #0x42 movs r0, #0x10 strb r0, [r1] adds r1, #4 adds r0, #0xf0 _08027B90: strh r0, [r1] b _08027B36 _08027B94: movs r0, #0 _08027B96: pop {r4, r5, pc} thumb_func_start sub_08027B98 sub_08027B98: @ 0x08027B98 push {r4, lr} mov ip, r0 ldr r4, [sp, #8] adds r0, #0x82 strb r1, [r0] subs r0, #1 strb r2, [r0] subs r0, #1 strb r3, [r0] cmp r4, #0xff beq _08027BB4 mov r0, ip strb r4, [r0, #0xe] b _08027BBA _08027BB4: movs r0, #1 mov r1, ip strb r0, [r1, #0xe] _08027BBA: pop {r4, pc} thumb_func_start sub_08027BBC sub_08027BBC: @ 0x08027BBC push {r4, r5, r6, lr} adds r6, r0, #0 movs r4, #0 movs r0, #0xa strb r0, [r6, #0xd] adds r5, r6, #0 adds r5, #0x84 ldr r0, [r5] strb r4, [r0, #1] adds r0, r6, #0 movs r1, #7 movs r2, #1 bl sub_080276F4 ldr r0, [r6, #0x54] adds r0, #0x7d strb r4, [r0] movs r3, #0 strh r4, [r6, #0x24] ldr r0, [r5] strb r3, [r0, #3] movs r0, #0x2e ldrsh r1, [r6, r0] ldr r0, [r5] ldrh r0, [r0, #0xe] cmp r1, r0 ble _08027C0A movs r0, #0x18 strb r0, [r6, #0x15] ldr r2, [r6, #0x54] ldr r1, [r6, #0x50] ldr r0, [r6, #0x68] adds r0, #0x85 strb r3, [r0] adds r1, #0x85 strb r3, [r1] adds r2, #0x85 strb r3, [r2] b _08027C22 _08027C0A: movs r0, #8 strb r0, [r6, #0x15] ldr r3, [r6, #0x54] ldr r2, [r6, #0x50] ldr r0, [r6, #0x68] adds r0, #0x85 movs r1, #1 strb r1, [r0] adds r2, #0x85 strb r1, [r2] adds r3, #0x85 strb r1, [r3] _08027C22: ldrb r0, [r6, #0x15] lsrs r0, r0, #2 strb r0, [r6, #0x14] ldr r0, _08027C44 @ =gPlayerEntity movs r2, #0x32 ldrsh r1, [r6, r2] movs r2, #0x32 ldrsh r0, [r0, r2] cmp r1, r0 beq _08027C52 cmp r1, r0 ble _08027C48 adds r0, r6, #0 adds r0, #0x84 ldr r1, [r0] movs r0, #0 b _08027C50 .align 2, 0 _08027C44: .4byte gPlayerEntity _08027C48: adds r0, r6, #0 adds r0, #0x84 ldr r1, [r0] movs r0, #0x10 _08027C50: strb r0, [r1, #0xc] _08027C52: pop {r4, r5, r6, pc} thumb_func_start sub_08027C54 sub_08027C54: @ 0x08027C54 push {lr} ldr r2, _08027C74 @ =gUnk_080CC2DC adds r1, r0, #0 adds r1, #0x84 ldr r1, [r1] ldrb r1, [r1, #4] adds r1, r1, r2 ldr r0, [r0, #0x54] adds r0, #0x45 ldrb r1, [r1] ldrb r0, [r0] cmp r1, r0 bhi _08027C78 movs r0, #0 b _08027C7A .align 2, 0 _08027C74: .4byte gUnk_080CC2DC _08027C78: movs r0, #1 _08027C7A: pop {pc} thumb_func_start sub_08027C7C sub_08027C7C: @ 0x08027C7C push {r4, r5, lr} adds r4, r0, #0 adds r5, r1, #0 ldr r0, [r4, #0x54] bl sub_08027C9C ldr r0, [r4, #0x68] adds r1, r5, #0 bl sub_08027C9C ldr r0, [r4, #0x50] adds r1, r5, #0 bl sub_08027C9C pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08027C9C sub_08027C9C: @ 0x08027C9C push {r4, r5, lr} adds r5, r0, #0 adds r4, r1, #0 bl Random ands r0, r4 cmp r0, #0 bne _08027D1E adds r0, r5, #0 movs r1, #0x48 movs r2, #0 bl CreateFx adds r4, r0, #0 cmp r4, #0 beq _08027D1E adds r0, r5, #0 adds r0, #0x62 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldr r1, [r5, #0x48] ldrb r1, [r1, #6] subs r0, r0, r1 ldrh r1, [r4, #0x2e] adds r0, r0, r1 strh r0, [r4, #0x2e] bl Random ldr r1, [r5, #0x48] ldrb r1, [r1, #6] lsls r1, r1, #1 bl __modsi3 ldrh r1, [r4, #0x2e] adds r1, r1, r0 strh r1, [r4, #0x2e] adds r0, r5, #0 adds r0, #0x63 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldr r1, [r5, #0x48] ldrb r1, [r1, #7] subs r0, r0, r1 ldrh r1, [r4, #0x32] adds r0, r0, r1 strh r0, [r4, #0x32] bl Random ldr r1, [r5, #0x48] ldrb r1, [r1, #7] lsls r1, r1, #1 bl __modsi3 ldrh r1, [r4, #0x32] adds r1, r1, r0 strh r1, [r4, #0x32] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] _08027D1E: pop {r4, r5, pc} thumb_func_start sub_08027D20 sub_08027D20: @ 0x08027D20 .ifdef EU push {r4, lr} adds r4, r0, #0 movs r1, #0x15 movs r2, #0 movs r3, #0 bl CreateObjectWithParent adds r3, r0, #0 cmp r3, #0 beq _08027D44 movs r0, #0xc9 strh r0, [r3, #0x12] adds r0, r4, #0 adds r0, #0x60 ldrh r1, [r0] adds r0, r3, #0 adds r0, #0x60 strh r1, [r0] ldrb r1, [r4, #0x1a] lsls r1, r1, #0x1c lsrs r1, r1, #0x1c ldrb r2, [r3, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3, #0x1a] ldrh r0, [r3, #0x32] adds r0, #1 strh r0, [r3, #0x32] adds r1, r3, #0 adds r1, #0x63 movs r0, #8 strb r0, [r1] _08027D44: adds r0, r3, #0 pop {r4, pc} .else push {r4, r5, lr} adds r5, r0, #0 movs r1, #0x15 movs r2, #0 movs r3, #0 bl CreateObjectWithParent adds r4, r0, #0 cmp r4, #0 beq _08027D66 movs r0, #0xc9 strh r0, [r4, #0x12] ldrh r0, [r4, #0x32] adds r0, #1 strh r0, [r4, #0x32] adds r1, r4, #0 adds r1, #0x63 movs r0, #8 strb r0, [r1] adds r0, r4, #0 movs r1, #0x3e bl LoadFixedGFX ldrb r0, [r5, #0xb] cmp r0, #0 bne _08027D5E adds r0, r4, #0 movs r1, #0x2b bl LoadObjPalette b _08027D66 _08027D5E: adds r0, r4, #0 movs r1, #0x2c bl LoadObjPalette _08027D66: adds r0, r4, #0 pop {r4, r5, pc} .align 2, 0 .endif