diff --git a/asm/code_801EE10_mid.s b/asm/code_801EE10_mid.s index 8f6ce63a4..92c23009d 100644 --- a/asm/code_801EE10_mid.s +++ b/asm/code_801EE10_mid.s @@ -5,1491 +5,6 @@ .text - thumb_func_start sub_801FDC0 -sub_801FDC0: - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, _0801FDE8 - ldr r0, [r4] - movs r5, 0xC0 - lsls r5, 1 - adds r0, r5 - bl sub_8006518 - ldr r0, [r4] - ldr r1, [r0, 0x4] - cmp r1, 0x11 - beq _0801FE38 - cmp r1, 0x11 - bgt _0801FDEC - cmp r1, 0x2 - beq _0801FDF6 - b _0801FED4 - .align 2, 0 -_0801FDE8: .4byte gUnknown_203B27C -_0801FDEC: - cmp r1, 0x17 - beq _0801FE6C - cmp r1, 0x20 - beq _0801FE88 - b _0801FED4 -_0801FDF6: - adds r0, r5 - movs r1, 0x80 - strb r1, [r0] - ldr r0, [r4] - movs r2, 0xCC - lsls r2, 1 - adds r0, r2 - strb r1, [r0] - ldr r0, [r4] - movs r3, 0xD8 - lsls r3, 1 - adds r0, r3 - strb r1, [r0] - ldr r1, [r4] - movs r6, 0xE4 - lsls r6, 1 - adds r1, r6 - ldr r0, _0801FE34 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r6,r7} - stm r1!, {r2,r6,r7} - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, r5 - movs r1, 0x1 - movs r2, 0 - bl sub_800641C - b _0801FF14 - .align 2, 0 -_0801FE34: .4byte gUnknown_80DC37C -_0801FE38: - bl sub_80205D0 - ldr r2, [r4] - movs r0, 0xD8 - lsls r0, 1 - adds r2, r0 - ldr r1, _0801FE68 - ldm r1!, {r3,r5,r6} - stm r2!, {r3,r5,r6} - ldm r1!, {r3,r5,r7} - stm r2!, {r3,r5,r7} - ldr r1, [r4] - adds r0, r1, r0 - adds r1, 0x7C - bl sub_8012CAC - bl ResetUnusedInputStruct - ldr r0, [r4] - movs r6, 0xC0 - lsls r6, 1 - adds r0, r6 - b _0801FEC2 - .align 2, 0 -_0801FE68: .4byte gUnknown_80DC334 -_0801FE6C: - bl sub_802069C - ldr r2, [r4] - movs r0, 0xD8 - lsls r0, 1 - adds r2, r0 - ldr r1, _0801FE84 - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} - b _0801FEB0 - .align 2, 0 -_0801FE84: .4byte gUnknown_80DC334 -_0801FE88: - bl CreateGulpinLinkMenu - ldr r1, [r4] - movs r7, 0xCC - lsls r7, 1 - adds r1, r7 - ldr r0, _0801FECC - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldr r2, [r4] - movs r0, 0xD8 - lsls r0, 1 - adds r2, r0 - ldr r1, _0801FED0 - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} -_0801FEB0: - ldr r1, [r4] - adds r0, r1, r0 - adds r1, 0x7C - bl sub_8012CAC - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, r5 -_0801FEC2: - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - b _0801FF14 - .align 2, 0 -_0801FECC: .4byte gUnknown_80DC31C -_0801FED0: .4byte gUnknown_80DC34C -_0801FED4: - ldr r5, _0801FF20 - mov r12, r5 - movs r6, 0xC0 - lsls r6, 1 - mov r8, r6 - ldr r4, _0801FF24 - movs r3, 0 - movs r2, 0x3 -_0801FEE4: - mov r7, r12 - ldr r1, [r7] - adds r1, r3 - add r1, r8 - 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 _0801FEE4 - bl ResetUnusedInputStruct - ldr r0, _0801FF20 - ldr r0, [r0] - movs r1, 0xC0 - lsls r1, 1 - adds r0, r1 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C -_0801FF14: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801FF20: .4byte gUnknown_203B27C -_0801FF24: .4byte gUnknown_80DC31C - thumb_func_end sub_801FDC0 - - thumb_func_start sub_801FF28 -sub_801FF28: - push {r4,r5,lr} - sub sp, 0x14 - ldr r1, _0801FF44 - ldr r0, [r1] - ldr r0, [r0, 0x4] - adds r5, r1, 0 - cmp r0, 0x23 - bls _0801FF3A - b _08020562 -_0801FF3A: - lsls r0, 2 - ldr r1, _0801FF48 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801FF44: .4byte gUnknown_203B27C -_0801FF48: .4byte _0801FF4C - .align 2, 0 -_0801FF4C: - .4byte _0801FFDC - .4byte _08020018 - .4byte _08020064 - .4byte _0802006C - .4byte _08020090 - .4byte _080200B4 - .4byte _080200D8 - .4byte _080200FC - .4byte _08020144 - .4byte _0802018C - .4byte _080201B0 - .4byte _080201D4 - .4byte _080201F8 - .4byte _08020562 - .4byte _0802021C - .4byte _08020240 - .4byte _0802024E - .4byte _08020256 - .4byte _08020274 - .4byte _08020282 - .4byte _0802028E - .4byte _080202B0 - .4byte _080202BE - .4byte _080202C6 - .4byte _080202E4 - .4byte _08020304 - .4byte _08020344 - .4byte _080203B0 - .4byte _080203D4 - .4byte _0802038C - .4byte _080203F8 - .4byte _08020428 - .4byte _08020434 - .4byte _08020460 - .4byte _08020478 - .4byte _08020500 -_0801FFDC: - ldr r0, [r5] - movs r4, 0x2 - str r4, [r0, 0x6C] - bl CreateGulpinShopMenu - ldr r5, [r5] - str r4, [r5, 0x8] - ldr r2, _08020014 - ldr r1, [r5] - movs r0, 0x64 - muls r0, r1 - adds r0, r2 - ldr r0, [r0] - ldr r2, [r5, 0x6C] - adds r3, r5, 0 - adds r3, 0x7C - adds r1, r5, 0 - adds r1, 0xBC - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r4, 0xBE - lsls r4, 1 - adds r1, r5, r4 - b _0802004C - .align 2, 0 -_08020014: .4byte gGulpinDialogue -_08020018: - bl CreateGulpinShopMenu - ldr r0, _0802005C - ldr r4, [r0] - movs r0, 0x2 - str r0, [r4, 0x8] - ldr r1, _08020060 - ldr r2, [r4] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x4 - adds r0, r1 - ldr r0, [r0] - ldr r2, [r4, 0x6C] - adds r3, r4, 0 - adds r3, 0x7C - adds r1, r4, 0 - adds r1, 0xBC - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r5, 0xBE - lsls r5, 1 - adds r1, r4, r5 -_0802004C: - ldr r1, [r1] - str r1, [sp, 0xC] - movs r1, 0xC - str r1, [sp, 0x10] - movs r1, 0 - bl sub_8014248 - b _08020562 - .align 2, 0 -_0802005C: .4byte gUnknown_203B27C -_08020060: .4byte gGulpinDialogue -_08020064: - movs r0, 0x3 - bl DrawTeamMoneyBox - b _08020562 -_0802006C: - ldr r2, [r5] - movs r0, 0x1F - str r0, [r2, 0x8] - ldr r1, _0802008C - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x8 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xBE - lsls r1, 1 - adds r2, r1 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_0802008C: .4byte gGulpinDialogue -_08020090: - ldr r2, [r5] - movs r0, 0x1F - str r0, [r2, 0x8] - ldr r1, _080200B0 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0xC - adds r0, r1 - ldr r0, [r0] - movs r4, 0xBE - lsls r4, 1 - adds r2, r4 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080200B0: .4byte gGulpinDialogue -_080200B4: - ldr r2, [r5] - movs r0, 0x1F - str r0, [r2, 0x8] - ldr r1, _080200D4 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x10 - adds r0, r1 - ldr r0, [r0] - movs r5, 0xBE - lsls r5, 1 - adds r2, r5 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080200D4: .4byte gGulpinDialogue -_080200D8: - ldr r2, [r5] - movs r0, 0x1F - str r0, [r2, 0x8] - ldr r1, _080200F8 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x14 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xBE - lsls r1, 1 - adds r2, r1 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080200F8: .4byte gGulpinDialogue -_080200FC: - bl sub_8020900 - ldr r1, _0802013C - ldr r0, _08020140 - ldr r4, [r0] - ldr r2, [r4] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x18 - adds r0, r1 - ldr r0, [r0] - adds r3, r4, 0 - adds r3, 0x7C - adds r1, r4, 0 - adds r1, 0xBC - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r2, 0xBE - lsls r2, 1 - adds r1, r4, r2 - ldr r1, [r1] - str r1, [sp, 0xC] - movs r1, 0xC - str r1, [sp, 0x10] - movs r1, 0 - movs r2, 0x10 - bl sub_8014248 - b _08020562 - .align 2, 0 -_0802013C: .4byte gGulpinDialogue -_08020140: .4byte gUnknown_203B27C -_08020144: - bl sub_8020950 - ldr r1, _08020184 - ldr r0, _08020188 - ldr r4, [r0] - ldr r2, [r4] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x54 - adds r0, r1 - ldr r0, [r0] - adds r3, r4, 0 - adds r3, 0x7C - adds r1, r4, 0 - adds r1, 0xBC - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r5, 0xBE - lsls r5, 1 - adds r1, r4, r5 - ldr r1, [r1] - str r1, [sp, 0xC] - movs r1, 0xC - str r1, [sp, 0x10] - movs r1, 0 - movs r2, 0xD - bl sub_8014248 - b _08020562 - .align 2, 0 -_08020184: .4byte gGulpinDialogue -_08020188: .4byte gUnknown_203B27C -_0802018C: - ldr r2, [r5] - movs r0, 0x1 - str r0, [r2, 0x8] - ldr r1, _080201AC - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x58 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xBE - lsls r1, 1 - adds r2, r1 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080201AC: .4byte gGulpinDialogue -_080201B0: - ldr r2, [r5] - movs r0, 0x1 - str r0, [r2, 0x8] - ldr r1, _080201D0 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x5C - adds r0, r1 - ldr r0, [r0] - movs r4, 0xBE - lsls r4, 1 - adds r2, r4 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080201D0: .4byte gGulpinDialogue -_080201D4: - ldr r2, [r5] - movs r0, 0x1 - str r0, [r2, 0x8] - ldr r1, _080201F4 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x60 - adds r0, r1 - ldr r0, [r0] - movs r5, 0xBE - lsls r5, 1 - adds r2, r5 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080201F4: .4byte gGulpinDialogue -_080201F8: - ldr r2, [r5] - movs r0, 0xD - str r0, [r2, 0x8] - ldr r1, _08020218 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x1C - adds r0, r1 - ldr r0, [r0] - movs r1, 0xBE - lsls r1, 1 - adds r2, r1 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_08020218: .4byte gGulpinDialogue -_0802021C: - ldr r2, [r5] - movs r0, 0xF - str r0, [r2, 0x8] - ldr r1, _0802023C - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x20 - adds r0, r1 - ldr r0, [r0] - movs r4, 0xBE - lsls r4, 1 - adds r2, r4 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_0802023C: .4byte gGulpinDialogue -_08020240: - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0xA - bl sub_8023868 - b _08020562 -_0802024E: - movs r0, 0x1 - bl sub_8023B7C - b _08020562 -_08020256: - bl sub_8023DA4 - ldr r0, _08020270 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0xCC - adds r1, r2, 0 - adds r1, 0x7C - adds r3, r2, 0 - adds r3, 0xBC - ldr r2, [r2, 0x70] - b _0802044C - .align 2, 0 -_08020270: .4byte gUnknown_203B27C -_08020274: - ldr r0, [r5] - movs r5, 0xC - ldrsh r0, [r0, r5] - movs r1, 0x2 - bl sub_8024458 - b _08020562 -_08020282: - ldr r0, [r5] - movs r1, 0xC - ldrsh r0, [r0, r1] - bl sub_801BEEC - b _08020562 -_0802028E: - ldr r2, [r5] - movs r0, 0x15 - str r0, [r2, 0x8] - ldr r1, _080202AC - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x24 - adds r0, r1 - ldr r0, [r0] - movs r4, 0xBE - lsls r4, 1 - adds r2, r4 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080202AC: .4byte gGulpinDialogue -_080202B0: - ldr r0, [r5] - movs r5, 0xC - ldrsh r0, [r0, r5] - movs r1, 0 - bl sub_801F428 - b _08020562 -_080202BE: - movs r0, 0x1 - bl sub_801F5F0 - b _08020562 -_080202C6: - bl sub_801F700 - ldr r0, _080202E0 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0xCC - adds r1, r2, 0 - adds r1, 0x7C - adds r3, r2, 0 - adds r3, 0xBC - ldr r2, [r2, 0x74] - b _0802044C - .align 2, 0 -_080202E0: .4byte gUnknown_203B27C -_080202E4: - ldr r0, [r5] - ldrh r1, [r0, 0x1C] - adds r0, 0x64 - strh r1, [r0] - movs r2, 0x1 - adds r4, r5, 0 - movs r3, 0 -_080202F2: - ldr r0, [r4] - lsls r1, r2, 1 - adds r0, 0x64 - adds r0, r1 - strh r3, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _080202F2 - b _0802046E -_08020304: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x24 - ldr r1, [r1, 0x10] - adds r1, 0x2C - bl sub_8094060 - ldr r1, [r5] - movs r0, 0x10 - str r0, [r1, 0x8] - ldr r0, _0802033C - ldrh r1, [r1, 0x1E] - bl sub_8092C84 - ldr r1, _08020340 - ldr r2, [r5] - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x28 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xBE - lsls r1, 1 - adds r2, r1 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_0802033C: .4byte gAvailablePokemonNames -_08020340: .4byte gGulpinDialogue -_08020344: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x24 - ldr r1, [r1, 0x10] - adds r1, 0x2C - bl sub_8094060 - ldr r3, [r5] - movs r0, 0x10 - str r0, [r3, 0x8] - ldrb r0, [r3, 0x14] - cmp r0, 0 - beq _08020370 - ldr r1, _0802036C - ldr r2, [r3] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x38 - b _08020520 - .align 2, 0 -_0802036C: .4byte gGulpinDialogue -_08020370: - ldr r1, _08020388 - ldr r2, [r3] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x34 - adds r0, r1 - ldr r0, [r0] - movs r4, 0xBE - lsls r4, 1 - adds r1, r3, r4 - b _0802052A - .align 2, 0 -_08020388: .4byte gGulpinDialogue -_0802038C: - ldr r2, [r5] - ldr r0, [r2] - cmp r0, 0 - bne _080203A2 - movs r5, 0xC - ldrsh r1, [r2, r5] - adds r2, 0x24 - movs r0, 0 - bl CreateGulpinShop - b _08020562 -_080203A2: - movs r0, 0xC - ldrsh r1, [r2, r0] - adds r2, 0x24 - movs r0, 0x1 - bl CreateGulpinShop - b _08020562 -_080203B0: - ldr r2, [r5] - movs r0, 0x10 - str r0, [r2, 0x8] - ldr r1, _080203D0 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x3C - adds r0, r1 - ldr r0, [r0] - movs r1, 0xBE - lsls r1, 1 - adds r2, r1 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080203D0: .4byte gGulpinDialogue -_080203D4: - ldr r2, [r5] - movs r0, 0x10 - str r0, [r2, 0x8] - ldr r1, _080203F4 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x40 - adds r0, r1 - ldr r0, [r0] - movs r4, 0xBE - lsls r4, 1 - adds r2, r4 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080203F4: .4byte gGulpinDialogue -_080203F8: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x24 - ldr r1, [r1, 0x10] - adds r1, 0x2C - bl unk_CopyMoves4To8 - ldr r0, [r5] - movs r5, 0xC - ldrsh r1, [r0, r5] - adds r2, r0, 0 - adds r2, 0x24 - ldrb r3, [r0, 0x15] - ldr r0, _08020424 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - movs r0, 0x1 - bl sub_801EE10 - b _08020562 - .align 2, 0 -_08020424: .4byte gUnknown_80DC394 -_08020428: - ldr r0, [r5] - ldrb r1, [r0, 0x15] - movs r0, 0x1 - bl sub_801F1B0 - b _08020562 -_08020434: - movs r0, 0 - bl sub_801F280 - ldr r0, _0802045C - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0xCC - adds r1, r2, 0 - adds r1, 0x7C - adds r3, r2, 0 - adds r3, 0xBC - ldr r2, [r2, 0x78] -_0802044C: - str r2, [sp] - movs r2, 0x2 - str r2, [sp, 0x4] - movs r2, 0 - bl sub_8012D60 - b _08020562 - .align 2, 0 -_0802045C: .4byte gUnknown_203B27C -_08020460: - ldr r2, [r5] - ldr r0, [r2, 0x18] - adds r1, r2, 0 - adds r1, 0x24 - adds r2, 0x64 - bl GetLinkedSequence -_0802046E: - ldr r0, [r5] - adds r0, 0x64 - bl sub_801F808 - b _08020562 -_08020478: - bl sub_80208B0 - ldr r0, _080204B8 - ldr r4, _080204BC - ldr r1, [r4] - ldrh r1, [r1, 0x20] - bl sub_8092C84 - ldr r4, [r4] - ldrb r5, [r4, 0x14] - cmp r5, 0 - beq _080204C4 - ldr r1, _080204C0 - ldr r2, [r4] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x48 - adds r0, r1 - ldr r0, [r0] - adds r3, r4, 0 - adds r3, 0x7C - adds r1, r4, 0 - adds r1, 0xBC - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r2, 0xBE - lsls r2, 1 - adds r1, r4, r2 - b _080204E8 - .align 2, 0 -_080204B8: .4byte gUnknown_202DFE8 -_080204BC: .4byte gUnknown_203B27C -_080204C0: .4byte gGulpinDialogue -_080204C4: - ldr r1, _080204FC - ldr r2, [r4] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x44 - adds r0, r1 - ldr r0, [r0] - adds r3, r4, 0 - adds r3, 0x7C - adds r1, r4, 0 - adds r1, 0xBC - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - str r5, [sp, 0x8] - movs r5, 0xBE - lsls r5, 1 - adds r1, r4, r5 -_080204E8: - ldr r1, [r1] - str r1, [sp, 0xC] - movs r1, 0xC - str r1, [sp, 0x10] - movs r1, 0 - movs r2, 0x11 - bl sub_8014248 - b _08020562 - .align 2, 0 -_080204FC: .4byte gGulpinDialogue -_08020500: - ldr r1, [r5] - movs r0, 0x1F - str r0, [r1, 0x8] - ldr r0, _08020538 - ldrh r1, [r1, 0x20] - bl sub_8092C84 - ldr r3, [r5] - ldrb r0, [r3, 0x14] - cmp r0, 0 - beq _08020544 - ldr r1, _0802053C - ldr r2, [r3] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x50 -_08020520: - adds r0, r1 - ldr r0, [r0] - movs r2, 0xBE - lsls r2, 1 - adds r1, r3, r2 -_0802052A: - ldr r2, [r1] -_0802052C: - ldr r3, _08020540 - movs r1, 0 - bl sub_80141B4 - b _08020562 - .align 2, 0 -_08020538: .4byte gUnknown_202DFE8 -_0802053C: .4byte gGulpinDialogue -_08020540: .4byte 0x0000010d -_08020544: - ldr r1, _0802056C - ldr r2, [r3] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r4, 0xBE - lsls r4, 1 - adds r1, r3, r4 - ldr r2, [r1] - ldr r3, _08020570 - movs r1, 0 - bl sub_80141B4 -_08020562: - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802056C: .4byte gGulpinDialogue -_08020570: .4byte 0x0000010d - thumb_func_end sub_801FF28 - - thumb_func_start CreateGulpinShopMenu -CreateGulpinShopMenu: - push {r4,lr} - ldr r4, _080205C0 - ldr r0, [r4] - adds r0, 0xBC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r4, [r4] - movs r3, 0 - ldr r0, _080205C4 - str r0, [r4, 0x7C] - adds r1, r4, 0 - adds r1, 0x80 - movs r0, 0x2 - str r0, [r1] - movs r2, 0x1 - adds r1, 0x4 - ldr r0, _080205C8 - str r0, [r1] - adds r1, 0x4 - movs r0, 0xB - str r0, [r1] - adds r1, 0x4 - ldr r0, _080205CC - ldr r0, [r0] - str r0, [r1] - adds r0, r4, 0 - adds r0, 0x90 - str r2, [r0] - adds r0, 0x4 - str r3, [r0] - adds r0, 0x4 - str r2, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080205C0: .4byte gUnknown_203B27C -_080205C4: .4byte gGulpinProceed -_080205C8: .4byte gGulpinInfo -_080205CC: .4byte gUnknown_80D4934 - thumb_func_end CreateGulpinShopMenu - - thumb_func_start sub_80205D0 -sub_80205D0: - push {r4-r7,lr} - ldr r4, _08020660 - ldr r0, [r4] - adds r0, 0xBC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r0, [r4] - mov r12, r0 - movs r5, 0 - ldr r0, _08020664 - mov r1, r12 - str r0, [r1, 0x7C] - mov r2, r12 - adds r2, 0x80 - movs r0, 0x4 - str r0, [r2] - movs r3, 0x1 - adds r1, 0x84 - ldr r0, _08020668 - str r0, [r1] - adds r1, 0x4 - movs r0, 0xB - str r0, [r1] - adds r1, 0x4 - ldr r0, _0802066C - str r0, [r1] - adds r1, 0x4 - movs r0, 0xC - str r0, [r1] - movs r6, 0x3 - adds r1, 0x4 - ldr r0, _08020670 - str r0, [r1] - mov r0, r12 - adds r0, 0x98 - str r6, [r0] - movs r6, 0x4 - adds r0, 0x4 - str r5, [r0] - adds r0, 0x4 - str r3, [r0] - mov r3, r12 - adds r3, 0xBC -_0802062A: - ldrh r0, [r3] - cmp r0, 0 - bne _0802063A - ldr r1, [r2] - mov r7, r12 - ldr r0, [r7, 0x70] - cmp r1, r0 - beq _08020696 -_0802063A: - adds r2, 0x8 - adds r3, 0x2 - adds r5, 0x1 - cmp r5, r6 - blt _0802062A - movs r5, 0 - cmp r5, r6 - bge _08020696 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0xBC - ldrh r0, [r0] - cmp r0, 0 - bne _08020674 - adds r0, r1, 0 - adds r0, 0x80 - ldr r0, [r0] - str r0, [r1, 0x70] - b _08020696 - .align 2, 0 -_08020660: .4byte gUnknown_203B27C -_08020664: .4byte gUnknown_80DC3D8 -_08020668: .4byte gUnknown_80DC3E0 -_0802066C: .4byte gUnknown_80DC3E8 -_08020670: .4byte gUnknown_80DC3F4 -_08020674: - adds r5, 0x1 - cmp r5, r6 - bge _08020696 - ldr r2, [r4] - lsls r0, r5, 1 - adds r1, r2, 0 - adds r1, 0xBC - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08020674 - lsls r0, r5, 3 - adds r1, r2, 0 - adds r1, 0x80 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x70] -_08020696: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80205D0 - - thumb_func_start sub_802069C -sub_802069C: - push {r4-r7,lr} - ldr r4, _08020718 - ldr r0, [r4] - adds r0, 0xBC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r0, [r4] - mov r12, r0 - movs r5, 0 - ldr r0, _0802071C - mov r1, r12 - str r0, [r1, 0x7C] - mov r3, r12 - adds r3, 0x80 - movs r0, 0x3 - str r0, [r3] - movs r2, 0x1 - adds r1, 0x84 - ldr r0, _08020720 - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - movs r0, 0xB - str r0, [r1] - movs r6, 0x2 - mov r0, r12 - adds r0, 0x8C - str r5, [r0] - adds r0, 0x4 - str r2, [r0] - mov r2, r12 - adds r2, 0xBC -_080206E0: - ldrh r0, [r2] - cmp r0, 0 - bne _080206F0 - ldr r1, [r3] - mov r7, r12 - ldr r0, [r7, 0x74] - cmp r1, r0 - beq _08020746 -_080206F0: - adds r3, 0x8 - adds r2, 0x2 - adds r5, 0x1 - cmp r5, r6 - blt _080206E0 - movs r5, 0 - cmp r5, r6 - bge _08020746 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0xBC - ldrh r0, [r0] - cmp r0, 0 - bne _08020724 - adds r0, r1, 0 - adds r0, 0x80 - ldr r0, [r0] - str r0, [r1, 0x74] - b _08020746 - .align 2, 0 -_08020718: .4byte gUnknown_203B27C -_0802071C: .4byte gUnknown_80DC3F4 -_08020720: .4byte gUnknown_80D4970 -_08020724: - adds r5, 0x1 - cmp r5, r6 - bge _08020746 - ldr r2, [r4] - lsls r0, r5, 1 - adds r1, r2, 0 - adds r1, 0xBC - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08020724 - lsls r0, r5, 3 - adds r1, r2, 0 - adds r1, 0x80 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x74] -_08020746: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_802069C - - thumb_func_start CreateGulpinLinkMenu -CreateGulpinLinkMenu: - push {r4-r7,lr} - movs r7, 0 - ldr r4, _08020780 - ldr r0, [r4] - adds r0, 0xBC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r1, [r4] - ldrb r0, [r1, 0x16] - cmp r0, 0 - beq _0802079C - ldr r0, [r1, 0x18] - adds r1, 0x24 - bl IsMoveSet - lsls r0, 24 - cmp r0, 0 - beq _08020788 - ldr r0, [r4] - ldr r1, _08020784 - str r1, [r0, 0x7C] - adds r0, 0x80 - movs r1, 0x6 - b _08020792 - .align 2, 0 -_08020780: .4byte gUnknown_203B27C -_08020784: .4byte gGulpinDeselect -_08020788: - ldr r0, [r4] - ldr r1, _08020798 - str r1, [r0, 0x7C] - adds r0, 0x80 - movs r1, 0x5 -_08020792: - str r1, [r0] - mov r12, r4 - b _080207CA - .align 2, 0 -_08020798: .4byte gGulpinSet -_0802079C: - ldr r0, [r1, 0x18] - adds r1, 0x24 - bl IsMoveEnabled - lsls r0, 24 - cmp r0, 0 - beq _080207B4 - ldr r1, [r4] - ldr r0, _080207B0 - b _080207B8 - .align 2, 0 -_080207B0: .4byte gGulpinDeselect -_080207B4: - ldr r1, [r4] - ldr r0, _0802086C -_080207B8: - str r0, [r1, 0x7C] - ldr r2, _08020870 - ldr r0, [r2] - lsls r1, r7, 3 - adds r0, 0x80 - adds r0, r1 - movs r1, 0x7 - str r1, [r0] - mov r12, r2 -_080207CA: - adds r7, 0x1 - mov r0, r12 - ldr r4, [r0] - lsls r1, r7, 3 - adds r3, r4, 0 - adds r3, 0x7C - adds r2, r3, r1 - ldr r0, _08020874 - str r0, [r2] - adds r6, r4, 0 - adds r6, 0x80 - adds r1, r6, r1 - movs r0, 0x8 - str r0, [r1] - adds r7, 0x1 - lsls r1, r7, 3 - adds r2, r3, r1 - ldr r0, _08020878 - str r0, [r2] - adds r1, r6, r1 - movs r0, 0x9 - str r0, [r1] - adds r7, 0x1 - lsls r1, r7, 3 - adds r2, r3, r1 - ldr r0, _0802087C - str r0, [r2] - adds r1, r6, r1 - movs r0, 0xA - str r0, [r1] - adds r7, 0x1 - lsls r1, r7, 3 - adds r2, r3, r1 - ldr r0, _08020880 - ldr r0, [r0] - str r0, [r2] - adds r1, r6, r1 - movs r0, 0xB - str r0, [r1] - adds r7, 0x1 - lsls r1, r7, 3 - adds r3, r1 - movs r0, 0 - str r0, [r3] - adds r1, r6, r1 - movs r0, 0x1 - str r0, [r1] - movs r3, 0 - cmp r3, r7 - bge _0802084C - adds r5, r4, 0 - adds r4, 0xBC - adds r2, r6, 0 -_08020834: - ldrh r0, [r4] - cmp r0, 0 - bne _08020842 - ldr r1, [r2] - ldr r0, [r5, 0x78] - cmp r1, r0 - beq _080208A8 -_08020842: - adds r4, 0x2 - adds r2, 0x8 - adds r3, 0x1 - cmp r3, r7 - blt _08020834 -_0802084C: - movs r3, 0 - cmp r3, r7 - bge _080208A8 - mov r0, r12 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xBC - ldrh r0, [r0] - cmp r0, 0 - bne _08020884 - adds r0, r1, 0 - adds r0, 0x80 - ldr r0, [r0] - str r0, [r1, 0x78] - b _080208A8 - .align 2, 0 -_0802086C: .4byte gGulpinSet -_08020870: .4byte gUnknown_203B27C -_08020874: .4byte gGulpinLink -_08020878: .4byte gGulpinDelink -_0802087C: .4byte gGulpinForget -_08020880: .4byte gUnknown_80D4970 -_08020884: - adds r3, 0x1 - cmp r3, r7 - bge _080208A8 - mov r0, r12 - ldr r2, [r0] - lsls r0, r3, 1 - adds r1, r2, 0 - adds r1, 0xBC - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08020884 - lsls r0, r3, 3 - adds r1, r2, 0 - adds r1, 0x80 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x78] -_080208A8: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end CreateGulpinLinkMenu - - thumb_func_start sub_80208B0 -sub_80208B0: - push {r4,lr} - ldr r4, _080208F4 - ldr r0, [r4] - adds r0, 0xBC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r4, [r4] - movs r3, 0 - ldr r0, _080208F8 - ldr r0, [r0] - str r0, [r4, 0x7C] - adds r1, r4, 0 - adds r1, 0x80 - movs r0, 0x10 - str r0, [r1] - movs r2, 0x1 - adds r1, 0x4 - ldr r0, _080208FC - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - movs r0, 0x11 - str r0, [r1] - adds r0, r4, 0 - adds r0, 0x8C - str r3, [r0] - adds r0, 0x4 - str r2, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080208F4: .4byte gUnknown_203B27C -_080208F8: .4byte gUnknown_80D4920 -_080208FC: .4byte gUnknown_80D4928 - thumb_func_end sub_80208B0 - - thumb_func_start sub_8020900 -sub_8020900: - push {r4,lr} - ldr r4, _08020944 - ldr r0, [r4] - adds r0, 0xBC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r3, [r4] - movs r2, 0 - ldr r0, _08020948 - ldr r0, [r0] - str r0, [r3, 0x7C] - adds r1, r3, 0 - adds r1, 0x80 - movs r0, 0x10 - str r0, [r1] - adds r1, 0x4 - ldr r0, _0802094C - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - movs r0, 0x11 - str r0, [r1] - adds r0, r3, 0 - adds r0, 0x8C - str r2, [r0] - adds r1, 0x8 - movs r0, 0x1 - negs r0, r0 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08020944: .4byte gUnknown_203B27C -_08020948: .4byte gUnknown_80D4920 -_0802094C: .4byte gUnknown_80D4928 - thumb_func_end sub_8020900 - - thumb_func_start sub_8020950 -sub_8020950: - push {r4,lr} - ldr r4, _0802099C - ldr r0, [r4] - adds r0, 0xBC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r4, [r4] - movs r3, 0 - ldr r0, _080209A0 - str r0, [r4, 0x7C] - adds r1, r4, 0 - adds r1, 0x80 - movs r0, 0xD - str r0, [r1] - movs r2, 0x1 - adds r1, 0x4 - ldr r0, _080209A4 - str r0, [r1] - adds r1, 0x4 - movs r0, 0xE - str r0, [r1] - adds r1, 0x4 - ldr r0, _080209A8 - str r0, [r1] - adds r1, 0x4 - movs r0, 0xF - str r0, [r1] - adds r0, r4, 0 - adds r0, 0x94 - str r3, [r0] - adds r0, 0x4 - str r2, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802099C: .4byte gUnknown_203B27C -_080209A0: .4byte gUnknown_80DC428 -_080209A4: .4byte gUnknown_80DC438 -_080209A8: .4byte gUnknown_80DC448 - thumb_func_end sub_8020950 - thumb_func_start sub_80209AC sub_80209AC: push {lr} diff --git a/include/code_801EE10.h b/include/code_801EE10.h index b6ff7142e..10c8d7734 100644 --- a/include/code_801EE10.h +++ b/include/code_801EE10.h @@ -17,7 +17,7 @@ struct unkStruct_203B270 u32 unk50; u32 unk54; struct UnkTextStruct2 unk58[4]; - u8 *unkB8; + u8 *text; }; #endif diff --git a/include/moves.h b/include/moves.h index c6474ca66..02c0d435b 100644 --- a/include/moves.h +++ b/include/moves.h @@ -57,5 +57,7 @@ void unk_LinkedSequencesToMoves8(struct Move* moves, struct Move linkedSequences int unk_FindMarkedMoveInLinkedSequences88_v2(struct Move linkedSequences[8][8]); void unk_LinkedSequencesToMoves8_v2(struct Move* moves, struct Move linkedSequences[8][8]); +bool8 IsMoveSet(int index, struct Move* struct_ptr); +bool8 IsMoveEnabled(int index, struct Move* struct_ptr); #endif // GUARD_MOVES_H diff --git a/src/code_801EE10.c b/src/code_801EE10.c index 8a805f998..fb0984c58 100644 --- a/src/code_801EE10.c +++ b/src/code_801EE10.c @@ -16,7 +16,7 @@ s32 sub_801F3F8(void); void sub_8013780(struct MenuInputStruct*, u32); void sub_801F280(u32); -u8 sub_801EE10(u32 param_1,s16 species,struct Move *moves,u32 param_4,u8 *param_5,u32 param_6) +u8 sub_801EE10(u32 param_1, s16 species, struct Move *moves, u32 param_4, u8 *text, u32 param_6) { s32 iVar5; s32 iVar8; @@ -24,7 +24,7 @@ u8 sub_801EE10(u32 param_1,s16 species,struct Move *moves,u32 param_4,u8 *param_ u8 param_4_u8; s32 four; - species_s32 = species; + species_s32 = species; param_4_u8 = param_4; gUnknown_203B270 = MemoryAlloc(sizeof(struct unkStruct_203B270), 8); gUnknown_203B270->unk4 = param_4_u8; @@ -47,7 +47,7 @@ u8 sub_801EE10(u32 param_1,s16 species,struct Move *moves,u32 param_4,u8 *param_ gUnknown_203B270->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32]; gUnknown_203B270->isTeamLeader = gUnknown_203B270->pokeStruct->isTeamLeader; gUnknown_203B270->moves = moves; - gUnknown_203B270->unkB8 = param_5; + gUnknown_203B270->text = text; iVar8 = iVar5 = sub_801F3F8(); four = 4; if (iVar8 < four) { @@ -56,7 +56,7 @@ u8 sub_801EE10(u32 param_1,s16 species,struct Move *moves,u32 param_4,u8 *param_ sub_8006518(gUnknown_203B270->unk58); gUnknown_203B270->unk50 = param_6; gUnknown_203B270->unk58[param_6] = gUnknown_80DC25C; - if (gUnknown_203B270->unkB8 != 0) { + if (gUnknown_203B270->text != NULL) { gUnknown_203B270->unk54 = sub_8006544(param_6); gUnknown_203B270->unk58[gUnknown_203B270->unk54] = gUnknown_80DC274; } diff --git a/src/gulpin_shop.c b/src/gulpin_shop.c index 9f3b8dd90..f0d500d3f 100644 --- a/src/gulpin_shop.c +++ b/src/gulpin_shop.c @@ -151,7 +151,7 @@ void sub_801EA28(void) { switch (gGulpinShopWork->state) { case 0: - sub_801EE10(2, gGulpinShopWork->speciesNum, gGulpinShopWork->moves, 0, &gUnknown_80DC164, 0); + sub_801EE10(2, gGulpinShopWork->speciesNum, gGulpinShopWork->moves, 0, gUnknown_80DC164, 0); break; case 1: sub_801F1B0(1, 0); @@ -331,4 +331,4 @@ void sub_801EDC0(void) break; } } -} \ No newline at end of file +} diff --git a/src/gulpin_shop_1.c b/src/gulpin_shop_1.c index ac068fd28..5e1724614 100644 --- a/src/gulpin_shop_1.c +++ b/src/gulpin_shop_1.c @@ -6,28 +6,30 @@ #include "input.h" #include "text.h" #include "team_inventory.h" - -extern u8 gUnknown_202E5D8[]; -extern u8 gUnknown_202E1C8[]; +#include "menu_input.h" +#include "gulpin_shop.h" +#include "moves.h" // size: 0x1E0 struct unkStruct_203B27C { - bool32 isAsleep; - s32 state; - u32 unk8; - s16 unkC; - struct PokemonStruct *unk10; - u8 unk14; + /* 0x0 */ bool32 isAsleep; + /* 0x4 */ s32 state; + /* 0x8 */ u32 fallbackState; + /* 0xC */ s16 speciesNum; + /* 0x10 */ struct PokemonStruct *pokeStruct; + /* 0x14 */ bool8 isNextMoveLinked; u8 unk15; u8 unk16; u8 unk17; - u32 unk18; + /* 0x18 */ u32 moveIndex; u16 unk1C; u16 unk1E; u16 unk20; - u8 fill22[0x64 - 0x22]; - u16 unk64[4]; + u16 fill22; + /* 0x24 */ struct Move moves[4]; + u8 fill44[0x20]; + /* 0x64 */ u16 sequenceMoveIDs[4]; u32 unk6C; u32 unk70; u32 unk74; @@ -49,6 +51,53 @@ struct unkStruct_203B27C extern struct unkStruct_203B27C *gUnknown_203B27C; +extern u8 gAvailablePokemonNames[]; +extern u8 gUnknown_202DFE8[]; +extern u8 gUnknown_202E1C8[]; +extern u8 gUnknown_202E5D8[]; + +extern struct UnkTextStruct2 gUnknown_80DC31C; +extern struct UnkTextStruct2 gUnknown_80DC334; +extern struct UnkTextStruct2 gUnknown_80DC31C; +extern struct UnkTextStruct2 gUnknown_80DC34C; +extern struct UnkTextStruct2 gUnknown_80DC37C; + +extern const u8 *gGulpinDialogue[2][25]; +extern u8 gUnknown_80DC394[]; +extern u8 gGulpinProceed[]; +extern u8 gGulpinInfo[]; +extern u8 *gUnknown_80D4934[]; +extern u8 *gUnknown_80D4920[]; +extern u8 *gUnknown_80D4928[]; +extern u8 gGulpinForget[]; +extern u8 gGulpinLink[]; +extern u8 gGulpinDelink[]; +extern u8 gGulpinSet[]; +extern u8 gGulpinDeselect[]; +extern u8 *gUnknown_80D4970[]; +extern u8 gUnknown_80DC428[]; +extern u8 gUnknown_80DC438[]; +extern u8 gUnknown_80DC448[]; + +void CreateGulpinShopMenu(void); +extern void sub_8014248(const u8 *, u32, u32, const struct MenuItem *, void *, u32, u32, struct OpenedFile **, u32); +extern void sub_80141B4(const u8 *, u32, struct OpenedFile **, u32); +extern void DrawTeamMoneyBox(u32); +void sub_8020950(void); +void sub_8020900(void); +bool8 sub_801F808(u16 *moveIDs); +void sub_801F700(void); +bool8 sub_801F428(s16 index, s32 param_2); +void sub_801F5F0(u8 r0); +extern void sub_8023DA4(void); +extern void sub_8023868(u32, u32, u32, u32); +extern void sub_8023B7C(u32); +extern void sub_801F1B0(u32, u32); +extern void sub_801F280(u32); +void sub_8024458(u32, u32); +extern void sub_801BEEC(s16); +extern void sub_801EE10(u32, s16, struct Move *, u32, void *, u32); +void sub_80208B0(void); void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon); extern struct PokemonStruct *GetPlayerPokemonStruct(void); extern void sub_801FDA8(s32); @@ -72,6 +121,10 @@ extern void sub_8020A34(void); extern void sub_801FDC0(void); extern void sub_801FF28(void); +extern void CreateGulpinLinkMenu(void); +extern void sub_802069C(void); +extern void sub_80205D0(void); + bool8 sub_801FB50(bool32 isAsleep) { char *name; @@ -165,7 +218,7 @@ u32 sub_801FC40(void) break; case 0xd: if (gUnknown_203B27C->unk15 == 1) { - gTeamInventory_203B460->teamMoney -= 0x96; + gTeamInventory_203B460->teamMoney -= 150; } return 3; default: @@ -191,3 +244,438 @@ void sub_801FDA8(s32 newState) sub_801FDC0(); sub_801FF28(); } + +void sub_801FDC0(void) +{ + s32 index; + + sub_8006518(gUnknown_203B27C->unk180); + switch(gUnknown_203B27C->state) + { + case 0x2: + gUnknown_203B27C->unk180[0].unk0 = 0x80; + gUnknown_203B27C->unk180[1].unk0 = 0x80; + gUnknown_203B27C->unk180[2].unk0 = 0x80; + gUnknown_203B27C->unk180[3] = gUnknown_80DC37C; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B27C->unk180, 1, 0); + break; + case 0x11: + sub_80205D0(); + gUnknown_203B27C->unk180[2] = gUnknown_80DC334; + sub_8012CAC(&gUnknown_203B27C->unk180[2], gUnknown_203B27C->unk7C); + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B27C->unk180, 1, 1); + break; + case 0x17: + sub_802069C(); + gUnknown_203B27C->unk180[2] = gUnknown_80DC334; + sub_8012CAC(&gUnknown_203B27C->unk180[2], gUnknown_203B27C->unk7C); + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B27C->unk180, 1, 1); + break; + case 0x20: + CreateGulpinLinkMenu(); + gUnknown_203B27C->unk180[1] = gUnknown_80DC31C; + gUnknown_203B27C->unk180[2] = gUnknown_80DC34C; + sub_8012CAC(&gUnknown_203B27C->unk180[2], gUnknown_203B27C->unk7C); + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B27C->unk180, 1, 1); + break; + default: + for(index = 0; index < 4; index++) + { + gUnknown_203B27C->unk180[index] = gUnknown_80DC31C; + } + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B27C->unk180, 1, 1); + break; + } +} + +void sub_801FF28(void) +{ + s32 index; + + switch(gUnknown_203B27C->state) + { + case 0: + gUnknown_203B27C->unk6C = 2; + CreateGulpinShopMenu(); + gUnknown_203B27C->fallbackState = 2; + sub_8014248(gGulpinDialogue[gUnknown_203B27C->isAsleep][0],0,gUnknown_203B27C->unk6C,gUnknown_203B27C->unk7C,gUnknown_203B27C->unkBC,4,0,gUnknown_203B27C->unk17C,0xc); + break; + case 1: + CreateGulpinShopMenu(); + gUnknown_203B27C->fallbackState = 2; + sub_8014248(gGulpinDialogue[gUnknown_203B27C->isAsleep][1],0,gUnknown_203B27C->unk6C,gUnknown_203B27C->unk7C,gUnknown_203B27C->unkBC,4,0,gUnknown_203B27C->unk17C,0xc); + break; + case 2: + DrawTeamMoneyBox(3); + break; + case 3: + gUnknown_203B27C->fallbackState = 0x1f; + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][2],0,gUnknown_203B27C->unk17C,0x10d); + break; + case 4: + gUnknown_203B27C->fallbackState = 0x1f; + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][3],0,gUnknown_203B27C->unk17C,0x10d); + break; + case 5: + gUnknown_203B27C->fallbackState = 0x1f; + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][4],0,gUnknown_203B27C->unk17C,0x10d); + break; + case 6: + gUnknown_203B27C->fallbackState = 0x1f; + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][5],0,gUnknown_203B27C->unk17C,0x10d); + break; + case 7: + sub_8020900(); + sub_8014248(gGulpinDialogue[gUnknown_203B27C->isAsleep][6],0,0x10, + gUnknown_203B27C->unk7C,gUnknown_203B27C->unkBC,4,0, + gUnknown_203B27C->unk17C,0xc); + break; + case 8: + sub_8020950(); + sub_8014248(gGulpinDialogue[gUnknown_203B27C->isAsleep][21],0,0xd, + gUnknown_203B27C->unk7C,gUnknown_203B27C->unkBC,4,0, + gUnknown_203B27C->unk17C,0xc); + break; + case 9: + gUnknown_203B27C->fallbackState = 1; + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][22],0,gUnknown_203B27C->unk17C,0x10d); + break; + case 10: + gUnknown_203B27C->fallbackState = 1; + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][23],0,gUnknown_203B27C->unk17C,0x10d); + break; + case 0xb: + gUnknown_203B27C->fallbackState = 1; + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][24],0,gUnknown_203B27C->unk17C,0x10d); + break; + case 0xc: + gUnknown_203B27C->fallbackState = 0xd; + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][7],0,gUnknown_203B27C->unk17C,0x10d); + break; + case 0xe: + gUnknown_203B27C->fallbackState = 0xf; + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][8],0,gUnknown_203B27C->unk17C,0x10d); + break; + case 0xf: + sub_8023868(2,0,0,10); + break; + case 0x10: + sub_8023B7C(1); + break; + case 0x11: + sub_8023DA4(); + sub_8012D60(&gUnknown_203B27C->unkCC,gUnknown_203B27C->unk7C,0,gUnknown_203B27C->unkBC,gUnknown_203B27C->unk70,2); + break; + case 0x12: + sub_8024458(gUnknown_203B27C->speciesNum,2); + break; + case 0x13: + sub_801BEEC(gUnknown_203B27C->speciesNum); + break; + case 0x14: + gUnknown_203B27C->fallbackState = 0x15; + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][9],0,gUnknown_203B27C->unk17C,0x10d); + break; + case 0x15: + sub_801F428(gUnknown_203B27C->speciesNum,0); + break; + case 0x16: + sub_801F5F0(1); + break; + case 0x17: + sub_801F700(); + sub_8012D60(&gUnknown_203B27C->unkCC,gUnknown_203B27C->unk7C,0,gUnknown_203B27C->unkBC,gUnknown_203B27C->unk74,2); + break; + case 0x18: + gUnknown_203B27C->sequenceMoveIDs[0] = gUnknown_203B27C->unk1C; + for(index = 1; index < 4; index++) + { + gUnknown_203B27C->sequenceMoveIDs[index] = 0; + } + sub_801F808(gUnknown_203B27C->sequenceMoveIDs); + break; + case 0x19: + sub_8094060(gUnknown_203B27C->moves,gUnknown_203B27C->pokeStruct->moves); + gUnknown_203B27C->fallbackState = 0x10; + sub_8092C84(gAvailablePokemonNames,gUnknown_203B27C->unk1E); + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][10],0,gUnknown_203B27C->unk17C,0x10d); + break; + case 0x1a: + sub_8094060(gUnknown_203B27C->moves,gUnknown_203B27C->pokeStruct->moves); + gUnknown_203B27C->fallbackState = 0x10; + if (gUnknown_203B27C->isNextMoveLinked) { + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][14],0,gUnknown_203B27C->unk17C,0x10d); + } + else + { + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][13],0,gUnknown_203B27C->unk17C,0x10d); + } + break; + case 0x1d: + if (gUnknown_203B27C->isAsleep == FALSE) { + CreateGulpinShop(FALSE,gUnknown_203B27C->speciesNum,gUnknown_203B27C->moves); + } + else { + CreateGulpinShop(TRUE,gUnknown_203B27C->speciesNum,gUnknown_203B27C->moves); + } + break; + case 0x1b: + gUnknown_203B27C->fallbackState = 0x10; + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][15],0,gUnknown_203B27C->unk17C,0x10d); + break; + case 0x1c: + gUnknown_203B27C->fallbackState = 0x10; + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][16],0,gUnknown_203B27C->unk17C,0x10d); + break; + + case 0x1e: + unk_CopyMoves4To8(gUnknown_203B27C->moves,gUnknown_203B27C->pokeStruct->moves); + sub_801EE10(1,gUnknown_203B27C->speciesNum,gUnknown_203B27C->moves,gUnknown_203B27C->unk15,gUnknown_80DC394,0); + break; + case 0x1f: + sub_801F1B0(1,gUnknown_203B27C->unk15); + break; + case 0x20: + sub_801F280(0); + sub_8012D60(&gUnknown_203B27C->unkCC,gUnknown_203B27C->unk7C,0,gUnknown_203B27C->unkBC,gUnknown_203B27C->unk78,2); + break; + case 0x21: + GetLinkedSequence(gUnknown_203B27C->moveIndex,gUnknown_203B27C->moves,gUnknown_203B27C->sequenceMoveIDs); + sub_801F808(gUnknown_203B27C->sequenceMoveIDs); + break; + case 0x22: + sub_80208B0(); + sub_8092C84(gUnknown_202DFE8,gUnknown_203B27C->unk20); + if (gUnknown_203B27C->isNextMoveLinked) { + sub_8014248(gGulpinDialogue[gUnknown_203B27C->isAsleep][18],0,0x11,gUnknown_203B27C->unk7C,gUnknown_203B27C->unkBC,4,0, + gUnknown_203B27C->unk17C,0xc); + } + else { + sub_8014248(gGulpinDialogue[gUnknown_203B27C->isAsleep][17],0,0x11,gUnknown_203B27C->unk7C,gUnknown_203B27C->unkBC,4,0, + gUnknown_203B27C->unk17C,0xc); + } + break; + case 0x23: + gUnknown_203B27C->fallbackState = 0x1f; + sub_8092C84(gUnknown_202DFE8,gUnknown_203B27C->unk20); + if (gUnknown_203B27C->isNextMoveLinked) + { + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][20],0,gUnknown_203B27C->unk17C,0x10d); + } + else + { + sub_80141B4(gGulpinDialogue[gUnknown_203B27C->isAsleep][19],0,gUnknown_203B27C->unk17C,0x10d); + } + break; + } +} + +void CreateGulpinShopMenu(void) +{ + s32 loopMax = 0; + MemoryFill16(gUnknown_203B27C->unkBC, 0, sizeof(gUnknown_203B27C->unkBC)); + gUnknown_203B27C->unk7C[loopMax].text = gGulpinProceed; + gUnknown_203B27C->unk7C[loopMax].menuAction = 2; + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = gGulpinInfo; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0xb; + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = *gUnknown_80D4934; + gUnknown_203B27C->unk7C[loopMax].menuAction = 1; + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = 0x0; + gUnknown_203B27C->unk7C[loopMax].menuAction = 1; +} + +extern u8 gUnknown_80DC3D8[]; +extern u8 gUnknown_80DC3E0[]; +extern u8 gUnknown_80DC3E8[]; +extern u8 gUnknown_80DC3F4[]; +extern u8 *gUnknown_80D4970[]; + +void sub_80205D0(void) +{ + s32 loopMax; + s32 i; + loopMax = 0; + + MemoryFill16(gUnknown_203B27C->unkBC, 0, sizeof(gUnknown_203B27C->unkBC)); + + gUnknown_203B27C->unk7C[loopMax].text = gUnknown_80DC3D8; + gUnknown_203B27C->unk7C[loopMax].menuAction = 4; + + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = gUnknown_80DC3E0; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0xB; + + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = gUnknown_80DC3E8; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0xC; + + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = gUnknown_80DC3F4; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0x3; + + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = NULL; + gUnknown_203B27C->unk7C[loopMax].menuAction = 1; + + for (i = 0; i < loopMax; i++) { + if (gUnknown_203B27C->unkBC[i] == 0 && gUnknown_203B27C->unk7C[i].menuAction == gUnknown_203B27C->unk70) + return; + } + for (i = 0; i < loopMax; i++) { + if (gUnknown_203B27C->unkBC[i] == 0) { + gUnknown_203B27C->unk70 = gUnknown_203B27C->unk7C[i].menuAction; + break; + } + } +} + +void sub_802069C(void) +{ + s32 loopMax; + s32 i; + loopMax = 0; + + MemoryFill16(gUnknown_203B27C->unkBC, 0, sizeof(gUnknown_203B27C->unkBC)); + + gUnknown_203B27C->unk7C[loopMax].text = gUnknown_80DC3F4; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0x3; + + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = *gUnknown_80D4970; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0xB; + + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = NULL; + gUnknown_203B27C->unk7C[loopMax].menuAction = 1; + + for (i = 0; i < loopMax; i++) { + if (gUnknown_203B27C->unkBC[i] == 0 && gUnknown_203B27C->unk7C[i].menuAction == gUnknown_203B27C->unk74) + return; + } + for (i = 0; i < loopMax; i++) { + if (gUnknown_203B27C->unkBC[i] == 0) { + gUnknown_203B27C->unk74 = gUnknown_203B27C->unk7C[i].menuAction; + break; + } + } +} + +void CreateGulpinLinkMenu(void) +{ + s32 loopMax; + s32 i; + loopMax = 0; + + MemoryFill16(gUnknown_203B27C->unkBC, 0, sizeof(gUnknown_203B27C->unkBC)); + + if(gUnknown_203B27C->unk16) + { + if(IsMoveSet(gUnknown_203B27C->moveIndex, gUnknown_203B27C->moves)) + { + gUnknown_203B27C->unk7C[loopMax].text = gGulpinDeselect; + gUnknown_203B27C->unk7C[loopMax].menuAction = 6; + } + else + { + gUnknown_203B27C->unk7C[loopMax].text = gGulpinSet; + gUnknown_203B27C->unk7C[loopMax].menuAction = 5; + } + } + else + { + if(IsMoveEnabled(gUnknown_203B27C->moveIndex, gUnknown_203B27C->moves)) + { + gUnknown_203B27C->unk7C[loopMax].text = gGulpinDeselect; + } + else + { + gUnknown_203B27C->unk7C[loopMax].text = gGulpinSet; + } + gUnknown_203B27C->unk7C[loopMax].menuAction = 7; + } + + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = gGulpinLink; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0x8; + + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = gGulpinDelink; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0x9; + + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = gGulpinForget; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0xA; + + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = *gUnknown_80D4970; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0xB; + + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = NULL; + gUnknown_203B27C->unk7C[loopMax].menuAction = 1; + + for (i = 0; i < loopMax; i++) { + if (gUnknown_203B27C->unkBC[i] == 0 && gUnknown_203B27C->unk7C[i].menuAction == gUnknown_203B27C->unk78) + return; + } + for (i = 0; i < loopMax; i++) { + if (gUnknown_203B27C->unkBC[i] == 0) { + gUnknown_203B27C->unk78 = gUnknown_203B27C->unk7C[i].menuAction; + break; + } + } +} + +void sub_80208B0(void) +{ + s32 loopMax = 0; + MemoryFill16(gUnknown_203B27C->unkBC, 0, sizeof(gUnknown_203B27C->unkBC)); + gUnknown_203B27C->unk7C[loopMax].text = *gUnknown_80D4920; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0x10; + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = *gUnknown_80D4928; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0x11; + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = NULL; + gUnknown_203B27C->unk7C[loopMax].menuAction = 1; +} + +void sub_8020900(void) +{ + s32 loopMax = 0; + MemoryFill16(gUnknown_203B27C->unkBC, 0, sizeof(gUnknown_203B27C->unkBC)); + gUnknown_203B27C->unk7C[loopMax].text = *gUnknown_80D4920; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0x10; + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = *gUnknown_80D4928; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0x11; + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = NULL; + gUnknown_203B27C->unk7C[loopMax].menuAction = -1; +} + +void sub_8020950(void) +{ + s32 loopMax = 0; + MemoryFill16(gUnknown_203B27C->unkBC, 0, sizeof(gUnknown_203B27C->unkBC)); + + gUnknown_203B27C->unk7C[loopMax].text = gUnknown_80DC428; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0xD; + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = gUnknown_80DC438; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0xE; + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = gUnknown_80DC448; + gUnknown_203B27C->unk7C[loopMax].menuAction = 0xF; + loopMax++; + gUnknown_203B27C->unk7C[loopMax].text = NULL; + gUnknown_203B27C->unk7C[loopMax].menuAction = 1; +}