mid-kid baa0dc5a96 Organize the engine/ directory
This is an informed attempt at reorganizing the engine/ directory by
creating categorized subdirectories, in order to make it easier to
navigate and find things.

The directories created are as follows:
* engine/game: Contains all "minigames", things like the unown puzzle
and slot machine.
* engine/gfx: Contains all handling of graphics. From loading palettes
to playing animations.
* engine/link: Contains all multiplayer functionality.
* engine/menu: Contains all generic/misc. menus and menu code.
Other, more specialized menus are in their own subdirectories (pokedex,
pokegear, party menu, etc).
* engine/overworld: Contains all handling of the overworld. From loading
and connecting maps to wild encounters and the scripting engine.
* engine/pokegear: In the same vein as engine/pokedex, except it could
use some more splitting up.
* engine/pokemon: Contains everything related to manipulating pokemon
data. From the pokemon storage system to evolution and mail.
* engine/printer: Contains everything related to printing things as well
as the printer communication.
* engine/title: Contains intro sequences, title screens and credits.
2018-03-13 13:21:40 +01:00

192 lines
2.5 KiB
NASM
Executable File

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, [wWhichRegisteredItem]
and a
jr z, .NoRegisteredItem
and REGISTERED_POCKET
rlca
rlca
ld hl, .Pockets
rst JumpTable
ret
.Pockets:
; entries correspond to *_POCKET constants
dw .CheckItem
dw .CheckBall
dw .CheckKeyItem
dw .CheckTMHM
.CheckItem:
ld hl, wNumItems
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, [wRegisteredItem]
ld hl, wKeyItems
ld de, 1
call IsInArray
jr nc, .NoRegisteredItem
ld a, [wRegisteredItem]
ld [wCurItem], a
and a
ret
.CheckBall:
ld hl, wNumBalls
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 [wWhichRegisteredItem], a
ld [wRegisteredItem], a
scf
ret
; 133a6
.CheckRegisteredNo: ; 133a6
ld a, [wWhichRegisteredItem]
and REGISTERED_NUMBER
dec a
cp [hl]
jr nc, .NotEnoughItems
ld [wCurItemQuantity], a
and a
ret
.NotEnoughItems:
scf
ret
; 133b6
.IsSameItem: ; 133b6
ld a, [wRegisteredItem]
cp [hl]
jr nz, .NotSameItem
ld [wCurItem], a
and a
ret
.NotSameItem:
scf
ret
; 133c3
UseRegisteredItem: ; 133c3
farcall CheckItemMenu
ld a, [wItemAttributeParamBuffer]
ld hl, .SwitchTo
rst JumpTable
ret
.SwitchTo:
; entries correspond to ITEMMENU_* constants
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