diff --git a/asm/code_80130A8.s b/asm/code_80130A8.s index b6212f12d..ed0d26f92 100644 --- a/asm/code_80130A8.s +++ b/asm/code_80130A8.s @@ -324,3935 +324,4 @@ _080140BC: _080140D8: .4byte gUnknown_80D47C8 thumb_func_end sub_80140B4 - -@ May be the start of a new file, since menu_input data has been used already - - - - thumb_func_start sub_80140DC -sub_80140DC: - push {lr} - sub sp, 0x4 - ldr r0, _080140F4 - str r0, [sp] - mov r0, sp - bl SetSavingIconCoords - bl sub_8011830 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080140F4: .4byte 0x008000c8 - thumb_func_end sub_80140DC - - thumb_func_start sub_80140F8 -sub_80140F8: - push {lr} - sub sp, 0x4 - ldr r0, _08014110 - str r0, [sp] - mov r0, sp - bl SetSavingIconCoords - bl sub_8011830 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08014110: .4byte 0x004000bc - thumb_func_end sub_80140F8 - - thumb_func_start sub_8014114 -sub_8014114: - push {lr} - bl xxx_call_start_bg_music - movs r0, 0 - bl SetSavingIconCoords - pop {r0} - bx r0 - thumb_func_end sub_8014114 - - thumb_func_start nullsub_201 -nullsub_201: - bx lr - thumb_func_end nullsub_201 - - thumb_func_start sub_8014128 -sub_8014128: - push {lr} - bl sub_8012AE8 - cmp r0, 0x2 - beq _08014136 - movs r0, 0x1 - b _08014138 -_08014136: - movs r0, 0 -_08014138: - pop {r1} - bx r1 - thumb_func_end sub_8014128 - - thumb_func_start sub_801413C -sub_801413C: - movs r0, 0 - bx lr - thumb_func_end sub_801413C - - thumb_func_start sub_8014140 -sub_8014140: - movs r0, 0 - bx lr - thumb_func_end sub_8014140 - - thumb_func_start sub_8014144 -sub_8014144: - ldr r0, _0801415C - movs r2, 0 - str r2, [r0] - ldr r0, _08014160 - movs r1, 0x3C - str r1, [r0] - ldr r0, _08014164 - str r1, [r0] - ldr r0, _08014168 - str r2, [r0] - bx lr - .align 2, 0 -_0801415C: .4byte gUnknown_202E744 -_08014160: .4byte gUnknown_202E738 -_08014164: .4byte gUnknown_202E73C -_08014168: .4byte gUnknown_202E740 - thumb_func_end sub_8014144 - - thumb_func_start sub_801416C -sub_801416C: - push {lr} - adds r2, r0, 0 - adds r3, r1, 0 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - bge _0801418C - ldr r0, _08014184 - str r3, [r0] - ldr r1, _08014188 - negs r0, r2 - b _08014194 - .align 2, 0 -_08014184: .4byte gUnknown_202E738 -_08014188: .4byte gUnknown_202E740 -_0801418C: - ldr r0, _080141A8 - str r2, [r0] - ldr r1, _080141AC - movs r0, 0 -_08014194: - str r0, [r1] - ldr r0, _080141B0 - adds r1, r3, 0 - cmp r1, 0 - bge _080141A0 - movs r1, 0 -_080141A0: - str r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_080141A8: .4byte gUnknown_202E738 -_080141AC: .4byte gUnknown_202E740 -_080141B0: .4byte gUnknown_202E73C - thumb_func_end sub_801416C - - thumb_func_start sub_80141B4 -sub_80141B4: - push {r4-r6,lr} - sub sp, 0x14 - lsls r3, 16 - lsrs r3, 16 - movs r6, 0x1 - negs r6, r6 - movs r5, 0 - str r5, [sp] - movs r4, 0x3 - str r4, [sp, 0x4] - str r5, [sp, 0x8] - str r2, [sp, 0xC] - str r3, [sp, 0x10] - adds r2, r6, 0 - movs r3, 0 - bl sub_8014248 - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80141B4 - - thumb_func_start sub_80141E0 -sub_80141E0: - push {r4-r6,lr} - sub sp, 0x14 - lsls r6, r2, 16 - movs r2, 0x1 - negs r2, r2 - ldr r3, _08014210 - movs r5, 0 - str r5, [sp] - movs r4, 0x3 - str r4, [sp, 0x4] - str r5, [sp, 0x8] - str r1, [sp, 0xC] - movs r1, 0xC0 - lsls r1, 18 - orrs r1, r6 - lsrs r1, 16 - str r1, [sp, 0x10] - movs r1, 0 - bl sub_8014248 - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08014210: .4byte gUnknown_80D485C - thumb_func_end sub_80141E0 - - thumb_func_start sub_8014214 -sub_8014214: - push {r4-r6,lr} - sub sp, 0x14 - lsls r6, r2, 16 - movs r2, 0x1 - negs r2, r2 - ldr r3, _08014244 - movs r5, 0 - str r5, [sp] - movs r4, 0x3 - str r4, [sp, 0x4] - str r5, [sp, 0x8] - str r1, [sp, 0xC] - movs r1, 0xC0 - lsls r1, 18 - orrs r1, r6 - lsrs r1, 16 - str r1, [sp, 0x10] - movs r1, 0 - bl sub_8014248 - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08014244: .4byte gUnknown_80D4880 - thumb_func_end sub_8014214 - - thumb_func_start sub_8014248 -sub_8014248: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r6, r1, 0 - mov r9, r2 - mov r8, r3 - ldr r5, [sp, 0x28] - ldr r7, [sp, 0x30] - ldr r1, [sp, 0x34] - lsls r1, 16 - lsrs r1, 16 - mov r10, r1 - movs r1, 0 - str r1, [sp] - ldr r4, _080142B8 - ldr r3, _080142BC - adds r2, r4, r3 - adds r1, r4, 0 - mov r3, r10 - bl xxx_format_string - ldr r0, _080142C0 - str r4, [r0] - ldr r0, _080142C4 - str r6, [r0, 0x24] - ldr r0, _080142C8 - str r5, [r0] - ldr r0, _080142CC - mov r4, r8 - str r4, [r0] - ldr r0, _080142D0 - ldr r5, [sp, 0x24] - str r5, [r0] - ldr r0, _080142D4 - mov r6, r9 - str r6, [r0] - ldr r0, _080142D8 - bl sub_801317C - movs r0, 0x10 - mov r1, r10 - ands r0, r1 - cmp r0, 0 - beq _080142E4 - ldr r2, _080142DC - adds r1, r2, 0 - ldr r0, _080142E0 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldm r0!, {r3,r4,r6} - stm r1!, {r3,r4,r6} - b _080142F2 - .align 2, 0 -_080142B8: .4byte gUnknown_202E798 -_080142BC: .4byte 0x000003e7 -_080142C0: .4byte gUnknown_202E794 -_080142C4: .4byte gUnknown_202E748 -_080142C8: .4byte gUnknown_202EC10 -_080142CC: .4byte gUnknown_202EC14 -_080142D0: .4byte gUnknown_202EC18 -_080142D4: .4byte gUnknown_202EC1C -_080142D8: .4byte gUnknown_202EC28 -_080142DC: .4byte gUnknown_203B198 -_080142E0: .4byte gUnknown_80D48DC -_080142E4: - ldr r2, _08014358 - adds r1, r2, 0 - ldr r0, _0801435C - ldm r0!, {r3,r5,r6} - stm r1!, {r3,r5,r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} -_080142F2: - adds r4, r2, 0 - movs r0, 0 - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - strh r0, [r4, 0x28] - movs r0, 0x40 - strb r0, [r4, 0x18] - cmp r7, 0 - beq _08014368 - ldr r1, [r7, 0x4] - cmp r1, 0 - beq _08014368 - ldrb r0, [r7, 0xC] - lsls r0, 3 - adds r1, 0x4 - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - beq _08014368 - ldrh r0, [r7, 0x8] - strh r0, [r4, 0x20] - ldrh r0, [r7, 0xA] - strh r0, [r4, 0x22] - movs r0, 0x5 - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - strh r0, [r4, 0x28] - movs r4, 0 -_0801432A: - adds r0, r4, 0 - adds r0, 0xE0 - ldr r2, [r7, 0x4] - ldrb r1, [r7, 0xC] - lsls r1, 3 - adds r2, r1 - lsls r3, r4, 2 - ldr r1, [r2] - adds r1, r3 - bl SetBGPaletteBufferColorArray - adds r4, 0x1 - cmp r4, 0xF - ble _0801432A - movs r0, 0x1 - str r0, [sp] - ldrb r0, [r7, 0xE] - cmp r0, 0 - beq _08014360 - ldr r1, _08014358 - movs r0, 0x7 - b _08014364 - .align 2, 0 -_08014358: .4byte gUnknown_203B198 -_0801435C: .4byte gUnknown_80D48C4 -_08014360: - ldr r1, _080143E8 - movs r0, 0x5 -_08014364: - str r0, [r1, 0x1C] - adds r4, r1, 0 -_08014368: - ldr r2, _080143EC - adds r1, r4, 0 - adds r1, 0x30 - adds r0, r2, 0 - ldm r0!, {r3,r5,r6} - stm r1!, {r3,r5,r6} - ldm r0!, {r3,r5,r6} - stm r1!, {r3,r5,r6} - adds r0, r4, 0 - adds r0, 0x48 - ldm r2!, {r1,r3,r5} - stm r0!, {r1,r3,r5} - ldm r2!, {r1,r3,r6} - stm r0!, {r1,r3,r6} - bl ResetUnusedInputStruct - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r1, _080143F0 - movs r4, 0 - movs r2, 0 - movs r0, 0x4 - strh r0, [r1] - strh r0, [r1, 0x2] - movs r0, 0x70 - strh r0, [r1, 0x8] - ldr r0, _080143F4 - movs r5, 0x2 - ldrsh r0, [r0, r5] - lsls r0, 3 - adds r0, 0x22 - strh r0, [r1, 0xA] - movs r0, 0x7 - str r0, [r1, 0x10] - str r2, [r1, 0x1C] - adds r1, 0x20 - strb r4, [r1] - movs r0, 0x10 - mov r6, r10 - ands r0, r6 - movs r1, 0x3 - cmp r0, 0 - beq _080143C6 - movs r1, 0x8 -_080143C6: - adds r0, r1, 0 - bl sub_80063D8 - ldr r0, _080143F8 - movs r1, 0x1 - str r1, [r0] - ldr r0, _080143FC - mov r2, r10 - strh r2, [r0] - movs r0, 0x20 - mov r3, r10 - ands r0, r3 - cmp r0, 0 - beq _08014404 - ldr r0, _08014400 - strb r1, [r0] - b _08014408 - .align 2, 0 -_080143E8: .4byte gUnknown_203B198 -_080143EC: .4byte gUnknown_80D48AC -_080143F0: .4byte gUnknown_202E748 -_080143F4: .4byte gUnknown_2027370 -_080143F8: .4byte gUnknown_202E744 -_080143FC: .4byte gUnknown_202E77C -_08014400: .4byte gUnknown_202E790 -_08014404: - ldr r0, _0801445C - strb r4, [r0] -_08014408: - movs r0, 0x80 - lsls r0, 3 - mov r4, r10 - ands r0, r4 - cmp r0, 0 - beq _08014418 - bl SetWindowBGColor -_08014418: - ldr r0, _08014460 - movs r1, 0x1 - str r1, [r0] - ldr r0, _08014464 - str r1, [r0] - bl UnpressButtons - ldr r1, _08014468 - movs r0, 0 - strb r0, [r1] - ldr r1, _0801446C - movs r0, 0 - str r0, [r1] - ldr r5, [sp] - cmp r5, 0 - beq _08014480 - ldr r0, [r7, 0x4] - ldrb r1, [r7, 0xC] - lsls r1, 3 - adds r0, 0x4 - adds r0, r1 - ldr r4, [r0] - movs r0, 0x1 - bl sub_80073B8 - ldrb r0, [r7, 0xD] - cmp r0, 0 - bne _08014470 - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0xE - bl sub_8008274 - b _0801447A - .align 2, 0 -_0801445C: .4byte gUnknown_202E790 -_08014460: .4byte gUnknown_202E788 -_08014464: .4byte gUnknown_202E78C -_08014468: .4byte gUnknown_202E791 -_0801446C: .4byte gUnknown_202E784 -_08014470: - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0xE - bl sub_800836C -_0801447A: - movs r0, 0x1 - bl sub_80073E0 -_08014480: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8014248 - - thumb_func_start sub_8014490 -sub_8014490: - ldr r0, _0801449C - movs r1, 0 - str r1, [r0] - ldr r0, _080144A0 - str r1, [r0] - bx lr - .align 2, 0 -_0801449C: .4byte gUnknown_202E744 -_080144A0: .4byte gUnknown_202EC1C - thumb_func_end sub_8014490 - - thumb_func_start sub_80144A4 -sub_80144A4: - push {lr} - adds r1, r0, 0 - cmp r1, 0 - beq _080144B2 - ldr r0, _080144BC - ldr r0, [r0] - str r0, [r1] -_080144B2: - ldr r0, _080144C0 - ldr r0, [r0] - pop {r1} - bx r1 - .align 2, 0 -_080144BC: .4byte gUnknown_202EC1C -_080144C0: .4byte gUnknown_202E744 - thumb_func_end sub_80144A4 - - thumb_func_start xxx_draw_string_80144C4 -xxx_draw_string_80144C4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0x1 - mov r10, r0 - ldr r1, _080144F4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_080144DC: - ldr r0, _080144F8 - ldr r1, [r0] - adds r3, r0, 0 - cmp r1, 0xB - bls _080144E8 - b _08014A6A -_080144E8: - lsls r0, r1, 2 - ldr r1, _080144FC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080144F4: .4byte gUnknown_202E784 -_080144F8: .4byte gUnknown_202E744 -_080144FC: .4byte _08014500 - .align 2, 0 -_08014500: - .4byte _08014A72 - .4byte _08014530 - .4byte _08014708 - .4byte _08014A38 - .4byte _08014A48 - .4byte _08014A60 - .4byte _08014778 - .4byte _080147E2 - .4byte _080147E2 - .4byte _080147E2 - .4byte _080149D8 - .4byte _08014A04 -_08014530: - ldr r0, _08014540 - ldr r6, [r0] - ldr r0, _08014544 - ldrb r0, [r0] - cmp r0, 0 - beq _0801457C - ldr r7, _08014548 - b _08014580 - .align 2, 0 -_08014540: .4byte gUnknown_202E794 -_08014544: .4byte gUnknown_202E790 -_08014548: .4byte 0x0001869f -_0801454C: - str r2, [r3, 0x1C] - adds r1, r3, 0 - adds r1, 0x20 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _0801456C - movs r0, 0x8 - str r0, [r1] - ldr r0, _08014570 - strb r2, [r0] - ldr r1, _08014574 - ldr r0, _08014578 - ldr r0, [r0] - str r0, [r1] - b _0801466C - .align 2, 0 -_0801456C: .4byte gUnknown_202E744 -_08014570: .4byte gUnknown_202E791 -_08014574: .4byte gUnknown_202E780 -_08014578: .4byte gUnknown_202E738 -_0801457C: - ldr r0, _08014594 - ldr r7, [r0] -_08014580: - ldr r1, _08014598 - movs r0, 0 - str r0, [r1, 0x2C] - bl sub_80073B8 - ldr r1, _0801459C - mov r8, r1 - ldr r2, _080145A0 - mov r9, r2 - b _08014652 - .align 2, 0 -_08014594: .4byte gUnknown_202E788 -_08014598: .4byte gUnknown_202E748 -_0801459C: .4byte gUnknown_202E744 -_080145A0: .4byte gUnknown_202E780 -_080145A4: - adds r0, r4, 0 - adds r0, 0x20 - ldrb r5, [r0] - cmp r5, 0 - beq _080145EC - movs r3, 0x2 - ldrsh r0, [r4, r3] - cmp r0, 0x22 - ble _080145CC - movs r0, 0x8 - mov r4, r8 - str r0, [r4] - ldr r0, _080145C8 - ldr r0, [r0] - mov r1, r9 - str r0, [r1] - b _080145DA - .align 2, 0 -_080145C8: .4byte gUnknown_202E738 -_080145CC: - movs r0, 0x7 - mov r2, r8 - str r0, [r2] - ldr r0, _080145E4 - ldr r0, [r0] - mov r3, r9 - str r0, [r3] -_080145DA: - ldr r1, _080145E8 - movs r0, 0 - strb r0, [r1] - b _0801466C - .align 2, 0 -_080145E4: .4byte gUnknown_202E73C -_080145E8: .4byte gUnknown_202E791 -_080145EC: - ldrb r0, [r6] - cmp r0, 0 - beq _0801466C - cmp r0, 0xD - beq _080145FA - cmp r0, 0xA - bne _08014608 -_080145FA: - movs r0, 0x4 - strh r0, [r4] - ldrh r0, [r4, 0x2] - adds r0, 0xB - strh r0, [r4, 0x2] - adds r6, 0x1 - b _08014630 -_08014608: - adds r0, r6, 0 - add r1, sp, 0x4 - bl xxx_get_next_char_from_string - adds r6, r0, 0 - movs r1, 0 - ldrsh r0, [r4, r1] - movs r2, 0x2 - ldrsh r1, [r4, r2] - ldr r2, [sp, 0x4] - ldr r3, [r4, 0x10] - str r5, [sp] - bl xxx_call_draw_char - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - ldr r0, _08014694 - ldr r0, [r0] - str r0, [r4, 0x2C] -_08014630: - ldr r3, _08014698 - movs r4, 0x2 - ldrsh r0, [r3, r4] - cmp r0, 0x22 - ble _08014650 - ldr r0, _0801469C - ldrh r1, [r0] - movs r0, 0x10 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - bne _0801464C - b _0801454C -_0801464C: - movs r0, 0x4 - strh r0, [r3, 0x2] -_08014650: - subs r7, 0x1 -_08014652: - cmp r7, 0 - ble _0801466C - ldr r4, _08014698 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_8009190 - adds r6, r0, 0 - adds r0, r4, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0 - beq _080145A4 -_0801466C: - movs r0, 0 - bl sub_80073E0 - ldr r4, _080146A0 - str r6, [r4] - ldr r0, _080146A4 - bl sub_801317C - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - bne _080146BC - ldr r0, _080146A8 - ldr r0, [r0] - cmp r0, 0 - beq _080146B0 - ldr r1, _080146AC - movs r0, 0x3 - str r0, [r1] - b _08014A72 - .align 2, 0 -_08014694: .4byte gUnknown_202E78C -_08014698: .4byte gUnknown_202E748 -_0801469C: .4byte gUnknown_202E77C -_080146A0: .4byte gUnknown_202E794 -_080146A4: .4byte gUnknown_202EC28 -_080146A8: .4byte gUnknown_202EC14 -_080146AC: .4byte gUnknown_202E744 -_080146B0: - ldr r1, _080146B8 - movs r0, 0x6 - str r0, [r1] - b _08014A72 - .align 2, 0 -_080146B8: .4byte gUnknown_202E744 -_080146BC: - ldr r0, _080146E8 - movs r2, 0 - str r2, [r0, 0x30] - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _080146FC - ldr r1, _080146EC - ldr r0, [r1] - cmp r0, 0x1 - beq _080146D4 - b _08014A72 -_080146D4: - movs r0, 0x7 - str r0, [r1] - ldr r0, _080146F0 - strb r2, [r0] - ldr r1, _080146F4 - ldr r0, _080146F8 - ldr r0, [r0] - str r0, [r1] - b _08014A72 - .align 2, 0 -_080146E8: .4byte gUnknown_202E748 -_080146EC: .4byte gUnknown_202E744 -_080146F0: .4byte gUnknown_202E791 -_080146F4: .4byte gUnknown_202E780 -_080146F8: .4byte gUnknown_202E738 -_080146FC: - ldr r1, _08014704 - movs r0, 0x2 - b _08014A68 - .align 2, 0 -_08014704: .4byte gUnknown_202E744 -_08014708: - ldr r4, _08014760 - ldrh r1, [r4] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08014718 - bl sub_8011A04 -_08014718: - ldrh r1, [r4] - movs r0, 0x2 - ands r0, r1 - ldr r2, _08014764 - cmp r0, 0 - bne _08014742 - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08014742 - ldr r0, _08014768 - ldrh r1, [r0, 0x2] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08014742 - ldr r0, _0801476C - movs r1, 0x1 - strb r1, [r0] - ldr r0, _08014770 - str r0, [r2, 0x30] -_08014742: - ldr r1, [r2, 0x30] - adds r1, 0x1 - str r1, [r2, 0x30] - ldr r0, [r2, 0x2C] - cmp r1, r0 - bgt _08014750 - b _08014A72 -_08014750: - ldr r1, _08014774 - movs r0, 0x1 - str r0, [r1] - adds r1, r2, 0 - adds r1, 0x21 - movs r0, 0 - strb r0, [r1] - b _08014A6A - .align 2, 0 -_08014760: .4byte gUnknown_202E77C -_08014764: .4byte gUnknown_202E748 -_08014768: .4byte gRealInputs -_0801476C: .4byte gUnknown_202E790 -_08014770: .4byte 0x0001869f -_08014774: .4byte gUnknown_202E744 -_08014778: - ldr r0, _080147B4 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080147DC - movs r0, 0x9 - str r0, [r3] - ldr r1, _080147B8 - movs r0, 0 - strb r0, [r1] - ldr r0, _080147BC - ldr r1, [r0] - cmp r1, 0 - ble _080147C8 - ldr r2, _080147C0 - ldr r0, _080147C4 - ldr r0, [r0] - subs r0, r1, r0 - str r0, [r2] - cmp r0, 0 - blt _080147A8 - b _08014A6A -_080147A8: - movs r0, 0xB - str r0, [r3] - movs r0, 0 - str r0, [r2] - b _08014A6A - .align 2, 0 -_080147B4: .4byte gUnknown_202E77C -_080147B8: .4byte gUnknown_202E791 -_080147BC: .4byte gUnknown_202E740 -_080147C0: .4byte gUnknown_202E780 -_080147C4: .4byte gUnknown_202E784 -_080147C8: - ldr r0, _080147D4 - ldr r1, _080147D8 - ldr r1, [r1] - str r1, [r0] - b _08014A6A - .align 2, 0 -_080147D4: .4byte gUnknown_202E780 -_080147D8: .4byte gUnknown_202E738 -_080147DC: - movs r0, 0xB - str r0, [r3] - b _08014A6A -_080147E2: - movs r5, 0 - ldr r0, _0801481C - adds r0, 0x20 - strb r5, [r0] - ldr r4, _08014820 - adds r0, r4, 0 - movs r1, 0 - bl nullsub_34 - ldr r0, _08014824 - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08014802 - b _0801494C -_08014802: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801482C - ldr r1, _08014828 - ldr r0, [r1] - cmp r0, 0 - bgt _08014814 - b _0801494C -_08014814: - subs r0, 0x1 - str r0, [r1] - b _08014856 - .align 2, 0 -_0801481C: .4byte gUnknown_202E748 -_08014820: .4byte gUnknown_202EC28 -_08014824: .4byte gUnknown_202E77C -_08014828: .4byte gUnknown_202E780 -_0801482C: - ldr r2, _080148E4 - ldrh r1, [r2, 0x2] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _0801483A - b _0801494C -_0801483A: - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08014842 - b _0801494C -_08014842: - ldrh r1, [r2] - movs r0, 0xF2 - ands r0, r1 - cmp r0, 0x2 - bne _0801484E - b _0801494C -_0801484E: - ldrb r0, [r4, 0x5] - cmp r0, 0 - beq _08014856 - movs r5, 0x1 -_08014856: - cmp r5, 0 - bne _0801494C - ldr r1, _080148E8 - ldrb r0, [r1] - adds r2, r0, 0x1 - strb r2, [r1] - ldr r0, _080148EC - ldrh r7, [r0] - movs r0, 0x2 - ands r0, r7 - cmp r0, 0 - beq _08014870 - b _08014A72 -_08014870: - movs r0, 0x8 - ands r2, r0 - cmp r2, 0 - bne _0801487A - b _08014A72 -_0801487A: - ldr r3, _080148F0 - ldrh r1, [r3] - ldr r0, _080148F4 - ands r0, r1 - ldr r1, _080148F8 - ands r0, r1 - ldr r4, _080148FC - ands r0, r4 - ldr r1, _08014900 - ands r0, r1 - ldr r1, _08014904 - ands r0, r1 - movs r1, 0x80 - lsls r1, 7 - ldr r2, _08014908 - ands r0, r2 - orrs r0, r1 - strh r0, [r3] - ldrh r0, [r3, 0x2] - ldr r5, _0801490C - ands r5, r0 - ands r5, r2 - strh r5, [r3, 0x2] - movs r2, 0xFC - lsls r2, 2 - ldrh r1, [r3, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r4 - movs r6, 0xF - lsls r1, r6, 12 - ldr r2, _08014910 - ands r0, r2 - movs r4, 0 - mov r8, r4 - orrs r0, r1 - strh r0, [r3, 0x4] - movs r0, 0x10 - ands r0, r7 - adds r4, r3, 0 - cmp r0, 0 - beq _08014914 - movs r2, 0xF0 - lsls r2, 3 - ldrh r1, [r4, 0x6] - adds r0, r6, 0 - ands r0, r1 - orrs r0, r2 - strh r0, [r4, 0x6] - movs r0, 0x70 - b _08014932 - .align 2, 0 -_080148E4: .4byte gRealInputs -_080148E8: .4byte gUnknown_202E791 -_080148EC: .4byte gUnknown_202E77C -_080148F0: .4byte gUnknown_202E6E0 -_080148F4: .4byte 0x0000feff -_080148F8: .4byte 0x0000fdff -_080148FC: .4byte 0x0000f3ff -_08014900: .4byte 0x0000efff -_08014904: .4byte 0x0000dfff -_08014908: .4byte 0x00003fff -_0801490C: .4byte 0x0000c1ff -_08014910: .4byte 0x00000fff -_08014914: - ldr r3, _08014944 - movs r0, 0xA - ldrsh r1, [r3, r0] - adds r1, 0x1 - ands r1, r2 - lsls r1, 4 - ldrh r2, [r4, 0x6] - adds r0, r6, 0 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x6] - movs r1, 0x8 - ldrsh r0, [r3, r1] - ldr r1, _08014948 - ands r0, r1 -_08014932: - strh r0, [r4, 0x2] - movs r1, 0x80 - lsls r1, 1 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0 - bl AddSprite - b _08014A72 - .align 2, 0 -_08014944: .4byte gUnknown_202E748 -_08014948: .4byte 0x000001ff -_0801494C: - ldr r0, _08014960 - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0 - bne _08014968 - ldr r1, _08014964 - movs r0, 0xB - str r0, [r1] - b _080149BA - .align 2, 0 -_08014960: .4byte gUnknown_202E794 -_08014964: .4byte gUnknown_202E744 -_08014968: - ldr r4, _08014974 - ldr r0, [r4] - cmp r0, 0x9 - bne _08014978 - movs r0, 0xB - b _080149B8 - .align 2, 0 -_08014974: .4byte gUnknown_202E744 -_08014978: - cmp r0, 0x8 - bne _080149B6 - ldr r2, _080149A0 - movs r1, 0x4 - strh r1, [r2] - movs r3, 0x2 - ldrsh r0, [r2, r3] - cmp r0, 0x22 - ble _080149B6 - strh r1, [r2, 0x2] - ldr r0, _080149A4 - ldrh r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080149A8 -_08014998: - movs r0, 0 - bl sub_8008C54 - b _080149B6 - .align 2, 0 -_080149A0: .4byte gUnknown_202E748 -_080149A4: .4byte gUnknown_202E77C -_080149A8: - ldr r1, [r2, 0x1C] - cmp r1, 0 - bne _08014998 - movs r0, 0xA - str r0, [r4] - str r1, [r2, 0x28] - b _080149BA -_080149B6: - movs r0, 0x1 -_080149B8: - str r0, [r4] -_080149BA: - ldr r1, _080149D0 - movs r0, 0x70 - strh r0, [r1, 0x8] - ldr r0, _080149D4 - movs r4, 0x2 - ldrsh r0, [r0, r4] - lsls r0, 3 - adds r0, 0x22 - strh r0, [r1, 0xA] - b _08014A72 - .align 2, 0 -_080149D0: .4byte gUnknown_202E748 -_080149D4: .4byte gUnknown_2027370 -_080149D8: - ldr r4, _080149F8 - ldr r0, [r4, 0x28] - adds r0, 0x1 - str r0, [r4, 0x28] - ldr r0, _080149FC - ldr r1, [r0] - movs r0, 0 - bl _call_via_r1 - ldr r0, [r4, 0x28] - cmp r0, 0x11 - ble _08014A72 - ldr r1, _08014A00 - movs r0, 0x1 - str r0, [r1] - b _08014A72 - .align 2, 0 -_080149F8: .4byte gUnknown_202E748 -_080149FC: .4byte gUnknown_203B088 -_08014A00: .4byte gUnknown_202E744 -_08014A04: - ldr r0, _08014A2C - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _08014A34 - bl ResetUnusedInputStruct - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r1, _08014A30 - movs r0, 0 - str r0, [r1] - b _08014A72 - .align 2, 0 -_08014A2C: .4byte gUnknown_202E77C -_08014A30: .4byte gUnknown_202E744 -_08014A34: - str r0, [r3] - b _08014A72 -_08014A38: - bl sub_8014A88 - ldr r1, _08014A44 - movs r0, 0x4 - str r0, [r1] - b _08014A72 - .align 2, 0 -_08014A44: .4byte gUnknown_202E744 -_08014A48: - bl sub_8014B94 - lsls r0, 24 - cmp r0, 0 - beq _08014A72 - ldr r1, _08014A5C - movs r0, 0x5 - str r0, [r1] - b _08014A72 - .align 2, 0 -_08014A5C: .4byte gUnknown_202E744 -_08014A60: - bl nullsub_35 - ldr r1, _08014A84 - movs r0, 0xB -_08014A68: - str r0, [r1] -_08014A6A: - mov r0, r10 - cmp r0, 0 - beq _08014A72 - b _080144DC -_08014A72: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08014A84: .4byte gUnknown_202E744 - thumb_func_end xxx_draw_string_80144C4 - - thumb_func_start sub_8014A88 -sub_8014A88: - push {r4-r7,lr} - sub sp, 0x88 - ldr r0, _08014A98 - ldr r4, [r0] - movs r5, 0 - movs r7, 0 - movs r6, 0 - b _08014ABE - .align 2, 0 -_08014A98: .4byte gUnknown_202EC14 -_08014A9C: - adds r5, 0xC - ldr r0, [r4] - add r1, sp, 0x8 - add r2, sp, 0x88 - movs r3, 0 - bl xxx_format_string - add r0, sp, 0x8 - bl sub_8008ED0 - cmp r7, r0 - bge _08014AB6 - adds r7, r0, 0 -_08014AB6: - adds r4, 0x8 - adds r6, 0x1 - cmp r6, 0x9 - bgt _08014AC4 -_08014ABE: - ldr r0, [r4] - cmp r0, 0 - bne _08014A9C -_08014AC4: - adds r0, r5, 0 - cmp r5, 0 - bge _08014ACC - adds r0, r5, 0x7 -_08014ACC: - asrs r2, r0, 3 - movs r0, 0x7 - ands r5, r0 - cmp r5, 0 - beq _08014AD8 - adds r2, 0x1 -_08014AD8: - ldr r4, _08014B74 - ldr r0, _08014B78 - ldr r0, [r0] - str r0, [r4, 0x34] - adds r1, r7, 0 - cmp r1, 0 - bge _08014AE8 - adds r1, 0x7 -_08014AE8: - asrs r1, 3 - adds r1, 0x2 - strh r1, [r4, 0x3C] - adds r0, r4, 0 - adds r0, 0x40 - strh r2, [r0] - strh r2, [r4, 0x3E] - movs r0, 0x1C - subs r0, r1 - strh r0, [r4, 0x38] - movs r0, 0xE - subs r0, r2 - strh r0, [r4, 0x3A] - movs r0, 0x80 - strb r0, [r4] - movs r0, 0xC0 - strb r0, [r4, 0x18] - ldr r5, _08014B7C - ldr r0, [r5] - cmp r0, 0 - beq _08014B1E - adds r1, r4, 0 - adds r1, 0x48 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} -_08014B1E: - bl ResetUnusedInputStruct - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_800641C - ldr r0, _08014B80 - ldr r1, _08014B84 - ldr r1, [r1] - ldr r2, _08014B88 - ldr r3, _08014B8C - ldr r3, [r3] - ldr r4, _08014B90 - ldr r4, [r4] - str r4, [sp] - movs r4, 0x2 - str r4, [sp, 0x4] - bl sub_8012D60 - ldr r0, [r5] - cmp r0, 0 - beq _08014B6A - movs r0, 0x3 - bl sub_80073B8 - ldr r0, [r5] - ldr r2, [r0, 0x18] - movs r0, 0 - str r0, [sp] - movs r0, 0x4 - movs r1, 0x2 - movs r3, 0x3 - bl xxx_call_draw_string - movs r0, 0x3 - bl sub_80073E0 -_08014B6A: - add sp, 0x88 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08014B74: .4byte gUnknown_203B198 -_08014B78: .4byte gUnknown_202EC10 -_08014B7C: .4byte gUnknown_202EC20 -_08014B80: .4byte gUnknown_202EBC0 -_08014B84: .4byte gUnknown_202EC14 -_08014B88: .4byte gUnknown_80D48A0 -_08014B8C: .4byte gUnknown_202EC18 -_08014B90: .4byte gUnknown_202EC1C - thumb_func_end sub_8014A88 - - thumb_func_start sub_8014B94 -sub_8014B94: - push {r4,lr} - ldr r4, _08014BA8 - adds r0, r4, 0 - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - beq _08014BAC - movs r0, 0 - b _08014BB6 - .align 2, 0 -_08014BA8: .4byte gUnknown_202EBC0 -_08014BAC: - ldr r1, _08014BBC - adds r0, r4, 0 - bl sub_8013114 - movs r0, 0x1 -_08014BB6: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08014BBC: .4byte gUnknown_202EC1C - thumb_func_end sub_8014B94 - - thumb_func_start nullsub_35 -nullsub_35: - bx lr - thumb_func_end nullsub_35 - - thumb_func_start xxx_format_string -xxx_format_string: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x40 - adds r5, r0, 0 - str r1, [sp, 0x3C] - adds r7, r2, 0 - lsls r3, 16 - lsrs r3, 16 - mov r8, r3 - movs r0, 0x1 - mov r10, r0 - mov r9, r0 - subs r7, 0x1 - b _08014F62 -_08014BE6: - movs r1, 0x1 - b _08014C2C -_08014BEA: - mov r0, r10 - cmp r0, 0 - beq _08014C24 - movs r1, 0 - mov r10, r1 - mov r9, r1 - movs r0, 0x8 - mov r1, r8 - ands r0, r1 - cmp r0, 0 - beq _08014C2E - ldr r0, _08014C1C - add r4, sp, 0x3C - adds r1, r4, 0 - adds r2, r7, 0 - mov r3, r8 - bl sub_8014FA8 - ldr r0, _08014C20 - adds r1, r4, 0 - adds r2, r7, 0 - mov r3, r8 - bl sub_8014FA8 - b _08014C2E - .align 2, 0 -_08014C1C: .4byte gUnknown_202E5D8 -_08014C20: .4byte gUnknown_80D48F4 -_08014C24: - mov r0, r9 - cmp r0, 0 - beq _08014C2E - movs r1, 0 -_08014C2C: - mov r9, r1 -_08014C2E: - cmp r6, 0x23 - bne _08014C5A - ldrb r3, [r5, 0x1] - cmp r3, 0x50 - beq _08014C3C - cmp r3, 0x70 - bne _08014C42 -_08014C3C: - movs r0, 0x1 - mov r10, r0 - mov r9, r0 -_08014C42: - ldr r1, [sp, 0x3C] - adds r2, r1, 0x1 - cmp r2, r7 - bcs _08014C56 - movs r0, 0x23 - strb r0, [r1] - str r2, [sp, 0x3C] - strb r3, [r1, 0x1] - adds r0, r2, 0x1 - str r0, [sp, 0x3C] -_08014C56: - adds r5, 0x2 - b _08014F62 -_08014C5A: - cmp r6, 0x24 - beq _08014C60 - b _08014F26 -_08014C60: - movs r4, 0 - adds r5, 0x1 - ldrb r0, [r5] - subs r0, 0x24 - cmp r0, 0x52 - bls _08014C6E - b _08014F0E -_08014C6E: - lsls r0, 2 - ldr r1, _08014C78 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08014C78: .4byte _08014C7C - .align 2, 0 -_08014C7C: - .4byte _08014F04 - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0C - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014EC4 - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014E60 - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014E54 - .4byte _08014DC8 - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014DDC - .4byte _08014E10 - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014E24 - .4byte _08014F0E - .4byte _08014E84 -_08014DC8: - adds r5, 0x1 - ldrb r0, [r5] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 4 - ldr r0, _08014DD8 - adds r4, r1, r0 - b _08014F0C - .align 2, 0 -_08014DD8: .4byte gUnknown_202CF58 -_08014DDC: - adds r5, 0x1 - ldrb r0, [r5] - cmp r0, 0x6D - bne _08014DFC - bl sub_808D3BC - adds r1, r0, 0 - ldr r4, _08014DF8 - adds r0, r4, 0 - movs r2, 0 - bl PrintColoredPokeNameToBuffer - b _08014F0E - .align 2, 0 -_08014DF8: .4byte gUnknown_202EB80 -_08014DFC: - ldrb r0, [r5] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 4 - ldr r0, _08014E0C - adds r4, r1, r0 - b _08014F0C - .align 2, 0 -_08014E0C: .4byte gUnknown_202D098 -_08014E10: - adds r5, 0x1 - ldrb r0, [r5] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 4 - ldr r0, _08014E20 - adds r4, r1, r0 - b _08014F0C - .align 2, 0 -_08014E20: .4byte gFileCache + 0x110 -_08014E24: - adds r5, 0x1 - movs r0, 0 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _08014E40 - ldr r0, _08014E3C - bl sub_80920D8 - b _08014E48 - .align 2, 0 -_08014E3C: .4byte gTeamName -_08014E40: - ldr r0, _08014E4C - ldr r1, _08014E50 - bl strcpy -_08014E48: - ldr r4, _08014E4C - b _08014F0E - .align 2, 0 -_08014E4C: .4byte gTeamName -_08014E50: .4byte gUnknown_80D48F8 -_08014E54: - adds r5, 0x1 - ldr r4, _08014E5C - b _08014F0E - .align 2, 0 -_08014E5C: .4byte gUnknown_202E628 -_08014E60: - adds r5, 0x1 - ldr r1, _08014E7C - ldr r2, _08014E80 - ldrb r0, [r5] - subs r0, 0x30 - lsls r0, 2 - adds r0, r2 - adds r5, 0x1 - ldr r2, [r0] - mov r0, sp - bl sprintfStatic -_08014E78: - mov r4, sp - b _08014F0E - .align 2, 0 -_08014E7C: .4byte gUnknown_80D4900 -_08014E80: .4byte gUnknown_202DE30 -_08014E84: - adds r5, 0x1 - ldr r1, _08014EBC - ldrb r0, [r5] - subs r0, 0x30 - lsls r0, 2 - adds r0, r1 - ldr r3, [r0] - adds r5, 0x1 - ldr r1, _08014EC0 - ldrb r2, [r5] - subs r2, 0x30 - adds r5, 0x1 - mov r0, sp - bl sprintfStatic - mov r0, sp - ldrb r1, [r0] - cmp r1, 0 - beq _08014E78 - movs r2, 0x60 -_08014EAC: - cmp r1, 0x20 - bne _08014EB2 - strb r2, [r0] -_08014EB2: - adds r0, 0x1 - ldrb r1, [r0] - cmp r1, 0 - bne _08014EAC - b _08014E78 - .align 2, 0 -_08014EBC: .4byte gUnknown_202DE30 -_08014EC0: .4byte gUnknown_80D4904 -_08014EC4: - adds r5, 0x1 - ldr r1, _08014EFC - ldrb r0, [r5] - subs r0, 0x30 - lsls r0, 2 - adds r0, r1 - ldr r3, [r0] - adds r5, 0x1 - ldr r1, _08014F00 - ldrb r2, [r5] - subs r2, 0x30 - adds r5, 0x1 - mov r0, sp - bl sprintfStatic - mov r0, sp - ldrb r1, [r0] - cmp r1, 0 - beq _08014E78 - movs r2, 0x60 -_08014EEC: - cmp r1, 0x20 - bne _08014EF2 - strb r2, [r0] -_08014EF2: - adds r0, 0x1 - ldrb r1, [r0] - cmp r1, 0 - bne _08014EEC - b _08014E78 - .align 2, 0 -_08014EFC: .4byte gUnknown_202DE30 -_08014F00: .4byte gUnknown_80D4908 -_08014F04: - ldr r4, _08014F08 - b _08014F0E - .align 2, 0 -_08014F08: .4byte gUnknown_80D4910 -_08014F0C: - adds r5, 0x1 -_08014F0E: - cmp r4, 0 - beq _08014F62 - add r1, sp, 0x3C - adds r0, r4, 0 - adds r2, r7, 0 - mov r3, r8 - bl sub_8014FA8 - lsls r0, 24 - cmp r0, 0 - bne _08014F7E - b _08014F62 -_08014F26: - adds r0, r6, 0 - adds r0, 0x7F - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _08014F36 - cmp r6, 0x87 - bne _08014F54 -_08014F36: - ldr r0, [sp, 0x3C] - cmp r0, r7 - bcs _08014F42 - strb r6, [r0] - adds r0, 0x1 - str r0, [sp, 0x3C] -_08014F42: - adds r5, 0x1 - ldrb r1, [r5] - cmp r1, 0 - beq _08014F7E - ldr r0, [sp, 0x3C] - cmp r0, r7 - bcs _08014F60 - strb r1, [r0] - b _08014F5C -_08014F54: - ldr r0, [sp, 0x3C] - cmp r0, r7 - bcs _08014F60 - strb r6, [r0] -_08014F5C: - adds r0, 0x1 - str r0, [sp, 0x3C] -_08014F60: - adds r5, 0x1 -_08014F62: - ldrb r6, [r5] - cmp r6, 0 - beq _08014F7E - cmp r6, 0xD - beq _08014F72 - cmp r6, 0xA - beq _08014F72 - b _08014BEA -_08014F72: - movs r0, 0x80 - mov r1, r8 - ands r0, r1 - cmp r0, 0 - bne _08014F7E - b _08014BE6 -_08014F7E: - ldr r0, [sp, 0x3C] - movs r1, 0 - strb r1, [r0] - ldrb r0, [r5] - cmp r0, 0xD - bne _08014F8C - adds r5, 0x1 -_08014F8C: - ldrb r0, [r5] - cmp r0, 0xA - bne _08014F94 - adds r5, 0x1 -_08014F94: - adds r0, r5, 0 - add sp, 0x40 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end xxx_format_string - - thumb_func_start sub_8014FA8 -sub_8014FA8: - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r3, 16 - lsrs r3, 16 - ldr r2, [r5] - ldrb r1, [r4] - cmp r1, 0 - beq _08014FE4 - movs r0, 0x80 - ands r0, r3 - lsls r0, 16 - lsrs r3, r0, 16 -_08014FC4: - cmp r3, 0 - beq _08014FD2 - cmp r1, 0xD - bne _08014FD2 - str r2, [r5] - movs r0, 0x1 - b _08014FE8 -_08014FD2: - cmp r2, r6 - bcs _08014FDC - ldrb r0, [r4] - strb r0, [r2] - adds r2, 0x1 -_08014FDC: - adds r4, 0x1 - ldrb r1, [r4] - cmp r1, 0 - bne _08014FC4 -_08014FE4: - str r2, [r5] - movs r0, 0 -_08014FE8: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8014FA8 - - thumb_func_start xxx_format_and_draw -xxx_format_and_draw: - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x1F8 - adds r5, r0, 0 - adds r6, r1, 0 - adds r0, r2, 0 - mov r8, r3 - ldr r4, [sp, 0x20C] - add r2, sp, 0x1F8 - add r1, sp, 0x4 - movs r3, 0 - bl xxx_format_string - ldr r1, _08015030 - add r1, sp - movs r0, 0 - strb r0, [r1] - str r4, [sp] - adds r0, r5, 0 - adds r1, r6, 0 - add r2, sp, 0x4 - mov r3, r8 - bl xxx_call_draw_string - add sp, 0x1F8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08015030: .4byte 0x000001f7 - thumb_func_end xxx_format_and_draw - - thumb_func_start sub_8015034 -sub_8015034: - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x1FC - adds r6, r0, 0 - mov r8, r1 - adds r0, r2, 0 - mov r9, r3 - ldr r4, [sp, 0x214] - ldr r5, [sp, 0x218] - add r2, sp, 0x1FC - add r1, sp, 0x8 - movs r3, 0 - bl xxx_format_string - ldr r1, _0801507C - add r1, sp - movs r0, 0 - strb r0, [r1] - str r4, [sp] - str r5, [sp, 0x4] - adds r0, r6, 0 - mov r1, r8 - add r2, sp, 0x8 - mov r3, r9 - bl sub_8008F8C - add sp, 0x1FC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801507C: .4byte 0x000001fb - thumb_func_end sub_8015034 - - thumb_func_start sub_8015080 -sub_8015080: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - mov r8, r0 - mov r9, r1 - ldr r4, _08015158 - ldr r0, _0801515C - movs r1, 0x8 - bl MemoryAlloc - str r0, [r4] - movs r1, 0 - str r1, [r0] - mov r12, r4 - ldr r0, _08015160 - mov r10, r0 - mov r5, r12 - movs r3, 0 - movs r2, 0x3 -_080150AC: - mov r4, r12 - ldr r1, [r4] - adds r1, r3 - adds r1, 0x54 - mov r0, r10 - ldm r0!, {r4,r6,r7} - stm r1!, {r4,r6,r7} - ldm r0!, {r4,r6,r7} - stm r1!, {r4,r6,r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _080150AC - movs r4, 0 - ldr r1, [r5] - adds r1, 0x54 - ldr r0, _08015164 - ldm r0!, {r2,r6,r7} - stm r1!, {r2,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldr r1, [r5] - adds r1, 0x84 - ldr r0, _08015168 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldr r0, [r5] - adds r0, 0x84 - mov r1, r9 - bl sub_8012CAC - bl ResetUnusedInputStruct - ldr r0, [r5] - adds r0, 0x54 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - movs r0, 0 - bl sub_80073B8 - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0xB4 - ldr r6, _0801515C - adds r2, r6 - mov r0, r8 - movs r3, 0 - bl xxx_format_string - ldr r2, [r5] - adds r2, 0xB4 - str r4, [sp] - movs r0, 0x4 - movs r1, 0x4 - movs r3, 0 - bl xxx_call_draw_string - movs r0, 0 - bl sub_80073E0 - ldr r0, [r5] - adds r0, 0x4 - movs r1, 0x1 - negs r1, r1 - str r1, [sp] - movs r1, 0x2 - str r1, [sp, 0x4] - mov r1, r9 - movs r2, 0 - movs r3, 0 - bl sub_8012D60 - movs r0, 0x1 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08015158: .4byte gUnknown_203B1F8 -_0801515C: .4byte 0x000004b4 -_08015160: .4byte gUnknown_80DAF70 -_08015164: .4byte gUnknown_80DAF88 -_08015168: .4byte gUnknown_80DAFA0 - thumb_func_end sub_8015080 - - thumb_func_start sub_801516C -sub_801516C: - push {r4,lr} - ldr r4, _08015184 - ldr r0, [r4] - adds r0, 0x4 - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - beq _08015188 - movs r0, 0 - b _08015192 - .align 2, 0 -_08015184: .4byte gUnknown_203B1F8 -_08015188: - ldr r1, [r4] - adds r0, r1, 0x4 - bl sub_8013114 - movs r0, 0x3 -_08015192: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_801516C - - thumb_func_start sub_8015198 -sub_8015198: - ldr r0, _080151A0 - ldr r0, [r0] - ldr r0, [r0] - bx lr - .align 2, 0 -_080151A0: .4byte gUnknown_203B1F8 - thumb_func_end sub_8015198 - - thumb_func_start sub_80151A4 -sub_80151A4: - push {r4,lr} - ldr r4, _080151BC - ldr r0, [r4] - cmp r0, 0 - beq _080151B6 - bl MemoryFree - movs r0, 0 - str r0, [r4] -_080151B6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080151BC: .4byte gUnknown_203B1F8 - thumb_func_end sub_80151A4 - - thumb_func_start sub_80151C0 -sub_80151C0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r5, r0, 0 - adds r6, r1, 0 - ldr r4, _080151FC - movs r0, 0xCC - lsls r0, 1 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r4] - str r5, [r0] - movs r1, 0 - strb r1, [r0, 0x19] - ldr r0, [r4] - strb r1, [r0, 0x18] - ldr r0, [r4] - strb r1, [r0, 0x4] - ldr r0, [r4] - ldr r0, [r0] - cmp r0, 0x5 - bhi _0801524C - lsls r0, 2 - ldr r1, _08015200 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080151FC: .4byte gUnknown_203B1FC -_08015200: .4byte _08015204 - .align 2, 0 -_08015204: - .4byte _0801524C - .4byte _0801524C - .4byte _0801524C - .4byte _0801524C - .4byte _0801521C - .4byte _08015234 -_0801521C: - ldr r1, _08015230 - ldr r2, [r1] - movs r0, 0x9 - strb r0, [r2, 0x1A] - ldr r2, [r1] - movs r0, 0x1 - strb r0, [r2, 0x4] - ldr r2, [r1] - movs r0, 0x36 - b _08015258 - .align 2, 0 -_08015230: .4byte gUnknown_203B1FC -_08015234: - ldr r1, _08015248 - ldr r2, [r1] - movs r0, 0x9 - strb r0, [r2, 0x1A] - ldr r2, [r1] - movs r0, 0x1 - strb r0, [r2, 0x4] - ldr r2, [r1] - movs r0, 0x18 - b _08015258 - .align 2, 0 -_08015248: .4byte gUnknown_203B1FC -_0801524C: - ldr r1, _08015374 - ldr r2, [r1] - movs r0, 0x6 - strb r0, [r2, 0x1A] - ldr r2, [r1] - movs r0, 0xA -_08015258: - strb r0, [r2, 0x1B] - mov r8, r1 - mov r0, r8 - ldr r2, [r0] - movs r1, 0x9A - lsls r1, 1 - adds r0, r2, r1 - str r6, [r0] - adds r1, r2, 0 - adds r1, 0xF8 - adds r0, r2, 0 - adds r0, 0xFC - str r0, [r1] - movs r2, 0 - mov r1, r8 - movs r3, 0 -_08015278: - ldr r0, [r1] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r2 - strb r3, [r0] - adds r2, 0x1 - cmp r2, 0x35 - ble _08015278 - ldr r5, _08015374 - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0xF8 - ldr r0, [r0] - movs r3, 0x9A - lsls r3, 1 - adds r1, r2, r3 - ldr r1, [r1] - ldrb r2, [r2, 0x1B] - bl MemoryCopy8 - movs r2, 0 - ldr r0, [r5] - ldrb r3, [r0, 0x1B] - cmp r2, r3 - bge _080152EA - adds r1, r0, 0 - adds r1, 0xF8 - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r5 - cmp r0, 0 - beq _080152C8 -_080152B8: - adds r2, 0x1 - cmp r2, r3 - bge _080152EA - ldr r0, [r1] - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080152B8 -_080152C8: - mov r4, r8 - ldr r0, [r4] - ldrb r0, [r0, 0x1B] - cmp r2, r0 - bge _080152EA - mov r1, r8 - movs r3, 0 -_080152D6: - ldr r0, [r1] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r2 - strb r3, [r0] - adds r2, 0x1 - ldr r0, [r1] - ldrb r0, [r0, 0x1B] - cmp r2, r0 - blt _080152D6 -_080152EA: - bl sub_8015F44 - ldr r2, _08015374 - ldr r1, [r2] - strb r0, [r1, 0x1C] - ldr r1, [r2] - ldrb r0, [r1, 0x1C] - ldrb r5, [r1, 0x1B] - cmp r0, r5 - bne _08015302 - subs r0, 0x1 - strb r0, [r1, 0x1C] -_08015302: - movs r6, 0x1 - mov r12, r6 - ldr r6, [r2] - adds r5, r6, 0x6 - ldrh r1, [r6, 0x6] - ldr r0, _08015378 - ands r0, r1 - ldr r1, _0801537C - ands r0, r1 - ldr r2, _08015380 - ands r0, r2 - ldr r1, _08015384 - ands r0, r1 - ldr r1, _08015388 - ands r0, r1 - strh r0, [r6, 0x6] - ldrh r0, [r5, 0x4] - adds r3, r2, 0 - ands r3, r0 - movs r1, 0xF - movs r2, 0xF0 - lsls r2, 8 - ldr r0, _0801538C - ands r3, r0 - orrs r3, r2 - strh r3, [r5, 0x4] - ldrh r0, [r5, 0x2] - movs r4, 0xFE - lsls r4, 8 - ands r4, r0 - movs r0, 0xF0 - orrs r4, r0 - strh r4, [r5, 0x2] - movs r2, 0xF0 - lsls r2, 4 - ldrh r0, [r5, 0x6] - ands r1, r0 - movs r7, 0 - orrs r1, r2 - strh r1, [r5, 0x6] - ldrb r0, [r6, 0x4] - cmp r0, 0 - beq _0801539C - ldr r0, _08015390 - ands r4, r0 - ldr r1, _08015394 - movs r0, 0xFC - lsls r0, 8 - ands r3, r0 - orrs r3, r1 - strh r3, [r5, 0x4] - ldr r0, _08015398 - ands r4, r0 - strh r4, [r5, 0x2] - mov r7, r12 - b _080153BE - .align 2, 0 -_08015374: .4byte gUnknown_203B1FC -_08015378: .4byte 0x0000feff -_0801537C: .4byte 0x0000fdff -_08015380: .4byte 0x0000f3ff -_08015384: .4byte 0x0000efff -_08015388: .4byte 0x0000dfff -_0801538C: .4byte 0x00000fff -_08015390: .4byte 0x0000c1ff -_08015394: .4byte 0x000003f6 -_08015398: .4byte 0x00003fff -_0801539C: - movs r1, 0x80 - lsls r1, 6 - ldr r0, _08015468 - ands r4, r0 - orrs r4, r1 - orrs r4, r7 - movs r1, 0xFC - lsls r1, 2 - movs r0, 0xFC - lsls r0, 8 - ands r3, r0 - orrs r3, r1 - strh r3, [r5, 0x4] - ldr r0, _0801546C - ands r4, r0 - strh r4, [r5, 0x2] - mov r1, r12 -_080153BE: - movs r2, 0x80 - lsls r2, 7 - ldrh r1, [r6, 0x6] - ands r0, r1 - orrs r0, r2 - strh r0, [r6, 0x6] - ldr r5, _08015470 - ldr r1, [r5] - movs r0, 0x4 - strb r0, [r1, 0x16] - ldr r4, [r5] - adds r6, r4, 0 - adds r6, 0xE - ldrh r1, [r4, 0xE] - ldr r0, _08015474 - ands r0, r1 - ldr r1, _08015478 - ands r0, r1 - ldr r3, _0801547C - ands r0, r3 - ldr r1, _08015480 - ands r0, r1 - ldr r1, _08015484 - ands r0, r1 - ldr r1, _0801546C - ands r0, r1 - strh r0, [r4, 0xE] - movs r2, 0xFD - lsls r2, 2 - ldrh r1, [r6, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r3 - movs r2, 0xF - movs r3, 0xF0 - lsls r3, 8 - ldr r1, _08015488 - ands r0, r1 - orrs r0, r3 - strh r0, [r6, 0x4] - movs r0, 0xF0 - strh r0, [r6, 0x2] - subs r1, 0xFF - ldrh r0, [r6, 0x6] - ands r2, r0 - movs r0, 0 - orrs r2, r1 - strh r2, [r6, 0x6] - strb r0, [r4, 0x17] - mov r8, r5 - ldr r2, _0801548C - mov r10, r2 - mov r12, r8 - movs r3, 0x9C - lsls r3, 1 - mov r9, r3 - ldr r4, _08015490 - movs r3, 0 - movs r2, 0x3 -_08015438: - mov r5, r12 - ldr r1, [r5] - adds r1, r3 - add r1, r9 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _08015438 - mov r6, r8 - ldr r1, [r6] - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _08015498 - movs r7, 0xA8 - lsls r7, 1 - adds r1, r7 - ldr r0, _08015494 - b _080154A0 - .align 2, 0 -_08015468: .4byte 0x0000c1ff -_0801546C: .4byte 0x00003fff -_08015470: .4byte gUnknown_203B1FC -_08015474: .4byte 0x0000feff -_08015478: .4byte 0x0000fdff -_0801547C: .4byte 0x0000f3ff -_08015480: .4byte 0x0000efff -_08015484: .4byte 0x0000dfff -_08015488: .4byte 0x00000fff -_0801548C: .4byte gUnknown_80DB550 -_08015490: .4byte gUnknown_80DB538 -_08015494: .4byte gUnknown_80DB580 -_08015498: - movs r0, 0xA8 - lsls r0, 1 - adds r1, r0 - ldr r0, _080154EC -_080154A0: - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - mov r0, r8 - ldr r1, [r0] - movs r4, 0x9C - lsls r4, 1 - adds r1, r4 - mov r0, r10 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r6,r7} - stm r1!, {r2,r6,r7} - bl ResetUnusedInputStruct - mov r3, r8 - ldr r0, [r3] - adds r0, r4 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - movs r0, 0x1 - bl sub_8015A08 - bl sub_8015C1C - bl sub_8015F84 - movs r0, 0x1 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080154EC: .4byte gUnknown_80DB568 - thumb_func_end sub_80151C0 - - thumb_func_start sub_80154F0 -sub_80154F0: - push {r4,r5,lr} - ldr r4, _08015558 - ldr r1, [r4] - ldrb r0, [r1, 0x16] - adds r0, 0x1 - strb r0, [r1, 0x16] - bl sub_80157D8 - ldr r2, [r4] - ldrb r1, [r2, 0x16] - movs r5, 0x8 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0801551C - adds r0, r2, 0x6 - movs r1, 0x80 - lsls r1, 1 - movs r2, 0 - movs r3, 0 - bl AddSprite -_0801551C: - ldr r1, [r4] - ldrb r0, [r1, 0x17] - adds r0, 0x1 - strb r0, [r1, 0x17] - bl sub_80158BC - ldr r2, [r4] - ldrb r1, [r2, 0x17] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _08015544 - adds r0, r2, 0 - adds r0, 0xE - movs r1, 0x80 - lsls r1, 1 - movs r2, 0 - movs r3, 0 - bl AddSprite -_08015544: - bl sub_8012AE8 - subs r0, 0x1 - cmp r0, 0x5 - bhi _080155E2 - lsls r0, 2 - ldr r1, _0801555C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08015558: .4byte gUnknown_203B1FC -_0801555C: .4byte _08015560 - .align 2, 0 -_08015560: - .4byte _080155C0 - .4byte _080155C6 - .4byte _080155E2 - .4byte _080155D4 - .4byte _08015578 - .4byte _0801558C -_08015578: - ldr r0, _08015588 - ldr r1, [r0] - ldrb r0, [r1, 0x1C] - cmp r0, 0 - beq _080155B8 - subs r0, 0x1 - b _080155A8 - .align 2, 0 -_08015588: .4byte gUnknown_203B1FC -_0801558C: - ldr r5, _080155B4 - ldr r0, [r5] - ldrb r4, [r0, 0x1C] - ldrb r0, [r0, 0x1B] - subs r0, 0x1 - cmp r4, r0 - beq _080155B8 - bl sub_8015F44 - cmp r4, r0 - bge _080155B8 - ldr r1, [r5] - ldrb r0, [r1, 0x1C] - adds r0, 0x1 -_080155A8: - strb r0, [r1, 0x1C] - movs r0, 0x3 - bl PlayMenuSoundEffect - b _080155E2 - .align 2, 0 -_080155B4: .4byte gUnknown_203B1FC -_080155B8: - movs r0, 0x2 - bl PlayMenuSoundEffect - b _080155E2 -_080155C0: - bl sub_801560C - b _080155E4 -_080155C6: - bl sub_8015748 - lsls r0, 24 - cmp r0, 0 - beq _080155E2 - movs r0, 0x2 - b _080155E4 -_080155D4: - movs r0, 0x3 - bl PlayMenuSoundEffect - ldr r0, _080155EC - ldr r1, [r0] - movs r0, 0x5 - strb r0, [r1, 0x1A] -_080155E2: - movs r0, 0 -_080155E4: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080155EC: .4byte gUnknown_203B1FC - thumb_func_end sub_80154F0 - - thumb_func_start sub_80155F0 -sub_80155F0: - push {r4,lr} - ldr r4, _08015608 - ldr r0, [r4] - cmp r0, 0 - beq _08015602 - bl MemoryFree - movs r0, 0 - str r0, [r4] -_08015602: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08015608: .4byte gUnknown_203B1FC - thumb_func_end sub_80155F0 - - thumb_func_start sub_801560C -sub_801560C: - push {r4-r6,lr} - ldr r3, _08015640 - ldr r4, _08015644 - ldr r5, [r4] - ldrb r0, [r5, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r5, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r3, 0x8 - adds r0, r3 - ldr r6, [r0] - movs r0, 0x83 - lsls r0, 1 - cmp r6, r0 - beq _0801567A - cmp r6, r0 - bgt _08015648 - subs r0, 0x1 - cmp r6, r0 - beq _0801566C - b _080156BC - .align 2, 0 -_08015640: .4byte gUnknown_80DB0F8 -_08015644: .4byte gUnknown_203B1FC -_08015648: - ldr r0, _08015668 - cmp r6, r0 - bne _080156BC - movs r1, 0 - ldrb r0, [r5, 0x18] - cmp r0, 0 - bne _08015658 - movs r1, 0x1 -_08015658: - strb r1, [r5, 0x18] - movs r0, 0x4 - bl PlayMenuSoundEffect - movs r0, 0 - bl sub_8015A08 - b _0801573E - .align 2, 0 -_08015668: .4byte 0x00000107 -_0801566C: - bl sub_8015748 - lsls r0, 24 - cmp r0, 0 - beq _0801573E - movs r0, 0x2 - b _08015740 -_0801567A: - bl sub_8015F44 - cmp r0, 0 - beq _080156D4 - ldr r0, [r4] - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08015696 - bl sub_8015F44 - ldr r1, [r4] - ldrb r1, [r1, 0x1B] - cmp r0, r1 - bne _080156D4 -_08015696: - movs r0, 0 - bl PlayMenuSoundEffect - ldr r0, _080156B8 - ldr r2, [r0] - movs r1, 0x9A - lsls r1, 1 - adds r0, r2, r1 - ldr r0, [r0] - adds r1, r2, 0 - adds r1, 0xF8 - ldr r1, [r1] - ldrb r2, [r2, 0x1B] - bl MemoryCopy8 - movs r0, 0x3 - b _08015740 - .align 2, 0 -_080156B8: .4byte gUnknown_203B1FC -_080156BC: - ldr r0, [r4] - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080156DC - lsls r0, r6, 24 - lsrs r0, 24 - bl sub_803D0F0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080156DC -_080156D4: - movs r0, 0x2 - bl PlayMenuSoundEffect - b _0801573E -_080156DC: - ldr r0, _08015728 - ldr r3, [r0] - ldrb r1, [r3, 0x18] - adds r4, r0, 0 - cmp r1, 0x1 - bne _0801570A - ldrb r0, [r3, 0x1B] - subs r2, r0, 0x2 - ldrb r3, [r3, 0x1C] - cmp r2, r3 - blt _0801570A - adds r3, r4, 0 -_080156F4: - ldr r0, [r3] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r2 - ldrb r1, [r0] - strb r1, [r0, 0x1] - subs r2, 0x1 - ldr r0, [r3] - ldrb r0, [r0, 0x1C] - cmp r2, r0 - bge _080156F4 -_0801570A: - ldr r0, [r4] - ldrb r1, [r0, 0x1C] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r1 - strb r6, [r0] - ldr r1, [r4] - ldrb r2, [r1, 0x1C] - ldrb r0, [r1, 0x1B] - subs r0, 0x1 - cmp r2, r0 - bge _0801572C - adds r0, r2, 0x1 - strb r0, [r1, 0x1C] - b _08015730 - .align 2, 0 -_08015728: .4byte gUnknown_203B1FC -_0801572C: - movs r0, 0x5 - strb r0, [r1, 0x1A] -_08015730: - movs r0, 0 - bl PlayMenuSoundEffect - bl sub_8015C1C - bl sub_8015F84 -_0801573E: - movs r0, 0 -_08015740: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_801560C - - thumb_func_start sub_8015748 -sub_8015748: - push {r4,lr} - ldr r4, _0801576C - ldr r2, [r4] - ldrb r1, [r2, 0x1C] - adds r0, r2, 0 - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r1 - ldrb r3, [r0] - cmp r3, 0 - bne _08015790 - cmp r1, 0 - bne _08015770 - movs r0, 0x2 - bl PlayMenuSoundEffect - movs r0, 0x1 - b _080157CE - .align 2, 0 -_0801576C: .4byte gUnknown_203B1FC -_08015770: - subs r0, r1, 0x1 - strb r0, [r2, 0x1C] - ldr r0, [r4] - ldrb r1, [r0, 0x1C] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r1 - strb r3, [r0] - movs r0, 0x1 - bl PlayMenuSoundEffect - bl sub_8015C1C - bl sub_8015F84 - b _080157CC -_08015790: - bl sub_8015F44 - subs r3, r0, 0x1 - ldr r0, [r4] - ldrb r2, [r0, 0x1C] - cmp r2, r3 - bge _080157B0 -_0801579E: - ldr r0, [r4] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r2 - ldrb r1, [r0, 0x1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, r3 - blt _0801579E -_080157B0: - ldr r0, _080157D4 - ldr r0, [r0] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r3 - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 - bl PlayMenuSoundEffect - bl sub_8015C1C - bl sub_8015F84 -_080157CC: - movs r0, 0 -_080157CE: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080157D4: .4byte gUnknown_203B1FC - thumb_func_end sub_8015748 - - thumb_func_start sub_80157D8 -sub_80157D8: - push {r4,r5,lr} - ldr r5, _080157EC - ldr r0, _080157F0 - ldr r0, [r0] - mov r12, r0 - ldr r0, [r0] - cmp r0, 0x4 - bne _080157F8 - ldr r3, _080157F4 - b _080157FE - .align 2, 0 -_080157EC: .4byte gUnknown_20273B8 -_080157F0: .4byte gUnknown_203B1FC -_080157F4: .4byte gUnknown_80DAFC0 -_080157F8: - cmp r0, 0x5 - bne _0801585C - ldr r3, _08015850 -_080157FE: - mov r1, r12 - ldrb r0, [r1, 0x1C] - lsls r0, 2 - adds r0, r3 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r2, 0 - ldrsh r0, [r5, r2] - lsls r0, 3 - adds r1, r0 - ldr r0, _08015854 - ands r1, r0 - mov r4, r12 - adds r4, 0x6 - ldrh r2, [r4, 0x2] - movs r0, 0xFE - lsls r0, 8 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x2] - mov r1, r12 - ldrb r0, [r1, 0x1C] - lsls r0, 2 - adds r0, r3 - movs r2, 0x2 - ldrsh r1, [r0, r2] - movs r3, 0x2 - ldrsh r0, [r5, r3] - lsls r0, 3 - adds r1, r0 - adds r1, 0x5 - ldr r0, _08015858 - ands r1, r0 - lsls r1, 4 - ldrh r2, [r4, 0x6] - movs r0, 0xF - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x6] - b _080158B0 - .align 2, 0 -_08015850: .4byte gUnknown_80DB098 -_08015854: .4byte 0x000001ff -_08015858: .4byte 0x00000fff -_0801585C: - mov r0, r12 - ldrb r1, [r0, 0x1C] - lsls r1, 1 - mov r2, r12 - adds r2, 0x1E - adds r2, r1 - adds r0, 0x8A - adds r0, r1 - movs r3, 0 - ldrsh r1, [r0, r3] - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - ldrh r2, [r2] - adds r1, r2 - movs r2, 0 - ldrsh r0, [r5, r2] - lsls r0, 3 - adds r0, 0x1E - adds r1, r0 - lsls r1, 23 - lsrs r1, 23 - mov r3, r12 - adds r3, 0x6 - ldrh r2, [r3, 0x2] - movs r0, 0xFE - lsls r0, 8 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x2] - movs r0, 0x2 - ldrsh r1, [r5, r0] - lsls r1, 3 - adds r1, 0x22 - ldr r0, _080158B8 - ands r1, r0 - lsls r1, 4 - ldrh r2, [r3, 0x6] - movs r0, 0xF - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x6] -_080158B0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080158B8: .4byte 0x00000fff - thumb_func_end sub_80157D8 - - thumb_func_start sub_80158BC -sub_80158BC: - push {r4-r6,lr} - ldr r6, _080158D4 - bl sub_8012AE8 - cmp r0, 0x8 - beq _08015908 - cmp r0, 0x8 - bgt _080158D8 - cmp r0, 0x7 - beq _080158E2 - b _08015980 - .align 2, 0 -_080158D4: .4byte gUnknown_2027370 -_080158D8: - cmp r0, 0x9 - beq _08015930 - cmp r0, 0xA - beq _08015958 - b _08015980 -_080158E2: - ldr r4, _08015900 - ldr r3, _08015904 - ldr r2, [r3] - ldrb r0, [r2, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r2, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0] - adds r5, r3, 0 - b _08015988 - .align 2, 0 -_08015900: .4byte gUnknown_80DB0F8 -_08015904: .4byte gUnknown_203B1FC -_08015908: - ldr r4, _08015928 - ldr r3, _0801592C - ldr r2, [r3] - ldrb r0, [r2, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r2, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x1] - adds r5, r3, 0 - b _08015988 - .align 2, 0 -_08015928: .4byte gUnknown_80DB0F8 -_0801592C: .4byte gUnknown_203B1FC -_08015930: - ldr r4, _08015950 - ldr r3, _08015954 - ldr r2, [r3] - ldrb r0, [r2, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r2, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x2] - adds r5, r3, 0 - b _08015988 - .align 2, 0 -_08015950: .4byte gUnknown_80DB0F8 -_08015954: .4byte gUnknown_203B1FC -_08015958: - ldr r4, _08015978 - ldr r3, _0801597C - ldr r2, [r3] - ldrb r0, [r2, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r2, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x3] - adds r5, r3, 0 - b _08015988 - .align 2, 0 -_08015978: .4byte gUnknown_80DB0F8 -_0801597C: .4byte gUnknown_203B1FC -_08015980: - ldr r1, _080159F8 - ldr r0, [r1] - ldrb r0, [r0, 0x1A] - adds r5, r1, 0 -_08015988: - adds r4, r5, 0 - ldr r1, [r4] - ldrb r2, [r1, 0x1A] - cmp r0, r2 - beq _080159A0 - strb r0, [r1, 0x1A] - movs r0, 0x3 - bl PlayMenuSoundEffect - ldr r1, [r4] - movs r0, 0x8 - strb r0, [r1, 0x17] -_080159A0: - ldr r3, _080159FC - ldr r4, [r5] - ldrb r0, [r4, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r4, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r3, 0 - ldrsh r1, [r6, r3] - lsls r1, 3 - ldrb r2, [r0, 0x4] - adds r1, r2 - subs r1, 0x5 - movs r3, 0x2 - ldrsh r2, [r6, r3] - lsls r2, 3 - ldrb r0, [r0, 0x5] - adds r2, r0 - adds r2, 0x1 - ldr r0, _08015A00 - ands r1, r0 - adds r4, 0xE - ldrh r3, [r4, 0x2] - movs r0, 0xFE - lsls r0, 8 - ands r0, r3 - orrs r0, r1 - strh r0, [r4, 0x2] - ldr r0, _08015A04 - ands r2, r0 - lsls r2, 4 - ldrh r1, [r4, 0x6] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strh r0, [r4, 0x6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080159F8: .4byte gUnknown_203B1FC -_080159FC: .4byte gUnknown_80DB0F8 -_08015A00: .4byte 0x000001ff -_08015A04: .4byte 0x00000fff - thumb_func_end sub_80158BC - - thumb_func_start sub_8015A08 -sub_8015A08: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - movs r0, 0 - bl sub_8008C54 - movs r0, 0 - bl sub_80073B8 - ldr r3, _08015A68 - ldr r2, _08015A6C - ldr r0, [r2] - ldrb r1, [r0, 0x19] - lsls r0, r1, 8 - subs r0, r1 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x8 - adds r0, r1 - ldr r4, [r0] - ldr r0, _08015A70 - cmp r4, r0 - bne _08015A3E - b _08015BC0 -_08015A3E: - mov r8, r2 - adds r7, r3, 0 - add r0, sp, 0x14 - mov r10, r0 - movs r6, 0 - mov r9, r6 -_08015A4A: - ldr r0, [r2] - ldrb r1, [r0, 0x19] - lsls r0, r1, 8 - subs r0, r1 - lsls r0, 2 - adds r0, r6, r0 - adds r0, r3 - ldrb r0, [r0, 0x6] - cmp r0, 0x2 - beq _08015AAA - cmp r0, 0x2 - bgt _08015A74 - cmp r0, 0x1 - beq _08015A7A - b _08015A82 - .align 2, 0 -_08015A68: .4byte gUnknown_80DB0F8 -_08015A6C: .4byte gUnknown_203B1FC -_08015A70: .4byte 0x00000109 -_08015A74: - cmp r0, 0x3 - beq _08015A7E - b _08015A82 -_08015A7A: - movs r5, 0x5 - b _08015AAC -_08015A7E: - movs r5, 0x7 - b _08015AAC -_08015A82: - movs r5, 0x7 - mov r1, r8 - ldr r0, [r1] - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08015AAC - cmp r4, 0xFF - bgt _08015AA4 - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_803D0F0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _08015AAC - b _08015AAA -_08015AA4: - ldr r0, _08015ADC - cmp r4, r0 - bgt _08015AAC -_08015AAA: - movs r5, 0x2 -_08015AAC: - movs r0, 0x84 - lsls r0, 1 - cmp r4, r0 - beq _08015B9E - subs r0, 0x1 - cmp r4, r0 - bne _08015B04 - mov r2, r8 - ldr r0, [r2] - ldrb r2, [r0, 0x18] - cmp r2, 0 - bne _08015AE4 - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - adds r0, 0x3 - ldrb r1, [r1, 0x5] - str r2, [sp] - ldr r2, _08015AE0 - b _08015B6A - .align 2, 0 -_08015ADC: .4byte 0x00000101 -_08015AE0: .4byte gUnknown_80DB598 -_08015AE4: - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - adds r0, 0x3 - ldrb r1, [r1, 0x5] - mov r3, r9 - str r3, [sp] - ldr r2, _08015B00 - b _08015B6A - .align 2, 0 -_08015B00: .4byte gUnknown_80DB5A4 -_08015B04: - cmp r4, 0x20 - bne _08015B34 - add r0, sp, 0x4 - ldr r1, _08015B30 - adds r2, r5, 0 - bl sprintfStatic - mov r1, r8 - ldr r0, [r1] - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - adds r0, 0x1 - ldrb r1, [r1, 0x5] - mov r2, r9 - str r2, [sp] - add r2, sp, 0x4 - b _08015B6A - .align 2, 0 -_08015B30: .4byte gUnknown_80DB5B0 -_08015B34: - cmp r4, 0xFF - ble _08015B7C - ldr r1, _08015B74 - movs r0, 0xFF - ands r4, r0 - lsls r0, r4, 2 - adds r0, r1 - ldr r3, [r0] - mov r0, r10 - ldr r1, _08015B78 - adds r2, r5, 0 - bl sprintfStatic - mov r3, r8 - ldr r0, [r3] - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - adds r0, 0x3 - ldrb r1, [r1, 0x5] - mov r2, r9 - str r2, [sp] - mov r2, r10 -_08015B6A: - movs r3, 0 - bl xxx_call_draw_string - b _08015B9E - .align 2, 0 -_08015B74: .4byte gUnknown_80DB4F4 -_08015B78: .4byte gUnknown_80DB5B8 -_08015B7C: - mov r3, r8 - ldr r0, [r3] - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - ldrb r1, [r1, 0x5] - lsls r2, r4, 24 - lsrs r2, 24 - mov r3, r9 - str r3, [sp] - adds r3, r5, 0 - bl sub_8012C60 -_08015B9E: - adds r6, 0xC - ldr r3, _08015C10 - ldr r2, _08015C14 - ldr r0, [r2] - ldrb r1, [r0, 0x19] - lsls r0, r1, 8 - subs r0, r1 - lsls r0, 2 - adds r0, r6, r0 - adds r1, r3, 0 - adds r1, 0x8 - adds r0, r1 - ldr r4, [r0] - ldr r0, _08015C18 - cmp r4, r0 - beq _08015BC0 - b _08015A4A -_08015BC0: - movs r4, 0xE - str r4, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0xE0 - bl sub_800792C - str r4, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x47 - movs r3, 0xE0 - bl sub_800792C - str r4, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x48 - bl sub_8007A78 - str r4, [sp] - movs r0, 0 - movs r1, 0xDF - movs r2, 0 - movs r3, 0x48 - bl sub_8007A78 - movs r0, 0 - bl sub_80073E0 - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08015C10: .4byte gUnknown_80DB0F8 -_08015C14: .4byte gUnknown_203B1FC -_08015C18: .4byte 0x00000109 - thumb_func_end sub_8015A08 - - thumb_func_start sub_8015C1C -sub_8015C1C: - push {r4,r5,lr} - sub sp, 0x54 - movs r0, 0x1 - bl sub_8008C54 - movs r0, 0x1 - bl sub_80073B8 - ldr r0, _08015C74 - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08015C78 - movs r4, 0xE - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0xE0 - bl sub_800792C - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x37 - movs r3, 0xE0 - bl sub_800792C - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0x38 - bl sub_8007A78 - str r4, [sp] - movs r0, 0x1 - movs r1, 0xDF - movs r2, 0 - movs r3, 0x38 - bl sub_8007A78 - b _08015CB2 - .align 2, 0 -_08015C74: .4byte gUnknown_203B1FC -_08015C78: - movs r4, 0xE - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0xB0 - bl sub_800792C - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x27 - movs r3, 0xB0 - bl sub_800792C - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0x28 - bl sub_8007A78 - str r4, [sp] - movs r0, 0x1 - movs r1, 0xAF - movs r2, 0 - movs r3, 0x28 - bl sub_8007A78 -_08015CB2: - ldr r0, _08015CC8 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0x5 - bhi _08015D50 - lsls r0, 2 - ldr r1, _08015CCC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08015CC8: .4byte gUnknown_203B1FC -_08015CCC: .4byte _08015CD0 - .align 2, 0 -_08015CD0: - .4byte _08015CE8 - .4byte _08015D18 - .4byte _08015CF8 - .4byte _08015D08 - .4byte _08015D28 - .4byte _08015D40 -_08015CE8: - ldr r2, _08015CF4 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x5 - b _08015D32 - .align 2, 0 -_08015CF4: .4byte gUnknown_80DB5C0 -_08015CF8: - ldr r2, _08015D04 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x5 - b _08015D32 - .align 2, 0 -_08015D04: .4byte gUnknown_80DB5D4 -_08015D08: - ldr r2, _08015D14 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x5 - b _08015D32 - .align 2, 0 -_08015D14: .4byte gUnknown_80DB5F8 -_08015D18: - ldr r2, _08015D24 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x5 - b _08015D32 - .align 2, 0 -_08015D24: .4byte gUnknown_80DB61C -_08015D28: - ldr r2, _08015D3C - movs r0, 0 - str r0, [sp] - movs r0, 0x36 - movs r1, 0x2 -_08015D32: - movs r3, 0x1 - bl xxx_call_draw_string - b _08015D50 - .align 2, 0 -_08015D3C: .4byte gUnknown_80DB638 -_08015D40: - ldr r2, _08015D64 - movs r0, 0 - str r0, [sp] - movs r0, 0x30 - movs r1, 0x4 - movs r3, 0x1 - bl xxx_call_draw_string -_08015D50: - ldr r5, _08015D68 - ldr r0, [r5] - ldr r1, [r0] - cmp r1, 0x4 - beq _08015D6C - cmp r1, 0x4 - bcc _08015D88 - cmp r1, 0x5 - beq _08015D7A - b _08015DFE - .align 2, 0 -_08015D64: .4byte gUnknown_80DB638 -_08015D68: .4byte gUnknown_203B1FC -_08015D6C: - adds r0, 0xF8 - ldr r0, [r0] - movs r1, 0x1 - movs r2, 0 - bl sub_8015E10 - b _08015DFE -_08015D7A: - adds r0, 0xF8 - ldr r0, [r0] - movs r1, 0x1 - movs r2, 0 - bl sub_8015EB4 - b _08015DFE -_08015D88: - bl sub_8016028 - adds r3, r0, 0 - movs r0, 0x4 - str r0, [sp] - movs r0, 0x1 - movs r1, 0x26 - movs r2, 0x21 - bl sub_80078A4 - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0xF8 - ldr r0, [r0] - ldrb r1, [r1, 0x1B] - bl sub_8015FEC - adds r4, r0, 0 - bl sub_8016028 - cmp r4, r0 - ble _08015DC0 - ldr r1, _08015DBC - ldr r0, [r5] - b _08015DD0 - .align 2, 0 -_08015DBC: .4byte gUnknown_80DB654 -_08015DC0: - bl sub_8015F44 - ldr r2, [r5] - ldrb r1, [r2, 0x1B] - cmp r0, r1 - bne _08015DE0 - ldr r1, _08015DDC - adds r0, r2, 0 -_08015DD0: - adds r0, 0xF8 - ldr r2, [r0] - add r0, sp, 0x4 - bl sprintfStatic - b _08015DEE - .align 2, 0 -_08015DDC: .4byte gUnknown_80DB65C -_08015DE0: - ldr r1, _08015E0C - adds r0, r2, 0 - adds r0, 0xF8 - ldr r2, [r0] - add r0, sp, 0x4 - bl sprintfStatic -_08015DEE: - movs r0, 0 - str r0, [sp] - movs r0, 0x26 - movs r1, 0x16 - add r2, sp, 0x4 - movs r3, 0x1 - bl xxx_call_draw_string -_08015DFE: - movs r0, 0x1 - bl sub_80073E0 - add sp, 0x54 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08015E0C: .4byte gUnknown_80DB664 - thumb_func_end sub_8015C1C - - thumb_func_start sub_8015E10 -sub_8015E10: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r8, r0 - adds r7, r1, 0 - lsls r2, 16 - asrs r6, r2, 16 - ldr r5, _08015EB0 - movs r4, 0x35 -_08015E24: - movs r0, 0 - ldrsh r1, [r5, r0] - movs r0, 0x2 - ldrsh r2, [r5, r0] - adds r0, r6, 0 - adds r0, 0xB - adds r2, r0 - movs r0, 0x5 - str r0, [sp] - adds r0, r7, 0 - movs r3, 0xB - bl sub_80078A4 - adds r5, 0x4 - subs r4, 0x1 - cmp r4, 0 - bge _08015E24 - movs r4, 0 - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0 - beq _08015EA4 - mov r5, r8 -_08015E52: - movs r3, 0x7 - cmp r4, 0x4 - ble _08015E7E - movs r3, 0x6 - cmp r4, 0xC - ble _08015E7E - movs r3, 0x7 - cmp r4, 0x11 - ble _08015E7E - cmp r4, 0x16 - ble _08015E7E - movs r3, 0x6 - cmp r4, 0x1E - ble _08015E7E - movs r3, 0x7 - cmp r4, 0x23 - ble _08015E7E - cmp r4, 0x28 - ble _08015E7E - cmp r4, 0x30 - bgt _08015E7E - movs r3, 0x6 -_08015E7E: - ldr r0, _08015EB0 - lsls r1, r4, 2 - adds r1, r0 - movs r2, 0 - ldrsh r0, [r1, r2] - movs r2, 0x2 - ldrsh r1, [r1, r2] - adds r1, r6 - ldrb r2, [r5] - str r7, [sp] - bl sub_8012C60 - adds r5, 0x1 - adds r4, 0x1 - cmp r4, 0x35 - bgt _08015EA4 - ldrb r0, [r5] - cmp r0, 0 - bne _08015E52 -_08015EA4: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08015EB0: .4byte gUnknown_80DAFC0 - thumb_func_end sub_8015E10 - - thumb_func_start sub_8015EB4 -sub_8015EB4: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r8, r0 - adds r7, r1, 0 - lsls r2, 16 - asrs r6, r2, 16 - ldr r5, _08015F40 - movs r4, 0x17 -_08015EC8: - movs r0, 0 - ldrsh r1, [r5, r0] - movs r0, 0x2 - ldrsh r2, [r5, r0] - adds r0, r6, 0 - adds r0, 0xB - adds r2, r0 - movs r0, 0x5 - str r0, [sp] - adds r0, r7, 0 - movs r3, 0xC - bl sub_80078A4 - adds r5, 0x4 - subs r4, 0x1 - cmp r4, 0 - bge _08015EC8 - movs r4, 0 - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0 - beq _08015F34 - mov r5, r8 -_08015EF6: - movs r3, 0x7 - cmp r4, 0x3 - ble _08015F0E - movs r3, 0x6 - cmp r4, 0x7 - ble _08015F0E - movs r3, 0x7 - cmp r4, 0xF - ble _08015F0E - cmp r4, 0x13 - bgt _08015F0E - movs r3, 0x6 -_08015F0E: - ldr r0, _08015F40 - lsls r1, r4, 2 - adds r1, r0 - movs r2, 0 - ldrsh r0, [r1, r2] - movs r2, 0x2 - ldrsh r1, [r1, r2] - adds r1, r6 - ldrb r2, [r5] - str r7, [sp] - bl sub_8012C60 - adds r5, 0x1 - adds r4, 0x1 - cmp r4, 0x17 - bgt _08015F34 - ldrb r0, [r5] - cmp r0, 0 - bne _08015EF6 -_08015F34: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08015F40: .4byte gUnknown_80DB098 - thumb_func_end sub_8015EB4 - - thumb_func_start sub_8015F44 -sub_8015F44: - push {r4,lr} - movs r2, 0 - ldr r0, _08015F78 - ldr r0, [r0] - ldrb r4, [r0, 0x1B] - cmp r2, r4 - bge _08015F7C - adds r3, r0, 0 - adds r3, 0xF8 - ldr r0, [r3] - ldrb r0, [r0] - cmp r0, 0 - beq _08015F7C - movs r2, 0x1 - movs r1, 0x1 -_08015F62: - cmp r1, r4 - bge _08015F7C - ldr r0, [r3] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08015F7C - adds r2, r1, 0x1 - adds r1, r2, 0 - b _08015F62 - .align 2, 0 -_08015F78: .4byte gUnknown_203B1FC -_08015F7C: - adds r0, r2, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8015F44 - - thumb_func_start sub_8015F84 -sub_8015F84: - push {r4-r7,lr} - movs r6, 0 - movs r5, 0 - ldr r3, _08015FBC - ldr r0, [r3] - ldrb r0, [r0, 0x1B] - cmp r5, r0 - bge _08015FE4 - adds r7, r3, 0 -_08015F96: - ldr r1, [r7] - lsls r4, r5, 1 - adds r0, r1, 0 - adds r0, 0x1E - adds r0, r4 - strh r6, [r0] - adds r0, r1, 0 - adds r0, 0xF8 - ldr r0, [r0] - adds r2, r0, r5 - ldrb r0, [r2] - cmp r0, 0 - bne _08015FC0 - adds r0, r1, 0 - adds r0, 0x8A - adds r0, r4 - movs r1, 0x8 - strh r1, [r0] - b _08015FE4 - .align 2, 0 -_08015FBC: .4byte gUnknown_203B1FC -_08015FC0: - ldrb r0, [r2] - bl ReturnIntFromChar2 - bl GetCharacter - ldr r3, [r7] - adds r1, r3, 0 - adds r1, 0x8A - adds r1, r4 - ldrh r2, [r0, 0x6] - strh r2, [r1] - movs r1, 0x6 - ldrsh r0, [r0, r1] - adds r6, r0 - adds r5, 0x1 - ldrb r3, [r3, 0x1B] - cmp r5, r3 - blt _08015F96 -_08015FE4: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8015F84 - .align 2,0 diff --git a/asm/code_80140DC.s b/asm/code_80140DC.s new file mode 100644 index 000000000..e6c81faf6 --- /dev/null +++ b/asm/code_80140DC.s @@ -0,0 +1,3777 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_80141E0 +sub_80141E0: + push {r4-r6,lr} + sub sp, 0x14 + lsls r6, r2, 16 + movs r2, 0x1 + negs r2, r2 + ldr r3, _08014210 + movs r5, 0 + str r5, [sp] + movs r4, 0x3 + str r4, [sp, 0x4] + str r5, [sp, 0x8] + str r1, [sp, 0xC] + movs r1, 0xC0 + lsls r1, 18 + orrs r1, r6 + lsrs r1, 16 + str r1, [sp, 0x10] + movs r1, 0 + bl sub_8014248 + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08014210: .4byte gUnknown_80D485C + thumb_func_end sub_80141E0 + + thumb_func_start sub_8014214 +sub_8014214: + push {r4-r6,lr} + sub sp, 0x14 + lsls r6, r2, 16 + movs r2, 0x1 + negs r2, r2 + ldr r3, _08014244 + movs r5, 0 + str r5, [sp] + movs r4, 0x3 + str r4, [sp, 0x4] + str r5, [sp, 0x8] + str r1, [sp, 0xC] + movs r1, 0xC0 + lsls r1, 18 + orrs r1, r6 + lsrs r1, 16 + str r1, [sp, 0x10] + movs r1, 0 + bl sub_8014248 + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08014244: .4byte gUnknown_80D4880 + thumb_func_end sub_8014214 + + thumb_func_start sub_8014248 +sub_8014248: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r6, r1, 0 + mov r9, r2 + mov r8, r3 + ldr r5, [sp, 0x28] + ldr r7, [sp, 0x30] + ldr r1, [sp, 0x34] + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + movs r1, 0 + str r1, [sp] + ldr r4, _080142B8 + ldr r3, _080142BC + adds r2, r4, r3 + adds r1, r4, 0 + mov r3, r10 + bl xxx_format_string + ldr r0, _080142C0 + str r4, [r0] + ldr r0, _080142C4 + str r6, [r0, 0x24] + ldr r0, _080142C8 + str r5, [r0] + ldr r0, _080142CC + mov r4, r8 + str r4, [r0] + ldr r0, _080142D0 + ldr r5, [sp, 0x24] + str r5, [r0] + ldr r0, _080142D4 + mov r6, r9 + str r6, [r0] + ldr r0, _080142D8 + bl sub_801317C + movs r0, 0x10 + mov r1, r10 + ands r0, r1 + cmp r0, 0 + beq _080142E4 + ldr r2, _080142DC + adds r1, r2, 0 + ldr r0, _080142E0 + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldm r0!, {r3,r4,r6} + stm r1!, {r3,r4,r6} + b _080142F2 + .align 2, 0 +_080142B8: .4byte gUnknown_202E798 +_080142BC: .4byte 0x000003e7 +_080142C0: .4byte gUnknown_202E794 +_080142C4: .4byte gUnknown_202E748 +_080142C8: .4byte gUnknown_202EC10 +_080142CC: .4byte gUnknown_202EC14 +_080142D0: .4byte gUnknown_202EC18 +_080142D4: .4byte gUnknown_202EC1C +_080142D8: .4byte gUnknown_202EC28 +_080142DC: .4byte gUnknown_203B198 +_080142E0: .4byte gUnknown_80D48DC +_080142E4: + ldr r2, _08014358 + adds r1, r2, 0 + ldr r0, _0801435C + ldm r0!, {r3,r5,r6} + stm r1!, {r3,r5,r6} + ldm r0!, {r4-r6} + stm r1!, {r4-r6} +_080142F2: + adds r4, r2, 0 + movs r0, 0 + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + strh r0, [r4, 0x28] + movs r0, 0x40 + strb r0, [r4, 0x18] + cmp r7, 0 + beq _08014368 + ldr r1, [r7, 0x4] + cmp r1, 0 + beq _08014368 + ldrb r0, [r7, 0xC] + lsls r0, 3 + adds r1, 0x4 + adds r1, r0 + ldr r0, [r1] + cmp r0, 0 + beq _08014368 + ldrh r0, [r7, 0x8] + strh r0, [r4, 0x20] + ldrh r0, [r7, 0xA] + strh r0, [r4, 0x22] + movs r0, 0x5 + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + strh r0, [r4, 0x28] + movs r4, 0 +_0801432A: + adds r0, r4, 0 + adds r0, 0xE0 + ldr r2, [r7, 0x4] + ldrb r1, [r7, 0xC] + lsls r1, 3 + adds r2, r1 + lsls r3, r4, 2 + ldr r1, [r2] + adds r1, r3 + bl SetBGPaletteBufferColorArray + adds r4, 0x1 + cmp r4, 0xF + ble _0801432A + movs r0, 0x1 + str r0, [sp] + ldrb r0, [r7, 0xE] + cmp r0, 0 + beq _08014360 + ldr r1, _08014358 + movs r0, 0x7 + b _08014364 + .align 2, 0 +_08014358: .4byte gUnknown_203B198 +_0801435C: .4byte gUnknown_80D48C4 +_08014360: + ldr r1, _080143E8 + movs r0, 0x5 +_08014364: + str r0, [r1, 0x1C] + adds r4, r1, 0 +_08014368: + ldr r2, _080143EC + adds r1, r4, 0 + adds r1, 0x30 + adds r0, r2, 0 + ldm r0!, {r3,r5,r6} + stm r1!, {r3,r5,r6} + ldm r0!, {r3,r5,r6} + stm r1!, {r3,r5,r6} + adds r0, r4, 0 + adds r0, 0x48 + ldm r2!, {r1,r3,r5} + stm r0!, {r1,r3,r5} + ldm r2!, {r1,r3,r6} + stm r0!, {r1,r3,r6} + bl ResetUnusedInputStruct + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r1, _080143F0 + movs r4, 0 + movs r2, 0 + movs r0, 0x4 + strh r0, [r1] + strh r0, [r1, 0x2] + movs r0, 0x70 + strh r0, [r1, 0x8] + ldr r0, _080143F4 + movs r5, 0x2 + ldrsh r0, [r0, r5] + lsls r0, 3 + adds r0, 0x22 + strh r0, [r1, 0xA] + movs r0, 0x7 + str r0, [r1, 0x10] + str r2, [r1, 0x1C] + adds r1, 0x20 + strb r4, [r1] + movs r0, 0x10 + mov r6, r10 + ands r0, r6 + movs r1, 0x3 + cmp r0, 0 + beq _080143C6 + movs r1, 0x8 +_080143C6: + adds r0, r1, 0 + bl sub_80063D8 + ldr r0, _080143F8 + movs r1, 0x1 + str r1, [r0] + ldr r0, _080143FC + mov r2, r10 + strh r2, [r0] + movs r0, 0x20 + mov r3, r10 + ands r0, r3 + cmp r0, 0 + beq _08014404 + ldr r0, _08014400 + strb r1, [r0] + b _08014408 + .align 2, 0 +_080143E8: .4byte gUnknown_203B198 +_080143EC: .4byte gUnknown_80D48AC +_080143F0: .4byte gUnknown_202E748 +_080143F4: .4byte gUnknown_2027370 +_080143F8: .4byte gUnknown_202E744 +_080143FC: .4byte gUnknown_202E77C +_08014400: .4byte gUnknown_202E790 +_08014404: + ldr r0, _0801445C + strb r4, [r0] +_08014408: + movs r0, 0x80 + lsls r0, 3 + mov r4, r10 + ands r0, r4 + cmp r0, 0 + beq _08014418 + bl SetWindowBGColor +_08014418: + ldr r0, _08014460 + movs r1, 0x1 + str r1, [r0] + ldr r0, _08014464 + str r1, [r0] + bl UnpressButtons + ldr r1, _08014468 + movs r0, 0 + strb r0, [r1] + ldr r1, _0801446C + movs r0, 0 + str r0, [r1] + ldr r5, [sp] + cmp r5, 0 + beq _08014480 + ldr r0, [r7, 0x4] + ldrb r1, [r7, 0xC] + lsls r1, 3 + adds r0, 0x4 + adds r0, r1 + ldr r4, [r0] + movs r0, 0x1 + bl sub_80073B8 + ldrb r0, [r7, 0xD] + cmp r0, 0 + bne _08014470 + movs r0, 0x1 + adds r1, r4, 0 + movs r2, 0xE + bl sub_8008274 + b _0801447A + .align 2, 0 +_0801445C: .4byte gUnknown_202E790 +_08014460: .4byte gUnknown_202E788 +_08014464: .4byte gUnknown_202E78C +_08014468: .4byte gUnknown_202E791 +_0801446C: .4byte gUnknown_202E784 +_08014470: + movs r0, 0x1 + adds r1, r4, 0 + movs r2, 0xE + bl sub_800836C +_0801447A: + movs r0, 0x1 + bl sub_80073E0 +_08014480: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8014248 + + thumb_func_start sub_8014490 +sub_8014490: + ldr r0, _0801449C + movs r1, 0 + str r1, [r0] + ldr r0, _080144A0 + str r1, [r0] + bx lr + .align 2, 0 +_0801449C: .4byte gUnknown_202E744 +_080144A0: .4byte gUnknown_202EC1C + thumb_func_end sub_8014490 + + thumb_func_start sub_80144A4 +sub_80144A4: + push {lr} + adds r1, r0, 0 + cmp r1, 0 + beq _080144B2 + ldr r0, _080144BC + ldr r0, [r0] + str r0, [r1] +_080144B2: + ldr r0, _080144C0 + ldr r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_080144BC: .4byte gUnknown_202EC1C +_080144C0: .4byte gUnknown_202E744 + thumb_func_end sub_80144A4 + + thumb_func_start xxx_draw_string_80144C4 +xxx_draw_string_80144C4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + movs r0, 0x1 + mov r10, r0 + ldr r1, _080144F4 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_080144DC: + ldr r0, _080144F8 + ldr r1, [r0] + adds r3, r0, 0 + cmp r1, 0xB + bls _080144E8 + b _08014A6A +_080144E8: + lsls r0, r1, 2 + ldr r1, _080144FC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080144F4: .4byte gUnknown_202E784 +_080144F8: .4byte gUnknown_202E744 +_080144FC: .4byte _08014500 + .align 2, 0 +_08014500: + .4byte _08014A72 + .4byte _08014530 + .4byte _08014708 + .4byte _08014A38 + .4byte _08014A48 + .4byte _08014A60 + .4byte _08014778 + .4byte _080147E2 + .4byte _080147E2 + .4byte _080147E2 + .4byte _080149D8 + .4byte _08014A04 +_08014530: + ldr r0, _08014540 + ldr r6, [r0] + ldr r0, _08014544 + ldrb r0, [r0] + cmp r0, 0 + beq _0801457C + ldr r7, _08014548 + b _08014580 + .align 2, 0 +_08014540: .4byte gUnknown_202E794 +_08014544: .4byte gUnknown_202E790 +_08014548: .4byte 0x0001869f +_0801454C: + str r2, [r3, 0x1C] + adds r1, r3, 0 + adds r1, 0x20 + movs r0, 0x1 + strb r0, [r1] + ldr r1, _0801456C + movs r0, 0x8 + str r0, [r1] + ldr r0, _08014570 + strb r2, [r0] + ldr r1, _08014574 + ldr r0, _08014578 + ldr r0, [r0] + str r0, [r1] + b _0801466C + .align 2, 0 +_0801456C: .4byte gUnknown_202E744 +_08014570: .4byte gUnknown_202E791 +_08014574: .4byte gUnknown_202E780 +_08014578: .4byte gUnknown_202E738 +_0801457C: + ldr r0, _08014594 + ldr r7, [r0] +_08014580: + ldr r1, _08014598 + movs r0, 0 + str r0, [r1, 0x2C] + bl sub_80073B8 + ldr r1, _0801459C + mov r8, r1 + ldr r2, _080145A0 + mov r9, r2 + b _08014652 + .align 2, 0 +_08014594: .4byte gUnknown_202E788 +_08014598: .4byte gUnknown_202E748 +_0801459C: .4byte gUnknown_202E744 +_080145A0: .4byte gUnknown_202E780 +_080145A4: + adds r0, r4, 0 + adds r0, 0x20 + ldrb r5, [r0] + cmp r5, 0 + beq _080145EC + movs r3, 0x2 + ldrsh r0, [r4, r3] + cmp r0, 0x22 + ble _080145CC + movs r0, 0x8 + mov r4, r8 + str r0, [r4] + ldr r0, _080145C8 + ldr r0, [r0] + mov r1, r9 + str r0, [r1] + b _080145DA + .align 2, 0 +_080145C8: .4byte gUnknown_202E738 +_080145CC: + movs r0, 0x7 + mov r2, r8 + str r0, [r2] + ldr r0, _080145E4 + ldr r0, [r0] + mov r3, r9 + str r0, [r3] +_080145DA: + ldr r1, _080145E8 + movs r0, 0 + strb r0, [r1] + b _0801466C + .align 2, 0 +_080145E4: .4byte gUnknown_202E73C +_080145E8: .4byte gUnknown_202E791 +_080145EC: + ldrb r0, [r6] + cmp r0, 0 + beq _0801466C + cmp r0, 0xD + beq _080145FA + cmp r0, 0xA + bne _08014608 +_080145FA: + movs r0, 0x4 + strh r0, [r4] + ldrh r0, [r4, 0x2] + adds r0, 0xB + strh r0, [r4, 0x2] + adds r6, 0x1 + b _08014630 +_08014608: + adds r0, r6, 0 + add r1, sp, 0x4 + bl xxx_get_next_char_from_string + adds r6, r0, 0 + movs r1, 0 + ldrsh r0, [r4, r1] + movs r2, 0x2 + ldrsh r1, [r4, r2] + ldr r2, [sp, 0x4] + ldr r3, [r4, 0x10] + str r5, [sp] + bl xxx_call_draw_char + ldrh r1, [r4] + adds r1, r0 + strh r1, [r4] + ldr r0, _08014694 + ldr r0, [r0] + str r0, [r4, 0x2C] +_08014630: + ldr r3, _08014698 + movs r4, 0x2 + ldrsh r0, [r3, r4] + cmp r0, 0x22 + ble _08014650 + ldr r0, _0801469C + ldrh r1, [r0] + movs r0, 0x10 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + bne _0801464C + b _0801454C +_0801464C: + movs r0, 0x4 + strh r0, [r3, 0x2] +_08014650: + subs r7, 0x1 +_08014652: + cmp r7, 0 + ble _0801466C + ldr r4, _08014698 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8009190 + adds r6, r0, 0 + adds r0, r4, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0 + beq _080145A4 +_0801466C: + movs r0, 0 + bl sub_80073E0 + ldr r4, _080146A0 + str r6, [r4] + ldr r0, _080146A4 + bl sub_801317C + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + bne _080146BC + ldr r0, _080146A8 + ldr r0, [r0] + cmp r0, 0 + beq _080146B0 + ldr r1, _080146AC + movs r0, 0x3 + str r0, [r1] + b _08014A72 + .align 2, 0 +_08014694: .4byte gUnknown_202E78C +_08014698: .4byte gUnknown_202E748 +_0801469C: .4byte gUnknown_202E77C +_080146A0: .4byte gUnknown_202E794 +_080146A4: .4byte gUnknown_202EC28 +_080146A8: .4byte gUnknown_202EC14 +_080146AC: .4byte gUnknown_202E744 +_080146B0: + ldr r1, _080146B8 + movs r0, 0x6 + str r0, [r1] + b _08014A72 + .align 2, 0 +_080146B8: .4byte gUnknown_202E744 +_080146BC: + ldr r0, _080146E8 + movs r2, 0 + str r2, [r0, 0x30] + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + beq _080146FC + ldr r1, _080146EC + ldr r0, [r1] + cmp r0, 0x1 + beq _080146D4 + b _08014A72 +_080146D4: + movs r0, 0x7 + str r0, [r1] + ldr r0, _080146F0 + strb r2, [r0] + ldr r1, _080146F4 + ldr r0, _080146F8 + ldr r0, [r0] + str r0, [r1] + b _08014A72 + .align 2, 0 +_080146E8: .4byte gUnknown_202E748 +_080146EC: .4byte gUnknown_202E744 +_080146F0: .4byte gUnknown_202E791 +_080146F4: .4byte gUnknown_202E780 +_080146F8: .4byte gUnknown_202E738 +_080146FC: + ldr r1, _08014704 + movs r0, 0x2 + b _08014A68 + .align 2, 0 +_08014704: .4byte gUnknown_202E744 +_08014708: + ldr r4, _08014760 + ldrh r1, [r4] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08014718 + bl sub_8011A04 +_08014718: + ldrh r1, [r4] + movs r0, 0x2 + ands r0, r1 + ldr r2, _08014764 + cmp r0, 0 + bne _08014742 + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08014742 + ldr r0, _08014768 + ldrh r1, [r0, 0x2] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _08014742 + ldr r0, _0801476C + movs r1, 0x1 + strb r1, [r0] + ldr r0, _08014770 + str r0, [r2, 0x30] +_08014742: + ldr r1, [r2, 0x30] + adds r1, 0x1 + str r1, [r2, 0x30] + ldr r0, [r2, 0x2C] + cmp r1, r0 + bgt _08014750 + b _08014A72 +_08014750: + ldr r1, _08014774 + movs r0, 0x1 + str r0, [r1] + adds r1, r2, 0 + adds r1, 0x21 + movs r0, 0 + strb r0, [r1] + b _08014A6A + .align 2, 0 +_08014760: .4byte gUnknown_202E77C +_08014764: .4byte gUnknown_202E748 +_08014768: .4byte gRealInputs +_0801476C: .4byte gUnknown_202E790 +_08014770: .4byte 0x0001869f +_08014774: .4byte gUnknown_202E744 +_08014778: + ldr r0, _080147B4 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080147DC + movs r0, 0x9 + str r0, [r3] + ldr r1, _080147B8 + movs r0, 0 + strb r0, [r1] + ldr r0, _080147BC + ldr r1, [r0] + cmp r1, 0 + ble _080147C8 + ldr r2, _080147C0 + ldr r0, _080147C4 + ldr r0, [r0] + subs r0, r1, r0 + str r0, [r2] + cmp r0, 0 + blt _080147A8 + b _08014A6A +_080147A8: + movs r0, 0xB + str r0, [r3] + movs r0, 0 + str r0, [r2] + b _08014A6A + .align 2, 0 +_080147B4: .4byte gUnknown_202E77C +_080147B8: .4byte gUnknown_202E791 +_080147BC: .4byte gUnknown_202E740 +_080147C0: .4byte gUnknown_202E780 +_080147C4: .4byte gUnknown_202E784 +_080147C8: + ldr r0, _080147D4 + ldr r1, _080147D8 + ldr r1, [r1] + str r1, [r0] + b _08014A6A + .align 2, 0 +_080147D4: .4byte gUnknown_202E780 +_080147D8: .4byte gUnknown_202E738 +_080147DC: + movs r0, 0xB + str r0, [r3] + b _08014A6A +_080147E2: + movs r5, 0 + ldr r0, _0801481C + adds r0, 0x20 + strb r5, [r0] + ldr r4, _08014820 + adds r0, r4, 0 + movs r1, 0 + bl nullsub_34 + ldr r0, _08014824 + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08014802 + b _0801494C +_08014802: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0801482C + ldr r1, _08014828 + ldr r0, [r1] + cmp r0, 0 + bgt _08014814 + b _0801494C +_08014814: + subs r0, 0x1 + str r0, [r1] + b _08014856 + .align 2, 0 +_0801481C: .4byte gUnknown_202E748 +_08014820: .4byte gUnknown_202EC28 +_08014824: .4byte gUnknown_202E77C +_08014828: .4byte gUnknown_202E780 +_0801482C: + ldr r2, _080148E4 + ldrh r1, [r2, 0x2] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _0801483A + b _0801494C +_0801483A: + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _08014842 + b _0801494C +_08014842: + ldrh r1, [r2] + movs r0, 0xF2 + ands r0, r1 + cmp r0, 0x2 + bne _0801484E + b _0801494C +_0801484E: + ldrb r0, [r4, 0x5] + cmp r0, 0 + beq _08014856 + movs r5, 0x1 +_08014856: + cmp r5, 0 + bne _0801494C + ldr r1, _080148E8 + ldrb r0, [r1] + adds r2, r0, 0x1 + strb r2, [r1] + ldr r0, _080148EC + ldrh r7, [r0] + movs r0, 0x2 + ands r0, r7 + cmp r0, 0 + beq _08014870 + b _08014A72 +_08014870: + movs r0, 0x8 + ands r2, r0 + cmp r2, 0 + bne _0801487A + b _08014A72 +_0801487A: + ldr r3, _080148F0 + ldrh r1, [r3] + ldr r0, _080148F4 + ands r0, r1 + ldr r1, _080148F8 + ands r0, r1 + ldr r4, _080148FC + ands r0, r4 + ldr r1, _08014900 + ands r0, r1 + ldr r1, _08014904 + ands r0, r1 + movs r1, 0x80 + lsls r1, 7 + ldr r2, _08014908 + ands r0, r2 + orrs r0, r1 + strh r0, [r3] + ldrh r0, [r3, 0x2] + ldr r5, _0801490C + ands r5, r0 + ands r5, r2 + strh r5, [r3, 0x2] + movs r2, 0xFC + lsls r2, 2 + ldrh r1, [r3, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r1 + orrs r0, r2 + ands r0, r4 + movs r6, 0xF + lsls r1, r6, 12 + ldr r2, _08014910 + ands r0, r2 + movs r4, 0 + mov r8, r4 + orrs r0, r1 + strh r0, [r3, 0x4] + movs r0, 0x10 + ands r0, r7 + adds r4, r3, 0 + cmp r0, 0 + beq _08014914 + movs r2, 0xF0 + lsls r2, 3 + ldrh r1, [r4, 0x6] + adds r0, r6, 0 + ands r0, r1 + orrs r0, r2 + strh r0, [r4, 0x6] + movs r0, 0x70 + b _08014932 + .align 2, 0 +_080148E4: .4byte gRealInputs +_080148E8: .4byte gUnknown_202E791 +_080148EC: .4byte gUnknown_202E77C +_080148F0: .4byte gUnknown_202E6E0 +_080148F4: .4byte 0x0000feff +_080148F8: .4byte 0x0000fdff +_080148FC: .4byte 0x0000f3ff +_08014900: .4byte 0x0000efff +_08014904: .4byte 0x0000dfff +_08014908: .4byte 0x00003fff +_0801490C: .4byte 0x0000c1ff +_08014910: .4byte 0x00000fff +_08014914: + ldr r3, _08014944 + movs r0, 0xA + ldrsh r1, [r3, r0] + adds r1, 0x1 + ands r1, r2 + lsls r1, 4 + ldrh r2, [r4, 0x6] + adds r0, r6, 0 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x6] + movs r1, 0x8 + ldrsh r0, [r3, r1] + ldr r1, _08014948 + ands r0, r1 +_08014932: + strh r0, [r4, 0x2] + movs r1, 0x80 + lsls r1, 1 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0 + bl AddSprite + b _08014A72 + .align 2, 0 +_08014944: .4byte gUnknown_202E748 +_08014948: .4byte 0x000001ff +_0801494C: + ldr r0, _08014960 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0 + bne _08014968 + ldr r1, _08014964 + movs r0, 0xB + str r0, [r1] + b _080149BA + .align 2, 0 +_08014960: .4byte gUnknown_202E794 +_08014964: .4byte gUnknown_202E744 +_08014968: + ldr r4, _08014974 + ldr r0, [r4] + cmp r0, 0x9 + bne _08014978 + movs r0, 0xB + b _080149B8 + .align 2, 0 +_08014974: .4byte gUnknown_202E744 +_08014978: + cmp r0, 0x8 + bne _080149B6 + ldr r2, _080149A0 + movs r1, 0x4 + strh r1, [r2] + movs r3, 0x2 + ldrsh r0, [r2, r3] + cmp r0, 0x22 + ble _080149B6 + strh r1, [r2, 0x2] + ldr r0, _080149A4 + ldrh r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080149A8 +_08014998: + movs r0, 0 + bl sub_8008C54 + b _080149B6 + .align 2, 0 +_080149A0: .4byte gUnknown_202E748 +_080149A4: .4byte gUnknown_202E77C +_080149A8: + ldr r1, [r2, 0x1C] + cmp r1, 0 + bne _08014998 + movs r0, 0xA + str r0, [r4] + str r1, [r2, 0x28] + b _080149BA +_080149B6: + movs r0, 0x1 +_080149B8: + str r0, [r4] +_080149BA: + ldr r1, _080149D0 + movs r0, 0x70 + strh r0, [r1, 0x8] + ldr r0, _080149D4 + movs r4, 0x2 + ldrsh r0, [r0, r4] + lsls r0, 3 + adds r0, 0x22 + strh r0, [r1, 0xA] + b _08014A72 + .align 2, 0 +_080149D0: .4byte gUnknown_202E748 +_080149D4: .4byte gUnknown_2027370 +_080149D8: + ldr r4, _080149F8 + ldr r0, [r4, 0x28] + adds r0, 0x1 + str r0, [r4, 0x28] + ldr r0, _080149FC + ldr r1, [r0] + movs r0, 0 + bl _call_via_r1 + ldr r0, [r4, 0x28] + cmp r0, 0x11 + ble _08014A72 + ldr r1, _08014A00 + movs r0, 0x1 + str r0, [r1] + b _08014A72 + .align 2, 0 +_080149F8: .4byte gUnknown_202E748 +_080149FC: .4byte gUnknown_203B088 +_08014A00: .4byte gUnknown_202E744 +_08014A04: + ldr r0, _08014A2C + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _08014A34 + bl ResetUnusedInputStruct + movs r0, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r1, _08014A30 + movs r0, 0 + str r0, [r1] + b _08014A72 + .align 2, 0 +_08014A2C: .4byte gUnknown_202E77C +_08014A30: .4byte gUnknown_202E744 +_08014A34: + str r0, [r3] + b _08014A72 +_08014A38: + bl sub_8014A88 + ldr r1, _08014A44 + movs r0, 0x4 + str r0, [r1] + b _08014A72 + .align 2, 0 +_08014A44: .4byte gUnknown_202E744 +_08014A48: + bl sub_8014B94 + lsls r0, 24 + cmp r0, 0 + beq _08014A72 + ldr r1, _08014A5C + movs r0, 0x5 + str r0, [r1] + b _08014A72 + .align 2, 0 +_08014A5C: .4byte gUnknown_202E744 +_08014A60: + bl nullsub_35 + ldr r1, _08014A84 + movs r0, 0xB +_08014A68: + str r0, [r1] +_08014A6A: + mov r0, r10 + cmp r0, 0 + beq _08014A72 + b _080144DC +_08014A72: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08014A84: .4byte gUnknown_202E744 + thumb_func_end xxx_draw_string_80144C4 + + thumb_func_start sub_8014A88 +sub_8014A88: + push {r4-r7,lr} + sub sp, 0x88 + ldr r0, _08014A98 + ldr r4, [r0] + movs r5, 0 + movs r7, 0 + movs r6, 0 + b _08014ABE + .align 2, 0 +_08014A98: .4byte gUnknown_202EC14 +_08014A9C: + adds r5, 0xC + ldr r0, [r4] + add r1, sp, 0x8 + add r2, sp, 0x88 + movs r3, 0 + bl xxx_format_string + add r0, sp, 0x8 + bl sub_8008ED0 + cmp r7, r0 + bge _08014AB6 + adds r7, r0, 0 +_08014AB6: + adds r4, 0x8 + adds r6, 0x1 + cmp r6, 0x9 + bgt _08014AC4 +_08014ABE: + ldr r0, [r4] + cmp r0, 0 + bne _08014A9C +_08014AC4: + adds r0, r5, 0 + cmp r5, 0 + bge _08014ACC + adds r0, r5, 0x7 +_08014ACC: + asrs r2, r0, 3 + movs r0, 0x7 + ands r5, r0 + cmp r5, 0 + beq _08014AD8 + adds r2, 0x1 +_08014AD8: + ldr r4, _08014B74 + ldr r0, _08014B78 + ldr r0, [r0] + str r0, [r4, 0x34] + adds r1, r7, 0 + cmp r1, 0 + bge _08014AE8 + adds r1, 0x7 +_08014AE8: + asrs r1, 3 + adds r1, 0x2 + strh r1, [r4, 0x3C] + adds r0, r4, 0 + adds r0, 0x40 + strh r2, [r0] + strh r2, [r4, 0x3E] + movs r0, 0x1C + subs r0, r1 + strh r0, [r4, 0x38] + movs r0, 0xE + subs r0, r2 + strh r0, [r4, 0x3A] + movs r0, 0x80 + strb r0, [r4] + movs r0, 0xC0 + strb r0, [r4, 0x18] + ldr r5, _08014B7C + ldr r0, [r5] + cmp r0, 0 + beq _08014B1E + adds r1, r4, 0 + adds r1, 0x48 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} +_08014B1E: + bl ResetUnusedInputStruct + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_800641C + ldr r0, _08014B80 + ldr r1, _08014B84 + ldr r1, [r1] + ldr r2, _08014B88 + ldr r3, _08014B8C + ldr r3, [r3] + ldr r4, _08014B90 + ldr r4, [r4] + str r4, [sp] + movs r4, 0x2 + str r4, [sp, 0x4] + bl sub_8012D60 + ldr r0, [r5] + cmp r0, 0 + beq _08014B6A + movs r0, 0x3 + bl sub_80073B8 + ldr r0, [r5] + ldr r2, [r0, 0x18] + movs r0, 0 + str r0, [sp] + movs r0, 0x4 + movs r1, 0x2 + movs r3, 0x3 + bl xxx_call_draw_string + movs r0, 0x3 + bl sub_80073E0 +_08014B6A: + add sp, 0x88 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08014B74: .4byte gUnknown_203B198 +_08014B78: .4byte gUnknown_202EC10 +_08014B7C: .4byte gUnknown_202EC20 +_08014B80: .4byte gUnknown_202EBC0 +_08014B84: .4byte gUnknown_202EC14 +_08014B88: .4byte gUnknown_80D48A0 +_08014B8C: .4byte gUnknown_202EC18 +_08014B90: .4byte gUnknown_202EC1C + thumb_func_end sub_8014A88 + + thumb_func_start sub_8014B94 +sub_8014B94: + push {r4,lr} + ldr r4, _08014BA8 + adds r0, r4, 0 + bl sub_8012FD8 + lsls r0, 24 + cmp r0, 0 + beq _08014BAC + movs r0, 0 + b _08014BB6 + .align 2, 0 +_08014BA8: .4byte gUnknown_202EBC0 +_08014BAC: + ldr r1, _08014BBC + adds r0, r4, 0 + bl sub_8013114 + movs r0, 0x1 +_08014BB6: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08014BBC: .4byte gUnknown_202EC1C + thumb_func_end sub_8014B94 + + thumb_func_start nullsub_35 +nullsub_35: + bx lr + thumb_func_end nullsub_35 + + thumb_func_start xxx_format_string +xxx_format_string: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x40 + adds r5, r0, 0 + str r1, [sp, 0x3C] + adds r7, r2, 0 + lsls r3, 16 + lsrs r3, 16 + mov r8, r3 + movs r0, 0x1 + mov r10, r0 + mov r9, r0 + subs r7, 0x1 + b _08014F62 +_08014BE6: + movs r1, 0x1 + b _08014C2C +_08014BEA: + mov r0, r10 + cmp r0, 0 + beq _08014C24 + movs r1, 0 + mov r10, r1 + mov r9, r1 + movs r0, 0x8 + mov r1, r8 + ands r0, r1 + cmp r0, 0 + beq _08014C2E + ldr r0, _08014C1C + add r4, sp, 0x3C + adds r1, r4, 0 + adds r2, r7, 0 + mov r3, r8 + bl sub_8014FA8 + ldr r0, _08014C20 + adds r1, r4, 0 + adds r2, r7, 0 + mov r3, r8 + bl sub_8014FA8 + b _08014C2E + .align 2, 0 +_08014C1C: .4byte gUnknown_202E5D8 +_08014C20: .4byte gUnknown_80D48F4 +_08014C24: + mov r0, r9 + cmp r0, 0 + beq _08014C2E + movs r1, 0 +_08014C2C: + mov r9, r1 +_08014C2E: + cmp r6, 0x23 + bne _08014C5A + ldrb r3, [r5, 0x1] + cmp r3, 0x50 + beq _08014C3C + cmp r3, 0x70 + bne _08014C42 +_08014C3C: + movs r0, 0x1 + mov r10, r0 + mov r9, r0 +_08014C42: + ldr r1, [sp, 0x3C] + adds r2, r1, 0x1 + cmp r2, r7 + bcs _08014C56 + movs r0, 0x23 + strb r0, [r1] + str r2, [sp, 0x3C] + strb r3, [r1, 0x1] + adds r0, r2, 0x1 + str r0, [sp, 0x3C] +_08014C56: + adds r5, 0x2 + b _08014F62 +_08014C5A: + cmp r6, 0x24 + beq _08014C60 + b _08014F26 +_08014C60: + movs r4, 0 + adds r5, 0x1 + ldrb r0, [r5] + subs r0, 0x24 + cmp r0, 0x52 + bls _08014C6E + b _08014F0E +_08014C6E: + lsls r0, 2 + ldr r1, _08014C78 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08014C78: .4byte _08014C7C + .align 2, 0 +_08014C7C: + .4byte _08014F04 + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0C + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014EC4 + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014E60 + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014E54 + .4byte _08014DC8 + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014DDC + .4byte _08014E10 + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014E24 + .4byte _08014F0E + .4byte _08014E84 +_08014DC8: + adds r5, 0x1 + ldrb r0, [r5] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 4 + ldr r0, _08014DD8 + adds r4, r1, r0 + b _08014F0C + .align 2, 0 +_08014DD8: .4byte gUnknown_202CF58 +_08014DDC: + adds r5, 0x1 + ldrb r0, [r5] + cmp r0, 0x6D + bne _08014DFC + bl sub_808D3BC + adds r1, r0, 0 + ldr r4, _08014DF8 + adds r0, r4, 0 + movs r2, 0 + bl PrintColoredPokeNameToBuffer + b _08014F0E + .align 2, 0 +_08014DF8: .4byte gUnknown_202EB80 +_08014DFC: + ldrb r0, [r5] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 4 + ldr r0, _08014E0C + adds r4, r1, r0 + b _08014F0C + .align 2, 0 +_08014E0C: .4byte gUnknown_202D098 +_08014E10: + adds r5, 0x1 + ldrb r0, [r5] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 4 + ldr r0, _08014E20 + adds r4, r1, r0 + b _08014F0C + .align 2, 0 +_08014E20: .4byte gFileCache + 0x110 +_08014E24: + adds r5, 0x1 + movs r0, 0 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _08014E40 + ldr r0, _08014E3C + bl sub_80920D8 + b _08014E48 + .align 2, 0 +_08014E3C: .4byte gTeamName +_08014E40: + ldr r0, _08014E4C + ldr r1, _08014E50 + bl strcpy +_08014E48: + ldr r4, _08014E4C + b _08014F0E + .align 2, 0 +_08014E4C: .4byte gTeamName +_08014E50: .4byte gUnknown_80D48F8 +_08014E54: + adds r5, 0x1 + ldr r4, _08014E5C + b _08014F0E + .align 2, 0 +_08014E5C: .4byte gUnknown_202E628 +_08014E60: + adds r5, 0x1 + ldr r1, _08014E7C + ldr r2, _08014E80 + ldrb r0, [r5] + subs r0, 0x30 + lsls r0, 2 + adds r0, r2 + adds r5, 0x1 + ldr r2, [r0] + mov r0, sp + bl sprintfStatic +_08014E78: + mov r4, sp + b _08014F0E + .align 2, 0 +_08014E7C: .4byte gUnknown_80D4900 +_08014E80: .4byte gUnknown_202DE30 +_08014E84: + adds r5, 0x1 + ldr r1, _08014EBC + ldrb r0, [r5] + subs r0, 0x30 + lsls r0, 2 + adds r0, r1 + ldr r3, [r0] + adds r5, 0x1 + ldr r1, _08014EC0 + ldrb r2, [r5] + subs r2, 0x30 + adds r5, 0x1 + mov r0, sp + bl sprintfStatic + mov r0, sp + ldrb r1, [r0] + cmp r1, 0 + beq _08014E78 + movs r2, 0x60 +_08014EAC: + cmp r1, 0x20 + bne _08014EB2 + strb r2, [r0] +_08014EB2: + adds r0, 0x1 + ldrb r1, [r0] + cmp r1, 0 + bne _08014EAC + b _08014E78 + .align 2, 0 +_08014EBC: .4byte gUnknown_202DE30 +_08014EC0: .4byte gUnknown_80D4904 +_08014EC4: + adds r5, 0x1 + ldr r1, _08014EFC + ldrb r0, [r5] + subs r0, 0x30 + lsls r0, 2 + adds r0, r1 + ldr r3, [r0] + adds r5, 0x1 + ldr r1, _08014F00 + ldrb r2, [r5] + subs r2, 0x30 + adds r5, 0x1 + mov r0, sp + bl sprintfStatic + mov r0, sp + ldrb r1, [r0] + cmp r1, 0 + beq _08014E78 + movs r2, 0x60 +_08014EEC: + cmp r1, 0x20 + bne _08014EF2 + strb r2, [r0] +_08014EF2: + adds r0, 0x1 + ldrb r1, [r0] + cmp r1, 0 + bne _08014EEC + b _08014E78 + .align 2, 0 +_08014EFC: .4byte gUnknown_202DE30 +_08014F00: .4byte gUnknown_80D4908 +_08014F04: + ldr r4, _08014F08 + b _08014F0E + .align 2, 0 +_08014F08: .4byte gUnknown_80D4910 +_08014F0C: + adds r5, 0x1 +_08014F0E: + cmp r4, 0 + beq _08014F62 + add r1, sp, 0x3C + adds r0, r4, 0 + adds r2, r7, 0 + mov r3, r8 + bl sub_8014FA8 + lsls r0, 24 + cmp r0, 0 + bne _08014F7E + b _08014F62 +_08014F26: + adds r0, r6, 0 + adds r0, 0x7F + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _08014F36 + cmp r6, 0x87 + bne _08014F54 +_08014F36: + ldr r0, [sp, 0x3C] + cmp r0, r7 + bcs _08014F42 + strb r6, [r0] + adds r0, 0x1 + str r0, [sp, 0x3C] +_08014F42: + adds r5, 0x1 + ldrb r1, [r5] + cmp r1, 0 + beq _08014F7E + ldr r0, [sp, 0x3C] + cmp r0, r7 + bcs _08014F60 + strb r1, [r0] + b _08014F5C +_08014F54: + ldr r0, [sp, 0x3C] + cmp r0, r7 + bcs _08014F60 + strb r6, [r0] +_08014F5C: + adds r0, 0x1 + str r0, [sp, 0x3C] +_08014F60: + adds r5, 0x1 +_08014F62: + ldrb r6, [r5] + cmp r6, 0 + beq _08014F7E + cmp r6, 0xD + beq _08014F72 + cmp r6, 0xA + beq _08014F72 + b _08014BEA +_08014F72: + movs r0, 0x80 + mov r1, r8 + ands r0, r1 + cmp r0, 0 + bne _08014F7E + b _08014BE6 +_08014F7E: + ldr r0, [sp, 0x3C] + movs r1, 0 + strb r1, [r0] + ldrb r0, [r5] + cmp r0, 0xD + bne _08014F8C + adds r5, 0x1 +_08014F8C: + ldrb r0, [r5] + cmp r0, 0xA + bne _08014F94 + adds r5, 0x1 +_08014F94: + adds r0, r5, 0 + add sp, 0x40 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end xxx_format_string + + thumb_func_start sub_8014FA8 +sub_8014FA8: + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r3, 16 + lsrs r3, 16 + ldr r2, [r5] + ldrb r1, [r4] + cmp r1, 0 + beq _08014FE4 + movs r0, 0x80 + ands r0, r3 + lsls r0, 16 + lsrs r3, r0, 16 +_08014FC4: + cmp r3, 0 + beq _08014FD2 + cmp r1, 0xD + bne _08014FD2 + str r2, [r5] + movs r0, 0x1 + b _08014FE8 +_08014FD2: + cmp r2, r6 + bcs _08014FDC + ldrb r0, [r4] + strb r0, [r2] + adds r2, 0x1 +_08014FDC: + adds r4, 0x1 + ldrb r1, [r4] + cmp r1, 0 + bne _08014FC4 +_08014FE4: + str r2, [r5] + movs r0, 0 +_08014FE8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8014FA8 + + thumb_func_start xxx_format_and_draw +xxx_format_and_draw: + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x1F8 + adds r5, r0, 0 + adds r6, r1, 0 + adds r0, r2, 0 + mov r8, r3 + ldr r4, [sp, 0x20C] + add r2, sp, 0x1F8 + add r1, sp, 0x4 + movs r3, 0 + bl xxx_format_string + ldr r1, _08015030 + add r1, sp + movs r0, 0 + strb r0, [r1] + str r4, [sp] + adds r0, r5, 0 + adds r1, r6, 0 + add r2, sp, 0x4 + mov r3, r8 + bl xxx_call_draw_string + add sp, 0x1F8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08015030: .4byte 0x000001f7 + thumb_func_end xxx_format_and_draw + + thumb_func_start sub_8015034 +sub_8015034: + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x1FC + adds r6, r0, 0 + mov r8, r1 + adds r0, r2, 0 + mov r9, r3 + ldr r4, [sp, 0x214] + ldr r5, [sp, 0x218] + add r2, sp, 0x1FC + add r1, sp, 0x8 + movs r3, 0 + bl xxx_format_string + ldr r1, _0801507C + add r1, sp + movs r0, 0 + strb r0, [r1] + str r4, [sp] + str r5, [sp, 0x4] + adds r0, r6, 0 + mov r1, r8 + add r2, sp, 0x8 + mov r3, r9 + bl sub_8008F8C + add sp, 0x1FC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0801507C: .4byte 0x000001fb + thumb_func_end sub_8015034 + + thumb_func_start sub_8015080 +sub_8015080: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r8, r0 + mov r9, r1 + ldr r4, _08015158 + ldr r0, _0801515C + movs r1, 0x8 + bl MemoryAlloc + str r0, [r4] + movs r1, 0 + str r1, [r0] + mov r12, r4 + ldr r0, _08015160 + mov r10, r0 + mov r5, r12 + movs r3, 0 + movs r2, 0x3 +_080150AC: + mov r4, r12 + ldr r1, [r4] + adds r1, r3 + adds r1, 0x54 + mov r0, r10 + ldm r0!, {r4,r6,r7} + stm r1!, {r4,r6,r7} + ldm r0!, {r4,r6,r7} + stm r1!, {r4,r6,r7} + adds r3, 0x18 + subs r2, 0x1 + cmp r2, 0 + bge _080150AC + movs r4, 0 + ldr r1, [r5] + adds r1, 0x54 + ldr r0, _08015164 + ldm r0!, {r2,r6,r7} + stm r1!, {r2,r6,r7} + ldm r0!, {r3,r6,r7} + stm r1!, {r3,r6,r7} + ldr r1, [r5] + adds r1, 0x84 + ldr r0, _08015168 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldr r0, [r5] + adds r0, 0x84 + mov r1, r9 + bl sub_8012CAC + bl ResetUnusedInputStruct + ldr r0, [r5] + adds r0, 0x54 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + movs r0, 0 + bl sub_80073B8 + ldr r2, [r5] + adds r1, r2, 0 + adds r1, 0xB4 + ldr r6, _0801515C + adds r2, r6 + mov r0, r8 + movs r3, 0 + bl xxx_format_string + ldr r2, [r5] + adds r2, 0xB4 + str r4, [sp] + movs r0, 0x4 + movs r1, 0x4 + movs r3, 0 + bl xxx_call_draw_string + movs r0, 0 + bl sub_80073E0 + ldr r0, [r5] + adds r0, 0x4 + movs r1, 0x1 + negs r1, r1 + str r1, [sp] + movs r1, 0x2 + str r1, [sp, 0x4] + mov r1, r9 + movs r2, 0 + movs r3, 0 + bl sub_8012D60 + movs r0, 0x1 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08015158: .4byte gUnknown_203B1F8 +_0801515C: .4byte 0x000004b4 +_08015160: .4byte gUnknown_80DAF70 +_08015164: .4byte gUnknown_80DAF88 +_08015168: .4byte gUnknown_80DAFA0 + thumb_func_end sub_8015080 + + thumb_func_start sub_801516C +sub_801516C: + push {r4,lr} + ldr r4, _08015184 + ldr r0, [r4] + adds r0, 0x4 + bl sub_8012FD8 + lsls r0, 24 + cmp r0, 0 + beq _08015188 + movs r0, 0 + b _08015192 + .align 2, 0 +_08015184: .4byte gUnknown_203B1F8 +_08015188: + ldr r1, [r4] + adds r0, r1, 0x4 + bl sub_8013114 + movs r0, 0x3 +_08015192: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_801516C + + thumb_func_start sub_8015198 +sub_8015198: + ldr r0, _080151A0 + ldr r0, [r0] + ldr r0, [r0] + bx lr + .align 2, 0 +_080151A0: .4byte gUnknown_203B1F8 + thumb_func_end sub_8015198 + + thumb_func_start sub_80151A4 +sub_80151A4: + push {r4,lr} + ldr r4, _080151BC + ldr r0, [r4] + cmp r0, 0 + beq _080151B6 + bl MemoryFree + movs r0, 0 + str r0, [r4] +_080151B6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080151BC: .4byte gUnknown_203B1F8 + thumb_func_end sub_80151A4 + + thumb_func_start sub_80151C0 +sub_80151C0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r5, r0, 0 + adds r6, r1, 0 + ldr r4, _080151FC + movs r0, 0xCC + lsls r0, 1 + movs r1, 0x8 + bl MemoryAlloc + str r0, [r4] + str r5, [r0] + movs r1, 0 + strb r1, [r0, 0x19] + ldr r0, [r4] + strb r1, [r0, 0x18] + ldr r0, [r4] + strb r1, [r0, 0x4] + ldr r0, [r4] + ldr r0, [r0] + cmp r0, 0x5 + bhi _0801524C + lsls r0, 2 + ldr r1, _08015200 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080151FC: .4byte gUnknown_203B1FC +_08015200: .4byte _08015204 + .align 2, 0 +_08015204: + .4byte _0801524C + .4byte _0801524C + .4byte _0801524C + .4byte _0801524C + .4byte _0801521C + .4byte _08015234 +_0801521C: + ldr r1, _08015230 + ldr r2, [r1] + movs r0, 0x9 + strb r0, [r2, 0x1A] + ldr r2, [r1] + movs r0, 0x1 + strb r0, [r2, 0x4] + ldr r2, [r1] + movs r0, 0x36 + b _08015258 + .align 2, 0 +_08015230: .4byte gUnknown_203B1FC +_08015234: + ldr r1, _08015248 + ldr r2, [r1] + movs r0, 0x9 + strb r0, [r2, 0x1A] + ldr r2, [r1] + movs r0, 0x1 + strb r0, [r2, 0x4] + ldr r2, [r1] + movs r0, 0x18 + b _08015258 + .align 2, 0 +_08015248: .4byte gUnknown_203B1FC +_0801524C: + ldr r1, _08015374 + ldr r2, [r1] + movs r0, 0x6 + strb r0, [r2, 0x1A] + ldr r2, [r1] + movs r0, 0xA +_08015258: + strb r0, [r2, 0x1B] + mov r8, r1 + mov r0, r8 + ldr r2, [r0] + movs r1, 0x9A + lsls r1, 1 + adds r0, r2, r1 + str r6, [r0] + adds r1, r2, 0 + adds r1, 0xF8 + adds r0, r2, 0 + adds r0, 0xFC + str r0, [r1] + movs r2, 0 + mov r1, r8 + movs r3, 0 +_08015278: + ldr r0, [r1] + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r2 + strb r3, [r0] + adds r2, 0x1 + cmp r2, 0x35 + ble _08015278 + ldr r5, _08015374 + ldr r2, [r5] + adds r0, r2, 0 + adds r0, 0xF8 + ldr r0, [r0] + movs r3, 0x9A + lsls r3, 1 + adds r1, r2, r3 + ldr r1, [r1] + ldrb r2, [r2, 0x1B] + bl MemoryCopy8 + movs r2, 0 + ldr r0, [r5] + ldrb r3, [r0, 0x1B] + cmp r2, r3 + bge _080152EA + adds r1, r0, 0 + adds r1, 0xF8 + ldr r0, [r1] + ldrb r0, [r0] + mov r8, r5 + cmp r0, 0 + beq _080152C8 +_080152B8: + adds r2, 0x1 + cmp r2, r3 + bge _080152EA + ldr r0, [r1] + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _080152B8 +_080152C8: + mov r4, r8 + ldr r0, [r4] + ldrb r0, [r0, 0x1B] + cmp r2, r0 + bge _080152EA + mov r1, r8 + movs r3, 0 +_080152D6: + ldr r0, [r1] + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r2 + strb r3, [r0] + adds r2, 0x1 + ldr r0, [r1] + ldrb r0, [r0, 0x1B] + cmp r2, r0 + blt _080152D6 +_080152EA: + bl sub_8015F44 + ldr r2, _08015374 + ldr r1, [r2] + strb r0, [r1, 0x1C] + ldr r1, [r2] + ldrb r0, [r1, 0x1C] + ldrb r5, [r1, 0x1B] + cmp r0, r5 + bne _08015302 + subs r0, 0x1 + strb r0, [r1, 0x1C] +_08015302: + movs r6, 0x1 + mov r12, r6 + ldr r6, [r2] + adds r5, r6, 0x6 + ldrh r1, [r6, 0x6] + ldr r0, _08015378 + ands r0, r1 + ldr r1, _0801537C + ands r0, r1 + ldr r2, _08015380 + ands r0, r2 + ldr r1, _08015384 + ands r0, r1 + ldr r1, _08015388 + ands r0, r1 + strh r0, [r6, 0x6] + ldrh r0, [r5, 0x4] + adds r3, r2, 0 + ands r3, r0 + movs r1, 0xF + movs r2, 0xF0 + lsls r2, 8 + ldr r0, _0801538C + ands r3, r0 + orrs r3, r2 + strh r3, [r5, 0x4] + ldrh r0, [r5, 0x2] + movs r4, 0xFE + lsls r4, 8 + ands r4, r0 + movs r0, 0xF0 + orrs r4, r0 + strh r4, [r5, 0x2] + movs r2, 0xF0 + lsls r2, 4 + ldrh r0, [r5, 0x6] + ands r1, r0 + movs r7, 0 + orrs r1, r2 + strh r1, [r5, 0x6] + ldrb r0, [r6, 0x4] + cmp r0, 0 + beq _0801539C + ldr r0, _08015390 + ands r4, r0 + ldr r1, _08015394 + movs r0, 0xFC + lsls r0, 8 + ands r3, r0 + orrs r3, r1 + strh r3, [r5, 0x4] + ldr r0, _08015398 + ands r4, r0 + strh r4, [r5, 0x2] + mov r7, r12 + b _080153BE + .align 2, 0 +_08015374: .4byte gUnknown_203B1FC +_08015378: .4byte 0x0000feff +_0801537C: .4byte 0x0000fdff +_08015380: .4byte 0x0000f3ff +_08015384: .4byte 0x0000efff +_08015388: .4byte 0x0000dfff +_0801538C: .4byte 0x00000fff +_08015390: .4byte 0x0000c1ff +_08015394: .4byte 0x000003f6 +_08015398: .4byte 0x00003fff +_0801539C: + movs r1, 0x80 + lsls r1, 6 + ldr r0, _08015468 + ands r4, r0 + orrs r4, r1 + orrs r4, r7 + movs r1, 0xFC + lsls r1, 2 + movs r0, 0xFC + lsls r0, 8 + ands r3, r0 + orrs r3, r1 + strh r3, [r5, 0x4] + ldr r0, _0801546C + ands r4, r0 + strh r4, [r5, 0x2] + mov r1, r12 +_080153BE: + movs r2, 0x80 + lsls r2, 7 + ldrh r1, [r6, 0x6] + ands r0, r1 + orrs r0, r2 + strh r0, [r6, 0x6] + ldr r5, _08015470 + ldr r1, [r5] + movs r0, 0x4 + strb r0, [r1, 0x16] + ldr r4, [r5] + adds r6, r4, 0 + adds r6, 0xE + ldrh r1, [r4, 0xE] + ldr r0, _08015474 + ands r0, r1 + ldr r1, _08015478 + ands r0, r1 + ldr r3, _0801547C + ands r0, r3 + ldr r1, _08015480 + ands r0, r1 + ldr r1, _08015484 + ands r0, r1 + ldr r1, _0801546C + ands r0, r1 + strh r0, [r4, 0xE] + movs r2, 0xFD + lsls r2, 2 + ldrh r1, [r6, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r1 + orrs r0, r2 + ands r0, r3 + movs r2, 0xF + movs r3, 0xF0 + lsls r3, 8 + ldr r1, _08015488 + ands r0, r1 + orrs r0, r3 + strh r0, [r6, 0x4] + movs r0, 0xF0 + strh r0, [r6, 0x2] + subs r1, 0xFF + ldrh r0, [r6, 0x6] + ands r2, r0 + movs r0, 0 + orrs r2, r1 + strh r2, [r6, 0x6] + strb r0, [r4, 0x17] + mov r8, r5 + ldr r2, _0801548C + mov r10, r2 + mov r12, r8 + movs r3, 0x9C + lsls r3, 1 + mov r9, r3 + ldr r4, _08015490 + movs r3, 0 + movs r2, 0x3 +_08015438: + mov r5, r12 + ldr r1, [r5] + adds r1, r3 + add r1, r9 + adds r0, r4, 0 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + adds r3, 0x18 + subs r2, 0x1 + cmp r2, 0 + bge _08015438 + mov r6, r8 + ldr r1, [r6] + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _08015498 + movs r7, 0xA8 + lsls r7, 1 + adds r1, r7 + ldr r0, _08015494 + b _080154A0 + .align 2, 0 +_08015468: .4byte 0x0000c1ff +_0801546C: .4byte 0x00003fff +_08015470: .4byte gUnknown_203B1FC +_08015474: .4byte 0x0000feff +_08015478: .4byte 0x0000fdff +_0801547C: .4byte 0x0000f3ff +_08015480: .4byte 0x0000efff +_08015484: .4byte 0x0000dfff +_08015488: .4byte 0x00000fff +_0801548C: .4byte gUnknown_80DB550 +_08015490: .4byte gUnknown_80DB538 +_08015494: .4byte gUnknown_80DB580 +_08015498: + movs r0, 0xA8 + lsls r0, 1 + adds r1, r0 + ldr r0, _080154EC +_080154A0: + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + mov r0, r8 + ldr r1, [r0] + movs r4, 0x9C + lsls r4, 1 + adds r1, r4 + mov r0, r10 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r6,r7} + stm r1!, {r2,r6,r7} + bl ResetUnusedInputStruct + mov r3, r8 + ldr r0, [r3] + adds r0, r4 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + movs r0, 0x1 + bl sub_8015A08 + bl sub_8015C1C + bl sub_8015F84 + movs r0, 0x1 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080154EC: .4byte gUnknown_80DB568 + thumb_func_end sub_80151C0 + + thumb_func_start sub_80154F0 +sub_80154F0: + push {r4,r5,lr} + ldr r4, _08015558 + ldr r1, [r4] + ldrb r0, [r1, 0x16] + adds r0, 0x1 + strb r0, [r1, 0x16] + bl sub_80157D8 + ldr r2, [r4] + ldrb r1, [r2, 0x16] + movs r5, 0x8 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _0801551C + adds r0, r2, 0x6 + movs r1, 0x80 + lsls r1, 1 + movs r2, 0 + movs r3, 0 + bl AddSprite +_0801551C: + ldr r1, [r4] + ldrb r0, [r1, 0x17] + adds r0, 0x1 + strb r0, [r1, 0x17] + bl sub_80158BC + ldr r2, [r4] + ldrb r1, [r2, 0x17] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _08015544 + adds r0, r2, 0 + adds r0, 0xE + movs r1, 0x80 + lsls r1, 1 + movs r2, 0 + movs r3, 0 + bl AddSprite +_08015544: + bl sub_8012AE8 + subs r0, 0x1 + cmp r0, 0x5 + bhi _080155E2 + lsls r0, 2 + ldr r1, _0801555C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08015558: .4byte gUnknown_203B1FC +_0801555C: .4byte _08015560 + .align 2, 0 +_08015560: + .4byte _080155C0 + .4byte _080155C6 + .4byte _080155E2 + .4byte _080155D4 + .4byte _08015578 + .4byte _0801558C +_08015578: + ldr r0, _08015588 + ldr r1, [r0] + ldrb r0, [r1, 0x1C] + cmp r0, 0 + beq _080155B8 + subs r0, 0x1 + b _080155A8 + .align 2, 0 +_08015588: .4byte gUnknown_203B1FC +_0801558C: + ldr r5, _080155B4 + ldr r0, [r5] + ldrb r4, [r0, 0x1C] + ldrb r0, [r0, 0x1B] + subs r0, 0x1 + cmp r4, r0 + beq _080155B8 + bl sub_8015F44 + cmp r4, r0 + bge _080155B8 + ldr r1, [r5] + ldrb r0, [r1, 0x1C] + adds r0, 0x1 +_080155A8: + strb r0, [r1, 0x1C] + movs r0, 0x3 + bl PlayMenuSoundEffect + b _080155E2 + .align 2, 0 +_080155B4: .4byte gUnknown_203B1FC +_080155B8: + movs r0, 0x2 + bl PlayMenuSoundEffect + b _080155E2 +_080155C0: + bl sub_801560C + b _080155E4 +_080155C6: + bl sub_8015748 + lsls r0, 24 + cmp r0, 0 + beq _080155E2 + movs r0, 0x2 + b _080155E4 +_080155D4: + movs r0, 0x3 + bl PlayMenuSoundEffect + ldr r0, _080155EC + ldr r1, [r0] + movs r0, 0x5 + strb r0, [r1, 0x1A] +_080155E2: + movs r0, 0 +_080155E4: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080155EC: .4byte gUnknown_203B1FC + thumb_func_end sub_80154F0 + + thumb_func_start sub_80155F0 +sub_80155F0: + push {r4,lr} + ldr r4, _08015608 + ldr r0, [r4] + cmp r0, 0 + beq _08015602 + bl MemoryFree + movs r0, 0 + str r0, [r4] +_08015602: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08015608: .4byte gUnknown_203B1FC + thumb_func_end sub_80155F0 + + thumb_func_start sub_801560C +sub_801560C: + push {r4-r6,lr} + ldr r3, _08015640 + ldr r4, _08015644 + ldr r5, [r4] + ldrb r0, [r5, 0x1A] + lsls r1, r0, 1 + adds r1, r0 + ldrb r2, [r5, 0x19] + lsls r0, r2, 8 + subs r0, r2 + adds r0, r1 + lsls r0, 2 + adds r3, 0x8 + adds r0, r3 + ldr r6, [r0] + movs r0, 0x83 + lsls r0, 1 + cmp r6, r0 + beq _0801567A + cmp r6, r0 + bgt _08015648 + subs r0, 0x1 + cmp r6, r0 + beq _0801566C + b _080156BC + .align 2, 0 +_08015640: .4byte gUnknown_80DB0F8 +_08015644: .4byte gUnknown_203B1FC +_08015648: + ldr r0, _08015668 + cmp r6, r0 + bne _080156BC + movs r1, 0 + ldrb r0, [r5, 0x18] + cmp r0, 0 + bne _08015658 + movs r1, 0x1 +_08015658: + strb r1, [r5, 0x18] + movs r0, 0x4 + bl PlayMenuSoundEffect + movs r0, 0 + bl sub_8015A08 + b _0801573E + .align 2, 0 +_08015668: .4byte 0x00000107 +_0801566C: + bl sub_8015748 + lsls r0, 24 + cmp r0, 0 + beq _0801573E + movs r0, 0x2 + b _08015740 +_0801567A: + bl sub_8015F44 + cmp r0, 0 + beq _080156D4 + ldr r0, [r4] + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _08015696 + bl sub_8015F44 + ldr r1, [r4] + ldrb r1, [r1, 0x1B] + cmp r0, r1 + bne _080156D4 +_08015696: + movs r0, 0 + bl PlayMenuSoundEffect + ldr r0, _080156B8 + ldr r2, [r0] + movs r1, 0x9A + lsls r1, 1 + adds r0, r2, r1 + ldr r0, [r0] + adds r1, r2, 0 + adds r1, 0xF8 + ldr r1, [r1] + ldrb r2, [r2, 0x1B] + bl MemoryCopy8 + movs r0, 0x3 + b _08015740 + .align 2, 0 +_080156B8: .4byte gUnknown_203B1FC +_080156BC: + ldr r0, [r4] + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _080156DC + lsls r0, r6, 24 + lsrs r0, 24 + bl sub_803D0F0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _080156DC +_080156D4: + movs r0, 0x2 + bl PlayMenuSoundEffect + b _0801573E +_080156DC: + ldr r0, _08015728 + ldr r3, [r0] + ldrb r1, [r3, 0x18] + adds r4, r0, 0 + cmp r1, 0x1 + bne _0801570A + ldrb r0, [r3, 0x1B] + subs r2, r0, 0x2 + ldrb r3, [r3, 0x1C] + cmp r2, r3 + blt _0801570A + adds r3, r4, 0 +_080156F4: + ldr r0, [r3] + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r2 + ldrb r1, [r0] + strb r1, [r0, 0x1] + subs r2, 0x1 + ldr r0, [r3] + ldrb r0, [r0, 0x1C] + cmp r2, r0 + bge _080156F4 +_0801570A: + ldr r0, [r4] + ldrb r1, [r0, 0x1C] + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r1 + strb r6, [r0] + ldr r1, [r4] + ldrb r2, [r1, 0x1C] + ldrb r0, [r1, 0x1B] + subs r0, 0x1 + cmp r2, r0 + bge _0801572C + adds r0, r2, 0x1 + strb r0, [r1, 0x1C] + b _08015730 + .align 2, 0 +_08015728: .4byte gUnknown_203B1FC +_0801572C: + movs r0, 0x5 + strb r0, [r1, 0x1A] +_08015730: + movs r0, 0 + bl PlayMenuSoundEffect + bl sub_8015C1C + bl sub_8015F84 +_0801573E: + movs r0, 0 +_08015740: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_801560C + + thumb_func_start sub_8015748 +sub_8015748: + push {r4,lr} + ldr r4, _0801576C + ldr r2, [r4] + ldrb r1, [r2, 0x1C] + adds r0, r2, 0 + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r1 + ldrb r3, [r0] + cmp r3, 0 + bne _08015790 + cmp r1, 0 + bne _08015770 + movs r0, 0x2 + bl PlayMenuSoundEffect + movs r0, 0x1 + b _080157CE + .align 2, 0 +_0801576C: .4byte gUnknown_203B1FC +_08015770: + subs r0, r1, 0x1 + strb r0, [r2, 0x1C] + ldr r0, [r4] + ldrb r1, [r0, 0x1C] + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r1 + strb r3, [r0] + movs r0, 0x1 + bl PlayMenuSoundEffect + bl sub_8015C1C + bl sub_8015F84 + b _080157CC +_08015790: + bl sub_8015F44 + subs r3, r0, 0x1 + ldr r0, [r4] + ldrb r2, [r0, 0x1C] + cmp r2, r3 + bge _080157B0 +_0801579E: + ldr r0, [r4] + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r2 + ldrb r1, [r0, 0x1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, r3 + blt _0801579E +_080157B0: + ldr r0, _080157D4 + ldr r0, [r0] + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r3 + movs r1, 0 + strb r1, [r0] + movs r0, 0x1 + bl PlayMenuSoundEffect + bl sub_8015C1C + bl sub_8015F84 +_080157CC: + movs r0, 0 +_080157CE: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080157D4: .4byte gUnknown_203B1FC + thumb_func_end sub_8015748 + + thumb_func_start sub_80157D8 +sub_80157D8: + push {r4,r5,lr} + ldr r5, _080157EC + ldr r0, _080157F0 + ldr r0, [r0] + mov r12, r0 + ldr r0, [r0] + cmp r0, 0x4 + bne _080157F8 + ldr r3, _080157F4 + b _080157FE + .align 2, 0 +_080157EC: .4byte gUnknown_20273B8 +_080157F0: .4byte gUnknown_203B1FC +_080157F4: .4byte gUnknown_80DAFC0 +_080157F8: + cmp r0, 0x5 + bne _0801585C + ldr r3, _08015850 +_080157FE: + mov r1, r12 + ldrb r0, [r1, 0x1C] + lsls r0, 2 + adds r0, r3 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r2, 0 + ldrsh r0, [r5, r2] + lsls r0, 3 + adds r1, r0 + ldr r0, _08015854 + ands r1, r0 + mov r4, r12 + adds r4, 0x6 + ldrh r2, [r4, 0x2] + movs r0, 0xFE + lsls r0, 8 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x2] + mov r1, r12 + ldrb r0, [r1, 0x1C] + lsls r0, 2 + adds r0, r3 + movs r2, 0x2 + ldrsh r1, [r0, r2] + movs r3, 0x2 + ldrsh r0, [r5, r3] + lsls r0, 3 + adds r1, r0 + adds r1, 0x5 + ldr r0, _08015858 + ands r1, r0 + lsls r1, 4 + ldrh r2, [r4, 0x6] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x6] + b _080158B0 + .align 2, 0 +_08015850: .4byte gUnknown_80DB098 +_08015854: .4byte 0x000001ff +_08015858: .4byte 0x00000fff +_0801585C: + mov r0, r12 + ldrb r1, [r0, 0x1C] + lsls r1, 1 + mov r2, r12 + adds r2, 0x1E + adds r2, r1 + adds r0, 0x8A + adds r0, r1 + movs r3, 0 + ldrsh r1, [r0, r3] + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + ldrh r2, [r2] + adds r1, r2 + movs r2, 0 + ldrsh r0, [r5, r2] + lsls r0, 3 + adds r0, 0x1E + adds r1, r0 + lsls r1, 23 + lsrs r1, 23 + mov r3, r12 + adds r3, 0x6 + ldrh r2, [r3, 0x2] + movs r0, 0xFE + lsls r0, 8 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x2] + movs r0, 0x2 + ldrsh r1, [r5, r0] + lsls r1, 3 + adds r1, 0x22 + ldr r0, _080158B8 + ands r1, r0 + lsls r1, 4 + ldrh r2, [r3, 0x6] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x6] +_080158B0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080158B8: .4byte 0x00000fff + thumb_func_end sub_80157D8 + + thumb_func_start sub_80158BC +sub_80158BC: + push {r4-r6,lr} + ldr r6, _080158D4 + bl sub_8012AE8 + cmp r0, 0x8 + beq _08015908 + cmp r0, 0x8 + bgt _080158D8 + cmp r0, 0x7 + beq _080158E2 + b _08015980 + .align 2, 0 +_080158D4: .4byte gUnknown_2027370 +_080158D8: + cmp r0, 0x9 + beq _08015930 + cmp r0, 0xA + beq _08015958 + b _08015980 +_080158E2: + ldr r4, _08015900 + ldr r3, _08015904 + ldr r2, [r3] + ldrb r0, [r2, 0x1A] + lsls r1, r0, 1 + adds r1, r0 + ldrb r2, [r2, 0x19] + lsls r0, r2, 8 + subs r0, r2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0] + adds r5, r3, 0 + b _08015988 + .align 2, 0 +_08015900: .4byte gUnknown_80DB0F8 +_08015904: .4byte gUnknown_203B1FC +_08015908: + ldr r4, _08015928 + ldr r3, _0801592C + ldr r2, [r3] + ldrb r0, [r2, 0x1A] + lsls r1, r0, 1 + adds r1, r0 + ldrb r2, [r2, 0x19] + lsls r0, r2, 8 + subs r0, r2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x1] + adds r5, r3, 0 + b _08015988 + .align 2, 0 +_08015928: .4byte gUnknown_80DB0F8 +_0801592C: .4byte gUnknown_203B1FC +_08015930: + ldr r4, _08015950 + ldr r3, _08015954 + ldr r2, [r3] + ldrb r0, [r2, 0x1A] + lsls r1, r0, 1 + adds r1, r0 + ldrb r2, [r2, 0x19] + lsls r0, r2, 8 + subs r0, r2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x2] + adds r5, r3, 0 + b _08015988 + .align 2, 0 +_08015950: .4byte gUnknown_80DB0F8 +_08015954: .4byte gUnknown_203B1FC +_08015958: + ldr r4, _08015978 + ldr r3, _0801597C + ldr r2, [r3] + ldrb r0, [r2, 0x1A] + lsls r1, r0, 1 + adds r1, r0 + ldrb r2, [r2, 0x19] + lsls r0, r2, 8 + subs r0, r2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x3] + adds r5, r3, 0 + b _08015988 + .align 2, 0 +_08015978: .4byte gUnknown_80DB0F8 +_0801597C: .4byte gUnknown_203B1FC +_08015980: + ldr r1, _080159F8 + ldr r0, [r1] + ldrb r0, [r0, 0x1A] + adds r5, r1, 0 +_08015988: + adds r4, r5, 0 + ldr r1, [r4] + ldrb r2, [r1, 0x1A] + cmp r0, r2 + beq _080159A0 + strb r0, [r1, 0x1A] + movs r0, 0x3 + bl PlayMenuSoundEffect + ldr r1, [r4] + movs r0, 0x8 + strb r0, [r1, 0x17] +_080159A0: + ldr r3, _080159FC + ldr r4, [r5] + ldrb r0, [r4, 0x1A] + lsls r1, r0, 1 + adds r1, r0 + ldrb r2, [r4, 0x19] + lsls r0, r2, 8 + subs r0, r2 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + movs r3, 0 + ldrsh r1, [r6, r3] + lsls r1, 3 + ldrb r2, [r0, 0x4] + adds r1, r2 + subs r1, 0x5 + movs r3, 0x2 + ldrsh r2, [r6, r3] + lsls r2, 3 + ldrb r0, [r0, 0x5] + adds r2, r0 + adds r2, 0x1 + ldr r0, _08015A00 + ands r1, r0 + adds r4, 0xE + ldrh r3, [r4, 0x2] + movs r0, 0xFE + lsls r0, 8 + ands r0, r3 + orrs r0, r1 + strh r0, [r4, 0x2] + ldr r0, _08015A04 + ands r2, r0 + lsls r2, 4 + ldrh r1, [r4, 0x6] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strh r0, [r4, 0x6] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080159F8: .4byte gUnknown_203B1FC +_080159FC: .4byte gUnknown_80DB0F8 +_08015A00: .4byte 0x000001ff +_08015A04: .4byte 0x00000fff + thumb_func_end sub_80158BC + + thumb_func_start sub_8015A08 +sub_8015A08: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + movs r0, 0 + bl sub_8008C54 + movs r0, 0 + bl sub_80073B8 + ldr r3, _08015A68 + ldr r2, _08015A6C + ldr r0, [r2] + ldrb r1, [r0, 0x19] + lsls r0, r1, 8 + subs r0, r1 + lsls r0, 2 + adds r1, r3, 0 + adds r1, 0x8 + adds r0, r1 + ldr r4, [r0] + ldr r0, _08015A70 + cmp r4, r0 + bne _08015A3E + b _08015BC0 +_08015A3E: + mov r8, r2 + adds r7, r3, 0 + add r0, sp, 0x14 + mov r10, r0 + movs r6, 0 + mov r9, r6 +_08015A4A: + ldr r0, [r2] + ldrb r1, [r0, 0x19] + lsls r0, r1, 8 + subs r0, r1 + lsls r0, 2 + adds r0, r6, r0 + adds r0, r3 + ldrb r0, [r0, 0x6] + cmp r0, 0x2 + beq _08015AAA + cmp r0, 0x2 + bgt _08015A74 + cmp r0, 0x1 + beq _08015A7A + b _08015A82 + .align 2, 0 +_08015A68: .4byte gUnknown_80DB0F8 +_08015A6C: .4byte gUnknown_203B1FC +_08015A70: .4byte 0x00000109 +_08015A74: + cmp r0, 0x3 + beq _08015A7E + b _08015A82 +_08015A7A: + movs r5, 0x5 + b _08015AAC +_08015A7E: + movs r5, 0x7 + b _08015AAC +_08015A82: + movs r5, 0x7 + mov r1, r8 + ldr r0, [r1] + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _08015AAC + cmp r4, 0xFF + bgt _08015AA4 + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_803D0F0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _08015AAC + b _08015AAA +_08015AA4: + ldr r0, _08015ADC + cmp r4, r0 + bgt _08015AAC +_08015AAA: + movs r5, 0x2 +_08015AAC: + movs r0, 0x84 + lsls r0, 1 + cmp r4, r0 + beq _08015B9E + subs r0, 0x1 + cmp r4, r0 + bne _08015B04 + mov r2, r8 + ldr r0, [r2] + ldrb r2, [r0, 0x18] + cmp r2, 0 + bne _08015AE4 + ldrb r0, [r0, 0x19] + lsls r1, r0, 8 + subs r1, r0 + lsls r1, 2 + adds r1, r6, r1 + adds r1, r7 + ldrb r0, [r1, 0x4] + adds r0, 0x3 + ldrb r1, [r1, 0x5] + str r2, [sp] + ldr r2, _08015AE0 + b _08015B6A + .align 2, 0 +_08015ADC: .4byte 0x00000101 +_08015AE0: .4byte gUnknown_80DB598 +_08015AE4: + ldrb r0, [r0, 0x19] + lsls r1, r0, 8 + subs r1, r0 + lsls r1, 2 + adds r1, r6, r1 + adds r1, r7 + ldrb r0, [r1, 0x4] + adds r0, 0x3 + ldrb r1, [r1, 0x5] + mov r3, r9 + str r3, [sp] + ldr r2, _08015B00 + b _08015B6A + .align 2, 0 +_08015B00: .4byte gUnknown_80DB5A4 +_08015B04: + cmp r4, 0x20 + bne _08015B34 + add r0, sp, 0x4 + ldr r1, _08015B30 + adds r2, r5, 0 + bl sprintfStatic + mov r1, r8 + ldr r0, [r1] + ldrb r0, [r0, 0x19] + lsls r1, r0, 8 + subs r1, r0 + lsls r1, 2 + adds r1, r6, r1 + adds r1, r7 + ldrb r0, [r1, 0x4] + adds r0, 0x1 + ldrb r1, [r1, 0x5] + mov r2, r9 + str r2, [sp] + add r2, sp, 0x4 + b _08015B6A + .align 2, 0 +_08015B30: .4byte gUnknown_80DB5B0 +_08015B34: + cmp r4, 0xFF + ble _08015B7C + ldr r1, _08015B74 + movs r0, 0xFF + ands r4, r0 + lsls r0, r4, 2 + adds r0, r1 + ldr r3, [r0] + mov r0, r10 + ldr r1, _08015B78 + adds r2, r5, 0 + bl sprintfStatic + mov r3, r8 + ldr r0, [r3] + ldrb r0, [r0, 0x19] + lsls r1, r0, 8 + subs r1, r0 + lsls r1, 2 + adds r1, r6, r1 + adds r1, r7 + ldrb r0, [r1, 0x4] + adds r0, 0x3 + ldrb r1, [r1, 0x5] + mov r2, r9 + str r2, [sp] + mov r2, r10 +_08015B6A: + movs r3, 0 + bl xxx_call_draw_string + b _08015B9E + .align 2, 0 +_08015B74: .4byte gUnknown_80DB4F4 +_08015B78: .4byte gUnknown_80DB5B8 +_08015B7C: + mov r3, r8 + ldr r0, [r3] + ldrb r0, [r0, 0x19] + lsls r1, r0, 8 + subs r1, r0 + lsls r1, 2 + adds r1, r6, r1 + adds r1, r7 + ldrb r0, [r1, 0x4] + ldrb r1, [r1, 0x5] + lsls r2, r4, 24 + lsrs r2, 24 + mov r3, r9 + str r3, [sp] + adds r3, r5, 0 + bl sub_8012C60 +_08015B9E: + adds r6, 0xC + ldr r3, _08015C10 + ldr r2, _08015C14 + ldr r0, [r2] + ldrb r1, [r0, 0x19] + lsls r0, r1, 8 + subs r0, r1 + lsls r0, 2 + adds r0, r6, r0 + adds r1, r3, 0 + adds r1, 0x8 + adds r0, r1 + ldr r4, [r0] + ldr r0, _08015C18 + cmp r4, r0 + beq _08015BC0 + b _08015A4A +_08015BC0: + movs r4, 0xE + str r4, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0xE0 + bl sub_800792C + str r4, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0x47 + movs r3, 0xE0 + bl sub_800792C + str r4, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x48 + bl sub_8007A78 + str r4, [sp] + movs r0, 0 + movs r1, 0xDF + movs r2, 0 + movs r3, 0x48 + bl sub_8007A78 + movs r0, 0 + bl sub_80073E0 + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08015C10: .4byte gUnknown_80DB0F8 +_08015C14: .4byte gUnknown_203B1FC +_08015C18: .4byte 0x00000109 + thumb_func_end sub_8015A08 + + thumb_func_start sub_8015C1C +sub_8015C1C: + push {r4,r5,lr} + sub sp, 0x54 + movs r0, 0x1 + bl sub_8008C54 + movs r0, 0x1 + bl sub_80073B8 + ldr r0, _08015C74 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _08015C78 + movs r4, 0xE + str r4, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0xE0 + bl sub_800792C + str r4, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0x37 + movs r3, 0xE0 + bl sub_800792C + str r4, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x38 + bl sub_8007A78 + str r4, [sp] + movs r0, 0x1 + movs r1, 0xDF + movs r2, 0 + movs r3, 0x38 + bl sub_8007A78 + b _08015CB2 + .align 2, 0 +_08015C74: .4byte gUnknown_203B1FC +_08015C78: + movs r4, 0xE + str r4, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0xB0 + bl sub_800792C + str r4, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0x27 + movs r3, 0xB0 + bl sub_800792C + str r4, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x28 + bl sub_8007A78 + str r4, [sp] + movs r0, 0x1 + movs r1, 0xAF + movs r2, 0 + movs r3, 0x28 + bl sub_8007A78 +_08015CB2: + ldr r0, _08015CC8 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0x5 + bhi _08015D50 + lsls r0, 2 + ldr r1, _08015CCC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08015CC8: .4byte gUnknown_203B1FC +_08015CCC: .4byte _08015CD0 + .align 2, 0 +_08015CD0: + .4byte _08015CE8 + .4byte _08015D18 + .4byte _08015CF8 + .4byte _08015D08 + .4byte _08015D28 + .4byte _08015D40 +_08015CE8: + ldr r2, _08015CF4 + movs r0, 0 + str r0, [sp] + movs r0, 0x8 + movs r1, 0x5 + b _08015D32 + .align 2, 0 +_08015CF4: .4byte gUnknown_80DB5C0 +_08015CF8: + ldr r2, _08015D04 + movs r0, 0 + str r0, [sp] + movs r0, 0x8 + movs r1, 0x5 + b _08015D32 + .align 2, 0 +_08015D04: .4byte gUnknown_80DB5D4 +_08015D08: + ldr r2, _08015D14 + movs r0, 0 + str r0, [sp] + movs r0, 0x8 + movs r1, 0x5 + b _08015D32 + .align 2, 0 +_08015D14: .4byte gUnknown_80DB5F8 +_08015D18: + ldr r2, _08015D24 + movs r0, 0 + str r0, [sp] + movs r0, 0x8 + movs r1, 0x5 + b _08015D32 + .align 2, 0 +_08015D24: .4byte gUnknown_80DB61C +_08015D28: + ldr r2, _08015D3C + movs r0, 0 + str r0, [sp] + movs r0, 0x36 + movs r1, 0x2 +_08015D32: + movs r3, 0x1 + bl xxx_call_draw_string + b _08015D50 + .align 2, 0 +_08015D3C: .4byte gUnknown_80DB638 +_08015D40: + ldr r2, _08015D64 + movs r0, 0 + str r0, [sp] + movs r0, 0x30 + movs r1, 0x4 + movs r3, 0x1 + bl xxx_call_draw_string +_08015D50: + ldr r5, _08015D68 + ldr r0, [r5] + ldr r1, [r0] + cmp r1, 0x4 + beq _08015D6C + cmp r1, 0x4 + bcc _08015D88 + cmp r1, 0x5 + beq _08015D7A + b _08015DFE + .align 2, 0 +_08015D64: .4byte gUnknown_80DB638 +_08015D68: .4byte gUnknown_203B1FC +_08015D6C: + adds r0, 0xF8 + ldr r0, [r0] + movs r1, 0x1 + movs r2, 0 + bl sub_8015E10 + b _08015DFE +_08015D7A: + adds r0, 0xF8 + ldr r0, [r0] + movs r1, 0x1 + movs r2, 0 + bl sub_8015EB4 + b _08015DFE +_08015D88: + bl sub_8016028 + adds r3, r0, 0 + movs r0, 0x4 + str r0, [sp] + movs r0, 0x1 + movs r1, 0x26 + movs r2, 0x21 + bl sub_80078A4 + ldr r1, [r5] + adds r0, r1, 0 + adds r0, 0xF8 + ldr r0, [r0] + ldrb r1, [r1, 0x1B] + bl sub_8015FEC + adds r4, r0, 0 + bl sub_8016028 + cmp r4, r0 + ble _08015DC0 + ldr r1, _08015DBC + ldr r0, [r5] + b _08015DD0 + .align 2, 0 +_08015DBC: .4byte gUnknown_80DB654 +_08015DC0: + bl sub_8015F44 + ldr r2, [r5] + ldrb r1, [r2, 0x1B] + cmp r0, r1 + bne _08015DE0 + ldr r1, _08015DDC + adds r0, r2, 0 +_08015DD0: + adds r0, 0xF8 + ldr r2, [r0] + add r0, sp, 0x4 + bl sprintfStatic + b _08015DEE + .align 2, 0 +_08015DDC: .4byte gUnknown_80DB65C +_08015DE0: + ldr r1, _08015E0C + adds r0, r2, 0 + adds r0, 0xF8 + ldr r2, [r0] + add r0, sp, 0x4 + bl sprintfStatic +_08015DEE: + movs r0, 0 + str r0, [sp] + movs r0, 0x26 + movs r1, 0x16 + add r2, sp, 0x4 + movs r3, 0x1 + bl xxx_call_draw_string +_08015DFE: + movs r0, 0x1 + bl sub_80073E0 + add sp, 0x54 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08015E0C: .4byte gUnknown_80DB664 + thumb_func_end sub_8015C1C + + thumb_func_start sub_8015E10 +sub_8015E10: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + mov r8, r0 + adds r7, r1, 0 + lsls r2, 16 + asrs r6, r2, 16 + ldr r5, _08015EB0 + movs r4, 0x35 +_08015E24: + movs r0, 0 + ldrsh r1, [r5, r0] + movs r0, 0x2 + ldrsh r2, [r5, r0] + adds r0, r6, 0 + adds r0, 0xB + adds r2, r0 + movs r0, 0x5 + str r0, [sp] + adds r0, r7, 0 + movs r3, 0xB + bl sub_80078A4 + adds r5, 0x4 + subs r4, 0x1 + cmp r4, 0 + bge _08015E24 + movs r4, 0 + mov r1, r8 + ldrb r0, [r1] + cmp r0, 0 + beq _08015EA4 + mov r5, r8 +_08015E52: + movs r3, 0x7 + cmp r4, 0x4 + ble _08015E7E + movs r3, 0x6 + cmp r4, 0xC + ble _08015E7E + movs r3, 0x7 + cmp r4, 0x11 + ble _08015E7E + cmp r4, 0x16 + ble _08015E7E + movs r3, 0x6 + cmp r4, 0x1E + ble _08015E7E + movs r3, 0x7 + cmp r4, 0x23 + ble _08015E7E + cmp r4, 0x28 + ble _08015E7E + cmp r4, 0x30 + bgt _08015E7E + movs r3, 0x6 +_08015E7E: + ldr r0, _08015EB0 + lsls r1, r4, 2 + adds r1, r0 + movs r2, 0 + ldrsh r0, [r1, r2] + movs r2, 0x2 + ldrsh r1, [r1, r2] + adds r1, r6 + ldrb r2, [r5] + str r7, [sp] + bl sub_8012C60 + adds r5, 0x1 + adds r4, 0x1 + cmp r4, 0x35 + bgt _08015EA4 + ldrb r0, [r5] + cmp r0, 0 + bne _08015E52 +_08015EA4: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08015EB0: .4byte gUnknown_80DAFC0 + thumb_func_end sub_8015E10 + + thumb_func_start sub_8015EB4 +sub_8015EB4: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + mov r8, r0 + adds r7, r1, 0 + lsls r2, 16 + asrs r6, r2, 16 + ldr r5, _08015F40 + movs r4, 0x17 +_08015EC8: + movs r0, 0 + ldrsh r1, [r5, r0] + movs r0, 0x2 + ldrsh r2, [r5, r0] + adds r0, r6, 0 + adds r0, 0xB + adds r2, r0 + movs r0, 0x5 + str r0, [sp] + adds r0, r7, 0 + movs r3, 0xC + bl sub_80078A4 + adds r5, 0x4 + subs r4, 0x1 + cmp r4, 0 + bge _08015EC8 + movs r4, 0 + mov r1, r8 + ldrb r0, [r1] + cmp r0, 0 + beq _08015F34 + mov r5, r8 +_08015EF6: + movs r3, 0x7 + cmp r4, 0x3 + ble _08015F0E + movs r3, 0x6 + cmp r4, 0x7 + ble _08015F0E + movs r3, 0x7 + cmp r4, 0xF + ble _08015F0E + cmp r4, 0x13 + bgt _08015F0E + movs r3, 0x6 +_08015F0E: + ldr r0, _08015F40 + lsls r1, r4, 2 + adds r1, r0 + movs r2, 0 + ldrsh r0, [r1, r2] + movs r2, 0x2 + ldrsh r1, [r1, r2] + adds r1, r6 + ldrb r2, [r5] + str r7, [sp] + bl sub_8012C60 + adds r5, 0x1 + adds r4, 0x1 + cmp r4, 0x17 + bgt _08015F34 + ldrb r0, [r5] + cmp r0, 0 + bne _08015EF6 +_08015F34: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08015F40: .4byte gUnknown_80DB098 + thumb_func_end sub_8015EB4 + + thumb_func_start sub_8015F44 +sub_8015F44: + push {r4,lr} + movs r2, 0 + ldr r0, _08015F78 + ldr r0, [r0] + ldrb r4, [r0, 0x1B] + cmp r2, r4 + bge _08015F7C + adds r3, r0, 0 + adds r3, 0xF8 + ldr r0, [r3] + ldrb r0, [r0] + cmp r0, 0 + beq _08015F7C + movs r2, 0x1 + movs r1, 0x1 +_08015F62: + cmp r1, r4 + bge _08015F7C + ldr r0, [r3] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08015F7C + adds r2, r1, 0x1 + adds r1, r2, 0 + b _08015F62 + .align 2, 0 +_08015F78: .4byte gUnknown_203B1FC +_08015F7C: + adds r0, r2, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8015F44 + + thumb_func_start sub_8015F84 +sub_8015F84: + push {r4-r7,lr} + movs r6, 0 + movs r5, 0 + ldr r3, _08015FBC + ldr r0, [r3] + ldrb r0, [r0, 0x1B] + cmp r5, r0 + bge _08015FE4 + adds r7, r3, 0 +_08015F96: + ldr r1, [r7] + lsls r4, r5, 1 + adds r0, r1, 0 + adds r0, 0x1E + adds r0, r4 + strh r6, [r0] + adds r0, r1, 0 + adds r0, 0xF8 + ldr r0, [r0] + adds r2, r0, r5 + ldrb r0, [r2] + cmp r0, 0 + bne _08015FC0 + adds r0, r1, 0 + adds r0, 0x8A + adds r0, r4 + movs r1, 0x8 + strh r1, [r0] + b _08015FE4 + .align 2, 0 +_08015FBC: .4byte gUnknown_203B1FC +_08015FC0: + ldrb r0, [r2] + bl ReturnIntFromChar2 + bl GetCharacter + ldr r3, [r7] + adds r1, r3, 0 + adds r1, 0x8A + adds r1, r4 + ldrh r2, [r0, 0x6] + strh r2, [r1] + movs r1, 0x6 + ldrsh r0, [r0, r1] + adds r6, r0 + adds r5, 0x1 + ldrb r3, [r3, 0x1B] + cmp r5, r3 + blt _08015F96 +_08015FE4: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8015F84 + + .align 2,0 diff --git a/asm/code_8040094.s b/asm/code_8040094.s index 3af8ed32e..ce9271263 100644 --- a/asm/code_8040094.s +++ b/asm/code_8040094.s @@ -2771,106 +2771,4 @@ _08041692: bx r1 thumb_func_end sub_8041550 - thumb_func_start sub_80416A4 -sub_80416A4: - push {r4,lr} - sub sp, 0x8 - lsls r2, 24 - lsrs r2, 24 - movs r3, 0 - ldrsh r4, [r0, r3] - lsls r3, r4, 1 - adds r3, r4 - lsls r3, 11 - movs r4, 0xC0 - lsls r4, 4 - adds r3, r4 - str r3, [sp] - movs r4, 0x2 - ldrsh r3, [r0, r4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 11 - movs r3, 0x80 - lsls r3, 5 - adds r0, r3 - str r0, [sp, 0x4] - mov r0, sp - bl sub_80416E0 - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80416A4 - - thumb_func_start sub_80416E0 -sub_80416E0: - push {r4,r5,lr} - sub sp, 0x28 - adds r3, r0, 0 - lsls r2, 24 - lsrs r5, r2, 24 - str r1, [sp] - movs r2, 0 - str r2, [sp, 0x4] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x8] - mov r1, sp - ldr r0, [r3] - cmp r0, 0 - bge _08041700 - adds r0, 0xFF -_08041700: - asrs r0, 8 - strh r0, [r1, 0xC] - mov r1, sp - ldr r0, [r3, 0x4] - cmp r0, 0 - bge _0804170E - adds r0, 0xFF -_0804170E: - asrs r0, 8 - strh r0, [r1, 0xE] - str r4, [sp, 0x14] - mov r0, sp - strh r2, [r0, 0x10] - strh r2, [r0, 0x12] - ldr r0, _08041738 - str r0, [sp, 0x18] - add r0, sp, 0x1C - bl sub_8004E8C - mov r0, sp - movs r1, 0 - bl sub_8041764 - adds r4, r0, 0 - cmp r5, 0 - beq _08041758 - movs r5, 0 - b _08041744 - .align 2, 0 -_08041738: .4byte 0x0000ffff -_0804173C: - movs r0, 0x42 - bl sub_803E46C - adds r5, 0x1 -_08041744: - cmp r5, 0x63 - bgt _08041754 - adds r0, r4, 0 - bl sub_800E9A8 - lsls r0, 24 - cmp r0, 0 - bne _0804173C -_08041754: - movs r4, 0x1 - negs r4, r4 -_08041758: - adds r0, r4, 0 - add sp, 0x28 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80416E0 - .align 2,0 diff --git a/asm/code_8044CC8.s b/asm/code_8044CC8.s index f0d1864d9..f169b0a97 100644 --- a/asm/code_8044CC8.s +++ b/asm/code_8044CC8.s @@ -5,516 +5,6 @@ .text - thumb_func_start sub_8044CC8 -sub_8044CC8: - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - ldrb r1, [r2] - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _08044CEC - ldr r0, _08044CE8 - ldrb r1, [r2] - lsls r1, 2 - subs r1, 0x4 - ldr r0, [r0] - adds r0, r1 - b _08044D34 - .align 2, 0 -_08044CE8: .4byte gTeamInventoryRef -_08044CEC: - adds r0, r1, 0 - cmp r0, 0x80 - bne _08044D06 - movs r1, 0x4 - ldrsh r0, [r2, r1] - movs r3, 0x6 - ldrsh r1, [r2, r3] - bl GetTile - ldr r0, [r0, 0x14] - bl GetItemData - b _08044D34 -_08044D06: - cmp r0, 0x81 - bne _08044D0E - ldr r0, [r3, 0x70] - b _08044D32 -_08044D0E: - adds r0, r1, 0 - adds r0, 0x70 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _08044D1E - movs r0, 0 - b _08044D34 -_08044D1E: - ldr r0, _08044D38 - ldr r1, [r0] - ldrb r0, [r2] - subs r0, 0x90 - lsls r0, 2 - ldr r2, _08044D3C - adds r1, r2 - adds r1, r0 - ldr r0, [r1] - ldr r0, [r0, 0x70] -_08044D32: - adds r0, 0x60 -_08044D34: - pop {r1} - bx r1 - .align 2, 0 -_08044D38: .4byte gDungeon -_08044D3C: .4byte 0x0001357c - thumb_func_end sub_8044CC8 - - thumb_func_start sub_8044D40 -sub_8044D40: - push {lr} - lsls r1, 3 - adds r1, 0x4 - adds r2, r0, r1 - ldrb r1, [r2] - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _08044D74 - ldr r1, _08044D70 - ldrb r0, [r2] - lsls r0, 2 - subs r0, 0x4 - ldr r1, [r1] - adds r1, r0 - movs r0, 0 - strb r0, [r1, 0x2] - strb r0, [r1, 0x1] - strb r0, [r1] - bl FillInventoryGaps - b _08044D88 - .align 2, 0 -_08044D70: .4byte gTeamInventoryRef -_08044D74: - lsls r0, r1, 24 - lsrs r0, 24 - cmp r0, 0x80 - beq _08044D80 - movs r0, 0 - b _08044D8A -_08044D80: - adds r0, r2, 0x4 - movs r1, 0x1 - bl sub_80461C8 -_08044D88: - movs r0, 0x1 -_08044D8A: - pop {r1} - bx r1 - thumb_func_end sub_8044D40 - - thumb_func_start sub_8044D90 -sub_8044D90: - push {lr} - ldr r3, [r0, 0x70] - lsls r1, 3 - adds r1, 0x48 - adds r3, r1 - adds r1, r3, 0 - bl sub_8044CC8 - pop {r1} - bx r1 - thumb_func_end sub_8044D90 - - thumb_func_start sub_8044DA4 -sub_8044DA4: - ldr r0, [r0, 0x70] - ldr r2, _08044DC0 - ldr r2, [r2] - lsls r1, 3 - adds r0, r1 - adds r0, 0x48 - ldrb r0, [r0] - lsls r0, 2 - ldr r1, _08044DC4 - adds r2, r1 - adds r2, r0 - ldr r0, [r2] - bx lr - .align 2, 0 -_08044DC0: .4byte gDungeon -_08044DC4: .4byte 0x0001357c - thumb_func_end sub_8044DA4 - - thumb_func_start sub_8044DC8 -sub_8044DC8: - push {r4,lr} - adds r1, r0, 0 - ldrb r0, [r1, 0x2] - cmp r0, 0xE9 - beq _08044DE8 - ldr r4, _08044DE4 - bl GetItemCategory - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - ldrh r0, [r0] - b _08044DEA - .align 2, 0 -_08044DE4: .4byte gUnknown_80F6964 -_08044DE8: - movs r0, 0x35 -_08044DEA: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8044DC8 - - thumb_func_start sub_8044DF0 -sub_8044DF0: - push {r4,lr} - ldr r4, [r0, 0x70] - bl sub_8044D90 - adds r1, r0, 0 - adds r0, r4, 0 - adds r0, 0x48 - ldrb r0, [r0] - cmp r0, 0x80 - bne _08044E10 - adds r0, r4, 0 - adds r0, 0x4C - movs r1, 0x1 - bl sub_80461C8 - b _08044E1C -_08044E10: - movs r0, 0 - strb r0, [r1, 0x2] - strb r0, [r1, 0x1] - strb r0, [r1] - bl FillInventoryGaps -_08044E1C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8044DF0 - - thumb_func_start sub_8044E24 -sub_8044E24: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r6, r1, 0 - adds r7, r2, 0 - bl sub_8044D90 - adds r5, r0, 0 - ldr r0, [r4, 0x70] - mov r8, r0 - ldrb r0, [r5, 0x2] - bl IsHMItem - lsls r0, 24 - cmp r0, 0 - bne _08044EBA - ldrb r0, [r5, 0x2] - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bne _08044EB0 - lsls r1, r6, 3 - mov r2, r8 - adds r0, r2, r1 - adds r0, 0x48 - ldrb r0, [r0] - cmp r0, 0x80 - bne _08044EA4 - ldr r0, [r5] - str r0, [sp] - adds r4, r1, r2 - adds r4, 0x4C - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80461C8 - ldrb r1, [r5, 0x2] - subs r1, 0x7D - lsls r1, 24 - lsrs r1, 16 - ldr r2, _08044E9C - ldr r0, [sp] - ands r0, r2 - orrs r0, r1 - ldr r1, _08044EA0 - ands r0, r1 - movs r1, 0xF8 - lsls r1, 15 - orrs r0, r1 - str r0, [sp] - adds r0, r4, 0 - mov r1, sp - movs r2, 0x1 - bl sub_80460F8 - b _08044EBA - .align 2, 0 -_08044E9C: .4byte 0xffff00ff -_08044EA0: .4byte 0xff00ffff -_08044EA4: - ldrb r0, [r5, 0x2] - subs r0, 0x7D - strb r0, [r5, 0x1] - movs r0, 0x7C - strb r0, [r5, 0x2] - b _08044EBA -_08044EB0: - adds r0, r4, 0 - adds r1, r6, 0 - adds r2, r7, 0 - bl sub_8044DF0 -_08044EBA: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8044E24 - - thumb_func_start sub_8044EC8 -sub_8044EC8: - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _08044EE8 - lsls r0, r5, 2 - adds r0, r1 - ldrh r4, [r0] - cmp r4, 0x26 - bne _08044EF0 - bl sub_8043D10 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08044EF0 - ldr r0, _08044EEC - b _08044F2C - .align 2, 0 -_08044EE8: .4byte gUnknown_202EE44 -_08044EEC: .4byte gUnknown_80F91EC -_08044EF0: - ldr r1, _08044F10 - lsls r0, r4, 3 - adds r4, r0, r1 - ldr r0, [r4] - ldr r1, _08044F14 - bl strcmp - cmp r0, 0 - beq _08044F04 - movs r0, 0x1 -_08044F04: - lsls r0, 24 - cmp r0, 0 - beq _08044F18 - ldr r0, [r4] - b _08044F2E - .align 2, 0 -_08044F10: .4byte gUnknown_80F7C50 -_08044F14: .4byte gUnknown_80F697C -_08044F18: - ldr r4, _08044F34 - ldr r1, _08044F38 - lsls r0, r5, 2 - adds r0, r1 - ldrb r0, [r0, 0x2] - bl GetItemActionType - lsls r0, 3 - adds r4, 0x4 - adds r0, r4 -_08044F2C: - ldr r0, [r0] -_08044F2E: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08044F34: .4byte gActions -_08044F38: .4byte gUnknown_202EE44 - thumb_func_end sub_8044EC8 - - thumb_func_start sub_8044F3C -sub_8044F3C: - push {lr} - adds r1, r0, 0 - cmp r1, 0 - blt _08044F54 - ldr r0, _08044F50 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x3] - b _08044F56 - .align 2, 0 -_08044F50: .4byte gUnknown_202EE44 -_08044F54: - movs r0, 0 -_08044F56: - pop {r1} - bx r1 - thumb_func_end sub_8044F3C - - thumb_func_start sub_8044F5C -sub_8044F5C: - push {r4-r7,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 24 - lsrs r7, r1, 24 - ldr r0, _08044FAC - ldr r2, [r0] - adds r6, r0, 0 - cmp r2, 0x9 - bgt _08044FA4 - movs r3, 0 - ldr r5, _08044FB0 - cmp r3, r2 - bge _08044F8A - adds r1, r2, 0 - adds r2, r5, 0 -_08044F7C: - ldrh r0, [r2] - cmp r0, r4 - beq _08044FA4 - adds r2, 0x4 - adds r3, 0x1 - cmp r3, r1 - blt _08044F7C -_08044F8A: - ldr r0, [r6] - lsls r0, 2 - adds r0, r5 - strh r4, [r0] - strb r7, [r0, 0x2] - ldr r0, [r6] - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - strb r1, [r0, 0x3] - ldr r0, [r6] - adds r0, 0x1 - str r0, [r6] -_08044FA4: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08044FAC: .4byte gUnknown_202EE6C -_08044FB0: .4byte gUnknown_202EE44 - thumb_func_end sub_8044F5C - - thumb_func_start sub_8044FB4 -sub_8044FB4: - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - movs r1, 0 - ldr r0, _08044FD4 - ldr r0, [r0] - cmp r1, r0 - bge _08044FE4 - adds r3, r0, 0 - ldr r2, _08044FD8 -_08044FC8: - ldrh r0, [r2] - cmp r0, r4 - bne _08044FDC - adds r0, r1, 0 - b _08044FE8 - .align 2, 0 -_08044FD4: .4byte gUnknown_202EE6C -_08044FD8: .4byte gUnknown_202EE44 -_08044FDC: - adds r2, 0x4 - adds r1, 0x1 - cmp r1, r3 - blt _08044FC8 -_08044FE4: - movs r0, 0x1 - negs r0, r0 -_08044FE8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8044FB4 - - thumb_func_start sub_8044FF0 -sub_8044FF0: - push {r4,r5,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - ldr r1, _08045010 - ldr r0, [r1] - cmp r2, r0 - bge _08045022 - movs r5, 0 - adds r4, r1, 0 - ldr r1, _08045014 -_08045006: - ldrh r0, [r1] - cmp r0, r3 - bne _08045018 - strb r5, [r1, 0x3] - b _08045022 - .align 2, 0 -_08045010: .4byte gUnknown_202EE6C -_08045014: .4byte gUnknown_202EE44 -_08045018: - adds r1, 0x4 - adds r2, 0x1 - ldr r0, [r4] - cmp r2, r0 - blt _08045006 -_08045022: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8044FF0 - - thumb_func_start IsNotAttacking -IsNotAttacking: - push {r4,lr} - adds r2, r0, 0 - lsls r1, 24 - ldr r0, [r2, 0x70] - adds r4, r0, 0 - adds r4, 0x44 - cmp r1, 0 - beq _08045044 - adds r0, r2, 0 - bl sub_8045888 - lsls r0, 24 - cmp r0, 0 - beq _0804505A -_08045044: - ldrh r0, [r4] - cmp r0, 0 - beq _0804505A - cmp r0, 0x2 - beq _0804505A - cmp r0, 0x1 - beq _0804505A - cmp r0, 0x5 - beq _0804505A - movs r0, 0 - b _0804505C -_0804505A: - movs r0, 0x1 -_0804505C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end IsNotAttacking - thumb_func_start sub_8045064 sub_8045064: push {r4-r7,lr} diff --git a/asm/code_80450F8.s b/asm/code_80450F8.s index fb5d91b2d..ee8f6a686 100644 --- a/asm/code_80450F8.s +++ b/asm/code_80450F8.s @@ -511,7 +511,7 @@ _08045750: adds r2, 0x4 lsls r2, 8 adds r0, r4, 0 - bl sub_8045394 + bl SetEntityPixelPos movs r0, 0 strh r7, [r4, 0x26] adds r1, r4, 0 @@ -570,7 +570,7 @@ sub_80457DC: adds r0, r4, 0 movs r1, 0 movs r2, 0 - bl sub_8045394 + bl SetEntityPixelPos strh r5, [r4, 0x26] adds r4, 0x22 strb r6, [r4] diff --git a/asm/code_8045A00.s b/asm/code_8045A00.s index a2b777c48..c914762d0 100644 --- a/asm/code_8045A00.s +++ b/asm/code_8045A00.s @@ -944,7 +944,7 @@ sub_80464C8: adds r2, 0x4 lsls r2, 8 add r0, sp, 0x4 - bl sub_8045394 + bl SetEntityPixelPos add r0, sp, 0x4 strh r4, [r0, 0x26] str r4, [sp] @@ -1340,7 +1340,7 @@ _08046822: mov r0, r8 adds r1, r4, 0 adds r2, r5, 0 - bl sub_8045394 + bl SetEntityPixelPos movs r0, 0 mov r1, r8 str r0, [r1, 0x1C] @@ -1646,7 +1646,7 @@ _08046A20: lsls r5, 3 add r5, sp str r3, [r5] - bl sub_8045394 + bl SetEntityPixelPos mov r0, r8 strh r0, [r4, 0x26] ldr r4, _08046B30 diff --git a/asm/code_8046CE4.s b/asm/code_8046CE4.s index 2302d6bf2..ee0a84107 100644 --- a/asm/code_8046CE4.s +++ b/asm/code_8046CE4.s @@ -88,7 +88,7 @@ sub_8047190: adds r2, r0 lsls r2, 11 adds r0, r7, 0 - bl sub_8045394 + bl SetEntityPixelPos strh r4, [r7, 0x26] str r4, [sp, 0x224] mov r0, r9 @@ -625,7 +625,7 @@ sub_80475C4: adds r2, 0x4 lsls r2, 8 ldr r0, [sp, 0x1C] - bl sub_8045394 + bl SetEntityPixelPos ldr r3, [sp, 0x1C] strh r4, [r3, 0x26] movs r0, 0x1 @@ -788,7 +788,7 @@ _08047762: str r1, [sp, 0x3C] ldr r0, [sp, 0x1C] adds r1, r3, 0 - bl sub_8045394 + bl SetEntityPixelPos bl IsWaterTileset lsls r0, 24 movs r2, 0 diff --git a/asm/code_805D8C8.s b/asm/code_805D8C8.s index 82ea0d12e..78cfe7f53 100644 --- a/asm/code_805D8C8.s +++ b/asm/code_805D8C8.s @@ -17697,3955 +17697,4 @@ _0806672E: _08066740: .4byte 0x000001a3 thumb_func_end sub_80664FC - thumb_func_start sub_8066744 -sub_8066744: - push {lr} - ldr r1, [r0, 0x70] - adds r1, 0x48 - movs r2, 0x1 - strb r2, [r1] - adds r0, 0x4 - movs r1, 0 - bl sub_8045DB4 - pop {r0} - bx r0 - thumb_func_end sub_8066744 - - thumb_func_start sub_806675C -sub_806675C: - push {r4-r7,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - movs r1, 0 - movs r2, 0xFE - bl sub_8044D90 - adds r4, r0, 0 - movs r3, 0 - ldr r6, _080667C0 -_08066772: - lsls r1, r3, 2 - ldr r0, [r6] - adds r1, r0, r1 - ldrb r2, [r1] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _08066798 - movs r0, 0x10 - ands r0, r2 - cmp r0, 0 - beq _08066798 - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - bne _080667EC - movs r0, 0xEF - ands r0, r2 - strb r0, [r1] -_08066798: - adds r3, 0x1 - cmp r3, 0x13 - ble _08066772 - ldr r0, _080667C4 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r0, _080667C8 - bl PlaySoundEffect - cmp r7, 0 - beq _08066812 - ldrb r1, [r4] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080667D0 - ldr r0, _080667CC - b _080667DE - .align 2, 0 -_080667C0: .4byte gTeamInventoryRef -_080667C4: .4byte gUnknown_202DE58 -_080667C8: .4byte 0x00000133 -_080667CC: .4byte gUnknown_80F8D04 -_080667D0: - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - cmp r0, 0 - bne _08066808 - ldr r0, _080667E8 -_080667DE: - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage - b _08066812 - .align 2, 0 -_080667E8: .4byte gUnknown_80F8CE4 -_080667EC: - ldr r0, _08066800 - bl sub_8045BF8 - ldr r0, _08066804 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage - b _08066838 - .align 2, 0 -_08066800: .4byte gUnknown_202DE58 -_08066804: .4byte gUnknown_80F8C7C -_08066808: - ldr r0, _08066840 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage -_08066812: - ldrb r0, [r4] - movs r1, 0x10 - orrs r1, r0 - strb r1, [r4] - movs r0, 0x8 - ands r1, r0 - cmp r1, 0 - beq _08066838 - cmp r7, 0 - beq _08066838 - ldr r0, _08066844 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r0, _08066848 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage -_08066838: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08066840: .4byte gUnknown_80F8CE8 -_08066844: .4byte gUnknown_202DE58 -_08066848: .4byte gUnknown_80F8BE0 - thumb_func_end sub_806675C - - thumb_func_start sub_806684C -sub_806684C: - push {r4-r6,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - movs r4, 0 -_08066856: - ldr r0, _0806688C - lsls r1, r4, 2 - ldr r0, [r0] - adds r1, r0, r1 - ldrb r2, [r1] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _080668B8 - movs r0, 0x10 - ands r0, r2 - cmp r0, 0 - beq _080668B8 - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _08066898 - ldr r0, _08066890 - bl sub_8045BF8 - ldr r0, _08066894 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage - b _080668BE - .align 2, 0 -_0806688C: .4byte gTeamInventoryRef -_08066890: .4byte gUnknown_202DE58 -_08066894: .4byte gUnknown_80F8C7C -_08066898: - movs r0, 0xEF - ands r0, r2 - strb r0, [r1] - ldr r0, _080668C4 - bl sub_8045BF8 - ldr r0, _080668C8 - bl PlaySoundEffect - cmp r6, 0 - beq _080668B8 - ldr r0, _080668CC - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage -_080668B8: - adds r4, 0x1 - cmp r4, 0x13 - ble _08066856 -_080668BE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080668C4: .4byte gUnknown_202DE58 -_080668C8: .4byte 0x00000133 -_080668CC: .4byte gUnknown_80F8D20 - thumb_func_end sub_806684C - - thumb_func_start sub_80668D0 -sub_80668D0: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - adds r6, r0, 0 - movs r1, 0x1 - bl sub_8044DA4 - mov r8, r0 - ldr r4, [r6, 0x70] - ldr r7, [r0, 0x70] - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x2 - bl sub_8044D90 - adds r5, r0, 0 - adds r4, 0x48 - ldrb r0, [r4] - movs r1, 0 - mov r9, r1 - cmp r0, 0x80 - bne _08066904 - movs r2, 0x1 - mov r9, r2 -_08066904: - mov r0, r9 - cmp r0, 0 - bne _08066928 - ldrb r1, [r5] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0x18 - bne _08066928 - ldr r0, _08066920 - adds r1, r5, 0 - bl sub_8045BF8 - ldr r0, _08066924 - b _08066950 - .align 2, 0 -_08066920: .4byte gUnknown_202DEA8 -_08066924: .4byte gUnknown_80F8C44 -_08066928: - ldr r0, _0806695C - mov r1, r8 - movs r2, 0 - bl SetMessageArgument - adds r1, r7, 0 - adds r1, 0x60 - ldrb r2, [r1] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _08066A04 - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _08066968 - ldr r0, _08066960 - bl sub_8045BF8 - ldr r0, _08066964 -_08066950: - ldr r1, [r0] - adds r0, r6, 0 - bl SendMessage - b _08066A96 - .align 2, 0 -_0806695C: .4byte gUnknown_202DFE8 -_08066960: .4byte gUnknown_202DEA8 -_08066964: .4byte gUnknown_80F8C40 -_08066968: - ldr r1, [r7, 0x60] - str r1, [sp] - ldr r2, [r5] - str r2, [sp, 0x4] - movs r4, 0xEF - mov r0, sp - ldrb r0, [r0] - ands r0, r4 - ldr r3, _080669A8 - ands r1, r3 - orrs r1, r0 - str r1, [sp] - add r5, sp, 0x4 - ldrb r0, [r5] - ands r0, r4 - ands r2, r3 - orrs r2, r0 - str r2, [sp, 0x4] - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x64 - bl sub_8044DF0 - mov r1, r9 - cmp r1, 0 - beq _080669AC - adds r0, r6, 0x4 - mov r1, sp - movs r2, 0x1 - bl sub_80460F8 - b _080669B2 - .align 2, 0 -_080669A8: .4byte 0xffffff00 -_080669AC: - mov r0, sp - bl AddItemToInventory -_080669B2: - ldr r0, [sp, 0x4] - str r0, [r7, 0x60] - ldr r4, _080669F4 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8045BF8 - adds r4, 0x50 - adds r0, r4, 0 - mov r1, sp - bl sub_8045BF8 - ldr r0, _080669F8 - bl PlaySoundEffect - ldr r0, _080669FC - ldr r1, [r0] - adds r0, r6, 0 - bl SendMessage - add r0, sp, 0x4 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08066A52 - ldr r0, _08066A00 - ldr r1, [r0] - adds r0, r6, 0 - bl SendMessage - b _08066A52 - .align 2, 0 -_080669F4: .4byte gUnknown_202DE58 -_080669F8: .4byte 0x0000014d -_080669FC: .4byte gUnknown_80F8CA8 -_08066A00: .4byte gUnknown_80F8BE0 -_08066A04: - ldr r2, [r5] - str r2, [sp, 0x8] - movs r1, 0xEF - add r4, sp, 0x8 - ldrb r0, [r4] - ands r0, r1 - ldr r1, _08066AA4 - ands r2, r1 - orrs r2, r0 - str r2, [sp, 0x8] - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x65 - bl sub_8044DF0 - ldr r0, [sp, 0x8] - str r0, [r7, 0x60] - ldr r0, _08066AA8 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r0, _08066AAC - bl PlaySoundEffect - ldr r0, _08066AB0 - ldr r1, [r0] - adds r0, r6, 0 - bl SendMessage - ldrb r1, [r4] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08066A52 - ldr r0, _08066AB4 - ldr r1, [r0] - adds r0, r6, 0 - bl SendMessage -_08066A52: - mov r0, r8 - bl sub_806A6E8 - mov r1, r8 - adds r1, 0x4 - mov r0, r8 - bl sub_80706A4 - lsls r0, 24 - cmp r0, 0 - beq _08066A74 - adds r0, r6, 0 - mov r1, r8 - movs r2, 0 - movs r3, 0 - bl sub_807D148 -_08066A74: - ldrb r0, [r7, 0x7] - cmp r0, 0 - bne _08066A86 - ldrh r1, [r7] - movs r2, 0x80 - lsls r2, 7 - adds r0, r2, 0 - orrs r0, r1 - strh r0, [r7] -_08066A86: - ldr r0, _08066AB8 - ldr r0, [r0] - ldr r1, _08066ABC - adds r0, r1 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_807AB38 -_08066A96: - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08066AA4: .4byte 0xffffff00 -_08066AA8: .4byte gUnknown_202DE58 -_08066AAC: .4byte 0x0000014d -_08066AB0: .4byte gUnknown_80F8D44 -_08066AB4: .4byte gUnknown_80F8BE0 -_08066AB8: .4byte gDungeon -_08066ABC: .4byte 0x00003a08 - thumb_func_end sub_80668D0 - - thumb_func_start sub_8066AC0 -sub_8066AC0: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r7, r0, 0 - movs r1, 0 - bl sub_8044DA4 - adds r6, r0, 0 - ldr r2, [r6, 0x70] - mov r8, r2 - adds r5, r2, 0 - adds r5, 0x60 - ldr r0, _08066AF0 - ldr r0, [r0] - adds r0, 0x4C - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08066AF8 - ldr r0, _08066AF4 - b _08066B10 - .align 2, 0 -_08066AF0: .4byte gTeamInventoryRef -_08066AF4: .4byte gUnknown_80F8D60 -_08066AF8: - ldrb r1, [r5] - movs r0, 0x8 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _08066B24 - ldr r0, _08066B1C - adds r1, r5, 0 - bl sub_8045BF8 - ldr r0, _08066B20 -_08066B10: - ldr r1, [r0] - adds r0, r7, 0 - bl SendMessage - b _08066BAC - .align 2, 0 -_08066B1C: .4byte gUnknown_202DE58 -_08066B20: .4byte gUnknown_80F8BE0 -_08066B24: - ldr r2, [r2, 0x60] - str r2, [sp] - movs r1, 0xEF - mov r0, sp - ldrb r0, [r0] - ands r0, r1 - ldr r1, _08066BB8 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - ldr r0, _08066BBC - mov r1, sp - bl sub_8045BF8 - ldr r0, _08066BC0 - adds r1, r6, 0 - movs r2, 0 - bl SetMessageArgument - strb r4, [r5, 0x2] - strb r4, [r5, 0x1] - strb r4, [r5] - mov r0, sp - bl AddItemToInventory - ldr r0, _08066BC4 - bl PlaySoundEffect - ldr r0, _08066BC8 - ldr r1, [r0] - adds r0, r7, 0 - bl SendMessage - adds r0, r6, 0 - bl sub_806A6E8 - adds r1, r6, 0x4 - adds r0, r6, 0 - bl sub_80706A4 - lsls r0, 24 - cmp r0, 0 - beq _08066B86 - adds r0, r7, 0 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0 - bl sub_807D148 -_08066B86: - mov r1, r8 - ldrb r0, [r1, 0x7] - cmp r0, 0 - bne _08066B9C - ldrh r1, [r1] - movs r2, 0x80 - lsls r2, 7 - adds r0, r2, 0 - orrs r0, r1 - mov r1, r8 - strh r0, [r1] -_08066B9C: - ldr r0, _08066BCC - ldr r0, [r0] - ldr r2, _08066BD0 - adds r0, r2 - ldrb r1, [r0] - adds r0, r7, 0 - bl sub_807AB38 -_08066BAC: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08066BB8: .4byte 0xffffff00 -_08066BBC: .4byte gUnknown_202DE58 -_08066BC0: .4byte gAvailablePokemonNames -_08066BC4: .4byte 0x0000014d -_08066BC8: .4byte gUnknown_80F8D7C -_08066BCC: .4byte gDungeon -_08066BD0: .4byte 0x00003a08 - thumb_func_end sub_8066AC0 - - thumb_func_start sub_8066BD4 -sub_8066BD4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r7, r0, 0 - movs r1, 0 - bl sub_8044DA4 - mov r9, r0 - ldr r0, [r0, 0x70] - mov r8, r0 - mov r10, r8 - mov r6, r8 - adds r6, 0x60 - ldr r2, _08066C10 - adds r0, r7, 0 - movs r1, 0x1 - bl sub_8044D90 - adds r5, r0, 0 - ldrb r2, [r6] - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _08066C18 - ldr r0, _08066C14 - adds r1, r6, 0 - b _08066C26 - .align 2, 0 -_08066C10: .4byte 0x00001565 -_08066C14: .4byte gUnknown_202DE58 -_08066C18: - ldrb r1, [r5] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0x18 - bne _08066C40 - ldr r0, _08066C38 - adds r1, r5, 0 -_08066C26: - bl sub_8045BF8 - ldr r0, _08066C3C - ldr r1, [r0] - adds r0, r7, 0 - bl SendMessage - b _08066CC8 - .align 2, 0 -_08066C38: .4byte gUnknown_202DE58 -_08066C3C: .4byte gUnknown_80F8BE0 -_08066C40: - movs r1, 0xEF - adds r0, r1, 0 - ands r0, r2 - strb r0, [r6] - ldrb r0, [r5] - ands r1, r0 - strb r1, [r5] - ldr r4, _08066CD8 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_8045BF8 - adds r4, 0x50 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8045BF8 - ldr r0, _08066CDC - mov r1, r9 - movs r2, 0 - bl SetMessageArgument - mov r2, r8 - ldr r1, [r2, 0x60] - ldr r0, [r5] - str r0, [r2, 0x60] - str r1, [r5] - ldr r0, _08066CE0 - bl PlaySoundEffect - ldr r0, _08066CE4 - ldr r1, [r0] - adds r0, r7, 0 - bl SendMessage - mov r1, r9 - adds r1, 0x4 - mov r0, r9 - bl sub_80706A4 - lsls r0, 24 - cmp r0, 0 - beq _08066CA2 - adds r0, r7, 0 - mov r1, r9 - movs r2, 0 - movs r3, 0 - bl sub_807D148 -_08066CA2: - mov r1, r10 - ldrb r0, [r1, 0x7] - cmp r0, 0 - bne _08066CB8 - ldrh r1, [r1] - movs r2, 0x80 - lsls r2, 7 - adds r0, r2, 0 - orrs r0, r1 - mov r1, r10 - strh r0, [r1] -_08066CB8: - ldr r0, _08066CE8 - ldr r0, [r0] - ldr r2, _08066CEC - adds r0, r2 - ldrb r1, [r0] - adds r0, r7, 0 - bl sub_807AB38 -_08066CC8: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08066CD8: .4byte gUnknown_202DE58 -_08066CDC: .4byte gUnknown_202DFE8 -_08066CE0: .4byte 0x0000014d -_08066CE4: .4byte gUnknown_80F8DB4 -_08066CE8: .4byte gDungeon -_08066CEC: .4byte 0x00003a08 - thumb_func_end sub_8066BD4 - - thumb_func_start sub_8066CF0 -sub_8066CF0: - push {lr} - movs r1, 0 - bl sub_8044DA4 - ldr r0, [r0, 0x70] - adds r0, 0xFC - movs r1, 0x1 - strb r1, [r0] - pop {r0} - bx r0 - thumb_func_end sub_8066CF0 - - thumb_func_start sub_8066D04 -sub_8066D04: - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, [r4, 0x70] - movs r1, 0 - movs r2, 0x4 - bl sub_8044D90 - adds r5, r0, 0 - ldr r0, _08066D2C - adds r1, r5, 0 - bl sub_8045BF8 - adds r0, r6, 0 - adds r0, 0x48 - ldrb r0, [r0] - cmp r0, 0x80 - bne _08066D34 - ldr r0, _08066D30 - b _08066DB2 - .align 2, 0 -_08066D2C: .4byte gUnknown_202DE58 -_08066D30: .4byte gUnknown_80F8DE0 -_08066D34: - cmp r0, 0x14 - bhi _08066D4C - ldrb r1, [r5] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0x18 - bne _08066D4C - ldr r0, _08066D48 - b _08066DB2 - .align 2, 0 -_08066D48: .4byte gUnknown_80F8BE0 -_08066D4C: - adds r0, r6, 0 - adds r0, 0x48 - ldrb r0, [r0] - cmp r0, 0x81 - bne _08066D68 - ldrb r1, [r5] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08066D68 - ldr r0, _08066D64 - b _08066DB2 - .align 2, 0 -_08066D64: .4byte gUnknown_80F8BE0 -_08066D68: - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl GetTile - adds r2, r0, 0 - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - bne _08066DB0 - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _08066DB0 - ldr r6, [r2, 0x14] - cmp r6, 0 - bne _08066DB0 - ldrb r1, [r5] - movs r0, 0xEF - ands r0, r1 - strb r0, [r5] - ldr r0, _08066DBC - adds r1, r5, 0 - bl sub_8045BF8 - adds r0, r4, 0x4 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_80460F8 - lsls r0, 24 - cmp r0, 0 - bne _08066DC4 -_08066DB0: - ldr r0, _08066DC0 -_08066DB2: - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage - b _08066DF8 - .align 2, 0 -_08066DBC: .4byte gUnknown_202DE58 -_08066DC0: .4byte gUnknown_80F8E04 -_08066DC4: - strb r6, [r5, 0x2] - strb r6, [r5, 0x1] - strb r6, [r5] - bl FillInventoryGaps - ldr r0, _08066E00 - bl PlaySoundEffect - ldr r0, _08066E04 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08066E08 - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage - ldr r0, _08066E0C - ldr r0, [r0] - ldr r1, _08066E10 - adds r0, r1 - ldrb r1, [r0] - adds r0, r4, 0 - bl sub_807AB38 -_08066DF8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08066E00: .4byte 0x0000014d -_08066E04: .4byte gAvailablePokemonNames -_08066E08: .4byte gUnknown_80F8E28 -_08066E0C: .4byte gDungeon -_08066E10: .4byte 0x00003a08 - thumb_func_end sub_8066D04 - - thumb_func_start sub_8066E14 -sub_8066E14: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r9, r0 - ldr r0, [r0, 0x70] - mov r10, r0 - mov r0, r9 - movs r1, 0 - movs r2, 0x5 - bl sub_8044D90 - adds r6, r0, 0 - mov r0, r9 - movs r1, 0x1 - movs r2, 0x6 - bl sub_8044D90 - adds r2, r0, 0 - adds r7, r2, 0 - mov r0, r10 - adds r0, 0x48 - ldrb r0, [r0] - cmp r0, 0x80 - beq _08066E54 - ldr r0, _08066E50 - b _08066F1E - .align 2, 0 -_08066E50: .4byte gUnknown_80F8E2C -_08066E54: - mov r0, r10 - adds r0, 0x50 - ldrb r1, [r0] - str r0, [sp, 0x8] - cmp r1, 0x14 - bhi _08066E80 - ldrb r1, [r2] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0x18 - bne _08066E80 - ldr r0, _08066E78 - adds r1, r2, 0 - bl sub_8045BF8 - ldr r0, _08066E7C - b _08066F1E - .align 2, 0 -_08066E78: .4byte gUnknown_202DE58 -_08066E7C: .4byte gUnknown_80F8BE0 -_08066E80: - ldr r1, [sp, 0x8] - ldrb r0, [r1] - cmp r0, 0x81 - bne _08066EA8 - adds r2, r7, 0 - ldrb r1, [r2] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08066EA8 - ldr r0, _08066EA0 - adds r1, r2, 0 - bl sub_8045BF8 - ldr r0, _08066EA4 - b _08066F1E - .align 2, 0 -_08066EA0: .4byte gUnknown_202DEA8 -_08066EA4: .4byte gUnknown_80F8C48 -_08066EA8: - mov r2, r9 - movs r3, 0x4 - ldrsh r0, [r2, r3] - movs r3, 0x6 - ldrsh r1, [r2, r3] - bl GetTile - ldr r0, [r0, 0x14] - cmp r0, 0 - beq _08066ECC - bl GetEntityType - cmp r0, 0x3 - beq _08066ECC - ldr r0, _08066EC8 - b _08066F1E - .align 2, 0 -_08066EC8: .4byte gUnknown_80F8E54 -_08066ECC: - adds r0, r6, 0 - ldr r5, [r0] - str r5, [sp] - adds r4, r7, 0 - ldr r6, [r4] - mov r8, sp - str r6, [sp, 0x4] - movs r3, 0xEF - mov r0, sp - ldrb r2, [r0] - ands r2, r3 - ldr r1, _08066F28 - adds r0, r1, 0 - ands r0, r5 - orrs r0, r2 - str r0, [sp] - mov r2, r8 - ldrb r0, [r2, 0x4] - ands r0, r3 - ands r1, r6 - orrs r1, r0 - str r1, [sp, 0x4] - mov r5, r10 - adds r5, 0x4C - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80461C8 - movs r0, 0 - strb r0, [r4, 0x2] - strb r0, [r4, 0x1] - strb r0, [r4] - add r1, sp, 0x4 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_80460F8 - lsls r0, 24 - cmp r0, 0 - bne _08066F30 - ldr r0, _08066F2C -_08066F1E: - ldr r1, [r0] - mov r0, r9 - bl SendMessage - b _08066F7E - .align 2, 0 -_08066F28: .4byte 0xffffff00 -_08066F2C: .4byte gUnknown_80F8E78 -_08066F30: - ldr r3, [sp, 0x8] - ldrb r0, [r3] - cmp r0, 0x81 - bne _08066F40 - ldr r0, [sp] - mov r1, r10 - str r0, [r1, 0x60] - b _08066F46 -_08066F40: - mov r0, sp - bl AddItemToInventory -_08066F46: - bl FillInventoryGaps - ldr r4, _08066F90 - add r1, sp, 0x4 - adds r0, r4, 0 - bl sub_8045BF8 - adds r4, 0x50 - adds r0, r4, 0 - mov r1, sp - bl sub_8045BF8 - ldr r0, _08066F94 - bl PlaySoundEffect - ldr r0, _08066F98 - ldr r1, [r0] - mov r0, r9 - bl SendMessage - ldr r0, _08066F9C - ldr r0, [r0] - ldr r2, _08066FA0 - adds r0, r2 - ldrb r1, [r0] - mov r0, r9 - bl sub_807AB38 -_08066F7E: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08066F90: .4byte gUnknown_202DE58 -_08066F94: .4byte 0x0000014d -_08066F98: .4byte gUnknown_80F8EAC -_08066F9C: .4byte gDungeon -_08066FA0: .4byte 0x00003a08 - thumb_func_end sub_8066E14 - - thumb_func_start sub_8066FA4 -sub_8066FA4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - adds r7, r0, 0 - ldr r0, [r7, 0x70] - mov r9, r0 - movs r1, 0x4 - ldrsh r0, [r7, r1] - movs r2, 0x6 - ldrsh r1, [r7, r2] - bl GetTile - mov r10, r0 - adds r0, r7, 0 - movs r1, 0 - movs r2, 0x7 - bl sub_8044D90 - adds r4, r0, 0 - adds r5, r4, 0 - ldr r0, _08067000 - mov r8, r0 - adds r1, r4, 0 - bl sub_8045BF8 - mov r0, r9 - adds r0, 0x48 - ldrb r0, [r0] - cmp r0, 0x14 - bhi _08067008 - ldrb r1, [r4] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0x18 - bne _08067008 - mov r0, r8 - adds r0, 0x50 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r0, _08067004 - b _0806709E - .align 2, 0 -_08067000: .4byte gUnknown_202DE58 -_08067004: .4byte gUnknown_80F8C48 -_08067008: - mov r0, r9 - adds r0, 0x48 - ldrb r1, [r0] - str r0, [sp, 0x8] - cmp r1, 0x81 - bne _08067028 - adds r0, r5, 0 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08067028 - ldr r0, _08067024 - b _0806709E - .align 2, 0 -_08067024: .4byte gUnknown_80F8C44 -_08067028: - mov r1, r10 - ldr r0, [r1, 0x14] - cmp r0, 0 - beq _08067040 - bl GetEntityType - cmp r0, 0x3 - beq _08067040 - ldr r0, _0806703C - b _0806709E - .align 2, 0 -_0806703C: .4byte gUnknown_80F8E54 -_08067040: - mov r2, r10 - ldr r0, [r2, 0x14] - bl GetItemData - adds r4, r0, 0 - ldr r0, _080670A8 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r6, [r5] - str r6, [sp] - ldr r4, [r4] - mov r8, sp - str r4, [sp, 0x4] - movs r3, 0xEF - mov r0, sp - ldrb r2, [r0] - ands r2, r3 - ldr r1, _080670AC - adds r0, r1, 0 - ands r0, r6 - orrs r0, r2 - str r0, [sp] - mov r2, r8 - ldrb r0, [r2, 0x4] - ands r0, r3 - ands r1, r4 - orrs r1, r0 - str r1, [sp, 0x4] - adds r4, r7, 0x4 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80461C8 - movs r0, 0 - strb r0, [r5, 0x2] - strb r0, [r5, 0x1] - strb r0, [r5] - adds r0, r4, 0 - mov r1, sp - movs r2, 0x1 - bl sub_80460F8 - lsls r0, 24 - cmp r0, 0 - bne _080670B4 - ldr r0, _080670B0 -_0806709E: - ldr r1, [r0] - adds r0, r7, 0 - bl SendMessage - b _080670EE - .align 2, 0 -_080670A8: .4byte gUnknown_202DEA8 -_080670AC: .4byte 0xffffff00 -_080670B0: .4byte gUnknown_80F8E78 -_080670B4: - ldr r1, [sp, 0x8] - ldrb r0, [r1] - cmp r0, 0x81 - bne _080670C4 - ldr r0, [sp, 0x4] - mov r2, r9 - str r0, [r2, 0x60] - b _080670CA -_080670C4: - add r0, sp, 0x4 - bl AddItemToInventory -_080670CA: - bl FillInventoryGaps - ldr r0, _08067100 - bl PlaySoundEffect - ldr r0, _08067104 - ldr r1, [r0] - adds r0, r7, 0 - bl SendMessage - ldr r0, _08067108 - ldr r0, [r0] - ldr r1, _0806710C - adds r0, r1 - ldrb r1, [r0] - adds r0, r7, 0 - bl sub_807AB38 -_080670EE: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067100: .4byte 0x0000014d -_08067104: .4byte gUnknown_80F8EAC -_08067108: .4byte gDungeon -_0806710C: .4byte 0x00003a08 - thumb_func_end sub_8066FA4 - - thumb_func_start sub_8067110 -sub_8067110: - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - ldr r4, [r5, 0x70] - movs r1, 0 - movs r2, 0x8 - bl sub_8044D90 - adds r6, r0, 0 - ldr r0, _08067190 - adds r1, r6, 0 - bl sub_8045BF8 - ldr r0, _08067194 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument_2 - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_8048D50 - lsls r0, 24 - cmp r0, 0 - beq _08067188 - adds r0, r6, 0 - bl sub_80464AC - adds r1, r0, 0 - adds r0, r5, 0 - bl SendMessage - ldr r0, [r6] - str r0, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0 - movs r2, 0x66 - bl sub_8044DF0 - movs r0, 0x1E - movs r1, 0x11 - bl sub_803E708 - str r5, [sp] - add r0, sp, 0x8 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - adds r3, r5, 0 - bl sub_80479B8 - ldr r0, _08067198 - ldr r0, [r0] - ldr r1, _0806719C - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_807AB38 -_08067188: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08067190: .4byte gUnknown_202DE58 -_08067194: .4byte gAvailablePokemonNames -_08067198: .4byte gDungeon -_0806719C: .4byte 0x00003a08 - thumb_func_end sub_8067110 - - thumb_func_start sub_80671A0 -sub_80671A0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - adds r6, r0, 0 - ldr r0, [r6, 0x70] - mov r8, r0 - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x9 - bl sub_8044D90 - adds r4, r0, 0 - mov r0, r8 - adds r0, 0x48 - ldrb r0, [r0] - cmp r0, 0x81 - bne _080671E8 - ldrb r1, [r4] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080671E8 - ldr r0, _080671E0 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r0, _080671E4 - b _08067230 - .align 2, 0 -_080671E0: .4byte gUnknown_202DE58 -_080671E4: .4byte gUnknown_80F8BE0 -_080671E8: - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - cmp r0, 0 - beq _08067202 - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08067220 -_08067202: - ldrb r1, [r4] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08067220 - ldr r0, _08067218 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r0, _0806721C - b _08067230 - .align 2, 0 -_08067218: .4byte gUnknown_202DE58 -_0806721C: .4byte gUnknown_80F8BE0 -_08067220: - adds r0, r6, 0 - movs r1, 0x1 - bl ShouldMonsterRunAwayAndShowEffect - lsls r0, 24 - cmp r0, 0 - beq _08067248 - ldr r0, _08067244 -_08067230: - ldr r1, [r0] - adds r0, r6, 0 - bl SendMessage - movs r0, 0x14 - movs r1, 0x4C - bl sub_803E708 - b _080674F8 - .align 2, 0 -_08067244: .4byte gUnknown_80FF76C -_08067248: - ldr r2, [r4] - str r2, [sp, 0x4] - movs r1, 0xEF - add r0, sp, 0x4 - ldrb r0, [r0] - ands r0, r1 - ldr r1, _080672C0 - ands r2, r1 - orrs r2, r0 - str r2, [sp, 0x4] - mov r0, r8 - adds r0, 0x48 - ldrb r1, [r0] - adds r5, r0, 0 - cmp r1, 0x80 - bne _08067272 - movs r4, 0 - adds r0, 0x4 - movs r1, 0x1 - bl sub_80461C8 -_08067272: - movs r7, 0x1 - ldr r0, [sp, 0x4] - lsrs r0, 16 - lsls r0, 24 - lsrs r0, 24 - bl GetItemCategory - lsls r0, 24 - cmp r0, 0 - beq _0806729A - ldr r0, [sp, 0x4] - lsrs r0, 16 - lsls r0, 24 - lsrs r0, 24 - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080672A8 -_0806729A: - ldr r0, [sp, 0x4] - lsrs r0, 8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080672A8 - movs r7, 0 -_080672A8: - cmp r7, 0 - beq _080672C4 - ldrb r0, [r5] - cmp r0, 0x80 - beq _080672F6 - movs r0, 0 - strb r0, [r4, 0x2] - strb r0, [r4, 0x1] - strb r0, [r4] - bl FillInventoryGaps - b _080672F6 - .align 2, 0 -_080672C0: .4byte 0xffffff00 -_080672C4: - ldrb r0, [r5] - cmp r0, 0x80 - bne _080672F0 - ldr r2, [sp, 0x4] - lsrs r0, r2, 8 - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 16 - ldr r1, _080672EC - ands r2, r1 - orrs r2, r0 - str r2, [sp, 0x4] - mov r0, r8 - adds r0, 0x4C - add r1, sp, 0x4 - movs r2, 0x1 - bl sub_80460F8 - b _080672F6 - .align 2, 0 -_080672EC: .4byte 0xffff00ff -_080672F0: - ldrb r0, [r4, 0x1] - subs r0, 0x1 - strb r0, [r4, 0x1] -_080672F6: - adds r0, r6, 0 - movs r1, 0x29 - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _08067310 - movs r0, 0x8 - bl DungeonRandInt - mov r1, r8 - adds r1, 0x46 - strb r0, [r1] -_08067310: - adds r0, r6, 0 - bl sub_8045888 - lsls r0, 24 - movs r1, 0xE0 - add r1, r8 - mov r10, r1 - adds r1, r6, 0x4 - str r1, [sp, 0x10] - add r1, sp, 0xC - mov r9, r1 - cmp r0, 0 - beq _08067364 - mov r0, r8 - adds r0, 0x46 - ldrb r4, [r0] - movs r1, 0xB2 - lsls r1, 1 - adds r0, r6, 0 - bl sub_80421C0 - movs r7, 0x7 - movs r5, 0x7 -_0806733E: - subs r4, 0x1 - ands r4, r7 - adds r0, r6, 0 - movs r1, 0 - adds r2, r4, 0 - bl sub_806CDD4 - movs r0, 0x2 - movs r1, 0x15 - bl sub_803E708 - subs r5, 0x1 - cmp r5, 0 - bge _0806733E - movs r1, 0xB3 - lsls r1, 1 - add r1, r8 - movs r0, 0x4 - strb r0, [r1] -_08067364: - add r4, sp, 0x4 - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - cmp r0, 0 - beq _08067380 - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08067384 -_08067380: - movs r0, 0x1 - strb r0, [r4, 0x1] -_08067384: - ldr r0, _080673B0 - add r4, sp, 0x4 - adds r1, r4, 0 - bl sub_8045C08 - ldr r0, _080673B4 - mov r1, r8 - movs r2, 0 - bl SetMessageArgument_2 - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - cmp r0, 0 - bne _080673BC - ldr r0, _080673B8 - ldr r1, [r0] - adds r0, r6, 0 - bl SendMessage - b _080673C6 - .align 2, 0 -_080673B0: .4byte gUnknown_202DE58 -_080673B4: .4byte gAvailablePokemonNames -_080673B8: .4byte gUnknown_80F8EC8 -_080673BC: - ldr r0, _080673F8 - ldr r1, [r0] - adds r0, r6, 0 - bl SendMessage -_080673C6: - add r0, sp, 0x4 - ldrb r0, [r0, 0x2] - bl GetItemCategory - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl sub_8042208 - adds r0, r6, 0 - movs r1, 0x27 - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _08067400 - ldr r0, _080673FC - ldr r1, [sp, 0xC] - ands r1, r0 - movs r0, 0x80 - lsls r0, 1 - orrs r1, r0 - str r1, [sp, 0xC] - b _08067408 - .align 2, 0 -_080673F8: .4byte gUnknown_80F8EC4 -_080673FC: .4byte 0xffff00ff -_08067400: - ldr r1, _0806741C - ldr r0, [sp, 0xC] - ands r0, r1 - str r0, [sp, 0xC] -_08067408: - mov r1, r10 - ldrb r0, [r1] - cmp r0, 0x1 - beq _08067440 - cmp r0, 0x1 - bgt _08067420 - cmp r0, 0 - beq _08067426 - b _08067462 - .align 2, 0 -_0806741C: .4byte 0xffff00ff -_08067420: - cmp r0, 0x2 - beq _0806744C - b _08067462 -_08067426: - ldr r1, _08067438 - ldr r0, [sp, 0xC] - ands r0, r1 - ldr r1, _0806743C - ands r0, r1 - movs r1, 0xA0 - lsls r1, 12 - b _0806745E - .align 2, 0 -_08067438: .4byte 0xffffff00 -_0806743C: .4byte 0x0000ffff -_08067440: - ldr r1, _08067448 - ldr r0, [sp, 0xC] - ands r0, r1 - b _08067456 - .align 2, 0 -_08067448: .4byte 0xffffff00 -_0806744C: - ldr r1, _080674B4 - ldr r0, [sp, 0xC] - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 -_08067456: - ldr r1, _080674B8 - ands r0, r1 - movs r1, 0xC6 - lsls r1, 15 -_0806745E: - orrs r0, r1 - str r0, [sp, 0xC] -_08067462: - adds r0, r6, 0 - movs r1, 0xF - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _08067486 - ldr r1, _080674B4 - ldr r0, [sp, 0xC] - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - ldr r1, _080674B8 - ands r0, r1 - movs r1, 0xC6 - lsls r1, 15 - orrs r0, r1 - str r0, [sp, 0xC] -_08067486: - add r0, sp, 0x4 - ldrb r0, [r0, 0x2] - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080674BC - add r4, sp, 0x8 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_8083904 - mov r0, r9 - str r0, [sp] - adds r0, r6, 0 - add r1, sp, 0x4 - ldr r2, [sp, 0x10] - adds r3, r4, 0 - bl sub_80475C4 - b _080674D0 - .align 2, 0 -_080674B4: .4byte 0xffffff00 -_080674B8: .4byte 0x0000ffff -_080674BC: - mov r0, r8 - adds r0, 0x46 - ldrb r3, [r0] - mov r1, r9 - str r1, [sp] - adds r0, r6, 0 - add r1, sp, 0x4 - ldr r2, [sp, 0x10] - bl sub_8047190 -_080674D0: - adds r0, r6, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080674F8 - mov r0, r8 - adds r0, 0x46 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_806CE68 - ldr r0, _08067508 - ldr r0, [r0] - ldr r1, _0806750C - adds r0, r1 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_807AB38 -_080674F8: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067508: .4byte gDungeon -_0806750C: .4byte 0x00003a08 - thumb_func_end sub_80671A0 - - thumb_func_start sub_8067510 -sub_8067510: - push {r4,lr} - adds r4, r0, 0 - bl sub_806773C - adds r1, r0, 0 - movs r2, 0x1 - negs r2, r2 - adds r0, r4, 0 - bl sub_8067558 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8067510 - - thumb_func_start sub_806752C -sub_806752C: - push {r4,lr} - ldr r1, _08067550 - ldr r1, [r1] - ldrb r0, [r0, 0x4] - lsls r0, 2 - ldr r2, _08067554 - adds r1, r2 - adds r1, r0 - ldr r4, [r1] - bl GetLeader - adds r1, r4, 0 - movs r2, 0 - bl sub_8067558 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08067550: .4byte gDungeon -_08067554: .4byte 0x0001357c - thumb_func_end sub_806752C - - thumb_func_start sub_8067558 -sub_8067558: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x12C - adds r6, r0, 0 - adds r5, r1, 0 - mov r9, r2 - ldr r0, [r6, 0x70] - mov r8, r0 - cmp r5, 0 - bne _0806757C - ldr r0, _08067578 - ldr r1, [r0] - movs r0, 0 - b _08067716 - .align 2, 0 -_08067578: .4byte gUnknown_80F8EE4 -_0806757C: - adds r0, r6, 0 - bl sub_8070BC0 - lsls r0, 24 - cmp r0, 0 - bne _08067594 - ldr r0, _08067590 - ldr r1, [r0] - movs r0, 0 - b _08067716 - .align 2, 0 -_08067590: .4byte gUnknown_80F8EE4 -_08067594: - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0 - bl CanTarget - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080675AA - b _0806771E -_080675AA: - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x1 - movs r3, 0 - bl CanTarget - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080675C0 - b _0806771E -_080675C0: - ldr r7, [r5, 0x70] - ldr r4, _08067608 - adds r0, r4, 0 - adds r1, r7, 0 - movs r2, 0 - bl SetMessageArgument_2 - adds r4, 0x50 - adds r0, r4, 0 - mov r1, r8 - movs r2, 0x7 - bl SetMessageArgument_2 - bl sub_8084778 - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_807A96C - adds r0, r5, 0 - bl sub_8070BC0 - lsls r0, 24 - cmp r0, 0 - beq _08067600 - adds r0, r5, 0 - movs r1, 0x1 - bl CannotMove - lsls r0, 24 - cmp r0, 0 - beq _08067610 -_08067600: - ldr r0, _0806760C - ldr r1, [r0] - movs r0, 0 - b _08067716 - .align 2, 0 -_08067608: .4byte gAvailablePokemonNames -_0806760C: .4byte gUnknown_80FE008 -_08067610: - adds r0, r6, 0x4 - adds r1, r5, 0x4 - bl GetDirectionTowardsPosition - adds r1, r0, 0 - adds r0, r6, 0 - bl sub_806CEFC - mov r1, r9 - cmp r1, 0 - blt _0806762E - adds r0, r5, 0 - bl sub_806CEFC - b _0806763C -_0806762E: - mov r0, r8 - adds r0, 0x46 - ldrb r1, [r0] - adds r1, 0x4 - adds r0, r5, 0 - bl sub_806CEFC -_0806763C: - ldrb r0, [r7, 0x8] - cmp r0, 0x1 - bne _08067648 - bl sub_807EF84 - b _0806772A -_08067648: - adds r0, r7, 0 - adds r0, 0xA4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08067694 - ldr r0, _08067668 - ldr r1, [r0] - ldr r2, _0806766C - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _08067674 - ldr r0, _08067670 - ldr r1, [r0] - movs r0, 0 - b _08067716 - .align 2, 0 -_08067668: .4byte gDungeon -_0806766C: .4byte 0x0000066e -_08067670: .4byte gUnknown_80FF674 -_08067674: - ldr r3, _08067688 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0806768C - adds r0, r5, 0 - bl sub_80845E0 - b _0806772A - .align 2, 0 -_08067688: .4byte 0x00000677 -_0806768C: - adds r0, r5, 0 - bl sub_8084448 - b _0806772A -_08067694: - movs r0, 0x4 - ldrsh r5, [r7, r0] - movs r6, 0 - adds r0, r7, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x4A - bne _080676AA - movs r5, 0xD2 - lsls r5, 1 - b _080676CC -_080676AA: - cmp r0, 0x47 - bne _080676B8 - ldr r5, _080676B4 - b _080676CC - .align 2, 0 -_080676B4: .4byte 0x000001a5 -_080676B8: - cmp r0, 0x41 - bne _080676CC - ldr r0, _080676E8 - ldr r0, [r0] - ldr r1, _080676EC - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080676CC - movs r6, 0x1 -_080676CC: - movs r3, 0x10 - ldrsh r2, [r7, r3] - adds r0, r2, 0 - cmp r2, 0 - bge _080676D8 - adds r0, r2, 0x3 -_080676D8: - movs r3, 0xE - ldrsh r1, [r7, r3] - asrs r0, 2 - cmp r1, r0 - bgt _080676F0 - movs r2, 0x2 - b _08067708 - .align 2, 0 -_080676E8: .4byte gDungeon -_080676EC: .4byte 0x0000065c -_080676F0: - movs r0, 0xE - ldrsh r4, [r7, r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 1 - movs r1, 0xA - bl __divsi3 - movs r2, 0 - cmp r4, r0 - bgt _08067708 - movs r2, 0x1 -_08067708: - mov r0, sp - adds r1, r5, 0 - adds r3, r6, 0 - bl sub_806A3D4 - movs r0, 0 - mov r1, sp -_08067716: - movs r2, 0x1 - bl PrintFieldMessage - b _0806772A -_0806771E: - ldr r0, _08067738 - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl PrintFieldMessage -_0806772A: - add sp, 0x12C - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067738: .4byte gUnknown_80F8EE4 - thumb_func_end sub_8067558 - - thumb_func_start sub_806773C -sub_806773C: - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_80696A8 - adds r4, r0, 0 - cmp r4, 0 - beq _08067760 - adds r0, r4, 0 - bl GetEntityType - cmp r0, 0x1 - bne _08067760 - ldr r0, [r5, 0x70] - ldrb r0, [r0, 0x6] - cmp r0, 0 - bne _08067760 - adds r0, r4, 0 - b _08067762 -_08067760: - movs r0, 0 -_08067762: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806773C - - thumb_func_start sub_8067768 -sub_8067768: - push {r4,lr} - ldr r1, _0806778C - ldr r1, [r1] - ldrb r0, [r0, 0x4] - lsls r0, 2 - ldr r2, _08067790 - adds r1, r2 - adds r1, r0 - ldr r4, [r1] - bl GetLeader - adds r1, r4, 0 - movs r2, 0 - bl sub_8067794 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806778C: .4byte gDungeon -_08067790: .4byte 0x0001357c - thumb_func_end sub_8067768 - - thumb_func_start sub_8067794 -sub_8067794: - push {r4-r7,lr} - sub sp, 0x40 - adds r7, r1, 0 - ldr r4, [r7, 0x70] - cmp r7, 0 - bne _080677B4 - ldr r0, _080677B0 - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl PrintFieldMessage - b _0806786C - .align 2, 0 -_080677B0: .4byte gUnknown_80F8F08 -_080677B4: - ldr r0, _080677F0 - adds r1, r7, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _080677F4 - ldr r5, [r0] - ldr r0, _080677F8 - ldr r6, [r0] - ldrb r2, [r4, 0xA] - cmp r2, 0 - blt _08067834 - ldr r1, _080677FC - movs r0, 0x64 - muls r0, r2 - ldr r2, _08067800 - adds r0, r2 - ldr r1, [r1] - adds r4, r1, r0 - movs r1, 0xA - ldrsh r0, [r4, r1] - bl sub_806A564 - lsls r0, 24 - cmp r0, 0 - beq _0806780C - ldr r0, _08067804 - ldr r5, [r0] - ldr r0, _08067808 - b _08067832 - .align 2, 0 -_080677F0: .4byte gAvailablePokemonNames -_080677F4: .4byte gUnknown_80F9094 -_080677F8: .4byte gUnknown_80F913C -_080677FC: .4byte gRecruitedPokemonRef -_08067800: .4byte 0x00008df8 -_08067804: .4byte gUnknown_80F9114 -_08067808: .4byte gUnknown_80F9154 -_0806780C: - movs r2, 0xA - ldrsh r0, [r4, r2] - bl sub_806A58C - lsls r0, 24 - cmp r0, 0 - beq _08067834 - bl IsMakuhitaTrainingMaze - lsls r0, 24 - cmp r0, 0 - beq _0806782C - ldr r0, _08067828 - b _0806782E - .align 2, 0 -_08067828: .4byte gUnknown_80F90DC -_0806782C: - ldr r0, _08067874 -_0806782E: - ldr r5, [r0] - ldr r0, _08067878 -_08067832: - ldr r6, [r0] -_08067834: - movs r0, 0 - adds r1, r5, 0 - movs r2, 0 - bl sub_8052B8C - cmp r0, 0x1 - bne _0806786C - ldr r4, _0806787C - mov r0, sp - adds r1, r4, 0 - movs r2, 0x40 - bl strncpy - ldr r1, _08067880 - adds r0, r7, 0 - movs r2, 0 - bl sub_8068FE0 - adds r0, r4, 0 - mov r1, sp - movs r2, 0x40 - bl strncpy - movs r0, 0 - adds r1, r6, 0 - movs r2, 0x1 - bl PrintFieldMessage -_0806786C: - add sp, 0x40 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067874: .4byte gUnknown_80F90C8 -_08067878: .4byte gUnknown_80F9150 -_0806787C: .4byte gAvailablePokemonNames -_08067880: .4byte 0x0000021d - thumb_func_end sub_8067794 - - thumb_func_start sub_8067884 -sub_8067884: - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r6, 0 - b _0806789A -_0806788E: - ldr r1, _08067900 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080678C6 - adds r6, 0x1 -_0806789A: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8070828 - cmp r6, r0 - bge _080678C6 - ldr r4, [r5, 0x70] - adds r0, r4, 0 - adds r0, 0x50 - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - adds r0, r5, 0 - movs r2, 0x1 - movs r3, 0 - bl sub_8055A00 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _0806788E -_080678C6: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8057588 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _080678F6 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080678F0 - ldr r0, [r5, 0x70] - adds r0, 0x50 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_806A9B4 -_080678F0: - adds r0, r5, 0 - bl sub_806A1B0 -_080678F6: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08067900: .4byte 0x00000159 - thumb_func_end sub_8067884 - - thumb_func_start sub_8067904 -sub_8067904: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - adds r5, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - ldr r6, [r5, 0x70] - ldr r1, _08067940 - movs r0, 0 - str r0, [r1] - add r0, sp, 0x8 - mov r1, r9 - bl InitPokemonMove - adds r0, r6, 0 - adds r0, 0xBC - ldrb r0, [r0] - cmp r0, 0x1 - bne _0806794C - ldr r0, _08067944 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08067948 - b _08067962 - .align 2, 0 -_08067940: .4byte gUnknown_202F208 -_08067944: .4byte gAvailablePokemonNames -_08067948: .4byte gUnknown_80F8F20 -_0806794C: - adds r0, r6, 0 - adds r0, 0xAC - ldrb r0, [r0] - cmp r0, 0x4 - bne _08067974 - ldr r0, _0806796C - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08067970 -_08067962: - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage - b _08067A56 - .align 2, 0 -_0806796C: .4byte gAvailablePokemonNames -_08067970: .4byte gUnknown_80F8F38 -_08067974: - movs r0, 0xB0 - lsls r0, 1 - movs r1, 0 - mov r10, r1 - cmp r9, r0 - bne _08067984 - movs r2, 0x1 - mov r10, r2 -_08067984: - movs r0, 0 - mov r8, r0 - movs r7, 0 - add r4, sp, 0x8 - b _080679D2 -_0806798E: - movs r1, 0xBC - lsls r1, 1 - adds r0, r6, r1 - strh r7, [r0] - ldrb r0, [r4] - movs r1, 0x8 - orrs r0, r1 - orrs r0, r7 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4] - movs r0, 0xA - strb r0, [r4, 0x4] - str r7, [sp] - str r4, [sp, 0x4] - adds r0, r5, 0 - mov r1, r10 - movs r2, 0 - movs r3, 0 - bl sub_8055FA0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080679DE - ldr r2, _08067A68 - adds r0, r6, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080679DE - movs r0, 0x1 - add r8, r0 -_080679D2: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8070828 - cmp r8, r0 - blt _0806798E -_080679DE: - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08067A56 - movs r0, 0xB0 - lsls r0, 1 - cmp r9, r0 - bne _08067A04 - ldr r0, _08067A6C - ldr r0, [r0] - cmp r0, 0 - bne _08067A04 - ldr r0, _08067A70 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage -_08067A04: - ldrb r0, [r6, 0x7] - cmp r0, 0 - beq _08067A50 - movs r0, 0xB0 - lsls r0, 1 - cmp r9, r0 - beq _08067A50 - ldr r4, _08067A74 - adds r3, r6, 0 - adds r3, 0x46 - ldrb r0, [r3] - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0] - ldrh r1, [r5, 0x4] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - ldr r2, _08067A78 - ldr r1, [sp, 0x10] - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x10] - ldrb r0, [r3] - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x2] - ldrh r2, [r5, 0x6] - adds r0, r2 - lsls r0, 16 - ldr r2, _08067A7C - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x10] - add r0, sp, 0x10 - movs r1, 0x1 - bl sub_807FE44 -_08067A50: - adds r0, r5, 0 - bl sub_8071DA4 -_08067A56: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067A68: .4byte 0x00000159 -_08067A6C: .4byte gUnknown_202F208 -_08067A70: .4byte gUnknown_80FC690 -_08067A74: .4byte gAdjacentTileOffsets -_08067A78: .4byte 0xffff0000 -_08067A7C: .4byte 0x0000ffff - thumb_func_end sub_8067904 - - thumb_func_start sub_8067A80 -sub_8067A80: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x6C - str r1, [sp, 0x68] - mov r8, r2 - mov r9, r3 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x64] - ldr r1, _08067AC8 - add r0, sp, 0x4 - movs r2, 0x60 - bl memcpy - ldr r1, _08067ACC - movs r0, 0 - str r0, [r1] - mov r10, r0 - cmp r10, r8 - blt _08067AB0 - b _08067ED8 -_08067AB0: - ldr r5, _08067AD0 - mov r4, r9 - mov r3, r8 -_08067AB6: - ldm r4!, {r2} - ldrh r1, [r2] - adds r0, r5, 0 - ands r0, r1 - strh r0, [r2] - subs r3, 0x1 - cmp r3, 0 - bne _08067AB6 - b _08067ED8 - .align 2, 0 -_08067AC8: .4byte gUnknown_8106DC8 -_08067ACC: .4byte gUnknown_202F30C -_08067AD0: .4byte 0x00007fff -_08067AD4: - movs r7, 0 - ldr r1, _08067B98 - movs r0, 0x1 - strb r0, [r1] - strb r7, [r1, 0x1] - movs r0, 0xE - strb r0, [r1, 0x2] - strb r7, [r1, 0x3] - add r0, sp, 0x4 - movs r1, 0x1 - bl sub_803ECB4 - ldr r5, _08067B9C - ldr r2, [r5] - ldr r0, [sp, 0x68] - str r0, [sp] - ldr r0, [sp, 0x64] - mov r1, r9 - mov r3, r8 - bl sub_8067F00 - ldr r4, _08067BA0 - mov r0, r8 - cmp r0, 0x8 - ble _08067B08 - movs r0, 0x8 -_08067B08: - strh r0, [r4, 0x1A] - mov r1, r10 - strh r1, [r4, 0x18] - movs r0, 0x8 - strh r0, [r4, 0x1C] - strh r7, [r4, 0x1E] - strh r7, [r4, 0x20] - strh r7, [r4, 0x4] - movs r0, 0x12 - strh r0, [r4, 0x6] - strh r7, [r4, 0xC] - strh r7, [r4, 0xE] - strh r7, [r4, 0x14] - str r7, [r4] - adds r0, r4, 0 - adds r0, 0x28 - bl sub_801317C - adds r0, r4, 0 - movs r1, 0 - bl sub_80137B0 - adds r6, r5, 0 -_08067B36: - ldr r0, _08067BA0 - bl AddMenuCursorSprite - movs r5, 0 - movs r7, 0 - ldr r0, [r6] - mov r2, r8 - subs r0, r2, r0 - cmp r0, 0x8 - ble _08067B50 - movs r5, 0x1 - bl sub_80684C4 -_08067B50: - ldr r0, [r6] - cmp r0, 0 - beq _08067B5C - movs r7, 0x1 - bl sub_8068344 -_08067B5C: - movs r0, 0 - ldr r1, _08067BA4 - bl sub_8014140 - adds r4, r0, 0 - movs r0, 0x37 - bl sub_803E46C - cmp r4, 0x2 - bne _08067BAC - cmp r5, 0 - beq _08067BAC - ldr r0, [r6] - mov r3, r8 - subs r0, r3, r0 - cmp r0, 0x8 - ble _08067BF0 - ldr r5, _08067BA8 - movs r4, 0x5 -_08067B82: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x37 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08067B82 - b _08067BEA - .align 2, 0 -_08067B98: .4byte gUnknown_202F308 -_08067B9C: .4byte gUnknown_202F30C -_08067BA0: .4byte gUnknown_202EE10 -_08067BA4: .4byte gUnknown_8106DA4 -_08067BA8: .4byte gUnknown_203B080 -_08067BAC: - ldr r0, _08067BF8 - ldrh r1, [r0, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08067C0C - movs r0, 0x1 - bl sub_8083CE0 - ldr r1, _08067BFC - movs r2, 0x18 - ldrsh r0, [r1, r2] - cmp r0, 0x7 - bne _08067C04 - ldr r0, [r6] - mov r3, r8 - subs r0, r3, r0 - cmp r0, 0x8 - ble _08067BF0 - ldr r5, _08067C00 - movs r4, 0x5 -_08067BD6: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x37 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08067BD6 -_08067BEA: - ldr r0, [r6] - adds r0, 0x1 - str r0, [r6] -_08067BF0: - movs r7, 0 - movs r0, 0x7 - mov r10, r0 - b _08067CF6 - .align 2, 0 -_08067BF8: .4byte gRealInputs -_08067BFC: .4byte gUnknown_202EE10 -_08067C00: .4byte gUnknown_203B080 -_08067C04: - adds r0, r1, 0 - movs r1, 0 - bl sub_80136E0 -_08067C0C: - cmp r4, 0x1 - bne _08067C44 - cmp r7, 0 - beq _08067C44 - ldr r0, [r6] - cmp r0, 0 - beq _08067C38 - ldr r5, _08067C40 - movs r4, 0x5 -_08067C1E: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x37 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08067C1E - ldr r0, [r6] - subs r0, 0x1 - str r0, [r6] -_08067C38: - movs r7, 0 - movs r1, 0 - mov r10, r1 - b _08067CF6 - .align 2, 0 -_08067C40: .4byte gUnknown_203B084 -_08067C44: - ldr r0, _08067C8C - ldrh r1, [r0, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08067CA0 - movs r0, 0x1 - bl sub_8083CE0 - ldr r1, _08067C90 - movs r2, 0x18 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08067C98 - ldr r0, [r6] - cmp r0, 0 - beq _08067C84 - ldr r5, _08067C94 - movs r4, 0x5 -_08067C6A: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x37 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08067C6A - ldr r0, [r6] - subs r0, 0x1 - str r0, [r6] -_08067C84: - movs r7, 0 - movs r3, 0 - mov r10, r3 - b _08067CF6 - .align 2, 0 -_08067C8C: .4byte gRealInputs -_08067C90: .4byte gUnknown_202EE10 -_08067C94: .4byte gUnknown_203B084 -_08067C98: - adds r0, r1, 0 - movs r1, 0 - bl sub_8013744 -_08067CA0: - bl sub_80048C8 - lsls r0, 24 - cmp r0, 0 - beq _08067CAC - b _08067B36 -_08067CAC: - ldr r0, _08067CD4 - ldrh r1, [r0, 0x2] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08067D40 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08067CCC - ldr r2, _08067CD8 - adds r0, r2, 0 - adds r0, 0x29 - ldrb r0, [r0] - cmp r0, 0 - beq _08067CDC -_08067CCC: - bl sub_8083D08 - movs r7, 0x1 - b _08067CF6 - .align 2, 0 -_08067CD4: .4byte gRealInputs -_08067CD8: .4byte gUnknown_202EE10 -_08067CDC: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08067CF0 - adds r0, r2, 0 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, 0 - bne _08067CF0 - b _08067B36 -_08067CF0: - bl sub_8083D30 - movs r7, 0x2 -_08067CF6: - ldr r4, _08067D34 - adds r0, r4, 0 - bl AddMenuCursorSprite - movs r0, 0x37 - bl sub_803E46C - cmp r7, 0 - bne _08067D0A - b _08067AD4 -_08067D0A: - cmp r7, 0x2 - bne _08067D48 - movs r1, 0x18 - ldrsh r0, [r4, r1] - mov r10, r0 - ldr r0, _08067D38 - ldr r0, [r0] - ldr r2, [sp, 0x68] - cmp r0, r2 - bge _08067D20 - b _08067AD4 -_08067D20: - ldr r0, _08067D3C - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl sub_8052B8C - cmp r0, 0x1 - bne _08067D32 - b _08067ED8 -_08067D32: - b _08067AD4 - .align 2, 0 -_08067D34: .4byte gUnknown_202EE10 -_08067D38: .4byte gUnknown_202F310 -_08067D3C: .4byte gUnknown_80FDFB8 -_08067D40: - bl sub_8083D1C - movs r7, 0x3 - b _08067CF6 -_08067D48: - cmp r7, 0x3 - bne _08067D64 - movs r0, 0x18 - ldrsh r3, [r4, r0] - mov r10, r3 - ldr r0, _08067D60 - ldr r0, [r0] - add r0, r10 - lsls r0, 2 - add r0, r9 - b _08067ED0 - .align 2, 0 -_08067D60: .4byte gUnknown_202F30C -_08067D64: - movs r2, 0x18 - ldrsh r1, [r4, r2] - mov r10, r1 - ldr r0, _08067DAC - ldr r0, [r0] - adds r4, r0, r1 - ldr r1, _08067DB0 - movs r0, 0 - str r0, [r1] - movs r0, 0x29 - movs r1, 0 - bl sub_8044F5C - movs r0, 0x2A - movs r1, 0 - bl sub_8044F5C - movs r0, 0x40 - movs r1, 0 - bl sub_8044F5C - lsls r0, r4, 2 - add r0, r9 - ldr r0, [r0] - ldrh r0, [r0] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08067DBC - movs r0, 0x29 - bl sub_8044FF0 - b _08067DC2 - .align 2, 0 -_08067DAC: .4byte gUnknown_202F30C -_08067DB0: .4byte gUnknown_202EE6C -_08067DB4: - bl sub_8083D08 - movs r7, 0x1 - b _08067E6E -_08067DBC: - movs r0, 0x2A - bl sub_8044FF0 -_08067DC2: - lsls r0, r4, 2 - mov r2, r9 - adds r1, r0, r2 - ldr r2, [r1] - ldrb r1, [r2, 0x2] - adds r6, r0, 0 - cmp r1, 0 - bne _08067DDC - ldrb r1, [r2, 0x4] - cmp r1, 0x40 - beq _08067DDC - cmp r1, 0x41 - bne _08067DE2 -_08067DDC: - movs r0, 0x29 - bl sub_8044FF0 -_08067DE2: - bl sub_8045064 - add r0, sp, 0x4 - movs r1, 0x15 - bl sub_805FC30 - ldr r4, _08067EA0 - ldr r5, _08067EA4 - adds r7, r4, 0 - adds r7, 0x2A -_08067DF6: - adds r0, r4, 0 - bl AddMenuCursorSprite - movs r0, 0x37 - bl sub_803E46C - ldrh r1, [r5, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08067E1A - movs r0, 0x1 - bl sub_8083CE0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80136E0 -_08067E1A: - ldrh r1, [r5, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08067E32 - movs r0, 0x1 - bl sub_8083CE0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8013744 -_08067E32: - ldrh r1, [r5, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08067E46 - adds r0, r4, 0 - adds r0, 0x29 - ldrb r0, [r0] - cmp r0, 0 - beq _08067E58 -_08067E46: - movs r3, 0x18 - ldrsh r0, [r4, r3] - bl sub_8044F3C - lsls r0, 24 - cmp r0, 0 - bne _08067DB4 - bl sub_8083D30 -_08067E58: - ldrh r1, [r5, 0x2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08067E68 - ldrb r0, [r7] - cmp r0, 0 - beq _08067DF6 -_08067E68: - bl sub_8083D30 - movs r7, 0 -_08067E6E: - ldr r4, _08067EA0 - adds r0, r4, 0 - bl AddMenuCursorSprite - movs r0, 0x37 - bl sub_803E46C - cmp r7, 0 - bne _08067E82 - b _08067AD4 -_08067E82: - movs r1, 0x18 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08067EA8 - mov r2, r9 - adds r0, r6, r2 - ldr r1, [r0] - ldrh r2, [r1] - movs r3, 0x80 - lsls r3, 8 - adds r0, r3, 0 - orrs r0, r2 - strh r0, [r1] - b _08067EBC - .align 2, 0 -_08067EA0: .4byte gUnknown_202EE10 -_08067EA4: .4byte gRealInputs -_08067EA8: - cmp r0, 0x1 - bne _08067ECC - mov r1, r9 - adds r0, r6, r1 - ldr r2, [r0] - ldrh r0, [r2] - ldr r3, _08067EC8 - adds r1, r3, 0 - ands r0, r1 - strh r0, [r2] -_08067EBC: - mov r0, r8 - mov r1, r9 - bl sub_8068310 - b _08067AD4 - .align 2, 0 -_08067EC8: .4byte 0x00007fff -_08067ECC: - mov r1, r9 - adds r0, r6, r1 -_08067ED0: - ldr r0, [r0] - bl sub_806806C - b _08067AD4 -_08067ED8: - mov r0, r8 - mov r1, r9 - bl sub_8068310 - ldr r0, _08067EFC - ldr r0, [r0] - ldr r2, [sp, 0x68] - cmp r0, r2 - bge _08067EEC - b _08067AD4 -_08067EEC: - add sp, 0x6C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067EFC: .4byte gUnknown_202F310 - thumb_func_end sub_8067A80 - - thumb_func_start sub_8067F00 -sub_8067F00: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r4, r0, 0 - mov r9, r1 - str r3, [sp, 0x4] - lsls r4, 24 - lsrs r4, 24 - subs r7, r2, 0x1 - movs r0, 0x16 - mov r8, r0 - movs r0, 0 - bl sub_80073B8 - ldr r0, _08067F44 - adds r1, r4, 0 - movs r2, 0 - bl sub_8092578 - ldr r2, _08067F48 - movs r0, 0 - str r0, [sp] - movs r0, 0xC - movs r1, 0 - movs r3, 0 - bl xxx_format_and_draw - movs r1, 0 - mov r10, r1 - b _08067FF6 - .align 2, 0 -_08067F44: .4byte gAvailablePokemonNames -_08067F48: .4byte gUnknown_8106E28 -_08067F4C: - ldr r4, _08067F8C - lsls r6, r7, 2 - mov r0, r9 - adds r5, r6, r0 - ldr r1, [r5] - adds r0, r4, 0 - movs r2, 0 - bl PrintColoredPokeNameToBuffer - adds r4, 0x50 - ldr r0, [r5] - movs r2, 0x8 - ldrsh r1, [r0, r2] - adds r0, r4, 0 - bl sub_808D930 - ldr r1, _08067F90 - adds r0, r7, 0x1 - str r0, [r1] - ldr r0, [r5] - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _08067F9C - ldr r0, _08067F94 - ldr r1, _08067F98 - bl strcpy - b _08067FA4 - .align 2, 0 -_08067F8C: .4byte gAvailablePokemonNames -_08067F90: .4byte gUnknown_202DE30 -_08067F94: .4byte gUnknown_202DE58 -_08067F98: .4byte gUnknown_8106E2C -_08067F9C: - ldr r0, _08067FCC - ldr r1, _08067FD0 - bl strcpy -_08067FA4: - mov r1, r9 - adds r0, r6, r1 - ldr r0, [r0] - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 7 - ands r0, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _08067FD8 - ldr r2, _08067FD4 - movs r0, 0 - str r0, [sp] - movs r0, 0x7 - mov r1, r8 - movs r3, 0 - bl xxx_format_and_draw - b _08067FE6 - .align 2, 0 -_08067FCC: .4byte gUnknown_202DE58 -_08067FD0: .4byte gUnknown_8106E30 -_08067FD4: .4byte gUnknown_8106E34 -_08067FD8: - ldr r2, _08068028 - str r0, [sp] - movs r0, 0x7 - mov r1, r8 - movs r3, 0 - bl xxx_format_and_draw -_08067FE6: - movs r2, 0x1 - add r10, r2 - movs r0, 0xC - add r8, r0 - adds r7, 0x1 - mov r1, r10 - cmp r1, 0x9 - bgt _08068000 -_08067FF6: - cmp r7, 0 - blt _08067FE6 - ldr r2, [sp, 0x4] - cmp r7, r2 - blt _08067F4C -_08068000: - movs r0, 0 - bl sub_80073E0 - movs r0, 0x1 - bl sub_80073B8 - ldr r0, _0806802C - ldr r0, [r0] - ldr r1, [sp, 0x28] - cmp r0, r1 - blt _08068034 - ldr r2, _08068030 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x2 - movs r3, 0x1 - bl xxx_format_and_draw - b _0806804C - .align 2, 0 -_08068028: .4byte gUnknown_8106E48 -_0806802C: .4byte gUnknown_202F310 -_08068030: .4byte gUnknown_8106E5C -_08068034: - ldr r1, _08068064 - ldr r2, [sp, 0x28] - subs r0, r2, r0 - str r0, [r1] - ldr r2, _08068068 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x2 - movs r3, 0x1 - bl xxx_format_and_draw -_0806804C: - movs r0, 0x1 - bl sub_80073E0 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08068064: .4byte gUnknown_202DE30 -_08068068: .4byte gUnknown_8106E6C - thumb_func_end sub_8067F00 - - thumb_func_start sub_806806C -sub_806806C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x110 - str r0, [sp, 0x108] - add r4, sp, 0x98 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x60 - bl memset - movs r0, 0x6 - str r0, [r4, 0x4] - movs r1, 0x2 - strh r1, [r4, 0x8] - strh r1, [r4, 0xA] - movs r2, 0x12 - strh r2, [r4, 0xC] - movs r0, 0xE - strh r0, [r4, 0xE] - strh r2, [r4, 0x10] - strh r1, [r4, 0x12] - ldr r0, _080681B4 - str r0, [r4, 0x14] - movs r0, 0x3 - str r0, [r4, 0x1C] - str r0, [r4, 0x34] - str r0, [r4, 0x4C] - movs r7, 0 - add r1, sp, 0x44 - strh r7, [r1] - mov r0, sp - adds r0, 0x5A - strh r7, [r0] - ldr r0, _080681B8 - strh r7, [r0, 0x18] - mov r9, r1 - adds r1, 0xB4 - str r1, [sp, 0x10C] - add r2, sp, 0x68 - mov r10, r2 - adds r6, r0, 0 -_080680C4: - movs r3, 0 - mov r8, r3 - add r1, sp, 0xF8 - ldr r0, _080681BC - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r0, [r0] - str r0, [r1] - ldr r1, _080681B4 - movs r2, 0x4 - strb r2, [r1] - strb r7, [r1, 0x1] - movs r0, 0xA - strb r0, [r1, 0x2] - mov r4, r8 - strb r4, [r1, 0x3] - strh r7, [r6, 0x1E] - strh r2, [r6, 0x20] - mov r0, r8 - strh r0, [r6, 0x1A] - strh r0, [r6, 0x18] - strh r0, [r6, 0x1C] - strh r0, [r6, 0x4] - movs r0, 0x10 - strh r0, [r6, 0x6] - mov r1, r8 - strh r1, [r6, 0x14] - mov r2, r8 - str r2, [r6] - adds r0, r6, 0 - adds r0, 0x28 - bl sub_801317C - add r0, sp, 0x98 - movs r1, 0x1 - bl sub_803ECB4 - ldr r0, _080681C0 - ldr r0, [r0] - ldr r3, _080681C4 - adds r0, r3 - ldrb r2, [r0] - add r0, sp, 0x4 - ldr r1, [sp, 0x108] - bl sub_808FF20 - lsls r4, r7, 2 - mov r0, sp - adds r0, r4 - adds r0, 0xF8 - ldr r0, [r0] - mov r1, r8 - str r1, [sp] - adds r1, r7, 0 - add r2, sp, 0x4 - mov r3, r10 - bl CreatePokemonInfoTabScreen - ldr r1, _080681C8 - movs r2, 0 - ldrsh r0, [r1, r2] - adds r0, 0xF - lsls r0, 3 - strh r0, [r6, 0xC] - movs r3, 0x2 - ldrsh r0, [r1, r3] - adds r0, 0x1 - lsls r0, 3 - subs r0, 0x2 - strh r0, [r6, 0xE] -_08068150: - ldr r0, _080681B8 - bl AddMenuCursorSprite - ldr r1, [sp, 0x10C] - adds r0, r1, r4 - ldr r0, [r0] - cmp r0, 0x4 - bne _0806817A - mov r2, r10 - ldrb r0, [r2, 0x8] - cmp r0, 0 - beq _0806816C - bl sub_80684C4 -_0806816C: - mov r3, r9 - movs r1, 0 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _0806817A - bl sub_8068344 -_0806817A: - movs r0, 0 - ldr r1, _080681CC - bl sub_8014140 - adds r5, r0, 0 - movs r0, 0x1C - bl sub_803E46C - ldr r3, _080681D0 - ldrh r1, [r3, 0x2] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080681A2 - ldr r2, _080681B8 - adds r0, r2, 0 - adds r0, 0x2B - ldrb r0, [r0] - cmp r0, 0 - beq _080681D4 -_080681A2: - movs r0, 0 - bl sub_8083CE0 - adds r7, 0x1 - cmp r7, 0x4 - beq _080681B0 - b _080682E8 -_080681B0: - movs r7, 0 - b _080682E8 - .align 2, 0 -_080681B4: .4byte gUnknown_202F308 -_080681B8: .4byte gUnknown_202EE10 -_080681BC: .4byte gUnknown_8106E80 -_080681C0: .4byte gDungeon -_080681C4: .4byte 0x0000065a -_080681C8: .4byte gUnknown_2027370 -_080681CC: .4byte gUnknown_8106DA4 -_080681D0: .4byte gRealInputs -_080681D4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _080681E6 - adds r0, r2, 0 - adds r0, 0x2C - ldrb r0, [r0] - cmp r0, 0 - beq _080681FA -_080681E6: - movs r0, 0 - bl sub_8083CE0 - subs r7, 0x1 - movs r0, 0x1 - negs r0, r0 - cmp r7, r0 - bne _080682E8 - movs r7, 0x3 - b _080682E8 -_080681FA: - ldr r2, [sp, 0x10C] - adds r0, r2, r4 - ldr r0, [r0] - cmp r0, 0x4 - bne _08068294 - ldrh r1, [r3, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08068212 - cmp r5, 0x2 - bne _08068248 -_08068212: - mov r3, r10 - ldrb r0, [r3, 0x8] - cmp r0, 0 - beq _08068248 - movs r0, 0 - bl sub_8083CE0 - ldr r5, _08068244 - movs r4, 0x5 -_08068224: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x1C - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08068224 - mov r4, r9 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _080682E8 - .align 2, 0 -_08068244: .4byte gUnknown_203B080 -_08068248: - ldr r0, _0806828C - ldrh r1, [r0, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08068258 - cmp r5, 0x1 - bne _08068294 -_08068258: - mov r1, r9 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _08068294 - movs r0, 0 - bl sub_8083CE0 - ldr r5, _08068290 - movs r4, 0x5 -_0806826C: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x1C - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _0806826C - mov r3, r9 - ldrh r0, [r3] - subs r0, 0x1 - strh r0, [r3] - b _080682E8 - .align 2, 0 -_0806828C: .4byte gRealInputs -_08068290: .4byte gUnknown_203B084 -_08068294: - bl sub_80048C8 - lsls r0, 24 - cmp r0, 0 - beq _080682A0 - b _08068150 -_080682A0: - ldr r0, _080682C4 - ldrh r1, [r0, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080682B8 - ldr r2, _080682C8 - adds r0, r2, 0 - adds r0, 0x29 - ldrb r0, [r0] - cmp r0, 0 - beq _080682CC -_080682B8: - bl sub_8083D08 - movs r4, 0x1 - mov r8, r4 - b _080682E8 - .align 2, 0 -_080682C4: .4byte gRealInputs -_080682C8: .4byte gUnknown_202EE10 -_080682CC: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080682E0 - adds r0, r2, 0 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, 0 - bne _080682E0 - b _08068150 -_080682E0: - bl sub_8083D30 - movs r0, 0x1 - mov r8, r0 -_080682E8: - movs r0, 0x37 - bl sub_803E46C - mov r1, r8 - cmp r1, 0 - bne _080682F6 - b _080680C4 -_080682F6: - movs r0, 0 - movs r1, 0 - bl sub_803EAF0 - add sp, 0x110 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_806806C - - thumb_func_start sub_8068310 -sub_8068310: - push {r4-r6,lr} - movs r4, 0 - ldr r6, _08068340 - cmp r4, r0 - bge _08068338 - movs r5, 0x80 - lsls r5, 8 - adds r3, r1, 0 - adds r2, r0, 0 -_08068322: - ldr r0, [r3] - ldrh r1, [r0] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _08068330 - adds r4, 0x1 -_08068330: - adds r3, 0x4 - subs r2, 0x1 - cmp r2, 0 - bne _08068322 -_08068338: - str r4, [r6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08068340: .4byte gUnknown_202F310 - thumb_func_end sub_8068310 - - thumb_func_start sub_8068344 -sub_8068344: - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x8 - ldr r0, _08068494 - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0806835C - b _08068486 -_0806835C: - ldr r0, _08068498 - mov r9, r0 - movs r0, 0 - movs r1, 0 - str r0, [sp] - str r1, [sp, 0x4] - mov r0, sp - ldrh r0, [r0] - ldr r1, _0806849C - ands r1, r0 - ldr r3, _080684A0 - ldr r0, [sp] - ands r0, r3 - orrs r0, r1 - str r0, [sp] - mov r1, sp - ldrh r1, [r1] - adds r2, r3, 0 - ands r2, r0 - orrs r2, r1 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _080684A4 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r6, _080684A8 - mov r8, r6 - mov r0, r8 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _080684AC - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _080684B0 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - movs r4, 0x80 - lsls r4, 7 - mov r0, sp - ldrh r1, [r0] - ldr r6, _080684B4 - adds r0, r6, 0 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - orrs r4, r0 - ands r3, r1 - orrs r3, r4 - str r3, [sp] - movs r1, 0x80 - lsls r1, 6 - mov r5, sp - ldrh r0, [r5, 0x2] - ldr r2, _080684B8 - ands r2, r0 - orrs r2, r1 - ands r2, r6 - movs r3, 0xFC - lsls r3, 2 - ldrh r1, [r5, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r3 - mov r1, r8 - ands r0, r1 - movs r3, 0xF - movs r1, 0xF0 - lsls r1, 8 - ldr r4, _080684BC - ands r0, r4 - orrs r0, r1 - strh r0, [r5, 0x4] - mov r6, r9 - movs r1, 0x2 - ldrsh r0, [r6, r1] - lsls r0, 3 - adds r0, 0x8 - ands r0, r4 - lsls r0, 4 - ldrh r1, [r5, 0x6] - ands r3, r1 - orrs r3, r0 - strh r3, [r5, 0x6] - movs r3, 0 - ldrsh r0, [r6, r3] - lsls r0, 3 - adds r0, 0x40 - ldr r1, _080684C0 - ands r0, r1 - movs r1, 0xFE - lsls r1, 8 - ands r2, r1 - orrs r2, r0 - strh r2, [r5, 0x2] - movs r1, 0x80 - lsls r1, 1 - mov r0, sp - movs r2, 0 - movs r3, 0 - bl AddSprite -_08068486: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08068494: .4byte gUnknown_202EDCC -_08068498: .4byte gUnknown_2027370 -_0806849C: .4byte 0x0000feff -_080684A0: .4byte 0xffff0000 -_080684A4: .4byte 0x0000fdff -_080684A8: .4byte 0x0000f3ff -_080684AC: .4byte 0x0000efff -_080684B0: .4byte 0x0000dfff -_080684B4: .4byte 0x00003fff -_080684B8: .4byte 0x0000c1ff -_080684BC: .4byte 0x00000fff -_080684C0: .4byte 0x000001ff - thumb_func_end sub_8068344 - - thumb_func_start sub_80684C4 -sub_80684C4: - push {r4-r6,lr} - sub sp, 0x8 - ldr r0, _080685E8 - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080684D6 - b _080685DE -_080684D6: - ldr r6, _080685EC - movs r0, 0 - movs r1, 0 - str r0, [sp] - str r1, [sp, 0x4] - mov r0, sp - ldrh r0, [r0] - ldr r1, _080685F0 - ands r1, r0 - ldr r3, _080685F4 - ldr r0, [sp] - ands r0, r3 - orrs r0, r1 - str r0, [sp] - mov r1, sp - ldrh r1, [r1] - adds r2, r3, 0 - ands r2, r0 - orrs r2, r1 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _080685F8 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r5, _080685FC - adds r0, r5, 0 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _08068600 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _08068604 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - movs r4, 0x80 - lsls r4, 7 - mov r0, sp - ldrh r1, [r0] - ldr r0, _08068608 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - orrs r4, r0 - ands r3, r1 - orrs r3, r4 - str r3, [sp] - mov r3, sp - movs r2, 0xFC - lsls r2, 2 - ldrh r1, [r3, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r5 - movs r2, 0xF - movs r1, 0xF0 - lsls r1, 8 - ldr r4, _0806860C - ands r0, r4 - orrs r0, r1 - strh r0, [r3, 0x4] - movs r1, 0x2 - ldrsh r0, [r6, r1] - lsls r0, 3 - adds r0, 0x70 - ands r0, r4 - lsls r0, 4 - ldrh r1, [r3, 0x6] - ands r2, r1 - orrs r2, r0 - strh r2, [r3, 0x6] - movs r1, 0 - ldrsh r0, [r6, r1] - lsls r0, 3 - adds r0, 0x40 - ldr r1, _08068610 - ands r0, r1 - strh r0, [r3, 0x2] - subs r1, 0xFF - mov r0, sp - movs r2, 0 - movs r3, 0 - bl AddSprite -_080685DE: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080685E8: .4byte gUnknown_202EDCC -_080685EC: .4byte gUnknown_2027370 -_080685F0: .4byte 0x0000feff -_080685F4: .4byte 0xffff0000 -_080685F8: .4byte 0x0000fdff -_080685FC: .4byte 0x0000f3ff -_08068600: .4byte 0x0000efff -_08068604: .4byte 0x0000dfff -_08068608: .4byte 0x00003fff -_0806860C: .4byte 0x00000fff -_08068610: .4byte 0x000001ff - thumb_func_end sub_80684C4 - - thumb_func_start sub_8068614 -sub_8068614: - push {lr} - ldr r0, _0806862C - ldr r1, _08068630 - bl OpenFileAndGetFileDataPtr - ldr r1, _08068634 - ldr r1, [r1] - ldr r2, _08068638 - adds r1, r2 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0806862C: .4byte gUnknown_8106E98 -_08068630: .4byte gMonsterFileArchive -_08068634: .4byte gDungeon -_08068638: .4byte 0x000181e4 - thumb_func_end sub_8068614 - - thumb_func_start sub_806863C -sub_806863C: - push {lr} - ldr r0, _08068650 - ldr r0, [r0] - ldr r1, _08068654 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - pop {r0} - bx r0 - .align 2, 0 -_08068650: .4byte gDungeon -_08068654: .4byte 0x000181e4 - thumb_func_end sub_806863C - - thumb_func_start sub_8068658 -sub_8068658: - push {r4-r6,lr} - movs r4, 0 - ldr r6, _08068740 - ldr r5, _08068744 - ldr r3, _08068748 - movs r2, 0 -_08068664: - ldr r0, [r5] - lsls r1, r4, 2 - adds r0, r3 - adds r0, r1 - str r2, [r0] - adds r4, 0x1 - cmp r4, r6 - ble _08068664 - ldr r0, _0806874C - movs r1, 0x1 - bl sub_8068838 - movs r4, 0 - ldr r1, _08068744 - ldr r0, [r1] - ldr r2, _08068750 - adds r0, r2 - ldr r0, [r0] - cmp r4, r0 - bge _080686B2 - adds r6, r1, 0 - ldr r5, _08068754 -_08068690: - ldr r0, [r6] - adds r0, r5 - bl ExtractSpeciesIndex - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - bl sub_8068838 - adds r5, 0x8 - adds r4, 0x1 - ldr r0, [r6] - ldr r1, _08068750 - adds r0, r1 - ldr r0, [r0] - cmp r4, r0 - blt _08068690 -_080686B2: - ldr r0, _08068744 - ldr r0, [r0] - movs r2, 0xD1 - lsls r2, 3 - adds r1, r0, r2 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080686CA - movs r1, 0x1 - bl sub_8068838 -_080686CA: - movs r4, 0 - ldr r6, _08068758 - movs r5, 0x1 -_080686D0: - movs r0, 0x64 - muls r0, r4 - ldr r1, _0806875C - adds r0, r1 - ldr r1, [r6] - adds r1, r0 - ldrh r2, [r1] - adds r0, r5, 0 - ands r0, r2 - cmp r0, 0 - beq _080686F8 - lsrs r0, r2, 1 - ands r0, r5 - cmp r0, 0 - beq _080686F8 - movs r2, 0xE - ldrsh r0, [r1, r2] - movs r1, 0 - bl sub_8068838 -_080686F8: - adds r4, 0x1 - cmp r4, 0x3 - ble _080686D0 - ldr r0, _08068744 - ldr r0, [r0] - ldr r1, _08068760 - adds r0, r1 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0x31 - bne _08068738 - movs r4, 0 - ldr r5, _08068758 -_08068712: - movs r0, 0x58 - muls r0, r4 - ldr r1, _08068764 - adds r0, r1 - ldr r1, [r5] - adds r2, r1, r0 - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08068732 - movs r1, 0x8 - ldrsh r0, [r2, r1] - movs r1, 0x1 - bl sub_8068838 -_08068732: - adds r4, 0x1 - cmp r4, 0x3 - ble _08068712 -_08068738: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08068740: .4byte 0x000001a7 -_08068744: .4byte gDungeon -_08068748: .4byte 0x00017b44 -_0806874C: .4byte 0x000001a5 -_08068750: .4byte 0x000037e4 -_08068754: .4byte 0x0000343c -_08068758: .4byte gRecruitedPokemonRef -_0806875C: .4byte 0x00008df8 -_08068760: .4byte 0x00003a14 -_08068764: .4byte 0x00008f88 - thumb_func_end sub_8068658 - .align 2, 0 diff --git a/asm/code_8066D04.s b/asm/code_8066D04.s new file mode 100644 index 000000000..e1cf29ecb --- /dev/null +++ b/asm/code_8066D04.s @@ -0,0 +1,3146 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_8066E14 +sub_8066E14: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + mov r9, r0 + ldr r0, [r0, 0x70] + mov r10, r0 + mov r0, r9 + movs r1, 0 + movs r2, 0x5 + bl sub_8044D90 + adds r6, r0, 0 + mov r0, r9 + movs r1, 0x1 + movs r2, 0x6 + bl sub_8044D90 + adds r2, r0, 0 + adds r7, r2, 0 + mov r0, r10 + adds r0, 0x48 + ldrb r0, [r0] + cmp r0, 0x80 + beq _08066E54 + ldr r0, _08066E50 + b _08066F1E + .align 2, 0 +_08066E50: .4byte gUnknown_80F8E2C +_08066E54: + mov r0, r10 + adds r0, 0x50 + ldrb r1, [r0] + str r0, [sp, 0x8] + cmp r1, 0x14 + bhi _08066E80 + ldrb r1, [r2] + movs r0, 0x18 + ands r0, r1 + cmp r0, 0x18 + bne _08066E80 + ldr r0, _08066E78 + adds r1, r2, 0 + bl sub_8045BF8 + ldr r0, _08066E7C + b _08066F1E + .align 2, 0 +_08066E78: .4byte gUnknown_202DE58 +_08066E7C: .4byte gUnknown_80F8BE0 +_08066E80: + ldr r1, [sp, 0x8] + ldrb r0, [r1] + cmp r0, 0x81 + bne _08066EA8 + adds r2, r7, 0 + ldrb r1, [r2] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08066EA8 + ldr r0, _08066EA0 + adds r1, r2, 0 + bl sub_8045BF8 + ldr r0, _08066EA4 + b _08066F1E + .align 2, 0 +_08066EA0: .4byte gUnknown_202DEA8 +_08066EA4: .4byte gUnknown_80F8C48 +_08066EA8: + mov r2, r9 + movs r3, 0x4 + ldrsh r0, [r2, r3] + movs r3, 0x6 + ldrsh r1, [r2, r3] + bl GetTile + ldr r0, [r0, 0x14] + cmp r0, 0 + beq _08066ECC + bl GetEntityType + cmp r0, 0x3 + beq _08066ECC + ldr r0, _08066EC8 + b _08066F1E + .align 2, 0 +_08066EC8: .4byte gUnknown_80F8E54 +_08066ECC: + adds r0, r6, 0 + ldr r5, [r0] + str r5, [sp] + adds r4, r7, 0 + ldr r6, [r4] + mov r8, sp + str r6, [sp, 0x4] + movs r3, 0xEF + mov r0, sp + ldrb r2, [r0] + ands r2, r3 + ldr r1, _08066F28 + adds r0, r1, 0 + ands r0, r5 + orrs r0, r2 + str r0, [sp] + mov r2, r8 + ldrb r0, [r2, 0x4] + ands r0, r3 + ands r1, r6 + orrs r1, r0 + str r1, [sp, 0x4] + mov r5, r10 + adds r5, 0x4C + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80461C8 + movs r0, 0 + strb r0, [r4, 0x2] + strb r0, [r4, 0x1] + strb r0, [r4] + add r1, sp, 0x4 + adds r0, r5, 0 + movs r2, 0x1 + bl sub_80460F8 + lsls r0, 24 + cmp r0, 0 + bne _08066F30 + ldr r0, _08066F2C +_08066F1E: + ldr r1, [r0] + mov r0, r9 + bl SendMessage + b _08066F7E + .align 2, 0 +_08066F28: .4byte 0xffffff00 +_08066F2C: .4byte gUnknown_80F8E78 +_08066F30: + ldr r3, [sp, 0x8] + ldrb r0, [r3] + cmp r0, 0x81 + bne _08066F40 + ldr r0, [sp] + mov r1, r10 + str r0, [r1, 0x60] + b _08066F46 +_08066F40: + mov r0, sp + bl AddItemToInventory +_08066F46: + bl FillInventoryGaps + ldr r4, _08066F90 + add r1, sp, 0x4 + adds r0, r4, 0 + bl sub_8045BF8 + adds r4, 0x50 + adds r0, r4, 0 + mov r1, sp + bl sub_8045BF8 + ldr r0, _08066F94 + bl PlaySoundEffect + ldr r0, _08066F98 + ldr r1, [r0] + mov r0, r9 + bl SendMessage + ldr r0, _08066F9C + ldr r0, [r0] + ldr r2, _08066FA0 + adds r0, r2 + ldrb r1, [r0] + mov r0, r9 + bl sub_807AB38 +_08066F7E: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08066F90: .4byte gUnknown_202DE58 +_08066F94: .4byte 0x0000014d +_08066F98: .4byte gUnknown_80F8EAC +_08066F9C: .4byte gDungeon +_08066FA0: .4byte 0x00003a08 + thumb_func_end sub_8066E14 + + thumb_func_start sub_8066FA4 +sub_8066FA4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + adds r7, r0, 0 + ldr r0, [r7, 0x70] + mov r9, r0 + movs r1, 0x4 + ldrsh r0, [r7, r1] + movs r2, 0x6 + ldrsh r1, [r7, r2] + bl GetTile + mov r10, r0 + adds r0, r7, 0 + movs r1, 0 + movs r2, 0x7 + bl sub_8044D90 + adds r4, r0, 0 + adds r5, r4, 0 + ldr r0, _08067000 + mov r8, r0 + adds r1, r4, 0 + bl sub_8045BF8 + mov r0, r9 + adds r0, 0x48 + ldrb r0, [r0] + cmp r0, 0x14 + bhi _08067008 + ldrb r1, [r4] + movs r0, 0x18 + ands r0, r1 + cmp r0, 0x18 + bne _08067008 + mov r0, r8 + adds r0, 0x50 + adds r1, r4, 0 + bl sub_8045BF8 + ldr r0, _08067004 + b _0806709E + .align 2, 0 +_08067000: .4byte gUnknown_202DE58 +_08067004: .4byte gUnknown_80F8C48 +_08067008: + mov r0, r9 + adds r0, 0x48 + ldrb r1, [r0] + str r0, [sp, 0x8] + cmp r1, 0x81 + bne _08067028 + adds r0, r5, 0 + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08067028 + ldr r0, _08067024 + b _0806709E + .align 2, 0 +_08067024: .4byte gUnknown_80F8C44 +_08067028: + mov r1, r10 + ldr r0, [r1, 0x14] + cmp r0, 0 + beq _08067040 + bl GetEntityType + cmp r0, 0x3 + beq _08067040 + ldr r0, _0806703C + b _0806709E + .align 2, 0 +_0806703C: .4byte gUnknown_80F8E54 +_08067040: + mov r2, r10 + ldr r0, [r2, 0x14] + bl GetItemData + adds r4, r0, 0 + ldr r0, _080670A8 + adds r1, r4, 0 + bl sub_8045BF8 + ldr r6, [r5] + str r6, [sp] + ldr r4, [r4] + mov r8, sp + str r4, [sp, 0x4] + movs r3, 0xEF + mov r0, sp + ldrb r2, [r0] + ands r2, r3 + ldr r1, _080670AC + adds r0, r1, 0 + ands r0, r6 + orrs r0, r2 + str r0, [sp] + mov r2, r8 + ldrb r0, [r2, 0x4] + ands r0, r3 + ands r1, r4 + orrs r1, r0 + str r1, [sp, 0x4] + adds r4, r7, 0x4 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80461C8 + movs r0, 0 + strb r0, [r5, 0x2] + strb r0, [r5, 0x1] + strb r0, [r5] + adds r0, r4, 0 + mov r1, sp + movs r2, 0x1 + bl sub_80460F8 + lsls r0, 24 + cmp r0, 0 + bne _080670B4 + ldr r0, _080670B0 +_0806709E: + ldr r1, [r0] + adds r0, r7, 0 + bl SendMessage + b _080670EE + .align 2, 0 +_080670A8: .4byte gUnknown_202DEA8 +_080670AC: .4byte 0xffffff00 +_080670B0: .4byte gUnknown_80F8E78 +_080670B4: + ldr r1, [sp, 0x8] + ldrb r0, [r1] + cmp r0, 0x81 + bne _080670C4 + ldr r0, [sp, 0x4] + mov r2, r9 + str r0, [r2, 0x60] + b _080670CA +_080670C4: + add r0, sp, 0x4 + bl AddItemToInventory +_080670CA: + bl FillInventoryGaps + ldr r0, _08067100 + bl PlaySoundEffect + ldr r0, _08067104 + ldr r1, [r0] + adds r0, r7, 0 + bl SendMessage + ldr r0, _08067108 + ldr r0, [r0] + ldr r1, _0806710C + adds r0, r1 + ldrb r1, [r0] + adds r0, r7, 0 + bl sub_807AB38 +_080670EE: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08067100: .4byte 0x0000014d +_08067104: .4byte gUnknown_80F8EAC +_08067108: .4byte gDungeon +_0806710C: .4byte 0x00003a08 + thumb_func_end sub_8066FA4 + + thumb_func_start sub_8067110 +sub_8067110: + push {r4-r6,lr} + sub sp, 0xC + adds r5, r0, 0 + ldr r4, [r5, 0x70] + movs r1, 0 + movs r2, 0x8 + bl sub_8044D90 + adds r6, r0, 0 + ldr r0, _08067190 + adds r1, r6, 0 + bl sub_8045BF8 + ldr r0, _08067194 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument_2 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8048D50 + lsls r0, 24 + cmp r0, 0 + beq _08067188 + adds r0, r6, 0 + bl sub_80464AC + adds r1, r0, 0 + adds r0, r5, 0 + bl SendMessage + ldr r0, [r6] + str r0, [sp, 0x8] + adds r0, r5, 0 + movs r1, 0 + movs r2, 0x66 + bl sub_8044DF0 + movs r0, 0x1E + movs r1, 0x11 + bl sub_803E708 + str r5, [sp] + add r0, sp, 0x8 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0 + movs r2, 0 + adds r3, r5, 0 + bl sub_80479B8 + ldr r0, _08067198 + ldr r0, [r0] + ldr r1, _0806719C + adds r0, r1 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_807AB38 +_08067188: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08067190: .4byte gUnknown_202DE58 +_08067194: .4byte gAvailablePokemonNames +_08067198: .4byte gDungeon +_0806719C: .4byte 0x00003a08 + thumb_func_end sub_8067110 + + thumb_func_start sub_80671A0 +sub_80671A0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + adds r6, r0, 0 + ldr r0, [r6, 0x70] + mov r8, r0 + adds r0, r6, 0 + movs r1, 0 + movs r2, 0x9 + bl sub_8044D90 + adds r4, r0, 0 + mov r0, r8 + adds r0, 0x48 + ldrb r0, [r0] + cmp r0, 0x81 + bne _080671E8 + ldrb r1, [r4] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080671E8 + ldr r0, _080671E0 + adds r1, r4, 0 + bl sub_8045BF8 + ldr r0, _080671E4 + b _08067230 + .align 2, 0 +_080671E0: .4byte gUnknown_202DE58 +_080671E4: .4byte gUnknown_80F8BE0 +_080671E8: + ldrb r0, [r4, 0x2] + bl GetItemCategory + lsls r0, 24 + cmp r0, 0 + beq _08067202 + ldrb r0, [r4, 0x2] + bl GetItemCategory + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08067220 +_08067202: + ldrb r1, [r4] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08067220 + ldr r0, _08067218 + adds r1, r4, 0 + bl sub_8045BF8 + ldr r0, _0806721C + b _08067230 + .align 2, 0 +_08067218: .4byte gUnknown_202DE58 +_0806721C: .4byte gUnknown_80F8BE0 +_08067220: + adds r0, r6, 0 + movs r1, 0x1 + bl ShouldMonsterRunAwayAndShowEffect + lsls r0, 24 + cmp r0, 0 + beq _08067248 + ldr r0, _08067244 +_08067230: + ldr r1, [r0] + adds r0, r6, 0 + bl SendMessage + movs r0, 0x14 + movs r1, 0x4C + bl sub_803E708 + b _080674F8 + .align 2, 0 +_08067244: .4byte gUnknown_80FF76C +_08067248: + ldr r2, [r4] + str r2, [sp, 0x4] + movs r1, 0xEF + add r0, sp, 0x4 + ldrb r0, [r0] + ands r0, r1 + ldr r1, _080672C0 + ands r2, r1 + orrs r2, r0 + str r2, [sp, 0x4] + mov r0, r8 + adds r0, 0x48 + ldrb r1, [r0] + adds r5, r0, 0 + cmp r1, 0x80 + bne _08067272 + movs r4, 0 + adds r0, 0x4 + movs r1, 0x1 + bl sub_80461C8 +_08067272: + movs r7, 0x1 + ldr r0, [sp, 0x4] + lsrs r0, 16 + lsls r0, 24 + lsrs r0, 24 + bl GetItemCategory + lsls r0, 24 + cmp r0, 0 + beq _0806729A + ldr r0, [sp, 0x4] + lsrs r0, 16 + lsls r0, 24 + lsrs r0, 24 + bl GetItemCategory + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080672A8 +_0806729A: + ldr r0, [sp, 0x4] + lsrs r0, 8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _080672A8 + movs r7, 0 +_080672A8: + cmp r7, 0 + beq _080672C4 + ldrb r0, [r5] + cmp r0, 0x80 + beq _080672F6 + movs r0, 0 + strb r0, [r4, 0x2] + strb r0, [r4, 0x1] + strb r0, [r4] + bl FillInventoryGaps + b _080672F6 + .align 2, 0 +_080672C0: .4byte 0xffffff00 +_080672C4: + ldrb r0, [r5] + cmp r0, 0x80 + bne _080672F0 + ldr r2, [sp, 0x4] + lsrs r0, r2, 8 + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 16 + ldr r1, _080672EC + ands r2, r1 + orrs r2, r0 + str r2, [sp, 0x4] + mov r0, r8 + adds r0, 0x4C + add r1, sp, 0x4 + movs r2, 0x1 + bl sub_80460F8 + b _080672F6 + .align 2, 0 +_080672EC: .4byte 0xffff00ff +_080672F0: + ldrb r0, [r4, 0x1] + subs r0, 0x1 + strb r0, [r4, 0x1] +_080672F6: + adds r0, r6, 0 + movs r1, 0x29 + bl HasHeldItem + lsls r0, 24 + cmp r0, 0 + beq _08067310 + movs r0, 0x8 + bl DungeonRandInt + mov r1, r8 + adds r1, 0x46 + strb r0, [r1] +_08067310: + adds r0, r6, 0 + bl sub_8045888 + lsls r0, 24 + movs r1, 0xE0 + add r1, r8 + mov r10, r1 + adds r1, r6, 0x4 + str r1, [sp, 0x10] + add r1, sp, 0xC + mov r9, r1 + cmp r0, 0 + beq _08067364 + mov r0, r8 + adds r0, 0x46 + ldrb r4, [r0] + movs r1, 0xB2 + lsls r1, 1 + adds r0, r6, 0 + bl sub_80421C0 + movs r7, 0x7 + movs r5, 0x7 +_0806733E: + subs r4, 0x1 + ands r4, r7 + adds r0, r6, 0 + movs r1, 0 + adds r2, r4, 0 + bl sub_806CDD4 + movs r0, 0x2 + movs r1, 0x15 + bl sub_803E708 + subs r5, 0x1 + cmp r5, 0 + bge _0806733E + movs r1, 0xB3 + lsls r1, 1 + add r1, r8 + movs r0, 0x4 + strb r0, [r1] +_08067364: + add r4, sp, 0x4 + ldrb r0, [r4, 0x2] + bl GetItemCategory + lsls r0, 24 + cmp r0, 0 + beq _08067380 + ldrb r0, [r4, 0x2] + bl GetItemCategory + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08067384 +_08067380: + movs r0, 0x1 + strb r0, [r4, 0x1] +_08067384: + ldr r0, _080673B0 + add r4, sp, 0x4 + adds r1, r4, 0 + bl sub_8045C08 + ldr r0, _080673B4 + mov r1, r8 + movs r2, 0 + bl SetMessageArgument_2 + ldrb r0, [r4, 0x2] + bl GetItemCategory + lsls r0, 24 + cmp r0, 0 + bne _080673BC + ldr r0, _080673B8 + ldr r1, [r0] + adds r0, r6, 0 + bl SendMessage + b _080673C6 + .align 2, 0 +_080673B0: .4byte gUnknown_202DE58 +_080673B4: .4byte gAvailablePokemonNames +_080673B8: .4byte gUnknown_80F8EC8 +_080673BC: + ldr r0, _080673F8 + ldr r1, [r0] + adds r0, r6, 0 + bl SendMessage +_080673C6: + add r0, sp, 0x4 + ldrb r0, [r0, 0x2] + bl GetItemCategory + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_8042208 + adds r0, r6, 0 + movs r1, 0x27 + bl HasHeldItem + lsls r0, 24 + cmp r0, 0 + beq _08067400 + ldr r0, _080673FC + ldr r1, [sp, 0xC] + ands r1, r0 + movs r0, 0x80 + lsls r0, 1 + orrs r1, r0 + str r1, [sp, 0xC] + b _08067408 + .align 2, 0 +_080673F8: .4byte gUnknown_80F8EC4 +_080673FC: .4byte 0xffff00ff +_08067400: + ldr r1, _0806741C + ldr r0, [sp, 0xC] + ands r0, r1 + str r0, [sp, 0xC] +_08067408: + mov r1, r10 + ldrb r0, [r1] + cmp r0, 0x1 + beq _08067440 + cmp r0, 0x1 + bgt _08067420 + cmp r0, 0 + beq _08067426 + b _08067462 + .align 2, 0 +_0806741C: .4byte 0xffff00ff +_08067420: + cmp r0, 0x2 + beq _0806744C + b _08067462 +_08067426: + ldr r1, _08067438 + ldr r0, [sp, 0xC] + ands r0, r1 + ldr r1, _0806743C + ands r0, r1 + movs r1, 0xA0 + lsls r1, 12 + b _0806745E + .align 2, 0 +_08067438: .4byte 0xffffff00 +_0806743C: .4byte 0x0000ffff +_08067440: + ldr r1, _08067448 + ldr r0, [sp, 0xC] + ands r0, r1 + b _08067456 + .align 2, 0 +_08067448: .4byte 0xffffff00 +_0806744C: + ldr r1, _080674B4 + ldr r0, [sp, 0xC] + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 +_08067456: + ldr r1, _080674B8 + ands r0, r1 + movs r1, 0xC6 + lsls r1, 15 +_0806745E: + orrs r0, r1 + str r0, [sp, 0xC] +_08067462: + adds r0, r6, 0 + movs r1, 0xF + bl HasHeldItem + lsls r0, 24 + cmp r0, 0 + beq _08067486 + ldr r1, _080674B4 + ldr r0, [sp, 0xC] + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + ldr r1, _080674B8 + ands r0, r1 + movs r1, 0xC6 + lsls r1, 15 + orrs r0, r1 + str r0, [sp, 0xC] +_08067486: + add r0, sp, 0x4 + ldrb r0, [r0, 0x2] + bl GetItemCategory + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080674BC + add r4, sp, 0x8 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8083904 + mov r0, r9 + str r0, [sp] + adds r0, r6, 0 + add r1, sp, 0x4 + ldr r2, [sp, 0x10] + adds r3, r4, 0 + bl sub_80475C4 + b _080674D0 + .align 2, 0 +_080674B4: .4byte 0xffffff00 +_080674B8: .4byte 0x0000ffff +_080674BC: + mov r0, r8 + adds r0, 0x46 + ldrb r3, [r0] + mov r1, r9 + str r1, [sp] + adds r0, r6, 0 + add r1, sp, 0x4 + ldr r2, [sp, 0x10] + bl sub_8047190 +_080674D0: + adds r0, r6, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080674F8 + mov r0, r8 + adds r0, 0x46 + ldrb r1, [r0] + adds r0, r6, 0 + bl sub_806CE68 + ldr r0, _08067508 + ldr r0, [r0] + ldr r1, _0806750C + adds r0, r1 + ldrb r1, [r0] + adds r0, r6, 0 + bl sub_807AB38 +_080674F8: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08067508: .4byte gDungeon +_0806750C: .4byte 0x00003a08 + thumb_func_end sub_80671A0 + + thumb_func_start sub_8067510 +sub_8067510: + push {r4,lr} + adds r4, r0, 0 + bl sub_806773C + adds r1, r0, 0 + movs r2, 0x1 + negs r2, r2 + adds r0, r4, 0 + bl sub_8067558 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8067510 + + thumb_func_start sub_806752C +sub_806752C: + push {r4,lr} + ldr r1, _08067550 + ldr r1, [r1] + ldrb r0, [r0, 0x4] + lsls r0, 2 + ldr r2, _08067554 + adds r1, r2 + adds r1, r0 + ldr r4, [r1] + bl GetLeader + adds r1, r4, 0 + movs r2, 0 + bl sub_8067558 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08067550: .4byte gDungeon +_08067554: .4byte 0x0001357c + thumb_func_end sub_806752C + + thumb_func_start sub_8067558 +sub_8067558: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x12C + adds r6, r0, 0 + adds r5, r1, 0 + mov r9, r2 + ldr r0, [r6, 0x70] + mov r8, r0 + cmp r5, 0 + bne _0806757C + ldr r0, _08067578 + ldr r1, [r0] + movs r0, 0 + b _08067716 + .align 2, 0 +_08067578: .4byte gUnknown_80F8EE4 +_0806757C: + adds r0, r6, 0 + bl sub_8070BC0 + lsls r0, 24 + cmp r0, 0 + bne _08067594 + ldr r0, _08067590 + ldr r1, [r0] + movs r0, 0 + b _08067716 + .align 2, 0 +_08067590: .4byte gUnknown_80F8EE4 +_08067594: + adds r0, r6, 0 + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0 + bl CanTarget + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080675AA + b _0806771E +_080675AA: + adds r0, r5, 0 + adds r1, r6, 0 + movs r2, 0x1 + movs r3, 0 + bl CanTarget + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080675C0 + b _0806771E +_080675C0: + ldr r7, [r5, 0x70] + ldr r4, _08067608 + adds r0, r4, 0 + adds r1, r7, 0 + movs r2, 0 + bl SetMessageArgument_2 + adds r4, 0x50 + adds r0, r4, 0 + mov r1, r8 + movs r2, 0x7 + bl SetMessageArgument_2 + bl sub_8084778 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_807A96C + adds r0, r5, 0 + bl sub_8070BC0 + lsls r0, 24 + cmp r0, 0 + beq _08067600 + adds r0, r5, 0 + movs r1, 0x1 + bl CannotMove + lsls r0, 24 + cmp r0, 0 + beq _08067610 +_08067600: + ldr r0, _0806760C + ldr r1, [r0] + movs r0, 0 + b _08067716 + .align 2, 0 +_08067608: .4byte gAvailablePokemonNames +_0806760C: .4byte gUnknown_80FE008 +_08067610: + adds r0, r6, 0x4 + adds r1, r5, 0x4 + bl GetDirectionTowardsPosition + adds r1, r0, 0 + adds r0, r6, 0 + bl sub_806CEFC + mov r1, r9 + cmp r1, 0 + blt _0806762E + adds r0, r5, 0 + bl sub_806CEFC + b _0806763C +_0806762E: + mov r0, r8 + adds r0, 0x46 + ldrb r1, [r0] + adds r1, 0x4 + adds r0, r5, 0 + bl sub_806CEFC +_0806763C: + ldrb r0, [r7, 0x8] + cmp r0, 0x1 + bne _08067648 + bl sub_807EF84 + b _0806772A +_08067648: + adds r0, r7, 0 + adds r0, 0xA4 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08067694 + ldr r0, _08067668 + ldr r1, [r0] + ldr r2, _0806766C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _08067674 + ldr r0, _08067670 + ldr r1, [r0] + movs r0, 0 + b _08067716 + .align 2, 0 +_08067668: .4byte gDungeon +_0806766C: .4byte 0x0000066e +_08067670: .4byte gUnknown_80FF674 +_08067674: + ldr r3, _08067688 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _0806768C + adds r0, r5, 0 + bl sub_80845E0 + b _0806772A + .align 2, 0 +_08067688: .4byte 0x00000677 +_0806768C: + adds r0, r5, 0 + bl sub_8084448 + b _0806772A +_08067694: + movs r0, 0x4 + ldrsh r5, [r7, r0] + movs r6, 0 + adds r0, r7, 0 + adds r0, 0x40 + ldrb r0, [r0] + cmp r0, 0x4A + bne _080676AA + movs r5, 0xD2 + lsls r5, 1 + b _080676CC +_080676AA: + cmp r0, 0x47 + bne _080676B8 + ldr r5, _080676B4 + b _080676CC + .align 2, 0 +_080676B4: .4byte 0x000001a5 +_080676B8: + cmp r0, 0x41 + bne _080676CC + ldr r0, _080676E8 + ldr r0, [r0] + ldr r1, _080676EC + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080676CC + movs r6, 0x1 +_080676CC: + movs r3, 0x10 + ldrsh r2, [r7, r3] + adds r0, r2, 0 + cmp r2, 0 + bge _080676D8 + adds r0, r2, 0x3 +_080676D8: + movs r3, 0xE + ldrsh r1, [r7, r3] + asrs r0, 2 + cmp r1, r0 + bgt _080676F0 + movs r2, 0x2 + b _08067708 + .align 2, 0 +_080676E8: .4byte gDungeon +_080676EC: .4byte 0x0000065c +_080676F0: + movs r0, 0xE + ldrsh r4, [r7, r0] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 1 + movs r1, 0xA + bl __divsi3 + movs r2, 0 + cmp r4, r0 + bgt _08067708 + movs r2, 0x1 +_08067708: + mov r0, sp + adds r1, r5, 0 + adds r3, r6, 0 + bl sub_806A3D4 + movs r0, 0 + mov r1, sp +_08067716: + movs r2, 0x1 + bl PrintFieldMessage + b _0806772A +_0806771E: + ldr r0, _08067738 + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl PrintFieldMessage +_0806772A: + add sp, 0x12C + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08067738: .4byte gUnknown_80F8EE4 + thumb_func_end sub_8067558 + + thumb_func_start sub_806773C +sub_806773C: + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80696A8 + adds r4, r0, 0 + cmp r4, 0 + beq _08067760 + adds r0, r4, 0 + bl GetEntityType + cmp r0, 0x1 + bne _08067760 + ldr r0, [r5, 0x70] + ldrb r0, [r0, 0x6] + cmp r0, 0 + bne _08067760 + adds r0, r4, 0 + b _08067762 +_08067760: + movs r0, 0 +_08067762: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806773C + + thumb_func_start sub_8067768 +sub_8067768: + push {r4,lr} + ldr r1, _0806778C + ldr r1, [r1] + ldrb r0, [r0, 0x4] + lsls r0, 2 + ldr r2, _08067790 + adds r1, r2 + adds r1, r0 + ldr r4, [r1] + bl GetLeader + adds r1, r4, 0 + movs r2, 0 + bl sub_8067794 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806778C: .4byte gDungeon +_08067790: .4byte 0x0001357c + thumb_func_end sub_8067768 + + thumb_func_start sub_8067794 +sub_8067794: + push {r4-r7,lr} + sub sp, 0x40 + adds r7, r1, 0 + ldr r4, [r7, 0x70] + cmp r7, 0 + bne _080677B4 + ldr r0, _080677B0 + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl PrintFieldMessage + b _0806786C + .align 2, 0 +_080677B0: .4byte gUnknown_80F8F08 +_080677B4: + ldr r0, _080677F0 + adds r1, r7, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _080677F4 + ldr r5, [r0] + ldr r0, _080677F8 + ldr r6, [r0] + ldrb r2, [r4, 0xA] + cmp r2, 0 + blt _08067834 + ldr r1, _080677FC + movs r0, 0x64 + muls r0, r2 + ldr r2, _08067800 + adds r0, r2 + ldr r1, [r1] + adds r4, r1, r0 + movs r1, 0xA + ldrsh r0, [r4, r1] + bl sub_806A564 + lsls r0, 24 + cmp r0, 0 + beq _0806780C + ldr r0, _08067804 + ldr r5, [r0] + ldr r0, _08067808 + b _08067832 + .align 2, 0 +_080677F0: .4byte gAvailablePokemonNames +_080677F4: .4byte gUnknown_80F9094 +_080677F8: .4byte gUnknown_80F913C +_080677FC: .4byte gRecruitedPokemonRef +_08067800: .4byte 0x00008df8 +_08067804: .4byte gUnknown_80F9114 +_08067808: .4byte gUnknown_80F9154 +_0806780C: + movs r2, 0xA + ldrsh r0, [r4, r2] + bl sub_806A58C + lsls r0, 24 + cmp r0, 0 + beq _08067834 + bl IsMakuhitaTrainingMaze + lsls r0, 24 + cmp r0, 0 + beq _0806782C + ldr r0, _08067828 + b _0806782E + .align 2, 0 +_08067828: .4byte gUnknown_80F90DC +_0806782C: + ldr r0, _08067874 +_0806782E: + ldr r5, [r0] + ldr r0, _08067878 +_08067832: + ldr r6, [r0] +_08067834: + movs r0, 0 + adds r1, r5, 0 + movs r2, 0 + bl sub_8052B8C + cmp r0, 0x1 + bne _0806786C + ldr r4, _0806787C + mov r0, sp + adds r1, r4, 0 + movs r2, 0x40 + bl strncpy + ldr r1, _08067880 + adds r0, r7, 0 + movs r2, 0 + bl sub_8068FE0 + adds r0, r4, 0 + mov r1, sp + movs r2, 0x40 + bl strncpy + movs r0, 0 + adds r1, r6, 0 + movs r2, 0x1 + bl PrintFieldMessage +_0806786C: + add sp, 0x40 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08067874: .4byte gUnknown_80F90C8 +_08067878: .4byte gUnknown_80F9150 +_0806787C: .4byte gAvailablePokemonNames +_08067880: .4byte 0x0000021d + thumb_func_end sub_8067794 + + thumb_func_start sub_8067884 +sub_8067884: + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + movs r6, 0 + b _0806789A +_0806788E: + ldr r1, _08067900 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080678C6 + adds r6, 0x1 +_0806789A: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8070828 + cmp r6, r0 + bge _080678C6 + ldr r4, [r5, 0x70] + adds r0, r4, 0 + adds r0, 0x50 + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + adds r0, r5, 0 + movs r2, 0x1 + movs r3, 0 + bl sub_8055A00 + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + beq _0806788E +_080678C6: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8057588 + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _080678F6 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080678F0 + ldr r0, [r5, 0x70] + adds r0, 0x50 + ldrb r1, [r0] + adds r0, r5, 0 + bl sub_806A9B4 +_080678F0: + adds r0, r5, 0 + bl sub_806A1B0 +_080678F6: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08067900: .4byte 0x00000159 + thumb_func_end sub_8067884 + + thumb_func_start sub_8067904 +sub_8067904: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + adds r5, r0, 0 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + ldr r6, [r5, 0x70] + ldr r1, _08067940 + movs r0, 0 + str r0, [r1] + add r0, sp, 0x8 + mov r1, r9 + bl InitPokemonMove + adds r0, r6, 0 + adds r0, 0xBC + ldrb r0, [r0] + cmp r0, 0x1 + bne _0806794C + ldr r0, _08067944 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _08067948 + b _08067962 + .align 2, 0 +_08067940: .4byte gUnknown_202F208 +_08067944: .4byte gAvailablePokemonNames +_08067948: .4byte gUnknown_80F8F20 +_0806794C: + adds r0, r6, 0 + adds r0, 0xAC + ldrb r0, [r0] + cmp r0, 0x4 + bne _08067974 + ldr r0, _0806796C + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _08067970 +_08067962: + ldr r1, [r0] + adds r0, r5, 0 + bl SendMessage + b _08067A56 + .align 2, 0 +_0806796C: .4byte gAvailablePokemonNames +_08067970: .4byte gUnknown_80F8F38 +_08067974: + movs r0, 0xB0 + lsls r0, 1 + movs r1, 0 + mov r10, r1 + cmp r9, r0 + bne _08067984 + movs r2, 0x1 + mov r10, r2 +_08067984: + movs r0, 0 + mov r8, r0 + movs r7, 0 + add r4, sp, 0x8 + b _080679D2 +_0806798E: + movs r1, 0xBC + lsls r1, 1 + adds r0, r6, r1 + strh r7, [r0] + ldrb r0, [r4] + movs r1, 0x8 + orrs r0, r1 + orrs r0, r7 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + movs r0, 0xA + strb r0, [r4, 0x4] + str r7, [sp] + str r4, [sp, 0x4] + adds r0, r5, 0 + mov r1, r10 + movs r2, 0 + movs r3, 0 + bl sub_8055FA0 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080679DE + ldr r2, _08067A68 + adds r0, r6, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _080679DE + movs r0, 0x1 + add r8, r0 +_080679D2: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8070828 + cmp r8, r0 + blt _0806798E +_080679DE: + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08067A56 + movs r0, 0xB0 + lsls r0, 1 + cmp r9, r0 + bne _08067A04 + ldr r0, _08067A6C + ldr r0, [r0] + cmp r0, 0 + bne _08067A04 + ldr r0, _08067A70 + ldr r1, [r0] + adds r0, r5, 0 + bl SendMessage +_08067A04: + ldrb r0, [r6, 0x7] + cmp r0, 0 + beq _08067A50 + movs r0, 0xB0 + lsls r0, 1 + cmp r9, r0 + beq _08067A50 + ldr r4, _08067A74 + adds r3, r6, 0 + adds r3, 0x46 + ldrb r0, [r3] + lsls r0, 2 + adds r0, r4 + ldrh r0, [r0] + ldrh r1, [r5, 0x4] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + ldr r2, _08067A78 + ldr r1, [sp, 0x10] + ands r1, r2 + orrs r1, r0 + str r1, [sp, 0x10] + ldrb r0, [r3] + lsls r0, 2 + adds r0, r4 + ldrh r0, [r0, 0x2] + ldrh r2, [r5, 0x6] + adds r0, r2 + lsls r0, 16 + ldr r2, _08067A7C + ands r1, r2 + orrs r1, r0 + str r1, [sp, 0x10] + add r0, sp, 0x10 + movs r1, 0x1 + bl sub_807FE44 +_08067A50: + adds r0, r5, 0 + bl sub_8071DA4 +_08067A56: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08067A68: .4byte 0x00000159 +_08067A6C: .4byte gUnknown_202F208 +_08067A70: .4byte gUnknown_80FC690 +_08067A74: .4byte gAdjacentTileOffsets +_08067A78: .4byte 0xffff0000 +_08067A7C: .4byte 0x0000ffff + thumb_func_end sub_8067904 + + thumb_func_start sub_8067A80 +sub_8067A80: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x6C + str r1, [sp, 0x68] + mov r8, r2 + mov r9, r3 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x64] + ldr r1, _08067AC8 + add r0, sp, 0x4 + movs r2, 0x60 + bl memcpy + ldr r1, _08067ACC + movs r0, 0 + str r0, [r1] + mov r10, r0 + cmp r10, r8 + blt _08067AB0 + b _08067ED8 +_08067AB0: + ldr r5, _08067AD0 + mov r4, r9 + mov r3, r8 +_08067AB6: + ldm r4!, {r2} + ldrh r1, [r2] + adds r0, r5, 0 + ands r0, r1 + strh r0, [r2] + subs r3, 0x1 + cmp r3, 0 + bne _08067AB6 + b _08067ED8 + .align 2, 0 +_08067AC8: .4byte gUnknown_8106DC8 +_08067ACC: .4byte gUnknown_202F30C +_08067AD0: .4byte 0x00007fff +_08067AD4: + movs r7, 0 + ldr r1, _08067B98 + movs r0, 0x1 + strb r0, [r1] + strb r7, [r1, 0x1] + movs r0, 0xE + strb r0, [r1, 0x2] + strb r7, [r1, 0x3] + add r0, sp, 0x4 + movs r1, 0x1 + bl sub_803ECB4 + ldr r5, _08067B9C + ldr r2, [r5] + ldr r0, [sp, 0x68] + str r0, [sp] + ldr r0, [sp, 0x64] + mov r1, r9 + mov r3, r8 + bl sub_8067F00 + ldr r4, _08067BA0 + mov r0, r8 + cmp r0, 0x8 + ble _08067B08 + movs r0, 0x8 +_08067B08: + strh r0, [r4, 0x1A] + mov r1, r10 + strh r1, [r4, 0x18] + movs r0, 0x8 + strh r0, [r4, 0x1C] + strh r7, [r4, 0x1E] + strh r7, [r4, 0x20] + strh r7, [r4, 0x4] + movs r0, 0x12 + strh r0, [r4, 0x6] + strh r7, [r4, 0xC] + strh r7, [r4, 0xE] + strh r7, [r4, 0x14] + str r7, [r4] + adds r0, r4, 0 + adds r0, 0x28 + bl sub_801317C + adds r0, r4, 0 + movs r1, 0 + bl sub_80137B0 + adds r6, r5, 0 +_08067B36: + ldr r0, _08067BA0 + bl AddMenuCursorSprite + movs r5, 0 + movs r7, 0 + ldr r0, [r6] + mov r2, r8 + subs r0, r2, r0 + cmp r0, 0x8 + ble _08067B50 + movs r5, 0x1 + bl sub_80684C4 +_08067B50: + ldr r0, [r6] + cmp r0, 0 + beq _08067B5C + movs r7, 0x1 + bl sub_8068344 +_08067B5C: + movs r0, 0 + ldr r1, _08067BA4 + bl sub_8014140 + adds r4, r0, 0 + movs r0, 0x37 + bl sub_803E46C + cmp r4, 0x2 + bne _08067BAC + cmp r5, 0 + beq _08067BAC + ldr r0, [r6] + mov r3, r8 + subs r0, r3, r0 + cmp r0, 0x8 + ble _08067BF0 + ldr r5, _08067BA8 + movs r4, 0x5 +_08067B82: + ldr r1, [r5] + movs r0, 0 + bl _call_via_r1 + movs r0, 0x37 + bl sub_803E46C + subs r4, 0x1 + cmp r4, 0 + bge _08067B82 + b _08067BEA + .align 2, 0 +_08067B98: .4byte gUnknown_202F308 +_08067B9C: .4byte gUnknown_202F30C +_08067BA0: .4byte gUnknown_202EE10 +_08067BA4: .4byte gUnknown_8106DA4 +_08067BA8: .4byte gUnknown_203B080 +_08067BAC: + ldr r0, _08067BF8 + ldrh r1, [r0, 0x4] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08067C0C + movs r0, 0x1 + bl sub_8083CE0 + ldr r1, _08067BFC + movs r2, 0x18 + ldrsh r0, [r1, r2] + cmp r0, 0x7 + bne _08067C04 + ldr r0, [r6] + mov r3, r8 + subs r0, r3, r0 + cmp r0, 0x8 + ble _08067BF0 + ldr r5, _08067C00 + movs r4, 0x5 +_08067BD6: + ldr r1, [r5] + movs r0, 0 + bl _call_via_r1 + movs r0, 0x37 + bl sub_803E46C + subs r4, 0x1 + cmp r4, 0 + bge _08067BD6 +_08067BEA: + ldr r0, [r6] + adds r0, 0x1 + str r0, [r6] +_08067BF0: + movs r7, 0 + movs r0, 0x7 + mov r10, r0 + b _08067CF6 + .align 2, 0 +_08067BF8: .4byte gRealInputs +_08067BFC: .4byte gUnknown_202EE10 +_08067C00: .4byte gUnknown_203B080 +_08067C04: + adds r0, r1, 0 + movs r1, 0 + bl sub_80136E0 +_08067C0C: + cmp r4, 0x1 + bne _08067C44 + cmp r7, 0 + beq _08067C44 + ldr r0, [r6] + cmp r0, 0 + beq _08067C38 + ldr r5, _08067C40 + movs r4, 0x5 +_08067C1E: + ldr r1, [r5] + movs r0, 0 + bl _call_via_r1 + movs r0, 0x37 + bl sub_803E46C + subs r4, 0x1 + cmp r4, 0 + bge _08067C1E + ldr r0, [r6] + subs r0, 0x1 + str r0, [r6] +_08067C38: + movs r7, 0 + movs r1, 0 + mov r10, r1 + b _08067CF6 + .align 2, 0 +_08067C40: .4byte gUnknown_203B084 +_08067C44: + ldr r0, _08067C8C + ldrh r1, [r0, 0x4] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08067CA0 + movs r0, 0x1 + bl sub_8083CE0 + ldr r1, _08067C90 + movs r2, 0x18 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _08067C98 + ldr r0, [r6] + cmp r0, 0 + beq _08067C84 + ldr r5, _08067C94 + movs r4, 0x5 +_08067C6A: + ldr r1, [r5] + movs r0, 0 + bl _call_via_r1 + movs r0, 0x37 + bl sub_803E46C + subs r4, 0x1 + cmp r4, 0 + bge _08067C6A + ldr r0, [r6] + subs r0, 0x1 + str r0, [r6] +_08067C84: + movs r7, 0 + movs r3, 0 + mov r10, r3 + b _08067CF6 + .align 2, 0 +_08067C8C: .4byte gRealInputs +_08067C90: .4byte gUnknown_202EE10 +_08067C94: .4byte gUnknown_203B084 +_08067C98: + adds r0, r1, 0 + movs r1, 0 + bl sub_8013744 +_08067CA0: + bl sub_80048C8 + lsls r0, 24 + cmp r0, 0 + beq _08067CAC + b _08067B36 +_08067CAC: + ldr r0, _08067CD4 + ldrh r1, [r0, 0x2] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _08067D40 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08067CCC + ldr r2, _08067CD8 + adds r0, r2, 0 + adds r0, 0x29 + ldrb r0, [r0] + cmp r0, 0 + beq _08067CDC +_08067CCC: + bl sub_8083D08 + movs r7, 0x1 + b _08067CF6 + .align 2, 0 +_08067CD4: .4byte gRealInputs +_08067CD8: .4byte gUnknown_202EE10 +_08067CDC: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08067CF0 + adds r0, r2, 0 + adds r0, 0x2A + ldrb r0, [r0] + cmp r0, 0 + bne _08067CF0 + b _08067B36 +_08067CF0: + bl sub_8083D30 + movs r7, 0x2 +_08067CF6: + ldr r4, _08067D34 + adds r0, r4, 0 + bl AddMenuCursorSprite + movs r0, 0x37 + bl sub_803E46C + cmp r7, 0 + bne _08067D0A + b _08067AD4 +_08067D0A: + cmp r7, 0x2 + bne _08067D48 + movs r1, 0x18 + ldrsh r0, [r4, r1] + mov r10, r0 + ldr r0, _08067D38 + ldr r0, [r0] + ldr r2, [sp, 0x68] + cmp r0, r2 + bge _08067D20 + b _08067AD4 +_08067D20: + ldr r0, _08067D3C + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl sub_8052B8C + cmp r0, 0x1 + bne _08067D32 + b _08067ED8 +_08067D32: + b _08067AD4 + .align 2, 0 +_08067D34: .4byte gUnknown_202EE10 +_08067D38: .4byte gUnknown_202F310 +_08067D3C: .4byte gUnknown_80FDFB8 +_08067D40: + bl sub_8083D1C + movs r7, 0x3 + b _08067CF6 +_08067D48: + cmp r7, 0x3 + bne _08067D64 + movs r0, 0x18 + ldrsh r3, [r4, r0] + mov r10, r3 + ldr r0, _08067D60 + ldr r0, [r0] + add r0, r10 + lsls r0, 2 + add r0, r9 + b _08067ED0 + .align 2, 0 +_08067D60: .4byte gUnknown_202F30C +_08067D64: + movs r2, 0x18 + ldrsh r1, [r4, r2] + mov r10, r1 + ldr r0, _08067DAC + ldr r0, [r0] + adds r4, r0, r1 + ldr r1, _08067DB0 + movs r0, 0 + str r0, [r1] + movs r0, 0x29 + movs r1, 0 + bl sub_8044F5C + movs r0, 0x2A + movs r1, 0 + bl sub_8044F5C + movs r0, 0x40 + movs r1, 0 + bl sub_8044F5C + lsls r0, r4, 2 + add r0, r9 + ldr r0, [r0] + ldrh r0, [r0] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08067DBC + movs r0, 0x29 + bl sub_8044FF0 + b _08067DC2 + .align 2, 0 +_08067DAC: .4byte gUnknown_202F30C +_08067DB0: .4byte gUnknown_202EE6C +_08067DB4: + bl sub_8083D08 + movs r7, 0x1 + b _08067E6E +_08067DBC: + movs r0, 0x2A + bl sub_8044FF0 +_08067DC2: + lsls r0, r4, 2 + mov r2, r9 + adds r1, r0, r2 + ldr r2, [r1] + ldrb r1, [r2, 0x2] + adds r6, r0, 0 + cmp r1, 0 + bne _08067DDC + ldrb r1, [r2, 0x4] + cmp r1, 0x40 + beq _08067DDC + cmp r1, 0x41 + bne _08067DE2 +_08067DDC: + movs r0, 0x29 + bl sub_8044FF0 +_08067DE2: + bl sub_8045064 + add r0, sp, 0x4 + movs r1, 0x15 + bl sub_805FC30 + ldr r4, _08067EA0 + ldr r5, _08067EA4 + adds r7, r4, 0 + adds r7, 0x2A +_08067DF6: + adds r0, r4, 0 + bl AddMenuCursorSprite + movs r0, 0x37 + bl sub_803E46C + ldrh r1, [r5, 0x4] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08067E1A + movs r0, 0x1 + bl sub_8083CE0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80136E0 +_08067E1A: + ldrh r1, [r5, 0x4] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08067E32 + movs r0, 0x1 + bl sub_8083CE0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8013744 +_08067E32: + ldrh r1, [r5, 0x2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08067E46 + adds r0, r4, 0 + adds r0, 0x29 + ldrb r0, [r0] + cmp r0, 0 + beq _08067E58 +_08067E46: + movs r3, 0x18 + ldrsh r0, [r4, r3] + bl sub_8044F3C + lsls r0, 24 + cmp r0, 0 + bne _08067DB4 + bl sub_8083D30 +_08067E58: + ldrh r1, [r5, 0x2] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08067E68 + ldrb r0, [r7] + cmp r0, 0 + beq _08067DF6 +_08067E68: + bl sub_8083D30 + movs r7, 0 +_08067E6E: + ldr r4, _08067EA0 + adds r0, r4, 0 + bl AddMenuCursorSprite + movs r0, 0x37 + bl sub_803E46C + cmp r7, 0 + bne _08067E82 + b _08067AD4 +_08067E82: + movs r1, 0x18 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08067EA8 + mov r2, r9 + adds r0, r6, r2 + ldr r1, [r0] + ldrh r2, [r1] + movs r3, 0x80 + lsls r3, 8 + adds r0, r3, 0 + orrs r0, r2 + strh r0, [r1] + b _08067EBC + .align 2, 0 +_08067EA0: .4byte gUnknown_202EE10 +_08067EA4: .4byte gRealInputs +_08067EA8: + cmp r0, 0x1 + bne _08067ECC + mov r1, r9 + adds r0, r6, r1 + ldr r2, [r0] + ldrh r0, [r2] + ldr r3, _08067EC8 + adds r1, r3, 0 + ands r0, r1 + strh r0, [r2] +_08067EBC: + mov r0, r8 + mov r1, r9 + bl sub_8068310 + b _08067AD4 + .align 2, 0 +_08067EC8: .4byte 0x00007fff +_08067ECC: + mov r1, r9 + adds r0, r6, r1 +_08067ED0: + ldr r0, [r0] + bl sub_806806C + b _08067AD4 +_08067ED8: + mov r0, r8 + mov r1, r9 + bl sub_8068310 + ldr r0, _08067EFC + ldr r0, [r0] + ldr r2, [sp, 0x68] + cmp r0, r2 + bge _08067EEC + b _08067AD4 +_08067EEC: + add sp, 0x6C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08067EFC: .4byte gUnknown_202F310 + thumb_func_end sub_8067A80 + + thumb_func_start sub_8067F00 +sub_8067F00: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r4, r0, 0 + mov r9, r1 + str r3, [sp, 0x4] + lsls r4, 24 + lsrs r4, 24 + subs r7, r2, 0x1 + movs r0, 0x16 + mov r8, r0 + movs r0, 0 + bl sub_80073B8 + ldr r0, _08067F44 + adds r1, r4, 0 + movs r2, 0 + bl sub_8092578 + ldr r2, _08067F48 + movs r0, 0 + str r0, [sp] + movs r0, 0xC + movs r1, 0 + movs r3, 0 + bl xxx_format_and_draw + movs r1, 0 + mov r10, r1 + b _08067FF6 + .align 2, 0 +_08067F44: .4byte gAvailablePokemonNames +_08067F48: .4byte gUnknown_8106E28 +_08067F4C: + ldr r4, _08067F8C + lsls r6, r7, 2 + mov r0, r9 + adds r5, r6, r0 + ldr r1, [r5] + adds r0, r4, 0 + movs r2, 0 + bl PrintColoredPokeNameToBuffer + adds r4, 0x50 + ldr r0, [r5] + movs r2, 0x8 + ldrsh r1, [r0, r2] + adds r0, r4, 0 + bl sub_808D930 + ldr r1, _08067F90 + adds r0, r7, 0x1 + str r0, [r1] + ldr r0, [r5] + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _08067F9C + ldr r0, _08067F94 + ldr r1, _08067F98 + bl strcpy + b _08067FA4 + .align 2, 0 +_08067F8C: .4byte gAvailablePokemonNames +_08067F90: .4byte gUnknown_202DE30 +_08067F94: .4byte gUnknown_202DE58 +_08067F98: .4byte gUnknown_8106E2C +_08067F9C: + ldr r0, _08067FCC + ldr r1, _08067FD0 + bl strcpy +_08067FA4: + mov r1, r9 + adds r0, r6, r1 + ldr r0, [r0] + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 7 + ands r0, r1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _08067FD8 + ldr r2, _08067FD4 + movs r0, 0 + str r0, [sp] + movs r0, 0x7 + mov r1, r8 + movs r3, 0 + bl xxx_format_and_draw + b _08067FE6 + .align 2, 0 +_08067FCC: .4byte gUnknown_202DE58 +_08067FD0: .4byte gUnknown_8106E30 +_08067FD4: .4byte gUnknown_8106E34 +_08067FD8: + ldr r2, _08068028 + str r0, [sp] + movs r0, 0x7 + mov r1, r8 + movs r3, 0 + bl xxx_format_and_draw +_08067FE6: + movs r2, 0x1 + add r10, r2 + movs r0, 0xC + add r8, r0 + adds r7, 0x1 + mov r1, r10 + cmp r1, 0x9 + bgt _08068000 +_08067FF6: + cmp r7, 0 + blt _08067FE6 + ldr r2, [sp, 0x4] + cmp r7, r2 + blt _08067F4C +_08068000: + movs r0, 0 + bl sub_80073E0 + movs r0, 0x1 + bl sub_80073B8 + ldr r0, _0806802C + ldr r0, [r0] + ldr r1, [sp, 0x28] + cmp r0, r1 + blt _08068034 + ldr r2, _08068030 + movs r0, 0 + str r0, [sp] + movs r0, 0x8 + movs r1, 0x2 + movs r3, 0x1 + bl xxx_format_and_draw + b _0806804C + .align 2, 0 +_08068028: .4byte gUnknown_8106E48 +_0806802C: .4byte gUnknown_202F310 +_08068030: .4byte gUnknown_8106E5C +_08068034: + ldr r1, _08068064 + ldr r2, [sp, 0x28] + subs r0, r2, r0 + str r0, [r1] + ldr r2, _08068068 + movs r0, 0 + str r0, [sp] + movs r0, 0x8 + movs r1, 0x2 + movs r3, 0x1 + bl xxx_format_and_draw +_0806804C: + movs r0, 0x1 + bl sub_80073E0 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08068064: .4byte gUnknown_202DE30 +_08068068: .4byte gUnknown_8106E6C + thumb_func_end sub_8067F00 + + thumb_func_start sub_806806C +sub_806806C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x110 + str r0, [sp, 0x108] + add r4, sp, 0x98 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x60 + bl memset + movs r0, 0x6 + str r0, [r4, 0x4] + movs r1, 0x2 + strh r1, [r4, 0x8] + strh r1, [r4, 0xA] + movs r2, 0x12 + strh r2, [r4, 0xC] + movs r0, 0xE + strh r0, [r4, 0xE] + strh r2, [r4, 0x10] + strh r1, [r4, 0x12] + ldr r0, _080681B4 + str r0, [r4, 0x14] + movs r0, 0x3 + str r0, [r4, 0x1C] + str r0, [r4, 0x34] + str r0, [r4, 0x4C] + movs r7, 0 + add r1, sp, 0x44 + strh r7, [r1] + mov r0, sp + adds r0, 0x5A + strh r7, [r0] + ldr r0, _080681B8 + strh r7, [r0, 0x18] + mov r9, r1 + adds r1, 0xB4 + str r1, [sp, 0x10C] + add r2, sp, 0x68 + mov r10, r2 + adds r6, r0, 0 +_080680C4: + movs r3, 0 + mov r8, r3 + add r1, sp, 0xF8 + ldr r0, _080681BC + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r0] + str r0, [r1] + ldr r1, _080681B4 + movs r2, 0x4 + strb r2, [r1] + strb r7, [r1, 0x1] + movs r0, 0xA + strb r0, [r1, 0x2] + mov r4, r8 + strb r4, [r1, 0x3] + strh r7, [r6, 0x1E] + strh r2, [r6, 0x20] + mov r0, r8 + strh r0, [r6, 0x1A] + strh r0, [r6, 0x18] + strh r0, [r6, 0x1C] + strh r0, [r6, 0x4] + movs r0, 0x10 + strh r0, [r6, 0x6] + mov r1, r8 + strh r1, [r6, 0x14] + mov r2, r8 + str r2, [r6] + adds r0, r6, 0 + adds r0, 0x28 + bl sub_801317C + add r0, sp, 0x98 + movs r1, 0x1 + bl sub_803ECB4 + ldr r0, _080681C0 + ldr r0, [r0] + ldr r3, _080681C4 + adds r0, r3 + ldrb r2, [r0] + add r0, sp, 0x4 + ldr r1, [sp, 0x108] + bl sub_808FF20 + lsls r4, r7, 2 + mov r0, sp + adds r0, r4 + adds r0, 0xF8 + ldr r0, [r0] + mov r1, r8 + str r1, [sp] + adds r1, r7, 0 + add r2, sp, 0x4 + mov r3, r10 + bl CreatePokemonInfoTabScreen + ldr r1, _080681C8 + movs r2, 0 + ldrsh r0, [r1, r2] + adds r0, 0xF + lsls r0, 3 + strh r0, [r6, 0xC] + movs r3, 0x2 + ldrsh r0, [r1, r3] + adds r0, 0x1 + lsls r0, 3 + subs r0, 0x2 + strh r0, [r6, 0xE] +_08068150: + ldr r0, _080681B8 + bl AddMenuCursorSprite + ldr r1, [sp, 0x10C] + adds r0, r1, r4 + ldr r0, [r0] + cmp r0, 0x4 + bne _0806817A + mov r2, r10 + ldrb r0, [r2, 0x8] + cmp r0, 0 + beq _0806816C + bl sub_80684C4 +_0806816C: + mov r3, r9 + movs r1, 0 + ldrsh r0, [r3, r1] + cmp r0, 0 + beq _0806817A + bl sub_8068344 +_0806817A: + movs r0, 0 + ldr r1, _080681CC + bl sub_8014140 + adds r5, r0, 0 + movs r0, 0x1C + bl sub_803E46C + ldr r3, _080681D0 + ldrh r1, [r3, 0x2] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _080681A2 + ldr r2, _080681B8 + adds r0, r2, 0 + adds r0, 0x2B + ldrb r0, [r0] + cmp r0, 0 + beq _080681D4 +_080681A2: + movs r0, 0 + bl sub_8083CE0 + adds r7, 0x1 + cmp r7, 0x4 + beq _080681B0 + b _080682E8 +_080681B0: + movs r7, 0 + b _080682E8 + .align 2, 0 +_080681B4: .4byte gUnknown_202F308 +_080681B8: .4byte gUnknown_202EE10 +_080681BC: .4byte gUnknown_8106E80 +_080681C0: .4byte gDungeon +_080681C4: .4byte 0x0000065a +_080681C8: .4byte gUnknown_2027370 +_080681CC: .4byte gUnknown_8106DA4 +_080681D0: .4byte gRealInputs +_080681D4: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _080681E6 + adds r0, r2, 0 + adds r0, 0x2C + ldrb r0, [r0] + cmp r0, 0 + beq _080681FA +_080681E6: + movs r0, 0 + bl sub_8083CE0 + subs r7, 0x1 + movs r0, 0x1 + negs r0, r0 + cmp r7, r0 + bne _080682E8 + movs r7, 0x3 + b _080682E8 +_080681FA: + ldr r2, [sp, 0x10C] + adds r0, r2, r4 + ldr r0, [r0] + cmp r0, 0x4 + bne _08068294 + ldrh r1, [r3, 0x4] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08068212 + cmp r5, 0x2 + bne _08068248 +_08068212: + mov r3, r10 + ldrb r0, [r3, 0x8] + cmp r0, 0 + beq _08068248 + movs r0, 0 + bl sub_8083CE0 + ldr r5, _08068244 + movs r4, 0x5 +_08068224: + ldr r1, [r5] + movs r0, 0 + bl _call_via_r1 + movs r0, 0x1C + bl sub_803E46C + subs r4, 0x1 + cmp r4, 0 + bge _08068224 + mov r4, r9 + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _080682E8 + .align 2, 0 +_08068244: .4byte gUnknown_203B080 +_08068248: + ldr r0, _0806828C + ldrh r1, [r0, 0x4] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _08068258 + cmp r5, 0x1 + bne _08068294 +_08068258: + mov r1, r9 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _08068294 + movs r0, 0 + bl sub_8083CE0 + ldr r5, _08068290 + movs r4, 0x5 +_0806826C: + ldr r1, [r5] + movs r0, 0 + bl _call_via_r1 + movs r0, 0x1C + bl sub_803E46C + subs r4, 0x1 + cmp r4, 0 + bge _0806826C + mov r3, r9 + ldrh r0, [r3] + subs r0, 0x1 + strh r0, [r3] + b _080682E8 + .align 2, 0 +_0806828C: .4byte gRealInputs +_08068290: .4byte gUnknown_203B084 +_08068294: + bl sub_80048C8 + lsls r0, 24 + cmp r0, 0 + beq _080682A0 + b _08068150 +_080682A0: + ldr r0, _080682C4 + ldrh r1, [r0, 0x2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080682B8 + ldr r2, _080682C8 + adds r0, r2, 0 + adds r0, 0x29 + ldrb r0, [r0] + cmp r0, 0 + beq _080682CC +_080682B8: + bl sub_8083D08 + movs r4, 0x1 + mov r8, r4 + b _080682E8 + .align 2, 0 +_080682C4: .4byte gRealInputs +_080682C8: .4byte gUnknown_202EE10 +_080682CC: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080682E0 + adds r0, r2, 0 + adds r0, 0x2A + ldrb r0, [r0] + cmp r0, 0 + bne _080682E0 + b _08068150 +_080682E0: + bl sub_8083D30 + movs r0, 0x1 + mov r8, r0 +_080682E8: + movs r0, 0x37 + bl sub_803E46C + mov r1, r8 + cmp r1, 0 + bne _080682F6 + b _080680C4 +_080682F6: + movs r0, 0 + movs r1, 0 + bl sub_803EAF0 + add sp, 0x110 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_806806C + + thumb_func_start sub_8068310 +sub_8068310: + push {r4-r6,lr} + movs r4, 0 + ldr r6, _08068340 + cmp r4, r0 + bge _08068338 + movs r5, 0x80 + lsls r5, 8 + adds r3, r1, 0 + adds r2, r0, 0 +_08068322: + ldr r0, [r3] + ldrh r1, [r0] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _08068330 + adds r4, 0x1 +_08068330: + adds r3, 0x4 + subs r2, 0x1 + cmp r2, 0 + bne _08068322 +_08068338: + str r4, [r6] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08068340: .4byte gUnknown_202F310 + thumb_func_end sub_8068310 + + thumb_func_start sub_8068344 +sub_8068344: + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x8 + ldr r0, _08068494 + ldr r0, [r0] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + bne _0806835C + b _08068486 +_0806835C: + ldr r0, _08068498 + mov r9, r0 + movs r0, 0 + movs r1, 0 + str r0, [sp] + str r1, [sp, 0x4] + mov r0, sp + ldrh r0, [r0] + ldr r1, _0806849C + ands r1, r0 + ldr r3, _080684A0 + ldr r0, [sp] + ands r0, r3 + orrs r0, r1 + str r0, [sp] + mov r1, sp + ldrh r1, [r1] + adds r2, r3, 0 + ands r2, r0 + orrs r2, r1 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _080684A4 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r6, _080684A8 + mov r8, r6 + mov r0, r8 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _080684AC + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _080684B0 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + movs r4, 0x80 + lsls r4, 7 + mov r0, sp + ldrh r1, [r0] + ldr r6, _080684B4 + adds r0, r6, 0 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + orrs r4, r0 + ands r3, r1 + orrs r3, r4 + str r3, [sp] + movs r1, 0x80 + lsls r1, 6 + mov r5, sp + ldrh r0, [r5, 0x2] + ldr r2, _080684B8 + ands r2, r0 + orrs r2, r1 + ands r2, r6 + movs r3, 0xFC + lsls r3, 2 + ldrh r1, [r5, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r1 + orrs r0, r3 + mov r1, r8 + ands r0, r1 + movs r3, 0xF + movs r1, 0xF0 + lsls r1, 8 + ldr r4, _080684BC + ands r0, r4 + orrs r0, r1 + strh r0, [r5, 0x4] + mov r6, r9 + movs r1, 0x2 + ldrsh r0, [r6, r1] + lsls r0, 3 + adds r0, 0x8 + ands r0, r4 + lsls r0, 4 + ldrh r1, [r5, 0x6] + ands r3, r1 + orrs r3, r0 + strh r3, [r5, 0x6] + movs r3, 0 + ldrsh r0, [r6, r3] + lsls r0, 3 + adds r0, 0x40 + ldr r1, _080684C0 + ands r0, r1 + movs r1, 0xFE + lsls r1, 8 + ands r2, r1 + orrs r2, r0 + strh r2, [r5, 0x2] + movs r1, 0x80 + lsls r1, 1 + mov r0, sp + movs r2, 0 + movs r3, 0 + bl AddSprite +_08068486: + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08068494: .4byte gUnknown_202EDCC +_08068498: .4byte gUnknown_2027370 +_0806849C: .4byte 0x0000feff +_080684A0: .4byte 0xffff0000 +_080684A4: .4byte 0x0000fdff +_080684A8: .4byte 0x0000f3ff +_080684AC: .4byte 0x0000efff +_080684B0: .4byte 0x0000dfff +_080684B4: .4byte 0x00003fff +_080684B8: .4byte 0x0000c1ff +_080684BC: .4byte 0x00000fff +_080684C0: .4byte 0x000001ff + thumb_func_end sub_8068344 + + thumb_func_start sub_80684C4 +sub_80684C4: + push {r4-r6,lr} + sub sp, 0x8 + ldr r0, _080685E8 + ldr r0, [r0] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + bne _080684D6 + b _080685DE +_080684D6: + ldr r6, _080685EC + movs r0, 0 + movs r1, 0 + str r0, [sp] + str r1, [sp, 0x4] + mov r0, sp + ldrh r0, [r0] + ldr r1, _080685F0 + ands r1, r0 + ldr r3, _080685F4 + ldr r0, [sp] + ands r0, r3 + orrs r0, r1 + str r0, [sp] + mov r1, sp + ldrh r1, [r1] + adds r2, r3, 0 + ands r2, r0 + orrs r2, r1 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _080685F8 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r5, _080685FC + adds r0, r5, 0 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _08068600 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _08068604 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + movs r4, 0x80 + lsls r4, 7 + mov r0, sp + ldrh r1, [r0] + ldr r0, _08068608 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + orrs r4, r0 + ands r3, r1 + orrs r3, r4 + str r3, [sp] + mov r3, sp + movs r2, 0xFC + lsls r2, 2 + ldrh r1, [r3, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r1 + orrs r0, r2 + ands r0, r5 + movs r2, 0xF + movs r1, 0xF0 + lsls r1, 8 + ldr r4, _0806860C + ands r0, r4 + orrs r0, r1 + strh r0, [r3, 0x4] + movs r1, 0x2 + ldrsh r0, [r6, r1] + lsls r0, 3 + adds r0, 0x70 + ands r0, r4 + lsls r0, 4 + ldrh r1, [r3, 0x6] + ands r2, r1 + orrs r2, r0 + strh r2, [r3, 0x6] + movs r1, 0 + ldrsh r0, [r6, r1] + lsls r0, 3 + adds r0, 0x40 + ldr r1, _08068610 + ands r0, r1 + strh r0, [r3, 0x2] + subs r1, 0xFF + mov r0, sp + movs r2, 0 + movs r3, 0 + bl AddSprite +_080685DE: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080685E8: .4byte gUnknown_202EDCC +_080685EC: .4byte gUnknown_2027370 +_080685F0: .4byte 0x0000feff +_080685F4: .4byte 0xffff0000 +_080685F8: .4byte 0x0000fdff +_080685FC: .4byte 0x0000f3ff +_08068600: .4byte 0x0000efff +_08068604: .4byte 0x0000dfff +_08068608: .4byte 0x00003fff +_0806860C: .4byte 0x00000fff +_08068610: .4byte 0x000001ff + thumb_func_end sub_80684C4 + + thumb_func_start sub_8068614 +sub_8068614: + push {lr} + ldr r0, _0806862C + ldr r1, _08068630 + bl OpenFileAndGetFileDataPtr + ldr r1, _08068634 + ldr r1, [r1] + ldr r2, _08068638 + adds r1, r2 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0806862C: .4byte gUnknown_8106E98 +_08068630: .4byte gMonsterFileArchive +_08068634: .4byte gDungeon +_08068638: .4byte 0x000181e4 + thumb_func_end sub_8068614 + + thumb_func_start sub_806863C +sub_806863C: + push {lr} + ldr r0, _08068650 + ldr r0, [r0] + ldr r1, _08068654 + adds r0, r1 + ldr r0, [r0] + bl CloseFile + pop {r0} + bx r0 + .align 2, 0 +_08068650: .4byte gDungeon +_08068654: .4byte 0x000181e4 + thumb_func_end sub_806863C + + thumb_func_start sub_8068658 +sub_8068658: + push {r4-r6,lr} + movs r4, 0 + ldr r6, _08068740 + ldr r5, _08068744 + ldr r3, _08068748 + movs r2, 0 +_08068664: + ldr r0, [r5] + lsls r1, r4, 2 + adds r0, r3 + adds r0, r1 + str r2, [r0] + adds r4, 0x1 + cmp r4, r6 + ble _08068664 + ldr r0, _0806874C + movs r1, 0x1 + bl sub_8068838 + movs r4, 0 + ldr r1, _08068744 + ldr r0, [r1] + ldr r2, _08068750 + adds r0, r2 + ldr r0, [r0] + cmp r4, r0 + bge _080686B2 + adds r6, r1, 0 + ldr r5, _08068754 +_08068690: + ldr r0, [r6] + adds r0, r5 + bl ExtractSpeciesIndex + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + bl sub_8068838 + adds r5, 0x8 + adds r4, 0x1 + ldr r0, [r6] + ldr r1, _08068750 + adds r0, r1 + ldr r0, [r0] + cmp r4, r0 + blt _08068690 +_080686B2: + ldr r0, _08068744 + ldr r0, [r0] + movs r2, 0xD1 + lsls r2, 3 + adds r1, r0, r2 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _080686CA + movs r1, 0x1 + bl sub_8068838 +_080686CA: + movs r4, 0 + ldr r6, _08068758 + movs r5, 0x1 +_080686D0: + movs r0, 0x64 + muls r0, r4 + ldr r1, _0806875C + adds r0, r1 + ldr r1, [r6] + adds r1, r0 + ldrh r2, [r1] + adds r0, r5, 0 + ands r0, r2 + cmp r0, 0 + beq _080686F8 + lsrs r0, r2, 1 + ands r0, r5 + cmp r0, 0 + beq _080686F8 + movs r2, 0xE + ldrsh r0, [r1, r2] + movs r1, 0 + bl sub_8068838 +_080686F8: + adds r4, 0x1 + cmp r4, 0x3 + ble _080686D0 + ldr r0, _08068744 + ldr r0, [r0] + ldr r1, _08068760 + adds r0, r1 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0x31 + bne _08068738 + movs r4, 0 + ldr r5, _08068758 +_08068712: + movs r0, 0x58 + muls r0, r4 + ldr r1, _08068764 + adds r0, r1 + ldr r1, [r5] + adds r2, r1, r0 + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08068732 + movs r1, 0x8 + ldrsh r0, [r2, r1] + movs r1, 0x1 + bl sub_8068838 +_08068732: + adds r4, 0x1 + cmp r4, 0x3 + ble _08068712 +_08068738: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08068740: .4byte 0x000001a7 +_08068744: .4byte gDungeon +_08068748: .4byte 0x00017b44 +_0806874C: .4byte 0x000001a5 +_08068750: .4byte 0x000037e4 +_08068754: .4byte 0x0000343c +_08068758: .4byte gRecruitedPokemonRef +_0806875C: .4byte 0x00008df8 +_08068760: .4byte 0x00003a14 +_08068764: .4byte 0x00008f88 + thumb_func_end sub_8068658 + + .align 2,0 diff --git a/asm/code_80718D8.s b/asm/code_80718D8.s index e7d017aa4..b1cc5cb8e 100644 --- a/asm/code_80718D8.s +++ b/asm/code_80718D8.s @@ -5,305 +5,6 @@ .text - thumb_func_start sub_8071B48 -sub_8071B48: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - movs r0, 0 - mov r8, r0 - ldr r0, _08071B94 - ldr r6, [r0] - ldr r1, _08071B98 - adds r0, r6, r1 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bne _08071B66 - b _08071D3E -_08071B66: - subs r1, 0x20 - adds r0, r6, r1 - ldrb r0, [r0] - cmp r0, 0x15 - bne _08071B7C - ldr r2, _08071B9C - adds r0, r6, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _08071B7C - b _08071D3E -_08071B7C: - ldr r0, _08071BA0 - adds r1, r6, r0 - ldrh r0, [r1] - adds r2, r0, 0x1 - strh r2, [r1] - ldr r1, _08071BA4 - adds r0, r6, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08071BAC - ldr r0, _08071BA8 - b _08071BAE - .align 2, 0 -_08071B94: .4byte gDungeon -_08071B98: .4byte 0x00000664 -_08071B9C: .4byte 0x000037fd -_08071BA0: .4byte 0x00000662 -_08071BA4: .4byte 0x0000066e -_08071BA8: .4byte gUnknown_80F4DAA -_08071BAC: - ldr r0, _08071C60 -_08071BAE: - lsls r1, r2, 16 - asrs r1, 16 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r1, r0 - bge _08071BBC - b _08071D3E -_08071BBC: - ldr r1, _08071C64 - adds r0, r6, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0xE1 - lsls r0, 2 - cmp r1, r0 - ble _08071BF6 - ldr r1, _08071C68 - adds r0, r6, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08071BF6 - ldrh r0, [r4, 0x26] - ldr r2, _08071C6C - adds r1, r6, r2 - ldr r1, [r1] - cmp r0, r1 - bne _08071BF6 - ldr r0, _08071C70 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - mov r8, r4 -_08071BF6: - ldr r1, _08071C64 - adds r0, r6, r1 - movs r1, 0 - strh r1, [r0] - ldr r2, _08071C68 - adds r0, r6, r2 - str r1, [r0] - movs r7, 0 - movs r5, 0 -_08071C08: - lsls r0, r5, 2 - ldr r2, _08071C74 - adds r1, r6, r2 - adds r1, r0 - ldr r4, [r1] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08071C3A - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl GetTile - ldrh r0, [r0] - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08071C3A - adds r7, 0x1 -_08071C3A: - adds r5, 0x1 - cmp r5, 0xF - ble _08071C08 - ldr r1, _08071C78 - adds r0, r6, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08071C92 - ldr r0, _08071C7C - ldr r0, [r0] - ldr r2, _08071C80 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08071C88 - ldr r0, _08071C84 - movs r1, 0 - ldrsh r0, [r0, r1] - b _08071C8E - .align 2, 0 -_08071C60: .4byte gUnknown_80F4DAC -_08071C64: .4byte 0x00000662 -_08071C68: .4byte 0x00017b34 -_08071C6C: .4byte 0x00017b40 -_08071C70: .4byte gAvailablePokemonNames -_08071C74: .4byte 0x0001358c -_08071C78: .4byte 0x0000066e -_08071C7C: .4byte gDungeon -_08071C80: .4byte 0x00003a0c -_08071C84: .4byte gUnknown_80F4DA6 -_08071C88: - ldr r0, _08071CB8 - movs r2, 0 - ldrsh r0, [r0, r2] -_08071C8E: - cmp r7, r0 - bge _08071D3E -_08071C92: - mov r0, r8 - cmp r0, 0 - beq _08071CA8 - ldr r0, _08071CBC - ldr r1, [r0] - movs r0, 0 - bl sub_805239C - mov r0, r8 - bl sub_8042920 -_08071CA8: - ldr r1, _08071CC0 - adds r0, r6, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08071CC4 - movs r5, 0xBE - lsls r5, 1 - b _08071CCE - .align 2, 0 -_08071CB8: .4byte gUnknown_80F4DA8 -_08071CBC: .4byte gUnknown_80FED68 -_08071CC0: .4byte 0x0000066e -_08071CC4: - movs r0, 0 - bl sub_803D970 - lsls r0, 16 - asrs r5, r0, 16 -_08071CCE: - adds r0, r5, 0 - bl sub_803DA20 - adds r4, r0, 0 - cmp r4, 0 - bne _08071CDC - movs r4, 0x1 -_08071CDC: - adds r0, r5, 0 - movs r1, 0 - bl sub_806AA0C - lsls r0, 24 - cmp r0, 0 - beq _08071D3E - add r0, sp, 0xC - bl sub_8083660 - lsls r0, 24 - cmp r0, 0 - beq _08071D3E - mov r0, sp - movs r1, 0 - strh r5, [r0] - strh r4, [r0, 0x8] - strb r1, [r0, 0x2] - movs r0, 0x64 - bl DungeonRandInt - adds r4, r0, 0 - ldr r0, _08071D24 - ldr r0, [r0] - ldr r2, _08071D28 - adds r0, r2 - ldrb r0, [r0] - bl GetRandomMovementChance - lsls r0, 16 - asrs r0, 16 - cmp r4, r0 - bge _08071D2C - movs r0, 0x1 - b _08071D2E - .align 2, 0 -_08071D24: .4byte gDungeon -_08071D28: .4byte 0x00000644 -_08071D2C: - movs r0, 0 -_08071D2E: - str r0, [sp, 0x4] - mov r1, sp - movs r0, 0 - strb r0, [r1, 0x10] - mov r0, sp - movs r1, 0 - bl sub_806B7F8 -_08071D3E: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8071B48 - - thumb_func_start sub_8071D4C -sub_8071D4C: - push {lr} - ldr r3, [r1, 0x70] - ldrb r0, [r3, 0x9] - cmp r0, 0x64 - beq _08071D94 - adds r0, r3, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x4A - beq _08071D64 - cmp r0, 0x47 - bne _08071D68 -_08071D64: - movs r0, 0x1 - b _08071D6A -_08071D68: - movs r0, 0 -_08071D6A: - cmp r0, 0 - bne _08071D94 - ldr r1, [r3, 0x18] - adds r2, r1, r2 - ldr r0, _08071D98 - cmp r2, r0 - ble _08071D7A - ldr r2, _08071D9C -_08071D7A: - subs r2, r1 - cmp r2, 0 - beq _08071D94 - movs r0, 0xFE - lsls r0, 1 - adds r1, r3, r0 - ldr r0, [r1] - adds r0, r2 - str r0, [r1] - ldr r0, _08071DA0 - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0xD] -_08071D94: - pop {r0} - bx r0 - .align 2, 0 -_08071D98: .4byte 0x0098967e -_08071D9C: .4byte 0x0098967f -_08071DA0: .4byte gDungeon - thumb_func_end sub_8071D4C - thumb_func_start sub_8071DA4 sub_8071DA4: push {r4-r7,lr} @@ -1997,231 +1698,4 @@ _08072AC0: .4byte gAvailablePokemonNames _08072AC4: .4byte gUnknown_80F9F2C thumb_func_end sub_8072938 - thumb_func_start sub_8072AC8 -sub_8072AC8: - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - adds r7, r2, 0 - lsls r1, 16 - asrs r0, r1, 16 - movs r3, 0 - adds r2, r6, 0x6 -_08072AD8: - strh r3, [r2] - subs r2, 0x2 - cmp r2, r6 - bge _08072AD8 - movs r5, 0 - bl GetLevelUpMoves - adds r4, r0, 0 - b _08072B04 -_08072AEA: - cmp r5, 0x4 - bne _08072AF6 - movs r0, 0x4 - bl DungeonRandInt - b _08072AFA -_08072AF6: - adds r0, r5, 0 - adds r5, 0x1 -_08072AFA: - lsls r0, 1 - adds r0, r6 - mov r1, sp - ldrh r1, [r1] - strh r1, [r0] -_08072B04: - ldrb r0, [r4] - cmp r0, 0 - beq _08072B1C - adds r0, r4, 0 - mov r1, sp - bl DecompressMoveID - adds r4, r0, 0 - ldrb r0, [r4] - adds r4, 0x1 - cmp r0, r7 - ble _08072AEA -_08072B1C: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8072AC8 - - thumb_func_start sub_8072B24 -sub_8072B24: - push {r4-r7,lr} - adds r5, r1, 0 - movs r4, 0 - movs r7, 0x1 - movs r6, 0xFD - adds r2, r5, 0 - movs r3, 0x7 -_08072B32: - ldrb r1, [r2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _08072B44 - adds r0, r6, 0 - ands r0, r1 - strb r0, [r2] - adds r4, 0x1 -_08072B44: - adds r2, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _08072B32 - adds r0, r4, 0 - bl DungeonRandInt - adds r3, r0, 0 - adds r4, r5, 0 - adds r4, 0x38 - cmp r3, 0x6 - bgt _08072B6C - lsls r0, r3, 3 - adds r2, r0, r5 -_08072B60: - ldr r0, [r2, 0x8] - ldr r1, [r2, 0xC] - stm r2!, {r0,r1} - adds r3, 0x1 - cmp r3, 0x6 - ble _08072B60 -_08072B6C: - movs r0, 0 - strb r0, [r4] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8072B24 - - thumb_func_start sub_8072B78 -sub_8072B78: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x20 - mov r8, r0 - adds r7, r1, 0 - lsls r5, r2, 16 - asrs r5, 16 - ldr r6, [r7, 0x70] - ldr r4, _08072BFC - adds r0, r4, 0 - adds r1, r6, 0 - movs r2, 0 - bl SetMessageArgument_2 - adds r4, 0x50 - adds r0, r4, 0 - adds r1, r5, 0 - bl CopyCyanMonsterNametoBuffer - adds r0, r5, 0 - bl sub_80687D0 - adds r4, r0, 0 - lsls r0, r5, 16 - lsrs r0, 16 - strh r0, [r6, 0x4] - strh r0, [r6, 0x2] - ldrb r2, [r6, 0x9] - mov r0, sp - adds r1, r5, 0 - bl GetPokemonLevelData - ldr r0, [sp] - str r0, [r6, 0x18] - str r4, [r7, 0x64] - adds r0, r6, 0 - movs r1, 0 - bl sub_806BFC0 - adds r0, r7, 0 - bl sub_8069E0C - adds r0, r7, 0 - movs r1, 0x7 - bl sub_806CCB4 - ldr r0, _08072C00 - ldr r2, [r0] - mov r0, r8 - adds r1, r7, 0 - bl sub_80522F4 - adds r0, r7, 0 - bl sub_8042A44 - bl sub_8083D78 - movs r0, 0x9E - lsls r0, 1 - cmp r5, r0 - bne _08072C74 - movs r5, 0 - ldr r4, _08072C04 - b _08072C0C .align 2, 0 -_08072BFC: .4byte gAvailablePokemonNames -_08072C00: .4byte gUnknown_80FE2EC -_08072C04: .4byte gAdjacentTileOffsets -_08072C08: - adds r4, 0x4 - adds r5, 0x1 -_08072C0C: - cmp r5, 0x7 - bgt _08072C36 - movs r1, 0 - ldrsh r0, [r4, r1] - movs r2, 0x4 - ldrsh r1, [r7, r2] - adds r0, r1 - movs r3, 0x2 - ldrsh r1, [r4, r3] - movs r3, 0x6 - ldrsh r2, [r7, r3] - adds r1, r2 - bl GetTile - adds r1, r0, 0 - ldr r0, _08072C80 - bl sub_807034C - lsls r0, 24 - cmp r0, 0 - bne _08072C08 -_08072C36: - ldr r0, _08072C80 - mov r8, r0 - bl sub_803D930 - lsls r0, 24 - cmp r0, 0 - beq _08072C74 - add r0, sp, 0xC - movs r3, 0 - movs r4, 0 - mov r1, r8 - strh r1, [r0] - ldrb r1, [r6, 0x9] - strh r1, [r0, 0x8] - strb r3, [r0, 0x2] - ldr r1, _08072C84 - lsls r2, r5, 2 - adds r2, r1 - ldrh r1, [r7, 0x4] - ldrh r5, [r2] - adds r1, r5 - strh r1, [r0, 0xC] - ldrh r1, [r7, 0x6] - ldrh r2, [r2, 0x2] - adds r1, r2 - strh r1, [r0, 0xE] - str r4, [r0, 0x4] - strb r3, [r0, 0x10] - movs r1, 0x1 - bl sub_806B7F8 -_08072C74: - add sp, 0x20 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08072C80: .4byte 0x0000013d -_08072C84: .4byte gAdjacentTileOffsets - thumb_func_end sub_8072B78 - - .align 2, 0 \ No newline at end of file diff --git a/asm/code_8072CF4.s b/asm/code_8072CF4.s index ce34e024b..eb6f4b4f7 100644 --- a/asm/code_8072CF4.s +++ b/asm/code_8072CF4.s @@ -5,691 +5,6 @@ .text - thumb_func_start sub_8072CF4 -sub_8072CF4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r4, r0, 0 - movs r0, 0x1 - bl sub_804178C - ldr r1, _08072D4C - movs r0, 0x1 - strb r0, [r1] - ldr r6, [r4, 0x70] - adds r0, r6, 0 - adds r0, 0xFC - movs r1, 0 - strb r1, [r0] - subs r0, 0x9 - strb r1, [r0] - ldr r0, _08072D50 - ldr r0, [r0] - adds r0, 0xB8 - str r4, [r0] - ldr r2, _08072D54 - adds r0, r6, 0 - adds r0, 0x44 - ldrh r0, [r0] - lsls r1, r0, 1 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _08072D64 - ldrb r0, [r6, 0x7] - cmp r0, 0 - beq _08072D58 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r1, [r0] - adds r0, r4, 0 - bl sub_805EFB4 - b _08072D64 - .align 2, 0 -_08072D4C: .4byte gUnknown_203B434 -_08072D50: .4byte gDungeon -_08072D54: .4byte gUnknown_80F58F4 -_08072D58: - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r1, [r0] - adds r0, r4, 0 - bl sub_8075BA4 -_08072D64: - adds r0, r4, 0 - movs r1, 0 - bl CannotAttack - lsls r0, 24 - cmp r0, 0 - beq _08072D86 - adds r0, r4, 0 - movs r1, 0x1 - bl IsCharging - lsls r0, 24 - cmp r0, 0 - beq _08072D86 - adds r0, r4, 0 - bl sub_8079764 -_08072D86: - movs r7, 0x1 - movs r5, 0xFB - movs r0, 0x8C - lsls r0, 1 - adds r2, r6, r0 - movs r3, 0x3 -_08072D92: - ldrb r1, [r2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _08072DA4 - ldrb r1, [r2, 0x1] - adds r0, r5, 0 - ands r0, r1 - strb r0, [r2, 0x1] -_08072DA4: - adds r2, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _08072D92 - adds r0, r4, 0 - movs r1, 0 - bl IsNotAttacking - lsls r0, 24 - cmp r0, 0 - bne _08072E08 - adds r0, r4, 0 - bl UseAttack - lsls r0, 24 - cmp r0, 0 - beq _08072DF0 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _08072DD2 - b _080732D4 -_08072DD2: - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08072DE0 - b _080732D4 -_08072DE0: - ldr r0, _08072DEC - ldrb r0, [r0] - cmp r0, 0 - beq _08072DF0 - movs r0, 0x1 - b _080732D6 - .align 2, 0 -_08072DEC: .4byte gUnknown_202F32D -_08072DF0: - ldrb r0, [r6, 0x7] - cmp r0, 0 - bne _08072DFC - movs r0, 0xA - bl sub_8052740 -_08072DFC: - adds r0, r4, 0 - bl sub_806A1E8 - movs r0, 0xA - bl sub_803E46C -_08072E08: - adds r0, r6, 0 - adds r0, 0x44 - ldrh r1, [r0] - adds r5, r0, 0 - cmp r1, 0x1 - bls _08072E26 - cmp r1, 0x4 - beq _08072E26 - cmp r1, 0x2 - beq _08072E26 - movs r2, 0xA4 - lsls r2, 1 - adds r1, r6, r2 - movs r0, 0x1 - strb r0, [r1] -_08072E26: - movs r3, 0 - mov r10, r3 - movs r7, 0xA5 - lsls r7, 1 - adds r0, r6, r7 - mov r1, r10 - strb r1, [r0] - ldr r0, _08072E50 - strb r1, [r0] - ldr r0, _08072E54 - strb r1, [r0] - ldrh r0, [r5] - subs r0, 0x2 - cmp r0, 0x3F - bls _08072E46 - b _080731B4 -_08072E46: - lsls r0, 2 - ldr r1, _08072E58 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08072E50: .4byte gUnknown_202F221 -_08072E54: .4byte gUnknown_202F222 -_08072E58: .4byte _08072E5C - .align 2, 0 -_08072E5C: - .4byte _08072F5C - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _08073104 - .4byte _080730A4 - .4byte _0807310C - .4byte _0807311C - .4byte _080731B4 - .4byte _08073094 - .4byte _08073094 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _08073094 - .4byte _0807314C - .4byte _08073154 - .4byte _0807303E - .4byte _080731B4 - .4byte _0807315C - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _08073186 - .4byte _0807318E - .4byte _08073170 - .4byte _08073046 - .4byte _0807311C - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _0807309C - .4byte _08073162 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080731B4 - .4byte _080730AC - .4byte _080730B4 - .4byte _080730C4 - .4byte _08073196 - .4byte _08073114 - .4byte _080730E0 - .4byte _080730CC - .4byte _080730D6 - .4byte _080730BC - .4byte _0807317E - .4byte _080731B4 - .4byte _0807311C -_08072F5C: - adds r0, r6, 0 - adds r0, 0xB0 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08072F76 - cmp r0, 0x7 - beq _08072F76 - cmp r0, 0x5 - beq _08072F76 - cmp r0, 0x3 - beq _08072F76 - cmp r0, 0x4 - bne _08072F84 -_08072F76: - movs r0, 0 - strh r0, [r5] - ldr r2, _08072F80 - adds r1, r6, r2 - b _08072FDA - .align 2, 0 -_08072F80: .4byte 0x00000147 -_08072F84: - movs r3, 0 - mov r9, r3 - ldr r1, _08072FE0 - adds r2, r6, 0 - adds r2, 0x46 - ldrb r3, [r2] - lsls r0, r3, 2 - adds r0, r1 - ldrh r1, [r0] - ldrh r7, [r4, 0x4] - adds r1, r7 - lsls r1, 16 - ldrh r0, [r0, 0x2] - ldrh r7, [r4, 0x6] - adds r0, r7 - lsls r0, 16 - lsrs r1, 16 - mov r8, r1 - orrs r1, r0 - mov r8, r1 - ldrh r1, [r6] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - adds r7, r2, 0 - cmp r0, 0 - bne _08072FCC - adds r0, r4, 0 - adds r1, r3, 0 - bl CanMoveInDirection - lsls r0, 24 - cmp r0, 0 - bne _08072FCC - movs r2, 0x1 - mov r9, r2 -_08072FCC: - mov r3, r9 - cmp r3, 0 - beq _08072FE8 - movs r0, 0 - strh r0, [r5] - ldr r7, _08072FE4 - adds r1, r6, r7 -_08072FDA: - movs r0, 0x1 - strb r0, [r1] - b _080731B8 - .align 2, 0 -_08072FE0: .4byte gAdjacentTileOffsets -_08072FE4: .4byte 0x00000147 -_08072FE8: - ldrh r1, [r4, 0x6] - lsls r1, 16 - ldrh r0, [r4, 0x4] - orrs r0, r1 - str r0, [sp] - mov r0, r8 - lsls r1, r0, 16 - asrs r1, 16 - asrs r2, r0, 16 - adds r0, r4, 0 - movs r3, 0 - bl sub_80694C0 - ldrb r1, [r7] - adds r0, r4, 0 - mov r2, sp - bl sub_8074FB0 - adds r0, r4, 0 - movs r1, 0xD - bl IQSkillIsEnabled - lsls r0, 24 - cmp r0, 0 - beq _08073038 - adds r0, r6, 0 - adds r0, 0xE4 - ldrb r0, [r0] - cmp r0, 0x3 - beq _08073038 - adds r0, r4, 0 - movs r1, 0x9 - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - bne _08073038 - adds r0, r4, 0x4 - bl sub_804AE08 -_08073038: - movs r1, 0x1 - mov r10, r1 - b _080731B8 -_0807303E: - adds r0, r4, 0 - bl sub_807CABC - b _080731B8 -_08073046: - ldr r0, _08073064 - ldr r1, [r0] - ldr r2, _08073068 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x15 - bne _08073074 - ldr r3, _0807306C - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _08073074 - ldr r0, _08073070 - b _080731A2 - .align 2, 0 -_08073064: .4byte gDungeon -_08073068: .4byte 0x00000644 -_0807306C: .4byte 0x000037fe -_08073070: .4byte gUnknown_80FA5B4 -_08073074: - bl sub_804267C - ldr r0, _0807308C - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x2] - ldr r1, _08073090 - adds r0, r6, 0 - adds r0, 0x46 - ldrb r0, [r0] - strb r0, [r1] - b _080731B8 - .align 2, 0 -_0807308C: .4byte gDungeon -_08073090: .4byte gUnknown_202F32C -_08073094: - adds r0, r4, 0 - bl sub_8067110 - b _080731B8 -_0807309C: - adds r0, r4, 0 - bl sub_807CB3C - b _080731B8 -_080730A4: - adds r0, r4, 0 - bl sub_8066744 - b _080731B8 -_080730AC: - adds r0, r4, 0 - bl sub_80668D0 - b _080731B8 -_080730B4: - adds r0, r4, 0 - bl sub_8066AC0 - b _080731B8 -_080730BC: - adds r0, r4, 0 - bl sub_8066BD4 - b _080731B8 -_080730C4: - adds r0, r4, 0 - bl sub_8066CF0 - b _080731B8 -_080730CC: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806675C - b _080731B8 -_080730D6: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806684C - b _080731B8 -_080730E0: - ldr r0, _080730FC - ldr r1, [r0] - adds r2, r1, 0 - adds r2, 0xBC - adds r0, r6, 0 - adds r0, 0x48 - ldrb r0, [r0] - lsls r0, 2 - ldr r7, _08073100 - adds r1, r7 - adds r1, r0 - ldr r0, [r1] - str r0, [r2] - b _080731B8 - .align 2, 0 -_080730FC: .4byte gDungeon -_08073100: .4byte 0x0001357c -_08073104: - adds r0, r4, 0 - bl sub_8066D04 - b _080731B8 -_0807310C: - adds r0, r4, 0 - bl sub_8066E14 - b _080731B8 -_08073114: - adds r0, r4, 0 - bl sub_8066FA4 - b _080731B8 -_0807311C: - adds r0, r6, 0 - bl ToolboxEnabled - lsls r0, 24 - cmp r0, 0 - beq _08073136 - adds r0, r4, 0 - bl nullsub_95 - adds r0, r4, 0 - bl sub_80671A0 - b _080731B8 -_08073136: - ldr r0, _08073144 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08073148 - b _080731A2 - .align 2, 0 -_08073144: .4byte gAvailablePokemonNames -_08073148: .4byte gUnknown_80FE6D4 -_0807314C: - adds r0, r4, 0 - bl sub_8067510 - b _080731B8 -_08073154: - adds r0, r4, 0 - bl sub_8067884 - b _080731B8 -_0807315C: - movs r1, 0xB0 - lsls r1, 1 - b _08073164 -_08073162: - ldr r1, _0807316C -_08073164: - adds r0, r4, 0 - bl sub_8067904 - b _080731B8 - .align 2, 0 -_0807316C: .4byte 0x00000163 -_08073170: - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0 - bl sub_807FE9C - b _080731B8 -_0807317E: - adds r0, r4, 0 - bl sub_8073D08 - b _080731B8 -_08073186: - adds r0, r4, 0 - bl sub_8073CF0 - b _080731B8 -_0807318E: - adds r0, r4, 0 - bl sub_8073CFC - b _080731B8 -_08073196: - ldr r0, _080731AC - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _080731B0 -_080731A2: - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage - b _080731B8 - .align 2, 0 -_080731AC: .4byte gAvailablePokemonNames -_080731B0: .4byte gUnknown_80FE478 -_080731B4: - movs r0, 0x1 - strh r0, [r5] -_080731B8: - adds r0, r4, 0 - bl sub_807FD84 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080731CC - b _080732D4 -_080731CC: - ldr r0, [r4, 0x70] - movs r2, 0xA5 - lsls r2, 1 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _080731E2 - strb r0, [r1] - adds r0, r4, 0 - bl sub_8079764 -_080731E2: - movs r0, 0 - bl sub_8041888 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080732D4 - bl sub_8085140 - ldr r3, _080732E8 - adds r1, r6, r3 - ldrb r0, [r1] - cmp r0, 0 - beq _08073242 - movs r5, 0 - strb r5, [r1] - movs r7, 0x8C - lsls r7, 1 - adds r2, r6, r7 - movs r0, 0x1 - mov r12, r0 - movs r7, 0x10 - movs r3, 0x3 -_08073214: - ldrb r1, [r2] - mov r0, r12 - ands r0, r1 - cmp r0, 0 - beq _0807322C - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _0807322C - movs r0, 0 - strb r0, [r2, 0x4] - movs r5, 0x1 -_0807322C: - adds r2, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _08073214 - cmp r5, 0 - beq _08073242 - ldr r0, _080732EC - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage -_08073242: - bl sub_807360C - bl sub_8044B84 - lsls r0, 24 - cmp r0, 0 - bne _08073264 - bl sub_807348C - bl sub_80732F0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080732D4 -_08073264: - mov r1, r10 - cmp r1, 0 - beq _08073270 - adds r0, r4, 0 - bl sub_8075818 -_08073270: - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080732D4 - bl sub_8044B84 - lsls r0, 24 - cmp r0, 0 - bne _0807328A - bl sub_8046D20 -_0807328A: - movs r0, 0 - bl sub_8041888 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080732D4 - movs r2, 0xA2 - lsls r2, 1 - adds r0, r6, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080732D4 - mov r3, r10 - cmp r3, 0 - bne _080732D4 - adds r1, r4, 0x4 - adds r0, r4, 0 - bl sub_80706A4 - lsls r0, 24 - cmp r0, 0 - beq _080732C8 - adds r0, r4, 0 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0 - bl sub_807D148 -_080732C8: - adds r0, r4, 0 - bl sub_8074094 - adds r0, r4, 0 - bl sub_8071DA4 -_080732D4: - movs r0, 0 -_080732D6: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080732E8: .4byte 0x0000014b -_080732EC: .4byte gUnknown_80FD2CC - thumb_func_end sub_8072CF4 - thumb_func_start sub_80732F0 sub_80732F0: push {r4-r7,lr} diff --git a/asm/code_8073CF0.s b/asm/code_8073CF0.s index bdac9b709..97bdd09f3 100644 --- a/asm/code_8073CF0.s +++ b/asm/code_8073CF0.s @@ -3135,69 +3135,4 @@ _0807566C: _0807567C: .4byte gDungeon thumb_func_end UseAttack - thumb_func_start sub_8075680 -sub_8075680: - push {r4-r7,lr} - movs r7, 0 -_08075684: - ldr r0, _080756FC - ldr r0, [r0] - lsls r1, r7, 2 - ldr r2, _08075700 - adds r0, r2 - adds r0, r1 - ldr r5, [r0] - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080756EE - ldr r6, [r5, 0x70] - ldrb r0, [r6, 0x7] - cmp r0, 0 - bne _080756EE - movs r0, 0xB6 - lsls r0, 1 - adds r4, r6, r0 - ldr r1, [r4] - cmp r1, 0 - beq _080756EE - ldr r0, [r5, 0x4] - cmp r1, r0 - beq _080756EE - adds r0, r5, 0 - movs r1, 0x1 - bl CannotMove - lsls r0, 24 - cmp r0, 0 - bne _080756EE - adds r0, r5, 0x4 - adds r1, r4, 0 - bl GetDirectionTowardsPosition - adds r4, r0, 0 - movs r1, 0x7 - ands r0, r1 - adds r1, r6, 0 - adds r1, 0x46 - strb r0, [r1] - adds r0, r5, 0 - bl sub_806CEBC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - adds r2, r4, 0 - bl sub_806CDD4 -_080756EE: - adds r7, 0x1 - cmp r7, 0x13 - ble _08075684 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080756FC: .4byte gDungeon -_08075700: .4byte 0x000135cc - thumb_func_end sub_8075680 - .align 2,0 diff --git a/asm/code_807CD9C.s b/asm/code_807CD9C.s index 733c623e3..51eb85325 100644 --- a/asm/code_807CD9C.s +++ b/asm/code_807CD9C.s @@ -1024,7 +1024,7 @@ _0807D580: adds r2, 0x4 lsls r2, 8 mov r0, r8 - bl sub_8045394 + bl SetEntityPixelPos movs r2, 0 movs r1, 0 strh r1, [r7, 0x22] diff --git a/asm/code_8096AF8.s b/asm/code_8096AF8.s index a120fb647..f3db32169 100644 --- a/asm/code_8096AF8.s +++ b/asm/code_8096AF8.s @@ -98,328 +98,4 @@ _08096D14: _08096D20: .4byte gUnknown_203B490 thumb_func_end sub_8096C80 - thumb_func_start sub_8096D24 -sub_8096D24: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - movs r1, 0 -_08096D32: - adds r6, r1, 0x1 - mov r10, r6 - cmp r6, 0x7 - bgt _08096DBC - ldr r0, _08096DD4 - mov r8, r0 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - mov r9, r0 - lsls r0, r6, 2 - adds r0, r6 - lsls r4, r0, 2 -_08096D4C: - mov r1, r8 - ldr r2, [r1] - adds r3, r2, r4 - adds r5, r3, 0 - adds r5, 0xF0 - str r5, [sp, 0x14] - ldrb r0, [r5] - cmp r0, 0 - beq _08096DB0 - add r2, r9 - mov r12, r2 - mov r0, r12 - adds r0, 0xF4 - adds r1, r3, 0 - adds r1, 0xF4 - ldrb r2, [r0] - ldrb r0, [r1] - cmp r2, r0 - bhi _08096D84 - cmp r2, r0 - bne _08096DB0 - mov r0, r12 - adds r0, 0xF5 - adds r1, 0x1 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _08096DB0 -_08096D84: - mov r2, r12 - adds r2, 0xF0 - mov r1, sp - adds r0, r2, 0 - ldm r0!, {r3,r5,r7} - stm r1!, {r3,r5,r7} - ldm r0!, {r3,r7} - stm r1!, {r3,r7} - ldr r0, [sp, 0x14] - ldm r0!, {r1,r5,r7} - stm r2!, {r1,r5,r7} - ldm r0!, {r3,r5} - stm r2!, {r3,r5} - mov r7, r8 - ldr r1, [r7] - adds r1, r4 - adds r1, 0xF0 - mov r0, sp - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r7} - stm r1!, {r2,r7} -_08096DB0: - adds r4, 0x14 - movs r3, 0x1 - add r10, r3 - mov r5, r10 - cmp r5, 0x7 - ble _08096D4C -_08096DBC: - adds r1, r6, 0 - cmp r1, 0x6 - ble _08096D32 - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08096DD4: .4byte gUnknown_203B490 - thumb_func_end sub_8096D24 - - thumb_func_start sub_8096DD8 -sub_8096DD8: - ldr r0, _08096DE4 - ldr r0, [r0] - movs r1, 0xC8 - lsls r1, 1 - adds r0, r1 - bx lr - .align 2, 0 -_08096DE4: .4byte gUnknown_203B490 - thumb_func_end sub_8096DD8 - - thumb_func_start sub_8096DE8 -sub_8096DE8: - ldr r0, _08096DF4 - ldr r0, [r0] - movs r1, 0xDC - lsls r1, 1 - adds r0, r1 - bx lr - .align 2, 0 -_08096DF4: .4byte gUnknown_203B490 - thumb_func_end sub_8096DE8 - - thumb_func_start ReceivePKMNNews -ReceivePKMNNews: - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08096E10 - ldr r1, [r1] - movs r2, 0xBC - lsls r2, 2 - adds r1, r2 - adds r1, r0 - movs r0, 0x1 - strb r0, [r1] - bx lr - .align 2, 0 -_08096E10: .4byte gUnknown_203B490 - thumb_func_end ReceivePKMNNews - - thumb_func_start CheckPKMNNewsSlot -CheckPKMNNewsSlot: - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08096E28 - ldr r1, [r1] - movs r2, 0xBC - lsls r2, 2 - adds r1, r2 - adds r1, r0 - ldrb r0, [r1] - bx lr - .align 2, 0 -_08096E28: .4byte gUnknown_203B490 - thumb_func_end CheckPKMNNewsSlot - - thumb_func_start sub_8096E2C -sub_8096E2C: - push {lr} - movs r3, 0 - ldr r0, _08096E70 - ldr r1, [r0] - movs r2, 0x3 -_08096E36: - ldrb r0, [r1] - cmp r0, 0x1 - bne _08096E48 - ldrb r0, [r1, 0x5] - cmp r3, r0 - bgt _08096E48 - cmp r0, 0x31 - bhi _08096E48 - adds r3, r0, 0x1 -_08096E48: - adds r1, 0x14 - subs r2, 0x1 - cmp r2, 0 - bge _08096E36 - adds r2, r3, 0 - cmp r2, 0x31 - bgt _08096E7A - ldr r0, _08096E70 - ldr r0, [r0] - movs r3, 0xBC - lsls r3, 2 - adds r1, r0, r3 -_08096E60: - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08096E74 - lsls r0, r2, 24 - lsrs r0, 24 - b _08096E7C - .align 2, 0 -_08096E70: .4byte gUnknown_203B490 -_08096E74: - adds r2, 0x1 - cmp r2, 0x31 - ble _08096E60 -_08096E7A: - movs r0, 0x38 -_08096E7C: - pop {r1} - bx r1 - thumb_func_end sub_8096E2C - - thumb_func_start sub_8096E80 -sub_8096E80: - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - movs r2, 0 - ldr r0, _08096E9C - ldr r1, [r0] -_08096E8C: - ldrb r0, [r1] - cmp r0, 0x1 - bne _08096EA0 - ldrb r0, [r1, 0x5] - cmp r3, r0 - bne _08096EA0 - movs r0, 0x1 - b _08096EAA - .align 2, 0 -_08096E9C: .4byte gUnknown_203B490 -_08096EA0: - adds r1, 0x14 - adds r2, 0x1 - cmp r2, 0x3 - ble _08096E8C - movs r0, 0 -_08096EAA: - pop {r1} - bx r1 - thumb_func_end sub_8096E80 - - thumb_func_start sub_8096EB0 -sub_8096EB0: - ldrb r1, [r0, 0x2] - ldrb r2, [r0, 0x1] - adds r1, r2 - ldrb r3, [r0, 0x4] - adds r2, r1, r3 - ldrb r1, [r0, 0x5] - adds r2, r1 - ldr r1, [r0, 0x8] - lsls r1, 8 - adds r2, r1 - movs r3, 0xC - ldrsh r1, [r0, r3] - lsls r1, 12 - adds r2, r1 - movs r3, 0xE - ldrsh r1, [r0, r3] - lsls r1, 16 - adds r2, r1 - ldrb r1, [r0, 0x10] - lsls r1, 24 - adds r1, r2, r1 - ldrb r3, [r0, 0x11] - adds r2, r1, r3 - ldrb r1, [r0, 0x12] - adds r1, r2, r1 - ldrb r0, [r0, 0x13] - adds r2, r1, r0 - adds r0, r2, 0 - bx lr - thumb_func_end sub_8096EB0 - - thumb_func_start sub_8096EEC -sub_8096EEC: - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r12, r0 - movs r3, 0xF - ldr r5, _08096F4C - mov r8, r5 - movs r4, 0x8C - lsls r4, 2 -_08096EFE: - mov r0, r8 - ldr r2, [r0] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 2 - adds r1, r2, r1 - subs r3, 0x1 - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r2, r0 - adds r1, r4 - adds r2, r4 - ldm r2!, {r0,r6,r7} - stm r1!, {r0,r6,r7} - cmp r3, 0 - bgt _08096EFE - ldr r2, [r5] - movs r3, 0x8C - lsls r3, 2 - adds r2, r3 - mov r6, r12 - ldr r0, [r6, 0x4] - ldr r1, [r6, 0x8] - str r0, [r2] - str r1, [r2, 0x4] - mov r0, r12 - bl sub_8096EB0 - ldr r1, [r5] - movs r7, 0x8E - lsls r7, 2 - adds r1, r7 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08096F4C: .4byte gUnknown_203B490 - thumb_func_end sub_8096EEC - - .align 2,0 diff --git a/include/code_80130A8.h b/include/code_80130A8.h index 8858a8921..5c91a0c74 100644 --- a/include/code_80130A8.h +++ b/include/code_80130A8.h @@ -11,7 +11,7 @@ extern void sub_8013F84(void); extern void sub_80140B4(UnkTextStruct2 *); extern void sub_80140DC(void); extern void sub_8014114(void); -extern void sub_80141B4(const u8 *, u32, OpenedFile **, u32); +extern void sub_80141B4(const u8 *, u32, OpenedFile **, u16); extern void sub_8014248(const u8 *, u32, u32, const MenuItem *, void *, u32, u32, OpenedFile **, u32); extern s32 sub_80144A4(s32 *); extern void sub_80151C0(u32, u8 *); @@ -21,4 +21,4 @@ extern void xxx_draw_string_80144C4(void); extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32); extern void xxx_format_string(const u8 *, u8 *, u8 *, u32); -#endif // GUARD_CODE_80130A8_H \ No newline at end of file +#endif // GUARD_CODE_80130A8_H diff --git a/include/code_80958E8.h b/include/code_80958E8.h index 76eaf3964..84189f860 100644 --- a/include/code_80958E8.h +++ b/include/code_80958E8.h @@ -7,9 +7,8 @@ // size: 0xC typedef struct subStruct_203B490 { - /* 0x0 */ DungeonLocation dungeon; - /* 0x4 */ u32 seed; - u32 unk8; + WonderMailSub sub; + /* 0x8 */ s32 checksum; // really dumb checksum that just adds all the fields of WonderMail struct } subStruct_203B490; // size: 0x32C? @@ -21,7 +20,7 @@ typedef struct unkStruct_203B490 u8 unk190[40]; u8 unk1B8[120]; subStruct_203B490 unk230[16]; - /* 0x2F0 */ u8 PKMNNewsReceived[NUM_POKEMON_NEWS]; + /* 0x2F0 */ bool8 PKMNNewsReceived[NUM_POKEMON_NEWS]; bool8 unk328; } unkStruct_203B490; diff --git a/include/code_8096AF8.h b/include/code_8096AF8.h index 4ebe2a7b5..1c9ccd5f3 100644 --- a/include/code_8096AF8.h +++ b/include/code_8096AF8.h @@ -1,13 +1,15 @@ #ifndef GUARD_CODE_8096AF8_H #define GUARD_CODE_8096AF8_H -// code_8096AF8.s -extern u8 CheckPKMNNewsSlot(u8); -extern void sub_8096C80(void); -extern void sub_8096D24(void); -extern u8 *sub_8096DD8(void); -extern u8 *sub_8096DE8(void); -extern bool8 sub_8096E2C(void); -extern void sub_8096EEC(void); +#include "structs/str_wonder_mail.h" -#endif // GUARD_CODE_8096AF8_H \ No newline at end of file +extern void sub_8096C80(void); +void ReceivePKMNNews(u8 index); +bool8 CheckPKMNNewsSlot(u8 index); +void SortJobSlots(void); +u8 *sub_8096DD8(void); +u8 *sub_8096DE8(void); +u8 sub_8096E2C(void); +void sub_8096EEC(WonderMail *mail); + +#endif // GUARD_CODE_8096AF8_H diff --git a/include/constants/dungeon_action.h b/include/constants/dungeon_action.h index 32a10ae9f..57f68dca6 100644 --- a/include/constants/dungeon_action.h +++ b/include/constants/dungeon_action.h @@ -6,6 +6,7 @@ enum Action ACTION_NOTHING = 0x0, ACTION_PASS_TURN = 0x1, ACTION_WALK = 0x2, + ACTION_UNK5 = 0x5, // Switching between Pokémon in the moves menu. ACTION_NEXT = 0x6, ACTION_PREVIOUS = 0x7, @@ -30,6 +31,7 @@ enum Action ACTION_UNK21 = 0x21, ACTION_EAT_AI = 0x23, ACTION_THROW_ITEM_AI = 0x24, + ACTION_STAIRS = 0x26, ACTION_THROW_STRAIGHT_PLAYER = 0x27, ACTION_USE_LINK_BOX = 0x2C, ACTION_GIVE_UP = 0x2E, @@ -39,11 +41,13 @@ enum Action ACTION_UNSET_MOVE = 0x33, ACTION_GIVE_ITEM = 0x36, ACTION_TAKE_ITEM = 0x37, + ACTION_USE_ITEM = 0x38, ACTION_SECOND_THOUGHTS = 0x39, // Happens with invalid actions, like attempting to eat a non-consumable item. ACTION_SET_ITEM = 0x3C, ACTION_UNSET_ITEM = 0x3D, ACTION_PICK_UP_AI = 0x3F, ACTION_THROW_ARC_PLAYER = 0x41, // Throwing Gravelerocks and Geo Pebbles. + NUM_DUNGEON_ACTIONS }; #endif diff --git a/include/constants/item.h b/include/constants/item.h index 239500337..a8c1edc0a 100644 --- a/include/constants/item.h +++ b/include/constants/item.h @@ -20,6 +20,7 @@ #define CATEGORY_ORBS 9 #define CATEGORY_LINK_BOX 10 #define CATEGORY_USED_TM 11 +#define NUM_ITEM_CATEGORIES 12 #define ITEM_ACTION_TYPE_NOTHING 0 #define ITEM_ACTION_TYPE_THROWABLE 1 @@ -287,4 +288,4 @@ #define MIN_SPAWN_AMOUNT 0 #define MAX_SPAWN_AMOUNT 1 -#endif // GUARD_CONSTANTS_ITEM_H \ No newline at end of file +#endif // GUARD_CONSTANTS_ITEM_H diff --git a/include/dungeon.h b/include/dungeon.h index 58b6bef5d..6b9177acc 100644 --- a/include/dungeon.h +++ b/include/dungeon.h @@ -41,6 +41,7 @@ const u8 *GetDungeonName1(u8 dungeon); u32 GetMaxItemsAllowed(u8 dungeon); s8 GetRescuesAllowed(u8 dungeon); bool8 HasCheckpoint(u8 dungeon); +s16 GetRandomMovementChance(u8 dungeon); void PrintYellowDungeonNametoBuffer(u8 *buffer, DungeonLocation *dungeonLocation); void PrintDungeonLocationtoBuffer(u8 *buffer, DungeonLocation *dungeonLocation); @@ -48,4 +49,4 @@ u32 sub_80908D8(DungeonLocation *dungeon); u8 sub_8090910(DungeonLocation *dungeon, u32 param_2); bool8 sub_809095C(u8 dungeon); -#endif // GUARD_DUNGEON_H \ No newline at end of file +#endif // GUARD_DUNGEON_H diff --git a/include/dungeon_ai_leader.h b/include/dungeon_ai_leader.h index a66e5804e..31d468dc2 100644 --- a/include/dungeon_ai_leader.h +++ b/include/dungeon_ai_leader.h @@ -5,5 +5,6 @@ bool8 TargetLeader(Entity *pokemon); Entity* GetLeaderIfVisible(Entity *pokemon); +bool8 sub_8072CF4(Entity *entity); #endif diff --git a/include/pokemon_mid.h b/include/pokemon_mid.h index 4d261c99b..293c4a49c 100644 --- a/include/pokemon_mid.h +++ b/include/pokemon_mid.h @@ -5,7 +5,9 @@ bool8 ComparePokemonNames(s16, s16); void PrintPokeNameToBuffer(u8 *buffer, PokemonStruct1 *pokemon); +void GetPokemonLevelData(LevelData* a1, s16 _id, s32 level); +const u8* DecompressMoveID(const u8* a1, u16* moveID); bool8 sub_808DA44(s32, u32); -#endif // GUARD_POKEMON_MID_H \ No newline at end of file +#endif // GUARD_POKEMON_MID_H diff --git a/include/structs/dungeon_entity.h b/include/structs/dungeon_entity.h index 18e522120..d1f822ed4 100644 --- a/include/structs/dungeon_entity.h +++ b/include/structs/dungeon_entity.h @@ -23,6 +23,12 @@ #define STAT_STAGE_ACCURACY 0 #define STAT_STAGE_EVASION 1 +typedef struct unkStruct_8044CC8 +{ + u8 actionUseIndex; + Position lastItemThrowPosition; +} unkStruct_8044CC8; + // size: 0x18 typedef struct ActionContainer { @@ -30,12 +36,7 @@ typedef struct ActionContainer /* 0x2 */ u8 direction; u8 fill3; // Additional parameter alongside actionIndex. Used for things like indicating which move a Pokémon should use from its moveset. - /* 0x4 */ u8 actionUseIndex; - // Position of the Pokémon the last time it threw an item. - /* 0x8 */ Position lastItemThrowPosition; - u8 unkC; - u8 fillD[3]; - u8 fill10[4]; + /* 0x4 */ unkStruct_8044CC8 unk4[2]; // Position of the target that the Pokémon wants throw an item at. /* 0x14 */ Position itemTargetPosition; } ActionContainer; @@ -246,7 +247,7 @@ typedef struct EntityInfo /* 0x1F6 */ bool8 notMoving; u8 fill1F7[0x1FA - 0x1F7]; /* 0x1FA */ s16 mobileTurnTimer; // When a Pokémon can pass through walls in a hallway, this counts up to 200 before the Pokémon turns in a random direction. - /* 0x1FC */ u16 expGainedInTurn; // Used to accumulate experience when multiple enemies are defeated in one turn. + /* 0x1FC */ u32 expGainedInTurn; // Used to accumulate experience when multiple enemies are defeated in one turn. /* 0x200 */ u32 statusIcons; u8 unk204; } EntityInfo; @@ -338,4 +339,4 @@ enum VisualFlag VISUAL_FLAG_RUN_AWAY = 2 }; -#endif \ No newline at end of file +#endif diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index bb65b6992..93c600c6e 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -99,7 +99,8 @@ typedef struct Dungeon u8 unk65C; u8 fill65D[0x660 - 0x65D]; /* 0x660 */ s16 fractionalTurn; // Handles turn order when Pokémon have different movement speeds. - u8 fill662[0x666 - 0x662]; + s16 unk662; + s16 unk664; /* 0x666 */ s16 windTurns; // Turns remaining before getting swept out of the dungeon. /* 0x668 */ u16 unk668; u16 bossSongIndex; @@ -133,13 +134,16 @@ typedef struct Dungeon /* 0x37F8 */ bool8 plusIsActive[2]; // Index 0: Enemy , Index 1: Team /* 0x37FA */ bool8 minusIsActive[2]; // Index 0: Enemy , Index 1: Team /* 0x37FC */ bool8 decoyActive; - u8 fill37FD[0x3800 - 0x37FD]; + u8 fill37FD; + /* 0x37FE */ bool8 deoxysDefeat; // Flag set for deoxys in Meteor Cave + u8 fill37FF; s16 unk3800; u8 fill3802[0x3904 - 0x3802]; /* 0x3904 */ s16 unk3904; u8 fill3906[0x3A08 - 0x3906]; /* 0x3A08 */ u8 unk3A08; - u8 fill3A09[0x3A0D - 0x3A09]; + u8 fill3A09[0x3A0C - 0x3A09]; + u8 unk3A0C; /* 0x3A0D */ u8 unk3A0D; /* 0x3A0E */ s16 tileset; /* 0x3A10 */ u16 unk3A10; @@ -198,10 +202,10 @@ typedef struct Dungeon /* 0x15E2C */ Entity unk15E2C[0x40]; /* 0x17B2C */ Entity *lightningRodPokemon; /* 0x17B30 */ Entity *snatchPokemon; - /* 0x17B34 */ u8 fillunk1734[0x17B38 - 0x17B34]; + /* 0x17B34 */ Entity *unk17B34; /* 0x17B38 */ u32 unk17B38; /* 0x17B3C */ u32 unk17B3C; - u8 fill17B40[0x17B44 - 0x17B40]; + /* 0x17B3C */ u32 unk17B40; /* 0x17B44 */ OpenedFile *sprites[MONSTER_MAX]; /* 0x181E4 */ OpenedFile *paletFile; /* 0x181E8 */ Position cameraPos; @@ -236,4 +240,4 @@ typedef struct Dungeon extern Dungeon *gDungeon; -#endif // GUARD_STR_DUNGEON_H \ No newline at end of file +#endif // GUARD_STR_DUNGEON_H diff --git a/ld_script.txt b/ld_script.txt index eef5ab97d..220a146b0 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -95,6 +95,8 @@ SECTIONS { src/code_8012A18.o(.text); src/menu_input.o(.text); asm/code_80130A8.o(.text); + src/code_80140DC.o(.text); + asm/code_80140DC.o(.text); src/code_8012A18_1.o(.text); src/code_801602C.o(.text); src/felicity_bank.o(.text); @@ -199,6 +201,7 @@ SECTIONS { src/dungeon_engine.o(.text); asm/code_8044210.o(.text); src/dungeon_action.o(.text); + src/code_8044CC8.o(.text); asm/code_8044CC8.o(.text); src/dungeon_util.o(.text); asm/code_80450F8.o(.text); @@ -224,6 +227,8 @@ SECTIONS { src/status_actions.o(.text); src/move_checks.o(.text); asm/code_805D8C8.o(.text); + src/code_8066D04.o(.text); + asm/code_8066D04.o(.text); src/code_805D8C8.o(.text); asm/code_805D8C8_1.o(.text); src/targeting.o(.text); @@ -240,7 +245,9 @@ SECTIONS { src/dungeon_capabilities.o(.text); src/dungeon_ai_targeting.o(.text); src/dungeon_pokemon_attributes.o(.text); + src/code_80718D8.o(.text); asm/code_80718D8.o(.text); + src/code_8072B78.o(.text); src/dungeon_ai_leader.o(.text); asm/code_8072CF4.o(.text); src/dungeon_ai_items.o(.text); diff --git a/src/code_80140DC.c b/src/code_80140DC.c new file mode 100644 index 000000000..0f8abb678 --- /dev/null +++ b/src/code_80140DC.c @@ -0,0 +1,87 @@ +#include "constants/input.h" +#include "global.h" +#include "menu_input.h" +#include "sprite.h" +#include "code_80118A4.h" +#include "code_80130A8.h" + +extern s32 gUnknown_202E744; +extern s32 gUnknown_202E738; +extern s32 gUnknown_202E73C; +extern s32 gUnknown_202E740; + +extern MenuItem gUnknown_80D485C[]; + +void sub_80140DC(void) +{ + Position pos; + + pos.x = 200; + pos.y = 128; + SetSavingIconCoords(&pos); + sub_8011830(); +} + +void sub_80140F8(void) +{ + Position pos; + + pos.x = 188; + pos.y = 64; + SetSavingIconCoords(&pos); + sub_8011830(); +} + +void sub_8014114(void) { + xxx_call_start_bg_music(); + SetSavingIconCoords(NULL); +} + +void nullsub_201(void) {} + +u32 sub_8014128(void) { + if(sub_8012AE8() == INPUT_B_BUTTON) return 0; + else return 1; +} + +u32 sub_801413C(void) +{ + return 0; +} + +u32 sub_8014140(void) +{ + return 0; +} + +void sub_8014144(void) +{ + gUnknown_202E744 = 0; + gUnknown_202E738 = 60; + gUnknown_202E73C = 60; + gUnknown_202E740 = 0; +} + +void sub_801416C(s32 param_1,s32 param_2) +{ + if (param_1 < -1) { + gUnknown_202E738 = param_2; + gUnknown_202E740 = -param_1; + } + else { + gUnknown_202E738 = param_1; + gUnknown_202E740 = 0; + } + gUnknown_202E73C = (param_2 < 0 ) ? 0 : param_2; +} + +void sub_80141B4(const u8 *text, u32 param_2, OpenedFile **file, u16 param_4) +{ + sub_8014248(text, param_2, -1, NULL, NULL, 3, 0, file, param_4); +} + +// https://decomp.me/scratch/w4sX4 +// void sub_80141E0(const u8 *text, OpenedFile **file, u16 param_4) +// { +// sub_8014248(text, 0, -1, gUnknown_80D485C, NULL, 3, 0, file, param_4); +// } diff --git a/src/code_802DB28.c b/src/code_802DB28.c index 89303a9d5..10be8ac75 100644 --- a/src/code_802DB28.c +++ b/src/code_802DB28.c @@ -43,7 +43,7 @@ bool8 sub_802DB28(u8 jobSlotIndex, u8 dungeon) sUnknown_203B2FC = MemoryAlloc(sizeof(struct unkStruct_203B2FC), 8); sUnknown_203B2FC->jobSlotIndex = jobSlotIndex; sUnknown_203B2FC->jobInfo = GetJobSlotInfo(jobSlotIndex); - sub_8096EEC(); + sub_8096EEC(sUnknown_203B2FC->jobInfo); sub_803C21C(sUnknown_203B2FC->jobInfo, &sUnknown_203B2FC->unk8); sUnknown_203B2FC->faceFile = GetDialogueSpriteDataPtr(sUnknown_203B2FC->jobInfo->clientSpecies); @@ -199,4 +199,4 @@ static void sub_802DE60(void) if (sub_80144A4(&temp) == 0) sub_802DC28(sUnknown_203B2FC->fallbackState); -} \ No newline at end of file +} diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c index 22af484e0..fa42b5005 100644 --- a/src/code_8041AD0.c +++ b/src/code_8041AD0.c @@ -16,6 +16,20 @@ struct unkStruct_80420E8 u32 unk8; }; +typedef struct unkStruct_80416E0 +{ + s32 unk0; + s32 unk4; + s32 unk8; + u16 x; + u16 y; + u16 unk10; + u16 unk12; + s32 unk14; + u32 unk18; +} unkStruct_80416E0; + + extern u32 gStatusSpriteMasks_SleepStatus[]; extern u32 gStatusSpriteMasks_NonVolatileStatus[]; extern u32 gStatusSpriteMasks_ImmobilizeStatus[]; @@ -33,18 +47,15 @@ extern u32 gStatusSpriteMasks_MuzzledStatus[]; extern void sub_803ED30(u8, Entity *pokemon, u8, u8); extern void sub_804151C(Entity *pokemon, u32 r1, u8 r2); -extern void sub_80416E0(Entity *pokemon, u32, u32); extern u8 sub_8042768(Entity *pokemon); extern u32 sub_806F62C(u32); extern void PlaySoundEffect(u32); extern u8 sub_803F428(Position *pos); extern void sub_8041550(Entity *pokemon, u32, u32, u32, u32, u32); - void sub_80421C0(Entity *pokemon, u16 r1); void EntityUpdateStatusSprites(Entity *entity); - extern s32 gUnknown_202EDC8; extern u8 gUnknown_203B40D; extern s16 gUnknown_2026E4E; @@ -55,12 +66,56 @@ extern void sub_803EA10(void); extern void sub_8042E98(void); extern void sub_803E46C(u32); extern void sub_800EE5C(u32); -extern u32 sub_800E890(u32 *); extern void sub_800EF64(void); +extern u8 sub_800E9A8(u32); +extern u32 sub_800E890(unkStruct_80416E0 *); -u32 sub_8041764(u32 *param_1, u8 param_2) +u32 sub_8041764(unkStruct_80416E0 *param_1, u8 param_2); +s32 sub_80416E0(Position32 *pos, u32 param_2, u8 param_3); + +s32 sub_80416A4(Position *pos_1, u32 param_2, u8 param_3) { - sub_800EE5C(*param_1); + Position32 pos; + + pos.x = pos_1->x * 0x1800 + 0xc00; + pos.y = pos_1->y * 0x1800 + 0x1000; + return sub_80416E0(&pos, param_2, param_3); +} + +s32 sub_80416E0(Position32 *pos, u32 param_2, u8 param_3) +{ + int counter; + s32 ret; + unkStruct_80416E0 auStack_10; + unkStruct_2039DB0 auStack_18; // Size: 0xC + + auStack_10.unk0 = param_2; + auStack_10.unk4 = 0; + auStack_10.unk8 = -1; + + auStack_10.x = pos->x / 256; + auStack_10.y = pos->y / 256; + + auStack_10.unk14 = -1; + auStack_10.unk10 = 0; + auStack_10.unk12 = 0; + auStack_10.unk18 = 0xffff; + sub_8004E8C(&auStack_18); + ret = sub_8041764(&auStack_10,0); + if (param_3 != 0) { + counter = 0; + while ((counter < 100 && (sub_800E9A8(ret) != 0))) { + sub_803E46C(0x42); + counter++; + } + ret = -1; + } + return ret; +} + +u32 sub_8041764(unkStruct_80416E0 *param_1, u8 param_2) +{ + sub_800EE5C(param_1->unk0); sub_800EF64(); if(param_2) sub_803E46C(0x42); @@ -817,9 +872,9 @@ void sub_804218C(Entity *pokemon, Entity *target) sub_804151C(target, 0x2A, 1); } -void sub_804219C(Entity *pokemon) +void sub_804219C(Position32 *pos) { - sub_80416E0(pokemon, 0x90, 1); + sub_80416E0(pos, 0x90, 1); } void sub_80421AC(Entity *pokemon, Entity * target) diff --git a/src/code_8044CC8.c b/src/code_8044CC8.c new file mode 100644 index 000000000..1c8d3b1d2 --- /dev/null +++ b/src/code_8044CC8.c @@ -0,0 +1,258 @@ +#include "global.h" +#include "constants/dungeon_action.h" +#include "dungeon_map_access.h" +#include "dungeon_util.h" +#include "items.h" + +typedef struct ItemText +{ + u8 *desc; + u8 *useText; +} ItemText; +extern const ItemText gActions[]; + +extern u16 gUnknown_80F6964[NUM_ITEM_CATEGORIES]; +extern u8 gUnknown_80F697C[]; +extern u8 *gUnknown_80F91EC[]; +extern u8 *gUnknown_80F7C50[10]; + +extern s32 gUnknown_202EE6C; + +bool8 sub_80461C8(Position *, u32); +void sub_80460F8(Position *, Item *, u32); +extern u8 sub_8043D10(void); +extern u8 sub_8045888(Entity *); + +struct unkStruct_202EE44 +{ + u16 unk0; + u8 unk2; + bool8 unk3; +}; + +struct unkStruct_202EE44 gUnknown_202EE44[10]; + + +Item * sub_8044CC8(Entity *param_1, unkStruct_8044CC8 *param_2) +{ + Tile *tile; + Item *item; + EntityInfo *info; + + if ((u8)(param_2->actionUseIndex - 1) < INVENTORY_SIZE) { + item = &gTeamInventoryRef->teamItems[param_2->actionUseIndex - 1]; + } + else if (param_2->actionUseIndex == 0x80) { + tile = GetTile((param_2->lastItemThrowPosition).x,(param_2->lastItemThrowPosition).y); + item = GetItemData(tile->object); + } + else { + if (param_2->actionUseIndex == 0x81) { + info = param_1->info; + } + else { + if (3 < (u8)(param_2->actionUseIndex + 0x70)) { + return NULL; + } + info = gDungeon->teamPokemon[param_2->actionUseIndex - 0x90]->info; + } + item = &info->heldItem; + } + return item; +} + +bool8 sub_8044D40(ActionContainer *param_1,s32 index) +{ + Item *item; + unkStruct_8044CC8 *puVar1; + + puVar1 = ¶m_1->unk4[index]; + if ((u8)(puVar1->actionUseIndex - 1) < INVENTORY_SIZE) { + item = &gTeamInventoryRef->teamItems[puVar1->actionUseIndex - 1]; + item->id = ITEM_NOTHING; + item->quantity = 0; + item->flags = 0; + FillInventoryGaps(); + } + else { + if (puVar1->actionUseIndex != 0x80) { + return FALSE; + } + sub_80461C8(&puVar1->lastItemThrowPosition,1); + } + return TRUE; +} + +Item *sub_8044D90(Entity *entity, s32 index, s32 unused) { + EntityInfo *info = entity->info; + register unkStruct_8044CC8 *puVar1 asm("r3") = &info->action.unk4[index]; + return sub_8044CC8(entity, puVar1); +} + +Entity *sub_8044DA4(Entity *entity, s32 index) +{ + EntityInfo *info = entity->info; + return gDungeon->teamPokemon[info->action.unk4[index].actionUseIndex]; +} + +u16 sub_8044DC8(u8 *param_1) +{ + if (param_1[2] == ITEM_SWITCH_BOX) { + return 0x35; + } + else { + return gUnknown_80F6964[GetItemCategory(param_1[2])]; + } +} + +void sub_8044DF0(Entity *entity, s32 index, u32 unused) +{ + Item *item; + EntityInfo *info; + + info = entity->info; + item = sub_8044D90(entity,index,unused); + if ((info->action).unk4[0].actionUseIndex == 0x80) { + sub_80461C8(&(info->action).unk4[0].lastItemThrowPosition,1); + } + else { + item->id = ITEM_NOTHING; + item->quantity = 0; + item->flags = 0; + FillInventoryGaps(); + } +} + + +void sub_8044E24(Entity *entity,int index,u32 unused) +{ + Item *itemPtr; + EntityInfo *info; + Position *pos; + Item item; + + itemPtr = sub_8044D90(entity,index,unused); + info = entity->info; + if (!IsHMItem(itemPtr->id)) { + if (GetItemCategory(itemPtr->id) == CATEGORY_TMS_HMS) { + if (info->action.unk4[index].actionUseIndex == 0x80) { + item = *itemPtr; + pos = &info->action.unk4[index].lastItemThrowPosition; + sub_80461C8(pos,1); + item.quantity = itemPtr->id - 125; + item.id = ITEM_TM_USED_TM; + sub_80460F8(pos,&item,1); + } + else { + itemPtr->quantity = itemPtr->id - 125; + itemPtr->id = ITEM_TM_USED_TM; + } + } + else { + sub_8044DF0(entity,index,unused); + } + } +} + +// Similar to sub_8044BA8 +u8 *sub_8044EC8(s32 param_1) +{ + u16 uVar1; + u32 uVar3; + u32 uVar4; + + uVar1 = gUnknown_202EE44[param_1].unk0; + + if ((uVar1 == 0x26) && (sub_8043D10() == 2)) { + return *gUnknown_80F91EC; + } + else { + uVar3 = uVar4 = strcmp(gUnknown_80F7C50[uVar1 << 1], gUnknown_80F697C); + if (uVar3 != 0) { + uVar4 = 1; + } + if ((u8)(uVar4) == 0) { + return gActions[GetItemActionType(gUnknown_202EE44[param_1].unk2)].useText; + } + else + { + return gUnknown_80F7C50[uVar1 << 1]; + } + } +} + +bool8 sub_8044F3C(s32 param_1) +{ + if(param_1 < 0) + return FALSE; + else + return gUnknown_202EE44[param_1].unk3; +} + +void sub_8044F5C(u16 param_1, u8 param_2) +{ + int index; + + if (gUnknown_202EE6C < 10) { + for(index = 0; index < gUnknown_202EE6C; index++) + { + if (gUnknown_202EE44[index].unk0 == param_1) { + return; + } + } + gUnknown_202EE44[gUnknown_202EE6C].unk0 = param_1; + gUnknown_202EE44[gUnknown_202EE6C].unk2 = param_2; + gUnknown_202EE44[gUnknown_202EE6C].unk3 = TRUE; + gUnknown_202EE6C++; + } +} + +s32 sub_8044FB4(u16 param_1) +{ + int index; + + for(index = 0; index < gUnknown_202EE6C; index++) + { + if (gUnknown_202EE44[index].unk0 == param_1) { + return index; + } + } + return -1; +} + +void sub_8044FF0(u16 param_1) +{ + int index; + + for(index = 0; index < gUnknown_202EE6C; index++) + { + if (gUnknown_202EE44[index].unk0 == param_1) { + gUnknown_202EE44[index].unk3 = FALSE; + return; + } + } +} + +bool8 IsNotAttacking(Entity *param_1, bool8 param_2) +{ + EntityInfo *info; + u16 *action; + + info = param_1->info; + action = &(info->action).action; + if ((param_2 == 0) || (sub_8045888(param_1) != 0)) + { + if(*action == ACTION_NOTHING) + return TRUE; + if (*action == ACTION_WALK) + return TRUE; + if (*action == ACTION_PASS_TURN) + return TRUE; + if (*action == ACTION_UNK5) + return TRUE; + return FALSE; + } + else { + return TRUE; + } +} diff --git a/src/code_8057824.c b/src/code_8057824.c index 4443fb012..0c1bd45bb 100644 --- a/src/code_8057824.c +++ b/src/code_8057824.c @@ -1362,16 +1362,10 @@ bool8 sub_8058C00(Entity *pokemon, Entity *target, Move *move, u32 param_4) bool8 sub_8058C48(Entity *pokemon, Entity *target, Move *move, u32 param_4) { s32 rand; - s32 iVar2; bool8 flag; rand = DungeonRandRange(128, 384); // 0x80 - 0x180 - iVar2 = rand * pokemon->info->level; - - if (iVar2 < 0) { - iVar2 = iVar2 + 0xFF; - } - rand = iVar2 >> 8; + rand = (rand * pokemon->info->level) / 256; if (rand < 0) { rand = 1; } diff --git a/src/code_8057824_1.c b/src/code_8057824_1.c index 59f77a2d3..f9628e9f5 100644 --- a/src/code_8057824_1.c +++ b/src/code_8057824_1.c @@ -3818,17 +3818,11 @@ void sub_808BB3C(Position *param_1) Position local_8; iVar1 = param_1->x * 0x1800 + 0xc00; - if (iVar1 < 0) { - iVar1 += 0xff; - } - local_8.x = iVar1 >> 8; + local_8.x = iVar1 / 256; iVar1 = param_1->y * 0x1800 + 0x1000; - if (iVar1 < 0) { - iVar1 += 0xff; - } - local_8.y = iVar1 >> 8; + local_8.y = iVar1 / 256; sub_8085EC8(100,0,0,&local_8,0); } diff --git a/src/code_805A120.c b/src/code_805A120.c index 73e02a4d5..51cd4adf0 100644 --- a/src/code_805A120.c +++ b/src/code_805A120.c @@ -120,7 +120,7 @@ extern void sub_806ABAC(Entity *, Entity *); extern u8 sub_807EAA0(u32, u32); extern void sub_8045C28(Item *, u8 , u8); extern void sub_805A7D4(Entity *, Entity *, Item *, Position *); -extern void sub_8045394(Entity *, s32, s32); +extern void SetEntityPixelPos(Entity *, s32, s32); extern void sub_804652C(Entity *, Entity *, Item *, u32, Position *); extern void sub_806EAF4(Entity *, Entity *, u8, u32, u32, s32 *, u32, u16, u32); extern u8 *gUnknown_80FEB60[]; @@ -1107,7 +1107,7 @@ void sub_805A7D4(Entity * pokemon, Entity * target, Item *item, Position *pos) stackEntity.info = (EntityInfo*) item; stackEntity.pos.x = target->pos.x + pos->x; stackEntity.pos.y = target->pos.y + pos->y; - sub_8045394(&stackEntity,(target->pos.x * 0x18 + 4) * 0x100, + SetEntityPixelPos(&stackEntity,(target->pos.x * 0x18 + 4) * 0x100, (target->pos.y * 0x18 + 4) * 0x100); stackEntity.spawnGenID = 0; SetMessageArgument(gUnknown_202DE58,&stackEntity,0); diff --git a/src/code_8066D04.c b/src/code_8066D04.c new file mode 100644 index 000000000..ba178e6bf --- /dev/null +++ b/src/code_8066D04.c @@ -0,0 +1,351 @@ +#include "global.h" +#include "code_80521D0.h" +#include "dungeon_util.h" +#include "dungeon_map_access.h" +#include "dungeon_music.h" +#include "dungeon_movement.h" +#include "items.h" + +extern u8 gUnknown_202DE58[]; +extern u8 gUnknown_202DEA8[]; +extern u8 gAvailablePokemonNames[]; +extern u8 gUnknown_202DFE8[]; + +extern u8 *gUnknown_80F8BE0[]; +extern u8 *gUnknown_80F8C40[]; +extern u8 *gUnknown_80F8C44[]; +extern u8 *gUnknown_80F8C7C[]; +extern u8 *gUnknown_80F8CA8[]; +extern u8 *gUnknown_80F8CE4[]; +extern u8 *gUnknown_80F8CE8[]; +extern u8 *gUnknown_80F8D04[]; +extern u8 *gUnknown_80F8D20[]; +extern u8 *gUnknown_80F8D44[]; +extern u8 *gUnknown_80F8D60[]; +extern u8 *gUnknown_80F8D7C[]; +extern u8 *gUnknown_80F8DB4[]; +extern u8 *gUnknown_80F8DE0[]; +extern u8 *gUnknown_80F8E04[]; +extern u8 *gUnknown_80F8E28[]; + +extern void SetMessageArgument(u8 *, Entity *, u32); +extern Item *sub_8044D90(Entity *, s32, u32); +void sub_8045BF8(u8 *, Item *); +u8 sub_80460F8(Position *, Item *, u32); +extern void sub_807AB38(Entity *, u32); +extern Entity * sub_8044DA4(Entity *param_1,int param_2); +extern void sub_807D148(Entity *pokemon, Entity *r1, u32 r2, Position *r3); +extern void sub_806A6E8(Entity *); +extern void sub_8044DF0(Entity *, u32, u32); +extern void sub_8045DB4(Position *, u32); + +void sub_8066744(Entity *entity) +{ + entity->info->action.unk4[0].actionUseIndex = 1; + sub_8045DB4(&entity->pos,0); +} + +void sub_806675C(Entity *param_1, bool8 param_2) +{ + Item *item; + Item *itemPtr; + s32 index; + + item = sub_8044D90(param_1,0,0xfe); + for(index = 0; index < INVENTORY_SIZE; index++) + { + itemPtr = &gTeamInventoryRef->teamItems[index]; + if (((itemPtr->flags & ITEM_FLAG_EXISTS)) && ((itemPtr->flags & ITEM_FLAG_SET))) { + if ((itemPtr->flags & ITEM_FLAG_STICKY)) { + sub_8045BF8(gUnknown_202DE58,itemPtr); + SendMessage(param_1,*gUnknown_80F8C7C); + return; + } + itemPtr->flags &= ~(ITEM_FLAG_SET); + } + } + sub_8045BF8(gUnknown_202DE58,item); + PlaySoundEffect(0x133); + if (param_2 != 0) { + if ((item->flags & ITEM_FLAG_STICKY)) { + SendMessage(param_1,*gUnknown_80F8D04); + } + else { + if (GetItemCategory(item->id) == CATEGORY_THROWN_LINE) { + SendMessage(param_1,*gUnknown_80F8CE4); + } + else + { + SendMessage(param_1,*gUnknown_80F8CE8); + } + } + } + item->flags |= ITEM_FLAG_SET; + if (((item->flags & ITEM_FLAG_STICKY)) && (param_2 != 0)) { + sub_8045BF8(gUnknown_202DE58,item); + SendMessage(param_1,*gUnknown_80F8BE0); + } +} + + +void sub_806684C(Entity *entity,bool8 enableMessage) +{ + Item *item; + int index; + + for(index = 0; index < INVENTORY_SIZE; index++) + { + item = &gTeamInventoryRef->teamItems[index]; + if (((item->flags & ITEM_FLAG_EXISTS)) && ((item->flags & ITEM_FLAG_SET))) { + if ((item->flags & ITEM_FLAG_STICKY)) { + sub_8045BF8(gUnknown_202DE58,item); + SendMessage(entity,*gUnknown_80F8C7C); + return; + } + item->flags &= ~(ITEM_FLAG_SET); + sub_8045BF8(gUnknown_202DE58,item); + PlaySoundEffect(0x133); + if (enableMessage) { + SendMessage(entity,*gUnknown_80F8D20); + } + } + } +} + + +void sub_80668D0(Entity *param_1) +{ + Entity *entity; + Item *item; + EntityInfo *info1; + EntityInfo *info2; + bool8 bVar3; + Item item1; + Item item2; + Item item3; + + entity = sub_8044DA4(param_1,1); + info1 = param_1->info; + info2 = entity->info; + item = sub_8044D90(param_1,0,2); + + if((info1->action).unk4[0].actionUseIndex == 0x80) + bVar3 = TRUE; + else + bVar3 = FALSE; + + if ((!bVar3) && ((item->flags & (ITEM_FLAG_STICKY | ITEM_FLAG_SET)) == (ITEM_FLAG_STICKY | ITEM_FLAG_SET))) { + sub_8045BF8(gUnknown_202DEA8,item); + SendMessage(param_1,*gUnknown_80F8C44); + } + else + { + SetMessageArgument(gUnknown_202DFE8,entity,0); + if (((info2->heldItem).flags & ITEM_FLAG_EXISTS)) { + if (((info2->heldItem).flags & ITEM_FLAG_STICKY)) { + sub_8045BF8(gUnknown_202DEA8,&info2->heldItem); + SendMessage(param_1,*gUnknown_80F8C40); + return; + } + item1 = (info2->heldItem); + item2 = *item; + item1.flags &= ~(ITEM_FLAG_SET); + item2.flags &= ~(ITEM_FLAG_SET); + sub_8044DF0(param_1,0,100); + if (bVar3) { + sub_80460F8(¶m_1->pos,&item1,1); + } + else { + AddItemToInventory(&item1); + } + info2->heldItem = item2; + sub_8045BF8(gUnknown_202DE58,&item2); + sub_8045BF8(gUnknown_202DE58 + 0x50,&item1); + PlaySoundEffect(0x14d); + SendMessage(param_1,*gUnknown_80F8CA8); + if ((item2.flags & ITEM_FLAG_STICKY)) { + SendMessage(param_1,*gUnknown_80F8BE0); + } + } + else { + item3 = *item; + item3.flags &= ~(ITEM_FLAG_SET); + sub_8044DF0(param_1, 0, 101); + info2->heldItem = item3; + sub_8045BF8(gUnknown_202DE58,&item3); + PlaySoundEffect(0x14d); + SendMessage(param_1,*gUnknown_80F8D44); + if ((item3.flags & ITEM_FLAG_STICKY)) { + SendMessage(param_1,*gUnknown_80F8BE0); + } + } + sub_806A6E8(entity); + if (sub_80706A4(entity,&entity->pos) != 0) { + sub_807D148(param_1,entity,0,0); + } + if (!info2->isTeamLeader) { + info2->flags = info2->flags | MOVEMENT_FLAG_UNK_14; + } + sub_807AB38(param_1,gDungeon->unk3A08); + } +} + + +void sub_8066AC0(Entity *param_1) +{ + Entity *entity; + EntityInfo *info; + EntityInfo *info2; + Item *heldItem; + Item item; + + entity = sub_8044DA4(param_1,0); + info = entity->info; + info2 = entity->info; + heldItem = &info->heldItem; + if ((gTeamInventoryRef->teamItems[ITEM_POWER_BAND].flags & ITEM_FLAG_EXISTS)) { + SendMessage(param_1,*gUnknown_80F8D60); + } + else + { + if ((heldItem->flags & ITEM_FLAG_STICKY)) { + sub_8045BF8(gUnknown_202DE58,heldItem); + SendMessage(param_1,*gUnknown_80F8BE0); + } + else + { + item = *heldItem; + item.flags &= ~(ITEM_FLAG_SET); + sub_8045BF8(gUnknown_202DE58,&item); + SetMessageArgument(gAvailablePokemonNames,entity,0); + heldItem->id = ITEM_NOTHING; + heldItem->quantity = 0; + heldItem->flags = 0; + AddItemToInventory(&item); + PlaySoundEffect(0x14d); + SendMessage(param_1,*gUnknown_80F8D7C); + sub_806A6E8(entity); + if (sub_80706A4(entity,&entity->pos) != 0) { + sub_807D148(param_1,entity,0,0); + } + if (!info2->isTeamLeader) { + info2->flags = info2->flags | MOVEMENT_FLAG_UNK_14; + } + sub_807AB38(param_1,gDungeon->unk3A08); + } + } +} + +void sub_8066BD4(Entity *param_1) +{ + Entity *entity; + EntityInfo *info; + EntityInfo *info2; // NOTE: needed two of these to match + Item *item; + Item *heldItem; + Item temp; + + entity = sub_8044DA4(param_1,0); + info = entity->info; + info2 = entity->info; + heldItem = &info->heldItem; + item = sub_8044D90(param_1,1,0x1565); + if (heldItem->flags & ITEM_FLAG_STICKY) + { + sub_8045BF8(gUnknown_202DE58,heldItem); + SendMessage(param_1,*gUnknown_80F8BE0); + } + else if ((item->flags & (ITEM_FLAG_STICKY | ITEM_FLAG_SET)) == (ITEM_FLAG_STICKY | ITEM_FLAG_SET)) { + sub_8045BF8(gUnknown_202DE58,item); + SendMessage(param_1,*gUnknown_80F8BE0); + } + else + { + heldItem->flags &= ~(ITEM_FLAG_SET); + item->flags &= ~(ITEM_FLAG_SET); + sub_8045BF8(gUnknown_202DE58,heldItem); + sub_8045BF8(gUnknown_202DE58 + 0x50,item); + SetMessageArgument(gUnknown_202DFE8,entity,0); + temp = info->heldItem; + info->heldItem = *item; + *item = temp; + PlaySoundEffect(0x14d); + SendMessage(param_1,*gUnknown_80F8DB4); + if (sub_80706A4(entity,&entity->pos) != 0) { + sub_807D148(param_1,entity,0,0); + } + if (!info2->isTeamLeader) { + info2->flags = info2->flags | MOVEMENT_FLAG_UNK_14; + } + sub_807AB38(param_1,gDungeon->unk3A08); + } +} + +void sub_8066CF0(Entity *param_1) +{ + Entity *entity; + + entity = sub_8044DA4(param_1,0); + entity->info->useHeldItem = TRUE; +} + +void sub_8066D04(Entity *param_1) +{ + Item *item; + Tile *tile; + EntityInfo *info; +#ifndef NONMATCHING + register Entity *entity asm("r4"); +#else + Entity *entity; +#endif + + entity = param_1; + + info = entity->info; + item = sub_8044D90(entity,0,4); + sub_8045BF8(gUnknown_202DE58,item); + if (info->action.unk4[0].actionUseIndex == 0x80) { + SendMessage(entity,*gUnknown_80F8DE0); + } + else if ((info->action.unk4[0].actionUseIndex < 0x15) && ((item->flags & (ITEM_FLAG_STICKY | ITEM_FLAG_SET)) == (ITEM_FLAG_STICKY | ITEM_FLAG_SET))) { + SendMessage(entity,*gUnknown_80F8BE0); + } + else if ((info->action.unk4[0].actionUseIndex == 0x81) && ((item->flags & ITEM_FLAG_STICKY))) { + SendMessage(entity,*gUnknown_80F8BE0); + } + else { + tile = GetTile(entity->pos.x, entity->pos.y); + if (!(tile->terrainType & TERRAIN_TYPE_STAIRS)) + { + if(((tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)) == TERRAIN_TYPE_NORMAL) && + (tile->object == NULL)) { + item->flags &= ~(ITEM_FLAG_SET); + sub_8045BF8(gUnknown_202DE58,item); + if (sub_80460F8(&entity->pos,item,1) == 0) { + _message: + SendMessage(entity,*gUnknown_80F8E04); + } + else + { + item->id = ITEM_NOTHING; + item->quantity = 0; + item->flags = 0; + FillInventoryGaps(); + PlaySoundEffect(0x14d); + SetMessageArgument(gAvailablePokemonNames,entity,0); + SendMessage(entity,*gUnknown_80F8E28); + sub_807AB38(entity,gDungeon->unk3A08); + } + } + else + { + goto _message; + } + } + else + { + goto _message; + } + } +} diff --git a/src/code_80718D8.c b/src/code_80718D8.c new file mode 100644 index 000000000..a5028c42d --- /dev/null +++ b/src/code_80718D8.c @@ -0,0 +1,168 @@ +#include "global.h" +#include "constants/dungeon.h" +#include "structs/str_dungeon.h" +#include "dungeon_map_access.h" +#include "dungeon_util.h" +#include "dungeon_random.h" +#include "dungeon.h" + +struct unkStruct_806B7F8 +{ + s16 species; + u8 unk2; + u32 unk4; + u16 level; + u8 fillA[2]; + struct Position pos; + u8 unk10; +}; + +extern u8 gAvailablePokemonNames[]; +extern s16 gUnknown_80F4DA6; +extern s16 gUnknown_80F4DA8; +extern s16 gUnknown_80F4DAA; +extern s16 gUnknown_80F4DAC; +extern u8 *gUnknown_80FED68[]; + +extern void SetMessageArgument(char[], struct Entity*, u32); +extern void sub_806B7F8(struct unkStruct_806B7F8 *, u32); +extern void sub_805239C(struct Entity *r0, const char r1[]); +extern void sub_8042920(struct Entity *r0); +extern s16 sub_803D970(u32); +extern s32 sub_803DA20(s32 param_1); +extern bool8 sub_806AA0C(s32, u32); +extern bool8 sub_8083660(struct Position *param_1); + +void sub_8071B48(void) +{ + struct Tile *tile; + struct Entity *entity2; + struct Entity *entity; + int index; + int index1; + int counter; + struct Entity *entityPtr; + s32 level; + struct Dungeon *dungeon; // feels like a hack + struct unkStruct_806B7F8 local_2c; + + entityPtr = NULL; + dungeon = gDungeon; + if ((dungeon->unk664 != 0) && + ((dungeon->dungeonLocation.id != DUNGEON_METEOR_CAVE || (dungeon->fill37FD == 0)))) { + dungeon->unk662++; + if (dungeon->unk66E == 0) { + if ( dungeon->unk662 < gUnknown_80F4DAA) { + return; + } + } + else { + if ( dungeon->unk662 < gUnknown_80F4DAC) { + return; + } + } + + if (dungeon->unk662 > 900) { + entity2 = dungeon->unk17B34; + if ((EntityExists(entity2)) && (entity2->spawnGenID == dungeon->unk17B40)) { + SetMessageArgument(gAvailablePokemonNames,entity2,0); + entityPtr = entity2; + } + } + + dungeon->unk662 = 0; + dungeon->unk17B34 = NULL; + + counter = 0; + for(index = 0; index < DUNGEON_MAX_WILD_POKEMON; index++) + { + entity = dungeon->wildPokemon[index]; + if ((EntityExists(entity)) && + (tile = GetTile((entity->pos).x, (entity->pos).y), + (tile->terrainType & 0x100) == 0)) { + counter++; + } + } + if (dungeon->unk66E == 0) { + if (gDungeon->unk3A0C == 0xff) { + if (counter >= gUnknown_80F4DA6) { + return; + } + } + else + { + if (counter >= gUnknown_80F4DA8) { + return; + } + } + + } + if (entityPtr != NULL) { + sub_805239C(0,*gUnknown_80FED68); + sub_8042920(entityPtr); + } + if (dungeon->unk66E != 0) { + index1 = 0x17c; + } + else { + index1 = sub_803D970(0); + } + + level = sub_803DA20(index1); + if (level == 0) { + level = 1; + } + if ((sub_806AA0C(index1, 0)) && (sub_8083660(&local_2c.pos))) { + local_2c.species = index1; + local_2c.level = level; + local_2c.unk2 = 0; + if(DungeonRandInt(100) < GetRandomMovementChance(gDungeon->dungeonLocation.id)) + { + local_2c.unk4 = 1; + } + else + { + local_2c.unk4 = 0; + } + local_2c.unk10 = 0; + sub_806B7F8(&local_2c, 0); + } + } +} + +static inline bool8 JoinLocationCannotUseItems(EntityInfo *pokemonInfo) +{ + if (pokemonInfo->joinedAt == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON) + { + return TRUE; + } + if (pokemonInfo->joinedAt == DUNGEON_RESCUE_TEAM_BASE) + { + return TRUE; + } + + return FALSE; +} + + +void sub_8071D4C(Entity *pokemon, Entity *target, s32 exp) +{ + s32 newExp; + s32 expDiff; + EntityInfo *info; + + info = target->info; + if (info->level != 100) { + if (!JoinLocationCannotUseItems(info)) { + newExp = info->exp + exp; + if (9999998 < newExp) { + newExp = 9999999; + } + expDiff = newExp - info->exp; + if (expDiff != 0) { + info->expGainedInTurn += expDiff; + gDungeon->unkD = 1; + } + } + } +} diff --git a/src/code_8072B78.c b/src/code_8072B78.c new file mode 100644 index 000000000..b3ee2bfc1 --- /dev/null +++ b/src/code_8072B78.c @@ -0,0 +1,144 @@ +#include "global.h" +#include "structs/dungeon_entity.h" +#include "structs/map.h" +#include "structs/str_pokemon.h" +#include "dungeon_map_access.h" +#include "dungeon_movement.h" +#include "dungeon_random.h" +#include "code_805D8C8.h" +#include "code_806CD90.h" +#include "moves.h" +#include "pokemon_mid.h" + +extern u8 gAvailablePokemonNames[]; +extern u8 gUnknown_202DFE8[]; +extern Position gAdjacentTileOffsets[]; +extern u8 *gUnknown_80FE2EC[]; + +struct unkStruct_806B7F8 +{ + u16 species; + u8 unk2; + u32 unk4; + u16 level; + u8 fillA[0xC - 0xA]; + struct Position pos; + u8 unk10; +}; + +extern void sub_806B7F8(struct unkStruct_806B7F8 *, u32); +extern void sub_806BFC0(EntityInfo *, u32); +void sub_8069E0C(Entity *pokemon); +void sub_80522F4(Entity *r0, Entity *r1, const char r2[]); +extern void SetMessageArgument_2(u8 *, EntityInfo *, u32); +void sub_8042A44(Entity *r0); +void sub_8083D78(void); +extern bool8 sub_803D930(u32); + +void CopyCyanMonsterNametoBuffer(u8 *buffer, s16 index); + +void sub_8072AC8(s16 *param_1, s16 species, s32 param_3) +{ + const u8 *levelUpMoves; + s32 arrIndex; + s32 counter; + u16 moveIDs [2]; + s32 species_s32; + s32 index; + + species_s32 = species; + + for(index = 0; index < MAX_MON_MOVES; index++) { + param_1[index] = MOVE_NOTHING; + } + + counter = 0; + levelUpMoves = GetLevelUpMoves(species_s32); + + while( 1 ) { + if (*levelUpMoves == 0) { + return; + } + levelUpMoves = DecompressMoveID(levelUpMoves,moveIDs); + if (*levelUpMoves++ > param_3) break; + if (counter == MAX_MON_MOVES) { + arrIndex = DungeonRandInt(MAX_MON_MOVES); + counter = MAX_MON_MOVES; + } + else { + arrIndex = counter; + counter++; + } + param_1[arrIndex] = moveIDs[0]; + } +} + +void sub_8072B24(Entity *entity, Move *moves) +{ + int index; + int count; + + count = 0; + for(index = 0; index < 8; index++) + { + if (moves[index].moveFlags & MOVE_FLAG_EXISTS) { + moves[index].moveFlags &= 0xfd; + count++; + } + } + index = DungeonRandInt(count); + for (; index < 7; index++) { + moves[index] = moves[index + 1]; + } + moves[7].moveFlags = 0; +} + +static inline void fu(EntityInfo *entityInfo, s16 id) +{ + ++id; --id; + entityInfo->apparentID = id; + entityInfo->id = id; +} + +void sub_8072B78(Entity *pokemon, Entity *target, s16 id) +{ + OpenedFile *file; + Tile *tile; + int index; + s32 id_s32; + EntityInfo *entityInfo; + LevelData levelData; + struct unkStruct_806B7F8 local_2c; + + id_s32 = id; + entityInfo = target->info; + SetMessageArgument_2(gAvailablePokemonNames,entityInfo,0); + CopyCyanMonsterNametoBuffer(gAvailablePokemonNames + 0x50,id_s32); + file = sub_80687D0(id_s32); + fu(entityInfo, id_s32); + GetPokemonLevelData(&levelData,id_s32,entityInfo->level); + entityInfo->exp = levelData.expRequired; + target->sprite = file; + sub_806BFC0(entityInfo,0); + sub_8069E0C(target); + sub_806CCB4(target,7); + sub_80522F4(pokemon,target,*gUnknown_80FE2EC); + sub_8042A44(target); + sub_8083D78(); + if (id_s32 == MONSTER_NINJASK) { + for (index = 0; index < 8; index++) { + tile = GetTile(gAdjacentTileOffsets[index].x + target->pos.x,gAdjacentTileOffsets[index].y + target->pos.y); + if (sub_807034C(MONSTER_SHEDINJA,tile) == 0) break; + } + if (sub_803D930(MONSTER_SHEDINJA)) { + local_2c.species = MONSTER_SHEDINJA; + local_2c.level = entityInfo->level; + local_2c.unk2 = 0; + local_2c.pos.x = gAdjacentTileOffsets[index].x + target->pos.x; + local_2c.pos.y = gAdjacentTileOffsets[index].y + target->pos.y; + local_2c.unk4 = 0; + local_2c.unk10 = 0; + sub_806B7F8(&local_2c,1); + } + } +} diff --git a/src/code_8075708.c b/src/code_8075708.c index 7806225f8..e599f96a7 100644 --- a/src/code_8075708.c +++ b/src/code_8075708.c @@ -5,17 +5,51 @@ #include "constants/item.h" #include "constants/status.h" #include "constants/type.h" +#include "code_806CD90.h" +#include "dungeon_capabilities.h" #include "dungeon_items.h" #include "dungeon_map_access.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_util.h" #include "dungeon_visibility.h" +#include "structs/str_dungeon.h" #include "tile_types.h" +#include "position_util.h" extern void sub_8049ED4(void); extern void sub_8073D14(Entity *); extern void sub_807FE9C(Entity *, Position *, u32, u32); +void sub_8075680(void) +{ + u32 direction; + Position *targetPos; + Entity *entity; + EntityInfo *info; + int index; + + for(index = 0; index < DUNGEON_MAX_POKEMON; index++) + { + entity = gDungeon->allPokemon[index]; + if ((EntityExists(entity)) && (info = entity->info, !info->isTeamLeader)) { + targetPos = &(info->targetPos); + + if (targetPos->x == 0 && targetPos->y == 0) + continue; + + if (targetPos->x == entity->pos.x && targetPos->y == entity->pos.y) + continue; + + if (CannotMove(entity, TRUE)) + continue; + + direction = GetDirectionTowardsPosition(&entity->pos, targetPos); + info->action.direction = direction & DIRECTION_MASK; + sub_806CDD4(entity, sub_806CEBC(entity), direction); + } + } +} + void nullsub_97(Entity *entity) {} diff --git a/src/code_8077274_1.c b/src/code_8077274_1.c index b7eb12dae..632880449 100644 --- a/src/code_8077274_1.c +++ b/src/code_8077274_1.c @@ -242,7 +242,7 @@ void TransformStatusTarget(Entity * pokemon, Entity * target) s16 apparentID_s16; s32 index; EntityInfo *entityInfo; - OpenedFile *iVar9; + OpenedFile *sprite; PokemonStruct1 *auStack544[128]; if (!EntityExists(target)) @@ -259,7 +259,7 @@ void TransformStatusTarget(Entity * pokemon, Entity * target) if (iVar5 == 0) sub_80522F4(pokemon, target, *gUnknown_80FBEE4); else { - iVar9 = NULL; + sprite = NULL; for (index = 0; index < DUNGEON_MAX_POKEMON; index++) { species = ExtractSpeciesIndex(&auStack544[DungeonRandInt(iVar5) * 2]); @@ -267,17 +267,17 @@ void TransformStatusTarget(Entity * pokemon, Entity * target) apparentID = apparentID_s16; if (apparentID != entityInfo->apparentID && sub_806AA0C(apparentID, 1)) { - iVar9 = sub_80687D0(apparentID); - if (iVar9 != NULL) + sprite = sub_80687D0(apparentID); + if (sprite != NULL) break; } } - if (index == DUNGEON_MAX_POKEMON || iVar9 == NULL) + if (index == DUNGEON_MAX_POKEMON || sprite == NULL) sub_80522F4(pokemon, target, *gUnknown_80FBEE4); else { entityInfo->apparentID = apparentID; - target->sprite = iVar9; + target->sprite = sprite; entityInfo->transformStatus = STATUS_TRANSFORMED; entityInfo->transformStatusTurns = CalculateStatusTurns(target, gUnknown_80F4EFC, TRUE) + 1; sub_806CF98(target); @@ -1570,27 +1570,26 @@ void SendMuzzledEndMessage(Entity * pokemon, Entity * target) EntityUpdateStatusSprites(target); } -// TODO: this involves a union for sleep/sleepTurns that I don't want to deal with right now /* - bool32 sub_807A96C(Entity * pokemon, Entity * target) + * https://decomp.me/scratch/kEFOw (97.58 % matching, Seth) + + bool8 sub_807A96C(Entity * pokemon, Entity * target) { EntityInfo *entityInfo; - EntityInfo *entityInfo_1; - register bool32 bVar3 asm("r2"); + bool8 flag; entityInfo = target->info; - entityInfo_1 = entityInfo; - bVar3 = FALSE; + flag = FALSE; if (entityInfo->immobilizeStatus == 6) { SendImmobilizeEndMessage(pokemon, target); - bVar3 = TRUE; + flag = TRUE; } - TODO: this is where the union is needed.. - if ((entityInfo_1 + 0xa8) == 0x7f01) { + + if (entityInfo->sleep == 1 && entityInfo->sleepTurns == 0x7f) { SendSleepEndMessage(pokemon,target,0,1); - bVar3 = TRUE; + flag = TRUE; } - return bVar3; + return flag; } */ NAKED diff --git a/src/code_80958E8.c b/src/code_80958E8.c index bc1b39fe1..b07f99369 100644 --- a/src/code_80958E8.c +++ b/src/code_80958E8.c @@ -55,10 +55,10 @@ void InitializeMailJobsNews(void) MemoryClear8(gUnknown_203B490->unk1B8, sizeof(gUnknown_203B490->unk1B8)); for(index = 0; index < 16; index++) { - gUnknown_203B490->unk230[index].dungeon.id = 99; - gUnknown_203B490->unk230[index].dungeon.floor = 1; - gUnknown_203B490->unk230[index].seed = 0; - gUnknown_203B490->unk230[index].unk8 = 0; + gUnknown_203B490->unk230[index].sub.dungeon.id = 99; + gUnknown_203B490->unk230[index].sub.dungeon.floor = 1; + gUnknown_203B490->unk230[index].sub.seed = 0; + gUnknown_203B490->unk230[index].checksum = 0; } } diff --git a/src/code_80958E8_1.c b/src/code_80958E8_1.c index f970a1f56..623f9075a 100644 --- a/src/code_80958E8_1.c +++ b/src/code_80958E8_1.c @@ -22,7 +22,7 @@ extern bool8 GenerateMailJobInfo(WonderMail *); bool8 sub_803C1D0(DungeonLocation *, u8); u8 sub_8095F28(u8); void sub_803C37C(DungeonLocation *, u8, u8 *); -bool8 sub_8096E80(u32); +bool8 sub_8096E80(u8); u8 sub_8095E78(void); void sub_8096078(void); @@ -227,7 +227,7 @@ void sub_8096488(void) bool8 sub_80964B4(void) { - if ((gUnknown_203B490->PKMNNewsReceived[0x35] == 0) && (sub_8096E80(0x35) == 0)) { + if ((!gUnknown_203B490->PKMNNewsReceived[0x35]) && (sub_8096E80(0x35) == 0)) { return FALSE; } else { @@ -237,7 +237,7 @@ bool8 sub_80964B4(void) bool8 sub_80964E4(void) { - if ((gUnknown_203B490->PKMNNewsReceived[0x36] == 0) && (sub_8096E80(0x36) == 0)) { + if ((!gUnknown_203B490->PKMNNewsReceived[0x36]) && (sub_8096E80(0x36) == 0)) { return FALSE; } else { @@ -706,7 +706,7 @@ void sub_8096BD0(void) } } sub_8096C80(); - sub_8096D24(); + SortJobSlots(); } bool8 sub_8096C08(u8 *jobIndex) diff --git a/src/code_80972F4.c b/src/code_80972F4.c index 1a57ea86c..6090e4798 100644 --- a/src/code_80972F4.c +++ b/src/code_80972F4.c @@ -16,30 +16,148 @@ extern const u8 gUnknown_8109CC0[]; extern const u8 gDummyScenarioText[]; extern void sub_800199C(u8, u8, u16, s32); - -void SaveWonderMail(struct unkStruct_8094924 *a, WonderMail *b); -void RestoreWonderMail(struct unkStruct_8094924 *a, WonderMail *b); -extern s32 sub_8096EB0(WonderMail *); extern void SaveDungeonLocation(struct unkStruct_8094924*, DungeonLocation*); extern void RestoreDungeonLocation(struct unkStruct_8094924*, DungeonLocation*); extern u32 sub_8001784(u32, u32, u16); extern void GeneratePelipperJobs(void); extern void sub_80018D8(u8, u8, u32); +void SaveWonderMail(struct unkStruct_8094924 *a, WonderMail *b); +void RestoreWonderMail(struct unkStruct_8094924 *a, WonderMail *b); +s32 CalculateMailChecksum(WonderMail *mail); + +void SortJobSlots(void) +{ + s32 r1; + s32 r6; + WonderMail job; + + for(r1 = 0; r1 < MAX_ACCEPTED_JOBS - 1; r1++) + { + for(r6 = r1 + 1; r6 < MAX_ACCEPTED_JOBS; r6++) + { + if(gUnknown_203B490->jobSlots[r6].mailType != 0) + { + if((gUnknown_203B490->jobSlots[r1].unk4.dungeon.id > gUnknown_203B490->jobSlots[r6].unk4.dungeon.id) || + ((gUnknown_203B490->jobSlots[r1].unk4.dungeon.id == gUnknown_203B490->jobSlots[r6].unk4.dungeon.id) && + (gUnknown_203B490->jobSlots[r1].unk4.dungeon.floor > gUnknown_203B490->jobSlots[r6].unk4.dungeon.floor))) + { + job = gUnknown_203B490->jobSlots[r1]; + gUnknown_203B490->jobSlots[r1] = gUnknown_203B490->jobSlots[r6]; + gUnknown_203B490->jobSlots[r6] = job; + } + } + } + } +} + +u8 *sub_8096DD8(void) +{ + return gUnknown_203B490->unk190; +} + +u8 *sub_8096DE8(void) +{ + return gUnknown_203B490->unk1B8; +} + +void ReceivePKMNNews(u8 index) +{ + gUnknown_203B490->PKMNNewsReceived[index] = TRUE; +} + +bool8 CheckPKMNNewsSlot(u8 index) +{ + return gUnknown_203B490->PKMNNewsReceived[index]; +} + +u8 sub_8096E2C(void) +{ + s32 index; + s32 floor = 0; + for(index = 0; index < NUM_MAILBOX_SLOTS; index++) + { + if(gUnknown_203B490->mailboxSlots[index].mailType == 1) + { + if(floor <= gUnknown_203B490->mailboxSlots[index].unk4.dungeon.floor) + if( gUnknown_203B490->mailboxSlots[index].unk4.dungeon.floor < 0x32) + floor = gUnknown_203B490->mailboxSlots[index].unk4.dungeon.floor + 1; + } + } + + for(index = floor; index < 0x32; index++) + { + if(!gUnknown_203B490->PKMNNewsReceived[index]) return index; + } + return 0x38; +} + +bool8 sub_8096E80(u8 floor) +{ + s32 index; + for(index = 0; index < NUM_MAILBOX_SLOTS; index++) + { + if(gUnknown_203B490->mailboxSlots[index].mailType == 1) + { + if(floor == gUnknown_203B490->mailboxSlots[index].unk4.dungeon.floor) + return TRUE; + } + } + return FALSE; +} + +s32 CalculateMailChecksum(WonderMail *mail) +{ + s32 sum; + + sum = (mail->unk2 + mail->missionType); + + sum += mail->unk4.dungeon.id; + sum += mail->unk4.dungeon.floor; + + sum += mail->unk4.seed << 0x8; + + sum += mail->clientSpecies << 0xC; + + sum += mail->targetSpecies << 0x10; + + sum += mail->targetItem << 0x18; + + sum += mail->rewardType; + + sum += mail->itemReward; + + sum += mail->friendAreaReward; + + return sum; +} + +void sub_8096EEC(WonderMail *mail) +{ + s32 index; + + for(index = 15; index > 0; index--) + { + gUnknown_203B490->unk230[index] = gUnknown_203B490->unk230[index - 1]; + } + gUnknown_203B490->unk230[0].sub = mail->unk4; + gUnknown_203B490->unk230[0].checksum = CalculateMailChecksum(mail); +} + bool8 sub_8096F50(WonderMail *mail) { s32 index; - s32 temp2; + s32 checksum; subStruct_203B490 *temp; - temp2 = sub_8096EB0(mail); + checksum = CalculateMailChecksum(mail); for (index = 0; index < 0x10; index++) { temp = &gUnknown_203B490->unk230[index]; - if (temp->dungeon.id == mail->unk4.dungeon.id) - if (temp->dungeon.floor == mail->unk4.dungeon.floor) - if (temp->seed == mail->unk4.seed) - if (temp->unk8 == temp2) + if (temp->sub.dungeon.id == mail->unk4.dungeon.id) + if (temp->sub.dungeon.floor == mail->unk4.dungeon.floor) + if (temp->sub.seed == mail->unk4.seed) + if (temp->checksum == checksum) return TRUE; } @@ -83,9 +201,9 @@ u32 RestoreMailInfo(u8 *r0, u32 size) RestoreIntegerBits(&backup, gUnknown_203B490->unk1B8, 0x3C0); for(index = 0; index < 0x10; index++) { - RestoreIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk8, 0x20); - RestoreIntegerBits(&backup, &gUnknown_203B490->unk230[index].seed, 0x18); - RestoreDungeonLocation(&backup, &gUnknown_203B490->unk230[index].dungeon); + RestoreIntegerBits(&backup, &gUnknown_203B490->unk230[index].checksum, 0x20); + RestoreIntegerBits(&backup, &gUnknown_203B490->unk230[index].sub.seed, 0x18); + RestoreDungeonLocation(&backup, &gUnknown_203B490->unk230[index].sub.dungeon); } nullsub_102(&backup); return backup.unk8; @@ -112,7 +230,7 @@ u32 SaveMailInfo(u8 *r0, u32 size) } for(index = 0; index < 0x38; index++) { - if(gUnknown_203B490->PKMNNewsReceived[index] != 0) + if(gUnknown_203B490->PKMNNewsReceived[index]) temp = -1; else temp = 0; @@ -127,9 +245,9 @@ u32 SaveMailInfo(u8 *r0, u32 size) SaveIntegerBits(&backup, gUnknown_203B490->unk1B8, 0x3C0); for(index = 0; index < 0x10; index++) { - SaveIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk8, 0x20); - SaveIntegerBits(&backup, &gUnknown_203B490->unk230[index].seed, 0x18); - SaveDungeonLocation(&backup, &gUnknown_203B490->unk230[index].dungeon); + SaveIntegerBits(&backup, &gUnknown_203B490->unk230[index].checksum, 0x20); + SaveIntegerBits(&backup, &gUnknown_203B490->unk230[index].sub.seed, 0x18); + SaveDungeonLocation(&backup, &gUnknown_203B490->unk230[index].sub.dungeon); } nullsub_102(&backup); return backup.unk8; diff --git a/src/dungeon_action.c b/src/dungeon_action.c index 8f9c42c92..65a6a84b3 100644 --- a/src/dungeon_action.c +++ b/src/dungeon_action.c @@ -3,6 +3,7 @@ #include "constants/ability.h" #include "constants/dungeon_action.h" #include "dungeon_ai.h" +#include "dungeon_ai_leader.h" #include "structs/dungeon_entity.h" #include "structs/str_dungeon.h" #include "dungeon_leader.h" @@ -37,7 +38,6 @@ extern void sub_8071B48(void); extern void TriggerWeatherAbilities(void); extern void sub_8074094(Entity *); extern void sub_8071DA4(Entity *); -extern u8 sub_8072CF4(Entity *); extern void TickStatusHeal(Entity *); void sub_8044820(void) @@ -227,8 +227,8 @@ void sub_8044C10(u8 param_1) if(param_1) { - entityInfo->action.actionUseIndex = 0; - entityInfo->action.unkC = 0; + entityInfo->action.unk4[0].actionUseIndex = 0; + entityInfo->action.unk4[1].actionUseIndex = 0; entityInfo->action.itemTargetPosition.x = -1; entityInfo->action.itemTargetPosition.y = -1; } @@ -239,8 +239,9 @@ void sub_8044C50(u16 action) EntityInfo * entityInfo = GetLeaderInfo(); entityInfo->action.action = action; - entityInfo->action.actionUseIndex = 0; - entityInfo->action.unkC = 0; + entityInfo->action.unk4[0].actionUseIndex = 0; + entityInfo->action.unk4[1].actionUseIndex = 0; + entityInfo->action.itemTargetPosition.x = -1; entityInfo->action.itemTargetPosition.y = -1; } @@ -248,15 +249,15 @@ void sub_8044C50(u16 action) void ClearMonsterActionFields(ActionContainer *actionPointer) { actionPointer->action = ACTION_NOTHING; - actionPointer->actionUseIndex = 0; - actionPointer->unkC = 0; + actionPointer->unk4[0].actionUseIndex = 0; + actionPointer->unk4[1].actionUseIndex = 0; } void SetMonsterActionFields(ActionContainer *actionPointer, u16 action) { actionPointer->action = action; - actionPointer->actionUseIndex = 0; - actionPointer->unkC = 0; + actionPointer->unk4[0].actionUseIndex = 0; + actionPointer->unk4[1].actionUseIndex = 0; } void SetActionPassTurnOrWalk(ActionContainer *actionPointer, s16 species) @@ -269,6 +270,6 @@ void SetActionPassTurnOrWalk(ActionContainer *actionPointer, s16 species) { actionPointer->action = ACTION_PASS_TURN; } - actionPointer->actionUseIndex = 0; - actionPointer->unkC = 0; + actionPointer->unk4[0].actionUseIndex = 0; + actionPointer->unk4[1].actionUseIndex = 0; } diff --git a/src/dungeon_ai_attack.c b/src/dungeon_ai_attack.c index 95f840599..cbf69ce19 100644 --- a/src/dungeon_ai_attack.c +++ b/src/dungeon_ai_attack.c @@ -92,7 +92,7 @@ void DecideAttack(Entity *pokemon) } } } - pokemonInfo->action.actionUseIndex = chosenMoveIndex; + pokemonInfo->action.unk4[0].actionUseIndex = chosenMoveIndex; TargetTileInFront(pokemon); return; } @@ -316,7 +316,7 @@ void DecideAttack(Entity *pokemon) } } pokemonInfo->action.direction = aiPossibleMove[i].direction & DIRECTION_MASK; - pokemonInfo->action.actionUseIndex = chosenMoveIndex; + pokemonInfo->action.unk4[0].actionUseIndex = chosenMoveIndex; TargetTileInFront(pokemon); } else @@ -941,7 +941,7 @@ void sub_807CABC(Entity *target) if (counter >= sub_8070828(target, TRUE)) break; entityInfo = target->info; - sub_8055A00(target, entityInfo->action.actionUseIndex, 1, 0, 0); + sub_8055A00(target, entityInfo->action.unk4[0].actionUseIndex, 1, 0, 0); if (!EntityExists(target)) break; if (sub_8044B28()) @@ -953,7 +953,7 @@ void sub_807CABC(Entity *target) sub_8057588(target, 1); if (EntityExists(target)) - sub_806A9B4(target, target->info->action.actionUseIndex); + sub_806A9B4(target, target->info->action.unk4[0].actionUseIndex); sub_806A1B0(target); } @@ -1316,4 +1316,4 @@ void sub_807CB3C(Entity *pokemon) "\tpop {r0}\n" "\tbx r0"); } -#endif // NONMATCHING \ No newline at end of file +#endif // NONMATCHING diff --git a/src/dungeon_ai_items.c b/src/dungeon_ai_items.c index 9f985f5bf..225234b00 100644 --- a/src/dungeon_ai_items.c +++ b/src/dungeon_ai_items.c @@ -40,7 +40,7 @@ extern u32 gPotentialItemTargetDirections[NUM_DIRECTIONS]; extern bool8 gTargetAhead[NUM_DIRECTIONS]; extern TeamInventory *gTeamInventoryRef; -void sub_807360C(Entity *pokemon) +void sub_807360C(void) { s32 index; Entity *entity; @@ -94,9 +94,9 @@ void DecideUseItem(Entity *pokemon) if (DungeonRandOutcome(gPotentialItemTargetWeights[targetIndex])) { SetMonsterActionFields(&pokemonInfo->action, ACTION_THROW_ITEM_AI); - pokemonInfo->action.actionUseIndex = selectedToolboxIndex; - pokemonInfo->action.lastItemThrowPosition.x = pokemon->pos.x; - pokemonInfo->action.lastItemThrowPosition.y = pokemon->pos.y; + pokemonInfo->action.unk4[0].actionUseIndex = selectedToolboxIndex; + pokemonInfo->action.unk4[0].lastItemThrowPosition.x = pokemon->pos.x; + pokemonInfo->action.unk4[0].lastItemThrowPosition.y = pokemon->pos.y; pokemonInfo->action.direction = gPotentialItemTargetDirections[targetIndex] & DIRECTION_MASK; break; } @@ -118,9 +118,9 @@ void DecideUseItem(Entity *pokemon) { u32 chosenTargetIndex = DungeonRandInt(gNumPotentialTargets); SetMonsterActionFields(&pokemonInfo->action, ACTION_THROW_ITEM_AI); - pokemonInfo->action.actionUseIndex = selectedToolboxIndex; - pokemonInfo->action.lastItemThrowPosition.x = pokemon->pos.x; - pokemonInfo->action.lastItemThrowPosition.y = pokemon->pos.y; + pokemonInfo->action.unk4[0].actionUseIndex = selectedToolboxIndex; + pokemonInfo->action.unk4[0].lastItemThrowPosition.x = pokemon->pos.x; + pokemonInfo->action.unk4[0].lastItemThrowPosition.y = pokemon->pos.y; pokemonInfo->action.direction = GetDirectionTowardsPosition(&pokemon->pos, &potentialTargetPositions[chosenTargetIndex]) & DIRECTION_MASK; pokemonInfo->action.itemTargetPosition = potentialTargetPositions[chosenTargetIndex]; } @@ -131,9 +131,9 @@ void DecideUseItem(Entity *pokemon) if (itemTypeCompare < CATEGORY_HELD_ITEMS - 2) { SetMonsterActionFields(&pokemonInfo->action, ACTION_EAT_AI); - pokemonInfo->action.actionUseIndex = selectedToolboxIndex; - pokemonInfo->action.lastItemThrowPosition.x = pokemon->pos.x; - pokemonInfo->action.lastItemThrowPosition.y = pokemon->pos.y; + pokemonInfo->action.unk4[0].actionUseIndex = selectedToolboxIndex; + pokemonInfo->action.unk4[0].lastItemThrowPosition.x = pokemon->pos.x; + pokemonInfo->action.unk4[0].lastItemThrowPosition.y = pokemon->pos.y; } else { @@ -203,9 +203,9 @@ void DecideUseItem(Entity *pokemon) { SetMonsterActionFields(&pokemonInfo->action, ACTION_EAT_AI); } - pokemonInfo->action.actionUseIndex = selectedToolboxIndex; - pokemonInfo->action.lastItemThrowPosition.x = pokemon->pos.x; - pokemonInfo->action.lastItemThrowPosition.y = pokemon->pos.y; + pokemonInfo->action.unk4[0].actionUseIndex = selectedToolboxIndex; + pokemonInfo->action.unk4[0].lastItemThrowPosition.x = pokemon->pos.x; + pokemonInfo->action.unk4[0].lastItemThrowPosition.y = pokemon->pos.y; return; } } @@ -237,9 +237,9 @@ void DecideUseItem(Entity *pokemon) { u32 chosenTargetIndex = DungeonRandInt(gNumPotentialTargets); SetMonsterActionFields(&pokemonInfo->action, ACTION_THROW_ITEM_AI); - pokemonInfo->action.actionUseIndex = selectedToolboxIndex; - pokemonInfo->action.lastItemThrowPosition.x = pokemon->pos.x; - pokemonInfo->action.lastItemThrowPosition.y = pokemon->pos.y; + pokemonInfo->action.unk4[0].actionUseIndex = selectedToolboxIndex; + pokemonInfo->action.unk4[0].lastItemThrowPosition.x = pokemon->pos.x; + pokemonInfo->action.unk4[0].lastItemThrowPosition.y = pokemon->pos.y; pokemonInfo->action.direction = GetDirectionTowardsPosition(&pokemon->pos, &potentialTargetPositions[chosenTargetIndex]) & DIRECTION_MASK; pokemonInfo->action.itemTargetPosition = potentialTargetPositions[chosenTargetIndex]; return; @@ -254,9 +254,9 @@ void DecideUseItem(Entity *pokemon) if (DungeonRandOutcome(potentialTargetWeights[targetIndex])) { SetMonsterActionFields(&pokemonInfo->action, ACTION_THROW_ITEM_AI); - pokemonInfo->action.actionUseIndex = selectedToolboxIndex; - pokemonInfo->action.lastItemThrowPosition.x = pokemon->pos.x; - pokemonInfo->action.lastItemThrowPosition.y = pokemon->pos.y; + pokemonInfo->action.unk4[0].actionUseIndex = selectedToolboxIndex; + pokemonInfo->action.unk4[0].lastItemThrowPosition.x = pokemon->pos.x; + pokemonInfo->action.unk4[0].lastItemThrowPosition.y = pokemon->pos.y; pokemonInfo->action.direction = gPotentialItemTargetDirections[targetIndex] & DIRECTION_MASK; return; } diff --git a/src/dungeon_ai_leader.c b/src/dungeon_ai_leader.c index 0c38739f5..45eeb9936 100644 --- a/src/dungeon_ai_leader.c +++ b/src/dungeon_ai_leader.c @@ -1,13 +1,89 @@ #include "global.h" #include "dungeon_ai_leader.h" +#include "constants/dungeon.h" +#include "constants/item.h" +#include "constants/iq_skill.h" +#include "constants/move_id.h" #include "constants/status.h" #include "constants/targeting.h" +#include "constants/dungeon_action.h" +#include "code_80521D0.h" #include "dungeon_ai_targeting.h" +#include "dungeon_items.h" #include "dungeon_leader.h" #include "dungeon_visibility.h" +#include "dungeon_util.h" +#include "dungeon_capabilities.h" +#include "dungeon_pokemon_attributes.h" +#include "dungeon_movement.h" +#include "charge_move.h" #include "pokemon.h" #include "pokemon_3.h" +#include "code_8077274_1.h" + +extern u8 gUnknown_202F221; +extern u8 gUnknown_202F222; +extern u8 gUnknown_202F32C; +extern u8 gUnknown_202F32D; +extern u8 gUnknown_203B434; +extern u8 gAvailablePokemonNames[]; + +extern u8 *gUnknown_80FA5B4[]; +extern u8 *gUnknown_80FE478[]; +extern u8 *gUnknown_80FD2CC[]; +extern u8 gUnknown_80F58F4[NUM_DUNGEON_ACTIONS][2]; +extern u8 *gUnknown_80FE6D4[]; + +void sub_8075BA4(Entity *param_1, u8 param_2); +void sub_804178C(u8 param_1); +void nullsub_95(Entity *); +bool8 IsNotAttacking(Entity *, bool8); +extern void sub_80671A0(Entity *); +extern void sub_8067110(Entity *); +void sub_807CABC(Entity *target); +void sub_8041888(u8 param_1); +void sub_8085140(void); +void sub_807360C(void); +void sub_805EFB4(Entity *, u8); +void sub_8074FB0(Entity *, u8, Position *); +extern void SetMessageArgument(u8 *buffer, Entity *r1, u32); + +void sub_8066D04(Entity *); +void sub_8066744(Entity *); +void sub_8066E14(Entity * ); +void sub_807348C(void); +void sub_80732F0(void); +void sub_807FD84(Entity *); +void sub_8066BD4(Entity*); +void sub_8067510(Entity *); +void sub_8067884(Entity *); +void sub_804267C(void); +void sub_807CB3C(Entity *); +void sub_8067904(Entity *, u32); +void sub_80668D0(Entity *); +void sub_8066AC0(Entity *); +void sub_8066CF0(Entity *); +void sub_8066FA4(Entity *); +void sub_806675C(Entity *,bool8); +void sub_806684C(Entity *,bool8); +void sub_807FE9C(Entity *,Position *,u32,u32); +extern u8 sub_8044B28(void); +extern u8 UseAttack(Entity *); +void sub_8052740(u32); +void sub_806A1E8(Entity *pokemon); +extern void sub_803E46C(u32); +extern void sub_80694C0(Entity *, s32, s32, u32); +bool8 sub_804AE08(Position *pos); +void sub_8073D08(Entity *pokemon); +void sub_8073CFC(Entity *pokemon); +void sub_8073CF0(Entity *pokemon); +bool8 sub_8044B84(void); +void sub_8046D20(void); +extern void sub_8074094(Entity *); +extern void sub_8071DA4(Entity *); +extern void sub_807D148(Entity *pokemon, Entity *r1, u32 r2, Position *r3); +u32 sub_8075818(Entity *entity); bool8 TargetLeader(Entity *pokemon) { @@ -33,3 +109,268 @@ Entity* GetLeaderIfVisible(Entity *pokemon) } return NULL; } + +bool8 sub_8072CF4(Entity *entity) +{ + bool8 bVar4; + bool8 bVar5; + Move *move; + s32 index; + EntityInfo *info; + bool8 bVar14; + Position PStack_24; + Position pos1; + + sub_804178C(1); + gUnknown_203B434 = 1; + info = entity->info; + info->useHeldItem = FALSE; + info->fillF3 = 0; + gDungeon->unkB8 = entity; + if (gUnknown_80F58F4[(info->action).action][0] != 0) { + if (info->isTeamLeader) { + sub_805EFB4(entity,gUnknown_80F58F4[(info->action).action][1]); + } + else { + sub_8075BA4(entity,gUnknown_80F58F4[(info->action).action][1]); + } + } + if ((CannotAttack(entity, FALSE)) && (IsCharging(entity, TRUE))) { + sub_8079764(entity); + } + + for(index = 0; index < MAX_MON_MOVES; index++) + { + move = &info->moves[index]; + if ((move->moveFlags & MOVE_FLAG_EXISTS)) { + move->moveFlags2 &= ~(MOVE_FLAG2_UNK4); + } + } + if (!IsNotAttacking(entity, FALSE)) { + if (UseAttack(entity)) { + if (sub_8044B28()) { + return FALSE; + } + if (!EntityExists(entity)) { + return FALSE; + } + if (gUnknown_202F32D != 0) { + return TRUE; + } + } + if (!info->isTeamLeader) { + sub_8052740(10); + } + sub_806A1E8(entity); + sub_803E46C(10); + } + if (((ACTION_PASS_TURN < info->action.action) && (info->action.action != 4)) && (info->action.action != ACTION_WALK)) { + info->attacking = TRUE; + } + bVar14 = FALSE; + info->unk14A = 0; + gUnknown_202F221 = 0; + gUnknown_202F222 = 0; + switch(info->action.action) { + case ACTION_WALK: + if(info->immobilizeStatus == STATUS_SHADOW_HOLD) + { + goto _282; + } + else if(info->immobilizeStatus == STATUS_CONSTRICTION) + { + goto _282; + } + else if(info->immobilizeStatus == STATUS_INGRAIN) + { + goto _282; + } + else if(info->immobilizeStatus == STATUS_WRAP) + { + goto _282; + } + else if(info->immobilizeStatus == STATUS_WRAPPED) + { + _282: + info->action.action = ACTION_NOTHING; + info->waiting = TRUE; + } + else { + bVar5 = FALSE; + pos1.x = (entity->pos).x + gAdjacentTileOffsets[(info->action).direction].x; + pos1.y = (entity->pos).y + gAdjacentTileOffsets[(info->action).direction].y; + if ((!(info->flags & MOVEMENT_FLAG_SWAPPING_PLACES_PETRIFIED_ALLY)) && + (!CanMoveInDirection(entity,(info->action).direction))) { + bVar5 = TRUE; + } + if (bVar5) { + info->action.action = ACTION_NOTHING; + info->waiting = TRUE; + break; + } + else + { + PStack_24.x = entity->pos.x; + PStack_24.y = entity->pos.y; + sub_80694C0(entity,pos1.x,pos1.y,0); + sub_8074FB0(entity,(info->action).direction,&PStack_24); + if (((IQSkillIsEnabled(entity, IQ_SUPER_MOBILE)) && (info->transformStatus != STATUS_MOBILE)) && + (!HasHeldItem(entity,ITEM_MOBILE_SCARF))) { + sub_804AE08(&entity->pos); + } + bVar14 = TRUE; + break; + } + } + break; + case ACTION_USE_MOVE_AI: + sub_807CABC(entity); + break; + case ACTION_STAIRS: + if ((gDungeon->dungeonLocation.id == DUNGEON_METEOR_CAVE) && (!gDungeon->deoxysDefeat)) { + SendMessage(entity,*gUnknown_80FA5B4); // It's impossible to go down the stairs now! + } + else + { + sub_804267C(); + gDungeon->unk2 = 1; + gUnknown_202F32C = (info->action).direction; + } + break; + case ACTION_EAT_BERRY_SEED_DRINK: + case 0xe: + case ACTION_USE_TM: + sub_8067110(entity); + break; + case ACTION_USE_ORB: + sub_807CB3C(entity); + break; + case ACTION_PICK_UP_PLAYER: + sub_8066744(entity); + break; + case ACTION_GIVE_ITEM: + sub_80668D0(entity); + break; + case ACTION_TAKE_ITEM: + sub_8066AC0(entity); + break; + case 0x3e: + sub_8066BD4(entity); // ITEM_SWITCH_TOOLBOX (When you switch item in Toolbox) + break; + case ACTION_USE_ITEM: + sub_8066CF0(entity); + break; + case ACTION_SET_ITEM: + sub_806675C(entity, TRUE); + break; + case ACTION_UNSET_ITEM: + sub_806684C(entity, TRUE); + break; + case 0x3b: + gDungeon->unkBC = gDungeon->teamPokemon[(info->action).unk4[0].actionUseIndex]; + break; + case ACTION_PLACE_ITEM: + sub_8066D04(entity); + break; + case 10: // Switch with Item on Ground + sub_8066E14(entity); + break; + case 0x3a: // Switch with Item on Ground (also??) + sub_8066FA4(entity); + break; + case ACTION_THROW_ITEM_PLAYER: + case ACTION_THROW_STRAIGHT_PLAYER: + case ACTION_THROW_ARC_PLAYER: + if (ToolboxEnabled(info)) { + nullsub_95(entity); + sub_80671A0(entity); + break; + } + SetMessageArgument(gAvailablePokemonNames,entity,0); + SendMessage(entity,*gUnknown_80FE6D4); + break; + case ACTION_TALK_FIELD: + sub_8067510(entity); + break; + case ACTION_USE_MOVE_PLAYER: + sub_8067884(entity); + break; + case ACTION_STRUGGLE: + sub_8067904(entity, MOVE_STRUGGLE); + break; + case ACTION_REGULAR_ATTACK: + sub_8067904(entity, MOVE_REGULAR_ATTACK); + break; + case 0x25: + sub_807FE9C(entity,&entity->pos,0,0); + break; + case ACTION_PICK_UP_AI: + sub_8073D08(entity); + break; + case ACTION_EAT_AI: + sub_8073CF0(entity); + break; + case ACTION_THROW_ITEM_AI: + sub_8073CFC(entity); + break; + case ACTION_SECOND_THOUGHTS: + SetMessageArgument(gAvailablePokemonNames,entity,0); + SendMessage(entity,*gUnknown_80FE478); + break; + default: + info->action.action = ACTION_PASS_TURN; + break; + } + sub_807FD84(entity); + if (EntityExists(entity)) { + if (entity->info->unk14A == 0) { + entity->info->unk14A = 0; + sub_8079764(entity); + } + sub_8041888(0); + if (EntityExists(entity)) { + sub_8085140(); + if (info->unk14B != 0) { + bVar4 = FALSE; + info->unk14B = 0; + + for(index = 0; index < MAX_MON_MOVES; index++) + { + move = &info->moves[index]; + if ((info->moves[index].moveFlags & MOVE_FLAG_EXISTS) && (move->moveFlags & MOVE_FLAG_LAST_USED)) { + move->PP = 0; + bVar4 = TRUE; + } + } + if (bVar4) { + SendMessage(entity,*gUnknown_80FD2CC); + } + } + sub_807360C(); + if (!sub_8044B84()) { + sub_807348C(); + sub_80732F0(); + if (!EntityExists(entity)) { + return FALSE; + } + } + if (bVar14) { + sub_8075818(entity); + } + if (EntityExists(entity)) { + if (!sub_8044B84()) { + sub_8046D20(); + } + sub_8041888(0); + if (((EntityExists(entity)) && (!info->aiNextToTarget)) && (!bVar14)) { + if (sub_80706A4(entity,&entity->pos) != '\0') { + sub_807D148(entity,entity,0,0); + } + sub_8074094(entity); + sub_8071DA4(entity); + } + } + } + } + return FALSE; +} diff --git a/src/dungeon_engine.c b/src/dungeon_engine.c index 782ab4d24..ed5424650 100644 --- a/src/dungeon_engine.c +++ b/src/dungeon_engine.c @@ -4,6 +4,7 @@ #include "constants/dungeon.h" #include "structs/str_dungeon.h" #include "dungeon_ai.h" +#include "dungeon_ai_leader.h" #include "dungeon_leader.h" #include "dungeon_movement.h" #include "dungeon_util.h" @@ -17,7 +18,6 @@ extern void sub_8044574(void); extern void sub_8044820(void); extern void sub_8044AB4(void); extern u8 UseAttack(u32); -extern u8 sub_8072CF4(Entity *); extern void TickStatusHeal(Entity *); extern void sub_8086AC0(void); extern void sub_8043ED0(u32); diff --git a/src/dungeon_util.c b/src/dungeon_util.c index dd6fceb20..43524065a 100644 --- a/src/dungeon_util.c +++ b/src/dungeon_util.c @@ -188,7 +188,7 @@ void sub_804535C(Entity *entity, Position32 *pos) } } -void sub_8045394(Entity *entity, s32 x, s32 y) +void SetEntityPixelPos(Entity *entity, s32 x, s32 y) { entity->pixelPos.x = x; entity->pixelPos.y = y; diff --git a/src/dungeon_util_1.c b/src/dungeon_util_1.c index a63ca88fc..37723b2f1 100644 --- a/src/dungeon_util_1.c +++ b/src/dungeon_util_1.c @@ -19,8 +19,8 @@ extern void sub_803F878(s32, s32); extern void sub_803E46C(u32); extern void sub_803E708(u32, u32); -extern void sub_8068FE0(Entity *, u32, u8 *); -extern void sub_80457DC(u8 *); +extern void sub_8068FE0(Entity *, u32, Entity*); +extern void sub_80457DC(Entity *); extern void sub_80861D4(Entity *, u32, s32 direction); extern void sub_80694C0(Entity *, s32, s32, u32); @@ -199,14 +199,14 @@ void sub_8085764(void) { Entity *entity; s32 index; - u8 auStack128 [116]; + Entity stackEntity; - sub_80457DC(auStack128); + sub_80457DC(&stackEntity); for(index = 0; index < DUNGEON_MAX_WILD_POKEMON; index++) { entity = gDungeon->wildPokemon[index]; if ((EntityExists(entity)) && (entity->info->clientType == CLIENT_TYPE_PARTNER)) { - sub_8068FE0(entity,0x207,auStack128); + sub_8068FE0(entity,0x207,&stackEntity); } } } diff --git a/src/mailbox.c b/src/mailbox.c index 37d1029f6..d625912de 100644 --- a/src/mailbox.c +++ b/src/mailbox.c @@ -84,7 +84,6 @@ extern void sub_802E088(u32); extern void CreateMailboxMenu(void); extern void CreateMailActionMenu(void); extern void CreateMailAcceptedStatusBox(u32); -extern void ReceivePKMNNews(u8); extern void sub_8096078(void); u32 sub_802DFB0(void) @@ -420,7 +419,7 @@ void HandleMailActionMenu(void) PlaySound(0x133); AcceptJob(GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex)); sub_8096C80(); - sub_8096D24(); + SortJobSlots(); ResetMailboxSlot(gUnknown_203B304->mailboxIndex); sub_8096078(); if(HasNoMailinMailbox()) diff --git a/src/menu_input.c b/src/menu_input.c index 89713e9a6..f06d16ceb 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -1009,10 +1009,8 @@ s32 sub_8013800(MenuInputStruct *param_1, s32 param_2) iVar2 = param_1->unk6; iVar1 = param_2 * param_1->unk10; - if (iVar1 < 0) - iVar1 = iVar1 + 0xff; - return iVar2 + (iVar1 >> 8); + return iVar2 + (iVar1 / 256); } void sub_8013818(MenuInputStruct *param_1, s32 param_2, u32 param_3, s32 param_4) @@ -1279,10 +1277,10 @@ u32 sub_8013BBC(unkStructFor8013AA0 *a0) return 1; switch (sub_8012AE8()) { - case 2: + case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; - case 1: + case INPUT_A_BUTTON: PlayMenuSoundEffect(0); return 3; } @@ -1322,10 +1320,10 @@ void sub_8013D10(unkStructFor8013AA0 *a0) uVar4 = a0->unk24; switch (sub_8012AE8()) { - case 9: + case INPUT_DPAD_LEFT: uVar4 = a0->unk24 < a0->unk25 - 1 ? a0->unk24 + 1 : 0; break; - case 10: + case INPUT_DPAD_RIGHT: uVar4 = a0->unk24 == 0 ? a0->unk25 - 1 : a0->unk24 - 1; break; } @@ -1358,7 +1356,7 @@ static bool8 sub_8013DD0(unkStructFor8013AA0 *a0) s32 iVar2; switch (sub_8012AE8()) { - case 7: + case INPUT_DPAD_UP: if (a0->unk0 == a0->unkC) { PlayMenuSoundEffect(2); return FALSE; @@ -1372,7 +1370,7 @@ static bool8 sub_8013DD0(unkStructFor8013AA0 *a0) else a0->unk0 = iVar2; return TRUE; - case 8: + case INPUT_DPAD_DOWN: if (a0->unk0 == a0->unk8) { PlayMenuSoundEffect(2); return FALSE; @@ -1389,4 +1387,4 @@ static bool8 sub_8013DD0(unkStructFor8013AA0 *a0) default: return FALSE; } -} \ No newline at end of file +} diff --git a/src/pelipper_board.c b/src/pelipper_board.c index cd0f11967..85c60d1dc 100644 --- a/src/pelipper_board.c +++ b/src/pelipper_board.c @@ -387,7 +387,7 @@ void sub_802EDBC(void) default: AcceptJob(mail); sub_8096C80(); - sub_8096D24(); + SortJobSlots(); if(HasNoPelipperBoardJobs()) { sub_802C2D4(); diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c index 86041c017..fe3099da9 100644 --- a/src/pokemon_mid.c +++ b/src/pokemon_mid.c @@ -36,7 +36,6 @@ extern int sprintf(char *, const char *, ...); extern u32 ReturnIntFromChar(u8 r0); extern void sub_80943A0(void*, s32); extern void xxx_pokemon2_to_pokemonstruct_808DF44(PokemonStruct1*, PokemonStruct2*); -extern const u8 *DecompressMoveID(const u8 *a1, u16 *a2); extern u8 GetBodySize(s16 index); @@ -966,13 +965,13 @@ s32 GetEvolutionSequence(PokemonStruct1* pokemon, struct EvolveStage* a2) #endif } -s32 sub_808E400(s32 _species, s16* _a2, s32 _a3, s32 _a4) +s32 sub_808E400(s32 _species, s16* _a2, bool32 bodySizeCheck, bool32 shedinjaCheck) { // this is horrible s32 i; register s32 species asm("r9") = (s16)_species; - s32 a3 = (u8)_a3; - s32 a4 = (u8)_a4; + bool32 bodySizeCheck_bool32 = (bool8)bodySizeCheck; + bool32 shedinjaCheck_bool32 = (bool8)shedinjaCheck; s32 count = 0; register s16* a2 asm("r6"); i = 1; @@ -982,10 +981,10 @@ s32 sub_808E400(s32 _species, s16* _a2, s32 _a3, s32 _a4) if (species != GetPokemonEvolveFrom(i)) { continue; } - if (!a3 && (GetBodySize(species) != GetBodySize(i))) { + if (!bodySizeCheck_bool32 && (GetBodySize(species) != GetBodySize(i))) { continue; } - if (!a4 && ((s16)i == MONSTER_SHEDINJA)) { + if (!shedinjaCheck_bool32 && ((s16)i == MONSTER_SHEDINJA)) { continue; } *a2++ = current; diff --git a/src/status_checks.c b/src/status_checks.c index 5bf08903b..a4779cfb2 100644 --- a/src/status_checks.c +++ b/src/status_checks.c @@ -175,7 +175,7 @@ bool8 sub_80701A4(Entity *pokemon) (pokemonInfo->chargingStatusMoveIndex == index)) { SetMonsterActionFields(&pokemonInfo->action, ACTION_USE_MOVE_PLAYER); index_1 = index; - r7 = &pokemonInfo->action.unkC; + r7 = &pokemonInfo->action.unk4[1].actionUseIndex; if((index > 0) && (move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) { do { diff --git a/src/wonder_mail_802D098.c b/src/wonder_mail_802D098.c index 3efa8a008..5c1ee4649 100644 --- a/src/wonder_mail_802D098.c +++ b/src/wonder_mail_802D098.c @@ -209,7 +209,7 @@ static void sub_802D2A8(void) sUnknown_203B2F8->wonderMailAccepted = TRUE; AcceptJob(&sUnknown_203B2F8->mail->wonderMail); sub_8096C80(); - sub_8096D24(); + SortJobSlots(); if (sUnknown_203B2F8->mail->wonderMail.unk2 == 4) { MemoryCopy8(sub_8096DD8(), sUnknown_203B2F8->mail->unk14, 40); @@ -577,4 +577,4 @@ static bool8 sub_802DADC(void) } return FALSE; -} \ No newline at end of file +}