pokecrystal-board/engine/items/buy_sell_toss.asm

222 lines
3.3 KiB
NASM
Raw Permalink Normal View History

2018-06-24 07:09:41 -07:00
SelectQuantityToToss:
ld hl, TossItem_MenuHeader
call LoadMenuHeader
2015-12-13 14:11:58 -08:00
call Toss_Sell_Loop
ret
2018-06-24 07:09:41 -07:00
SelectQuantityToBuy:
2017-12-24 09:47:30 -08:00
farcall GetItemPrice
2018-06-24 07:09:41 -07:00
RooftopSale_SelectQuantityToBuy:
2015-12-13 14:11:58 -08:00
ld a, d
2020-11-03 16:53:07 -08:00
ld [wBuySellItemPrice + 0], a
2015-12-13 14:11:58 -08:00
ld a, e
2020-11-03 16:53:07 -08:00
ld [wBuySellItemPrice + 1], a
ld hl, BuyItem_MenuHeader
call LoadMenuHeader
2015-12-13 14:11:58 -08:00
call Toss_Sell_Loop
ret
2018-06-24 07:09:41 -07:00
SelectQuantityToSell:
2017-12-24 09:47:30 -08:00
farcall GetItemPrice
2015-12-13 14:11:58 -08:00
ld a, d
2020-11-03 16:53:07 -08:00
ld [wBuySellItemPrice + 0], a
2015-12-13 14:11:58 -08:00
ld a, e
2020-11-03 16:53:07 -08:00
ld [wBuySellItemPrice + 1], a
ld hl, SellItem_MenuHeader
call LoadMenuHeader
2015-12-13 14:11:58 -08:00
call Toss_Sell_Loop
ret
2018-06-24 07:09:41 -07:00
Toss_Sell_Loop:
2015-12-13 14:11:58 -08:00
ld a, 1
ld [wItemQuantityChange], a
2015-12-13 14:11:58 -08:00
.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 07:09:41 -07:00
BuySellToss_InterpretJoypad:
call JoyTextDelay_ForcehJoyDown ; get joypad
2015-12-13 14:11:58 -08: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, wItemQuantityChange
2015-12-13 14:11:58 -08:00
dec [hl]
jr nz, .finish_down
ld a, [wItemQuantity]
2015-12-13 14:11:58 -08:00
ld [hl], a
.finish_down
and a
ret
.up
ld hl, wItemQuantityChange
2015-12-13 14:11:58 -08:00
inc [hl]
ld a, [wItemQuantity]
2015-12-13 14:11:58 -08:00
cp [hl]
jr nc, .finish_up
ld [hl], 1
.finish_up
and a
ret
.left
ld a, [wItemQuantityChange]
2015-12-13 14:11:58 -08:00
sub 10
jr c, .load_1
jr z, .load_1
jr .finish_left
.load_1
ld a, 1
.finish_left
ld [wItemQuantityChange], a
2015-12-13 14:11:58 -08:00
and a
ret
.right
ld a, [wItemQuantityChange]
2015-12-13 17:33:56 -08:00
add 10
2015-12-13 14:11:58 -08:00
ld b, a
ld a, [wItemQuantity]
2015-12-13 14:11:58 -08:00
cp b
jr nc, .finish_right
ld b, a
.finish_right
ld a, b
ld [wItemQuantityChange], a
2015-12-13 14:11:58 -08:00
and a
ret
2018-06-24 07:09:41 -07:00
BuySellToss_UpdateQuantityDisplay:
2015-12-13 14:11:58 -08:00
call MenuBox
call MenuBoxCoord2Tile
ld de, SCREEN_WIDTH + 1
add hl, de
ld [hl], "×"
inc hl
ld de, wItemQuantityChange
2015-12-13 14:11:58 -08:00
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
ld a, [wMenuDataPointer]
2015-12-13 14:11:58 -08:00
ld e, a
ld a, [wMenuDataPointer + 1]
2015-12-13 14:11:58 -08:00
ld d, a
ld a, [wMenuDataBank]
call FarCall_de
ret
NoPriceToDisplay:
; Does nothing.
2015-12-13 14:11:58 -08:00
ret
2018-06-24 07:09:41 -07:00
DisplayPurchasePrice:
2015-12-13 14:11:58 -08:00
call BuySell_MultiplyPrice
call BuySell_DisplaySubtotal
ret
2018-06-24 07:09:41 -07:00
DisplaySellingPrice:
2015-12-13 14:11:58 -08:00
call BuySell_MultiplyPrice
call Sell_HalvePrice
call BuySell_DisplaySubtotal
ret
2018-06-24 07:09:41 -07:00
BuySell_MultiplyPrice:
2015-12-13 14:11:58 -08:00
xor a
ldh [hMultiplicand + 0], a
2020-11-03 16:53:07 -08:00
ld a, [wBuySellItemPrice + 0]
ldh [hMultiplicand + 1], a
2020-11-03 16:53:07 -08:00
ld a, [wBuySellItemPrice + 1]
ldh [hMultiplicand + 2], a
ld a, [wItemQuantityChange]
ldh [hMultiplier], a
2015-12-13 14:11:58 -08:00
push hl
call Multiply
pop hl
ret
2018-06-24 07:09:41 -07:00
Sell_HalvePrice:
2015-12-13 14:11:58 -08: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 07:09:41 -07:00
BuySell_DisplaySubtotal:
2015-12-13 14:11:58 -08:00
push hl
ld hl, hCoinsTemp
ldh a, [hProduct + 1]
2015-12-13 14:11:58 -08:00
ld [hli], a
ldh a, [hProduct + 2]
2015-12-13 14:11:58 -08:00
ld [hli], a
ldh a, [hProduct + 3]
2015-12-13 14:11:58 -08:00
ld [hl], a
pop hl
inc hl
ld de, hCoinsTemp
lb bc, PRINTNUM_COINS | 3, 6
2015-12-13 14:11:58 -08:00
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 14:11:58 -08: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 14:11:58 -08: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 14:11:58 -08:00
dw DisplaySellingPrice
db 0 ; default option