.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start PlayerEmptyBottle PlayerEmptyBottle: @ 0x08071E98 push {lr} ldr r2, _08071EAC @ =gUnk_0811BB48 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08071EAC: .4byte gUnk_0811BB48 thumb_func_start sub_08071EB0 sub_08071EB0: @ 0x08071EB0 push {r4, lr} adds r4, r0, #0 bl ResetPlayer adds r0, r4, #0 movs r1, #0xe bl CreatePlayerBomb cmp r0, #0 beq _08071F12 ldr r3, _08071EE4 @ =gPlayerState adds r2, r3, #0 adds r2, #0x38 ldrb r1, [r2] adds r0, #0x68 strb r1, [r0] ldrb r0, [r4, #0xd] adds r0, #1 strb r0, [r4, #0xd] ldrb r0, [r2] cmp r0, #0x20 bne _08071EEC ldr r0, _08071EE8 @ =0x00000614 strh r0, [r3, #8] b _08071F12 .align 2, 0 _08071EE4: .4byte gPlayerState _08071EE8: .4byte 0x00000614 _08071EEC: cmp r0, #0x20 blt _08071F00 cmp r0, #0x25 bgt _08071F00 ldr r0, _08071EFC @ =0x000002DF strh r0, [r3, #8] b _08071F12 .align 2, 0 _08071EFC: .4byte 0x000002DF _08071F00: movs r0, #0xc2 lsls r0, r0, #3 strh r0, [r3, #8] adds r0, r3, #0 adds r0, #0x38 ldrb r0, [r0] movs r1, #2 bl sub_0807CAA0 _08071F12: pop {r4, pc} thumb_func_start sub_08071F14 sub_08071F14: @ 0x08071F14 push {r4, lr} adds r4, r0, #0 bl UpdateAnimationSingleFrame adds r4, #0x5a ldrb r1, [r4] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08071F32 ldr r1, _08071F34 @ =gPlayerState movs r0, #0 str r0, [r1, #0x2c] bl sub_0807921C _08071F32: pop {r4, pc} .align 2, 0 _08071F34: .4byte gPlayerState thumb_func_start PlayerFrozen PlayerFrozen: @ 0x08071F38 push {lr} ldr r2, _08071F4C @ =gUnk_0811BB50 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08071F4C: .4byte gUnk_0811BB50 thumb_func_start sub_08071F50 sub_08071F50: @ 0x08071F50 push {lr} ldrb r2, [r0, #0x10] movs r1, #0x7f ands r1, r2 strb r1, [r0, #0x10] movs r1, #0x78 strb r1, [r0, #0xe] ldrb r1, [r0, #0xd] adds r1, #1 strb r1, [r0, #0xd] ldr r1, _08071F78 @ =gPlayerState movs r0, #0xa5 lsls r0, r0, #2 strh r0, [r1, #8] bl sub_08077B20 ldr r0, _08071F7C @ =0x00000195 bl SoundReq pop {pc} .align 2, 0 _08071F78: .4byte gPlayerState _08071F7C: .4byte 0x00000195 thumb_func_start sub_08071F80 sub_08071F80: @ 0x08071F80 push {r4, r5, lr} adds r4, r0, #0 movs r1, #0x80 lsls r1, r1, #6 bl sub_08003FC4 adds r5, r0, #0 cmp r5, #0 bne _08071FB8 adds r0, r4, #0 bl UpdateSpriteForCollisionLayer ldr r0, _08071FB4 @ =gPlayerState strb r5, [r0, #2] ldrb r0, [r0, #0x14] cmp r0, #0 bne _08071FB8 bl sub_08079D48 cmp r0, #0 bne _08071FB8 adds r0, r4, #0 bl sub_08072008 b _08072004 .align 2, 0 _08071FB4: .4byte gPlayerState _08071FB8: bl sub_08079B24 cmp r0, #0 bne _08071FC8 adds r0, r4, #0 bl sub_08079708 b _08071FFE _08071FC8: ldr r0, _08071FEC @ =gPlayerState ldr r0, [r0, #0x30] movs r1, #0x80 lsls r1, r1, #4 ands r0, r1 cmp r0, #0 beq _08071FFE bl sub_0807953C cmp r0, #0 beq _08071FF0 ldrb r0, [r4, #0xe] subs r0, #3 strb r0, [r4, #0xe] adds r1, r4, #0 adds r1, #0x62 movs r0, #2 b _08071FF4 .align 2, 0 _08071FEC: .4byte gPlayerState _08071FF0: adds r1, r4, #0 adds r1, #0x62 _08071FF4: strb r0, [r1] movs r0, #0xe ldrsb r0, [r4, r0] cmp r0, #0 bgt _08072004 _08071FFE: adds r0, r4, #0 bl sub_08072008 _08072004: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08072008 sub_08072008: @ 0x08072008 push {lr} adds r3, r0, #0 adds r1, r3, #0 adds r1, #0x3d movs r2, #0 movs r0, #0xa0 strb r0, [r1] adds r0, r3, #0 adds r0, #0x42 strb r2, [r0] ldrb r1, [r3, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r3, #0x10] adds r0, r3, #0 adds r0, #0x62 strb r2, [r0] ldr r2, _08072044 @ =gPlayerState ldr r0, [r2, #0x30] ldr r1, _08072048 @ =0xFFFFF7FE ands r0, r1 str r0, [r2, #0x30] adds r0, r3, #0 movs r1, #0xd movs r2, #0 bl CreateFx bl sub_080791BC pop {pc} .align 2, 0 _08072044: .4byte gPlayerState _08072048: .4byte 0xFFFFF7FE thumb_func_start sub_0807204C sub_0807204C: @ 0x0807204C push {lr} ldr r2, _08072060 @ =gUnk_0811BB58 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08072060: .4byte gUnk_0811BB58 thumb_func_start sub_08072064 sub_08072064: @ 0x08072064 push {lr} movs r1, #1 strb r1, [r0, #0xd] ldrb r2, [r0, #0x10] movs r1, #0x7f ands r1, r2 strb r1, [r0, #0x10] ldr r2, _08072094 @ =gPlayerState adds r1, r2, #0 adds r1, #0x3a ldrb r1, [r1] strb r1, [r0, #0xe] adds r0, r2, #0 adds r0, #0x38 ldrb r1, [r0] adds r0, #1 ldrb r0, [r0] lsls r0, r0, #8 orrs r1, r0 strh r1, [r2, #8] bl ResetPlayer pop {pc} .align 2, 0 _08072094: .4byte gPlayerState thumb_func_start sub_08072098 sub_08072098: @ 0x08072098 push {r4, lr} adds r4, r0, #0 bl UpdateAnimationSingleFrame ldrb r0, [r4, #0xe] cmp r0, #0 beq _080720B4 subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _080720D8 b _080720C2 _080720B4: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080720D8 _080720C2: adds r0, r4, #0 adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 beq _080720D4 ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] _080720D4: bl sub_080791BC _080720D8: pop {r4, pc} .align 2, 0 thumb_func_start sub_080720DC sub_080720DC: @ 0x080720DC push {r4, lr} adds r4, r0, #0 bl sub_08078EFC cmp r0, #0 bne _080720F8 ldr r0, _080720FC @ =gUnk_0811BB60 ldrb r1, [r4, #0xd] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 _080720F8: pop {r4, pc} .align 2, 0 _080720FC: .4byte gUnk_0811BB60 thumb_func_start sub_08072100 sub_08072100: @ 0x08072100 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0x18] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #0xa0 lsls r0, r0, #1 strh r0, [r4, #0x24] ldr r0, _08072148 @ =gUnk_08114F88 str r0, [r4, #0x48] ldr r2, _0807214C @ =gPlayerState adds r0, r2, #0 adds r0, #0x38 ldrb r0, [r0] strb r0, [r4, #0xe] movs r0, #1 strb r0, [r4, #0xd] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] adds r0, r2, #0 adds r0, #0x39 ldrb r0, [r0] cmp r0, #0 beq _0807213A movs r0, #0xff strb r0, [r4, #0x15] _0807213A: ldr r0, [r2, #0x30] movs r1, #8 ands r0, r1 cmp r0, #0 beq _08072154 ldr r0, _08072150 @ =0x00000404 b _08072158 .align 2, 0 _08072148: .4byte gUnk_08114F88 _0807214C: .4byte gPlayerState _08072150: .4byte 0x00000404 _08072154: movs r0, #0x82 lsls r0, r0, #1 _08072158: strh r0, [r2, #8] bl ResetPlayer adds r0, r4, #0 bl sub_08072168 pop {r4, pc} .align 2, 0 thumb_func_start sub_08072168 sub_08072168: @ 0x08072168 push {r4, lr} adds r4, r0, #0 bl UpdateAnimationSingleFrame movs r2, #0xc rsbs r2, r2, #0 adds r0, r4, #0 movs r1, #0 bl sub_0806F854 lsls r0, r0, #0x10 movs r1, #0x80 lsls r1, r1, #6 cmp r0, #0 beq _0807218A movs r1, #0x80 lsls r1, r1, #7 _0807218A: adds r0, r4, #0 bl sub_08003FC4 ldr r0, _080721A4 @ =gPlayerState adds r0, #0x3a ldrb r0, [r0] cmp r0, #0 beq _080721A8 adds r0, r4, #0 bl sub_0806F69C b _080721AC .align 2, 0 _080721A4: .4byte gPlayerState _080721A8: bl sub_08079E08 _080721AC: ldr r1, _080721E0 @ =gPlayerState ldrb r0, [r4, #0x15] strb r0, [r1, #0xd] bl sub_08019840 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _080721DE adds r1, r4, #0 adds r1, #0x42 movs r0, #0 strb r0, [r1] ldrb r0, [r4, #0x10] movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r0, r4, #0 bl UpdateSpriteForCollisionLayer bl sub_080791BC _080721DE: pop {r4, pc} .align 2, 0 _080721E0: .4byte gPlayerState thumb_func_start PlayerPull PlayerPull: @ 0x080721E4 push {lr} ldr r1, _08072208 @ =gPlayerState adds r1, #0xa8 movs r2, #0x1a strb r2, [r1] ldr r2, _0807220C @ =gUnk_0811BB68 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 ldr r0, _08072210 @ =gUnk_0200AF00 adds r0, #0x2e movs r1, #8 strb r1, [r0] pop {pc} .align 2, 0 _08072208: .4byte gPlayerState _0807220C: .4byte gUnk_0811BB68 _08072210: .4byte gUnk_0200AF00 thumb_func_start sub_08072214 sub_08072214: @ 0x08072214 push {lr} adds r3, r0, #0 movs r0, #1 strb r0, [r3, #0xd] movs r0, #0x80 strh r0, [r3, #0x24] ldr r2, _08072244 @ =gPlayerState adds r0, r2, #0 adds r0, #0x38 ldrb r0, [r0] strb r0, [r3, #0xe] ldrb r0, [r3, #0x14] movs r1, #4 eors r0, r1 lsls r0, r0, #2 strb r0, [r3, #0x15] ldr r0, [r2, #0x30] movs r1, #8 ands r0, r1 cmp r0, #0 bne _08072248 movs r0, #0xd3 lsls r0, r0, #2 b _0807224A .align 2, 0 _08072244: .4byte gPlayerState _08072248: ldr r0, _0807225C @ =0x00000944 _0807224A: strh r0, [r2, #8] ldr r0, [r2, #0x30] movs r1, #1 orrs r0, r1 str r0, [r2, #0x30] adds r0, r3, #0 bl sub_08072260 pop {pc} .align 2, 0 _0807225C: .4byte 0x00000944 thumb_func_start sub_08072260 sub_08072260: @ 0x08072260 push {r4, r5, lr} adds r4, r0, #0 ldr r5, _0807229C @ =gPlayerState adds r1, r5, #0 adds r1, #0x80 movs r0, #0 strh r0, [r1] bl sub_08079E08 adds r0, r4, #0 bl UpdateAnimationSingleFrame ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080722B0 ldr r0, [r5, #0x30] movs r1, #2 rsbs r1, r1, #0 ands r0, r1 str r0, [r5, #0x30] movs r1, #8 ands r0, r1 cmp r0, #0 bne _080722A0 movs r0, #0xd3 lsls r0, r0, #2 b _080722A2 .align 2, 0 _0807229C: .4byte gPlayerState _080722A0: ldr r0, _080722B4 @ =0x00000944 _080722A2: strh r0, [r5, #8] adds r1, r4, #0 adds r1, #0x42 movs r0, #0 strb r0, [r1] bl sub_080791BC _080722B0: pop {r4, r5, pc} .align 2, 0 _080722B4: .4byte 0x00000944 thumb_func_start PlayerLava PlayerLava: @ 0x080722B8 push {lr} ldr r1, _080722D4 @ =gPlayerState adds r1, #0xa8 movs r2, #0xa strb r2, [r1] ldr r2, _080722D8 @ =gUnk_0811BB70 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080722D4: .4byte gPlayerState _080722D8: .4byte gUnk_0811BB70 thumb_func_start sub_080722DC sub_080722DC: @ 0x080722DC push {r4, r5, lr} adds r4, r0, #0 ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldr r2, _08072318 @ =gPlayerState ldr r0, [r2, #0x30] movs r1, #0x80 ands r0, r1 adds r5, r2, #0 cmp r0, #0 bne _0807231C movs r0, #1 strb r0, [r4, #0xd] movs r0, #0xa0 lsls r0, r0, #0xa str r0, [r4, #0x20] movs r0, #0x42 movs r2, #0 bl CreateObject cmp r0, #0 beq _0807230E str r4, [r0, #0x54] _0807230E: movs r0, #0x8a lsls r0, r0, #1 strh r0, [r5, #8] b _08072332 .align 2, 0 _08072318: .4byte gPlayerState _0807231C: ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] movs r0, #3 strb r0, [r4, #0xd] adds r1, r4, #0 adds r1, #0x42 movs r0, #0xa strb r0, [r1] _08072332: ldr r0, [r5, #0x30] ldr r1, _08072350 @ =0x00000401 orrs r0, r1 str r0, [r5, #0x30] bl ResetPlayer movs r0, #0x92 lsls r0, r0, #1 bl SoundReq movs r0, #0x7a bl SoundReq pop {r4, r5, pc} .align 2, 0 _08072350: .4byte 0x00000401 thumb_func_start sub_08072354 sub_08072354: @ 0x08072354 push {r4, lr} adds r4, r0, #0 movs r2, #0xc rsbs r2, r2, #0 movs r1, #0 bl sub_0806F854 adds r0, r4, #0 bl UpdateAnimationSingleFrame adds r0, r4, #0 bl sub_08079744 movs r1, #0x80 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 adds r3, r0, #0 cmp r3, #0 bne _080723C0 adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] adds r0, r4, #0 adds r0, #0x42 strb r3, [r0] movs r0, #2 strb r0, [r4, #0xd] movs r0, #0x3c strb r0, [r4, #0xe] ldr r2, _080723C4 @ =gPlayerState ldr r0, _080723C8 @ =0x000002C1 strh r0, [r2, #8] ldr r0, [r2, #0x30] ldr r1, _080723CC @ =0xFFFFFBFF ands r0, r1 str r0, [r2, #0x30] adds r0, r4, #0 bl UpdateSpriteForCollisionLayer adds r0, r4, #0 movs r1, #0xc movs r2, #0 bl CreateFx movs r0, #0xd3 lsls r0, r0, #1 bl SoundReq _080723C0: pop {r4, pc} .align 2, 0 _080723C4: .4byte gPlayerState _080723C8: .4byte 0x000002C1 _080723CC: .4byte 0xFFFFFBFF thumb_func_start sub_080723D0 sub_080723D0: @ 0x080723D0 push {r4, lr} adds r4, r0, #0 bl UpdateAnimationSingleFrame ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _0807240A adds r2, r4, #0 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] adds r1, r4, #0 adds r1, #0x3d movs r0, #0x14 strb r0, [r1] subs r0, #0x16 bl ModHealth bl RespawnPlayer _0807240A: pop {r4, pc} thumb_func_start sub_0807240C sub_0807240C: @ 0x0807240C push {lr} adds r2, r0, #0 adds r1, r2, #0 adds r1, #0x42 ldrb r0, [r1] subs r0, #1 strb r0, [r1] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _08072448 ldrb r0, [r2, #0x18] movs r1, #3 orrs r0, r1 strb r0, [r2, #0x18] adds r1, r2, #0 adds r1, #0x3d movs r0, #0x14 strb r0, [r1] ldr r2, _0807244C @ =gPlayerState ldr r0, [r2, #0x30] ldr r1, _08072450 @ =0xFFFFFBFF ands r0, r1 str r0, [r2, #0x30] movs r0, #2 rsbs r0, r0, #0 bl ModHealth bl RespawnPlayer _08072448: pop {pc} .align 2, 0 _0807244C: .4byte gPlayerState _08072450: .4byte 0xFFFFFBFF thumb_func_start sub_08072454 sub_08072454: @ 0x08072454 push {lr} ldr r2, _08072468 @ =gUnk_0811BB80 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08072468: .4byte gUnk_0811BB80 thumb_func_start sub_0807246C sub_0807246C: @ 0x0807246C push {lr} movs r1, #1 strb r1, [r0, #0xd] ldr r2, _0807248C @ =gPlayerState adds r1, r2, #0 adds r1, #0x38 ldrb r1, [r1] strb r1, [r0, #0xe] movs r0, #0xf0 lsls r0, r0, #2 strh r0, [r2, #8] movs r0, #0x7b bl SoundReq pop {pc} .align 2, 0 _0807248C: .4byte gPlayerState thumb_func_start sub_08072490 sub_08072490: @ 0x08072490 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xe] subs r0, #1 strb r0, [r1, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff beq _080724AE adds r0, r1, #0 bl UpdateAnimationSingleFrame bl sub_08079E08 b _080724C2 _080724AE: adds r0, r1, #0 adds r0, #0x3d movs r1, #0x3c strb r1, [r0] movs r0, #8 rsbs r0, r0, #0 bl ModHealth bl sub_080791D0 _080724C2: pop {pc} thumb_func_start PlayerRoomTransition PlayerRoomTransition: @ 0x080724C4 push {lr} ldr r2, _080724D8 @ =gUnk_0811BB88 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080724D8: .4byte gUnk_0811BB88 thumb_func_start sub_080724DC sub_080724DC: @ 0x080724DC push {r4, lr} adds r4, r0, #0 adds r1, r4, #0 adds r1, #0x42 movs r0, #0 strb r0, [r1] bl sub_0807A108 adds r0, r4, #0 bl sub_080002B8 cmp r0, #0x29 beq _0807254C ldr r1, _08072530 @ =gPlayerState adds r0, r1, #0 adds r0, #0x89 ldrb r0, [r0] cmp r0, #0 bne _08072512 adds r0, r1, #0 adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 beq _08072512 adds r0, r4, #0 bl sub_0807AE20 _08072512: ldr r0, _08072534 @ =gRoomControls ldrh r0, [r0] cmp r0, #0 bne _08072538 ldrb r0, [r4, #0x11] lsrs r2, r0, #4 movs r1, #0x10 rsbs r1, r1, #0 ands r1, r0 orrs r1, r2 strb r1, [r4, #0x11] adds r0, r4, #0 bl sub_080728AC b _08072588 .align 2, 0 _08072530: .4byte gPlayerState _08072534: .4byte gRoomControls _08072538: ldr r0, _08072548 @ =gPlayerState ldrb r0, [r0, #0x1c] cmp r0, #0 bne _08072588 adds r0, r4, #0 bl UpdateAnimationSingleFrame b _08072588 .align 2, 0 _08072548: .4byte gPlayerState _0807254C: ldrb r0, [r4, #0x18] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #1 strb r0, [r4, #0xd] ldr r0, _08072570 @ =gRoomVars ldrb r0, [r0] cmp r0, #0 bne _08072588 ldr r2, _08072574 @ =gPlayerState ldr r0, [r2, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _0807257C ldr r0, _08072578 @ =0x00000C18 b _08072580 .align 2, 0 _08072570: .4byte gRoomVars _08072574: .4byte gPlayerState _08072578: .4byte 0x00000C18 _0807257C: movs r0, #0x82 lsls r0, r0, #1 _08072580: strh r0, [r2, #8] ldrb r0, [r4, #0x14] lsls r0, r0, #2 strb r0, [r4, #0x15] _08072588: pop {r4, pc} .align 2, 0 thumb_func_start sub_0807258C sub_0807258C: @ 0x0807258C push {r4, lr} adds r4, r0, #0 ldr r0, _080725D0 @ =gRoomControls ldrh r0, [r0] cmp r0, #0 bne _08072604 adds r0, r4, #0 bl sub_0807A894 cmp r0, #0x29 bne _080725E4 bl sub_08079E08 bl sub_080797C4 cmp r0, #0 beq _080725DC ldr r2, _080725D4 @ =gPlayerState ldr r1, _080725D8 @ =gPlayerEntity ldrh r0, [r1, #0x2e] strh r0, [r2, #0x16] ldrh r0, [r1, #0x32] strh r0, [r2, #0x18] ldrb r1, [r4, #0x11] lsrs r2, r1, #4 movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x11] adds r0, r4, #0 bl sub_080728AC b _08072604 .align 2, 0 _080725D0: .4byte gRoomControls _080725D4: .4byte gPlayerState _080725D8: .4byte gPlayerEntity _080725DC: adds r0, r4, #0 bl UpdateAnimationSingleFrame b _08072604 _080725E4: ldr r2, _08072624 @ =gPlayerState ldr r1, _08072628 @ =gPlayerEntity ldrh r0, [r1, #0x2e] strh r0, [r2, #0x16] ldrh r0, [r1, #0x32] strh r0, [r2, #0x18] ldrb r1, [r4, #0x11] lsrs r2, r1, #4 movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x11] adds r0, r4, #0 bl sub_080728AC _08072604: ldr r1, _08072624 @ =gPlayerState adds r0, r1, #0 adds r0, #0x89 ldrb r0, [r0] cmp r0, #0 bne _08072620 adds r0, r1, #0 adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 beq _08072620 adds r0, r4, #0 bl sub_0807AE20 _08072620: pop {r4, pc} .align 2, 0 _08072624: .4byte gPlayerState _08072628: .4byte gPlayerEntity thumb_func_start PlayerRoll PlayerRoll: @ 0x0807262C push {lr} ldr r1, _08072648 @ =gPlayerState adds r1, #0xa8 movs r2, #9 strb r2, [r1] ldr r2, _0807264C @ =gUnk_0811BB90 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08072648: .4byte gPlayerState _0807264C: .4byte gUnk_0811BB90 thumb_func_start sub_08072650 sub_08072650: @ 0x08072650 push {r4, r5, lr} adds r4, r0, #0 ldr r5, _08072698 @ =gPlayerState ldr r0, [r5, #0x30] movs r1, #0x80 lsls r1, r1, #0xe ands r0, r1 cmp r0, #0 bne _0807266E ldr r0, _0807269C @ =gPlayerEntity bl sub_0806F948 ldrb r0, [r4, #0x14] lsls r0, r0, #2 strb r0, [r4, #0x15] _0807266E: movs r1, #0 movs r0, #1 strb r0, [r4, #0xd] strb r1, [r4, #0xe] bl ResetPlayer ldr r3, [r5, #0x30] movs r0, #0x80 ands r0, r3 cmp r0, #0 beq _080726A4 adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] ldr r0, _080726A0 @ =0x00000C08 b _080726BE .align 2, 0 _08072698: .4byte gPlayerState _0807269C: .4byte gPlayerEntity _080726A0: .4byte 0x00000C08 _080726A4: adds r0, r4, #0 adds r0, #0x40 movs r1, #0x1e strb r1, [r0] movs r0, #8 ands r3, r0 cmp r3, #0 beq _080726BA movs r0, #0x87 lsls r0, r0, #3 b _080726BE _080726BA: movs r0, #0xab lsls r0, r0, #2 _080726BE: strh r0, [r5, #8] ldr r2, _080726E0 @ =gPlayerState ldr r0, [r2, #0x30] movs r1, #0x80 lsls r1, r1, #0xb orrs r0, r1 str r0, [r2, #0x30] bl Random movs r1, #1 ands r1, r0 cmp r1, #0 beq _080726E4 movs r0, #0x79 bl SoundReq b _080726EA .align 2, 0 _080726E0: .4byte gPlayerState _080726E4: movs r0, #0x78 bl SoundReq _080726EA: movs r0, #0x7e bl SoundReq pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080726F4 sub_080726F4: @ 0x080726F4 push {r4, r5, lr} adds r4, r0, #0 ldr r3, _08072744 @ =gPlayerState ldr r2, [r3, #0x30] movs r0, #0xc0 lsls r0, r0, #0xc ands r0, r2 movs r1, #0x80 lsls r1, r1, #0xb cmp r0, r1 bne _08072730 movs r0, #0x80 lsls r0, r0, #0xe ands r0, r2 cmp r0, #0 bne _0807274C adds r0, r4, #0 adds r0, #0x3d ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 cmp r0, #0 beq _0807274C adds r0, r4, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0807274C _08072730: ldr r0, _08072748 @ =0xFFFBFFFF ands r2, r0 str r2, [r3, #0x30] bl sub_08078EFC cmp r0, #0 beq _08072740 b _080728A0 _08072740: b _080727E0 .align 2, 0 _08072744: .4byte gPlayerState _08072748: .4byte 0xFFFBFFFF _0807274C: ldrb r1, [r4, #0x14] movs r0, #6 ands r0, r1 lsls r0, r0, #2 strb r0, [r4, #0x15] ldr r0, _080727A0 @ =gPlayerState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 bne _0807277E ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _0807277E ldr r0, _080727A4 @ =gPlayerEntity movs r1, #0x11 movs r2, #0x40 bl CreateFx movs r0, #4 strb r0, [r4, #0xe] _0807277E: ldr r5, _080727A0 @ =gPlayerState ldr r0, [r5, #0x30] movs r1, #2 ands r0, r1 cmp r0, #0 bne _0807278E bl sub_0807A1B8 _0807278E: bl sub_08078EFC cmp r0, #0 beq _080727AC ldr r0, [r5, #0x30] ldr r1, _080727A8 @ =0xFFFBFFFF ands r0, r1 str r0, [r5, #0x30] b _080728A0 .align 2, 0 _080727A0: .4byte gPlayerState _080727A4: .4byte gPlayerEntity _080727A8: .4byte 0xFFFBFFFF _080727AC: ldr r1, [r5, #0x30] movs r0, #0x80 lsls r0, r0, #0xc ands r0, r1 cmp r0, #0 beq _080727C4 ldr r0, _080727C0 @ =0xFFFBFFFF ands r1, r0 str r1, [r5, #0x30] b _080728A0 .align 2, 0 _080727C0: .4byte 0xFFFBFFFF _080727C4: adds r0, r4, #0 bl sub_0807AC54 cmp r0, #0 bne _080728A0 ldr r1, [r5, #0x30] movs r3, #0x94 lsls r3, r3, #2 ands r3, r1 cmp r3, #0 beq _080727EC ldr r0, _080727E8 @ =0xFFFBFFFF ands r1, r0 str r1, [r5, #0x30] _080727E0: adds r0, r4, #0 bl sub_080728AC b _080728A0 .align 2, 0 _080727E8: .4byte 0xFFFBFFFF _080727EC: ldrb r0, [r5, #0x12] cmp r0, #0x17 bne _080727FE adds r0, r4, #0 bl sub_0800892E adds r5, r4, #0 adds r5, #0x5a b _08072844 _080727FE: adds r1, r4, #0 adds r1, #0x5a ldrb r0, [r1] movs r2, #0xf ands r2, r0 adds r5, r1, #0 cmp r2, #1 beq _0807282A cmp r2, #1 bgt _08072818 cmp r2, #0 beq _08072822 b _0807283C _08072818: cmp r2, #2 beq _08072832 cmp r2, #3 beq _0807283A b _0807283C _08072822: movs r0, #0x80 lsls r0, r0, #2 strh r0, [r4, #0x24] b _0807283C _0807282A: ldrh r0, [r4, #0x24] adds r0, #0x20 strh r0, [r4, #0x24] b _0807283C _08072832: movs r0, #0xc0 lsls r0, r0, #2 strh r0, [r4, #0x24] b _0807283C _0807283A: strh r3, [r4, #0x24] _0807283C: bl sub_08078F24 bl sub_08079E08 _08072844: ldrb r1, [r5] movs r0, #0x10 ands r0, r1 cmp r0, #0 bne _08072860 ldr r0, _080728A4 @ =gPlayerState ldr r1, [r0, #0x30] movs r0, #0x80 ands r1, r0 cmp r1, #0 bne _08072860 adds r0, r4, #0 adds r0, #0x40 strb r1, [r0] _08072860: ldrb r1, [r5] movs r0, #0x40 ands r0, r1 cmp r0, #0 beq _08072870 adds r0, r4, #0 bl sub_08077698 _08072870: ldrb r1, [r5] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _08072882 ldr r0, _080728A4 @ =gPlayerState ldrb r0, [r0, #4] cmp r0, #0 beq _08072886 _08072882: bl sub_080791D0 _08072886: ldrb r1, [r5] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0807289A ldr r0, _080728A4 @ =gPlayerState ldr r1, [r0, #0x30] ldr r2, _080728A8 @ =0xFFDBFFFF ands r1, r2 str r1, [r0, #0x30] _0807289A: adds r0, r4, #0 bl UpdateAnimationSingleFrame _080728A0: pop {r4, r5, pc} .align 2, 0 _080728A4: .4byte gPlayerState _080728A8: .4byte 0xFFDBFFFF thumb_func_start sub_080728AC sub_080728AC: @ 0x080728AC push {r4, r5, lr} adds r4, r0, #0 bl sub_08079938 ldr r0, _080728C8 @ =gPlayerState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _080728CC adds r0, r4, #0 bl sub_0807B068 b _080728D0 .align 2, 0 _080728C8: .4byte gPlayerState _080728CC: bl sub_08078F60 _080728D0: ldr r1, _08072940 @ =gPlayerState adds r0, r1, #0 adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 beq _080728E0 movs r0, #0 strh r0, [r4, #0x24] _080728E0: ldr r0, [r1, #0x30] movs r5, #0x40 ands r5, r0 adds r3, r0, #0 cmp r5, #0 bne _080728F6 ldr r0, _08072944 @ =gPlayerEntity ldrb r1, [r0, #0x18] movs r2, #3 orrs r1, r2 strb r1, [r0, #0x18] _080728F6: movs r0, #0x80 ands r0, r3 cmp r0, #0 bne _08072910 ldr r2, _08072944 @ =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] _08072910: ldr r0, _08072948 @ =gRoomControls ldrb r1, [r0, #0xf] movs r0, #4 ands r0, r1 cmp r0, #0 bne _0807292C cmp r5, #0 beq _08072928 ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] _08072928: bl sub_080791D0 _0807292C: ldr r0, _08072940 @ =gPlayerState ldr r0, [r0, #0x30] movs r1, #2 ands r0, r1 cmp r0, #0 bne _0807293C bl sub_0807A1B8 _0807293C: pop {r4, r5, pc} .align 2, 0 _08072940: .4byte gPlayerState _08072944: .4byte gPlayerEntity _08072948: .4byte gRoomControls thumb_func_start PlayerInHole PlayerInHole: @ 0x0807294C push {lr} ldr r1, _08072968 @ =gPlayerState adds r1, #0xa8 movs r2, #0x17 strb r2, [r1] ldr r2, _0807296C @ =gUnk_0811BB98 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08072968: .4byte gPlayerState _0807296C: .4byte gUnk_0811BB98 thumb_func_start sub_08072970 sub_08072970: @ 0x08072970 push {r4, r5, r6, r7, lr} adds r5, r0, #0 adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 beq _08072A4C movs r7, #1 strb r7, [r5, #0xd] ldrh r2, [r5, #0x2e] movs r1, #0x10 rsbs r1, r1, #0 adds r0, r1, #0 ands r0, r2 movs r2, #8 orrs r0, r2 strh r0, [r5, #0x2e] ldrh r0, [r5, #0x32] ands r1, r0 movs r0, #0xa movs r3, #0 orrs r1, r0 strh r1, [r5, #0x32] ldrb r1, [r5, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r5, #0x10] adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 movs r1, #0x39 rsbs r1, r1, #0 ands r0, r1 strb r0, [r2] strb r3, [r5, #0xe] ldr r2, _080729D8 @ =gPlayerState ldr r0, [r2, #0x30] movs r1, #0x80 lsls r1, r1, #0xd orrs r0, r1 str r0, [r2, #0x30] movs r1, #8 ands r0, r1 cmp r0, #0 beq _080729DC movs r0, #0x95 lsls r0, r0, #4 strh r0, [r2, #8] adds r6, r5, #0 adds r6, #0x38 b _08072A14 .align 2, 0 _080729D8: .4byte gPlayerState _080729DC: ldr r0, _08072A50 @ =0x0000061C strh r0, [r2, #8] movs r1, #0x2e ldrsh r0, [r5, r1] ldr r2, _08072A54 @ =gRoomControls ldrh r1, [r2, #6] subs r0, r0, r1 asrs r0, r0, #4 movs r3, #0x3f ands r0, r3 movs r4, #0x32 ldrsh r1, [r5, r4] ldrh r2, [r2, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r3 lsls r1, r1, #6 orrs r0, r1 adds r4, r5, #0 adds r4, #0x38 ldrb r1, [r4] bl sub_080001DA ldr r1, _08072A58 @ =0x00004020 adds r6, r4, #0 cmp r0, r1 bne _08072A14 strb r7, [r5, #0xe] _08072A14: ldr r0, _08072A5C @ =0x00004070 movs r7, #0x2e ldrsh r1, [r5, r7] ldr r3, _08072A54 @ =gRoomControls ldrh r2, [r3, #6] subs r1, r1, r2 asrs r1, r1, #4 movs r4, #0x3f ands r1, r4 movs r7, #0x32 ldrsh r2, [r5, r7] ldrh r3, [r3, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r4 lsls r2, r2, #6 orrs r1, r2 ldrb r2, [r6] bl SetTile bl ResetPlayer adds r0, r5, #0 bl sub_08072A60 movs r0, #0x81 bl SoundReq _08072A4C: pop {r4, r5, r6, r7, pc} .align 2, 0 _08072A50: .4byte 0x0000061C _08072A54: .4byte gRoomControls _08072A58: .4byte 0x00004020 _08072A5C: .4byte 0x00004070 thumb_func_start sub_08072A60 sub_08072A60: @ 0x08072A60 push {lr} adds r2, r0, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08072AC4 ldrb r0, [r2, #0xe] cmp r0, #1 bne _08072A9C movs r0, #3 strb r0, [r2, #0xd] movs r0, #0x28 strb r0, [r2, #0xe] adds r2, #0x29 ldrb r1, [r2] subs r0, #0x61 ands r0, r1 movs r1, #8 orrs r0, r1 strb r0, [r2] ldr r1, _08072A94 @ =gPlayerState ldr r0, _08072A98 @ =0x00000624 strh r0, [r1, #8] b _08072ACA .align 2, 0 _08072A94: .4byte gPlayerState _08072A98: .4byte 0x00000624 _08072A9C: movs r0, #2 strb r0, [r2, #0xd] ldr r2, _08072AB4 @ =gPlayerState ldr r0, [r2, #0x30] movs r1, #8 ands r0, r1 cmp r0, #0 beq _08072ABC ldr r0, _08072AB8 @ =0x00000954 strh r0, [r2, #8] b _08072ACA .align 2, 0 _08072AB4: .4byte gPlayerState _08072AB8: .4byte 0x00000954 _08072ABC: movs r0, #0xc4 lsls r0, r0, #3 strh r0, [r2, #8] b _08072ACA _08072AC4: adds r0, r2, #0 bl UpdateAnimationSingleFrame _08072ACA: pop {pc} thumb_func_start sub_08072ACC sub_08072ACC: @ 0x08072ACC push {r4, r5, lr} adds r4, r0, #0 ldr r5, _08072AE0 @ =gPlayerState ldrb r3, [r5, #0xd] lsls r2, r3, #0x18 lsrs r0, r2, #0x18 cmp r0, #0xff bne _08072AE4 movs r0, #0 b _08072B56 .align 2, 0 _08072AE0: .4byte gPlayerState _08072AE4: ldrb r1, [r4, #0xf] cmp r1, #7 bls _08072B50 ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] strb r3, [r4, #0x15] movs r0, #0xd0 lsls r0, r0, #9 str r0, [r4, #0x20] movs r0, #0x78 strh r0, [r4, #0x24] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] subs r0, #0x80 ands r0, r1 movs r1, #4 orrs r0, r1 movs r1, #0x39 rsbs r1, r1, #0 ands r0, r1 movs r1, #8 orrs r0, r1 strb r0, [r2] movs r0, #0x41 strb r0, [r5, #2] bl sub_0807921C movs r1, #0x2e ldrsh r0, [r4, r1] ldr r2, _08072B4C @ =gRoomControls ldrh r1, [r2, #6] subs r0, r0, r1 asrs r0, r0, #4 movs r3, #0x3f ands r0, r3 movs r5, #0x32 ldrsh r1, [r4, r5] ldrh r2, [r2, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r3 lsls r1, r1, #6 orrs r0, r1 adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_0807BA8C b _08072B58 .align 2, 0 _08072B4C: .4byte gRoomControls _08072B50: lsrs r0, r2, #0x1a strb r0, [r4, #0x14] adds r0, r1, #1 _08072B56: strb r0, [r4, #0xf] _08072B58: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08072B5C sub_08072B5C: @ 0x08072B5C push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r0, [r5, #0xe] movs r1, #0x28 subs r1, r1, r0 asrs r1, r1, #4 adds r1, #1 adds r0, r5, #0 bl sub_080042BA adds r0, r5, #0 bl sub_0806F948 ldrb r0, [r5, #0xe] cmp r0, #0 beq _08072B82 subs r0, #1 strb r0, [r5, #0xe] b _08072C40 _08072B82: ldr r0, _08072C04 @ =0x00004021 movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _08072C08 @ =gRoomControls ldrh r2, [r3, #6] subs r1, r1, r2 asrs r1, r1, #4 movs r4, #0x3f ands r1, r4 movs r6, #0x32 ldrsh r2, [r5, r6] ldrh r3, [r3, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r4 lsls r2, r2, #6 orrs r1, r2 adds r2, r5, #0 adds r2, #0x38 ldrb r2, [r2] bl SetTile ldrb r0, [r5, #0x14] lsls r0, r0, #2 strb r0, [r5, #0x15] movs r0, #1 bl sub_0807A2F8 adds r4, r0, #0 cmp r4, #0 bne _08072C10 ldrb r0, [r5, #0x10] movs r1, #0x80 orrs r0, r1 strb r0, [r5, #0x10] adds r2, r5, #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] movs r0, #0x40 strh r0, [r5, #0x24] movs r0, #0xe4 lsls r0, r0, #0xa str r0, [r5, #0x20] ldr r0, [r5, #0x34] subs r0, #1 str r0, [r5, #0x34] ldr r1, _08072C0C @ =gPlayerState movs r0, #0x41 strb r0, [r1, #2] movs r2, #0xc rsbs r2, r2, #0 adds r0, r5, #0 movs r1, #0 bl sub_0806F854 bl sub_0807921C b _08072C40 .align 2, 0 _08072C04: .4byte 0x00004021 _08072C08: .4byte gRoomControls _08072C0C: .4byte gPlayerState _08072C10: bl sub_08052620 cmp r0, #0 bne _08072C1E adds r0, r5, #0 bl sub_08004542 _08072C1E: ldrb r0, [r5, #0xd] adds r0, #1 strb r0, [r5, #0xd] lsls r4, r4, #4 subs r4, #4 lsls r4, r4, #0xc str r4, [r5, #0x20] movs r0, #0x80 lsls r0, r0, #1 strh r0, [r5, #0x24] ldr r1, _08072C44 @ =gPlayerState movs r0, #0x81 lsls r0, r0, #4 strh r0, [r1, #8] movs r0, #0x7c bl SoundReq _08072C40: pop {r4, r5, r6, pc} .align 2, 0 _08072C44: .4byte gPlayerState thumb_func_start sub_08072C48 sub_08072C48: @ 0x08072C48 push {r4, lr} adds r4, r0, #0 bl UpdateAnimationSingleFrame adds r0, r4, #0 bl sub_0806F69C movs r1, #0x80 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _08072C98 adds r0, r4, #0 movs r1, #7 bl sub_08008790 ldr r4, _08072C90 @ =gPlayerState ldrb r0, [r4, #0x14] cmp r0, #0 beq _08072C94 bl sub_08008B22 cmp r0, #0 beq _08072C98 movs r0, #7 strb r0, [r4, #0x11] ldr r0, [r4, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 bne _08072C98 bl sub_080791BC b _08072C98 .align 2, 0 _08072C90: .4byte gPlayerState _08072C94: bl sub_0807921C _08072C98: pop {r4, pc} .align 2, 0 thumb_func_start sub_08072C9C sub_08072C9C: @ 0x08072C9C push {lr} ldr r1, _08072CB8 @ =gPlayerState adds r1, #0xa8 movs r2, #0x11 strb r2, [r1] ldr r2, _08072CBC @ =gUnk_0811BBAC ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08072CB8: .4byte gPlayerState _08072CBC: .4byte gUnk_0811BBAC thumb_func_start sub_08072CC0 sub_08072CC0: @ 0x08072CC0 movs r1, #1 strb r1, [r0, #0xd] ldrb r2, [r0, #0x10] movs r1, #0x7f ands r1, r2 strb r1, [r0, #0x10] ldr r3, _08072CF4 @ =gPlayerState adds r1, r3, #0 adds r1, #0x3a ldrb r1, [r1] lsrs r1, r1, #2 adds r1, #1 strb r1, [r0, #0xf] adds r1, r3, #0 adds r1, #0x39 ldrb r1, [r1] strb r1, [r0, #0x15] movs r2, #0 movs r1, #0x80 lsls r1, r1, #3 strh r1, [r0, #0x24] ldr r0, _08072CF8 @ =0x00000524 strh r0, [r3, #8] strb r2, [r3, #5] bx lr .align 2, 0 _08072CF4: .4byte gPlayerState _08072CF8: .4byte 0x00000524 thumb_func_start sub_08072CFC sub_08072CFC: @ 0x08072CFC push {r4, lr} adds r4, r0, #0 movs r1, #2 bl sub_080042BA ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff beq _08072D1C adds r0, r4, #0 bl sub_0806F69C b _08072D4E _08072D1C: movs r0, #2 strb r0, [r4, #0xd] ldr r2, _08072D50 @ =gPlayerState adds r1, r2, #0 adds r1, #0x38 ldrb r0, [r1] cmp r0, #7 bhi _08072D30 movs r0, #8 strb r0, [r1] _08072D30: ldrb r0, [r1] lsls r0, r0, #0xc str r0, [r4, #0x20] movs r1, #0 movs r0, #0x80 lsls r0, r0, #2 strh r0, [r4, #0x24] movs r0, #0x81 lsls r0, r0, #4 strh r0, [r2, #8] movs r0, #5 strb r0, [r4, #0xe] strb r1, [r4, #0xf] bl ResetPlayer _08072D4E: pop {r4, pc} .align 2, 0 _08072D50: .4byte gPlayerState thumb_func_start sub_08072D54 sub_08072D54: @ 0x08072D54 push {r4, r5, lr} adds r4, r0, #0 bl UpdateAnimationSingleFrame movs r2, #0xc rsbs r2, r2, #0 adds r0, r4, #0 movs r1, #0 bl sub_0806F854 ldrb r0, [r4, #0xe] cmp r0, #0 beq _08072D7A adds r0, r4, #0 bl sub_0806F69C ldrb r0, [r4, #0xe] subs r0, #1 b _08072E80 _08072D7A: adds r0, r4, #0 bl sub_0806F730 adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl GetTileType adds r2, r0, #0 ldrb r5, [r4, #0xf] cmp r5, #1 beq _08072DD0 cmp r5, #1 bgt _08072D9C cmp r5, #0 beq _08072DA6 b _08072E6C _08072D9C: cmp r5, #2 beq _08072DFA cmp r5, #3 beq _08072E30 b _08072E6C _08072DA6: ldr r1, _08072DC8 @ =gUnk_0811BBD4 ldr r0, _08072DCC @ =gPlayerEntity ldrb r0, [r0, #0x14] lsrs r0, r0, #1 lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r2, #0 bl sub_08007DD6 cmp r0, #0 beq _08072E6C movs r0, #1 strb r0, [r4, #0xe] strb r0, [r4, #0xf] b _08072E6C .align 2, 0 _08072DC8: .4byte gUnk_0811BBD4 _08072DCC: .4byte gPlayerEntity _08072DD0: ldr r1, _08072DEC @ =gUnk_0811BBD4 ldr r0, _08072DF0 @ =gPlayerEntity ldrb r0, [r0, #0x14] lsrs r0, r0, #1 lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r2, #0 bl sub_08007DD6 cmp r0, #0 beq _08072DF4 strb r5, [r4, #0xe] b _08072E6C .align 2, 0 _08072DEC: .4byte gUnk_0811BBD4 _08072DF0: .4byte gPlayerEntity _08072DF4: movs r0, #2 strb r0, [r4, #0xf] b _08072E6C _08072DFA: ldrb r0, [r4, #0x14] movs r5, #4 eors r0, r5 strb r0, [r4, #0x14] ldr r1, _08072E28 @ =gUnk_0811BBD4 ldr r0, _08072E2C @ =gPlayerEntity ldrb r0, [r0, #0x14] lsrs r0, r0, #1 lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r2, #0 bl sub_08007DD6 cmp r0, #0 beq _08072E22 movs r0, #1 strb r0, [r4, #0xe] movs r0, #3 strb r0, [r4, #0xf] _08072E22: ldrb r0, [r4, #0x14] eors r0, r5 b _08072E6A .align 2, 0 _08072E28: .4byte gUnk_0811BBD4 _08072E2C: .4byte gPlayerEntity _08072E30: ldrb r0, [r4, #0x14] movs r1, #4 eors r0, r1 strb r0, [r4, #0x14] ldr r1, _08072E58 @ =gUnk_0811BBD4 ldr r0, _08072E5C @ =gPlayerEntity ldrb r0, [r0, #0x14] lsrs r0, r0, #1 lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r2, #0 bl sub_08007DD6 cmp r0, #0 beq _08072E60 movs r0, #1 strb r0, [r4, #0xe] b _08072E64 .align 2, 0 _08072E58: .4byte gUnk_0811BBD4 _08072E5C: .4byte gPlayerEntity _08072E60: movs r0, #4 strb r0, [r4, #0xf] _08072E64: ldrb r0, [r4, #0x14] movs r1, #4 eors r0, r1 _08072E6A: strb r0, [r4, #0x14] _08072E6C: ldrb r0, [r4, #0xe] cmp r0, #0 beq _08072E7A adds r0, r4, #0 bl sub_0806F69C b _08072E7E _08072E7A: bl sub_08079E08 _08072E7E: movs r0, #0 _08072E80: strb r0, [r4, #0xe] movs r1, #0x80 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _08072F10 ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r0, r4, #0 adds r0, #0x38 ldrb r0, [r0] cmp r0, #1 bne _08072EAA adds r0, r4, #0 bl sub_0800455E b _08072EB0 _08072EAA: adds r0, r4, #0 bl sub_08004542 _08072EB0: adds r0, r4, #0 movs r1, #7 bl sub_08008790 ldr r5, _08072EDC @ =gPlayerState ldrb r0, [r5, #0x14] cmp r0, #0 beq _08072EE0 bl sub_08008B22 cmp r0, #0 beq _08072F10 movs r0, #7 strb r0, [r5, #0x11] ldr r0, [r5, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 bne _08072F10 bl sub_080791BC b _08072F10 .align 2, 0 _08072EDC: .4byte gPlayerState _08072EE0: ldr r0, [r5, #0x30] movs r1, #8 ands r0, r1 cmp r0, #0 beq _08072EF4 ldr r0, _08072EF0 @ =0x00000424 b _08072EF8 .align 2, 0 _08072EF0: .4byte 0x00000424 _08072EF4: movs r0, #0x82 lsls r0, r0, #4 _08072EF8: strh r0, [r5, #8] movs r1, #0 movs r0, #6 strb r0, [r4, #0xe] movs r0, #3 strb r0, [r4, #0xd] adds r0, r4, #0 adds r0, #0x42 strb r1, [r0] movs r0, #0x7d bl SoundReq _08072F10: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08072F14 sub_08072F14: @ 0x08072F14 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xe] subs r0, #1 strb r0, [r1, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff beq _08072F2C bl sub_0807921C b _08072F32 _08072F2C: adds r0, r1, #0 bl UpdateAnimationSingleFrame _08072F32: pop {pc} thumb_func_start sub_08072F34 sub_08072F34: @ 0x08072F34 push {r4, r5, r6, lr} adds r4, r0, #0 bl sub_08078EFC cmp r0, #0 bne _08072F86 ldr r6, _08072F88 @ =gPlayerState adds r1, r6, #0 adds r1, #0xa8 movs r0, #0x18 strb r0, [r1] adds r0, r4, #0 movs r1, #0 movs r2, #0 bl sub_0807A1E8 strb r0, [r6, #0x12] ldr r1, _08072F8C @ =gUnk_0811BBE4 ldrb r0, [r4, #0xd] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r5, r4, #0 adds r5, #0x42 ldrb r0, [r5] cmp r0, #0 beq _08072F86 bl sub_080792D8 ldrb r1, [r5] cmp r1, #0 bne _08072F86 movs r0, #0x1d strb r0, [r4, #0xc] strb r1, [r4, #0xd] strh r1, [r4, #0x30] ldr r0, _08072F90 @ =0x000002CF strh r0, [r6, #8] _08072F86: pop {r4, r5, r6, pc} .align 2, 0 _08072F88: .4byte gPlayerState _08072F8C: .4byte gUnk_0811BBE4 _08072F90: .4byte 0x000002CF thumb_func_start sub_08072F94 sub_08072F94: @ 0x08072F94 push {r4, lr} adds r4, r0, #0 ldr r0, _08072FB4 @ =gPlayerState ldrb r1, [r0, #0x12] adds r3, r0, #0 cmp r1, #0x1e beq _08072FB8 cmp r1, #0x1e blt _08072FAE cmp r1, #0x2c bgt _08072FAE cmp r1, #0x2a bge _08072FB8 _08072FAE: bl sub_0807921C b _0807308C .align 2, 0 _08072FB4: .4byte gPlayerState _08072FB8: adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #0x39 rsbs r1, r1, #0 ands r1, r0 strb r1, [r2] adds r2, r3, #0 ldrb r1, [r2, #0xd] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _08073072 strb r1, [r4, #0x15] ldrb r0, [r2, #0xd] cmp r0, #8 beq _08072FDE cmp r0, #0x18 bne _08073008 _08072FDE: ldrb r0, [r2, #0x12] cmp r0, #0x1e beq _0807308C adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _08072FF8 movs r0, #0xb5 lsls r0, r0, #2 b _08072FFA _08072FF8: ldr r0, _08073004 @ =0x000002D5 _08072FFA: strh r0, [r2, #8] adds r0, r4, #0 bl sub_08073094 b _0807306A .align 2, 0 _08073004: .4byte 0x000002D5 _08073008: ldrb r0, [r2, #0x12] cmp r0, #0x1e bne _08073020 movs r0, #7 ands r0, r1 cmp r0, #0 beq _08073020 adds r0, r1, #0 adds r0, #8 movs r1, #0x10 ands r0, r1 strb r0, [r4, #0x15] _08073020: ldrb r1, [r4, #0x15] movs r2, #0x10 adds r0, r2, #0 ands r0, r1 cmp r0, #0 beq _0807304C adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] adds r0, r2, #0 ands r0, r1 cmp r0, #0 beq _08073044 ldr r0, _08073040 @ =0x000002D1 b _08073068 .align 2, 0 _08073040: .4byte 0x000002D1 _08073044: ldr r0, _08073048 @ =0x000002D2 b _08073068 .align 2, 0 _08073048: .4byte 0x000002D2 _0807304C: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] adds r0, r2, #0 ands r0, r1 cmp r0, #0 beq _08073064 ldr r0, _08073060 @ =0x000002CF b _08073068 .align 2, 0 _08073060: .4byte 0x000002CF _08073064: movs r0, #0xb4 lsls r0, r0, #2 _08073068: strh r0, [r3, #8] _0807306A: ldrb r0, [r4, #0xd] adds r0, #1 strb r0, [r4, #0xd] b _0807308C _08073072: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _08073088 movs r0, #0xb5 lsls r0, r0, #2 strh r0, [r2, #8] b _0807308C _08073088: ldr r0, _08073090 @ =0x000002D5 strh r0, [r3, #8] _0807308C: pop {r4, pc} .align 2, 0 _08073090: .4byte 0x000002D5 thumb_func_start sub_08073094 sub_08073094: @ 0x08073094 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] ldr r2, _080730FC @ =gUnk_0811BBEC adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0xf ands r0, r1 lsls r0, r0, #1 adds r0, r0, r2 ldrh r0, [r0] strh r0, [r4, #0x24] bl sub_08079E08 bl sub_08019840 cmp r0, #0 bne _080731A4 ldr r0, _08073100 @ =gPlayerState ldrb r1, [r0, #6] movs r2, #0x80 eors r1, r2 strb r1, [r0, #6] ldrb r0, [r0, #0x12] cmp r0, #0x2a beq _080730DE cmp r0, #0x2c beq _080730DE bl sub_0807A1B8 _080730DE: bl sub_08078EFC cmp r0, #0 bne _080731A4 ldr r1, _08073100 @ =gPlayerState ldrb r0, [r1, #0x12] subs r0, #0x19 adds r2, r1, #0 cmp r0, #0x13 bhi _08073178 lsls r0, r0, #2 ldr r1, _08073104 @ =_08073108 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080730FC: .4byte gUnk_0811BBEC _08073100: .4byte gPlayerState _08073104: .4byte _08073108 _08073108: @ jump table .4byte _0807316C @ case 0 .4byte _08073178 @ case 1 .4byte _08073178 @ case 2 .4byte _08073178 @ case 3 .4byte _08073178 @ case 4 .4byte _0807317E @ case 5 .4byte _08073178 @ case 6 .4byte _08073178 @ case 7 .4byte _08073178 @ case 8 .4byte _08073178 @ case 9 .4byte _08073178 @ case 10 .4byte _08073178 @ case 11 .4byte _08073178 @ case 12 .4byte _08073178 @ case 13 .4byte _08073178 @ case 14 .4byte _08073178 @ case 15 .4byte _08073178 @ case 16 .4byte _08073158 @ case 17 .4byte _0807317E @ case 18 .4byte _08073158 @ case 19 _08073158: adds r1, r4, #0 adds r1, #0x42 movs r0, #0 strb r0, [r1] ldr r0, [r2, #0x30] movs r1, #0x80 lsls r1, r1, #0x16 orrs r0, r1 str r0, [r2, #0x30] b _0807317E _0807316C: adds r0, r4, #0 bl sub_08074808 bl sub_080791D0 b _080731A4 _08073178: bl sub_0807921C b _080731A4 _0807317E: adds r0, r4, #0 bl UpdateAnimationSingleFrame adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x40 ands r0, r1 cmp r0, #0 beq _080731A4 bl sub_0807A1B8 bl sub_08078EFC cmp r0, #0 bne _080731A4 ldrb r0, [r4, #0xd] subs r0, #1 strb r0, [r4, #0xd] _080731A4: pop {r4, pc} .align 2, 0 thumb_func_start PlayerUseEntrance PlayerUseEntrance: @ 0x080731A8 push {r4, lr} adds r4, r0, #0 ldr r0, _080731D0 @ =gPlayerState adds r0, #0xa8 movs r1, #0x1c strb r1, [r0] movs r0, #0 movs r1, #8 bl sub_0805E4E0 ldr r1, _080731D4 @ =gUnk_0811BBF8 ldrb r0, [r4, #0xd] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 pop {r4, pc} .align 2, 0 _080731D0: .4byte gPlayerState _080731D4: .4byte gUnk_0811BBF8