diff options
-rw-r--r-- | asm/shop.s | 344 | ||||
-rw-r--r-- | include/money.h | 2 | ||||
-rw-r--r-- | src/money.c | 2 | ||||
-rw-r--r-- | src/shop.c | 179 | ||||
-rw-r--r-- | sym_bss.txt | 2 |
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" |