.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_0806407C sub_0806407C: @ 0x0806407C push {r4, r5, r6, lr} adds r4, r0, #0 adds r5, r1, #0 ldrb r0, [r5, #0x18] cmp r0, #0 bne _080640E8 adds r0, #1 strb r0, [r5, #0x18] bl Random movs r1, #0x3f ands r0, r1 adds r0, #0x20 strh r0, [r5, #0x12] bl Random adds r1, r0, #0 movs r0, #0x18 ands r1, r0 ldrb r0, [r4, #0x15] cmp r0, #8 beq _080640C4 cmp r0, #8 bgt _080640B2 cmp r0, #0 beq _080640BC b _080640DA _080640B2: cmp r0, #0x10 beq _080640CC cmp r0, #0x18 beq _080640D4 b _080640DA _080640BC: cmp r1, #0x10 bne _080640DA movs r1, #8 b _080640DA _080640C4: cmp r1, #0x18 bne _080640DA movs r1, #0x10 b _080640DA _080640CC: cmp r1, #0 bne _080640DA movs r1, #0x18 b _080640DA _080640D4: cmp r1, #8 bne _080640DA movs r1, #0 _080640DA: strb r1, [r4, #0x15] adds r0, r1, #0 bl sub_0806F5B0 strb r0, [r4, #0x14] movs r0, #0x80 strh r0, [r4, #0x24] _080640E8: ldrb r0, [r4, #0x14] lsrs r2, r0, #1 adds r1, r2, #4 adds r0, r4, #0 adds r0, #0x58 ldrb r0, [r0] cmp r1, r0 beq _0806410A adds r0, r4, #0 adds r0, #0x70 movs r1, #0 ldrsb r1, [r0, r1] adds r1, #4 adds r1, r2, r1 adds r0, r4, #0 bl InitializeAnimation _0806410A: adds r0, r4, #0 bl sub_080AEF88 movs r0, #0x2e ldrsh r1, [r4, r0] adds r2, r4, #0 adds r2, #0x68 movs r3, #0 ldrsh r0, [r2, r3] subs r1, r1, r0 cmp r1, #0x10 ble _0806412C ldrh r0, [r2] adds r0, #0x10 strh r0, [r4, #0x2e] movs r0, #1 strh r0, [r5, #0x12] _0806412C: movs r3, #0x10 rsbs r3, r3, #0 cmp r1, r3 bge _0806413E ldrh r0, [r2] subs r0, #0x10 strh r0, [r4, #0x2e] movs r0, #1 strh r0, [r5, #0x12] _0806413E: movs r6, #0x32 ldrsh r1, [r4, r6] adds r2, r4, #0 adds r2, #0x6a movs r6, #0 ldrsh r0, [r2, r6] subs r1, r1, r0 cmp r1, #0x10 ble _0806415A ldrh r0, [r2] adds r0, #0x10 strh r0, [r4, #0x32] movs r0, #1 strh r0, [r5, #0x12] _0806415A: cmp r1, r3 bge _08064168 ldrh r0, [r2] subs r0, #0x10 strh r0, [r4, #0x32] movs r0, #1 strh r0, [r5, #0x12] _08064168: ldrh r0, [r5, #0x12] subs r0, #1 strh r0, [r5, #0x12] lsls r0, r0, #0x10 cmp r0, #0 beq _0806417A ldr r1, _0806417C @ =gUnk_02033280 movs r0, #0 strb r0, [r1, #6] _0806417A: pop {r4, r5, r6, pc} .align 2, 0 _0806417C: .4byte gUnk_02033280 thumb_func_start sub_08064180 sub_08064180: @ 0x08064180 push {lr} movs r0, #7 movs r1, #0x15 movs r2, #7 bl FindEntityInListBySubtype cmp r0, #0 beq _08064194 bl DeleteEntity _08064194: pop {pc} .align 2, 0 thumb_func_start sub_08064198 sub_08064198: @ 0x08064198 push {r4, r5, r6, lr} adds r5, r0, #0 adds r4, r5, #0 adds r4, #0x71 ldrb r1, [r4] movs r0, #0 ldrsb r0, [r4, r0] cmp r0, #0 ble _080641AE subs r0, r1, #1 strb r0, [r4] _080641AE: ldr r0, _080641D8 @ =gPlayerEntity movs r2, #0x32 ldrsh r1, [r0, r2] movs r2, #0x32 ldrsh r0, [r5, r2] subs r1, r1, r0 cmp r1, #2 ble _080641C0 movs r1, #2 _080641C0: movs r0, #2 rsbs r0, r0, #0 cmp r1, r0 bge _080641CA adds r1, r0, #0 _080641CA: adds r6, r4, #0 cmp r1, #0 beq _08064256 cmp r1, #0 ble _080641DC movs r0, #0x10 b _080641DE .align 2, 0 _080641D8: .4byte gPlayerEntity _080641DC: movs r0, #0 _080641DE: strb r0, [r5, #0x15] cmp r1, #0 bge _080641E6 rsbs r1, r1, #0 _080641E6: lsls r0, r1, #8 strh r0, [r5, #0x24] movs r0, #0x32 ldrsh r4, [r5, r0] adds r0, r5, #0 bl sub_080AEF88 movs r1, #0x32 ldrsh r0, [r5, r1] adds r6, r5, #0 adds r6, #0x71 cmp r4, r0 beq _08064256 ldr r0, _080642B0 @ =gPlayerEntity movs r2, #0x24 ldrsh r1, [r0, r2] movs r0, #0xa0 lsls r0, r0, #1 cmp r1, r0 ble _08064222 ldr r0, _080642B4 @ =gScreenTransition ldr r0, [r0] movs r1, #6 bl __modsi3 cmp r0, #0 bne _08064222 adds r0, r5, #0 bl sub_080A29FC _08064222: adds r4, r5, #0 adds r4, #0x71 movs r0, #0xa strb r0, [r4] ldrb r0, [r5, #0x15] bl sub_0806F5B0 strb r0, [r5, #0x14] lsls r0, r0, #0x18 lsrs r0, r0, #0x19 adds r1, r5, #0 adds r1, #0x70 ldrb r1, [r1] lsls r1, r1, #0x18 asrs r1, r1, #0x18 adds r1, #4 adds r1, r0, r1 adds r0, r5, #0 adds r0, #0x58 adds r6, r4, #0 ldrb r0, [r0] cmp r1, r0 beq _08064256 adds r0, r5, #0 bl InitializeAnimation _08064256: movs r0, #0 ldrsb r0, [r6, r0] cmp r0, #0 bne _0806428C ldr r1, _080642B0 @ =gPlayerEntity adds r0, r5, #0 bl GetFacingDirection bl sub_0806F5B0 strb r0, [r5, #0x14] lsls r0, r0, #0x18 lsrs r0, r0, #0x19 adds r1, r5, #0 adds r1, #0x70 ldrb r1, [r1] lsls r1, r1, #0x18 asrs r1, r1, #0x18 adds r1, r0, r1 adds r0, r5, #0 adds r0, #0x58 ldrb r0, [r0] cmp r1, r0 beq _0806428C adds r0, r5, #0 bl InitializeAnimation _0806428C: adds r0, r5, #0 bl sub_0806ED78 movs r0, #0x36 ldrsh r4, [r5, r0] ldr r0, _080642B0 @ =gPlayerEntity ldrh r0, [r0, #0x36] strh r0, [r5, #0x36] cmp r4, #0 bge _080642AC lsls r0, r0, #0x10 cmp r0, #0 bne _080642AC adds r0, r5, #0 bl sub_080A29FC _080642AC: pop {r4, r5, r6, pc} .align 2, 0 _080642B0: .4byte gPlayerEntity _080642B4: .4byte gScreenTransition thumb_func_start sub_080642B8 sub_080642B8: @ 0x080642B8 push {r4, r5, r6, lr} adds r5, r0, #0 adds r4, r5, #0 adds r4, #0x71 ldrb r1, [r4] movs r0, #0 ldrsb r0, [r4, r0] cmp r0, #0 ble _080642CE subs r0, r1, #1 strb r0, [r4] _080642CE: ldr r0, _080642F8 @ =gPlayerEntity movs r2, #0x2e ldrsh r1, [r0, r2] movs r2, #0x2e ldrsh r0, [r5, r2] subs r1, r1, r0 cmp r1, #2 ble _080642E0 movs r1, #2 _080642E0: movs r0, #2 rsbs r0, r0, #0 cmp r1, r0 bge _080642EA adds r1, r0, #0 _080642EA: adds r6, r4, #0 cmp r1, #0 beq _08064376 cmp r1, #0 ble _080642FC movs r0, #8 b _080642FE .align 2, 0 _080642F8: .4byte gPlayerEntity _080642FC: movs r0, #0x18 _080642FE: strb r0, [r5, #0x15] cmp r1, #0 bge _08064306 rsbs r1, r1, #0 _08064306: lsls r0, r1, #8 strh r0, [r5, #0x24] movs r0, #0x2e ldrsh r4, [r5, r0] adds r0, r5, #0 bl sub_080AEF88 movs r1, #0x2e ldrsh r0, [r5, r1] adds r6, r5, #0 adds r6, #0x71 cmp r4, r0 beq _08064376 ldr r0, _080643D0 @ =gPlayerEntity movs r2, #0x24 ldrsh r1, [r0, r2] movs r0, #0xa0 lsls r0, r0, #1 cmp r1, r0 ble _08064342 ldr r0, _080643D4 @ =gScreenTransition ldr r0, [r0] movs r1, #6 bl __modsi3 cmp r0, #0 bne _08064342 adds r0, r5, #0 bl sub_080A29FC _08064342: adds r4, r5, #0 adds r4, #0x71 movs r0, #0xa strb r0, [r4] ldrb r0, [r5, #0x15] bl sub_0806F5B0 strb r0, [r5, #0x14] lsls r0, r0, #0x18 lsrs r0, r0, #0x19 adds r1, r5, #0 adds r1, #0x70 ldrb r1, [r1] lsls r1, r1, #0x18 asrs r1, r1, #0x18 adds r1, #4 adds r1, r0, r1 adds r0, r5, #0 adds r0, #0x58 adds r6, r4, #0 ldrb r0, [r0] cmp r1, r0 beq _08064376 adds r0, r5, #0 bl InitializeAnimation _08064376: movs r0, #0 ldrsb r0, [r6, r0] cmp r0, #0 bne _080643AC ldr r1, _080643D0 @ =gPlayerEntity adds r0, r5, #0 bl GetFacingDirection bl sub_0806F5B0 strb r0, [r5, #0x14] lsls r0, r0, #0x18 lsrs r0, r0, #0x19 adds r1, r5, #0 adds r1, #0x70 ldrb r1, [r1] lsls r1, r1, #0x18 asrs r1, r1, #0x18 adds r1, r0, r1 adds r0, r5, #0 adds r0, #0x58 ldrb r0, [r0] cmp r1, r0 beq _080643AC adds r0, r5, #0 bl InitializeAnimation _080643AC: adds r0, r5, #0 bl sub_0806ED78 movs r0, #0x36 ldrsh r4, [r5, r0] ldr r0, _080643D0 @ =gPlayerEntity ldrh r0, [r0, #0x36] strh r0, [r5, #0x36] cmp r4, #0 bge _080643CC lsls r0, r0, #0x10 cmp r0, #0 bne _080643CC adds r0, r5, #0 bl sub_080A29FC _080643CC: pop {r4, r5, r6, pc} .align 2, 0 _080643D0: .4byte gPlayerEntity _080643D4: .4byte gScreenTransition thumb_func_start sub_080643D8 sub_080643D8: @ 0x080643D8 push {r4, lr} adds r4, r0, #0 movs r0, #2 bl CheckGlobalFlag cmp r0, #0 bne _080643EA movs r3, #0 b _08064406 _080643EA: movs r0, #2 bl GetInventoryValue cmp r0, #0 bne _080643F8 movs r3, #1 b _08064406 _080643F8: movs r0, #3 bl GetInventoryValue movs r3, #3 cmp r0, #0 bne _08064406 movs r3, #2 _08064406: ldrb r1, [r4, #0xb] rsbs r0, r1, #0 orrs r0, r1 lsrs r0, r0, #0x1f ldr r2, _08064424 @ =gUnk_0810F6D4 lsls r1, r3, #1 lsls r0, r0, #3 adds r1, r1, r0 adds r1, r1, r2 ldrh r0, [r1] adds r1, r4, #0 bl TextboxNoOverlap pop {r4, pc} .align 2, 0 _08064424: .4byte gUnk_0810F6D4 thumb_func_start sub_08064428 sub_08064428: @ 0x08064428 push {lr} adds r3, r0, #0 ldr r0, _0806444C @ =gUnk_02002A40 ldrb r0, [r0, #8] subs r1, r0, #2 cmp r1, #0 bge _08064438 movs r1, #0 _08064438: ldrb r2, [r3, #0xb] movs r0, #0x80 ands r0, r2 cmp r0, #0 bne _08064454 ldrb r0, [r3, #0xb] lsls r0, r0, #3 ldr r1, _08064450 @ =gUnk_0810CF4C b _08064460 .align 2, 0 _0806444C: .4byte gUnk_02002A40 _08064450: .4byte gUnk_0810CF4C _08064454: movs r0, #0x7f ands r0, r2 lsls r0, r0, #6 lsls r1, r1, #3 ldr r2, _0806446C @ =gUnk_0810D0A4 adds r1, r1, r2 _08064460: adds r1, r0, r1 adds r0, r3, #0 bl ShowNPCDialogue pop {pc} .align 2, 0 _0806446C: .4byte gUnk_0810D0A4 thumb_func_start sub_08064470 sub_08064470: @ 0x08064470 push {lr} ldr r0, _08064484 @ =gPlayerState adds r0, #0xab ldrb r0, [r0] cmp r0, #1 beq _0806447E movs r0, #0 _0806447E: str r0, [r1, #0x14] pop {pc} .align 2, 0 _08064484: .4byte gPlayerState thumb_func_start sub_08064488 sub_08064488: @ 0x08064488 push {lr} ldr r1, _080644A0 @ =gPlayerState adds r0, r1, #0 adds r0, #0xa8 ldrb r0, [r0] cmp r0, #2 beq _0806449C adds r1, #0xab movs r0, #0 strb r0, [r1] _0806449C: pop {pc} .align 2, 0 _080644A0: .4byte gPlayerState thumb_func_start sub_080644A4 sub_080644A4: @ 0x080644A4 ldr r0, _080644B0 @ =gPlayerState adds r0, #0xab movs r1, #0 strb r1, [r0] bx lr .align 2, 0 _080644B0: .4byte gPlayerState thumb_func_start sub_080644B4 sub_080644B4: @ 0x080644B4 push {lr} adds r2, r1, #0 movs r3, #0 ldrb r1, [r0, #0x14] ldr r0, [r2, #4] cmp r1, r0 bne _080644C4 movs r3, #1 _080644C4: str r3, [r2, #0x14] pop {pc} thumb_func_start sub_080644C8 sub_080644C8: @ 0x080644C8 push {r4, lr} adds r2, r0, #0 movs r1, #0x2e ldrsh r0, [r2, r1] ldr r3, _08064500 @ =gRoomControls movs r4, #0xa ldrsh r1, [r3, r4] subs r1, r0, r1 adds r0, r1, #0 adds r0, #8 cmp r0, #0 blt _08064504 adds r0, r1, #0 subs r0, #8 cmp r0, #0xf0 bgt _08064504 movs r0, #0x32 ldrsh r1, [r2, r0] movs r2, #0xc ldrsh r0, [r3, r2] subs r0, r1, r0 cmp r0, #0 blt _08064504 subs r0, #0x18 cmp r0, #0xa0 bgt _08064504 movs r0, #1 b _08064506 .align 2, 0 _08064500: .4byte gRoomControls _08064504: movs r0, #0 _08064506: pop {r4, pc}