diff options
Diffstat (limited to 'engine/bank3d.asm')
-rw-r--r-- | engine/bank3d.asm | 205 |
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: |