diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2015-12-13 17:11:58 -0500 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2015-12-13 17:11:58 -0500 |
commit | 259c155187fc84c5d884442555e7324edde8f0be (patch) | |
tree | 8fcf4a0d643e6b308cebeaa1c09b34186c856964 /engine | |
parent | acd92eee94f0c8a7e0757ce2a1f486f08a4a9ad7 (diff) |
Pack; buy, sell, toss
Diffstat (limited to 'engine')
-rwxr-xr-x | engine/buy_sell_toss.asm | 238 | ||||
-rwxr-xr-x | engine/mart.asm | 6 | ||||
-rwxr-xr-x | engine/mon_menu.asm | 344 | ||||
-rw-r--r-- | engine/pack.asm | 2 | ||||
-rwxr-xr-x | engine/pokecenter_pc.asm | 4 | ||||
-rwxr-xr-x | engine/startmenu.asm | 2 |
6 files changed, 589 insertions, 7 deletions
diff --git a/engine/buy_sell_toss.asm b/engine/buy_sell_toss.asm new file mode 100755 index 000000000..db1acddbc --- /dev/null +++ b/engine/buy_sell_toss.asm @@ -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 diff --git a/engine/mart.asm b/engine/mart.asm index 2d8ac0c2c..3437ef984 100755 --- a/engine/mart.asm +++ b/engine/mart.asm @@ -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 diff --git a/engine/mon_menu.asm b/engine/mon_menu.asm new file mode 100755 index 000000000..4c9fb2b89 --- /dev/null +++ b/engine/mon_menu.asm @@ -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 diff --git a/engine/pack.asm b/engine/pack.asm index e755d60c8..efcead9de 100644 --- a/engine/pack.asm +++ b/engine/pack.asm @@ -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 diff --git a/engine/pokecenter_pc.asm b/engine/pokecenter_pc.asm index 3a0996da1..75f1daeec 100755 --- a/engine/pokecenter_pc.asm +++ b/engine/pokecenter_pc.asm @@ -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 diff --git a/engine/startmenu.asm b/engine/startmenu.asm index 029f287c7..7093165af 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -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 |