summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/shop.s344
-rw-r--r--include/money.h2
-rw-r--r--src/money.c2
-rw-r--r--src/shop.c179
-rw-r--r--sym_bss.txt2
5 files changed, 162 insertions, 367 deletions
diff --git a/asm/shop.s b/asm/shop.s
index 4c284fc4e..adbd68a2f 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -6,310 +6,6 @@
.text
- thumb_func_start sub_80B389C
-sub_80B389C: @ 80B389C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- mov r8, r2
- lsls r0, 16
- lsrs r2, r0, 16
- mov r9, r2
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r5, _080B392C @ =gStringVar1
- mov r0, r8
- cmp r0, 0
- beq _080B38C8
- movs r0, 0xFC
- strb r0, [r5]
- movs r0, 0x1
- strb r0, [r5, 0x1]
- movs r0, 0x2
- strb r0, [r5, 0x2]
- adds r5, 0x3
-_080B38C8:
- adds r0, r2, 0
- adds r1, r5, 0
- bl CopyItemName
- ldr r6, _080B392C @ =gStringVar1
- lsls r7, r4, 3
- movs r0, 0x1
- str r0, [sp]
- adds r0, r6, 0
- movs r1, 0x70
- adds r2, r7, 0
- movs r3, 0x58
- bl sub_8072A18
- adds r5, r6, 0
- mov r0, r8
- cmp r0, 0
- beq _080B38EE
- adds r5, r6, 0x3
-_080B38EE:
- mov r0, r9
- bl ItemId_GetPrice
- adds r4, r0, 0
- movs r0, 0x1
- bl GetPriceReduction
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 24
- lsrs r0, 24
- asrs r4, r0
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x4
- bl sub_80B79F8
- adds r0, r6, 0
- movs r1, 0xCA
- adds r2, r7, 0
- movs r3, 0x1
- bl MenuPrint_PixelCoords
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B392C: .4byte gStringVar1
- thumb_func_end sub_80B389C
-
- thumb_func_start sub_80B3930
-sub_80B3930: @ 80B3930
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r4, r2, 0
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldr r2, _080B39A0 @ =gStringVar1
- cmp r4, 0
- beq _080B395A
- movs r0, 0xFC
- strb r0, [r2]
- movs r0, 0x1
- strb r0, [r2, 0x1]
- movs r0, 0x2
- strb r0, [r2, 0x2]
- adds r2, 0x3
-_080B395A:
- lsls r6, r3, 5
- ldr r0, _080B39A4 @ =gDecorations + 0x1
- mov r8, r0
- adds r1, r6, r0
- adds r0, r2, 0
- bl StringCopy
- ldr r5, _080B39A0 @ =gStringVar1
- mov r0, r9
- lsls r7, r0, 3
- movs r0, 0x1
- str r0, [sp]
- adds r0, r5, 0
- movs r1, 0x70
- adds r2, r7, 0
- movs r3, 0x58
- bl sub_8072A18
- adds r2, r5, 0
- cmp r4, 0
- beq _080B3986
- adds r2, r5, 0x3
-_080B3986:
- mov r0, r8
- subs r0, 0x1
- adds r3, r6, r0
- ldrh r1, [r3, 0x14]
- ldr r0, _080B39A8 @ =0x00002710
- cmp r1, r0
- bne _080B39AC
- movs r0, 0x19
- mov r1, r9
- adds r2, r4, 0
- bl sub_80B7B34
- b _080B39C2
- .align 2, 0
-_080B39A0: .4byte gStringVar1
-_080B39A4: .4byte gDecorations + 0x1
-_080B39A8: .4byte 0x00002710
-_080B39AC:
- ldrh r1, [r3, 0x14]
- adds r0, r2, 0
- movs r2, 0x4
- bl sub_80B79F8
- adds r0, r5, 0
- movs r1, 0xCA
- adds r2, r7, 0
- movs r3, 0x1
- bl MenuPrint_PixelCoords
-_080B39C2:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3930
-
- thumb_func_start sub_80B39D0
-sub_80B39D0: @ 80B39D0
- push {r4-r6,lr}
- adds r6, r1, 0
- adds r5, r2, 0
- b _080B3A1A
-_080B39D8:
- ldrb r0, [r1, 0xC]
- cmp r0, 0
- bne _080B39FC
- ldrb r0, [r1, 0xB]
- adds r0, r4
- ldr r1, [r1, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r4, 25
- movs r2, 0x80
- lsls r2, 18
- adds r1, r2
- lsrs r1, 24
- adds r2, r5, 0
- bl sub_80B389C
- b _080B3A18
-_080B39FC:
- ldrb r0, [r1, 0xB]
- adds r0, r4
- ldr r1, [r1, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r4, 25
- movs r2, 0x80
- lsls r2, 18
- adds r1, r2
- lsrs r1, 24
- adds r2, r5, 0
- bl sub_80B3930
-_080B3A18:
- adds r0, r4, 0x1
-_080B3A1A:
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bgt _080B3A2E
- ldr r1, _080B3A68 @ =gUnknown_03000708
- ldrb r0, [r1, 0xB]
- adds r0, r4
- ldrb r2, [r1, 0x8]
- cmp r0, r2
- blt _080B39D8
-_080B3A2E:
- cmp r4, 0x8
- beq _080B3A60
- ldr r1, _080B3A68 @ =gUnknown_03000708
- ldrb r0, [r1, 0xB]
- adds r0, r4
- ldrb r1, [r1, 0x8]
- cmp r0, r1
- bne _080B3A60
- lsls r3, r4, 1
- adds r4, r3, 0x2
- lsls r4, 24
- lsrs r4, 24
- adds r3, 0x3
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0xE
- adds r1, r4, 0
- movs r2, 0x1C
- bl MenuFillWindowRectWithBlankTile
- ldr r0, _080B3A6C @ =gOtherText_CancelNoTerminator
- movs r1, 0xE
- adds r2, r4, 0
- bl MenuPrint
-_080B3A60:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3A68: .4byte gUnknown_03000708
-_080B3A6C: .4byte gOtherText_CancelNoTerminator
- thumb_func_end sub_80B39D0
-
- thumb_func_start sub_80B3A70
-sub_80B3A70: @ 80B3A70
- push {r4,lr}
- sub sp, 0x8
- ldr r2, _080B3A9C @ =gUnknown_03000708
- ldrb r1, [r2, 0xB]
- ldrb r0, [r2, 0x9]
- adds r0, r1, r0
- ldrb r1, [r2, 0x8]
- cmp r0, r1
- beq _080B3ACC
- ldrb r4, [r2, 0xC]
- cmp r4, 0
- bne _080B3AA0
- ldr r1, [r2, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl ItemId_GetDescription
- movs r1, 0x30
- str r1, [sp]
- str r4, [sp, 0x4]
- b _080B3ABA
- .align 2, 0
-_080B3A9C: .4byte gUnknown_03000708
-_080B3AA0:
- ldr r1, _080B3AC8 @ =gDecorations
- ldr r2, [r2, 0x4]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 5
- adds r1, 0x18
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x30
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
-_080B3ABA:
- movs r1, 0x4
- movs r2, 0x68
- movs r3, 0x68
- bl sub_8072AB0
- b _080B3AE0
- .align 2, 0
-_080B3AC8: .4byte gDecorations
-_080B3ACC:
- ldr r0, _080B3AE8 @ =gOtherText_QuitShopping
- movs r1, 0x30
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x4
- movs r2, 0x68
- movs r3, 0x68
- bl sub_8072AB0
-_080B3AE0:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3AE8: .4byte gOtherText_QuitShopping
- thumb_func_end sub_80B3A70
-
thumb_func_start sub_80B3AEC
sub_80B3AEC: @ 80B3AEC
push {r4,r5,lr}
@@ -326,7 +22,7 @@ sub_80B3AEC: @ 80B3AEC
cmp r0, 0
beq _080B3B7A
_080B3B06:
- ldr r4, _080B3B60 @ =gUnknown_03000708
+ ldr r4, _080B3B60 @ =gMartInfo
ldrb r1, [r4, 0x9]
adds r0, r1, 0
movs r2, 0
@@ -366,7 +62,7 @@ _080B3B06:
b _080B3B7A
.align 2, 0
_080B3B5C: .4byte gMain
-_080B3B60: .4byte gUnknown_03000708
+_080B3B60: .4byte gMartInfo
_080B3B64: .4byte gTasks
_080B3B68: .4byte gOtherText_FreePremierBall
_080B3B6C: .4byte sub_80B4378
@@ -422,7 +118,7 @@ sub_80B3BD0: @ 80B3BD0
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, _080B3BF0 @ =gUnknown_03000708
+ ldr r0, _080B3BF0 @ =gMartInfo
ldrb r1, [r0, 0x9]
adds r0, r1, 0
movs r2, 0
@@ -433,7 +129,7 @@ sub_80B3BD0: @ 80B3BD0
pop {r0}
bx r0
.align 2, 0
-_080B3BF0: .4byte gUnknown_03000708
+_080B3BF0: .4byte gMartInfo
thumb_func_end sub_80B3BD0
thumb_func_start sub_80B3BF4
@@ -469,7 +165,7 @@ sub_80B3BF4: @ 80B3BF4
lsls r0, 24
cmp r0, 0
beq _080B3D18
- ldr r4, _080B3C88 @ =gUnknown_03000708
+ ldr r4, _080B3C88 @ =gMartInfo
ldrb r0, [r4, 0xC]
cmp r0, 0
bne _080B3CAC
@@ -502,7 +198,7 @@ sub_80B3BF4: @ 80B3BF4
_080B3C7C: .4byte gBGTilemapBuffers + 0x800
_080B3C80: .4byte gSaveBlock1
_080B3C84: .4byte gUnknown_020386A0
-_080B3C88: .4byte gUnknown_03000708
+_080B3C88: .4byte gMartInfo
_080B3C8C: .4byte gTasks
_080B3C90: .4byte gOtherText_HereYouGo
_080B3C94: .4byte sub_80B3B80
@@ -619,7 +315,7 @@ sub_80B3D7C: @ 80B3D7C
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, _080B3DC0 @ =gUnknown_03000708
+ ldr r0, _080B3DC0 @ =gMartInfo
ldrb r1, [r0, 0x9]
adds r0, r1, 0
movs r2, 0
@@ -645,7 +341,7 @@ sub_80B3D7C: @ 80B3D7C
pop {r0}
bx r0
.align 2, 0
-_080B3DC0: .4byte gUnknown_03000708
+_080B3DC0: .4byte gMartInfo
_080B3DC4: .4byte gBGTilemapBuffers + 0x800
thumb_func_end sub_80B3D7C
@@ -658,7 +354,7 @@ sub_80B3DC8: @ 80B3DC8
lsls r0, 24
lsrs r6, r0, 24
adds r4, r6, 0
- ldr r7, _080B3EA8 @ =gUnknown_03000708
+ ldr r7, _080B3EA8 @ =gMartInfo
ldrb r1, [r7, 0xD]
adds r0, r6, 0
bl sub_80A52C4
@@ -751,7 +447,7 @@ _080B3DEE:
bl DisplayItemMessageOnField
b _080B3EF0
.align 2, 0
-_080B3EA8: .4byte gUnknown_03000708
+_080B3EA8: .4byte gMartInfo
_080B3EAC: .4byte gMain
_080B3EB0: .4byte gUnknown_020386A0
_080B3EB4: .4byte gTasks
@@ -802,7 +498,7 @@ sub_80B3EFC: @ 80B3EFC
bl MenuDrawTextWindow
adds r0, r5, 0
bl sub_80B37F8
- ldr r6, _080B3F7C @ =gUnknown_03000708
+ ldr r6, _080B3F7C @ =gMartInfo
ldrb r0, [r6, 0xB]
ldrb r1, [r6, 0x9]
adds r0, r1
@@ -845,7 +541,7 @@ _080B3F62:
bx r0
.align 2, 0
_080B3F78: .4byte gTasks
-_080B3F7C: .4byte gUnknown_03000708
+_080B3F7C: .4byte gMartInfo
_080B3F80: .4byte gSaveBlock1
_080B3F84: .4byte sub_80B3DC8
thumb_func_end sub_80B3EFC
@@ -1053,7 +749,7 @@ _080B4102:
ands r1, r0
cmp r1, 0x40
bne _080B414C
- ldr r4, _080B413C @ =gUnknown_03000708
+ ldr r4, _080B413C @ =gMartInfo
ldrb r0, [r4, 0x9]
cmp r0, 0
bne _080B4140
@@ -1074,7 +770,7 @@ _080B411E:
.align 2, 0
_080B4134: .4byte gPaletteFade
_080B4138: .4byte gMain
-_080B413C: .4byte gUnknown_03000708
+_080B413C: .4byte gMartInfo
_080B4140:
movs r0, 0x5
bl PlaySE
@@ -1084,7 +780,7 @@ _080B4140:
_080B414C:
cmp r1, 0x80
bne _080B41AC
- ldr r4, _080B418C @ =gUnknown_03000708
+ ldr r4, _080B418C @ =gMartInfo
ldrb r0, [r4, 0x9]
cmp r0, 0x7
bne _080B4190
@@ -1111,7 +807,7 @@ _080B417A:
bl sub_80B32A4
b _080B436C
.align 2, 0
-_080B418C: .4byte gUnknown_03000708
+_080B418C: .4byte gMartInfo
_080B4190:
ldrb r2, [r4, 0x8]
cmp r0, r2
@@ -1136,7 +832,7 @@ _080B41AC:
_080B41B8:
movs r0, 0x5
bl PlaySE
- ldr r6, _080B426C @ =gUnknown_03000708
+ ldr r6, _080B426C @ =gMartInfo
ldrb r0, [r6, 0xB]
ldrb r1, [r6, 0x9]
adds r0, r1
@@ -1213,7 +909,7 @@ _080B41CE:
bl DisplayItemMessageOnField
b _080B436C
.align 2, 0
-_080B426C: .4byte gUnknown_03000708
+_080B426C: .4byte gMartInfo
_080B4270: .4byte gUnknown_020386A0
_080B4274: .4byte gSaveBlock1
_080B4278: .4byte gStringVar1
@@ -1452,7 +1148,7 @@ sub_80B4470: @ 80B4470
movs r2, 0
ldr r0, _080B44C8 @ =gUnknown_02038724
mov r12, r0
- ldr r6, _080B44CC @ =gUnknown_03000708
+ ldr r6, _080B44CC @ =gMartInfo
mov r8, r12
adds r4, r6, 0
ldr r1, _080B44D0 @ =gTasks
@@ -1490,7 +1186,7 @@ _080B4492:
b _080B451E
.align 2, 0
_080B44C8: .4byte gUnknown_02038724
-_080B44CC: .4byte gUnknown_03000708
+_080B44CC: .4byte gMartInfo
_080B44D0: .4byte gTasks
_080B44D4:
ldrh r0, [r1, 0xA]
diff --git a/include/money.h b/include/money.h
index 49015ee19..06ac00e92 100644
--- a/include/money.h
+++ b/include/money.h
@@ -7,7 +7,7 @@ void sub_80B79E0(u32 *, u32);
void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2);
void sub_80B7A94(u32 arg0, u8 arg1, u8 x, u8 y);
void sub_80B7AEC(u32, u8 left, u8 top);
-void sub_80B7B34(void);
+void sub_80B7B34(u8, u8, int);
void sub_80B7BEC(u32, u8, u8);
void sub_80B7C14(u32, u8, u8);
void RemoveMoneyLabelObject(u8, u8);
diff --git a/src/money.c b/src/money.c
index 5d9d0b689..67b7eb03f 100644
--- a/src/money.c
+++ b/src/money.c
@@ -148,7 +148,7 @@ void sub_80B7AEC(u32 arg0, u8 left, u8 top)
}
__attribute__((naked))
-void sub_80B7B34(void)
+void sub_80B7B34(u8 var1, u8 var2, int var3)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
diff --git a/src/shop.c b/src/shop.c
index aca48cc2e..91d84363e 100644
--- a/src/shop.c
+++ b/src/shop.c
@@ -20,23 +20,27 @@
#include "field_player_avatar.h"
#include "fieldmap.h"
#include "item.h"
+#include "decoration.h"
-extern void sub_80B39D0(int, int, int);
-extern void sub_80B3A70(void);
+enum
+{
+ MART_TYPE_0, // normal mart
+ MART_TYPE_1,
+ MART_TYPE_2,
+};
-struct UnknownShopStruct
+struct MartInfo
{
/* 0x0 */ void (* callback) (void);
/* 0x4 */ u16 *itemList;
/* 0x8 */ u8 itemCount;
/* 0x9 */ u8 cursor;
- /* 0xA */ u8 unkA;
- /* 0xB */ u8 unkB;
- /* 0xC */ bool8 unkC;
- // unknown size
+ /* 0xA */ u8 numChoices;
+ /* 0xB */ u8 choicesAbove;
+ /* 0xC */ u8 martType;
};
-extern struct UnknownShopStruct gUnknown_03000708;
+extern struct MartInfo gMartInfo;
extern struct MenuAction gUnknown_083CC6D0[];
extern u8 ewram[];
@@ -63,44 +67,47 @@ extern u16 gBuyMenuFrame_Tilemap[];
extern u16 gMenuMoneyPal[16];
extern u16 gUnknown_083CC710[2];
-u8 CreateShopMenu(bool8 var)
+void sub_80B39D0(int var1, int var2, bool32 hasControlCode);
+void sub_80B3A70(void);
+
+u8 CreateShopMenu(u8 martType)
{
ScriptContext2_Enable();
- gUnknown_03000708.unkC = var;
- gUnknown_03000708.cursor = 0;
+ gMartInfo.martType = martType;
+ gMartInfo.cursor = 0;
- if(var == FALSE)
+ if(martType == MART_TYPE_0)
{
- gUnknown_03000708.unkA = 2;
+ gMartInfo.numChoices = 2;
MenuDrawTextWindow(0, 0, 10, 7);
PrintMenuItemsReordered(1, 1, 3, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6E8);
}
else
{
- gUnknown_03000708.unkA = 1;
+ gMartInfo.numChoices = 1;
MenuDrawTextWindow(0, 0, 10, 5);
PrintMenuItemsReordered(1, 1, 2, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6EB);
}
- InitMenu(0, 1, 1, gUnknown_03000708.unkA + 1, 0, 9);
+ InitMenu(0, 1, 1, gMartInfo.numChoices + 1, 0, 9); // add 1 for cancel
return CreateTask(sub_80B2E38, 8);
}
void SetShopMenuCallback(void *callbackPtr)
{
- gUnknown_03000708.callback = callbackPtr;
+ gMartInfo.callback = callbackPtr;
}
void SetShopItemsForSale(u16 *items)
{
u16 i = 0;
- gUnknown_03000708.itemList = items;
- gUnknown_03000708.itemCount = 0;
+ gMartInfo.itemList = items;
+ gMartInfo.itemCount = 0;
- while (gUnknown_03000708.itemList[i])
+ while (gMartInfo.itemList[i])
{
- gUnknown_03000708.itemCount++;
+ gMartInfo.itemCount++;
i++;
}
}
@@ -111,30 +118,30 @@ void sub_80B2E38(u8 var)
if(gMain.newAndRepeatedKeys & DPAD_UP)
{
- if(gUnknown_03000708.cursor) // can move cursor up?
+ if(gMartInfo.cursor) // can move cursor up?
{
PlaySE(0x5);
- gUnknown_03000708.cursor = MoveMenuCursor(-1);
+ gMartInfo.cursor = MoveMenuCursor(-1);
}
}
else if(gMain.newAndRepeatedKeys & DPAD_DOWN)
{
- if(gUnknown_03000708.cursor != gUnknown_03000708.unkA) // can move cursor down?
+ if(gMartInfo.cursor != gMartInfo.numChoices) // can move cursor down?
{
PlaySE(0x5);
- gUnknown_03000708.cursor = MoveMenuCursor(1);
+ gMartInfo.cursor = MoveMenuCursor(1);
}
}
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(0x5);
- if(!gUnknown_03000708.unkC)
+ if(gMartInfo.martType == MART_TYPE_0)
{
- gUnknown_083CC6D0[gUnknown_083CC6E8[gUnknown_03000708.cursor]].func(local);
+ gUnknown_083CC6D0[gUnknown_083CC6E8[gMartInfo.cursor]].func(local);
}
else
{
- gUnknown_083CC6D0[gUnknown_083CC6EB[gUnknown_03000708.cursor]].func(local);
+ gUnknown_083CC6D0[gUnknown_083CC6EB[gMartInfo.cursor]].func(local);
}
}
else if(gMain.newKeys & B_BUTTON)
@@ -164,12 +171,12 @@ void HandleShopMenuQuit(u8 taskId)
{
HandleDestroyMenuCursors();
MenuZeroFillWindowRect(0, 0, 11, 8);
- sub_80BE3BC(); // in tv.s?
+ sub_80BE3BC();
ScriptContext2_Disable();
DestroyTask(taskId);
- if(gUnknown_03000708.callback)
- gUnknown_03000708.callback(); // run the callback if it exists.
+ if(gMartInfo.callback)
+ gMartInfo.callback(); // run the callback if it exists.
}
void sub_80B2FA0(u8 taskId)
@@ -183,7 +190,7 @@ void sub_80B2FA0(u8 taskId)
void ReturnToShopMenuAfterExitingSellMenu(u8 taskId)
{
- CreateShopMenu(gUnknown_03000708.unkC);
+ CreateShopMenu(gMartInfo.martType);
DestroyTask(taskId);
}
@@ -191,7 +198,7 @@ void Task_ExitSellMenu(u8 taskId)
{
if(sub_807D770() == 1)
{
- if(gUnknown_03000708.unkC == 2)
+ if(gMartInfo.martType == MART_TYPE_2)
DisplayItemMessageOnField(taskId, gOtherText_CanIHelpYou, ReturnToShopMenuAfterExitingSellMenu, 0);
else
DisplayItemMessageOnField(taskId, gOtherText_AnythingElse, ReturnToShopMenuAfterExitingSellMenu, 0);
@@ -276,8 +283,8 @@ void BuyMenuDrawGraphics(void)
SetUpWindowConfig(&gWindowConfig_81E6DFC);
InitMenuWindow(&gWindowConfig_81E6DFC);
BuyMenuDrawMapGraphics();
- gUnknown_03000708.cursor = zero;
- gUnknown_03000708.unkB = zero2;
+ gMartInfo.cursor = zero;
+ gMartInfo.choicesAbove = zero2;
MenuZeroFillWindowRect(0, 0, 0x20, 0x20);
sub_80B7C14(gSaveBlock1.money, 0, 0);
sub_80B3764(0, 7);
@@ -306,7 +313,7 @@ void sub_80B3270(void)
{
sub_80F944C();
- if(gUnknown_03000708.itemCount > 7)
+ if(gMartInfo.itemCount > 7)
{
CreateVerticalScrollIndicators(0, 172, 12);
CreateVerticalScrollIndicators(1, 172, 148);
@@ -316,12 +323,12 @@ void sub_80B3270(void)
void sub_80B32A4(void)
{
- if(gUnknown_03000708.unkB == 0)
+ if(gMartInfo.choicesAbove == 0)
sub_80F979C(0, 1);
else
sub_80F979C(0, 0);
- if(gUnknown_03000708.unkB + 7 >= gUnknown_03000708.itemCount)
+ if(gMartInfo.choicesAbove + 7 >= gMartInfo.itemCount)
sub_80F979C(1, 1);
else
sub_80F979C(1, 0);
@@ -493,7 +500,7 @@ void sub_80B3764(int var1, int var2)
{
sub_80B3720();
sub_80B39D0(var1, var2, 0);
- InitMenu(0, 0xE, 0x2, 0x8, gUnknown_03000708.cursor, 0xF);
+ InitMenu(0, 0xE, 0x2, 0x8, gMartInfo.cursor, 0xF);
}
void sub_80B379C(void)
@@ -512,8 +519,8 @@ void sub_80B37EC(void)
void sub_80B37F8(u8 taskId)
{
- u16 itemListIndex = gUnknown_03000708.unkB + gUnknown_03000708.cursor;
- u16 itemId = *(gUnknown_03000708.itemList + itemListIndex);
+ u16 itemListIndex = gMartInfo.choicesAbove + gMartInfo.cursor;
+ u16 itemId = *(gMartInfo.itemList + itemListIndex);
u32 price = (ItemId_GetPrice(itemId) >> GetPriceReduction(1));
sub_80B7A94(gTasks[taskId].data[1] * price, 6, 6, 11);
@@ -524,3 +531,95 @@ void sub_80B37F8(u8 taskId)
MenuPrint(gOtherText_xString1, 1, 11);
sub_80A3FA0(gBGTilemapBuffers[1], 1, 11, 12, 2, 0xC3E1);
}
+
+void sub_80B389C(u16 itemId, u8 var2, bool32 hasControlCode)
+{
+ u8 *stringPtr = gStringVar1;
+
+ if(hasControlCode != FALSE)
+ {
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x1;
+ stringPtr[2] = 0x2;
+ stringPtr += 3;
+ }
+
+ CopyItemName(itemId, stringPtr);
+
+ sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1);
+ stringPtr = gStringVar1;
+
+ if(hasControlCode != FALSE)
+ stringPtr = &gStringVar1[3];
+
+ sub_80B79F8(stringPtr, (ItemId_GetPrice(itemId) >> GetPriceReduction(1)), 0x4);
+ MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 1);
+}
+
+void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode)
+{
+ u8 *stringPtr = gStringVar1;
+
+ if(hasControlCode != FALSE)
+ {
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x1;
+ stringPtr[2] = 0x2;
+ stringPtr += 3;
+ }
+
+ StringCopy(stringPtr, gDecorations[itemId].name);
+ sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1);
+ stringPtr = gStringVar1;
+
+ if(hasControlCode != FALSE)
+ stringPtr = &gStringVar1[3];
+
+ if(gDecorations[itemId].price == 10000)
+ {
+ sub_80B7B34(0x19, var2, hasControlCode); // huh???
+ }
+ else
+ {
+ sub_80B79F8(stringPtr, gDecorations[itemId].price, 0x4);
+ MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 0x1);
+ }
+}
+
+void sub_80B39D0(int var1, int var2, bool32 hasControlCode)
+{
+ u8 i;
+
+ for(i = var1; i <= var2 && gMartInfo.choicesAbove + i < gMartInfo.itemCount; i++)
+ {
+ if(gMartInfo.martType == MART_TYPE_0)
+ sub_80B389C(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode);
+ else
+ sub_80B3930(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode);
+ }
+
+ if(i != 8 && gMartInfo.choicesAbove + i == gMartInfo.itemCount)
+ {
+ MenuFillWindowRectWithBlankTile(0xE, (i << 1) + 2, 0x1C, (i << 1) + 3);
+ MenuPrint(gOtherText_CancelNoTerminator, 0xE, (i << 1) + 2);
+ }
+}
+
+void sub_80B3A70(void)
+{
+ if(gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount)
+ {
+ if(gMartInfo.martType == MART_TYPE_0)
+ {
+ sub_8072AB0(ItemId_GetDescription(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]),
+ 0x4, 0x68, 0x68, 0x30, MART_TYPE_0);
+ }
+ else
+ sub_8072AB0(gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].description, // doesn't consider choicesAbove?
+ 0x4, 0x68, 0x68, 0x30, MART_TYPE_0); // huh??
+ }
+ else
+ {
+ sub_8072AB0(gOtherText_QuitShopping, 0x4, 0x68, 0x68, 0x30, MART_TYPE_0);
+ }
+}
diff --git a/sym_bss.txt b/sym_bss.txt
index a6eaeefe1..03737bdf3 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -81,7 +81,7 @@ gUnknown_030006DC: @ 30006DC
@ shop
-gUnknown_03000708: @ 3000708
+gMartInfo: @ 3000708
.space 0x10
.include "src/record_mixing.o"