.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start BuyMenuDrawMapMetatile @ void BuyMenuDrawMapMetatile(u16 x, u16 y, u16 *src, u8 metatileLayerType) BuyMenuDrawMapMetatile: @ 80E0670 push {r4-r7,lr} adds r7, r2, 0 lsls r3, 24 lsrs r3, 24 adds r2, r3, 0 lsls r0, 17 lsrs r5, r0, 16 lsls r1, 22 lsrs r1, 16 cmp r3, 0x1 beq _080E06C0 cmp r3, 0x1 bgt _080E0690 cmp r3, 0 beq _080E0696 b _080E0728 _080E0690: cmp r2, 0x2 beq _080E06F8 b _080E0728 _080E0696: ldr r6, =gShopDataPtr ldr r0, [r6] movs r2, 0xC0 lsls r2, 5 adds r0, r2 lsls r5, 16 asrs r5, 16 lsls r4, r1, 16 asrs r4, 16 adds r1, r5, 0 adds r2, r4, 0 adds r3, r7, 0 bl BuyMenuDrawMapMetatileLayer ldr r0, [r6] movs r1, 0x80 lsls r1, 4 b _080E06E2 .pool _080E06C0: ldr r6, =gShopDataPtr ldr r0, [r6] movs r2, 0x80 lsls r2, 5 adds r0, r2 lsls r5, 16 asrs r5, 16 lsls r4, r1, 16 asrs r4, 16 adds r1, r5, 0 adds r2, r4, 0 adds r3, r7, 0 bl BuyMenuDrawMapMetatileLayer ldr r0, [r6] movs r1, 0xC0 lsls r1, 5 _080E06E2: adds r0, r1 adds r3, r7, 0 adds r3, 0x8 adds r1, r5, 0 adds r2, r4, 0 bl BuyMenuDrawMapMetatileLayer b _080E0728 .pool _080E06F8: ldr r6, =gShopDataPtr ldr r0, [r6] movs r2, 0x80 lsls r2, 5 adds r0, r2 lsls r5, 16 asrs r5, 16 lsls r4, r1, 16 asrs r4, 16 adds r1, r5, 0 adds r2, r4, 0 adds r3, r7, 0 bl BuyMenuDrawMapMetatileLayer ldr r0, [r6] movs r1, 0x80 lsls r1, 4 adds r0, r1 adds r3, r7, 0 adds r3, 0x8 adds r1, r5, 0 adds r2, r4, 0 bl BuyMenuDrawMapMetatileLayer _080E0728: pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end BuyMenuDrawMapMetatile thumb_func_start BuyMenuDrawMapMetatileLayer @ int BuyMenuDrawMapMetatileLayer(void *tilemapBuffer, s16 xOffset, s16 yOffset, u16 *src) BuyMenuDrawMapMetatileLayer: @ 80E0734 lsls r1, 16 asrs r1, 16 lsls r2, 16 asrs r2, 16 adds r1, r2 lsls r1, 1 adds r1, r0 ldrh r0, [r3] strh r0, [r1] ldrh r0, [r3, 0x2] strh r0, [r1, 0x2] adds r2, r1, 0 adds r2, 0x40 ldrh r0, [r3, 0x4] strh r0, [r2] adds r1, 0x42 ldrh r0, [r3, 0x6] strh r0, [r1] bx lr thumb_func_end BuyMenuDrawMapMetatileLayer thumb_func_start BuyMenuCollectEventObjectData @ void BuyMenuCollectEventObjectData() BuyMenuCollectEventObjectData: @ 80E075C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x18 movs r0, 0 mov r8, r0 mov r4, sp adds r4, 0x2 mov r0, sp adds r1, r4, 0 bl GetXYCoordsOneStepInFrontOfPlayer movs r7, 0 ldr r5, =gShopDataPtr ldr r3, =0x00002010 movs r2, 0x10 _080E0780: ldr r1, [r5] lsls r0, r7, 2 adds r0, r7 lsls r0, 1 adds r1, r3 adds r1, r0 strh r2, [r1] adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0xF bls _080E0780 movs r7, 0 str r4, [sp, 0x8] ldr r1, =gShopDataPtr mov r9, r1 mov r2, sp str r2, [sp, 0x4] _080E07A4: movs r3, 0 adds r4, r7, 0x1 str r4, [sp, 0xC] _080E07AA: ldr r1, =0x0000fffc adds r0, r3, r1 ldr r2, [sp, 0x4] ldrh r2, [r2] adds r0, r2 lsls r0, 16 asrs r0, 16 ldr r4, =0x0000fffe adds r1, r7, r4 ldr r2, [sp, 0x8] ldrh r2, [r2] adds r1, r2 lsls r1, 16 asrs r1, 16 str r3, [sp, 0x10] bl GetEventObjectIdByXY lsls r0, 24 lsrs r6, r0, 24 ldr r3, [sp, 0x10] cmp r6, 0x10 beq _080E08C2 mov r4, r9 ldr r1, [r4] mov r0, r8 lsls r4, r0, 2 adds r0, r4, r0 lsls r5, r0, 1 ldr r2, =0x00002010 adds r0, r1, r2 adds r0, r5 movs r2, 0 mov r10, r2 strh r6, [r0] ldr r2, =0x00002012 adds r0, r1, r2 adds r0, r5 strh r3, [r0] ldr r0, =0x00002014 adds r1, r0 adds r1, r5 strh r7, [r1] ldr r1, [sp, 0x4] movs r2, 0 ldrsh r0, [r1, r2] subs r1, r3, 0x4 adds r0, r1 ldr r1, [sp, 0x8] movs r2, 0 ldrsh r1, [r1, r2] mov r12, r1 subs r1, r7, 0x2 add r1, r12 str r3, [sp, 0x10] bl MapGridGetMetatileLayerTypeAt mov r1, r9 ldr r2, [r1] ldr r1, =0x00002018 adds r1, r2 mov r12, r1 add r12, r5 lsls r0, 24 lsrs r0, 24 mov r1, r12 strh r0, [r1] ldr r1, =gEventObjects lsls r0, r6, 3 adds r0, r6 lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x18] lsls r0, 28 lsrs r0, 28 ldr r3, [sp, 0x10] cmp r0, 0x2 beq _080E0884 cmp r0, 0x2 bgt _080E0870 cmp r0, 0x1 beq _080E0876 b _080E08A4 .pool _080E0870: cmp r0, 0x3 beq _080E0894 b _080E08A4 _080E0876: ldr r4, =0x00002016 adds r0, r2, r4 adds r0, r5 mov r1, r10 b _080E08B6 .pool _080E0884: ldr r4, =0x00002016 adds r0, r2, r4 adds r0, r5 movs r1, 0x1 b _080E08B6 .pool _080E0894: ldr r1, =0x00002016 adds r0, r2, r1 adds r0, r5 movs r1, 0x2 b _080E08B6 .pool _080E08A4: mov r2, r9 ldr r0, [r2] mov r2, r8 adds r1, r4, r2 lsls r1, 1 ldr r4, =0x00002016 adds r0, r4 adds r0, r1 movs r1, 0x3 _080E08B6: strh r1, [r0] mov r0, r8 adds r0, 0x1 lsls r0, 24 lsrs r0, 24 mov r8, r0 _080E08C2: adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0x6 bhi _080E08CE b _080E07AA _080E08CE: ldr r1, [sp, 0xC] lsls r0, r1, 24 lsrs r7, r0, 24 cmp r7, 0x4 bhi _080E08DA b _080E07A4 _080E08DA: add sp, 0x18 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end BuyMenuCollectEventObjectData thumb_func_start BuyMenuDrawEventObjects @ void BuyMenuDrawEventObjects() BuyMenuDrawEventObjects: @ 80E08F0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 movs r7, 0 ldr r0, =gShopDataPtr mov r8, r0 ldr r1, =gEventObjects mov r10, r1 ldr r2, =gSprites mov r9, r2 _080E090A: mov r3, r8 ldr r0, [r3] lsls r1, r7, 2 adds r1, r7 lsls r5, r1, 1 ldr r4, =0x00002010 adds r0, r4 adds r1, r0, r5 movs r2, 0 ldrsh r0, [r1, r2] cmp r0, 0x10 beq _080E09D8 adds r1, r0, 0 lsls r0, r1, 3 adds r0, r1 lsls r0, 2 add r0, r10 ldrb r0, [r0, 0x5] bl GetEventObjectGraphicsInfo mov r4, r8 ldr r3, [r4] ldr r2, =0x00002010 adds r1, r3, r2 adds r1, r5 movs r4, 0 ldrsh r2, [r1, r4] lsls r1, r2, 3 adds r1, r2 lsls r1, 2 add r1, r10 ldrb r4, [r1, 0x5] ldr r2, =0x00002012 adds r1, r3, r2 adds r1, r5 ldrh r2, [r1] lsls r2, 4 adds r2, 0x8 lsls r2, 16 asrs r2, 16 ldr r1, =0x00002014 adds r3, r1 adds r3, r5 ldrh r3, [r3] lsls r3, 4 movs r1, 0xA ldrsh r0, [r0, r1] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 subs r0, 0x30 subs r3, r0 lsls r3, 16 asrs r3, 16 movs r0, 0x2 str r0, [sp] adds r0, r4, 0 ldr r1, =SpriteCallbackDummy bl AddPseudoEventObject lsls r0, 24 lsrs r4, r0, 24 adds r6, r4, 0 ldr r2, =0x00002010 adds r1, r5, r2 mov r3, r8 ldr r0, [r3] adds r0, r1 bl BuyMenuCheckIfEventObjectOverlapsMenuBg lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080E09C0 lsls r2, r4, 4 adds r2, r4 lsls r2, 2 add r2, r9 adds r2, 0x42 ldrb r0, [r2] movs r4, 0x40 negs r4, r4 adds r1, r4, 0 ands r0, r1 movs r1, 0x4 orrs r0, r1 movs r1, 0x3F ands r0, r1 movs r1, 0x40 orrs r0, r1 strb r0, [r2] _080E09C0: lsls r0, r6, 4 adds r0, r6 lsls r0, 2 add r0, r9 mov r2, r8 ldr r1, [r2] ldr r3, =0x00002016 adds r1, r3 adds r1, r5 ldrb r1, [r1] bl StartSpriteAnim _080E09D8: adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0xF bls _080E090A add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end BuyMenuDrawEventObjects thumb_func_start BuyMenuCheckIfEventObjectOverlapsMenuBg BuyMenuCheckIfEventObjectOverlapsMenuBg: @ 80E0A14 push {r4,lr} adds r4, r0, 0 movs r1, 0x2 ldrsh r0, [r4, r1] movs r2, 0x4 ldrsh r1, [r4, r2] adds r1, 0x2 bl BuyMenuCheckForOverlapWithMenuBg lsls r0, 24 cmp r0, 0 bne _080E0A38 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x1 beq _080E0A38 movs r0, 0x1 b _080E0A3A _080E0A38: movs r0, 0 _080E0A3A: pop {r4} pop {r1} bx r1 thumb_func_end BuyMenuCheckIfEventObjectOverlapsMenuBg thumb_func_start BuyMenuCopyMenuBgToBg1TilemapBuffer @ void BuyMenuCopyMenuBgToBg1TilemapBuffer() BuyMenuCopyMenuBgToBg1TilemapBuffer: @ 80E0A40 push {r4-r6,lr} ldr r0, =gShopDataPtr ldr r0, [r0] movs r1, 0x80 lsls r1, 4 adds r4, r0, r1 adds r3, r0, 0 movs r1, 0 ldr r0, =0x0000c3e3 adds r6, r0, 0 ldr r5, =0x000003ff _080E0A56: lsls r0, r1, 16 asrs r2, r0, 16 lsls r1, r2, 1 adds r0, r1, r3 ldrh r0, [r0] cmp r0, 0 beq _080E0A6A adds r1, r4 adds r0, r6 strh r0, [r1] _080E0A6A: adds r0, r2, 0x1 lsls r0, 16 lsrs r1, r0, 16 asrs r0, 16 cmp r0, r5 ble _080E0A56 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end BuyMenuCopyMenuBgToBg1TilemapBuffer thumb_func_start BuyMenuCheckForOverlapWithMenuBg @ bool8 BuyMenuCheckForOverlapWithMenuBg(u16 x, u16 y) BuyMenuCheckForOverlapWithMenuBg: @ 80E0A88 push {lr} ldr r2, =gShopDataPtr ldr r2, [r2] lsls r0, 1 lsls r1, 6 adds r1, r0 lsls r1, 1 adds r1, r2 ldrh r0, [r1] cmp r0, 0 bne _080E0AC0 adds r0, r1, 0 adds r0, 0x40 ldrh r0, [r0] cmp r0, 0 bne _080E0AC0 ldrh r0, [r1, 0x2] cmp r0, 0 bne _080E0AC0 adds r0, r1, 0 adds r0, 0x42 ldrh r0, [r0] cmp r0, 0 bne _080E0AC0 movs r0, 0x1 b _080E0AC2 .pool _080E0AC0: movs r0, 0 _080E0AC2: pop {r1} bx r1 thumb_func_end BuyMenuCheckForOverlapWithMenuBg thumb_func_start Task_BuyMenu @ void Task_BuyMenu(u8 taskId) Task_BuyMenu: @ 80E0AC8 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r6, r0, 24 lsls r0, r6, 2 adds r0, r6 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r4, r0, r1 ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080E0AEA b _080E0C8E _080E0AEA: ldrb r0, [r4, 0xE] bl ListMenuHandleInputGetItemId adds r5, r0, 0 ldrb r0, [r4, 0xE] ldr r7, =gShopDataPtr ldr r2, [r7] ldr r3, =0x00002008 adds r1, r2, r3 subs r3, 0x2 adds r2, r3 bl ListMenuGetScrollAndRow movs r0, 0x2 negs r0, r0 cmp r5, r0 beq _080E0B24 adds r0, 0x1 cmp r5, r0 bne _080E0B32 b _080E0C8E .pool _080E0B24: movs r0, 0x5 bl PlaySE adds r0, r6, 0 bl ExitBuyMenu b _080E0C8E _080E0B32: movs r0, 0x5 bl PlaySE strh r5, [r4, 0xA] movs r0, 0x2 bl ClearWindowTilemap bl BuyMenuRemoveScrollIndicatorArrows ldrb r0, [r4, 0xE] movs r1, 0x2 bl BuyMenuPrintCursor ldr r0, =gMartInfo ldrb r0, [r0, 0xF] cmp r0, 0 bne _080E0B80 lsls r0, r5, 16 lsrs r0, 16 bl ItemId_GetPrice adds r4, r0, 0 movs r0, 0x1 bl GetPriceReduction ldr r1, [r7] movs r2, 0x80 lsls r2, 6 adds r1, r2 lsls r4, 16 lsrs r4, 16 lsls r0, 24 lsrs r0, 24 asrs r4, r0 str r4, [r1] b _080E0B92 .pool _080E0B80: ldr r1, [r7] movs r3, 0x80 lsls r3, 6 adds r1, r3 ldr r2, =gDecorations lsls r0, r5, 5 adds r0, r2 ldrh r0, [r0, 0x14] str r0, [r1] _080E0B92: ldr r0, =gSaveBlock1Ptr ldr r0, [r0] movs r1, 0x92 lsls r1, 3 adds r0, r1 ldr r2, =gShopDataPtr mov r8, r2 ldr r1, [r2] movs r7, 0x80 lsls r7, 6 adds r1, r7 ldr r1, [r1] bl IsEnoughMoney lsls r0, 24 cmp r0, 0 bne _080E0BD0 ldr r1, =gText_YouDontHaveMoney ldr r2, =BuyMenuReturnToItemList b _080E0C28 .pool _080E0BD0: ldr r4, =gMartInfo ldrb r0, [r4, 0xF] cmp r0, 0 bne _080E0C38 lsls r0, r5, 16 lsrs r5, r0, 16 ldr r1, =gStringVar1 adds r0, r5, 0 bl CopyItemName adds r0, r5, 0 bl ItemId_GetPocket lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 bne _080E0C24 ldr r4, =gStringVar2 adds r0, r5, 0 bl ItemIdToBattleMoveId lsls r0, 16 lsrs r0, 16 movs r1, 0xD muls r1, r0 ldr r0, =gMoveNames adds r1, r0 adds r0, r4, 0 bl StringCopy ldr r1, =gText_Var1CertainlyHowMany2 b _080E0C26 .pool _080E0C24: ldr r1, =gText_Var1CertainlyHowMany _080E0C26: ldr r2, =Task_BuyHowManyDialogueInit _080E0C28: adds r0, r6, 0 bl BuyMenuDisplayMessage b _080E0C8E .pool _080E0C38: ldr r0, =gStringVar1 lsls r1, r5, 5 ldr r2, =gDecorations + 1 adds r1, r2 bl StringCopy ldr r0, =gStringVar2 mov r3, r8 ldr r1, [r3] adds r1, r7 ldr r1, [r1] movs r2, 0 movs r3, 0x6 bl ConvertIntToDecimalStringN ldrb r0, [r4, 0xF] cmp r0, 0x1 bne _080E0C7C ldr r0, =gStringVar4 ldr r1, =gText_Var1IsItThatllBeVar2 bl StringExpandPlaceholders b _080E0C84 .pool _080E0C7C: ldr r0, =gStringVar4 ldr r1, =gText_YouWantedVar1ThatllBeVar2 bl StringExpandPlaceholders _080E0C84: ldr r1, =gStringVar4 ldr r2, =BuyMenuConfirmPurchase adds r0, r6, 0 bl BuyMenuDisplayMessage _080E0C8E: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end Task_BuyMenu thumb_func_start Task_BuyHowManyDialogueInit @ void Task_BuyHowManyDialogueInit(u8 taskId) Task_BuyHowManyDialogueInit: @ 80E0CA4 push {r4-r6,lr} sub sp, 0x8 lsls r0, 24 lsrs r6, r0, 24 lsls r5, r6, 2 adds r5, r6 lsls r5, 3 ldr r0, =gTasks + 0x8 adds r5, r0 ldrh r0, [r5, 0xA] bl CountTotalItemQuantityInBag adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 movs r0, 0x3 movs r1, 0 movs r2, 0x1 movs r3, 0xD bl SetWindowBorderStyle ldr r0, =gStringVar1 adds r1, r4, 0 movs r2, 0x1 movs r3, 0x4 bl ConvertIntToDecimalStringN ldr r4, =gStringVar4 ldr r1, =gText_InBagVar1 adds r0, r4, 0 bl StringExpandPlaceholders movs r0, 0 str r0, [sp] str r0, [sp, 0x4] movs r0, 0x3 adds r1, r4, 0 movs r2, 0 movs r3, 0x1 bl BuyMenuPrint movs r0, 0x1 strh r0, [r5, 0x2] movs r0, 0x4 movs r1, 0 movs r2, 0x1 movs r3, 0xD bl SetWindowBorderStyle adds r0, r6, 0 bl BuyMenuPrintItemQuantityAndPrice movs r0, 0 bl schedule_bg_copy_tilemap_to_vram ldr r0, =gSaveBlock1Ptr ldr r0, [r0] movs r1, 0x92 lsls r1, 3 adds r0, r1 bl GetMoney ldr r1, =gShopDataPtr ldr r4, [r1] movs r2, 0x80 lsls r2, 6 adds r1, r4, r2 ldr r1, [r1] bl __udivsi3 lsls r0, 16 lsrs r1, r0, 16 cmp r1, 0x63 bls _080E0D60 ldr r0, =0x0000200a adds r1, r4, r0 movs r0, 0x63 strb r0, [r1] b _080E0D66 .pool _080E0D60: ldr r2, =0x0000200a adds r0, r4, r2 strb r1, [r0] _080E0D66: ldr r0, =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 ldr r0, =Task_BuyHowManyDialogueHandleInput str r0, [r1] add sp, 0x8 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end Task_BuyHowManyDialogueInit thumb_func_start Task_BuyHowManyDialogueHandleInput @ void Task_BuyHowManyDialogueHandleInput(u8 taskId) Task_BuyHowManyDialogueHandleInput: @ 80E0D88 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 adds r4, r6, 0 lsls r0, r6, 2 adds r0, r6 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r5, r0, r1 adds r0, r5, 0x2 ldr r7, =gShopDataPtr ldr r1, [r7] ldr r2, =0x0000200a adds r1, r2 ldrb r1, [r1] bl AdjustQuantityAccordingToDPadInput lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080E0DF0 ldrh r0, [r5, 0xA] bl ItemId_GetPrice adds r4, r0, 0 movs r0, 0x1 bl GetPriceReduction ldr r1, [r7] movs r2, 0x80 lsls r2, 6 adds r1, r2 lsls r4, 16 lsrs r4, 16 lsls r0, 24 lsrs r0, 24 asrs r4, r0 movs r2, 0x2 ldrsh r0, [r5, r2] muls r0, r4 str r0, [r1] adds r0, r6, 0 bl BuyMenuPrintItemQuantityAndPrice b _080E0EA4 .pool _080E0DF0: ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080E0E74 movs r0, 0x5 bl PlaySE movs r0, 0x4 movs r1, 0 bl sub_8198070 movs r0, 0x3 movs r1, 0 bl sub_8198070 movs r0, 0x4 bl ClearWindowTilemap movs r0, 0x3 bl ClearWindowTilemap movs r0, 0x1 bl PutWindowTilemap ldrh r0, [r5, 0xA] ldr r1, =gStringVar1 bl CopyItemName ldr r0, =gStringVar2 movs r2, 0x2 ldrsh r1, [r5, r2] movs r2, 0 movs r3, 0x2 bl ConvertIntToDecimalStringN ldr r0, =gStringVar3 ldr r1, [r7] movs r2, 0x80 lsls r2, 6 adds r1, r2 ldr r1, [r1] movs r2, 0 movs r3, 0x6 bl ConvertIntToDecimalStringN ldr r1, =gText_Var1AndYouWantedVar2 ldr r2, =BuyMenuConfirmPurchase adds r0, r6, 0 bl BuyMenuDisplayMessage b _080E0EA4 .pool _080E0E74: movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _080E0EA4 movs r0, 0x5 bl PlaySE movs r0, 0x4 movs r1, 0 bl sub_8198070 movs r0, 0x3 movs r1, 0 bl sub_8198070 movs r0, 0x4 bl ClearWindowTilemap movs r0, 0x3 bl ClearWindowTilemap adds r0, r4, 0 bl BuyMenuReturnToItemList _080E0EA4: pop {r4-r7} pop {r0} bx r0 thumb_func_end Task_BuyHowManyDialogueHandleInput thumb_func_start BuyMenuConfirmPurchase @ void BuyMenuConfirmPurchase(u8 taskId) BuyMenuConfirmPurchase: @ 80E0EAC push {lr} sub sp, 0x10 lsls r0, 24 lsrs r0, 24 ldr r1, =gUnknown_08589AA8 movs r2, 0 str r2, [sp] movs r2, 0x1 str r2, [sp, 0x4] movs r2, 0xD str r2, [sp, 0x8] ldr r2, =gUnknown_08589A08 str r2, [sp, 0xC] movs r2, 0x1 movs r3, 0 bl CreateYesNoMenuWithCallbacks add sp, 0x10 pop {r0} bx r0 .pool thumb_func_end BuyMenuConfirmPurchase thumb_func_start BuyMenuTryMakePurchase @ void BuyMenuTryMakePurchase(u8 taskId) BuyMenuTryMakePurchase: @ 80E0EDC push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 adds r7, r5, 0 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r4, r0, r1 movs r0, 0x1 bl PutWindowTilemap ldr r6, =gMartInfo ldrb r0, [r6, 0xF] cmp r0, 0 bne _080E0F40 ldrh r0, [r4, 0xA] ldrh r1, [r4, 0x2] bl AddBagItem lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080E0F30 ldr r1, =gText_HereYouGoThankYou ldr r2, =BuyMenuSubtractMoney adds r0, r5, 0 bl BuyMenuDisplayMessage adds r0, r5, 0 bl RecordItemPurchase b _080E0F7A .pool _080E0F30: ldr r1, =gText_NoMoreRoomForThis ldr r2, =BuyMenuReturnToItemList b _080E0F60 .pool _080E0F40: ldrb r0, [r4, 0xA] bl DecorationAdd lsls r0, 24 cmp r0, 0 beq _080E0F70 ldrb r0, [r6, 0xF] cmp r0, 0x1 bne _080E0F5C ldr r1, =gText_ThankYouIllSendItHome b _080E0F5E .pool _080E0F5C: ldr r1, =gText_ThanksIllSendItHome _080E0F5E: ldr r2, =BuyMenuSubtractMoney _080E0F60: adds r0, r5, 0 bl BuyMenuDisplayMessage b _080E0F7A .pool _080E0F70: ldr r1, =gText_SpaceForVar1Full ldr r2, =BuyMenuReturnToItemList adds r0, r7, 0 bl BuyMenuDisplayMessage _080E0F7A: pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end BuyMenuTryMakePurchase thumb_func_start BuyMenuSubtractMoney @ void BuyMenuSubtractMoney(u8 taskId) BuyMenuSubtractMoney: @ 80E0F88 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 movs r0, 0x26 bl IncrementGameStat ldr r5, =gSaveBlock1Ptr ldr r0, [r5] movs r4, 0x92 lsls r4, 3 adds r0, r4 ldr r1, =gShopDataPtr ldr r1, [r1] movs r2, 0x80 lsls r2, 6 adds r1, r2 ldr r1, [r1] bl RemoveMoney movs r0, 0x5F bl PlaySE ldr r0, [r5] adds r0, r4 bl GetMoney adds r1, r0, 0 movs r0, 0 movs r2, 0 bl PrintMoneyAmountInMoneyBox ldr r0, =gMartInfo ldrb r0, [r0, 0xF] cmp r0, 0 bne _080E0FF0 ldr r0, =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 ldr r0, =Task_ReturnToItemListAfterItemPurchase b _080E0FFC .pool _080E0FF0: ldr r0, =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 ldr r0, =Task_ReturnToItemListAfterDecorationPurchase _080E0FFC: str r0, [r1] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end BuyMenuSubtractMoney thumb_func_start Task_ReturnToItemListAfterItemPurchase @ void Task_ReturnToItemListAfterItemPurchase(u8 taskId) Task_ReturnToItemListAfterItemPurchase: @ 80E100C push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r5, r0, r1 ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x3 ands r0, r1 cmp r0, 0 beq _080E1072 movs r0, 0x5 bl PlaySE movs r1, 0xA ldrsh r0, [r5, r1] cmp r0, 0x4 bne _080E106C movs r1, 0x2 ldrsh r0, [r5, r1] cmp r0, 0x9 ble _080E106C movs r0, 0xC movs r1, 0x1 bl AddBagItem lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080E106C ldr r1, =gText_ThrowInPremierBall ldr r2, =BuyMenuReturnToItemList adds r0, r4, 0 bl BuyMenuDisplayMessage b _080E1072 .pool _080E106C: adds r0, r4, 0 bl BuyMenuReturnToItemList _080E1072: pop {r4,r5} pop {r0} bx r0 thumb_func_end Task_ReturnToItemListAfterItemPurchase thumb_func_start Task_ReturnToItemListAfterDecorationPurchase @ void Task_ReturnToItemListAfterDecorationPurchase(u8 taskId) Task_ReturnToItemListAfterDecorationPurchase: @ 80E1078 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x3 ands r0, r1 cmp r0, 0 beq _080E1096 movs r0, 0x5 bl PlaySE adds r0, r4, 0 bl BuyMenuReturnToItemList _080E1096: pop {r4} pop {r0} bx r0 .pool thumb_func_end Task_ReturnToItemListAfterDecorationPurchase thumb_func_start BuyMenuReturnToItemList @ void BuyMenuReturnToItemList(u8 taskId) BuyMenuReturnToItemList: @ 80E10A0 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r5, =gTasks + 0x8 adds r6, r4, r5 movs r0, 0x5 movs r1, 0 bl sub_8197DF8 ldrb r0, [r6, 0xE] movs r1, 0x1 bl BuyMenuPrintCursor movs r0, 0x1 bl PutWindowTilemap movs r0, 0x2 bl PutWindowTilemap movs r0, 0 bl schedule_bg_copy_tilemap_to_vram bl BuyMenuAddScrollIndicatorArrows subs r5, 0x8 adds r4, r5 ldr r0, =Task_BuyMenu str r0, [r4] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end BuyMenuReturnToItemList thumb_func_start BuyMenuPrintItemQuantityAndPrice @ void BuyMenuPrintItemQuantityAndPrice(u8 taskId) BuyMenuPrintItemQuantityAndPrice: @ 80E10EC push {r4,lr} sub sp, 0x8 lsls r0, 24 lsrs r0, 24 lsls r4, r0, 2 adds r4, r0 lsls r4, 3 ldr r0, =gTasks + 0x8 adds r4, r0 movs r0, 0x4 movs r1, 0x11 bl FillWindowPixelBuffer ldr r0, =gShopDataPtr ldr r0, [r0] movs r1, 0x80 lsls r1, 6 adds r0, r1 ldr r3, [r0] movs r0, 0xFF str r0, [sp] movs r0, 0x4 movs r1, 0x26 movs r2, 0x1 bl PrintMoneyAmount ldr r0, =gStringVar1 movs r2, 0x2 ldrsh r1, [r4, r2] movs r2, 0x2 movs r3, 0x2 bl ConvertIntToDecimalStringN ldr r4, =gStringVar4 ldr r1, =gText_xVar1 adds r0, r4, 0 bl StringExpandPlaceholders movs r0, 0 str r0, [sp] str r0, [sp, 0x4] movs r0, 0x4 adds r1, r4, 0 movs r2, 0 movs r3, 0x1 bl BuyMenuPrint add sp, 0x8 pop {r4} pop {r0} bx r0 .pool thumb_func_end BuyMenuPrintItemQuantityAndPrice thumb_func_start ExitBuyMenu @ void ExitBuyMenu(u8 taskId) ExitBuyMenu: @ 80E1168 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r1, =gFieldCallback ldr r0, =MapPostLoadHook_ExitBuyOrSellMenu str r0, [r1] movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, =Task_ExitBuyMenu str r1, [r0] add sp, 0x4 pop {r4} pop {r0} bx r0 .pool thumb_func_end ExitBuyMenu thumb_func_start Task_ExitBuyMenu @ void Task_ExitBuyMenu(u8 taskId) Task_ExitBuyMenu: @ 80E11B0 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080E11D6 bl RemoveMoneyLabelObject bl BuyMenuFreeMemory ldr r0, =CB2_ReturnToField bl SetMainCallback2 adds r0, r4, 0 bl DestroyTask _080E11D6: pop {r4} pop {r0} bx r0 .pool thumb_func_end Task_ExitBuyMenu thumb_func_start ClearItemPurchases @ void ClearItemPurchases() ClearItemPurchases: @ 80E11E4 push {lr} ldr r0, =gUnknown_02039F7C movs r1, 0 strb r1, [r0] ldr r0, =gUnknown_02039F80 movs r1, 0 movs r2, 0xC bl memset pop {r0} bx r0 .pool thumb_func_end ClearItemPurchases thumb_func_start RecordItemPurchase @ void RecordItemPurchase(u8 taskId) RecordItemPurchase: @ 80E1204 push {r4-r7,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, =gTasks + 0x8 adds r4, r1, r0 movs r3, 0 ldr r5, =gUnknown_02039F80 adds r6, r5, 0 _080E121A: lsls r0, r3, 2 adds r2, r0, r6 ldrh r1, [r2] movs r7, 0xA ldrsh r0, [r4, r7] cmp r1, r0 bne _080E1250 ldrh r0, [r2, 0x2] cmp r0, 0 beq _080E1250 adds r1, r0, 0 movs r3, 0x2 ldrsh r0, [r4, r3] adds r0, r1, r0 cmp r0, 0xFF ble _080E1248 movs r0, 0xFF strh r0, [r2, 0x2] b _080E127A .pool _080E1248: ldrh r0, [r4, 0x2] adds r0, r1, r0 strh r0, [r2, 0x2] b _080E127A _080E1250: adds r0, r3, 0x1 lsls r0, 16 lsrs r3, r0, 16 cmp r3, 0x2 bls _080E121A ldr r2, =gUnknown_02039F7C ldrb r0, [r2] cmp r0, 0x2 bhi _080E127A lsls r0, 2 adds r0, r5 ldrh r1, [r4, 0xA] strh r1, [r0] ldrb r0, [r2] lsls r0, 2 adds r0, r5 ldrh r1, [r4, 0x2] strh r1, [r0, 0x2] ldrb r0, [r2] adds r0, 0x1 strb r0, [r2] _080E127A: pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end RecordItemPurchase thumb_func_start CreatePokemartMenu @ void CreatePokemartMenu(u16 *itemsForSale) CreatePokemartMenu: @ 80E1284 push {r4,lr} adds r4, r0, 0 movs r0, 0 bl CreateShopMenu adds r0, r4, 0 bl SetShopItemsForSale bl ClearItemPurchases ldr r0, =EnableBothScriptContexts bl SetShopMenuCallback pop {r4} pop {r0} bx r0 .pool thumb_func_end CreatePokemartMenu thumb_func_start CreateDecorationShop1Menu @ void CreateDecorationShop1Menu(u16 *itemsForSale) CreateDecorationShop1Menu: @ 80E12A8 push {r4,lr} adds r4, r0, 0 movs r0, 0x1 bl CreateShopMenu adds r0, r4, 0 bl SetShopItemsForSale ldr r0, =EnableBothScriptContexts bl SetShopMenuCallback pop {r4} pop {r0} bx r0 .pool thumb_func_end CreateDecorationShop1Menu thumb_func_start CreateDecorationShop2Menu @ void CreateDecorationShop2Menu(u16 *itemsForSale) CreateDecorationShop2Menu: @ 80E12C8 push {r4,lr} adds r4, r0, 0 movs r0, 0x2 bl CreateShopMenu adds r0, r4, 0 bl SetShopItemsForSale ldr r0, =EnableBothScriptContexts bl SetShopMenuCallback pop {r4} pop {r0} bx r0 .pool thumb_func_end CreateDecorationShop2Menu thumb_func_start sub_80E12E8 sub_80E12E8: @ 80E12E8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 mov r9, r1 lsls r0, 24 lsrs r0, 24 lsls r2, 16 lsrs r2, 16 mov r10, r2 ldr r2, =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldrh r0, [r1, 0x10] subs r0, 0x1 lsls r0, 16 lsrs r5, r0, 16 ldrh r0, [r1, 0x12] subs r0, 0x1 lsls r0, 16 lsrs r3, r0, 16 ldrh r4, [r1, 0xA] movs r2, 0xC ldrsh r0, [r1, r2] cmp r0, 0 bne _080E13AC movs r2, 0 lsls r5, 16 str r5, [sp, 0xC] lsls r0, r3, 16 lsls r1, r4, 16 asrs r0, 16 str r0, [sp] asrs r1, 16 str r1, [sp, 0x4] lsls r0, r1, 1 mov r1, r9 adds r7, r0, r1 _080E133C: movs r4, 0 lsls r2, 16 mov r8, r2 asrs r0, r2, 16 ldr r2, [sp] adds r6, r2, r0 _080E1348: ldr r0, [sp, 0xC] asrs r1, r0, 16 lsls r4, 16 asrs r0, r4, 16 adds r5, r1, r0 adds r0, r5, 0 adds r1, r6, 0 bl MapGridGetMetatileIdAt movs r2, 0 ldrsh r1, [r7, r2] lsls r0, 16 asrs r0, 16 cmp r1, r0 bne _080E1390 ldr r0, [sp, 0x4] cmp r0, 0x2 beq _080E1380 ldrh r0, [r7, 0x2] mov r2, r10 orrs r2, r0 adds r0, r5, 0 adds r1, r6, 0 bl MapGridSetMetatileIdAt b _080E1390 .pool _080E1380: mov r1, r9 ldrh r0, [r1] mov r2, r10 orrs r2, r0 adds r0, r5, 0 adds r1, r6, 0 bl MapGridSetMetatileIdAt _080E1390: movs r2, 0x80 lsls r2, 9 adds r0, r4, r2 lsrs r4, r0, 16 asrs r0, 16 cmp r0, 0x2 ble _080E1348 adds r0, r2, 0 add r0, r8 lsrs r2, r0, 16 asrs r0, 16 cmp r0, 0x2 ble _080E133C b _080E1434 _080E13AC: movs r2, 0 lsls r5, 16 str r5, [sp, 0xC] lsls r0, r3, 16 lsls r1, r4, 16 asrs r0, 16 str r0, [sp, 0x8] asrs r7, r1, 16 _080E13BC: movs r4, 0 lsls r2, 16 mov r8, r2 asrs r0, r2, 16 ldr r1, [sp, 0x8] adds r6, r1, r0 _080E13C8: ldr r2, [sp, 0xC] asrs r1, r2, 16 lsls r4, 16 asrs r0, r4, 16 adds r5, r1, r0 adds r0, r5, 0 adds r1, r6, 0 bl MapGridGetMetatileIdAt movs r1, 0x2 subs r1, r7 lsls r1, 1 add r1, r9 movs r2, 0 ldrsh r1, [r1, r2] lsls r0, 16 asrs r0, 16 cmp r1, r0 bne _080E141A cmp r7, 0x2 beq _080E140A movs r0, 0x1 subs r0, r7 lsls r0, 1 add r0, r9 ldrh r0, [r0] mov r2, r10 orrs r2, r0 adds r0, r5, 0 adds r1, r6, 0 bl MapGridSetMetatileIdAt b _080E141A _080E140A: mov r1, r9 ldrh r0, [r1, 0x4] mov r2, r10 orrs r2, r0 adds r0, r5, 0 adds r1, r6, 0 bl MapGridSetMetatileIdAt _080E141A: movs r2, 0x80 lsls r2, 9 adds r0, r4, r2 lsrs r4, r0, 16 asrs r0, 16 cmp r0, 0x2 ble _080E13C8 adds r0, r2, 0 add r0, r8 lsrs r2, r0, 16 asrs r0, 16 cmp r0, 0x2 ble _080E13BC _080E1434: add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80E12E8 thumb_func_start sub_80E1444 sub_80E1444: @ 80E1444 push {r4,r5,lr} lsls r0, 24 lsrs r3, r0, 24 lsls r0, r3, 2 adds r0, r3 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r4, r0, r1 movs r0, 0x1 strh r0, [r4, 0x6] movs r1, 0 ldrsh r0, [r4, r1] cmp r0, 0x6 bhi _080E14DE lsls r0, 2 ldr r1, =_080E1474 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _080E1474: .4byte _080E1490 .4byte _080E1498 .4byte _080E14A0 .4byte _080E14A8 .4byte _080E14B0 .4byte _080E14C4 .4byte _080E14D4 _080E1490: ldr r1, =gUnknown_08589ABA b _080E14C6 .pool _080E1498: ldr r1, =gUnknown_08589AC0 b _080E14C6 .pool _080E14A0: ldr r1, =gUnknown_08589AC6 b _080E14B2 .pool _080E14A8: ldr r1, =gUnknown_08589ACC b _080E14C6 .pool _080E14B0: ldr r1, =gUnknown_08589AD2 _080E14B2: movs r2, 0xC0 lsls r2, 4 adds r0, r3, 0 bl sub_80E12E8 b _080E14DE .pool _080E14C4: ldr r1, =gUnknown_08589AD8 _080E14C6: adds r0, r3, 0 movs r2, 0 bl sub_80E12E8 b _080E14DE .pool _080E14D4: ldr r1, =gUnknown_08589ADE adds r0, r3, 0 movs r2, 0 bl sub_80E12E8 _080E14DE: ldrh r0, [r4] adds r0, 0x1 movs r1, 0x7 ands r0, r1 strh r0, [r4] adds r5, r0, 0 cmp r5, 0 bne _080E1502 bl DrawWholeMapView movs r1, 0x2 ldrsh r0, [r4, r1] adds r0, 0x1 movs r1, 0x3 bl __modsi3 strh r0, [r4, 0x2] strh r5, [r4, 0x6] _080E1502: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_80E1444 thumb_func_start sub_80E150C sub_80E150C: @ 80E150C push {r4-r7,lr} adds r5, r0, 0 lsls r5, 16 lsrs r5, 16 ldr r6, =sub_80E1444 adds r0, r6, 0 movs r1, 0 bl CreateTask adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r7, r0, r1 adds r0, r7, 0 adds r0, 0x8 adds r1, r7, 0 adds r1, 0xA bl PlayerGetDestCoords movs r0, 0 strh r0, [r7] strh r0, [r7, 0x2] strh r5, [r7, 0x4] adds r0, r4, 0 bl _call_via_r6 adds r0, r4, 0 pop {r4-r7} pop {r1} bx r1 .pool thumb_func_end sub_80E150C thumb_func_start sub_80E1558 sub_80E1558: @ 80E1558 push {lr} lsls r0, 24 lsrs r0, 24 bl sub_80E150C ldr r1, =gUnknown_02039F8C strb r0, [r1] pop {r0} bx r0 .pool thumb_func_end sub_80E1558 thumb_func_start sub_80E1570 sub_80E1570: @ 80E1570 push {lr} ldr r0, =gUnknown_02039F8C ldrb r0, [r0] bl DestroyTask pop {r0} bx r0 .pool thumb_func_end sub_80E1570 thumb_func_start sub_80E1584 sub_80E1584: @ 80E1584 push {lr} ldr r2, =gTasks ldr r0, =gUnknown_02039F8C ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r1, r0, r2 movs r2, 0xE ldrsh r0, [r1, r2] cmp r0, 0 bne _080E15B0 movs r2, 0xA ldrsh r0, [r1, r2] cmp r0, 0x2 bne _080E15B0 movs r0, 0 b _080E15B2 .pool _080E15B0: movs r0, 0x1 _080E15B2: pop {r1} bx r1 thumb_func_end sub_80E1584 .align 2, 0 @ Don't pad with nop.