Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "global.h"
- #include "menu.h"
- #include "script.h"
- #include "task.h"
- #include "main.h"
- #include "sound.h"
- #include "weather.h"
- #include "palette.h"
- #include "sprite.h"
- #include "asm.h"
- #include "decompress.h"
- #include "money.h"
- struct UnknownShopStruct
- {
- /* 0x0 */ void (* callback) (void);
- /* 0x4 */ u16 *itemList;
- /* 0x8 */ u8 itemCount;
- /* 0x9 */ u8 unk9;
- /* 0xA */ u8 unkA;
- /* 0xB */ u8 unkB;
- /* 0xC */ bool8 unkC;
- // unknown size
- };
- extern struct UnknownShopStruct gUnknown_03000708;
- extern struct MenuAction gUnknown_083CC6D0[];
- extern u8 gUnknown_083CC6E8[];
- extern u8 gUnknown_083CC6EB[];
- extern u8 gOtherText_CanIHelpYou[];
- extern u8 gOtherText_AnythingElse[];
- extern void sub_80A6300(void);
- extern void sub_80BE3BC(void);
- extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16);
- extern u8 sub_807D770(void);
- extern void pal_fill_black(void);
- void sub_80B2E38(u8);
- void HandleShopMenuQuit(u8);
- void sub_80B2FA0(u8);
- void BuyMenuDrawGraphics(void);
- u8 CreateShopMenu(bool8 var)
- {
- ScriptContext2_Enable();
- gUnknown_03000708.unkC = var;
- gUnknown_03000708.unk9 = 0;
- if(var == FALSE)
- {
- gUnknown_03000708.unkA = 2;
- MenuDrawTextWindow(0, 0, 10, 7);
- PrintMenuItemsReordered(1, 1, 3, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6E8);
- }
- else
- {
- gUnknown_03000708.unkA = 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);
- return CreateTask(sub_80B2E38, 8);
- }
- void SetShopMenuCallback(void *callbackPtr)
- {
- gUnknown_03000708.callback = callbackPtr;
- }
- void SetShopItemsForSale(u16 *items)
- {
- u16 i = 0;
- gUnknown_03000708.itemList = items;
- gUnknown_03000708.itemCount = 0;
- while (gUnknown_03000708.itemList[i])
- {
- gUnknown_03000708.itemCount++;
- i++;
- }
- }
- void sub_80B2E38(u8 var)
- {
- const u8 local = var;
- if(gMain.newAndRepeatedKeys & 0x40)
- {
- if(gUnknown_03000708.unk9)
- {
- PlaySE(0x5);
- gUnknown_03000708.unk9 = MoveMenuCursor(-1);
- }
- }
- else if(gMain.newAndRepeatedKeys & 0x80)
- {
- if(gUnknown_03000708.unk9 != gUnknown_03000708.unkA)
- {
- PlaySE(0x5);
- gUnknown_03000708.unk9 = MoveMenuCursor(1);
- }
- }
- else if (gMain.newKeys & 1)
- {
- PlaySE(0x5);
- if(!gUnknown_03000708.unkC)
- {
- gUnknown_083CC6D0[gUnknown_083CC6E8[gUnknown_03000708.unk9]].func(local);
- }
- else
- {
- gUnknown_083CC6D0[gUnknown_083CC6EB[gUnknown_03000708.unk9]].func(local);
- }
- }
- else if(gMain.newKeys & 2)
- {
- PlaySE(0x5);
- HandleShopMenuQuit(local);
- }
- }
- void sub_80B2EFC(u8 taskId)
- {
- gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16;
- gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics;
- gTasks[taskId].func = sub_80B2FA0;
- fade_screen(1, 0);
- }
- void sub_80B2F30(u8 taskId)
- {
- gTasks[taskId].data[8] = (u32)sub_80A6300 >> 16;
- gTasks[taskId].data[9] = (u32)sub_80A6300;
- gTasks[taskId].func = sub_80B2FA0;
- fade_screen(1, 0);
- }
- void HandleShopMenuQuit(u8 taskId)
- {
- sub_8072DEC();
- MenuZeroFillWindowRect(0, 0, 11, 8);
- sub_80BE3BC(); // in tv.s?
- ScriptContext2_Disable();
- DestroyTask(taskId);
- if(gUnknown_03000708.callback)
- gUnknown_03000708.callback(); // run the callback if it exists.
- }
- void sub_80B2FA0(u8 taskId)
- {
- if(!gPaletteFade.active)
- {
- SetMainCallback2((void *)((u16)gTasks[taskId].data[8] << 16 | (u16)gTasks[taskId].data[9]));
- DestroyTask(taskId);
- }
- }
- void ReturnToShopMenuAfterExitingSellMenu(u8 taskId)
- {
- CreateShopMenu(gUnknown_03000708.unkC);
- DestroyTask(taskId);
- }
- void Task_ExitSellMenu(u8 taskId)
- {
- if(sub_807D770() == 1)
- {
- if(gUnknown_03000708.unkC == 2)
- DisplayItemMessageOnField(taskId, gOtherText_CanIHelpYou, ReturnToShopMenuAfterExitingSellMenu, 0);
- else
- DisplayItemMessageOnField(taskId, gOtherText_AnythingElse, ReturnToShopMenuAfterExitingSellMenu, 0);
- }
- }
- void sub_80B3050(void)
- {
- pal_fill_black();
- CreateTask(Task_ExitSellMenu, 0x8);
- }
- void sub_80B3068(u8 taskId)
- {
- Task_ExitSellMenu(taskId);
- }
- void unref_sub_80B3078(u8 taskId)
- {
- gTasks[taskId].func = Task_ExitSellMenu;
- }
- void sub_80B3094(void)
- {
- AnimateSprites();
- BuildOamBuffer();
- RunTasks();
- UpdatePaletteFade();
- }
- void sub_80B30AC(void)
- {
- void *addr;
- void *addr2;
- void *addr3;
- u16 *tempArr;
- u16 *tempArr2;
- u16 *tempArr3;
- LoadOam();
- ProcessSpriteCopyRequests();
- TransferPlttBuffer();
- // temp vars needed to match for some dumb reason
- tempArr = gBGTilemapBuffers[1];
- addr = (void *)(VRAM + 0xE800);
- DmaCopy16(3, tempArr, addr, 0x800);
- tempArr2 = gBGTilemapBuffers[2];
- addr2 = (void *)(VRAM + 0xE000);
- DmaCopy16(3, tempArr2, addr2, 0x800);
- tempArr3 = gBGTilemapBuffers[3];
- addr3 = (void *)(VRAM + 0xF000);
- DmaCopy16(3, tempArr3, addr3, 0x800);
- }
- extern u8 gBuyMenuFrame_Gfx[];
- extern void sub_80B3764(int, int);
- extern void sub_80B37EC(void);
- extern void sub_80B3270(void);
- extern void sub_80B40E8(u8);
- extern void sub_80B3240(void);
- extern void BuyMenuDrawMapGraphics(void);
- extern u16 gBuyMenuFrame_Tilemap[];
- extern u16 gMenuMoneyPal[];
- void BuyMenuDrawGraphics(void)
- {
- void *addr;
- register s16 zero asm("r6");
- register s16 zero2 asm("r5");
- sub_80F9438();
- remove_some_task();
- REG_BG1HOFS = (zero2 = 0);
- REG_BG1VOFS = zero2;
- REG_BG2HOFS = zero2;
- REG_BG2VOFS = zero2;
- REG_BG3HOFS = zero2;
- REG_BG3VOFS = zero2;
- gPaletteFade.bufferTransferDisabled = 1;
- addr = (void*)OAM;
- zero = 0;
- DmaFill32(3, zero, addr, OAM_SIZE);
- LZDecompressVram(gBuyMenuFrame_Gfx, (void*)(VRAM + 0x7C00));
- sub_800D238(gBuyMenuFrame_Tilemap, (void *)0x02018000);
- LoadCompressedPalette(gMenuMoneyPal, 0xC0, 0x20);
- FreeAllSpritePalettes();
- ResetPaletteFade();
- ResetSpriteData();
- ResetTasks();
- SetUpWindowConfig(&gWindowConfig_81E6DFC);
- InitMenuWindow(&gWindowConfig_81E6DFC);
- BuyMenuDrawMapGraphics();
- gUnknown_03000708.unk9 = zero;
- gUnknown_03000708.unkB = zero2;
- MenuZeroFillWindowRect(zero, zero, 0x20, 0x20);
- sub_80B7C14(gSaveBlock1.money, zero, zero);
- sub_80B3764(zero, 7);
- sub_80B37EC();
- sub_80B3270();
- CreateTask(sub_80B40E8, 0x8);
- sub_80B3240();
- BeginNormalPaletteFade(0xFFFFFFFF, zero, 0x10, zero, zero);
- gPaletteFade.bufferTransferDisabled = 0;
- SetVBlankCallback(sub_80B30AC);
- SetMainCallback2(sub_80B3094);
- }
- /*
- thumb_func_start BuyMenuDrawGraphics
- BuyMenuDrawGraphics: @ 80B3108
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- bl sub_80F9438
- bl remove_some_task
- ldr r0, _080B3204 @ =REG_BG1HOFS
- movs r5, 0
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- ldr r0, _080B3208 @ =gPaletteFade
- mov r8, r0
- ldrb r0, [r0, 0x8]
- movs r1, 0x80
- orrs r0, r1
- mov r1, r8
- strb r0, [r1, 0x8]
- movs r1, 0xE0
- lsls r1, 19
- movs r6, 0
- str r6, [sp, 0x4]
- ldr r0, _080B320C @ =0x040000d4
- add r2, sp, 0x4
- str r2, [r0]
- str r1, [r0, 0x4]
- ldr r1, _080B3210 @ =0x85000100
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r0, _080B3214 @ =gBuyMenuFrame_Gfx
- ldr r1, _080B3218 @ =0x06007c00
- bl LZDecompressVram
- ldr r0, _080B321C @ =gBuyMenuFrame_Tilemap
- ldr r1, _080B3220 @ =0x02018000
- bl sub_800D238
- ldr r0, _080B3224 @ =gMenuMoneyPal
- movs r1, 0xC0
- movs r2, 0x20
- bl LoadCompressedPalette
- bl FreeAllSpritePalettes
- bl ResetPaletteFade
- bl ResetSpriteData
- bl ResetTasks
- ldr r4, _080B3228 @ =gWindowConfig_81E6DFC
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- bl BuyMenuDrawMapGraphics
- ldr r0, _080B322C @ =gUnknown_03000708
- strb r6, [r0, 0x9]
- strb r5, [r0, 0xB]
- movs r0, 0
- movs r1, 0
- movs r2, 0x20
- movs r3, 0x20
- bl MenuZeroFillWindowRect
- ldr r0, _080B3230 @ =gSaveBlock1
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0
- bl sub_80B7C14
- movs r0, 0
- movs r1, 0x7
- bl sub_80B3764
- bl sub_80B37EC
- bl sub_80B3270
- ldr r0, _080B3234 @ =sub_80B40E8
- movs r1, 0x8
- bl CreateTask
- bl sub_80B3240
- movs r0, 0x1
- negs r0, r0
- str r6, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- mov r2, r8
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _080B3238 @ =sub_80B30AC
- bl SetVBlankCallback
- ldr r0, _080B323C @ =sub_80B3094
- bl SetMainCallback2
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
- _080B3204: .4byte REG_BG1HOFS
- _080B3208: .4byte gPaletteFade
- _080B320C: .4byte 0x040000d4
- _080B3210: .4byte 0x85000100
- _080B3214: .4byte gBuyMenuFrame_Gfx
- _080B3218: .4byte 0x06007c00
- _080B321C: .4byte gBuyMenuFrame_Tilemap
- _080B3220: .4byte 0x02018000
- _080B3224: .4byte gMenuMoneyPal
- _080B3228: .4byte gWindowConfig_81E6DFC
- _080B322C: .4byte gUnknown_03000708
- _080B3230: .4byte gSaveBlock1
- _080B3234: .4byte sub_80B40E8
- _080B3238: .4byte sub_80B30AC
- _080B323C: .4byte sub_80B3094
- thumb_func_end BuyMenuDrawGraphics
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement