Organize the engine/ directory, take 2
Renamed `game` to `games` and `menu` to `menus`. Moved some functions from `engine/routines/` to their fitting subdirectories. Made two new subdirectories: * engine/rtc: Contains all RTC-related things. Menus, hardware, misc functions. * engine/items: Contains all item-related things. Pack, item effects, other item handlers.
This commit is contained in:
235
engine/items/buy_sell_toss.asm
Executable file
235
engine/items/buy_sell_toss.asm
Executable file
@@ -0,0 +1,235 @@
|
||||
SelectQuantityToToss: ; 24fbf
|
||||
ld hl, TossItem_MenuHeader
|
||||
call LoadMenuHeader
|
||||
call Toss_Sell_Loop
|
||||
ret
|
||||
; 24fc9
|
||||
|
||||
SelectQuantityToBuy: ; 24fc9
|
||||
farcall GetItemPrice
|
||||
RooftopSale_SelectQuantityToBuy: ; 24fcf
|
||||
ld a, d
|
||||
ld [wBuffer1], a
|
||||
ld a, e
|
||||
ld [wBuffer2], a
|
||||
ld hl, BuyItem_MenuHeader
|
||||
call LoadMenuHeader
|
||||
call Toss_Sell_Loop
|
||||
ret
|
||||
; 24fe1
|
||||
|
||||
SelectQuantityToSell: ; 24fe1
|
||||
farcall GetItemPrice
|
||||
ld a, d
|
||||
ld [wBuffer1], a
|
||||
ld a, e
|
||||
ld [wBuffer2], a
|
||||
ld hl, SellItem_MenuHeader
|
||||
call LoadMenuHeader
|
||||
call Toss_Sell_Loop
|
||||
ret
|
||||
; 24ff9
|
||||
|
||||
Toss_Sell_Loop: ; 24ff9
|
||||
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
|
||||
; 2500e
|
||||
|
||||
BuySellToss_InterpretJoypad: ; 2500e
|
||||
call JoyTextDelay_ForcehJoyDown ; get joypad
|
||||
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]
|
||||
add 10
|
||||
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
|
||||
; 25072
|
||||
|
||||
BuySellToss_UpdateQuantityDisplay: ; 25072
|
||||
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]
|
||||
ld e, a
|
||||
ld a, [wMenuDataPointer + 1]
|
||||
ld d, a
|
||||
ld a, [wMenuDataBank]
|
||||
call FarCall_de
|
||||
ret
|
||||
; 25097
|
||||
|
||||
ret_25097: ; 25097
|
||||
ret
|
||||
; 25098
|
||||
|
||||
DisplayPurchasePrice: ; 25098
|
||||
call BuySell_MultiplyPrice
|
||||
call BuySell_DisplaySubtotal
|
||||
ret
|
||||
; 2509f
|
||||
|
||||
DisplaySellingPrice: ; 2509f
|
||||
call BuySell_MultiplyPrice
|
||||
call Sell_HalvePrice
|
||||
call BuySell_DisplaySubtotal
|
||||
ret
|
||||
; 250a9
|
||||
|
||||
BuySell_MultiplyPrice: ; 250a9
|
||||
xor a
|
||||
ld [hMultiplicand + 0], a
|
||||
ld a, [wBuffer1]
|
||||
ld [hMultiplicand + 1], a
|
||||
ld a, [wBuffer2]
|
||||
ld [hMultiplicand + 2], a
|
||||
ld a, [wItemQuantityChangeBuffer]
|
||||
ld [hMultiplier], a
|
||||
push hl
|
||||
call Multiply
|
||||
pop hl
|
||||
ret
|
||||
; 250c1
|
||||
|
||||
Sell_HalvePrice: ; 250c1
|
||||
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
|
||||
; 250d1
|
||||
|
||||
BuySell_DisplaySubtotal: ; 250d1
|
||||
push hl
|
||||
ld hl, hMoneyTemp
|
||||
ld a, [hProduct + 1]
|
||||
ld [hli], a
|
||||
ld a, [hProduct + 2]
|
||||
ld [hli], a
|
||||
ld a, [hProduct + 3]
|
||||
ld [hl], a
|
||||
pop hl
|
||||
inc hl
|
||||
ld de, hMoneyTemp
|
||||
lb bc, PRINTNUM_MONEY | 3, 6
|
||||
call PrintNum
|
||||
call WaitBGMap
|
||||
ret
|
||||
; 250ed
|
||||
|
||||
TossItem_MenuHeader: ; 0x250ed
|
||||
db MENU_BACKUP_TILES ; flags
|
||||
menu_coords 15, 9, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
||||
dw ret_25097
|
||||
db 0 ; default option
|
||||
; 0x250f5
|
||||
|
||||
BuyItem_MenuHeader: ; 0x250f5
|
||||
db MENU_BACKUP_TILES ; flags
|
||||
menu_coords 7, 15, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
|
||||
dw DisplayPurchasePrice
|
||||
db -1 ; default option
|
||||
; 0x250fd
|
||||
|
||||
SellItem_MenuHeader: ; 0x250fd
|
||||
db MENU_BACKUP_TILES ; flags
|
||||
menu_coords 7, 15, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
|
||||
dw DisplaySellingPrice
|
||||
db 0 ; default option
|
||||
; 0x25105
|
Reference in New Issue
Block a user