pokecrystal-board/engine/overworld/select_menu.asm

173 lines
2.3 KiB
NASM
Raw Normal View History

2018-06-24 07:09:41 -07:00
SelectMenu::
2015-11-11 13:11:08 -08:00
call CheckRegisteredItem
jr c, .NotRegistered
jp UseRegisteredItem
.NotRegistered:
2015-12-09 15:25:44 -08:00
call OpenText
2015-11-11 13:11:08 -08:00
ld b, BANK(ItemMayBeRegisteredText)
ld hl, ItemMayBeRegisteredText
call MapTextbox
2015-11-25 07:16:29 -08:00
call WaitButton
jp CloseText
2015-11-11 13:11:08 -08:00
2018-06-24 07:09:41 -07:00
ItemMayBeRegisteredText:
2015-11-11 13:11:08 -08:00
text_jump UnknownText_0x1c1cf3
db "@"
2018-06-24 07:09:41 -07:00
CheckRegisteredItem:
2018-01-23 14:39:09 -08:00
ld a, [wWhichRegisteredItem]
2015-11-11 13:11:08 -08:00
and a
jr z, .NoRegisteredItem
and REGISTERED_POCKET
rlca
rlca
ld hl, .Pockets
rst JumpTable
ret
.Pockets:
2018-01-25 19:19:24 -08:00
; entries correspond to *_POCKET constants
2015-11-11 13:11:08 -08:00
dw .CheckItem
dw .CheckBall
dw .CheckKeyItem
dw .CheckTMHM
.CheckItem:
2018-01-23 14:39:09 -08:00
ld hl, wNumItems
2015-11-11 13:11:08 -08:00
call .CheckRegisteredNo
jr c, .NoRegisteredItem
inc hl
ld e, a
ld d, 0
add hl, de
add hl, de
2015-11-11 13:11:08 -08:00
call .IsSameItem
jr c, .NoRegisteredItem
and a
ret
.CheckKeyItem:
2018-01-23 14:39:09 -08:00
ld a, [wRegisteredItem]
ld hl, wKeyItems
2015-11-11 13:11:08 -08:00
ld de, 1
call IsInArray
jr nc, .NoRegisteredItem
2018-01-23 14:39:09 -08:00
ld a, [wRegisteredItem]
ld [wCurItem], a
2015-11-11 13:11:08 -08:00
and a
ret
.CheckBall:
2018-01-23 14:39:09 -08:00
ld hl, wNumBalls
2015-11-11 13:11:08 -08:00
call .CheckRegisteredNo
jr nc, .NoRegisteredItem
inc hl
ld e, a
ld d, 0
add hl, de
add hl, de
2015-11-11 13:11:08 -08:00
call .IsSameItem
jr c, .NoRegisteredItem
ret
.CheckTMHM:
2015-11-11 13:11:08 -08:00
jr .NoRegisteredItem
.NoRegisteredItem:
2015-11-11 13:11:08 -08:00
xor a
2018-01-23 14:39:09 -08:00
ld [wWhichRegisteredItem], a
ld [wRegisteredItem], a
2015-11-11 13:11:08 -08:00
scf
ret
2018-06-24 07:09:41 -07:00
.CheckRegisteredNo:
2018-01-23 14:39:09 -08:00
ld a, [wWhichRegisteredItem]
2015-11-11 13:11:08 -08:00
and REGISTERED_NUMBER
dec a
cp [hl]
jr nc, .NotEnoughItems
2018-01-23 14:39:09 -08:00
ld [wCurItemQuantity], a
2015-11-11 13:11:08 -08:00
and a
ret
.NotEnoughItems:
2015-11-11 13:11:08 -08:00
scf
ret
2018-06-24 07:09:41 -07:00
.IsSameItem:
2018-01-23 14:39:09 -08:00
ld a, [wRegisteredItem]
2015-11-11 13:11:08 -08:00
cp [hl]
jr nz, .NotSameItem
2018-01-23 14:39:09 -08:00
ld [wCurItem], a
2015-11-11 13:11:08 -08:00
and a
ret
.NotSameItem:
2015-11-11 13:11:08 -08:00
scf
ret
2018-06-24 07:09:41 -07:00
UseRegisteredItem:
2017-12-24 09:47:30 -08:00
farcall CheckItemMenu
2015-11-11 13:11:08 -08:00
ld a, [wItemAttributeParamBuffer]
ld hl, .SwitchTo
rst JumpTable
ret
.SwitchTo:
2018-01-25 19:19:24 -08:00
; entries correspond to ITEMMENU_* constants
2015-11-11 13:11:08 -08:00
dw .CantUse
dw .NoFunction
dw .NoFunction
dw .NoFunction
dw .Current
dw .Party
dw .Overworld
2018-06-24 07:09:41 -07:00
.NoFunction:
2015-12-09 15:25:44 -08:00
call OpenText
2015-11-11 13:11:08 -08:00
call CantUseItem
2015-11-25 07:16:29 -08:00
call CloseText
2015-11-11 13:11:08 -08:00
and a
ret
2018-06-24 07:09:41 -07:00
.Current:
2015-12-09 15:25:44 -08:00
call OpenText
2015-11-11 13:11:08 -08:00
call DoItemEffect
2015-11-25 07:16:29 -08:00
call CloseText
2015-11-11 13:11:08 -08:00
and a
ret
2018-06-24 07:09:41 -07:00
.Party:
call RefreshScreen
2015-11-11 13:11:08 -08:00
call FadeToMenu
call DoItemEffect
call CloseSubmenu
2015-11-25 07:16:29 -08:00
call CloseText
2015-11-11 13:11:08 -08:00
and a
ret
2018-06-24 07:09:41 -07:00
.Overworld:
call RefreshScreen
2015-11-11 13:11:08 -08:00
ld a, 1
2015-12-17 14:51:32 -08:00
ld [wUsingItemWithSelect], a
2015-11-11 13:11:08 -08:00
call DoItemEffect
xor a
2015-12-17 14:51:32 -08:00
ld [wUsingItemWithSelect], a
ld a, [wItemEffectSucceeded]
2015-11-11 13:11:08 -08:00
cp 1
jr nz, ._cantuse
scf
ld a, HMENURETURN_SCRIPT
ld [hMenuReturn], a
ret
2018-06-24 07:09:41 -07:00
.CantUse:
call RefreshScreen
2015-11-11 13:11:08 -08:00
._cantuse
call CantUseItem
2015-11-25 07:16:29 -08:00
call CloseText
2015-11-11 13:11:08 -08:00
and a
ret