pokecrystal/engine/items/buy_sell_toss.asm

222 lines
3.4 KiB
NASM
Raw Normal View History

2018-06-24 14:09:41 +00:00
SelectQuantityToToss:
ld hl, TossItem_MenuHeader
call LoadMenuHeader
2015-12-13 22:11:58 +00:00
call Toss_Sell_Loop
ret
2018-06-24 14:09:41 +00:00
SelectQuantityToBuy:
2017-12-24 17:47:30 +00:00
farcall GetItemPrice
2018-06-24 14:09:41 +00:00
RooftopSale_SelectQuantityToBuy:
2015-12-13 22:11:58 +00:00
ld a, d
2020-11-04 00:53:07 +00:00
ld [wBuySellItemPrice + 0], a
2015-12-13 22:11:58 +00:00
ld a, e
2020-11-04 00:53:07 +00:00
ld [wBuySellItemPrice + 1], a
ld hl, BuyItem_MenuHeader
call LoadMenuHeader
2015-12-13 22:11:58 +00:00
call Toss_Sell_Loop
ret
2018-06-24 14:09:41 +00:00
SelectQuantityToSell:
2017-12-24 17:47:30 +00:00
farcall GetItemPrice
2015-12-13 22:11:58 +00:00
ld a, d
2020-11-04 00:53:07 +00:00
ld [wBuySellItemPrice + 0], a
2015-12-13 22:11:58 +00:00
ld a, e
2020-11-04 00:53:07 +00:00
ld [wBuySellItemPrice + 1], a
ld hl, SellItem_MenuHeader
call LoadMenuHeader
2015-12-13 22:11:58 +00:00
call Toss_Sell_Loop
ret
2018-06-24 14:09:41 +00:00
Toss_Sell_Loop:
2015-12-13 22:11:58 +00:00
ld a, 1
ld [wItemQuantityChangeBuffer], a
.loop
call BuySellToss_UpdateQuantityDisplay ; update display
call BuySellToss_InterpretJoypad ; joy action
jr nc, .loop
cp -1
jr nz, .nope ; pressed B
scf
ret
.nope
and a
ret
2018-06-24 14:09:41 +00:00
BuySellToss_InterpretJoypad:
call JoyTextDelay_ForcehJoyDown ; get joypad
2015-12-13 22:11:58 +00:00
bit B_BUTTON_F, c
jr nz, .b
bit A_BUTTON_F, c
jr nz, .a
bit D_DOWN_F, c
jr nz, .down
bit D_UP_F, c
jr nz, .up
bit D_LEFT_F, c
jr nz, .left
bit D_RIGHT_F, c
jr nz, .right
and a
ret
.b
ld a, -1
scf
ret
.a
ld a, 0
scf
ret
.down
ld hl, wItemQuantityChangeBuffer
dec [hl]
jr nz, .finish_down
ld a, [wItemQuantityBuffer]
ld [hl], a
.finish_down
and a
ret
.up
ld hl, wItemQuantityChangeBuffer
inc [hl]
ld a, [wItemQuantityBuffer]
cp [hl]
jr nc, .finish_up
ld [hl], 1
.finish_up
and a
ret
.left
ld a, [wItemQuantityChangeBuffer]
sub 10
jr c, .load_1
jr z, .load_1
jr .finish_left
.load_1
ld a, 1
.finish_left
ld [wItemQuantityChangeBuffer], a
and a
ret
.right
ld a, [wItemQuantityChangeBuffer]
2015-12-14 01:33:56 +00:00
add 10
2015-12-13 22:11:58 +00:00
ld b, a
ld a, [wItemQuantityBuffer]
cp b
jr nc, .finish_right
ld b, a
.finish_right
ld a, b
ld [wItemQuantityChangeBuffer], a
and a
ret
2018-06-24 14:09:41 +00:00
BuySellToss_UpdateQuantityDisplay:
2015-12-13 22:11:58 +00:00
call MenuBox
call MenuBoxCoord2Tile
ld de, SCREEN_WIDTH + 1
add hl, de
ld [hl], "×"
inc hl
ld de, wItemQuantityChangeBuffer
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
ld a, [wMenuDataPointer]
2015-12-13 22:11:58 +00:00
ld e, a
ld a, [wMenuDataPointer + 1]
2015-12-13 22:11:58 +00:00
ld d, a
ld a, [wMenuDataBank]
call FarCall_de
ret
NoPriceToDisplay:
; Does nothing.
2015-12-13 22:11:58 +00:00
ret
2018-06-24 14:09:41 +00:00
DisplayPurchasePrice:
2015-12-13 22:11:58 +00:00
call BuySell_MultiplyPrice
call BuySell_DisplaySubtotal
ret
2018-06-24 14:09:41 +00:00
DisplaySellingPrice:
2015-12-13 22:11:58 +00:00
call BuySell_MultiplyPrice
call Sell_HalvePrice
call BuySell_DisplaySubtotal
ret
2018-06-24 14:09:41 +00:00
BuySell_MultiplyPrice:
2015-12-13 22:11:58 +00:00
xor a
ldh [hMultiplicand + 0], a
2020-11-04 00:53:07 +00:00
ld a, [wBuySellItemPrice + 0]
ldh [hMultiplicand + 1], a
2020-11-04 00:53:07 +00:00
ld a, [wBuySellItemPrice + 1]
ldh [hMultiplicand + 2], a
2015-12-13 22:11:58 +00:00
ld a, [wItemQuantityChangeBuffer]
ldh [hMultiplier], a
2015-12-13 22:11:58 +00:00
push hl
call Multiply
pop hl
ret
2018-06-24 14:09:41 +00:00
Sell_HalvePrice:
2015-12-13 22:11:58 +00:00
push hl
ld hl, hProduct + 1
ld a, [hl]
srl a
ld [hli], a
ld a, [hl]
rra
ld [hli], a
ld a, [hl]
rra
ld [hl], a
pop hl
ret
2018-06-24 14:09:41 +00:00
BuySell_DisplaySubtotal:
2015-12-13 22:11:58 +00:00
push hl
ld hl, hMoneyTemp
ldh a, [hProduct + 1]
2015-12-13 22:11:58 +00:00
ld [hli], a
ldh a, [hProduct + 2]
2015-12-13 22:11:58 +00:00
ld [hli], a
ldh a, [hProduct + 3]
2015-12-13 22:11:58 +00:00
ld [hl], a
pop hl
inc hl
ld de, hMoneyTemp
lb bc, PRINTNUM_MONEY | 3, 6
call PrintNum
call WaitBGMap
ret
TossItem_MenuHeader:
db MENU_BACKUP_TILES ; flags
menu_coords 15, 9, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
dw NoPriceToDisplay
2015-12-13 22:11:58 +00:00
db 0 ; default option
BuyItem_MenuHeader:
db MENU_BACKUP_TILES ; flags
menu_coords 7, 15, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
2015-12-13 22:11:58 +00:00
dw DisplayPurchasePrice
db -1 ; default option
SellItem_MenuHeader:
db MENU_BACKUP_TILES ; flags
menu_coords 7, 15, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
2015-12-13 22:11:58 +00:00
dw DisplaySellingPrice
db 0 ; default option