diff options
author | yenatch <yenatch@gmail.com> | 2017-12-23 13:17:46 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-23 13:17:46 -0500 |
commit | 878092004956418bfd77bfdb9fc9dd7f640f80d2 (patch) | |
tree | 3a97e3eb15d5c545977038e67589f92158e5bf23 /engine/select_menu.asm | |
parent | a6656a986bf9dde51561cab090648e0117b173ad (diff) | |
parent | 3c37bfc6fa2570a0a77c1230673910257ecf32df (diff) |
Merge pull request #419 from roukaour/master
More reorganization and documentation
Diffstat (limited to 'engine/select_menu.asm')
-rwxr-xr-x | engine/select_menu.asm | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/engine/select_menu.asm b/engine/select_menu.asm new file mode 100755 index 000000000..5d3b5ff0a --- /dev/null +++ b/engine/select_menu.asm @@ -0,0 +1,189 @@ +SelectMenu:: ; 13327 + + call CheckRegisteredItem + jr c, .NotRegistered + jp UseRegisteredItem + +.NotRegistered: + call OpenText + ld b, BANK(ItemMayBeRegisteredText) + ld hl, ItemMayBeRegisteredText + call MapTextbox + call WaitButton + jp CloseText +; 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 + add hl, de + add hl, de + 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 + add hl, de + add hl, de + 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 [CurItemQuantity], 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 OpenText + call CantUseItem + call CloseText + and a + ret +; 133ea + +.Current: ; 133ea + call OpenText + call DoItemEffect + call CloseText + and a + ret +; 133f5 + +.Party: ; 133f5 + call RefreshScreen + call FadeToMenu + call DoItemEffect + call CloseSubmenu + call CloseText + and a + ret +; 13406 + +.Overworld: ; 13406 + call RefreshScreen + ld a, 1 + ld [wUsingItemWithSelect], a + call DoItemEffect + xor a + ld [wUsingItemWithSelect], a + ld a, [wItemEffectSucceeded] + cp 1 + jr nz, ._cantuse + scf + ld a, HMENURETURN_SCRIPT + ld [hMenuReturn], a + ret +; 13422 + +.CantUse: ; 13422 + call RefreshScreen + +._cantuse + call CantUseItem + call CloseText + and a + ret +; 1342d |