mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-01-23 09:16:20 -08:00
Added a bunch of constants for the bitflags of each kind of menu. Some are slightly vague or too long, but I'm not sure how to else name them.
973 lines
16 KiB
NASM
Executable File
973 lines
16 KiB
NASM
Executable File
const_def
|
|
const MARTTEXT_HOW_MANY
|
|
const MARTTEXT_COSTS_THIS_MUCH
|
|
const MARTTEXT_NOT_ENOUGH_MONEY
|
|
const MARTTEXT_BAG_FULL
|
|
const MARTTEXT_HERE_YOU_GO
|
|
const MARTTEXT_SOLD_OUT
|
|
|
|
OpenMartDialog:: ; 15a45
|
|
call GetMart
|
|
ld a, c
|
|
ld [EngineBuffer1], a
|
|
call LoadMartPointer
|
|
ld a, [EngineBuffer1]
|
|
ld hl, .dialogs
|
|
rst JumpTable
|
|
ret
|
|
; 15a57
|
|
|
|
.dialogs
|
|
dw MartDialog
|
|
dw HerbShop
|
|
dw BargainShop
|
|
dw Pharmacist
|
|
dw RooftopSale
|
|
; 15a61
|
|
|
|
MartDialog: ; 15a61
|
|
ld a, 0
|
|
ld [EngineBuffer1], a
|
|
xor a
|
|
ld [EngineBuffer5], a
|
|
call StandardMart
|
|
ret
|
|
; 15a6e
|
|
|
|
HerbShop: ; 15a6e
|
|
call FarReadMart
|
|
call LoadStandardMenuDataHeader
|
|
ld hl, Text_HerbShop_Intro
|
|
call MartTextBox
|
|
call BuyMenu
|
|
ld hl, Text_HerbShop_ComeAgain
|
|
call MartTextBox
|
|
ret
|
|
; 15a84
|
|
|
|
BargainShop: ; 15a84
|
|
ld b, BANK(BargainShopData)
|
|
ld de, BargainShopData
|
|
call LoadMartPointer
|
|
call ReadMart
|
|
call LoadStandardMenuDataHeader
|
|
ld hl, Text_BargainShop_Intro
|
|
call MartTextBox
|
|
call BuyMenu
|
|
ld hl, wBargainShopFlags
|
|
ld a, [hli]
|
|
or [hl]
|
|
jr z, .skip_set
|
|
ld hl, wDailyFlags
|
|
set 6, [hl]
|
|
|
|
.skip_set
|
|
ld hl, Text_BargainShop_ComeAgain
|
|
call MartTextBox
|
|
ret
|
|
; 15aae
|
|
|
|
Pharmacist: ; 15aae
|
|
call FarReadMart
|
|
call LoadStandardMenuDataHeader
|
|
ld hl, Text_Pharmacist_Intro
|
|
call MartTextBox
|
|
call BuyMenu
|
|
ld hl, Text_Pharmacist_ComeAgain
|
|
call MartTextBox
|
|
ret
|
|
; 15ac4
|
|
|
|
RooftopSale: ; 15ac4
|
|
ld b, BANK(RooftopSaleData1)
|
|
ld de, RooftopSaleData1
|
|
ld hl, wStatusFlags
|
|
bit 6, [hl] ; hall of fame
|
|
jr z, .ok
|
|
ld b, BANK(RooftopSaleData2)
|
|
ld de, RooftopSaleData2
|
|
|
|
.ok
|
|
call LoadMartPointer
|
|
call ReadMart
|
|
call LoadStandardMenuDataHeader
|
|
ld hl, Text_Mart_HowMayIHelpYou
|
|
call MartTextBox
|
|
call BuyMenu
|
|
ld hl, Text_Mart_ComeAgain
|
|
call MartTextBox
|
|
ret
|
|
; 15aee
|
|
|
|
INCLUDE "data/items/rooftop_sale.asm"
|
|
|
|
LoadMartPointer: ; 15b10
|
|
ld a, b
|
|
ld [MartPointerBank], a
|
|
ld a, e
|
|
ld [MartPointer], a
|
|
ld a, d
|
|
ld [MartPointer + 1], a
|
|
ld hl, CurMart
|
|
xor a
|
|
ld bc, 16
|
|
call ByteFill
|
|
xor a
|
|
ld [EngineBuffer5], a
|
|
ld [wBargainShopFlags], a
|
|
ld [FacingDirection], a
|
|
ret
|
|
; 15b31
|
|
|
|
GetMart: ; 15b31
|
|
ld a, e
|
|
cp (MartsEnd - Marts) / 2
|
|
jr c, .IsAMart
|
|
ld b, BANK(DefaultMart)
|
|
ld de, DefaultMart
|
|
ret
|
|
|
|
.IsAMart:
|
|
ld hl, Marts
|
|
add hl, de
|
|
add hl, de
|
|
ld e, [hl]
|
|
inc hl
|
|
ld d, [hl]
|
|
ld b, BANK(Marts)
|
|
ret
|
|
; 15b47
|
|
|
|
StandardMart: ; 15b47
|
|
.loop
|
|
ld a, [EngineBuffer5]
|
|
ld hl, .MartFunctions
|
|
rst JumpTable
|
|
ld [EngineBuffer5], a
|
|
cp $ff
|
|
jr nz, .loop
|
|
ret
|
|
|
|
.MartFunctions:
|
|
dw .HowMayIHelpYou
|
|
dw .TopMenu
|
|
dw .Buy
|
|
dw .Sell
|
|
dw .Quit
|
|
dw .AnythingElse
|
|
; 15b62
|
|
|
|
.HowMayIHelpYou: ; 15b62
|
|
call LoadStandardMenuDataHeader
|
|
ld hl, Text_Mart_HowMayIHelpYou
|
|
call PrintText
|
|
ld a, $1 ; top menu
|
|
ret
|
|
; 15b6e
|
|
|
|
.TopMenu: ; 15b6e
|
|
ld hl, MenuDataHeader_BuySell
|
|
call CopyMenuDataHeader
|
|
call VerticalMenu
|
|
jr c, .quit
|
|
ld a, [wMenuCursorY]
|
|
cp $1
|
|
jr z, .buy
|
|
cp $2
|
|
jr z, .sell
|
|
.quit
|
|
ld a, $4 ; Come again!
|
|
ret
|
|
.buy
|
|
ld a, $2 ; buy
|
|
ret
|
|
.sell
|
|
ld a, $3 ; sell
|
|
ret
|
|
; 15b8d
|
|
|
|
.Buy: ; 15b8d
|
|
call ExitMenu
|
|
call FarReadMart
|
|
call BuyMenu
|
|
and a
|
|
ld a, $5 ; Anything else?
|
|
ret
|
|
; 15b9a
|
|
|
|
.Sell: ; 15b9a
|
|
call ExitMenu
|
|
call SellMenu
|
|
ld a, $5 ; Anything else?
|
|
ret
|
|
; 15ba3
|
|
|
|
.Quit: ; 15ba3
|
|
call ExitMenu
|
|
ld hl, Text_Mart_ComeAgain
|
|
call MartTextBox
|
|
ld a, $ff ; exit
|
|
ret
|
|
; 15baf
|
|
|
|
.AnythingElse: ; 15baf
|
|
call LoadStandardMenuDataHeader
|
|
ld hl, Text_Mart_AnythingElse
|
|
call PrintText
|
|
ld a, $1 ; top menu
|
|
ret
|
|
; 15bbb
|
|
|
|
FarReadMart: ; 15bbb
|
|
ld hl, MartPointer
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld de, CurMart
|
|
.CopyMart:
|
|
ld a, [MartPointerBank]
|
|
call GetFarByte
|
|
ld [de], a
|
|
inc hl
|
|
inc de
|
|
cp -1
|
|
jr nz, .CopyMart
|
|
ld hl, wMartItem1BCD
|
|
ld de, CurMart + 1
|
|
.ReadMartItem:
|
|
ld a, [de]
|
|
inc de
|
|
cp -1
|
|
jr z, .done
|
|
push de
|
|
call GetMartItemPrice
|
|
pop de
|
|
jr .ReadMartItem
|
|
|
|
.done
|
|
ret
|
|
; 15be5
|
|
|
|
GetMartItemPrice: ; 15be5
|
|
; Return the price of item a in BCD at hl and in tiles at StringBuffer1.
|
|
push hl
|
|
ld [CurItem], a
|
|
farcall GetItemPrice
|
|
pop hl
|
|
|
|
GetMartPrice: ; 15bf0
|
|
; Return price de in BCD at hl and in tiles at StringBuffer1.
|
|
push hl
|
|
ld a, d
|
|
ld [StringBuffer2], a
|
|
ld a, e
|
|
ld [StringBuffer2 + 1], a
|
|
ld hl, StringBuffer1
|
|
ld de, StringBuffer2
|
|
lb bc, PRINTNUM_LEADINGZEROS | 2, 6 ; 6 digits
|
|
call PrintNum
|
|
pop hl
|
|
|
|
ld de, StringBuffer1
|
|
ld c, 6 / 2 ; 6 digits
|
|
.loop
|
|
call .CharToNybble
|
|
swap a
|
|
ld b, a
|
|
call .CharToNybble
|
|
or b
|
|
ld [hli], a
|
|
dec c
|
|
jr nz, .loop
|
|
ret
|
|
; 15c1a
|
|
|
|
.CharToNybble: ; 15c1a
|
|
ld a, [de]
|
|
inc de
|
|
cp " "
|
|
jr nz, .not_space
|
|
ld a, "0"
|
|
|
|
.not_space
|
|
sub "0"
|
|
ret
|
|
; 15c25
|
|
|
|
ReadMart: ; 15c25
|
|
; Load the mart pointer. Mart data is local (no need for bank).
|
|
ld hl, MartPointer
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
push hl
|
|
; set hl to the first item
|
|
inc hl
|
|
ld bc, wMartItem1BCD
|
|
ld de, CurMart + 1
|
|
.loop
|
|
; copy the item to CurMart + (ItemIndex)
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
; -1 is the terminator
|
|
cp -1
|
|
jr z, .done
|
|
|
|
push de
|
|
; copy the price to de
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hli]
|
|
ld d, a
|
|
; convert the price to 3-byte BCD at [bc]
|
|
push hl
|
|
ld h, b
|
|
ld l, c
|
|
call GetMartPrice
|
|
ld b, h
|
|
ld c, l
|
|
pop hl
|
|
|
|
pop de
|
|
jr .loop
|
|
|
|
.done
|
|
pop hl
|
|
ld a, [hl]
|
|
ld [CurMart], a
|
|
ret
|
|
; 15c51
|
|
|
|
INCLUDE "data/items/bargain_shop.asm"
|
|
|
|
|
|
BuyMenu: ; 15c62
|
|
call FadeToMenu
|
|
farcall BlankScreen
|
|
xor a
|
|
ld [wMenuScrollPositionBackup], a
|
|
ld a, 1
|
|
ld [wMenuCursorBufferBackup], a
|
|
.loop
|
|
call BuyMenuLoop ; menu loop
|
|
jr nc, .loop
|
|
call CloseSubmenu
|
|
ret
|
|
; 15c7d
|
|
|
|
LoadBuyMenuText: ; 15c7d
|
|
; load text from a nested table
|
|
; which table is in EngineBuffer1
|
|
; which entry is in register a
|
|
push af
|
|
call GetMartDialogGroup ; gets a pointer from GetMartDialogGroup.MartTextFunctionPointers
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
pop af
|
|
ld e, a
|
|
ld d, 0
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
call PrintText
|
|
ret
|
|
; 15c91
|
|
|
|
MartAskPurchaseQuantity: ; 15c91
|
|
call GetMartDialogGroup ; gets a pointer from GetMartDialogGroup.MartTextFunctionPointers
|
|
inc hl
|
|
inc hl
|
|
ld a, [hl]
|
|
and a
|
|
jp z, StandardMartAskPurchaseQuantity
|
|
cp 1
|
|
jp z, BargainShopAskPurchaseQuantity
|
|
jp RooftopSaleAskPurchaseQuantity
|
|
; 15ca3
|
|
|
|
GetMartDialogGroup: ; 15ca3
|
|
ld a, [EngineBuffer1]
|
|
ld e, a
|
|
ld d, 0
|
|
ld hl, .MartTextFunctionPointers
|
|
add hl, de
|
|
add hl, de
|
|
add hl, de
|
|
ret
|
|
; 15cb0
|
|
|
|
.MartTextFunctionPointers: ; 15cb0
|
|
dwb .StandardMartPointers, 0
|
|
dwb .HerbShopPointers, 0
|
|
dwb .BargainShopPointers, 1
|
|
dwb .PharmacyPointers, 0
|
|
dwb .StandardMartPointers, 2
|
|
; 15cbf
|
|
|
|
.StandardMartPointers: ; 15cbf
|
|
dw Text_Mart_HowMany
|
|
dw Text_Mart_CostsThisMuch
|
|
dw Text_Mart_InsufficientFunds
|
|
dw Text_Mart_BagFull
|
|
dw Text_Mart_HereYouGo
|
|
dw BuyMenuLoop
|
|
|
|
.HerbShopPointers: ; 15ccb
|
|
dw Text_HerbShop_HowMany
|
|
dw Text_HerbShop_CostsThisMuch
|
|
dw Text_HerbShop_InsufficientFunds
|
|
dw Text_HerbShop_BagFull
|
|
dw Text_HerbShop_HereYouGo
|
|
dw BuyMenuLoop
|
|
|
|
.BargainShopPointers: ; 15cd7
|
|
dw BuyMenuLoop
|
|
dw Text_BargainShop_CostsThisMuch
|
|
dw Text_BargainShop_InsufficientFunds
|
|
dw Text_BargainShop_BagFull
|
|
dw Text_BargainShop_HereYouGo
|
|
dw Text_BargainShop_SoldOut
|
|
|
|
.PharmacyPointers: ; 15ce3
|
|
dw Text_Pharmacy_HowMany
|
|
dw Text_Pharmacy_CostsThisMuch
|
|
dw Text_Pharmacy_InsufficientFunds
|
|
dw Text_Pharmacy_BagFull
|
|
dw Text_Pharmacy_HereYouGo
|
|
dw BuyMenuLoop
|
|
; 15cef
|
|
|
|
|
|
BuyMenuLoop: ; 15cef
|
|
farcall PlaceMoneyTopRight
|
|
call UpdateSprites
|
|
ld hl, MenuDataHeader_Buy
|
|
call CopyMenuDataHeader
|
|
ld a, [wMenuCursorBufferBackup]
|
|
ld [wMenuCursorBuffer], a
|
|
ld a, [wMenuScrollPositionBackup]
|
|
ld [wMenuScrollPosition], a
|
|
call ScrollingMenu
|
|
ld a, [wMenuScrollPosition]
|
|
ld [wMenuScrollPositionBackup], a
|
|
ld a, [wMenuCursorY]
|
|
ld [wMenuCursorBufferBackup], a
|
|
call SpeechTextBox
|
|
ld a, [wMenuJoypad]
|
|
cp B_BUTTON
|
|
jr z, .set_carry
|
|
cp A_BUTTON
|
|
jr z, .useless_pointer
|
|
|
|
.useless_pointer
|
|
call MartAskPurchaseQuantity
|
|
jr c, .cancel
|
|
call MartConfirmPurchase
|
|
jr c, .cancel
|
|
ld de, Money
|
|
ld bc, hMoneyTemp
|
|
ld a, $3 ; useless load
|
|
call CompareMoney
|
|
jr c, .insufficient_funds
|
|
ld hl, NumItems
|
|
call ReceiveItem
|
|
jr nc, .insufficient_bag_space
|
|
ld a, [wMartItemID]
|
|
ld e, a
|
|
ld d, $0
|
|
ld b, SET_FLAG
|
|
ld hl, wBargainShopFlags
|
|
call FlagAction
|
|
call PlayTransactionSound
|
|
ld de, Money
|
|
ld bc, hMoneyTemp
|
|
call TakeMoney
|
|
ld a, MARTTEXT_HERE_YOU_GO
|
|
call LoadBuyMenuText
|
|
call JoyWaitAorB
|
|
|
|
.cancel
|
|
call SpeechTextBox
|
|
and a
|
|
ret
|
|
|
|
.set_carry
|
|
scf
|
|
ret
|
|
|
|
.insufficient_bag_space
|
|
ld a, MARTTEXT_BAG_FULL
|
|
call LoadBuyMenuText
|
|
call JoyWaitAorB
|
|
and a
|
|
ret
|
|
|
|
.insufficient_funds
|
|
ld a, MARTTEXT_NOT_ENOUGH_MONEY
|
|
call LoadBuyMenuText
|
|
call JoyWaitAorB
|
|
and a
|
|
ret
|
|
; 15d83
|
|
|
|
StandardMartAskPurchaseQuantity:
|
|
ld a, 99
|
|
ld [wItemQuantityBuffer], a
|
|
ld a, MARTTEXT_HOW_MANY
|
|
call LoadBuyMenuText
|
|
farcall SelectQuantityToBuy
|
|
call ExitMenu
|
|
ret
|
|
; 15d97
|
|
|
|
MartConfirmPurchase: ; 15d97
|
|
predef PartyMonItemName
|
|
ld a, MARTTEXT_COSTS_THIS_MUCH
|
|
call LoadBuyMenuText
|
|
call YesNoBox
|
|
ret
|
|
; 15da5
|
|
|
|
BargainShopAskPurchaseQuantity:
|
|
ld a, 1
|
|
ld [wItemQuantityChangeBuffer], a
|
|
ld a, [wMartItemID]
|
|
ld e, a
|
|
ld d, $0
|
|
ld b, CHECK_FLAG
|
|
ld hl, wBargainShopFlags
|
|
call FlagAction
|
|
ld a, c
|
|
and a
|
|
jr nz, .SoldOut
|
|
ld a, [wMartItemID]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, MartPointer
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
inc hl
|
|
add hl, de
|
|
add hl, de
|
|
add hl, de
|
|
inc hl
|
|
ld a, [hli]
|
|
ld [hMoneyTemp + 2], a
|
|
ld a, [hl]
|
|
ld [hMoneyTemp + 1], a
|
|
xor a
|
|
ld [hMoneyTemp], a
|
|
and a
|
|
ret
|
|
|
|
.SoldOut:
|
|
ld a, MARTTEXT_SOLD_OUT
|
|
call LoadBuyMenuText
|
|
call JoyWaitAorB
|
|
scf
|
|
ret
|
|
; 15de2
|
|
|
|
RooftopSaleAskPurchaseQuantity:
|
|
ld a, MARTTEXT_HOW_MANY
|
|
call LoadBuyMenuText
|
|
call .GetSalePrice
|
|
ld a, 99
|
|
ld [wItemQuantityBuffer], a
|
|
farcall RooftopSale_SelectQuantityToBuy
|
|
call ExitMenu
|
|
ret
|
|
; 15df9
|
|
|
|
.GetSalePrice: ; 15df9
|
|
ld a, [wMartItemID]
|
|
ld e, a
|
|
ld d, 0
|
|
ld hl, MartPointer
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
inc hl
|
|
add hl, de
|
|
add hl, de
|
|
add hl, de
|
|
inc hl
|
|
ld e, [hl]
|
|
inc hl
|
|
ld d, [hl]
|
|
ret
|
|
; 15e0e
|
|
|
|
|
|
Text_Mart_HowMany: ; 0x15e0e
|
|
; How many?
|
|
text_jump UnknownText_0x1c4bfd
|
|
db "@"
|
|
; 0x15e13
|
|
|
|
Text_Mart_CostsThisMuch: ; 0x15e13
|
|
; @ (S) will be ¥@ .
|
|
text_jump UnknownText_0x1c4c08
|
|
db "@"
|
|
; 0x15e18
|
|
|
|
MenuDataHeader_Buy: ; 0x15e18
|
|
db MENU_BACKUP_TILES ; flags
|
|
db 03, 01 ; start coords
|
|
db 11, 19 ; end coords
|
|
dw .menudata2
|
|
db 1 ; default option
|
|
; 0x15e20
|
|
|
|
.menudata2 ; 0x15e20
|
|
db SCROLLINGMENU_DISPLAY_ARROWS | SCROLLINGMENU_ENABLE_FUNCTION3 ; flags
|
|
db 4, 8 ; rows, columns
|
|
db 1 ; horizontal spacing
|
|
dbw 0, CurMart
|
|
dba PlaceMenuItemName
|
|
dba .PrintBCDPrices
|
|
dba UpdateItemDescription
|
|
; 15e30
|
|
|
|
.PrintBCDPrices: ; 15e30
|
|
ld a, [wScrollingMenuCursorPosition]
|
|
ld c, a
|
|
ld b, 0
|
|
ld hl, wMartItem1BCD
|
|
add hl, bc
|
|
add hl, bc
|
|
add hl, bc
|
|
push de
|
|
ld d, h
|
|
ld e, l
|
|
pop hl
|
|
ld bc, SCREEN_WIDTH
|
|
add hl, bc
|
|
ld c, PRINTNUM_LEADINGZEROS | PRINTNUM_MONEY | 3
|
|
call PrintBCDNumber
|
|
ret
|
|
; 15e4a (5:5e4a)
|
|
|
|
Text_HerbShop_Intro: ; 0x15e4a
|
|
; Hello, dear. I sell inexpensive herbal medicine. They're good, but a trifle bitter. Your #MON may not like them. Hehehehe…
|
|
text_jump UnknownText_0x1c4c28
|
|
db "@"
|
|
; 0x15e4f
|
|
|
|
Text_HerbShop_HowMany: ; 0x15e4f
|
|
; How many?
|
|
text_jump UnknownText_0x1c4ca3
|
|
db "@"
|
|
; 0x15e54
|
|
|
|
Text_HerbShop_CostsThisMuch: ; 0x15e54
|
|
; @ (S) will be ¥@ .
|
|
text_jump UnknownText_0x1c4cae
|
|
db "@"
|
|
; 0x15e59
|
|
|
|
Text_HerbShop_HereYouGo: ; 0x15e59
|
|
; Thank you, dear. Hehehehe…
|
|
text_jump UnknownText_0x1c4cce
|
|
db "@"
|
|
; 0x15e5e
|
|
|
|
Text_HerbShop_BagFull: ; 0x15e5e
|
|
; Oh? Your PACK is full, dear.
|
|
text_jump UnknownText_0x1c4cea
|
|
db "@"
|
|
; 0x15e63
|
|
|
|
Text_HerbShop_InsufficientFunds: ; 0x15e63
|
|
; Hehehe… You don't have the money.
|
|
text_jump UnknownText_0x1c4d08
|
|
db "@"
|
|
; 0x15e68
|
|
|
|
Text_HerbShop_ComeAgain: ; 0x15e68
|
|
; Come again, dear. Hehehehe…
|
|
text_jump UnknownText_0x1c4d2a
|
|
db "@"
|
|
; 0x15e6d
|
|
|
|
Text_BargainShop_Intro: ; 0x15e6d
|
|
; Hiya! Care to see some bargains? I sell rare items that nobody else carries--but only one of each item.
|
|
text_jump UnknownText_0x1c4d47
|
|
db "@"
|
|
; 0x15e72
|
|
|
|
Text_BargainShop_CostsThisMuch: ; 0x15e72
|
|
; costs ¥@ . Want it?
|
|
text_jump UnknownText_0x1c4db0
|
|
db "@"
|
|
; 0x15e77
|
|
|
|
Text_BargainShop_HereYouGo: ; 0x15e77
|
|
; Thanks.
|
|
text_jump UnknownText_0x1c4dcd
|
|
db "@"
|
|
; 0x15e7c
|
|
|
|
Text_BargainShop_BagFull: ; 0x15e7c
|
|
; Uh-oh, your PACK is chock-full.
|
|
text_jump UnknownText_0x1c4dd6
|
|
db "@"
|
|
; 0x15e81
|
|
|
|
Text_BargainShop_SoldOut: ; 0x15e81
|
|
; You bought that already. I'm all sold out of it.
|
|
text_jump UnknownText_0x1c4df7
|
|
db "@"
|
|
; 0x15e86
|
|
|
|
Text_BargainShop_InsufficientFunds: ; 0x15e86
|
|
; Uh-oh, you're short on funds.
|
|
text_jump UnknownText_0x1c4e28
|
|
db "@"
|
|
; 0x15e8b
|
|
|
|
Text_BargainShop_ComeAgain: ; 0x15e8b
|
|
; Come by again sometime.
|
|
text_jump UnknownText_0x1c4e46
|
|
db "@"
|
|
; 0x15e90
|
|
|
|
Text_Pharmacist_Intro: ; 0x15e90
|
|
; What's up? Need some medicine?
|
|
text_jump UnknownText_0x1c4e5f
|
|
db "@"
|
|
; 0x15e95
|
|
|
|
Text_Pharmacy_HowMany: ; 0x15e95
|
|
; How many?
|
|
text_jump UnknownText_0x1c4e7e
|
|
db "@"
|
|
; 0x15e9a
|
|
|
|
Text_Pharmacy_CostsThisMuch: ; 0x15e9a
|
|
; @ (S) will cost ¥@ .
|
|
text_jump UnknownText_0x1c4e89
|
|
db "@"
|
|
; 0x15e9f
|
|
|
|
Text_Pharmacy_HereYouGo: ; 0x15e9f
|
|
; Thanks much!
|
|
text_jump UnknownText_0x1c4eab
|
|
db "@"
|
|
; 0x15ea4
|
|
|
|
Text_Pharmacy_BagFull: ; 0x15ea4
|
|
; You don't have any more space.
|
|
text_jump UnknownText_0x1c4eb9
|
|
db "@"
|
|
; 0x15ea9
|
|
|
|
Text_Pharmacy_InsufficientFunds: ; 0x15ea9
|
|
; Huh? That's not enough money.
|
|
text_jump UnknownText_0x1c4ed8
|
|
db "@"
|
|
; 0x15eae
|
|
|
|
Text_Pharmacist_ComeAgain: ; 0x15eae
|
|
; All right. See you around.
|
|
text_jump UnknownText_0x1c4ef6
|
|
db "@"
|
|
; 0x15eb3
|
|
|
|
|
|
SellMenu: ; 15eb3
|
|
call DisableSpriteUpdates
|
|
farcall DepositSellInitPackBuffers
|
|
.loop
|
|
farcall DepositSellPack
|
|
ld a, [wcf66]
|
|
and a
|
|
jp z, .quit
|
|
call .TryToSellItem
|
|
jr .loop
|
|
|
|
.quit
|
|
call ReturnToMapWithSpeechTextbox
|
|
and a
|
|
ret
|
|
; 15ed3
|
|
|
|
.NothingToSell: ; unreferenced
|
|
ld hl, .NothingToSellText
|
|
call MenuTextBoxBackup
|
|
and a
|
|
ret
|
|
; 15edb
|
|
|
|
.NothingToSellText: ; 0x15edb
|
|
; You don't have anything to sell.
|
|
text_jump UnknownText_0x1c4f12
|
|
db "@"
|
|
; 0x15ee0
|
|
|
|
|
|
.TryToSellItem: ; 15ee0
|
|
farcall CheckItemMenu
|
|
ld a, [wItemAttributeParamBuffer]
|
|
ld hl, .dw
|
|
rst JumpTable
|
|
ret
|
|
; 15eee
|
|
|
|
.dw ; 15eee
|
|
dw .try_sell
|
|
dw .cant_buy
|
|
dw .cant_buy
|
|
dw .cant_buy
|
|
dw .try_sell
|
|
dw .try_sell
|
|
dw .try_sell
|
|
; 15efc
|
|
|
|
.cant_buy ; 15efc
|
|
ret
|
|
; 15efd
|
|
|
|
|
|
.try_sell ; 15efd
|
|
farcall _CheckTossableItem
|
|
ld a, [wItemAttributeParamBuffer]
|
|
and a
|
|
jr z, .okay_to_sell
|
|
ld hl, TextMart_CantBuyFromYou
|
|
call PrintText
|
|
and a
|
|
ret
|
|
|
|
.okay_to_sell
|
|
ld hl, Text_Mart_SellHowMany
|
|
call PrintText
|
|
farcall PlaceMoneyAtTopLeftOfTextbox
|
|
farcall SelectQuantityToSell
|
|
call ExitMenu
|
|
jr c, .declined
|
|
hlcoord 1, 14
|
|
lb bc, 3, 18
|
|
call ClearBox
|
|
ld hl, Text_Mart_ICanPayThisMuch
|
|
call PrintTextBoxText
|
|
call YesNoBox
|
|
jr c, .declined
|
|
ld de, Money
|
|
ld bc, hMoneyTemp
|
|
call GiveMoney
|
|
ld a, [wMartItemID]
|
|
ld hl, NumItems
|
|
call TossItem
|
|
predef PartyMonItemName
|
|
hlcoord 1, 14
|
|
lb bc, 3, 18
|
|
call ClearBox
|
|
ld hl, Text_Mart_SoldForAmount
|
|
call PrintTextBoxText
|
|
call PlayTransactionSound
|
|
farcall PlaceMoneyBottomLeft
|
|
call JoyWaitAorB
|
|
|
|
.declined
|
|
call ExitMenu
|
|
and a
|
|
ret
|
|
; 15f73
|
|
|
|
Text_Mart_SellHowMany: ; 0x15f73
|
|
; How many?
|
|
text_jump UnknownText_0x1c4f33
|
|
db "@"
|
|
; 0x15f78
|
|
|
|
Text_Mart_ICanPayThisMuch: ; 0x15f78
|
|
; I can pay you ¥@ . Is that OK?
|
|
text_jump UnknownText_0x1c4f3e
|
|
db "@"
|
|
; 0x15f7d
|
|
|
|
DummyString ; 15f7d
|
|
db "!ダミー!@"
|
|
|
|
Text_Mart_HowMayIHelpYou: ; 0x15f83
|
|
; Welcome! How may I help you?
|
|
text_jump UnknownText_0x1c4f62
|
|
db "@"
|
|
; 0x15f88
|
|
|
|
MenuDataHeader_BuySell: ; 0x15f88
|
|
db MENU_BACKUP_TILES ; flags
|
|
db 00, 00 ; start coords
|
|
db 08, 07 ; end coords
|
|
dw .menudata2
|
|
db 1 ; default option
|
|
; 0x15f90
|
|
|
|
.menudata2 ; 0x15f90
|
|
db STATICMENU_CURSOR ; strings
|
|
db 3 ; items
|
|
db "BUY@"
|
|
db "SELL@"
|
|
db "QUIT@"
|
|
; 0x15f96
|
|
|
|
Text_Mart_HereYouGo: ; 0x15fa0
|
|
; Here you are. Thank you!
|
|
text_jump UnknownText_0x1c4f80
|
|
db "@"
|
|
; 0x15fa5
|
|
|
|
Text_Mart_InsufficientFunds: ; 0x15fa5
|
|
; You don't have enough money.
|
|
text_jump UnknownText_0x1c4f9a
|
|
db "@"
|
|
; 0x15faa
|
|
|
|
Text_Mart_BagFull: ; 0x15faa
|
|
; You can't carry any more items.
|
|
text_jump UnknownText_0x1c4fb7
|
|
db "@"
|
|
; 0x15faf
|
|
|
|
TextMart_CantBuyFromYou: ; 0x15faf
|
|
; Sorry, I can't buy that from you.
|
|
text_jump UnknownText_0x1c4fd7
|
|
db "@"
|
|
; 0x15fb4
|
|
|
|
Text_Mart_ComeAgain: ; 0x15fb4
|
|
; Please come again!
|
|
text_jump UnknownText_0x1c4ff9
|
|
db "@"
|
|
; 0x15fb9
|
|
|
|
Text_Mart_AnythingElse: ; 0x15fb9
|
|
text_jump UnknownText_0x1c500d
|
|
db "@"
|
|
; 0x15fbe
|
|
|
|
Text_Mart_SoldForAmount: ; 0x15fbe
|
|
text_jump UnknownText_0x1c502e
|
|
db "@"
|
|
; 0x15fc3
|
|
|
|
PlayTransactionSound: ; 15fc3
|
|
call WaitSFX
|
|
ld de, SFX_TRANSACTION
|
|
call PlaySFX
|
|
ret
|
|
; 15fcd
|
|
|
|
MartTextBox: ; 15fcd
|
|
call MenuTextBox
|
|
call JoyWaitAorB
|
|
call ExitMenu
|
|
ret
|
|
; 15fd7
|