diff options
-rw-r--r-- | asm/shop.s | 306 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/shop.c | 150 |
3 files changed, 194 insertions, 264 deletions
diff --git a/asm/shop.s b/asm/shop.s index bc5eccd64..7512ac369 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -5,228 +5,6 @@ .text - thumb_func_start sub_809AAB0 -sub_809AAB0: @ 809AAB0 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - bl sub_809AB7C - ldr r4, _0809AAE8 @ =gUnknown_2039934 - movs r1, 0xF - ands r1, r0 - ldrb r2, [r4, 0x16] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x16] - movs r0, 0 - strh r0, [r4, 0xC] - bl ContextNpcGetTextColor - lsls r0, 24 - cmp r0, 0 - bne _0809AAF0 - ldrh r0, [r4, 0x16] - ldr r1, _0809AAEC @ =0xfffffe0f - ands r1, r0 - movs r0, 0x40 - b _0809AAF8 - .align 2, 0 -_0809AAE8: .4byte gUnknown_2039934 -_0809AAEC: .4byte 0xfffffe0f -_0809AAF0: - ldrh r0, [r4, 0x16] - ldr r1, _0809AB68 @ =0xfffffe0f - ands r1, r0 - movs r0, 0x50 -_0809AAF8: - orrs r1, r0 - strh r1, [r4, 0x16] - ldr r4, _0809AB6C @ =gUnknown_2039950 - ldr r0, _0809AB70 @ =gUnknown_83DF0BC - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0 - bl SetStdWindowBorderStyle - movs r0, 0x2 - movs r1, 0 - bl GetMenuCursorDimensionByFont - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - ldrb r0, [r4] - movs r6, 0x10 - str r6, [sp] - movs r5, 0x3 - str r5, [sp, 0x4] - ldr r1, _0809AB74 @ =gUnknown_83DF09C - str r1, [sp, 0x8] - movs r1, 0x2 - movs r3, 0x2 - bl PrintTextArray - ldrb r0, [r4] - str r6, [sp] - str r5, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl Menu_InitCursor - ldrb r0, [r4] - bl PutWindowTilemap - ldrb r0, [r4] - movs r1, 0x1 - bl CopyWindowToVram - ldr r0, _0809AB78 @ =sub_809AC10 - movs r1, 0x8 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809AB68: .4byte 0xfffffe0f -_0809AB6C: .4byte gUnknown_2039950 -_0809AB70: .4byte gUnknown_83DF0BC -_0809AB74: .4byte gUnknown_83DF09C -_0809AB78: .4byte sub_809AC10 - thumb_func_end sub_809AAB0 - - thumb_func_start sub_809AB7C -sub_809AB7C: @ 809AB7C - push {r4,r5,lr} - cmp r0, 0 - beq _0809AB8C - lsls r0, 24 - lsrs r0, 24 - b _0809ABCE -_0809AB88: - movs r0, 0x1 - b _0809ABCE -_0809AB8C: - movs r4, 0 - ldr r1, _0809ABD4 @ =gUnknown_2039934 - ldrh r0, [r1, 0x10] - cmp r4, r0 - bcs _0809ABCC - ldr r0, [r1, 0x4] - ldrh r0, [r0] - cmp r0, 0 - beq _0809ABCC - adds r5, r1, 0 -_0809ABA0: - ldr r1, [r5, 0x4] - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetPocket - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _0809AB88 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldrh r0, [r5, 0x10] - cmp r4, r0 - bcs _0809ABCC - ldr r0, [r5, 0x4] - lsls r1, r4, 1 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _0809ABA0 -_0809ABCC: - movs r0, 0 -_0809ABCE: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0809ABD4: .4byte gUnknown_2039934 - thumb_func_end sub_809AB7C - - thumb_func_start sub_809ABD8 -sub_809ABD8: @ 809ABD8 - push {lr} - adds r1, r0, 0 - ldr r2, _0809AC00 @ =gUnknown_2039934 - str r1, [r2, 0x4] - movs r0, 0 - strh r0, [r2, 0x10] - ldrh r0, [r1] - cmp r0, 0 - beq _0809ABFC -_0809ABEA: - ldrh r0, [r2, 0x10] - adds r0, 0x1 - strh r0, [r2, 0x10] - ldrh r0, [r2, 0x10] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _0809ABEA -_0809ABFC: - pop {r0} - bx r0 - .align 2, 0 -_0809AC00: .4byte gUnknown_2039934 - thumb_func_end sub_809ABD8 - - thumb_func_start sub_809AC04 -sub_809AC04: @ 809AC04 - ldr r1, _0809AC0C @ =gUnknown_2039934 - str r0, [r1] - bx lr - .align 2, 0 -_0809AC0C: .4byte gUnknown_2039934 - thumb_func_end sub_809AC04 - - thumb_func_start sub_809AC10 -sub_809AC10: @ 809AC10 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl Menu_ProcessInputNoWrapAround - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _0809AC52 - adds r0, 0x1 - cmp r1, r0 - bne _0809AC3C - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_809ACF8 - b _0809AC52 -_0809AC3C: - ldr r4, _0809AC58 @ =gUnknown_83DF09C - bl Menu_GetCursorPos - lsls r0, 24 - lsrs r0, 21 - adds r4, 0x4 - adds r0, r4 - ldr r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 -_0809AC52: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809AC58: .4byte gUnknown_83DF09C - thumb_func_end sub_809AC10 - thumb_func_start sub_809AC5C sub_809AC5C: @ 809AC5C push {r4,lr} @@ -313,7 +91,7 @@ sub_809ACF8: @ 809ACF8 bl sub_809C138 adds r0, r4, 0 bl DestroyTask - ldr r0, _0809AD20 @ =gUnknown_2039934 + ldr r0, _0809AD20 @ =gShopData ldr r0, [r0] cmp r0, 0 beq _0809AD1A @@ -323,7 +101,7 @@ _0809AD1A: pop {r0} bx r0 .align 2, 0 -_0809AD20: .4byte gUnknown_2039934 +_0809AD20: .4byte gShopData thumb_func_end sub_809ACF8 thumb_func_start sub_809AD24 @@ -414,7 +192,7 @@ sub_809ADC0: @ 809ADC0 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _0809ADE0 @ =gUnknown_2039934 + ldr r0, _0809ADE0 @ =gShopData ldrb r0, [r0, 0x16] lsls r0, 28 lsrs r0, 28 @@ -425,7 +203,7 @@ sub_809ADC0: @ 809ADC0 pop {r0} bx r0 .align 2, 0 -_0809ADE0: .4byte gUnknown_2039934 +_0809ADE0: .4byte gShopData thumb_func_end sub_809ADC0 thumb_func_start sub_809ADE4 @@ -465,7 +243,7 @@ sub_809AE14: @ 809AE14 bne _0809AE2C b _0809AF54 _0809AE2C: - ldr r0, _0809AE94 @ =gUnknown_2039934 + ldr r0, _0809AE94 @ =gShopData movs r5, 0 strh r5, [r0, 0xC] strh r5, [r0, 0xE] @@ -508,7 +286,7 @@ _0809AE2C: b _0809AF64 .align 2, 0 _0809AE90: .4byte gMain -_0809AE94: .4byte gUnknown_2039934 +_0809AE94: .4byte gShopData _0809AE98: .4byte sub_809BBC0 _0809AE9C: .4byte gMultiuseListMenuTemplate _0809AEA0: .4byte gTasks @@ -568,7 +346,7 @@ _0809AEAC: movs r2, 0 movs r3, 0 bl FillBgTilemapBufferRect_Palette0 - ldr r0, _0809AF50 @ =gUnknown_2039934 + ldr r0, _0809AF50 @ =gShopData ldrb r0, [r0, 0x16] lsls r0, 28 lsrs r0, 28 @@ -577,7 +355,7 @@ _0809AEAC: b _0809AF5E .align 2, 0 _0809AF4C: .4byte 0x01000100 -_0809AF50: .4byte gUnknown_2039934 +_0809AF50: .4byte gShopData _0809AF54: bl FreeTempTileDataBuffersIfPossible lsls r0, 24 @@ -722,7 +500,7 @@ sub_809B080: @ 809B080 str r0, [sp] movs r0, 0x1 bl DecompressAndCopyTileDataToVram - ldr r0, _0809B0B4 @ =gUnknown_2039934 + ldr r0, _0809B0B4 @ =gShopData ldrb r1, [r0, 0x16] movs r0, 0xF ands r0, r1 @@ -735,7 +513,7 @@ sub_809B080: @ 809B080 b _0809B0CA .align 2, 0 _0809B0B0: .4byte gUnknown_8E85DC8 -_0809B0B4: .4byte gUnknown_2039934 +_0809B0B4: .4byte gShopData _0809B0B8: .4byte gUnknown_8E85EFC _0809B0BC: .4byte gUnknown_2039954 _0809B0C0: @@ -780,7 +558,7 @@ sub_809B10C: @ 809B10C bne _0809B118 movs r2, 0xB _0809B118: - ldr r0, _0809B138 @ =gUnknown_2039934 + ldr r0, _0809B138 @ =gShopData ldrb r1, [r0, 0x16] movs r0, 0xF ands r0, r1 @@ -796,7 +574,7 @@ _0809B118: bl SetBgRectPal b _0809B14E .align 2, 0 -_0809B138: .4byte gUnknown_2039934 +_0809B138: .4byte gShopData _0809B13C: movs r0, 0x8 str r0, [sp] @@ -836,7 +614,7 @@ sub_809B15C: @ 809B15C sub_809B188: @ 809B188 push {r4-r7,lr} ldr r7, _0809B1C0 @ =gUnknown_2039964 - ldr r4, _0809B1C4 @ =gUnknown_2039934 + ldr r4, _0809B1C4 @ =gShopData ldrh r0, [r4, 0x10] adds r0, 0x1 lsls r0, 3 @@ -860,7 +638,7 @@ _0809B1B2: b _0809B2F0 .align 2, 0 _0809B1C0: .4byte gUnknown_2039964 -_0809B1C4: .4byte gUnknown_2039934 +_0809B1C4: .4byte gShopData _0809B1C8: .4byte gUnknown_2039968 _0809B1CC: movs r6, 0 @@ -906,7 +684,7 @@ _0809B1F2: str r0, [r1, 0x4] ldr r5, _0809B2D4 @ =gMultiuseListMenuTemplate str r2, [r5] - ldr r6, _0809B2D8 @ =gUnknown_2039934 + ldr r6, _0809B2D8 @ =gShopData ldrh r0, [r6, 0x10] adds r0, 0x1 movs r1, 0 @@ -993,13 +771,13 @@ _0809B2C8: .4byte gUnknown_2039968 _0809B2CC: .4byte gFameCheckerText_Cancel _0809B2D0: .4byte gUnknown_2039964 _0809B2D4: .4byte gMultiuseListMenuTemplate -_0809B2D8: .4byte gUnknown_2039934 +_0809B2D8: .4byte gShopData _0809B2DC: .4byte sub_809B320 _0809B2E0: .4byte sub_809B408 _0809B2E4: strh r0, [r5, 0xE] _0809B2E6: - ldr r0, _0809B2F8 @ =gUnknown_2039934 + ldr r0, _0809B2F8 @ =gShopData ldr r1, _0809B2FC @ =gMultiuseListMenuTemplate ldrh r1, [r1, 0xE] strh r1, [r0, 0x12] @@ -1009,7 +787,7 @@ _0809B2F0: pop {r1} bx r1 .align 2, 0 -_0809B2F8: .4byte gUnknown_2039934 +_0809B2F8: .4byte gShopData _0809B2FC: .4byte gMultiuseListMenuTemplate thumb_func_end sub_809B188 @@ -1058,7 +836,7 @@ _0809B34A: movs r0, 0x5 movs r1, 0 bl FillWindowPixelBuffer - ldr r6, _0809B388 @ =gUnknown_2039934 + ldr r6, _0809B388 @ =gShopData ldrb r0, [r6, 0x16] movs r4, 0xF ands r4, r0 @@ -1083,7 +861,7 @@ _0809B34A: b _0809B398 .align 2, 0 _0809B384: .4byte gUnknown_8416757 -_0809B388: .4byte gUnknown_2039934 +_0809B388: .4byte gShopData _0809B38C: ldr r0, _0809B3D0 @ =0x00000177 ldrb r1, [r6, 0x17] @@ -1091,7 +869,7 @@ _0809B38C: lsrs r1, 30 bl CreateItemMenuIcon _0809B398: - ldr r3, _0809B3D4 @ =gUnknown_2039934 + ldr r3, _0809B3D4 @ =gShopData ldrb r2, [r3, 0x17] lsls r0, r2, 29 lsrs r0, 30 @@ -1120,7 +898,7 @@ _0809B398: b _0809B400 .align 2, 0 _0809B3D0: .4byte 0x00000177 -_0809B3D4: .4byte gUnknown_2039934 +_0809B3D4: .4byte gShopData _0809B3D8: movs r0, 0x6 movs r1, 0 @@ -1318,13 +1096,13 @@ _0809B568: .4byte gUnknown_8416217 thumb_func_start sub_809B56C sub_809B56C: @ 809B56C - ldr r0, _0809B578 @ =gUnknown_2039934 + ldr r0, _0809B578 @ =gShopData ldrh r0, [r0, 0x16] lsls r0, 23 lsrs r0, 27 bx lr .align 2, 0 -_0809B578: .4byte gUnknown_2039934 +_0809B578: .4byte gShopData thumb_func_end sub_809B56C thumb_func_start sub_809B57C @@ -1469,7 +1247,7 @@ _0809B68C: .4byte CB2_ReturnToField sub_809B690: @ 809B690 push {r4,lr} sub sp, 0x10 - ldr r4, _0809B6C0 @ =gUnknown_2039934 + ldr r4, _0809B6C0 @ =gShopData ldrb r1, [r4, 0x16] movs r0, 0xF ands r0, r1 @@ -1492,7 +1270,7 @@ sub_809B690: @ 809B690 movs r3, 0x68 b _0809B6E2 .align 2, 0 -_0809B6C0: .4byte gUnknown_2039934 +_0809B6C0: .4byte gShopData _0809B6C4: ldrh r0, [r4, 0x10] ldrh r1, [r4, 0x12] @@ -1527,7 +1305,7 @@ _0809B6E2: sub_809B6FC: @ 809B6FC push {r4,lr} sub sp, 0x10 - ldr r4, _0809B738 @ =gUnknown_2039934 + ldr r4, _0809B738 @ =gShopData movs r0, 0x1 strh r0, [r4, 0x18] movs r0, 0x2 @@ -1554,13 +1332,13 @@ sub_809B6FC: @ 809B6FC pop {r0} bx r0 .align 2, 0 -_0809B738: .4byte gUnknown_2039934 +_0809B738: .4byte gShopData thumb_func_end sub_809B6FC thumb_func_start sub_809B73C sub_809B73C: @ 809B73C push {r4,lr} - ldr r4, _0809B760 @ =gUnknown_2039934 + ldr r4, _0809B760 @ =gShopData ldrb r1, [r4, 0x17] movs r0, 0xF8 ands r0, r1 @@ -1577,7 +1355,7 @@ _0809B758: pop {r0} bx r0 .align 2, 0 -_0809B760: .4byte gUnknown_2039934 +_0809B760: .4byte gShopData thumb_func_end sub_809B73C thumb_func_start sub_809B764 @@ -2104,7 +1882,7 @@ sub_809BB44: @ 809BB44 movs r0, 0x3 movs r1, 0x11 bl FillWindowPixelBuffer - ldr r0, _0809BBB0 @ =gUnknown_2039934 + ldr r0, _0809BBB0 @ =gShopData ldr r3, [r0, 0x8] movs r0, 0xFF str r0, [sp] @@ -2141,7 +1919,7 @@ sub_809BB44: @ 809BB44 bx r0 .align 2, 0 _0809BBAC: .4byte gTasks+0x8 -_0809BBB0: .4byte gUnknown_2039934 +_0809BBB0: .4byte gShopData _0809BBB4: .4byte gStringVar1 _0809BBB8: .4byte gStringVar4 _0809BBBC: .4byte gText_TimesStrVar1 @@ -2314,7 +2092,7 @@ sub_809BCA0: @ 809BCA0 lsrs r2, r0, 16 cmp r2, 0x63 bls _0809BD58 - ldr r1, _0809BD54 @ =gUnknown_2039934 + ldr r1, _0809BD54 @ =gShopData movs r0, 0x63 b _0809BD5E .align 2, 0 @@ -2323,9 +2101,9 @@ _0809BD44: .4byte gStringVar1 _0809BD48: .4byte gStringVar4 _0809BD4C: .4byte gUnknown_8416749 _0809BD50: .4byte gSaveBlock1Ptr -_0809BD54: .4byte gUnknown_2039934 +_0809BD54: .4byte gShopData _0809BD58: - ldr r1, _0809BD80 @ =gUnknown_2039934 + ldr r1, _0809BD80 @ =gShopData lsls r0, r2, 24 lsrs r0, 24 _0809BD5E: @@ -2346,7 +2124,7 @@ _0809BD68: pop {r0} bx r0 .align 2, 0 -_0809BD80: .4byte gUnknown_2039934 +_0809BD80: .4byte gShopData _0809BD84: .4byte gTasks _0809BD88: .4byte sub_809BD8C thumb_func_end sub_809BCA0 @@ -2363,7 +2141,7 @@ sub_809BD8C: @ 809BD8C ldr r1, _0809BDCC @ =gTasks+0x8 adds r4, r0, r1 adds r0, r4, 0x2 - ldr r6, _0809BDD0 @ =gUnknown_2039934 + ldr r6, _0809BDD0 @ =gShopData ldrh r1, [r6, 0x14] bl AdjustQuantityAccordingToDPadInput lsls r0, 24 @@ -2383,7 +2161,7 @@ sub_809BD8C: @ 809BD8C b _0809BE88 .align 2, 0 _0809BDCC: .4byte gTasks+0x8 -_0809BDD0: .4byte gUnknown_2039934 +_0809BDD0: .4byte gShopData _0809BDD4: ldr r0, _0809BE3C @ =gMain ldrh r1, [r0, 0x2E] @@ -2532,7 +2310,7 @@ sub_809BF0C: @ 809BF0C movs r5, 0xA4 lsls r5, 2 adds r0, r5 - ldr r1, _0809BF5C @ =gUnknown_2039934 + ldr r1, _0809BF5C @ =gShopData ldr r1, [r1, 0x8] bl RemoveMoney movs r0, 0xF8 @@ -2556,7 +2334,7 @@ sub_809BF0C: @ 809BF0C bx r0 .align 2, 0 _0809BF58: .4byte gSaveBlock1Ptr -_0809BF5C: .4byte gUnknown_2039934 +_0809BF5C: .4byte gShopData _0809BF60: .4byte gTasks _0809BF64: .4byte sub_809BF68 thumb_func_end sub_809BF0C @@ -2611,7 +2389,7 @@ sub_809BF98: @ 809BF98 bl PutWindowTilemap movs r0, 0x5 bl PutWindowTilemap - ldr r0, _0809BFFC @ =gUnknown_2039934 + ldr r0, _0809BFFC @ =gShopData ldrb r1, [r0, 0x16] movs r0, 0xF ands r0, r1 @@ -2633,7 +2411,7 @@ _0809BFDC: bx r0 .align 2, 0 _0809BFF8: .4byte gTasks+0x8 -_0809BFFC: .4byte gUnknown_2039934 +_0809BFFC: .4byte gShopData _0809C000: .4byte sub_809BBC0 thumb_func_end sub_809BF98 diff --git a/ld_script.txt b/ld_script.txt index c23a7f105..4d2ec3326 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -140,6 +140,7 @@ SECTIONS { src/item_menu_icons.o(.text); src/battle_anim_mon_movement.o(.text); src/item.o(.text); + src/shop.o(.text); asm/shop.o(.text); src/berry.o(.text); src/script_menu.o(.text); @@ -441,6 +442,7 @@ SECTIONS { src/item_menu_icons.o(.rodata); src/battle_anim_mon_movement.o(.rodata); src/item.o(.rodata); + src/shop.o(.rodata); data/shop.o(.rodata); src/berry.o(.rodata); src/script_menu.o(.rodata); diff --git a/src/shop.c b/src/shop.c new file mode 100644 index 000000000..3dd9ba102 --- /dev/null +++ b/src/shop.c @@ -0,0 +1,150 @@ +#include "global.h" +#include "menu.h" +#include "new_menu_helpers.h" +#include "window.h" +#include "field_specials.h" +#include "task.h" +#include "item.h" +#include "main.h" +#include "sound.h" + +// enums +// RAM symbols +// Function Declarations +// Data Definitions + + +struct ShopData { + /*0x00*/ void (*callback)(void); + /*0x04*/ const u16 *itemList; + /*0x08*/ u32 itemPrice; + /*0x0C*/ u16 cursorPos; + /*0x0E*/ u16 _; + /*0x10*/ u16 itemCount; + /*0x12*/ u16 field12; + /*0x14*/ u16 field14; + /*0x16*/ u16 martType:4; // 0x1 if tm list + u16 unk16_4:5; + u16 unk16_9:7; + //INCOMPLETE +}; + +EWRAM_DATA struct ShopData gShopData = {0}; +EWRAM_DATA u8 gUnknown_2039950 = 0; + +//Function Declarations +static u8 sub_809AB7C(bool32 a0); +static void sub_809AC10(u8 taskId); + +// external defines +extern const struct WindowTemplate gUnknown_83DF0BC[]; //sShopMenuWindowTemplates +extern const struct MenuAction gUnknown_83DF09C[]; //sShopMenuActions_BuySellQuit + +extern void sub_809AC5C(u8 taskId); +extern void sub_809AC98(u8 taskId); +extern void sub_809ACF8(u8 taskId); + +//Data Definitions +static const struct MenuAction sShopMenuActions_BuySellQuit[] = +{ + {gUnknown_8416738, {.void_u8 = sub_809AC5C}}, + {gUnknown_841673C, {.void_u8 = sub_809AC98}}, + {gUnknown_8416741, {.void_u8 = sub_809ACF8}} + //{ gText_ShopBuy, {.void_u8=Task_HandleShopMenuBuy} }, + //{ gText_ShopSell, {.void_u8=Task_HandleShopMenuSell} }, + //{ gText_ShopQuit, {.void_u8=Task_HandleShopMenuQuit} } +}; + + +// Functions +u8 sub_809AAB0(u8 a0) +{ + gShopData.martType = sub_809AB7C(a0) & 0xF; + gShopData.cursorPos = 0; + if (!(ContextNpcGetTextColor())) + gShopData.unk16_4 = 4; + else + gShopData.unk16_4 = 5; + + gUnknown_2039950 = AddWindow(gUnknown_83DF0BC); //sShop + SetStdWindowBorderStyle(gUnknown_2039950, 0); + PrintTextArray(gUnknown_2039950, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 3, gUnknown_83DF09C); + Menu_InitCursor(gUnknown_2039950, 2, 0, 2, 16, 3, 0); + PutWindowTilemap(gUnknown_2039950); + CopyWindowToVram(gUnknown_2039950, 1); + return CreateTask(sub_809AC10, 8); +} + +static u8 sub_809AB7C(u32 a0) +{ + u16 retVal, i; + if (a0) + return (u8)a0; + goto MAIN; + RETURN_1: + return 1; + + MAIN: + i = 0; + if (i >= gShopData.itemCount) + goto RETURN_0; + else if (gShopData.itemList[0] == 0) + goto RETURN_0; + + while (gShopData.itemList[i] != 0) + { + if (ItemId_GetPocket(gShopData.itemList[i]) == POCKET_TM_CASE) + goto RETURN_1; + ++i; + if (i >= gShopData.itemCount) + goto RETURN_0; + else if (gShopData.itemList[i] == 0) + goto RETURN_0; + } + RETURN_0: + return 0; +} + +//SetShopItemsForSale +void sub_809ABD8(const u16 *items) //I really don't know what GameFreak was thinking here.. +{ + struct ShopData *mart; + //u16 i; + + mart = &gShopData; + mart->itemList = items; + mart->itemCount = 0; + + //i = 0; + if (mart->itemList[0] == 0) + return; + + do { + ++gShopData.itemCount; + //i = gShopData.itemCount; + //} while (mart->itemList[i]); + } while (mart->itemList[gShopData.itemCount]); +} + +//SetShopMenuCallback +void sub_809AC04(MainCallback callback) +{ + gShopData.callback = callback; +} + +//Task_ShopMenu +static void sub_809AC10(u8 taskId) +{ + s8 a0 = Menu_ProcessInputNoWrapAround(); + if (a0 == -2) + return; + + if (a0 == -1) + { + PlaySE(5); + sub_809ACF8(taskId); + return; + } + //gUnknown_83DF09C.func.void_u8(Menu_GetCursorPos()); +} + |