summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan <eroelke@gmail.com>2019-11-19 12:57:11 -0700
committerEvan <eroelke@gmail.com>2019-11-19 12:57:11 -0700
commit3bf1f5e65d41c19fe8a5f67e3c42a709aa86c4e4 (patch)
treee7b76f5c3379713169867e93eb2c579f080475ee
parentd84cf59678d75c50896ba46b3047c65ea5e106d9 (diff)
start shop.c
-rw-r--r--asm/shop.s188
-rw-r--r--ld_script.txt2
-rw-r--r--src/shop.c68
-rw-r--r--sym_ewram.txt2
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