Pack; buy, sell, toss

This commit is contained in:
PikalaxALT 2015-12-13 17:11:58 -05:00
parent acd92eee94
commit 259c155187
9 changed files with 742 additions and 797 deletions

118
battle/menu.asm Executable file
View File

@ -0,0 +1,118 @@
LoadBattleMenu: ; 24ef2
ld hl, BattleMenuDataHeader
call LoadMenuDataHeader
ld a, [wd0d2]
ld [wMenuCursorBuffer], a
call Function2039
ld a, [wMenuCursorBuffer]
ld [wd0d2], a
call ExitMenu
ret
; 24f0b
SafariBattleMenu: ; 24f0b
; untranslated
ld hl, MenuDataHeader_0x24f4e
call LoadMenuDataHeader
jr Function24f19
; 24f13
ContestBattleMenu: ; 24f13
ld hl, MenuDataHeader_0x24f89
call LoadMenuDataHeader
; 24f19
Function24f19: ; 24f19
ld a, [wd0d2]
ld [wMenuCursorBuffer], a
call InterpretMenu
ld a, [wMenuCursorBuffer]
ld [wd0d2], a
call ExitMenu
ret
; 24f2c
BattleMenuDataHeader: ; 24f2c
db $40 ; flags
db 12, 08 ; start coords
db 17, 19 ; end coords
dw MenuData_0x24f34
db 1 ; default option
; 24f34
MenuData_0x24f34: ; 0x24f34
db $81 ; flags
dn 2, 2 ; rows, columns
db 6 ; spacing
dba Strings24f3d
dbw BANK(MenuData_0x24f34), 0
; 0x24f3d
Strings24f3d: ; 0x24f3d
db "FIGHT@"
db "<PKMN>@"
db "PACK@"
db "RUN@"
; 24f4e
MenuDataHeader_0x24f4e: ; 24f4e
db $40 ; flags
db 12, 00 ; start coords
db 17, 19 ; end coords
dw MenuData_0x24f56
db 1 ; default option
; 24f56
MenuData_0x24f56: ; 24f56
db $81 ; flags
dn 2, 2 ; rows, columns
db 11 ; spacing
dba Strings24f5f
dba Function24f7c
; 24f5f
Strings24f5f: ; 24f5f
db "サファりボール× @" ; "SAFARI BALL× @"
db "エサをなげる@" ; "THROW BAIT"
db "いしをなげる@" ; "THROW ROCK"
db "にげる@" ; "RUN"
; 24f7c
Function24f7c: ; 24f7c
hlcoord 17, 13
ld de, wSafariBallsRemaining
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
ret
; 24f89
MenuDataHeader_0x24f89: ; 24f89
db $40 ; flags
db 12, 02 ; start coords
db 17, 19 ; end coords
dw MenuData_0x24f91
db 1 ; default option
; 24f91
MenuData_0x24f91: ; 24f91
db $81 ; flags
dn 2, 2 ; rows, columns
db 12 ; spacing
dba Strings24f9a
dba Function24fb2
; 24f9a
Strings24f9a: ; 24f9a
db "FIGHT@"
db "<PKMN>", "@"
db "PARKBALL× @"
db "RUN@"
; 24fb2
Function24fb2: ; 24fb2
hlcoord 13, 16
ld de, wParkBallsRemaining
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
ret
; 24fbf

238
engine/buy_sell_toss.asm Executable file
View File

