summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvan <eroelke@gmail.com>2019-11-25 15:04:38 -0700
committerEvan <eroelke@gmail.com>2019-11-25 15:04:38 -0700
commitc73f061cc68468c3227be98fd49cba9514bbd567 (patch)
treefb40fbe16c2c57a84a2047d3f6d41624853391bd /src
parent30994831130ec41feea5229b787fe76db792d1b1 (diff)
update ewram
Diffstat (limited to 'src')
-rw-r--r--src/berry_pouch.c2
-rw-r--r--src/buy_menu_helpers.c2
-rw-r--r--src/sea_cottage_special_anim.c24
-rw-r--r--src/shop.c643
-rw-r--r--src/tm_case.c2
5 files changed, 317 insertions, 356 deletions
diff --git a/src/berry_pouch.c b/src/berry_pouch.c
index b8b66c0bc..0ecf43b45 100644
--- a/src/berry_pouch.c
+++ b/src/berry_pouch.c
@@ -1384,7 +1384,7 @@ static void Task_SellBerries_PlaySfxAndRemoveBerries(u8 taskId)
PlaySE(SE_SHOP);
RemoveBagItem(gSpecialVar_ItemId, data[8]);
AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]);
- sub_809C09C(gSpecialVar_ItemId, data[8], 2);
+ RecordItemPurchase(gSpecialVar_ItemId, data[8], 2);
DestroyListMenuTask(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow);
SortAndCountBerries();
SanitizeListMenuSelectionParams();
diff --git a/src/buy_menu_helpers.c b/src/buy_menu_helpers.c
index 44de094b5..1fd160576 100644
--- a/src/buy_menu_helpers.c
+++ b/src/buy_menu_helpers.c
@@ -184,7 +184,7 @@ void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpa
void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback)
{
- DisplayMessageAndContinueTask(taskId, 2, 0x13, 0xE, sub_809B56C(), GetTextSpeedSetting(), text, callback);
+ DisplayMessageAndContinueTask(taskId, 2, 0x13, 0xE, GetMartUnk16_4(), GetTextSpeedSetting(), text, callback);
ScheduleBgCopyTilemapToVram(0);
}
diff --git a/src/sea_cottage_special_anim.c b/src/sea_cottage_special_anim.c
index e9b05a0fc..67fc70209 100644
--- a/src/sea_cottage_special_anim.c
+++ b/src/sea_cottage_special_anim.c
@@ -35,7 +35,29 @@ static const u16 gUnknown_83DF0F8[] = {0x02eb, 0x031e, 0x031c};
#ifdef NONMATCHING
void sub_809C1D8(u8 taskId, const u16* a1, u16 a2)
{
-
+ s16 v1, v2, v3;
+ s16 i, j;
+
+ v1 = gTasks[taskId].data[5] - 1;
+ v2 = gTasks[taskId].data[6] - 1;
+ v3 = gTasks[taskId].data[2];
+
+ if (gTasks[taskId].data[3] == 0)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ for (j = 0; j < 3; j++)
+ {
+ MapGridGetMetatileIdAt(v1 + j, v2 + i);
+ if ()
+ {
+
+ }
+
+ MapGridSetMetatileIdAt
+ }
+ }
+ }
}
#else
NAKED
diff --git a/src/shop.c b/src/shop.c
index 340dcf811..d0b3994a2 100644
--- a/src/shop.c
+++ b/src/shop.c
@@ -44,6 +44,7 @@
#define tItemId data[5]
#define tListTaskId data[7]
+// mart types
enum
{
MART_TYPE_REGULAR = 0,
@@ -52,9 +53,14 @@ enum
MART_TYPE_DECOR2,
};
-// RAM symbols
-// Function Declarations
-// Data Definitions
+// shop view window NPC info enum
+enum
+{
+ EVENT_OBJ_ID,
+ X_COORD,
+ Y_COORD,
+ ANIM_NUM
+};
struct ShopData
{
@@ -71,7 +77,6 @@ struct ShopData
u16 itemSlot:2;
u16 unk16_11:5;
/*0x18*/ u16 unk18;
- //INCOMPLETE
};
struct MartHistory
@@ -92,81 +97,73 @@ struct MartHistory
}; /* size = 0x18 */
+EWRAM_DATA s16 sViewportMapObjects[MAP_OBJECTS_COUNT][4] = {0};
EWRAM_DATA struct ShopData gShopData = {0};
-EWRAM_DATA u8 gUnknown_2039950 = 0; //sShopMenuWindowId
-
-EWRAM_DATA u16 (*gUnknown_2039954)[0x400] = {0}; //gShopTilemapBuffers
-EWRAM_DATA u16 (*gUnknown_2039958)[0x400] = {0};
-EWRAM_DATA u16 (*gUnknown_203995C)[0x400] = {0};
-EWRAM_DATA u16 (*gUnknown_2039960)[0x400] = {0};
-/*
-EWRAM_DATA struct ShopTilemapBuffers *gUnknown_2039954 = 0; //gShopTilemapBuffers
-EWRAM_DATA struct ShopTilemapBuffers *gUnknown_2039958 = 0;
-EWRAM_DATA struct ShopTilemapBuffers *gUnknown_203995C = 0;
-EWRAM_DATA struct ShopTilemapBuffers *gUnknown_2039960 = 0;
-*/
-EWRAM_DATA struct ListMenuItem *gUnknown_2039964 = {0};
-EWRAM_DATA u8 (*gUnknown_2039968)[13] = {0}; //item strings
-
-EWRAM_DATA s16 gUnknown_20398B4[MAP_OBJECTS_COUNT][4] = {0}; //sViewportMapObjects
-EWRAM_DATA struct MartHistory gUnknown_203996C = {0};
+EWRAM_DATA u8 sShopMenuWindowId = 0;
+EWRAM_DATA u16 (*gShopTilemapBuffer1)[0x400] = {0};
+EWRAM_DATA u16 (*gShopTilemapBuffer2)[0x400] = {0};
+EWRAM_DATA u16 (*gShopTilemapBuffer3)[0x400] = {0};
+EWRAM_DATA u16 (*gShopTilemapBuffer4)[0x400] = {0};
+EWRAM_DATA struct ListMenuItem *sShopMenuListMenu = {0};
+EWRAM_DATA u8 (*sShopMenuItemStrings)[13] = {0};
+EWRAM_DATA struct MartHistory gShopMenuHistory = {0};
//Function Declarations
-static u8 sub_809AAB0(u8 a0);
-static u8 sub_809AB7C(bool32 a0);
-static void sub_809ABD8(const u16 *items);
-static void sub_809AC04(MainCallback callback);
-static void sub_809AC10(u8 taskId);
-static void sub_809AC5C(u8 taskId);
-static void sub_809AC98(u8 taskId);
-static void sub_809ACD4(void);
-static void sub_809ACF8(u8 taskId);
-static void sub_809AD24(void);
-static void sub_809AD40(u8 taskId);
-static void sub_809AD74(void);
-static void sub_809AD8C(u8 taskId);
-static void sub_809ADC0(u8 taskId); //ShowShopMenuAfterExitingBuyOrSellMenu
-static void sub_809ADE4(void);
-static void sub_809AE00(void);
-static void sub_809AE14(void);
-static bool8 sub_809AF6C(void);
-static void sub_809AFD0(void); //BuyMenuInitBgs
-static void sub_809B080(void);
+static u8 CreateShopMenu(u8 a0);
+static u8 GetMartTypeFromItemList(bool32 a0);
+static void SetShopItemsForSale(const u16 *items);
+static void SetShopMenuCallback(MainCallback callback);
+static void Task_ShopMenu(u8 taskId);
+static void Task_HandleShopMenuBuy(u8 taskId);
+static void Task_HandleShopMenuSell(u8 taskId);
+static void CB2_GoToSellMenu(void);
+static void Task_HandleShopMenuQuit(u8 taskId);
+static void ClearShopMenuWindow(void);
+static void Task_GoToBuyOrSellMenu(u8 taskId);
+static void MapPostLoadHook_ReturnToShopMenu(void);
+static void Task_ReturnToShopMenu(u8 taskId);
+static void ShowShopMenuAfterExitingBuyOrSellMenu(u8 taskId);
+static void CB2_BuyMenu(void);
+static void VBlankCB_BuyMenu(void);
+static void CB2_InitBuyMenu(void);
+static bool8 InitShopData(void);
+static void BuyMenuInitBgs(void);
+static void BuyMenuDecompressBgGraphics(void);
static void sub_809B10C(bool32 a0);
-static void sub_809B15C(void); //BuyMenuDrawGraphics();
-static bool8 sub_809B188(void); //BuyMenuBuildListMenuTemplate
-static void sub_809B300(struct ListMenuItem *list, u16 index, u8* dst);
-static void sub_809B320(s32 item, bool8 onInit, struct ListMenu *list);
-static void sub_809B408(u8 windowId, s32 itemId, u8 y);
-static void sub_809B494(s32 item);
-static void sub_809B57C(u8 listTaskId, u8 a1);
-static void sub_809B59C(u8 y, u8 a1);
-static void sub_809B604(void);
-static void sub_809B670(void);
-static void sub_809B690(void);
-static void sub_809B6FC(void);
-static void sub_809B73C(void);
+static void BuyMenuDrawGraphics(void);
+static bool8 BuyMenuBuildListMenuTemplate(void);
+static void PokeMartWriteNameAndIdAt(struct ListMenuItem *list, u16 index, u8* dst);
+static void BuyMenuPrintItemDescriptionAndShowItemIcon(s32 item, bool8 onInit, struct ListMenu *list);
+static void BuyMenuPrintPriceInList(u8 windowId, s32 itemId, u8 y);
+static void LoadTmHmNameInMart(s32 item);
+static void BuyMenuPrintCursor(u8 listTaskId, u8 a1);
+static void BuyMenuPrintCursorAtYPosition(u8 y, u8 a1);
+static void BuyMenuFreeMemory(void);
+static void SetShopExitCallback(void);
+static void BuyMenuAddScrollIndicatorArrows(void);
+static void BuyQuantityAddScrollIndicatorArrows(void);
+static void BuyMenuRemoveScrollIndicatorArrows(void);
static void sub_809B764(void);
-static void sub_809B778(void);
-static void sub_809B850(s16 x, s16 y, const u16 *src, u8 metatileLayerType);
-static void sub_809B904(u16 *dest, s16 offset1, s16 offset2, const u16 *src);
-static void sub_809B92C(void);
-static void sub_809BA40(void);
-static void sub_809BAFC(void);
-static void sub_809BB44(u8 taskId);
-static void sub_809BBC0(u8 taskId);
-static void sub_809BCA0(u8 taskId);
-static void sub_809BD8C(u8 taskId);
-static void sub_809BE90(u8 taskId);
-static void sub_809BEA4(u8 taskId);
-static void sub_809BF0C(u8 taskId);
-static void sub_809BF68(u8 taskId);
-static void sub_809BF98(u8 taskId);
-static void sub_809C004(u8 taskId);
-static void sub_809C04C(u8 taskId);
+static void BuyMenuDrawMapBg(void);
+static void BuyMenuDrawMapMetatile(s16 x, s16 y, const u16 *src, u8 metatileLayerType);
+static void BuyMenuDrawMapMetatileLayer(u16 *dest, s16 offset1, s16 offset2, const u16 *src);
+static void BuyMenuCollectEventObjectData(void);
+static void BuyMenuDrawEventObjects(void);
+static void BuyMenuCopyTilemapData(void);
+static void BuyMenuPrintItemQuantityAndPrice(u8 taskId);
+static void Task_BuyMenu(u8 taskId);
+static void Task_BuyHowManyDialogueInit(u8 taskId);
+static void Task_BuyHowManyDialogueHandleInput(u8 taskId);
+static void CreateBuyMenuConfirmPurchaseWindow(u8 taskId);
+static void BuyMenuTryMakePurchase(u8 taskId);
+static void BuyMenuSubtractMoney(u8 taskId);
+static void Task_ReturnToItemListAfterItemPurchase(u8 taskId);
+static void BuyMenuReturnToItemList(u8 taskId);
+static void ExitBuyMenu(u8 taskId);
+static void Task_ExitBuyMenu(u8 taskId);
static void nullsub_52(u8 taskId);
static void nullsub_53(void);
-static void sub_809C138(void);
+static void RecordQuestLogItemPurchase(void);
// external defines
extern u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y);
@@ -189,15 +186,15 @@ extern const u32 gUnknown_8E86170[]; //gBuyMenuFrame_Pal
static const struct MenuAction gUnknown_83DF09C[] = // sShopMenuActions_BuySellQuit
{
- {gText_ShopBuy, {.void_u8 = sub_809AC5C}},
- {gText_ShopSell, {.void_u8 = sub_809AC98}},
- {gText_ShopQuit, {.void_u8 = sub_809ACF8}}
+ {gText_ShopBuy, {.void_u8 = Task_HandleShopMenuBuy}},
+ {gText_ShopSell, {.void_u8 = Task_HandleShopMenuSell}},
+ {gText_ShopQuit, {.void_u8 = Task_HandleShopMenuQuit}}
};
static const struct YesNoFuncTable gUnknown_83DF0B4[] = //sShopMenuActions_BuyQuit
{
- sub_809BEA4, //Task_HandleShopMenuBuy,
- sub_809BF98 //Task_HandleShopMenuQuit
+ BuyMenuTryMakePurchase, //Task_HandleShopMenuBuy,
+ BuyMenuReturnToItemList //Task_HandleShopMenuQuit
};
static const struct WindowTemplate gUnknown_83DF0BC[] = //sShopMenuWindowTemplates
@@ -255,26 +252,25 @@ static const struct BgTemplate gUnknown_83DF0C4[4] = //sShopBuyMenuBgTemplat
// Functions
-// CreateShopMenu
-static u8 sub_809AAB0(u8 a0)
+static u8 CreateShopMenu(u8 a0)
{
- gShopData.martType = sub_809AB7C(a0) & 0xF;
+ gShopData.martType = GetMartTypeFromItemList(a0) & 0xF;
gShopData.selectedRow = 0;
if (!(ContextNpcGetTextColor()))
gShopData.unk16_4 = 4;
else
gShopData.unk16_4 = 5;
- gUnknown_2039950 = AddWindow(gUnknown_83DF0BC); //sShopMenuWindowTemplates
- 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);
+ sShopMenuWindowId = AddWindow(gUnknown_83DF0BC); //sShopMenuWindowTemplates
+ SetStdWindowBorderStyle(sShopMenuWindowId, 0);
+ PrintTextArray(sShopMenuWindowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 3, gUnknown_83DF09C);
+ Menu_InitCursor(sShopMenuWindowId, 2, 0, 2, 16, 3, 0);
+ PutWindowTilemap(sShopMenuWindowId);
+ CopyWindowToVram(sShopMenuWindowId, 1);
+ return CreateTask(Task_ShopMenu, 8);
}
-static u8 sub_809AB7C(u32 a0)
+static u8 GetMartTypeFromItemList(u32 a0)
{
u16 retVal, i;
if (a0)
@@ -304,35 +300,27 @@ static u8 sub_809AB7C(u32 a0)
return 0;
}
-//SetShopItemsForSale
-static void sub_809ABD8(const u16 *items) //I really don't know what GameFreak was thinking here..
+static void SetShopItemsForSale(const u16 *items)
{
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
-static void sub_809AC04(MainCallback callback)
+static void SetShopMenuCallback(MainCallback callback)
{
gShopData.callback = callback;
}
-//Task_ShopMenu
-static void sub_809AC10(u8 taskId)
+static void Task_ShopMenu(u8 taskId)
{
s8 input = Menu_ProcessInputNoWrapAround();
@@ -342,7 +330,7 @@ static void sub_809AC10(u8 taskId)
break;
case MENU_B_PRESSED:
PlaySE(SE_SELECT);
- sub_809ACF8(taskId);
+ Task_HandleShopMenuQuit(taskId);
break;
default:
gUnknown_83DF09C[Menu_GetCursorPos()].func.void_u8(taskId);
@@ -350,47 +338,42 @@ static void sub_809AC10(u8 taskId)
}
}
-//Task_HandleShopMenuBuy
-static void sub_809AC5C(u8 taskId)
+static void Task_HandleShopMenuBuy(u8 taskId)
{
- SetWordTaskArg(taskId, 0xE, (u32)sub_809AE14);
+ SetWordTaskArg(taskId, 0xE, (u32)CB2_InitBuyMenu);
fade_screen(1, 0);
- gTasks[taskId].func = sub_809AD40;
+ gTasks[taskId].func = Task_GoToBuyOrSellMenu;
}
-//Task_HandleShopMenuSell
-static void sub_809AC98(u8 taskId)
+static void Task_HandleShopMenuSell(u8 taskId)
{
- SetWordTaskArg(taskId, 0xE, (u32)sub_809ACD4);
+ SetWordTaskArg(taskId, 0xE, (u32)CB2_GoToSellMenu);
fade_screen(1, 0);
- gTasks[taskId].func = sub_809AD40;
+ gTasks[taskId].func = Task_GoToBuyOrSellMenu;
}
-//CB2_GoToSellMenu
-static void sub_809ACD4(void)
+static void CB2_GoToSellMenu(void)
{
sub_8107DB4(2, POCKET_POKE_BALLS, CB2_ReturnToField);
- gFieldCallback = sub_809AD74;
+ gFieldCallback = MapPostLoadHook_ReturnToShopMenu;
}
-//Task_HandleShopMenuQuit
-static void sub_809ACF8(u8 taskId)
+static void Task_HandleShopMenuQuit(u8 taskId)
{
- sub_809AD24();
- sub_809C138();
+ ClearShopMenuWindow();
+ RecordQuestLogItemPurchase();
DestroyTask(taskId);
if (gShopData.callback != 0)
gShopData.callback();
}
-static void sub_809AD24(void)
+static void ClearShopMenuWindow(void)
{
- ClearStdWindowAndFrameToTransparent(gUnknown_2039950, 2);
- RemoveWindow(gUnknown_2039950);
+ ClearStdWindowAndFrameToTransparent(sShopMenuWindowId, 2);
+ RemoveWindow(sShopMenuWindowId);
}
-//Task_GoToBuyOrSellMenu
-static void sub_809AD40(u8 taskId)
+static void Task_GoToBuyOrSellMenu(u8 taskId)
{
if (gPaletteFade.active)
return;
@@ -399,30 +382,26 @@ static void sub_809AD40(u8 taskId)
DestroyTask(taskId);
}
-//MapPostLoadHook_ReturnToShopMenu
-static void sub_809AD74(void)
+static void MapPostLoadHook_ReturnToShopMenu(void)
{
sub_807DC00();
- CreateTask(sub_809AD8C, 8);
+ CreateTask(Task_ReturnToShopMenu, 8);
}
-//Task_ReturnToShopMenu
-static void sub_809AD8C(u8 taskId)
+static void Task_ReturnToShopMenu(u8 taskId)
{
if (field_weather_is_fade_finished() != TRUE)
return;
- DisplayItemMessageOnField(taskId, sub_809B56C(), gText_CanIHelpWithAnythingElse, sub_809ADC0);
+ DisplayItemMessageOnField(taskId, GetMartUnk16_4(), gText_CanIHelpWithAnythingElse, ShowShopMenuAfterExitingBuyOrSellMenu);
}
-//ShowShopMenuAfterExitingBuyOrSellMenu
-static void sub_809ADC0(u8 taskId)
+static void ShowShopMenuAfterExitingBuyOrSellMenu(u8 taskId)
{
- sub_809AAB0(gShopData.martType);
+ CreateShopMenu(gShopData.martType);
DestroyTask(taskId);
}
-//CB2_BuyMenu
-static void sub_809ADE4(void)
+static void CB2_BuyMenu(void)
{
RunTasks();
AnimateSprites();
@@ -431,16 +410,14 @@ static void sub_809ADE4(void)
DoScheduledBgTilemapCopiesToVram();
}
-//VBlankCB_BuyMenu
-static void sub_809AE00(void)
+static void VBlankCB_BuyMenu(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
-//CB2_InitBuyMenu
-static void sub_809AE14(void)
+static void CB2_InitBuyMenu(void)
{
u8 taskId;
switch (gMain.state)
@@ -456,15 +433,15 @@ static void sub_809AE14(void)
ResetTasks();
ClearScheduledBgCopiesToVram();
ResetItemMenuIconState();
- if ((!(sub_809AF6C())) || (!(sub_809B188())))
+ if ((!(InitShopData())) || (!(BuyMenuBuildListMenuTemplate())))
return;
- sub_809AFD0();
+ BuyMenuInitBgs();
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20);
FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 0x20, 0x20);
FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 0x20, 0x20);
FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 0x20, 0x20);
BuyMenuInitWindows(gShopData.martType);
- sub_809B080();
+ BuyMenuDecompressBgGraphics();
gMain.state++;
break;
case 1:
@@ -475,49 +452,47 @@ static void sub_809AE14(void)
default:
gShopData.selectedRow = 0;
gShopData.scrollOffset = 0;
- sub_809B15C(); //BuyMenuDrawGraphics();
- sub_809B690(); //BuyMenuAddScrollIndicatorArrows();
- taskId = CreateTask(sub_809BBC0, 8);
+ BuyMenuDrawGraphics();
+ BuyMenuAddScrollIndicatorArrows();
+ taskId = CreateTask(Task_BuyMenu, 8);
gTasks[taskId].tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
- SetVBlankCallback(sub_809AE00);
- SetMainCallback2(sub_809ADE4);
+ SetVBlankCallback(VBlankCB_BuyMenu);
+ SetMainCallback2(CB2_BuyMenu);
break;
}
}
-//InitShopData
-static bool8 sub_809AF6C(void)
+static bool8 InitShopData(void)
{
- gUnknown_2039954 = Alloc(sizeof(*gUnknown_2039954));
- if (gUnknown_2039954 == 0)
+ gShopTilemapBuffer1 = Alloc(sizeof(*gShopTilemapBuffer1));
+ if (gShopTilemapBuffer1 == 0)
goto CANCEL;
- gUnknown_2039958 = Alloc(sizeof(*gUnknown_2039958));
- if (gUnknown_2039958 == 0)
+ gShopTilemapBuffer2 = Alloc(sizeof(*gShopTilemapBuffer2));
+ if (gShopTilemapBuffer2 == 0)
goto CANCEL;
- gUnknown_203995C = Alloc(sizeof(*gUnknown_203995C));
- if (gUnknown_203995C == 0)
+ gShopTilemapBuffer3 = Alloc(sizeof(*gShopTilemapBuffer3));
+ if (gShopTilemapBuffer3 == 0)
goto CANCEL;
- gUnknown_2039960 = Alloc(sizeof(*gUnknown_2039960));
- if (gUnknown_2039960 == 0)
+ gShopTilemapBuffer4 = Alloc(sizeof(*gShopTilemapBuffer4));
+ if (gShopTilemapBuffer4 == 0)
goto CANCEL;
return TRUE;
CANCEL:
- sub_809B604();
- sub_809B670();
+ BuyMenuFreeMemory();
+ SetShopExitCallback();
return FALSE;
}
-//BuyMenuInitBgs
-static void sub_809AFD0(void)
+static void BuyMenuInitBgs(void)
{
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_83DF0C4, NELEMS(gUnknown_83DF0C4));
- SetBgTilemapBuffer(1, gUnknown_2039958);
- SetBgTilemapBuffer(2, gUnknown_2039960);
- SetBgTilemapBuffer(3, gUnknown_203995C);
+ SetBgTilemapBuffer(1, gShopTilemapBuffer2);
+ SetBgTilemapBuffer(2, gShopTilemapBuffer4);
+ SetBgTilemapBuffer(3, gShopTilemapBuffer3);
SetGpuReg(0x10, 0);
SetGpuReg(0x12, 0);
SetGpuReg(0x14, 0);
@@ -531,18 +506,17 @@ static void sub_809AFD0(void)
ShowBg(0);
ShowBg(1);
ShowBg(2);
- ShowBg(3);
+ ShowBg(3);
}
-//BuyMenuDecompressBgGraphics
-static void sub_809B080(void)
+static void BuyMenuDecompressBgGraphics(void)
{
void* pal;
DecompressAndCopyTileDataToVram(1, gUnknown_8E85DC8, 0x480, 0x3DC, 0);
if ((gShopData.martType) != MART_TYPE_TMHM)
- LZDecompressWram(gUnknown_8E85EFC, gUnknown_2039954); //gBuyMenuFrame_Tilemap
+ LZDecompressWram(gUnknown_8E85EFC, gShopTilemapBuffer1); //gBuyMenuFrame_Tilemap
else
- LZDecompressWram(gUnknown_8E86038, gUnknown_2039954); //gBuyMenuFrame_TmHmTilemap
+ LZDecompressWram(gUnknown_8E86038, gShopTilemapBuffer1); //gBuyMenuFrame_TmHmTilemap
pal = Alloc(0x40);
LZDecompressWram(gUnknown_8E86170, pal);
LoadPalette(pal, 0xB0, 0x20);
@@ -564,11 +538,10 @@ static void sub_809B10C(bool32 a0)
ScheduleBgCopyTilemapToVram(1);
}
-//BuyMenuDrawGraphics
-static void sub_809B15C(void)
+static void BuyMenuDrawGraphics(void)
{
sub_809B764();
- sub_809BAFC();
+ BuyMenuCopyTilemapData();
BuyMenuDrawMoneyBox();
ScheduleBgCopyTilemapToVram(0);
ScheduleBgCopyTilemapToVram(1);
@@ -576,23 +549,22 @@ static void sub_809B15C(void)
ScheduleBgCopyTilemapToVram(3);
}
-//BuyMenuBuildListMenuTemplate
-static bool8 sub_809B188(void)
+static bool8 BuyMenuBuildListMenuTemplate(void)
{
u16 i;
u16 v;
- struct ListMenuItem **list = &gUnknown_2039964;
+ struct ListMenuItem **list = &sShopMenuListMenu;
struct ShopData *mart = &gShopData;
- *list = Alloc((gShopData.itemCount + 1) * sizeof(*gUnknown_2039964));
- if (gUnknown_2039964 == 0)
+ *list = Alloc((gShopData.itemCount + 1) * sizeof(*sShopMenuListMenu));
+ if (sShopMenuListMenu == 0)
goto FREE_MEMORY;
- gUnknown_2039968 = Alloc((gShopData.itemCount + 1) * sizeof(*gUnknown_2039968));
- if (gUnknown_2039968 == 0)
+ sShopMenuItemStrings = Alloc((gShopData.itemCount + 1) * sizeof(*sShopMenuItemStrings));
+ if (sShopMenuItemStrings == 0)
{
FREE_MEMORY:
- sub_809B604();
- sub_809B670();
+ BuyMenuFreeMemory();
+ SetShopExitCallback();
return FALSE;
}
@@ -602,14 +574,14 @@ static bool8 sub_809B188(void)
for (i = 0; i < mart->itemCount; i++)
{
- sub_809B300(&gUnknown_2039964[i], mart->itemList[i], gUnknown_2039968[i]); //PokeMartWriteNameAndIdAt(u16 a0, u16 a1, u8* a2)
+ PokeMartWriteNameAndIdAt(&sShopMenuListMenu[i], mart->itemList[i], sShopMenuItemStrings[i]); //PokeMartWriteNameAndIdAt(u16 a0, u16 a1, u8* a2)
}
ADD_CANCEL:
- StringCopy(gUnknown_2039968[i], gFameCheckerText_Cancel);
- gUnknown_2039964[i].label = gUnknown_2039968[i];
- gUnknown_2039964[i].index = -2;
- gMultiuseListMenuTemplate.items = gUnknown_2039964;
+ StringCopy(sShopMenuItemStrings[i], gFameCheckerText_Cancel);
+ sShopMenuListMenu[i].label = sShopMenuItemStrings[i];
+ sShopMenuListMenu[i].index = -2;
+ gMultiuseListMenuTemplate.items = sShopMenuListMenu;
gMultiuseListMenuTemplate.totalItems = gShopData.itemCount + 1;
gMultiuseListMenuTemplate.windowId = 4;
gMultiuseListMenuTemplate.header_X = 0;
@@ -622,8 +594,8 @@ static bool8 sub_809B188(void)
gMultiuseListMenuTemplate.fillValue = 0;
gMultiuseListMenuTemplate.cursorPal = GetFontAttribute(2, 5);
gMultiuseListMenuTemplate.cursorShadowPal = GetFontAttribute(2, 7);
- gMultiuseListMenuTemplate.moveCursorFunc = sub_809B320;
- gMultiuseListMenuTemplate.itemPrintFunc = sub_809B408;
+ gMultiuseListMenuTemplate.moveCursorFunc = BuyMenuPrintItemDescriptionAndShowItemIcon;
+ gMultiuseListMenuTemplate.itemPrintFunc = BuyMenuPrintPriceInList;
gMultiuseListMenuTemplate.scrollMultiple = 0;
gMultiuseListMenuTemplate.cursorKind = 0;
@@ -641,16 +613,14 @@ static bool8 sub_809B188(void)
return TRUE;
}
-//PokeMartWriteNameAndIdAt
-static void sub_809B300(struct ListMenuItem *list, u16 index, u8* dst)
+static void PokeMartWriteNameAndIdAt(struct ListMenuItem *list, u16 index, u8* dst)
{
CopyItemName(index, dst);
list->label = dst;
list->index = index;
}
-//BuyMenuPrintItemDescriptionAndShowItemIcon
-static void sub_809B320(s32 item, bool8 onInit, struct ListMenu *list)
+static void BuyMenuPrintItemDescriptionAndShowItemIcon(s32 item, bool8 onInit, struct ListMenu *list)
{
const u8 *description;
@@ -676,14 +646,13 @@ static void sub_809B320(s32 item, bool8 onInit, struct ListMenu *list)
else //TM Mart
{
FillWindowPixelBuffer(6, PIXEL_FILL(0));
- sub_809B494(item);
+ LoadTmHmNameInMart(item);
BuyMenuPrint(5, 2, description, 2, 3, 1, 0, 0, 0);
}
}
-//BuyMenuPrintPriceInList
-#ifdef NONMATCHING //this function was written very strangely..
-static void sub_809B408(u8 windowId, s32 item, u8 y)
+#ifdef NONMATCHING
+static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y)
{
u32 len, x;
u8 *loc;
@@ -709,7 +678,7 @@ static void sub_809B408(u8 windowId, s32 item, u8 y)
}
#else
NAKED
-static void sub_809B408(u8 windowId, s32 item, u8 y)
+static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y)
{
asm_unified("\tpush {r4-r6,lr}\n"
"\tsub sp, 0x14\n"
@@ -779,13 +748,7 @@ static void sub_809B408(u8 windowId, s32 item, u8 y)
}
#endif
-
-/*===================================
-MATCHED/TESTED UP UNTIL HERE
-===================================*/
-
-//LoadTmHmNameInMart
-static void sub_809B494(s32 item)
+static void LoadTmHmNameInMart(s32 item)
{
if (item != INDEX_CANCEL)
{
@@ -803,19 +766,17 @@ static void sub_809B494(s32 item)
}
}
-//GetMartUnk16_4
-u8 sub_809B56C(void)
+u8 GetMartUnk16_4(void)
{
return gShopData.unk16_4;
}
-//BuyMenuPrintCursor
-static void sub_809B57C(u8 listTaskId, u8 a1)
+static void BuyMenuPrintCursor(u8 listTaskId, u8 a1)
{
- sub_809B59C(ListMenuGetYCoordForPrintingArrowCursor(listTaskId), a1);
+ BuyMenuPrintCursorAtYPosition(ListMenuGetYCoordForPrintingArrowCursor(listTaskId), a1);
}
-static void sub_809B59C(u8 y, u8 a1)
+static void BuyMenuPrintCursorAtYPosition(u8 y, u8 a1)
{
if (a1 == 0xFF)
{
@@ -828,40 +789,37 @@ static void sub_809B59C(u8 y, u8 a1)
}
}
-//BuyMenuFreeMemory
-static void sub_809B604(void)
+static void BuyMenuFreeMemory(void)
{
- if (gUnknown_2039954 != 0)
- Free(gUnknown_2039954);
+ if (gShopTilemapBuffer1 != 0)
+ Free(gShopTilemapBuffer1);
- if (gUnknown_2039958 != 0)
- Free(gUnknown_2039958);
+ if (gShopTilemapBuffer2 != 0)
+ Free(gShopTilemapBuffer2);
- if (gUnknown_203995C != 0)
- Free(gUnknown_203995C);
+ if (gShopTilemapBuffer3 != 0)
+ Free(gShopTilemapBuffer3);
- if (gUnknown_2039960 != 0)
- Free(gUnknown_2039960);
+ if (gShopTilemapBuffer4 != 0)
+ Free(gShopTilemapBuffer4);
- if (gUnknown_2039964 != 0)
- Free(gUnknown_2039964);
+ if (sShopMenuListMenu != 0)
+ Free(sShopMenuListMenu);
- if (gUnknown_2039968 != 0)
- Free(gUnknown_2039968);
+ if (sShopMenuItemStrings != 0)
+ Free(sShopMenuItemStrings);
FreeAllWindowBuffers();
}
-//SetShopExitCallback
-static void sub_809B670(void)
+static void SetShopExitCallback(void)
{
- gFieldCallback = sub_809AD74;
+ gFieldCallback = MapPostLoadHook_ReturnToShopMenu;
SetMainCallback2(CB2_ReturnToField);
}
-//BuyMenuAddScrollIndicatorArrows
-static void sub_809B690(void)
+static void BuyMenuAddScrollIndicatorArrows(void)
{
if (gShopData.martType != MART_TYPE_TMHM)
{
@@ -875,15 +833,13 @@ static void sub_809B690(void)
}
}
-//BuyQuantityAddScrollIndicatorArrows
-static void sub_809B6FC(void)
+static void BuyQuantityAddScrollIndicatorArrows(void)
{
gShopData.unk18 = 1;
gShopData.unk16_11 = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &gShopData.unk18);
}
-//BuyMenuRemoveScrollIndicatorArrows
-static void sub_809B73C(void)
+static void BuyMenuRemoveScrollIndicatorArrows(void)
{
if ((gShopData.unk16_11) == 0x1F)
return;
@@ -894,13 +850,12 @@ static void sub_809B73C(void)
static void sub_809B764(void)
{
- sub_809B92C();
- sub_809BA40();
- sub_809B778();
+ BuyMenuCollectEventObjectData();
+ BuyMenuDrawEventObjects();
+ BuyMenuDrawMapBg();
}
-//BuyMenuDrawMapBg
-static void sub_809B778(void)
+static void BuyMenuDrawMapBg(void)
{
s16 i;
s16 j;
@@ -924,18 +879,17 @@ static void sub_809B778(void)
if (metatile < NUM_METATILES_IN_PRIMARY)
{
- sub_809B850(i, j, (u16*)mapData->primaryTileset->metatiles + metatile * 8, metatileLayerType);
+ BuyMenuDrawMapMetatile(i, j, (u16*)mapData->primaryTileset->metatiles + metatile * 8, metatileLayerType);
}
else
{
- sub_809B850(i, j, (u16*)mapData->secondaryTileset->metatiles + ((metatile - NUM_METATILES_IN_PRIMARY) * 8), metatileLayerType);
+ BuyMenuDrawMapMetatile(i, j, (u16*)mapData->secondaryTileset->metatiles + ((metatile - NUM_METATILES_IN_PRIMARY) * 8), metatileLayerType);
}
}
}
}
-//BuyMenuDrawMapMetatile
-static void sub_809B850(s16 x, s16 y, const u16 *src, u8 metatileLayerType)
+static void BuyMenuDrawMapMetatile(s16 x, s16 y, const u16 *src, u8 metatileLayerType)
{
u16 offset1 = x * 2;
u16 offset2 = ((y << 0x16) + 0x400000) >> 0x10;
@@ -943,22 +897,21 @@ static void sub_809B850(s16 x, s16 y, const u16 *src, u8 metatileLayerType)
switch (metatileLayerType)
{
case 0:
- sub_809B904(*gUnknown_2039960, offset1, offset2, src);
- sub_809B904(*gUnknown_2039958, offset1, offset2, src + 4);
+ BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer4, offset1, offset2, src);
+ BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer2, offset1, offset2, src + 4);
break;
case 1:
- sub_809B904(*gUnknown_203995C, offset1, offset2, src);
- sub_809B904(*gUnknown_2039960, offset1, offset2, src + 4);
+ BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer3, offset1, offset2, src);
+ BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer4, offset1, offset2, src + 4);
break;
case 2:
- sub_809B904(*gUnknown_203995C, offset1, offset2, src);
- sub_809B904(*gUnknown_2039958, offset1, offset2, src + 4);
+ BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer3, offset1, offset2, src);
+ BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer2, offset1, offset2, src + 4);
break;
}
}
-//BuyMenuDrawMapMetatileLayer
-static void sub_809B904(u16 *dest, s16 offset1, s16 offset2, const u16 *src)
+static void BuyMenuDrawMapMetatileLayer(u16 *dest, s16 offset1, s16 offset2, const u16 *src)
{
// This function draws a whole 2x2 metatile.
dest[offset1 + offset2] = src[0]; // top left
@@ -967,9 +920,7 @@ static void sub_809B904(u16 *dest, s16 offset1, s16 offset2, const u16 *src)
dest[offset1 + offset2 + 33] = src[3]; // bottom right
}
-
-// BuyMenuCollectEventObjectData
-static void sub_809B92C(void)
+static void BuyMenuCollectEventObjectData(void)
{
s16 facingX;
s16 facingY;
@@ -982,7 +933,7 @@ static void sub_809B92C(void)
z = PlayerGetZCoord();
for (y = 0; y < MAP_OBJECTS_COUNT; y++)
- gUnknown_20398B4[y][EVENT_OBJ_ID] = MAP_OBJECTS_COUNT;
+ sViewportMapObjects[y][EVENT_OBJ_ID] = MAP_OBJECTS_COUNT;
for (y = 0; y < 5; y++)
{
@@ -991,24 +942,24 @@ static void sub_809B92C(void)
u8 eventObjId = GetFieldObjectIdByXYZ(facingX - 3 + x, facingY - 2 + y, z);
if (eventObjId != MAP_OBJECTS_COUNT)
{
- gUnknown_20398B4[num][EVENT_OBJ_ID] = eventObjId;
- gUnknown_20398B4[num][X_COORD] = x;
- gUnknown_20398B4[num][Y_COORD] = y;
+ sViewportMapObjects[num][EVENT_OBJ_ID] = eventObjId;
+ sViewportMapObjects[num][X_COORD] = x;
+ sViewportMapObjects[num][Y_COORD] = y;
switch (gMapObjects[eventObjId].facingDirection)
{
case DIR_SOUTH:
- gUnknown_20398B4[num][ANIM_NUM] = 0;
+ sViewportMapObjects[num][ANIM_NUM] = 0;
break;
case DIR_NORTH:
- gUnknown_20398B4[num][ANIM_NUM] = 1;
+ sViewportMapObjects[num][ANIM_NUM] = 1;
break;
case DIR_WEST:
- gUnknown_20398B4[num][ANIM_NUM] = 2;
+ sViewportMapObjects[num][ANIM_NUM] = 2;
break;
case DIR_EAST:
default:
- gUnknown_20398B4[num][ANIM_NUM] = 3;
+ sViewportMapObjects[num][ANIM_NUM] = 3;
break;
}
num++;
@@ -1017,8 +968,7 @@ static void sub_809B92C(void)
}
}
-//BuyMenuDrawEventObjects
-static void sub_809BA40(void)
+static void BuyMenuDrawEventObjects(void)
{
u8 i;
u8 spriteId;
@@ -1026,26 +976,26 @@ static void sub_809BA40(void)
for (i = 0; i < MAP_OBJECTS_COUNT; i++)
{
- if (gUnknown_20398B4[i][EVENT_OBJ_ID] == MAP_OBJECTS_COUNT)
+ if (sViewportMapObjects[i][EVENT_OBJ_ID] == MAP_OBJECTS_COUNT)
continue;
- graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[gUnknown_20398B4[i][EVENT_OBJ_ID]].graphicsId);
+ graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[sViewportMapObjects[i][EVENT_OBJ_ID]].graphicsId);
spriteId = AddPseudoEventObject(
- gMapObjects[gUnknown_20398B4[i][EVENT_OBJ_ID]].graphicsId,
+ gMapObjects[sViewportMapObjects[i][EVENT_OBJ_ID]].graphicsId,
SpriteCallbackDummy,
- (((u16)gUnknown_20398B4[i][X_COORD] << 0x14) + 0xFFF80000) >> 0x10,
- (u16)gUnknown_20398B4[i][Y_COORD] * 16 + 48 - graphicsInfo->height / 2,
+ (((u16)sViewportMapObjects[i][X_COORD] << 0x14) + 0xFFF80000) >> 0x10,
+ (u16)sViewportMapObjects[i][Y_COORD] * 16 + 48 - graphicsInfo->height / 2,
2);
- StartSpriteAnim(&gSprites[spriteId], gUnknown_20398B4[i][ANIM_NUM]);
+ StartSpriteAnim(&gSprites[spriteId], sViewportMapObjects[i][ANIM_NUM]);
}
}
-static void sub_809BAFC(void)
+static void BuyMenuCopyTilemapData(void)
{
s16 i;
- u16 *dst = *gUnknown_2039958;
- u16 *src = *gUnknown_2039954;
+ u16 *dst = *gShopTilemapBuffer2;
+ u16 *src = *gShopTilemapBuffer1;
for (i = 0; i < 0x400; i++)
{
@@ -1055,8 +1005,7 @@ static void sub_809BAFC(void)
}
}
-//BuyMenuPrintItemQuantityAndPrice
-static void sub_809BB44(u8 taskId)
+static void BuyMenuPrintItemQuantityAndPrice(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -1067,8 +1016,7 @@ static void sub_809BB44(u8 taskId)
BuyMenuPrint(3, 0, gStringVar4, 2, 0xA, 0, 0, 0, 1);
}
-//Task_BuyMenu
-static void sub_809BBC0(u8 taskId)
+static void Task_BuyMenu(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -1082,31 +1030,30 @@ static void sub_809BBC0(u8 taskId)
break;
case LIST_CANCEL:
PlaySE(SE_SELECT);
- sub_809C004(taskId);
+ ExitBuyMenu(taskId);
break;
default:
PlaySE(SE_SELECT);
tItemId = itemId;
ClearWindowTilemap(5);
- sub_809B73C();
- sub_809B57C(tListTaskId, 2);
+ BuyMenuRemoveScrollIndicatorArrows();
+ BuyMenuPrintCursor(tListTaskId, 2);
sub_809B10C(1);
gShopData.itemPrice = itemid_get_market_price(itemId);
if (!IsEnoughMoney(&gSaveBlock1Ptr->money, gShopData.itemPrice))
{
- BuyMenuDisplayMessage(taskId, gText_YouDontHaveMoney, sub_809BF98);
+ BuyMenuDisplayMessage(taskId, gText_YouDontHaveMoney, BuyMenuReturnToItemList);
}
else
{
CopyItemName(itemId, gStringVar1);
- BuyMenuDisplayMessage(taskId, gText_Var1CertainlyHowMany, sub_809BCA0);
+ BuyMenuDisplayMessage(taskId, gText_Var1CertainlyHowMany, Task_BuyHowManyDialogueInit);
}
}
}
}
-//Task_BuyHowManyDialogueInit
-static void sub_809BCA0(u8 taskId)
+static void Task_BuyHowManyDialogueInit(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -1119,7 +1066,7 @@ static void sub_809BCA0(u8 taskId)
BuyMenuPrint(1, 2, gStringVar4, 0, 2, 0, 0, 0, 1);
tItemCount = 1;
BuyMenuQuantityBoxNormalBorder(3, 0);
- sub_809BB44(taskId);
+ BuyMenuPrintItemQuantityAndPrice(taskId);
ScheduleBgCopyTilemapToVram(0);
maxQuantity = GetMoney(&gSaveBlock1Ptr->money) / itemid_get_market_price(tItemId);
if (maxQuantity > 99)
@@ -1128,28 +1075,26 @@ static void sub_809BCA0(u8 taskId)
gShopData.maxQuantity = (u8)maxQuantity;
if (maxQuantity != 1)
- sub_809B6FC();
+ BuyQuantityAddScrollIndicatorArrows();
- gTasks[taskId].func = sub_809BD8C;
+ gTasks[taskId].func = Task_BuyHowManyDialogueHandleInput;
}
-//Task_BuyHowManyDialogueHandleInput
-static void sub_809BD8C(u8 taskId)
+static void Task_BuyHowManyDialogueHandleInput(u8 taskId)
{
s16 *data = gTasks[taskId].data;
-
if (AdjustQuantityAccordingToDPadInput(&tItemCount, gShopData.maxQuantity) == TRUE)
{
gShopData.itemPrice = itemid_get_market_price(tItemId) * tItemCount;
- sub_809BB44(taskId);
+ BuyMenuPrintItemQuantityAndPrice(taskId);
}
else
{
if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
- sub_809B73C();
+ BuyMenuRemoveScrollIndicatorArrows();
ClearStdWindowAndFrameToTransparent(3, 0);
ClearStdWindowAndFrameToTransparent(1, 0);
ClearWindowTilemap(3);
@@ -1158,72 +1103,67 @@ static void sub_809BD8C(u8 taskId)
CopyItemName(tItemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, 2);
ConvertIntToDecimalStringN(gStringVar3, gShopData.itemPrice, STR_CONV_MODE_LEFT_ALIGN, 8);
- BuyMenuDisplayMessage(taskId, gText_Var1AndYouWantedVar2, sub_809BE90);
+ BuyMenuDisplayMessage(taskId, gText_Var1AndYouWantedVar2, CreateBuyMenuConfirmPurchaseWindow);
}
else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- sub_809B73C();
+ BuyMenuRemoveScrollIndicatorArrows();
ClearStdWindowAndFrameToTransparent(3, 0);
ClearStdWindowAndFrameToTransparent(1, 0);
ClearWindowTilemap(3);
ClearWindowTilemap(1);
- sub_809BF98(taskId);
+ BuyMenuReturnToItemList(taskId);
}
}
}
-//CreateBuyMenuConfirmPurchaseWindow
-static void sub_809BE90(u8 taskId)
+static void CreateBuyMenuConfirmPurchaseWindow(u8 taskId)
{
- BuyMenuConfirmPurchase(taskId, gUnknown_83DF0B4); //sShopBuyMenuYesNoWindowTemplates
+ BuyMenuConfirmPurchase(taskId, gUnknown_83DF0B4);
}
-//BuyMenuTryMakePurchase
-static void sub_809BEA4(u8 taskId)
+static void BuyMenuTryMakePurchase(u8 taskId)
{
s16 *data = gTasks[taskId].data;
PutWindowTilemap(4);
if (AddBagItem(tItemId, tItemCount) == TRUE)
{
- BuyMenuDisplayMessage(taskId, gText_HereYouGoThankYou, sub_809BF0C);
+ BuyMenuDisplayMessage(taskId, gText_HereYouGoThankYou, BuyMenuSubtractMoney);
nullsub_52(taskId);
- sub_809C09C(tItemId, tItemCount, 1);
+ RecordItemPurchase(tItemId, tItemCount, 1);
}
else
{
- BuyMenuDisplayMessage(taskId, gText_NoMoreRoomForThis, sub_809BF98);
+ BuyMenuDisplayMessage(taskId, gText_NoMoreRoomForThis, BuyMenuReturnToItemList);
}
}
-//BuyMenuSubtractMoney
-static void sub_809BF0C(u8 taskId)
+static void BuyMenuSubtractMoney(u8 taskId)
{
IncrementGameStat(GAME_STAT_SHOPPED);
RemoveMoney(&gSaveBlock1Ptr->money, gShopData.itemPrice);
PlaySE(SE_SHOP);
PrintMoneyAmountInMoneyBox(0, GetMoney(&gSaveBlock1Ptr->money), 0);
- gTasks[taskId].func = sub_809BF68;
+ gTasks[taskId].func = Task_ReturnToItemListAfterItemPurchase;
}
-//Task_ReturnToItemListAfterItemPurchase
-static void sub_809BF68(u8 taskId)
+static void Task_ReturnToItemListAfterItemPurchase(u8 taskId)
{
if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- sub_809BF98(taskId);
+ BuyMenuReturnToItemList(taskId);
}
}
-//BuyMenuReturnToItemList
-static void sub_809BF98(u8 taskId)
+static void BuyMenuReturnToItemList(u8 taskId)
{
s16 *data = gTasks[taskId].data;
ClearDialogWindowAndFrameToTransparent(2, 0);
- sub_809B57C(tListTaskId, 1);
+ BuyMenuPrintCursor(tListTaskId, 1);
sub_809B10C(0);
PutWindowTilemap(4);
PutWindowTilemap(5);
@@ -1231,27 +1171,25 @@ static void sub_809BF98(u8 taskId)
PutWindowTilemap(6);
ScheduleBgCopyTilemapToVram(0);
- sub_809B690();
- gTasks[taskId].func = sub_809BBC0;
+ BuyMenuAddScrollIndicatorArrows();
+ gTasks[taskId].func = Task_BuyMenu;
}
-//ExitBuyMenu
-static void sub_809C004(u8 taskId)
+static void ExitBuyMenu(u8 taskId)
{
- gFieldCallback = sub_809AD74;
+ gFieldCallback = MapPostLoadHook_ReturnToShopMenu;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
- gTasks[taskId].func = sub_809C04C;
+ gTasks[taskId].func = Task_ExitBuyMenu;
}
-//Task_ExitBuyMenu
-static void sub_809C04C(u8 taskId)
+static void Task_ExitBuyMenu(u8 taskId)
{
s16 *data = gTasks[taskId].data;
if (!gPaletteFade.active)
{
DestroyListMenuTask(tListTaskId, 0, 0);
- sub_809B604();
+ BuyMenuFreeMemory();
SetMainCallback2(CB2_ReturnToField);
DestroyTask(taskId);
}
@@ -1266,52 +1204,54 @@ static void nullsub_53(void)
}
#ifdef NONMATCHING
-void sub_809C09C(u16 item, u16 quantity, u8 a2)
+void RecordItemPurchase(u16 item, u16 quantity, u8 a2)
{
struct MartHistory *tmp;
- if (gUnknown_203996C.unkA == a2)
+ if (gShopMenuHistory.unkA == a2)
{
- tmp = &gUnknown_203996C;
+ tmp = &gShopMenuHistory;
}
else
{
- if (gUnknown_203996C.unk16 == a2)
+ if (gShopMenuHistory.unk16 == a2)
{
- tmp = &gUnknown_203996C + 12;
+ tmp = &gShopMenuHistory + 12;
}
else
{
- tmp = &gUnknown_203996C + 12;
- if (gUnknown_203996C.unkA == 0)
+ tmp = &gShopMenuHistory + 12;
+ if (gShopMenuHistory.unkA == 0)
{
- tmp = &gUnknown_203996C;
- gUnknown_203996C.unkA = a2;
+ tmp = &gShopMenuHistory;
+ gShopMenuHistory.unkA = a2;
}
}
}
+
if (tmp->unk4 != 0)
{
- gUnknown_203996C.unk9 = 1;
+ gShopMenuHistory.unk9 = 1;
}
- gUnknown_203996C.unk4 = item;
- if (gUnknown_203996C.unk6 <= 998)
+ gShopMenuHistory.unk4 = item;
+ if (gShopMenuHistory.unk6 <= 998)
{
- gUnknown_203996C.unk6 += item;
+ gShopMenuHistory.unk6 += item;
if (item > 999)
- gUnknown_203996C.unk6 = 999;
+ gShopMenuHistory.unk6 = 999;
}
- if (gUnknown_203996C.unk0 < 999998)
+
+ if (gShopMenuHistory.unk0 < 999998)
{
- gUnknown_203996C.unk0 += ((s16)itemid_get_market_price(item) >> (quantity-1))*quantity;
- if (gUnknown_203996C.unk0 > 999999)
- gUnknown_203996C.unk0 = 999999;
+ gShopMenuHistory.unk0 += ((s16)itemid_get_market_price(item) >> (quantity-1))*quantity;
+ if (gShopMenuHistory.unk0 > 999999)
+ gShopMenuHistory.unk0 = 999999;
}
}
#else
NAKED
-void sub_809C09C(u16 item, u16 quantity, u8 a2)
+void RecordItemPurchase(u16 item, u16 quantity, u8 a2)
{
asm_unified("\tpush {r4-r6,lr}\n"
"\tlsls r0, 16\n"
@@ -1320,14 +1260,14 @@ void sub_809C09C(u16 item, u16 quantity, u8 a2)
"\tlsrs r6, r1, 16\n"
"\tlsls r2, 24\n"
"\tlsrs r5, r2, 24\n"
- "\tldr r1, _0809C0B8 @ =gUnknown_203996C\n"
+ "\tldr r1, _0809C0B8 @ =gShopMenuHistory\n"
"\tldrb r2, [r1, 0xA]\n"
"\tcmp r2, r5\n"
"\tbne _0809C0BC\n"
"\tadds r4, r1, 0\n"
"\tb _0809C0D4\n"
"\t.align 2, 0\n"
- "_0809C0B8: .4byte gUnknown_203996C\n"
+ "_0809C0B8: .4byte gShopMenuHistory\n"
"_0809C0BC:\n"
"\tldrb r0, [r1, 0x16]\n"
"\tcmp r0, r5\n"
@@ -1395,10 +1335,9 @@ void sub_809C09C(u16 item, u16 quantity, u8 a2)
}
#endif
-//RecordQuestLogItemPurchase
-static void sub_809C138(void)
+static void RecordQuestLogItemPurchase(void)
{
- struct MartHistory *history = &gUnknown_203996C;
+ struct MartHistory *history = &gShopMenuHistory;
u16 v;
v = history->unkA;
@@ -1414,26 +1353,26 @@ static void sub_809C138(void)
void CreatePokemartMenu(const u16 *itemsForSale)
{
- sub_809ABD8(itemsForSale);
- sub_809AAB0(MART_TYPE_REGULAR);
- sub_809AC04(EnableBothScriptContexts);
+ SetShopItemsForSale(itemsForSale);
+ CreateShopMenu(MART_TYPE_REGULAR);
+ SetShopMenuCallback(EnableBothScriptContexts);
nullsub_53();
- memset(&gUnknown_203996C, 0, sizeof(struct MartHistory));
- gUnknown_203996C.unk8 = gMapHeader.regionMapSectionId;
- gUnknown_203996C.unk14 = gMapHeader.regionMapSectionId;
+ memset(&gShopMenuHistory, 0, sizeof(struct MartHistory));
+ gShopMenuHistory.unk8 = gMapHeader.regionMapSectionId;
+ gShopMenuHistory.unk14 = gMapHeader.regionMapSectionId;
}
void CreateDecorationShop1Menu(const u16 *itemsForSale)
{
- sub_809ABD8(itemsForSale);
- sub_809AAB0(MART_TYPE_DECOR);
- sub_809AC04(EnableBothScriptContexts);
+ SetShopItemsForSale(itemsForSale);
+ CreateShopMenu(MART_TYPE_DECOR);
+ SetShopMenuCallback(EnableBothScriptContexts);
}
void CreateDecorationShop2Menu(const u16 *itemsForSale)
{
- sub_809ABD8(itemsForSale);
- sub_809AAB0(MART_TYPE_DECOR2);
- sub_809AC04(EnableBothScriptContexts);
+ SetShopItemsForSale(itemsForSale);
+ CreateShopMenu(MART_TYPE_DECOR2);
+ SetShopMenuCallback(EnableBothScriptContexts);
}
diff --git a/src/tm_case.c b/src/tm_case.c
index 25fe9a72c..9e5d32db9 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -1107,7 +1107,7 @@ static void Task_DoSaleOfTMs(u8 taskId)
PlaySE(SE_SHOP);
RemoveBagItem(gSpecialVar_ItemId, data[8]);
AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]);
- sub_809C09C(gSpecialVar_ItemId, data[8], 2);
+ RecordItemPurchase(gSpecialVar_ItemId, data[8], 2);
DestroyListMenuTask(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
TMCaseSetup_GetTMCount();
TMCaseSetup_InitListMenuPositions();