finished buy_menu_helpers

This commit is contained in:
jiangzhengwenjz
2019-07-05 14:50:05 +08:00
parent a778eea8a3
commit 6030086696
6 changed files with 249 additions and 256 deletions
-220
View File
@@ -1,220 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_813F66C
sub_813F66C: @ 813F66C
push {r4,lr}
adds r4, r0, 0
cmp r4, 0x1
beq _0813F680
ldr r0, _0813F67C @ =gUnknown_8464804
bl InitWindows
b _0813F686
.align 2, 0
_0813F67C: .4byte gUnknown_8464804
_0813F680:
ldr r0, _0813F6CC @ =gUnknown_846483C
bl InitWindows
_0813F686:
bl DeactivateAllTextPrinters
movs r0, 0
movs r1, 0x1
movs r2, 0xD0
bl TextWindow_SetUserSelectedFrame
movs r0, 0
movs r1, 0x13
movs r2, 0xE0
bl TextWindow_LoadResourcesStdFrame0
movs r0, 0
movs r1, 0xA
movs r2, 0xF0
bl TextWindow_SetStdFrame0_WithPal
movs r0, 0
bl PutWindowTilemap
movs r0, 0x4
bl PutWindowTilemap
movs r0, 0x5
bl PutWindowTilemap
cmp r4, 0x1
bne _0813F6C4
movs r0, 0x6
bl PutWindowTilemap
_0813F6C4:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0813F6CC: .4byte gUnknown_846483C
thumb_func_end sub_813F66C
thumb_func_start sub_813F6D0
sub_813F6D0: @ 813F6D0
push {lr}
ldr r0, _0813F6F0 @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r1, 0xA4
lsls r1, 2
adds r0, r1
bl GetMoney
adds r3, r0, 0
movs r0, 0
movs r1, 0xA
movs r2, 0xF
bl PrintMoneyAmountInMoneyBoxWithBorder
pop {r0}
bx r0
.align 2, 0
_0813F6F0: .4byte gSaveBlock1Ptr
thumb_func_end sub_813F6D0
thumb_func_start sub_813F6F4
sub_813F6F4: @ 813F6F4
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x14
mov r9, r3
ldr r3, [sp, 0x30]
ldr r4, [sp, 0x34]
ldr r6, [sp, 0x38]
ldr r5, [sp, 0x3C]
mov r8, r5
ldr r5, [sp, 0x40]
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
mov r7, r9
lsls r7, 24
lsrs r7, 24
mov r9, r7
lsls r3, 24
lsrs r3, 24
lsls r4, 24
lsrs r4, 24
lsls r6, 24
lsrs r6, 24
lsls r5, 24
lsrs r5, 24
str r4, [sp]
str r6, [sp, 0x4]
lsls r4, r5, 1
adds r4, r5
ldr r5, _0813F758 @ =gUnknown_8464884
adds r4, r5
str r4, [sp, 0x8]
mov r4, r8
lsls r4, 24
asrs r4, 24
str r4, [sp, 0xC]
str r2, [sp, 0x10]
mov r2, r9
bl AddTextPrinterParameterized4
add sp, 0x14
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0813F758: .4byte gUnknown_8464884
thumb_func_end sub_813F6F4
thumb_func_start sub_813F75C
sub_813F75C: @ 813F75C
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0x10
adds r5, r0, 0
adds r6, r1, 0
mov r8, r2
lsls r5, 24
lsrs r5, 24
bl sub_809B56C
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl GetTextSpeedSetting
lsls r0, 24
lsrs r0, 24
str r4, [sp]
str r0, [sp, 0x4]
str r6, [sp, 0x8]
mov r0, r8
str r0, [sp, 0xC]
adds r0, r5, 0
movs r1, 0x2
movs r2, 0x13
movs r3, 0xE
bl DisplayMessageAndContinueTask
movs r0, 0
bl ScheduleBgCopyTilemapToVram
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_813F75C
thumb_func_start sub_813F7A8
sub_813F7A8: @ 813F7A8
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
movs r2, 0x1
movs r3, 0xD
bl SetWindowBorderStyle
pop {r0}
bx r0
thumb_func_end sub_813F7A8
thumb_func_start sub_813F7C0
sub_813F7C0: @ 813F7C0
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
movs r2, 0xA
movs r3, 0xF
bl SetWindowBorderStyle
pop {r0}
bx r0
thumb_func_end sub_813F7C0
thumb_func_start sub_813F7D8
sub_813F7D8: @ 813F7D8
push {lr}
sub sp, 0x10
adds r3, r1, 0
lsls r0, 24
lsrs r0, 24
ldr r1, _0813F800 @ =gUnknown_846487C
movs r2, 0x2
str r2, [sp]
movs r2, 0x1
str r2, [sp, 0x4]
movs r2, 0xD
str r2, [sp, 0x8]
str r3, [sp, 0xC]
movs r2, 0x2
movs r3, 0
bl CreateYesNoMenuWithCallbacks
add sp, 0x10
pop {r0}
bx r0
.align 2, 0
_0813F800: .4byte gUnknown_846487C
thumb_func_end sub_813F7D8
.align 2, 0 @ Don't pad with nop.
+20 -20
View File
@@ -572,7 +572,7 @@ _0809AEAC:
ldrb r0, [r0, 0x16]
lsls r0, 28
lsrs r0, 28
bl sub_813F66C
bl BuyMenuInitWindows
bl sub_809B080
b _0809AF5E
.align 2, 0
@@ -819,7 +819,7 @@ sub_809B15C: @ 809B15C
push {lr}
bl sub_809B764
bl sub_809BAFC
bl sub_813F6D0
bl BuyMenuDrawMoneyBox
movs r0, 0
bl ScheduleBgCopyTilemapToVram
movs r0, 0x1
@@ -1116,7 +1116,7 @@ _0809B398:
movs r1, 0x2
adds r2, r7, 0
movs r3, 0
bl sub_813F6F4
bl BuyMenuPrint
b _0809B400
.align 2, 0
_0809B3D0: .4byte 0x00000177
@@ -1138,7 +1138,7 @@ _0809B3D8:
movs r1, 0x2
adds r2, r7, 0
movs r3, 0x2
bl sub_813F6F4
bl BuyMenuPrint
_0809B400:
add sp, 0x14
pop {r4-r7}
@@ -1204,7 +1204,7 @@ _0809B45C:
adds r0, r6, 0
movs r1, 0
movs r3, 0x69
bl sub_813F6F4
bl BuyMenuPrint
_0809B480:
add sp, 0x14
pop {r4-r6}
@@ -1251,7 +1251,7 @@ sub_809B494: @ 809B494
movs r1, 0
adds r2, r5, 0
movs r3, 0
bl sub_813F6F4
bl BuyMenuPrint
lsls r0, r7, 16
lsrs r0, 16
bl ItemIdToBattleMoveId
@@ -1273,7 +1273,7 @@ sub_809B494: @ 809B494
movs r1, 0x2
adds r2, r5, 0
movs r3, 0
bl sub_813F6F4
bl BuyMenuPrint
b _0809B55C
.align 2, 0
_0809B514: .4byte gStringVar1
@@ -1294,7 +1294,7 @@ _0809B528:
movs r0, 0x6
movs r1, 0
movs r3, 0
bl sub_813F6F4
bl BuyMenuPrint
ldr r2, _0809B568 @ =gUnknown_8416217
movs r0, 0x10
str r0, [sp]
@@ -1305,7 +1305,7 @@ _0809B528:
movs r0, 0x6
movs r1, 0x2
movs r3, 0
bl sub_813F6F4
bl BuyMenuPrint
_0809B55C:
add sp, 0x14
pop {r4-r7}
@@ -1388,7 +1388,7 @@ _0809B5E0:
movs r0, 0x4
movs r1, 0x2
movs r3, 0x1
bl sub_813F6F4
bl BuyMenuPrint
_0809B5F8:
add sp, 0x14
pop {r4,r5}
@@ -2134,7 +2134,7 @@ sub_809BB44: @ 809BB44
movs r1, 0
adds r2, r4, 0
movs r3, 0x2
bl sub_813F6F4
bl BuyMenuPrint
add sp, 0x14
pop {r4}
pop {r0}
@@ -2223,7 +2223,7 @@ _0809BC1A:
ldr r1, _0809BC74 @ =gUnknown_8416842
ldr r2, _0809BC78 @ =sub_809BF98
adds r0, r6, 0
bl sub_813F75C
bl BuyMenuDisplayMessage
b _0809BC8E
.align 2, 0
_0809BC70: .4byte gSaveBlock1Ptr
@@ -2236,7 +2236,7 @@ _0809BC7C:
ldr r1, _0809BC98 @ =gUnknown_8416766
ldr r2, _0809BC9C @ =sub_809BCA0
adds r0, r6, 0
bl sub_813F75C
bl BuyMenuDisplayMessage
_0809BC8E:
pop {r4-r7}
pop {r0}
@@ -2265,7 +2265,7 @@ sub_809BCA0: @ 809BCA0
lsrs r4, 16
movs r0, 0x1
movs r1, 0
bl sub_813F7C0
bl BuyMenuQuantityBoxThinBorder
ldr r0, _0809BD44 @ =gStringVar1
adds r1, r4, 0
movs r2, 0x1
@@ -2287,11 +2287,11 @@ sub_809BCA0: @ 809BCA0
movs r1, 0x2
adds r2, r6, 0
movs r3, 0
bl sub_813F6F4
bl BuyMenuPrint
strh r4, [r5, 0x2]
movs r0, 0x3
movs r1, 0
bl sub_813F7A8
bl BuyMenuQuantityBoxNormalBorder
adds r0, r7, 0
bl sub_809BB44
movs r0, 0
@@ -2423,7 +2423,7 @@ _0809BDD4:
ldr r1, _0809BE4C @ =gUnknown_841678E
ldr r2, _0809BE50 @ =sub_809BE90
adds r0, r5, 0
bl sub_813F75C
bl BuyMenuDisplayMessage
b _0809BE88
.align 2, 0
_0809BE3C: .4byte gMain
@@ -2464,7 +2464,7 @@ sub_809BE90: @ 809BE90
lsls r0, 24
lsrs r0, 24
ldr r1, _0809BEA0 @ =gUnknown_83DF0B4
bl sub_813F7D8
bl BuyMenuConfirmPurchase
pop {r0}
bx r0
.align 2, 0
@@ -2493,7 +2493,7 @@ sub_809BEA4: @ 809BEA4
ldr r1, _0809BEEC @ =gUnknown_84167E7
ldr r2, _0809BEF0 @ =sub_809BF0C
adds r0, r5, 0
bl sub_813F75C
bl BuyMenuDisplayMessage
adds r0, r5, 0
bl nullsub_52
ldrh r0, [r4, 0xA]
@@ -2509,7 +2509,7 @@ _0809BEF4:
ldr r1, _0809BF04 @ =gUnknown_8416861
ldr r2, _0809BF08 @ =sub_809BF98
adds r0, r5, 0
bl sub_813F75C
bl BuyMenuDisplayMessage
_0809BEFE:
pop {r4,r5}
pop {r0}
-14
View File
@@ -1,14 +0,0 @@
.section .rodata
.align 2
gUnknown_8464804:: @ 8464804
.incbin "baserom.gba", 0x464804, 0x38
gUnknown_846483C:: @ 846483C
.incbin "baserom.gba", 0x46483C, 0x40
gUnknown_846487C:: @ 846487C
.incbin "baserom.gba", 0x46487C, 0x8
gUnknown_8464884:: @ 8464884
.incbin "baserom.gba", 0x464884, 0xC
+11
View File
@@ -2,6 +2,7 @@
#define GUARD_SHOP_H
#include "global.h"
#include "menu_helpers.h"
extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3];
@@ -9,5 +10,15 @@ void CreatePokemartMenu(const u16 *);
void CreateDecorationShop1Menu(const u16 *);
void CreateDecorationShop2Menu(const u16 *);
void sub_809C09C(u16, u16, u8);
u8 sub_809B56C(void);
// buy_menu_helper
void BuyMenuInitWindows(bool32 isSellingTM);
void BuyMenuDrawMoneyBox(void);
void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 color);
void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback);
void BuyMenuQuantityBoxNormalBorder(u8 windowId, bool8 copyToVram);
void BuyMenuQuantityBoxThinBorder(u8 windowId, bool8 copyToVram);
void BuyMenuConfirmPurchase(u8 taskId, const struct YesNoFuncTable *yesNo);
#endif // GUARD_SHOP_H
+2 -2
View File
@@ -254,7 +254,7 @@ SECTIONS {
asm/unk_text_util.o(.text);
asm/berry_pouch.o(.text);
asm/itemfinder.o(.text);
asm/buy_menu_helpers.o(.text);
src/buy_menu_helpers.o(.text);
asm/slot_machine.o(.text);
src/roamer.o(.text);
src/mystery_gift_menu.o(.text);
@@ -445,7 +445,7 @@ SECTIONS {
data/unk_text_util.o(.rodata);
data/berry_pouch.o(.rodata);
data/itemfinder.o(.rodata);
data/buy_menu_helpers.o(.rodata);
src/buy_menu_helpers.o(.rodata);
data/slot_machine.o(.rodata);
src/roamer.o(.rodata);
src/mystery_gift_menu.o(.rodata);
+216
View File
@@ -0,0 +1,216 @@
#include "global.h"
#include "task.h"
#include "text.h"
#include "window.h"
#include "text_window.h"
#include "money.h"
#include "menu_helpers.h"
#include "new_menu_helpers.h"
#include "menu.h"
#include "shop.h"
static const struct WindowTemplate sShopBuyMenuWindowTemplatesNormal[] =
{
{
.bg = 0x0,
.tilemapLeft = 0x1,
.tilemapTop = 0x1,
.width = 0x8,
.height = 0x3,
.paletteNum = 0xF,
.baseBlock = 0x27,
},
{
.bg = 0x0,
.tilemapLeft = 0x1,
.tilemapTop = 0xB,
.width = 0xD,
.height = 0x2,
.paletteNum = 0xF,
.baseBlock = 0x3F,
},
{
.bg = 0x0,
.tilemapLeft = 0x2,
.tilemapTop = 0xF,
.width = 0x1A,
.height = 0x4,
.paletteNum = 0xE,
.baseBlock = 0x59,
},
{
.bg = 0x0,
.tilemapLeft = 0x11,
.tilemapTop = 0x9,
.width = 0xC,
.height = 0x4,
.paletteNum = 0xE,
.baseBlock = 0xC1,
},
{
.bg = 0x0,
.tilemapLeft = 0xB,
.tilemapTop = 0x1,
.width = 0x11,
.height = 0xC,
.paletteNum = 0xE,
.baseBlock = 0xF1,
},
{
.bg = 0x0,
.tilemapLeft = 0x5,
.tilemapTop = 0xE,
.width = 0x19,
.height = 0x6,
.paletteNum = 0xF,
.baseBlock = 0x1BD,
},
DUMMY_WIN_TEMPLATE,
};
// firered uses different layout when selling TMs
static const struct WindowTemplate sShopBuyMenuWindowTemplatesTM[] =
{
{
.bg = 0x0,
.tilemapLeft = 0x1,
.tilemapTop = 0x1,
.width = 0x8,
.height = 0x3,
.paletteNum = 0xF,
.baseBlock = 0x27,
},
{
.bg = 0x0,
.tilemapLeft = 0x1,
.tilemapTop = 0xB,
.width = 0xD,
.height = 0x2,
.paletteNum = 0xF,
.baseBlock = 0x3F,
},
{
.bg = 0x0,
.tilemapLeft = 0x2,
.tilemapTop = 0xF,
.width = 0x1A,
.height = 0x4,
.paletteNum = 0xE,
.baseBlock = 0x59,
},
{
.bg = 0x0,
.tilemapLeft = 0x11,
.tilemapTop = 0x9,
.width = 0xC,
.height = 0x4,
.paletteNum = 0xE,
.baseBlock = 0xC1,
},
{
.bg = 0x0,
.tilemapLeft = 0xB,
.tilemapTop = 0x1,
.width = 0x11,
.height = 0xA,
.paletteNum = 0xE,
.baseBlock = 0xF1,
},
{
.bg = 0x0,
.tilemapLeft = 0xC,
.tilemapTop = 0xC,
.width = 0x12,
.height = 0x8,
.paletteNum = 0xE,
.baseBlock = 0x19B,
},
{
.bg = 0x0,
.tilemapLeft = 0x1,
.tilemapTop = 0xE,
.width = 0xA,
.height = 0x4,
.paletteNum = 0xE,
.baseBlock = 0x22B,
},
DUMMY_WIN_TEMPLATE,
};
static const struct WindowTemplate sShopBuyMenuYesNoWindowTemplate =
{
.bg = 0x0,
.tilemapLeft = 0x15,
.tilemapTop = 0x9,
.width = 0x6,
.height = 0x4,
.paletteNum = 0xE,
.baseBlock = 0xC1,
};
static const struct TextColor sShopBuyMenuTextColors[] =
{
{
.fgColor = 0,
.bgColor = 1,
.shadowColor = 2,
},
{
.fgColor = 0,
.bgColor = 2,
.shadowColor = 3,
},
{
.fgColor = 0,
.bgColor = 3,
.shadowColor = 2,
},
};
void BuyMenuInitWindows(bool32 isSellingTM)
{
if (isSellingTM != TRUE)
InitWindows(sShopBuyMenuWindowTemplatesNormal);
else
InitWindows(sShopBuyMenuWindowTemplatesTM);
DeactivateAllTextPrinters();
TextWindow_SetUserSelectedFrame(0, 0x1, 0xD0);
TextWindow_LoadResourcesStdFrame0(0, 0x13, 0xE0);
TextWindow_SetStdFrame0_WithPal(0, 0xA, 0xF0);
PutWindowTilemap(0);
PutWindowTilemap(4);
PutWindowTilemap(5);
if (isSellingTM == TRUE)
PutWindowTilemap(6);
}
void BuyMenuDrawMoneyBox(void)
{
PrintMoneyAmountInMoneyBoxWithBorder(0, 0xA, 0xF, GetMoney(&gSaveBlock1Ptr->money));
}
void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 color)
{
AddTextPrinterParameterized4(windowId, font, x, y, letterSpacing, lineSpacing, &sShopBuyMenuTextColors[color], speed, text);
}
void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback)
{
DisplayMessageAndContinueTask(taskId, 2, 0x13, 0xE, sub_809B56C(), GetTextSpeedSetting(), text, callback);
ScheduleBgCopyTilemapToVram(0);
}
void BuyMenuQuantityBoxNormalBorder(u8 windowId, bool8 copyToVram)
{
SetWindowBorderStyle(windowId, copyToVram, 0x1, 0xD);
}
void BuyMenuQuantityBoxThinBorder(u8 windowId, bool8 copyToVram)
{
SetWindowBorderStyle(windowId, copyToVram, 0xA, 0xF);
}
void BuyMenuConfirmPurchase(u8 taskId, const struct YesNoFuncTable *yesNo)
{
CreateYesNoMenuWithCallbacks(taskId, &sShopBuyMenuYesNoWindowTemplate, 2, 0, 2, 1, 0xD, yesNo);
}