summaryrefslogtreecommitdiff
path: root/engine/selectmenu.asm
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2015-11-13 00:44:06 -0500
committeryenatch <yenatch@gmail.com>2015-11-13 00:44:06 -0500
commit9c5473e965520f672640daf4ee76622640e0de15 (patch)
tree33d513a05a026cb6c094eb7ee73ad52ee36d0888 /engine/selectmenu.asm
parent1c1fe276ca59726bb0008c60006c6b48cd093573 (diff)
parent40802da3cf27a453f62c8c4b712e876b06a9d834 (diff)
Merge pull request #326 from PikalaxALT/master
Reopen #325
Diffstat (limited to 'engine/selectmenu.asm')
-rwxr-xr-xengine/selectmenu.asm191
1 files changed, 191 insertions, 0 deletions
diff --git a/engine/selectmenu.asm b/engine/selectmenu.asm
new file mode 100755
index 000000000..e73f397a5
--- /dev/null
+++ b/engine/selectmenu.asm
@@ -0,0 +1,191 @@
+SelectMenu:: ; 13327
+
+ call CheckRegisteredItem
+ jr c, .NotRegistered
+ jp UseRegisteredItem
+
+.NotRegistered
+ call LoadFont
+ ld b, BANK(ItemMayBeRegisteredText)
+ ld hl, ItemMayBeRegisteredText
+ call MapTextbox
+ call CloseText
+ jp LoadMoveSprites
+; 13340
+
+
+ItemMayBeRegisteredText: ; 13340
+ text_jump UnknownText_0x1c1cf3
+ db "@"
+; 13345
+
+
+CheckRegisteredItem: ; 13345
+
+ ld a, [WhichRegisteredItem]
+ and a
+ jr z, .NoRegisteredItem
+ and REGISTERED_POCKET
+ rlca
+ rlca
+ ld hl, .Pockets
+ rst JumpTable
+ ret
+
+.Pockets
+ dw .CheckItem
+ dw .CheckBall
+ dw .CheckKeyItem
+ dw .CheckTMHM
+
+.CheckItem
+ ld hl, NumItems
+ call .CheckRegisteredNo
+ jr c, .NoRegisteredItem
+ inc hl
+ ld e, a
+ ld d, 0
+rept 2
+ add hl, de
+endr
+ call .IsSameItem
+ jr c, .NoRegisteredItem
+ and a
+ ret
+
+.CheckKeyItem
+ ld a, [RegisteredItem]
+ ld hl, KeyItems
+ ld de, 1
+ call IsInArray
+ jr nc, .NoRegisteredItem
+ ld a, [RegisteredItem]
+ ld [CurItem], a
+ and a
+ ret
+
+.CheckBall
+ ld hl, NumBalls
+ call .CheckRegisteredNo
+ jr nc, .NoRegisteredItem
+ inc hl
+ ld e, a
+ ld d, 0
+rept 2
+ add hl, de
+endr
+ call .IsSameItem
+ jr c, .NoRegisteredItem
+ ret
+
+.CheckTMHM
+ jr .NoRegisteredItem
+
+.NoRegisteredItem
+ xor a
+ ld [WhichRegisteredItem], a
+ ld [RegisteredItem], a
+ scf
+ ret
+; 133a6
+
+
+.CheckRegisteredNo ; 133a6
+ ld a, [WhichRegisteredItem]
+ and REGISTERED_NUMBER
+ dec a
+ cp [hl]
+ jr nc, .NotEnoughItems
+ ld [wd107], a
+ and a
+ ret
+
+.NotEnoughItems
+ scf
+ ret
+; 133b6
+
+
+.IsSameItem ; 133b6
+ ld a, [RegisteredItem]
+ cp [hl]
+ jr nz, .NotSameItem
+ ld [CurItem], a
+ and a
+ ret
+
+.NotSameItem
+ scf
+ ret
+; 133c3
+
+
+UseRegisteredItem: ; 133c3
+
+ callba CheckItemMenu
+ ld a, [wItemAttributeParamBuffer]
+ ld hl, .SwitchTo
+ rst JumpTable
+ ret
+
+.SwitchTo
+ dw .CantUse
+ dw .NoFunction
+ dw .NoFunction
+ dw .NoFunction
+ dw .Current
+ dw .Party
+ dw .Overworld
+; 133df
+
+.NoFunction ; 133df
+ call LoadFont
+ call CantUseItem
+ call LoadMoveSprites
+ and a
+ ret
+; 133ea
+
+.Current ; 133ea
+ call LoadFont
+ call DoItemEffect
+ call LoadMoveSprites
+ and a
+ ret
+; 133f5
+
+.Party ; 133f5
+ call ResetWindow
+ call FadeToMenu
+ call DoItemEffect
+ call Function2b3c
+ call LoadMoveSprites
+ and a
+ ret
+; 13406
+
+.Overworld ; 13406
+ call ResetWindow
+ ld a, 1
+ ld [wd0ef], a
+ call DoItemEffect
+ xor a
+ ld [wd0ef], a
+ ld a, [wd0ec]
+ cp 1
+ jr nz, ._cantuse
+ scf
+ ld a, HMENURETURN_SCRIPT
+ ld [hMenuReturn], a
+ ret
+; 13422
+
+.CantUse ; 13422
+ call ResetWindow
+
+._cantuse
+ call CantUseItem
+ call LoadMoveSprites
+ and a
+ ret
+; 1342d