summaryrefslogtreecommitdiff
path: root/engine/bank3d.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/bank3d.asm')
-rw-r--r--engine/bank3d.asm205
1 files changed, 2 insertions, 203 deletions
diff --git a/engine/bank3d.asm b/engine/bank3d.asm
index b37bdd00..0cfdea08 100644
--- a/engine/bank3d.asm
+++ b/engine/bank3d.asm
@@ -435,210 +435,9 @@ HandleMenuInputPokemonSelectionDouble:
ld [wLastMenuItem], a
ret
-PrintStrengthTxt:
- ld hl, wd728
- set 0, [hl]
- ld hl, Text_f5b17
- call PrintText
- ld hl, Text_f5b28
- jp PrintText
-
-Text_f5b17:
- TX_FAR _UsedStrengthText
- TX_ASM
- ld a, [wcf91]
- call PlayCry
- call Delay3
- jp TextScriptEnd
-
-Text_f5b28:
- TX_FAR _CanMoveBouldersText
- db "@"
-
-IsSurfingAllowed:
-; Returns whether surfing is allowed in bit 1 of wd728.
-; Surfing isn't allowed on the Cycling Road or in the lowest level of the
-; Seafoam Islands before the current has been slowed with boulders.
- ld hl, wd728
- set 1, [hl]
- ld a, [wd732]
- bit 5, a
- jr nz, .forcedToRideBike
- ld a, [wCurMap]
- cp SEAFOAM_ISLANDS_5
- ret nz
- CheckBothEventsSet EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE
- ret z
- ld hl, CoordsData_f5b64
- call ArePlayerCoordsInArray
- ret nc
- ld hl, wd728
- res 1, [hl]
- ld hl, CurrentTooFastText
- jp PrintText
-.forcedToRideBike
- ld hl, wd728
- res 1, [hl]
- ld hl, CyclingIsFunText
- jp PrintText
-
-CoordsData_f5b64:
- db 11, 07
- db $ff
-
-CurrentTooFastText:
- TX_FAR _CurrentTooFastText
- db "@"
-
-CyclingIsFunText:
- TX_FAR _CyclingIsFunText
- db "@"
-
-AddItemToInventory_:
- ld a, [wItemQuantity] ; a = item quantity
- push af
- push bc
- push de
- push hl
- push hl
- ld d, PC_ITEM_CAPACITY ; how many items the PC can hold
- ld a, wNumBagItems & $FF
- cp l
- jr nz, .checkIfInventoryFull
- ld a, wNumBagItems >> 8
- cp h
- jr nz, .checkIfInventoryFull
-; if the destination is the bag
- ld d, BAG_ITEM_CAPACITY ; how many items the bag can hold
-.checkIfInventoryFull
- ld a, [hl]
- sub d
- ld d, a
- ld a, [hli]
- and a
- jr z, .addNewItem
-.notAtEndOfInventory
- ld a, [hli]
- ld b, a ; b = ID of current item in table
- ld a, [wcf91] ; a = ID of item being added
- cp b ; does the current item in the table match the item being added?
- jp z, .increaseItemQuantity ; if so, increase the item's quantity
- inc hl
-.loop
- ld a, [hl]
- cp a, $ff ; is it the end of the table?
- jr nz, .notAtEndOfInventory
-.addNewItem ; add an item not yet in the inventory
- pop hl
- ld a, d
- and a ; is there room for a new item slot?
- jr z, .done
-; if there is room
- inc [hl] ; increment the number of items in the inventory
- ld a, [hl] ; the number of items will be the index of the new item
- add a
- dec a
- ld c, a
- ld b, 0
- add hl, bc ; hl = address to store the item
- ld a, [wcf91]
- ld [hli], a ; store item ID
- ld a, [wItemQuantity]
- ld [hli], a ; store item quantity
- ld [hl], $ff ; store terminator
- jp .success
-.increaseItemQuantity ; increase the quantity of an item already in the inventory
- ld a, [wItemQuantity]
- ld b, a ; b = quantity to add
- ld a, [hl] ; a = existing item quantity
- add b ; a = new item quantity
- cp a, 100
- jp c, .storeNewQuantity ; if the new quantity is less than 100, store it
-; if the new quantity is greater than or equal to 100,
-; try to max out the current slot and add the rest in a new slot
- sub a, 99
- ld [wItemQuantity], a ; a = amount left over (to put in the new slot)
- ld a, d
- and a ; is there room for a new item slot?
- jr z, .increaseItemQuantityFailed
-; if so, store 99 in the current slot and store the rest in a new slot
- ld a, 99
- ld [hli], a
- jp .loop
-.increaseItemQuantityFailed
- pop hl
- and a
- jr .done
-.storeNewQuantity
- ld [hl], a
- pop hl
-.success
- scf
-.done
- pop hl
- pop de
- pop bc
- pop bc
- ld a, b
- ld [wItemQuantity], a ; restore the initial value from when the function was called
- ret
+INCLUDE "engine/overworld/field_move_messages.asm"
-; function to remove an item (in varying quantities) from the player's bag or PC box
-; INPUT:
-; hl = address of inventory (either wNumBagItems or wNumBoxItems)
-; [wWhichPokemon] = index (within the inventory) of the item to remove
-; [wItemQuantity] = quantity to remove
-RemoveItemFromInventory_:
- push hl
- inc hl
- ld a, [wWhichPokemon] ; index (within the inventory) of the item being removed
- add a
- add l
- ld l, a
- jr nc, .noCarry
- inc h
-.noCarry
- inc hl
- ld a, [wItemQuantity] ; quantity being removed
- ld e, a
- ld a, [hl] ; a = current quantity
- sub e
- ld [hld], a ; store new quantity
- ld [wMaxItemQuantity], a
- and a
- jr nz, .skipMovingUpSlots
-; if the remaining quantity is 0,
-; remove the emptied item slot and move up all the following item slots
-.moveSlotsUp
- ld e, l
- ld d, h
- inc de
- inc de ; de = address of the slot following the emptied one
-.loop ; loop to move up the following slots
- ld a, [de]
- inc de
- ld [hli], a
- cp a, $ff
- jr nz, .loop
-; update menu info
- xor a
- ld [wListScrollOffset], a
- ld [wCurrentMenuItem], a
- ld [wBagSavedMenuItem], a
- ld [wSavedListScrollOffset], a
- pop hl
- ld a, [hl] ; a = number of items in inventory
- dec a ; decrement the number of items
- ld [hl], a ; store new number of items
- ld [wListCount], a
- cp a, 2
- jr c, .done
- ld [wMaxMenuItem], a
- jr .done
-.skipMovingUpSlots
- pop hl
-.done
- ret
+INCLUDE "engine/items/inventory.asm"
TrainerInfoTextBoxTileGraphics: INCBIN "gfx/trainer_info.2bpp"
TrainerInfoTextBoxTileGraphicsEnd: