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:
mid-kid
2018-03-14 13:28:36 +01:00
parent baa0dc5a96
commit 97c511cd2f
37 changed files with 36 additions and 36 deletions

235
engine/items/buy_sell_toss.asm Executable file
View 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