diff options
author | Evan <eroelke@gmail.com> | 2019-11-19 12:57:11 -0700 |
---|---|---|
committer | Evan <eroelke@gmail.com> | 2019-11-19 12:57:11 -0700 |
commit | 3bf1f5e65d41c19fe8a5f67e3c42a709aa86c4e4 (patch) | |
tree | e7b76f5c3379713169867e93eb2c579f080475ee | |
parent | d84cf59678d75c50896ba46b3047c65ea5e106d9 (diff) |
start shop.c
-rw-r--r-- | asm/shop.s | 188 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/shop.c | 68 | ||||
-rw-r--r-- | sym_ewram.txt | 2 |
4 files changed, 119 insertions, 141 deletions
diff --git a/asm/shop.s b/asm/shop.s index bc5eccd64..70c9892a0 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -5,98 +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} @@ -110,7 +18,7 @@ _0809AB88: b _0809ABCE _0809AB8C: movs r4, 0 - ldr r1, _0809ABD4 @ =gUnknown_2039934 + ldr r1, _0809ABD4 @ =gShopData ldrh r0, [r1, 0x10] cmp r4, r0 bcs _0809ABCC @@ -148,14 +56,14 @@ _0809ABCE: pop {r1} bx r1 .align 2, 0 -_0809ABD4: .4byte gUnknown_2039934 +_0809ABD4: .4byte gShopData thumb_func_end sub_809AB7C thumb_func_start sub_809ABD8 sub_809ABD8: @ 809ABD8 push {lr} adds r1, r0, 0 - ldr r2, _0809AC00 @ =gUnknown_2039934 + ldr r2, _0809AC00 @ =gShopData str r1, [r2, 0x4] movs r0, 0 strh r0, [r2, 0x10] @@ -176,16 +84,16 @@ _0809ABFC: pop {r0} bx r0 .align 2, 0 -_0809AC00: .4byte gUnknown_2039934 +_0809AC00: .4byte gShopData thumb_func_end sub_809ABD8 thumb_func_start sub_809AC04 sub_809AC04: @ 809AC04 - ldr r1, _0809AC0C @ =gUnknown_2039934 + ldr r1, _0809AC0C @ =gShopData str r0, [r1] bx lr .align 2, 0 -_0809AC0C: .4byte gUnknown_2039934 +_0809AC0C: .4byte gShopData thumb_func_end sub_809AC04 thumb_func_start sub_809AC10 @@ -313,7 +221,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 +231,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 +322,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 +333,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 +373,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 +416,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 +476,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 +485,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 +630,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 +643,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 +688,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 +704,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 +744,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 +768,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 +814,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 +901,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 +917,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 +966,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 +991,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 +999,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 +1028,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 +1226,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 +1377,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 +1400,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 +1435,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 +1462,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 +1485,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 +2012,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 +2049,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 +2222,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 +2231,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 +2254,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 +2271,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 +2291,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 +2440,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 +2464,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 +2519,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 +2541,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 a6676b100..b3a64df47 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..25b1f2a74 --- /dev/null +++ b/src/shop.c @@ -0,0 +1,68 @@ +#include "global.h" +#include "menu.h" +#include "new_menu_helpers.h" +#include "window.h" +#include "field_specials.h" +#include "task.h" + + + +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_1:5; + u16 unk16_2:7; + //INCOMPLETE +}; + + +// external defines +extern const struct WindowTemplate gUnknown_83DF0BC[]; //sShopMenuWindowTemplates +extern const struct MenuAction gUnknown_83DF09C[]; //sShopMenuActions_BuySellQuit + +extern u8 sub_809AB7C(u8 a); +extern void sub_809AC10(u8 taskId); + +EWRAM_DATA struct ShopData gShopData = {0}; +EWRAM_DATA u8 gUnknown_2039950 = 0; + + + +u8 sub_809AAB0(u8 a0) +{ + u32 v1, v2; + + //gShopData.martType = (sub_809AB7C(a0) & 0xF) | ((u8) gShopData.martType & 0xF0); + gShopData.martType = sub_809AB7C(a0); + gShopData.cursorPos = 0; + if (!(ContextNpcGetTextColor())) + { + v1 = (u16) gShopData.unk16_1; + v1 = ~(0x1F0); + //v1 = (s16) gShopData.unk16_1 & 0xFFFFFE0F; + //v1 = gShopData.unk16_1 & (u32) 0xFFFFFE0F; + //v1 &= 0xFE0F; + v2 = 0x40; + } + else + { + v1 = (u16) gShopData.unk16_1; + v1 = ~(0x1F0); + v2 = 0x50; + } + gShopData.martType = v1 | v2; + 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); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 8ff8247d9..3584e5080 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -316,7 +316,7 @@ gUnknown_20398B8: @ 20398B8 gUnknown_20398BA: @ 20398BA .space 0x7A -gUnknown_2039934: @ 2039934 +gShopData: @ 2039934 .space 0xE gUnknown_2039942: @ 2039942 |