@ -0,0 +1,238 @@
SelectQuantityToToss: ; 24fbf
ld hl, TossItem_MenuDataHeader
call LoadMenuDataHeader
call Toss_Sell_Loop
ret
; 24fc9
SelectQuantityToBuy: ; 24fc9
callba GetItemPrice
RooftopSale_SelectQuantityToBuy: ; 24fcf
ld a, d
ld [Buffer1], a
ld a, e
ld [Buffer2], a
ld hl, BuyItem_MenuDataHeader
call LoadMenuDataHeader
call Toss_Sell_Loop
ret
; 24fe1
SelectQuantityToSell: ; 24fe1
callba GetItemPrice
ld a, d
ld [Buffer1], a
ld a, e
ld [Buffer2], a
ld hl, SellItem_MenuDataHeader
call LoadMenuDataHeader
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 Function354b ; 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 $a
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, [wMenuData2Pointer]
ld e, a
ld a, [wMenuData2Pointer + 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, [Buffer1]
ld [hMultiplicand + 1], a
ld a, [Buffer2]
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_MenuDataHeader: ; 0x250ed
db $40 ; flags
db 09, 15 ; start coords
db 11, 19 ; end coords
dw ret_25097
db 0 ; default option
; 0x250f5
BuyItem_MenuDataHeader: ; 0x250f5
db $40 ; flags
db 15, 07 ; start coords
db 17, 19 ; end coords
dw DisplayPurchasePrice
db -1 ; default option
; 0x250fd
SellItem_MenuDataHeader: ; 0x250fd
db $40 ; flags
db 15, 07 ; start coords
db 17, 19 ; end coords
dw DisplaySellingPrice
db 0 ; default option
; 0x25105

View File

@ -546,7 +546,7 @@ StandardMartAskPurchaseQuantity:
ld [wItemQuantityBuffer], a
ld a, MARTTEXT_HOW_MANY
call LoadBuyMenuText
callba Function24fc9
callba SelectQuantityToBuy
call ExitMenu
ret
; 15d97
@ -606,7 +606,7 @@ RooftopSaleAskPurchaseQuantity:
call .GetSalePrice
ld a, 99
ld [wItemQuantityBuffer], a
callba Function24fcf
callba RooftopSale_SelectQuantityToBuy
call ExitMenu
ret
; 15df9
@ -876,7 +876,7 @@ Function15ee0: ; 15ee0
ld hl, Text_Mart_SellHowMany
call PrintText
callba PlaceMoneyTopRightMenu
callba Function24fe1
callba SelectQuantityToSell
call ExitMenu
jr c, .declined
hlcoord 1, 14

344
engine/mon_menu.asm Executable file
View File

@ -0,0 +1,344 @@
MonMenuOptionStrings: ; 24caf
db "STATS@"
db "SWITCH@"
db "ITEM@"
db "CANCEL@"
db "MOVE@"
db "MAIL@"
db "ERROR!@"
; 24cd9
MonMenuOptions: ; 24cd9
; Moves
db MONMENU_FIELD_MOVE, MONMENU_CUT, CUT
db MONMENU_FIELD_MOVE, MONMENU_FLY, FLY
db MONMENU_FIELD_MOVE, MONMENU_SURF, SURF
db MONMENU_FIELD_MOVE, MONMENU_STRENGTH, STRENGTH
db MONMENU_FIELD_MOVE, MONMENU_FLASH, FLASH
db MONMENU_FIELD_MOVE, MONMENU_WATERFALL, WATERFALL
db MONMENU_FIELD_MOVE, MONMENU_WHIRLPOOL, WHIRLPOOL
db MONMENU_FIELD_MOVE, MONMENU_DIG, DIG
db MONMENU_FIELD_MOVE, MONMENU_TELEPORT, TELEPORT
db MONMENU_FIELD_MOVE, MONMENU_SOFTBOILED, SOFTBOILED
db MONMENU_FIELD_MOVE, MONMENU_HEADBUTT, HEADBUTT
db MONMENU_FIELD_MOVE, MONMENU_ROCKSMASH, ROCK_SMASH
db MONMENU_FIELD_MOVE, MONMENU_MILKDRINK, MILK_DRINK
db MONMENU_FIELD_MOVE, MONMENU_SWEETSCENT, SWEET_SCENT
; Options
db MONMENU_MENUOPTION, MONMENU_STATS, 1 ; STATS
db MONMENU_MENUOPTION, MONMENU_SWITCH, 2 ; SWITCH
db MONMENU_MENUOPTION, MONMENU_ITEM, 3 ; ITEM
db MONMENU_MENUOPTION, MONMENU_CANCEL, 4 ; CANCEL
db MONMENU_MENUOPTION, MONMENU_MOVE, 5 ; MOVE
db MONMENU_MENUOPTION, MONMENU_MAIL, 6 ; MAIL
db MONMENU_MENUOPTION, MONMENU_ERROR, 7 ; ERROR!
db -1
; 24d19
MonSubmenu: ; 24d19
xor a
ld [hBGMapMode], a
call GetMonSubmenuItems
callba FreezeMonIcons
ld hl, .MenuDataHeader
call LoadMenuDataHeader
call .GetTopCoord
call PopulateMonMenu
ld a, 1
ld [hBGMapMode], a
call MonMenuLoop
ld [MenuSelection], a
call ExitMenu
ret
; 24d3f
.MenuDataHeader: ; 24d3f
db $40 ; tile backup
db 00, 06 ; start coords
db 17, 19 ; end coords
dw 0
db 1 ; default option
; 24d47
.GetTopCoord: ; 24d47
; TopCoord = 1 + BottomCoord - 2 * (NumSubmenuItems + 1)
ld a, [Buffer1]
inc a
add a
ld b, a
ld a, [wMenuBorderBottomCoord]
sub b
inc a
ld [wMenuBorderTopCoord], a
call MenuBox
ret
; 24d59
MonMenuLoop: ; 24d59
.loop
ld a, $a0 ; flags
ld [wMenuData2Flags], a
ld a, [Buffer1] ; items
ld [wMenuData2Items], a
call Function1c10
ld hl, wcfa5
set 6, [hl]
call Function1bc9
ld de, SFX_READ_TEXT_2
call PlaySFX
ld a, [hJoyPressed]
bit 0, a ; A
jr nz, .select
bit 1, a ; B
jr nz, .cancel
jr .loop
.cancel
ld a, MONMENU_CANCEL ; CANCEL
ret
.select
ld a, [MenuSelection2]
dec a
ld c, a
ld b, 0
ld hl, Buffer2
add hl, bc
ld a, [hl]
ret
; 24d91
PopulateMonMenu: ; 24d91
call MenuBoxCoord2Tile
ld bc, $2a ; 42
add hl, bc
ld de, Buffer2
.loop
ld a, [de]
inc de
cp -1
ret z
push de
push hl
call GetMonMenuString
pop hl
call PlaceString
ld bc, $28 ; 40
add hl, bc
pop de
jr .loop
; 24db0
GetMonMenuString: ; 24db0
ld hl, MonMenuOptions + 1
ld de, 3
call IsInArray
dec hl
ld a, [hli]
cp 1
jr z, .NotMove
inc hl
ld a, [hl]
ld [wd265], a
call GetMoveName
ret
.NotMove
inc hl
ld a, [hl]
dec a
ld hl, MonMenuOptionStrings
call GetNthString
ld d, h
ld e, l
ret
; 24dd4
GetMonSubmenuItems: ; 24dd4
call ResetMonSubmenu
ld a, [CurPartySpecies]
cp EGG
jr z, .egg
ld a, [wLinkMode]
and a
jr nz, .skip_moves
ld a, MON_MOVES
call GetPartyParamLocation
ld d, h
ld e, l
ld c, NUM_MOVES
.loop
push bc
push de
ld a, [de]
and a
jr z, .next
push hl
call IsFieldMove
pop hl
jr nc, .next
call AddMonMenuItem
.next
pop de
inc de
pop bc
dec c
jr nz, .loop
.skip_moves
ld a, MONMENU_STATS
call AddMonMenuItem
ld a, MONMENU_SWITCH
call AddMonMenuItem
ld a, MONMENU_MOVE
call AddMonMenuItem
ld a, [wLinkMode]
and a
jr nz, .skip2
push hl
ld a, MON_ITEM
call GetPartyParamLocation
ld d, [hl]
callba ItemIsMail
pop hl
ld a, MONMENU_MAIL
jr c, .ok
ld a, MONMENU_ITEM
.ok
call AddMonMenuItem
.skip2
ld a, [Buffer1]
cp NUM_MON_SUBMENU_ITEMS
jr z, .ok2
ld a, MONMENU_CANCEL
call AddMonMenuItem
.ok2
call TerminateMonSubmenu
ret
.egg
ld a, MONMENU_STATS
call AddMonMenuItem
ld a, MONMENU_SWITCH
call AddMonMenuItem
ld a, MONMENU_CANCEL
call AddMonMenuItem
call TerminateMonSubmenu
ret
; 24e52
IsFieldMove: ; 24e52
ld b, a
ld hl, MonMenuOptions
.next
ld a, [hli]
cp -1
jr z, .nope
cp MONMENU_MENUOPTION
jr z, .nope
ld d, [hl]
inc hl
ld a, [hli]
cp b
jr nz, .next
ld a, d
scf
.nope
ret
; 24e68
ResetMonSubmenu: ; 24e68
xor a
ld [Buffer1], a
ld hl, Buffer2
ld bc, NUM_MON_SUBMENU_ITEMS + 1
call ByteFill
ret
; 24e76
TerminateMonSubmenu: ; 24e76
ld a, [Buffer1]
ld e, a
ld d, $0
ld hl, Buffer2
add hl, de
ld [hl], -1
ret
; 24e83
AddMonMenuItem: ; 24e83
push hl
push de
push af
ld a, [Buffer1]
ld e, a
inc a
ld [Buffer1], a
ld d, $0
ld hl, Buffer2
add hl, de
pop af
ld [hl], a
pop de
pop hl
ret
; 24e99
BattleMonMenu: ; 24e99
ld hl, MenuDataHeader_0x24ed4
call CopyMenuDataHeader
xor a
ld [hBGMapMode], a
call MenuBox
call UpdateSprites
call Function1c89
call WaitBGMap
call CopyMenuData2
ld a, [wMenuData2Flags]
bit 7, a
jr z, .set_carry
call Function1c10
ld hl, wcfa5
set 6, [hl]
call Function1bc9
ld de, SFX_READ_TEXT_2
call PlaySFX
ld a, [hJoyPressed]
bit B_BUTTON_F, a
jr z, .clear_carry
ret z
.set_carry
scf
ret
.clear_carry
and a
ret
; 24ed4
MenuDataHeader_0x24ed4: ; 24ed4
db $00 ; flags
db 11, 11 ; start coords
db 17, 19 ; end coords
dw MenuData2_0x24edc
db 1 ; default option
; 24edc
MenuData2_0x24edc: ; 24edc
db $c0 ; flags
db 3 ; items
db "SWITCH@"
db "STATS@"
db "CANCEL@"
; 24ef2

View File

@ -514,7 +514,7 @@ UseItem: ; 10311
TossMenu: ; 10364
ld hl, Text_ThrowAwayHowMany
call Pack_PrintTextNoScroll
callba Function24fbf
callba SelectQuantityToToss
push af
call ExitMenu
pop af

View File

@ -343,7 +343,7 @@ Function157e9: ; 0x157e9
.askquantity
ld hl, .HowManyText
call MenuTextBox
callba Function24fbf
callba SelectQuantityToToss
call ExitMenu
call ExitMenu
jr c, .done
@ -516,7 +516,7 @@ Function1590a: ; 0x1590a
.asm_1591d
ld hl, .HowManyText
call MenuTextBox
callba Function24fbf
callba SelectQuantityToToss
push af
call ExitMenu
call ExitMenu

View File

@ -602,7 +602,7 @@ Function129f4: ; 129f4
jr nz, .asm_12a3f
ld hl, UnknownText_0x12a45
call MenuTextBox
callba Function24fbf
callba SelectQuantityToToss
push af
call WriteBackup
call ExitMenu

View File

@ -618,7 +618,7 @@ Function86810: ; 86810
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
call WaitBGMap
callba Function26601
callba ProfOaksPCRating
ret
; 868ed

823
main.asm

File diff suppressed because it is too large Load Diff