summaryrefslogtreecommitdiff
path: root/engine/items/pack.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/items/pack.asm')
-rwxr-xr-xengine/items/pack.asm1589
1 files changed, 800 insertions, 789 deletions
diff --git a/engine/items/pack.asm b/engine/items/pack.asm
index 76b0f5e7..e7caceca 100755
--- a/engine/items/pack.asm
+++ b/engine/items/pack.asm
@@ -1,62 +1,77 @@
+; Pack.Jumptable and BattlePack.Jumptable indexes
+ const_def
+ const PACKSTATE_INITGFX ; 0
+ const PACKSTATE_INITITEMSPOCKET ; 1
+ const PACKSTATE_ITEMSPOCKETMENU ; 2
+ const PACKSTATE_INITBALLSPOCKET ; 3
+ const PACKSTATE_BALLSPOCKETMENU ; 4
+ const PACKSTATE_INITKEYITEMSPOCKET ; 5
+ const PACKSTATE_KEYITEMSPOCKETMENU ; 6
+ const PACKSTATE_INITTMHMPOCKET ; 7
+ const PACKSTATE_TMHMPOCKETMENU ; 8
+ const PACKSTATE_QUITNOSCRIPT ; 9
+ const PACKSTATE_QUITRUNSCRIPT ; 10
+
Pack:
ld hl, wOptions
set NO_TEXT_SCROLL, [hl]
- call Function10aba
-.asm_10438
+ call InitPackBuffers
+.loop
call JoyTextDelay
- ld a, [wce63]
+ ld a, [wJumptableIndex]
bit 7, a
- jr nz, .asm_1044a
- call Function10456
+ jr nz, .done
+ call .RunJumptable
call DelayFrame
- jr .asm_10438
+ jr .loop
-.asm_1044a
- ld a, [wce65]
+.done
+ ld a, [wCurPocket]
ld [wLastPocket], a
ld hl, wOptions
res NO_TEXT_SCROLL, [hl]
ret
-Function10456: ; 10456 (4:4456)
- ld a, [wce63]
- ld hl, .Jumptable ; $4460
- call Function10c9b
+.RunJumptable:
+ ld a, [wJumptableIndex]
+ ld hl, .Jumptable
+ call Pack_GetJumptablePointer
jp hl
-.Jumptable
- dw Pack_InitGFX
- dw Pack_InitItemsPocket
- dw Pack_ItemsPocketMenu
- dw Pack_InitBallsPocket
- dw Pack_BallsPocketMenu
- dw Pack_InitKeyItemsPocket
- dw Pack_KeyItemsPocketMenu
- dw Pack_InitTMHMPocket
- dw Pack_TMHMPocketMenu
- dw Pack_ExitNoScript
- dw Pack_ExitRunScript
-
-Pack_InitGFX:
+.Jumptable:
+; entries correspond to PACKSTATE_* constants
+ dw .InitGFX ; 0
+ dw .InitItemsPocket ; 1
+ dw .ItemsPocketMenu ; 2
+ dw .InitBallsPocket ; 3
+ dw .BallsPocketMenu ; 4
+ dw .InitKeyItemsPocket ; 5
+ dw .KeyItemsPocketMenu ; 6
+ dw .InitTMHMPocket ; 7
+ dw .TMHMPocketMenu ; 8
+ dw Pack_QuitNoScript ; 9
+ dw Pack_QuitRunScript ; 10
+
+.InitGFX:
xor a
ldh [hBGMapMode], a
- call Function10d70
- ld a, [wce64]
- ld [wce63], a
- call Function10e5b
+ call Pack_InitGFX
+ ld a, [wPackJumptableIndex]
+ ld [wJumptableIndex], a
+ call Pack_InitColors
ret
-Pack_InitItemsPocket:
- xor a
- ld [wce65], a
- call Function10e51
- call Function10dd6
- call Function10cca
- call Function10c96
+.InitItemsPocket:
+ xor a ; ITEM_POCKET
+ ld [wCurPocket], a
+ call ClearPocketList
+ call DrawPocketName
+ call WaitBGMap_DrawPackGFX
+ call Pack_JumptableNext
ret
-Pack_ItemsPocketMenu:
- ld hl, ItemsPocketMenuDataHeader
+.ItemsPocketMenu:
+ ld hl, ItemsPocketMenuHeader
call CopyMenuHeader
ld a, [wItemsPocketCursor]
ld [wMenuCursorBuffer], a
@@ -67,25 +82,24 @@ Pack_ItemsPocketMenu:
ld [wItemsPocketScrollPosition], a
ld a, [wMenuCursorY]
ld [wItemsPocketCursor], a
-.asm_104b7
- ld b, $7
- ld c, $3
- call Function10cef
+ ld b, PACKSTATE_INITTMHMPOCKET ; left
+ ld c, PACKSTATE_INITBALLSPOCKET ; right
+ call Pack_InterpretJoypad
ret c
- call Function105f5
+ call .ItemBallsKey_LoadSubmenu
ret
-Pack_InitKeyItemsPocket:
- ld a, $2
- ld [wce65], a
- call Function10e51
- call Function10dd6
- call Function10cca
- call Function10c96
+.InitKeyItemsPocket:
+ ld a, KEY_ITEM_POCKET
+ ld [wCurPocket], a
+ call ClearPocketList
+ call DrawPocketName
+ call WaitBGMap_DrawPackGFX
+ call Pack_JumptableNext
ret
-Pack_KeyItemsPocketMenu:
- ld hl, KeyItemsPocketMenuDataHeader ; $4e9a
+.KeyItemsPocketMenu:
+ ld hl, KeyItemsPocketMenuHeader
call CopyMenuHeader
ld a, [wKeyItemsPocketCursor]
ld [wMenuCursorBuffer], a
@@ -96,42 +110,42 @@ Pack_KeyItemsPocketMenu:
ld [wKeyItemsPocketScrollPosition], a
ld a, [wMenuCursorY]
ld [wKeyItemsPocketCursor], a
- ld b, $3
- ld c, $7
- call Function10cef
+ ld b, PACKSTATE_INITBALLSPOCKET ; left
+ ld c, PACKSTATE_INITTMHMPOCKET ; right
+ call Pack_InterpretJoypad
ret c
- call Function105f5
+ call .ItemBallsKey_LoadSubmenu
ret
-Pack_InitTMHMPocket:
- ld a, $3
- ld [wce65], a
- call Function10e51
- call Function10dd6
+.InitTMHMPocket:
+ ld a, TM_HM_POCKET
+ ld [wCurPocket], a
+ call ClearPocketList
+ call DrawPocketName
xor a
ldh [hBGMapMode], a
- call Function10cca
- call Function10c96
+ call WaitBGMap_DrawPackGFX
+ call Pack_JumptableNext
ret
-Pack_TMHMPocketMenu:
+.TMHMPocketMenu:
farcall TMHMPocket
- ld b, $5
- ld c, $1
- call Function10cef
+ ld b, PACKSTATE_INITKEYITEMSPOCKET ; left
+ ld c, PACKSTATE_INITITEMSPOCKET ; right
+ call Pack_InterpretJoypad
ret c
farcall _CheckTossableItem
ld a, [wItemAttributeParamBuffer]
and a
- jr nz, .asm_1053a
- ld hl, TMHMPocketSubmenuDataHeader_Give ; $456b
- ld de, TMHMPocketSubmenuJumptable_Give ; $4583
- jr .asm_10540
-
-.asm_1053a
- ld hl, TMHMPocketSubmenuDataHeader_NoGive ; $4554
- ld de, TMHMPocketSubmenuJumptable_NoGive ; $4567
-.asm_10540
+ jr nz, .use_quit
+ ld hl, .MenuHeader2
+ ld de, .Jumptable2
+ jr .load_jump
+
+.use_quit
+ ld hl, .MenuHeader1
+ ld de, .Jumptable1
+.load_jump
push de
call LoadMenuHeader
call VerticalMenu
@@ -140,76 +154,74 @@ Pack_TMHMPocketMenu:
ret c
ld a, [wMenuCursorY]
dec a
- call Function10c9b
+ call Pack_GetJumptablePointer
jp hl
-TMHMPocketSubmenuDataHeader_NoGive:
- db $40
- db 07, 00
- db 11, 06
- dw .MenuData2
- db 1
+.MenuHeader1:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 7, SCREEN_WIDTH - 14, TEXTBOX_Y - 1
+ dw .MenuData_1
+ db 1 ; default option
-.MenuData2:
- db $c0
- db 2
+.MenuData_1:
+ db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
+ db 2 ; items
db "USE@"
db "QUIT@"
-TMHMPocketSubmenuJumptable_NoGive:
- dw UseTMorHM
+.Jumptable1:
+ dw .UseItem
dw QuitItemSubmenu
-TMHMPocketSubmenuDataHeader_Give:
- db $40
- db 05, 00
- db 11, 06
- dw .MenuData2
- db 1
+.MenuHeader2:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 5, SCREEN_WIDTH - 14, TEXTBOX_Y - 1
+ dw .MenuData_2
+ db 1 ; default option
-.MenuData2:
- db $c0
- db 3
+.MenuData_2:
+ db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
+ db 3 ; items
db "USE@"
db "GIVE@"
db "QUIT@"
-TMHMPocketSubmenuJumptable_Give:
- dw UseTMorHM
+.Jumptable2:
+ dw .UseItem
dw GiveItem
dw QuitItemSubmenu
-UseTMorHM:
+.UseItem:
farcall AskTeachTMHM
ret c
farcall ChooseMonToLearnTMHM
- jr c, .asm_105a9
+ jr c, .declined
ld hl, wOptions
ld a, [hl]
push af
- res 4, [hl]
+ res NO_TEXT_SCROLL, [hl]
farcall TeachTMHM
pop af
ld [wOptions], a
-.asm_105a9
+.declined
xor a
ldh [hBGMapMode], a
- call Function10d70
- call Function10cca
- call Function10e5b
+ call Pack_InitGFX
+ call WaitBGMap_DrawPackGFX
+ call Pack_InitColors
ret
-Pack_InitBallsPocket:
- ld a, $1
- ld [wce65], a
- call Function10e51
- call Function10dd6
- call Function10cca
- call Function10c96
+.InitBallsPocket:
+ ld a, BALL_POCKET
+ ld [wCurPocket], a
+ call ClearPocketList
+ call DrawPocketName
+ call WaitBGMap_DrawPackGFX
+ call Pack_JumptableNext
ret
-Pack_BallsPocketMenu:
- ld hl, BallsPocketMenuDataHeader ; $4eca
+.BallsPocketMenu:
+ ld hl, BallsPocketMenuHeader
call CopyMenuHeader
ld a, [wBallsPocketCursor]
ld [wMenuCursorBuffer], a
@@ -220,71 +232,71 @@ Pack_BallsPocketMenu:
ld [wBallsPocketScrollPosition], a
ld a, [wMenuCursorY]
ld [wBallsPocketCursor], a
- ld b, $1
- ld c, $5
- call Function10cef
+ ld b, PACKSTATE_INITITEMSPOCKET ; left
+ ld c, PACKSTATE_INITKEYITEMSPOCKET ; right
+ call Pack_InterpretJoypad
ret c
- call Function105f5
+ call .ItemBallsKey_LoadSubmenu
ret
-Function105f5: ; 105f5 (4:45f5)
+.ItemBallsKey_LoadSubmenu:
farcall _CheckTossableItem
ld a, [wItemAttributeParamBuffer]
and a
- jr nz, .asm_10629
+ jr nz, .tossable
farcall CheckSelectableItem
ld a, [wItemAttributeParamBuffer]
and a
- jr nz, .asm_1061b
+ jr nz, .selectable
farcall CheckItemMenu
ld a, [wItemAttributeParamBuffer]
and a
- jr nz, .asm_10637
- jr .asm_10657
+ jr nz, .usable
+ jr .unusable
-.asm_1061b
+.selectable
farcall CheckItemMenu
ld a, [wItemAttributeParamBuffer]
and a
- jr nz, .asm_1063f
- jr .asm_1065f
+ jr nz, .selectable_usable
+ jr .selectable_unusable
-.asm_10629
+.tossable
farcall CheckSelectableItem
ld a, [wItemAttributeParamBuffer]
and a
- jr nz, .asm_10647
- jr .asm_1064f
-
-.asm_10637
- ld hl, ItemSubmenuDataHeader_UseGiveTossSelQuit ; $4679
- ld de, ItemSubmenuJumptable_UseGiveTossSelQuit ; $469a
- jr .asm_10665
-
-.asm_1063f
- ld hl, ItemSubmenuDataHeader_UseGiveTossQuit ; $46a4
- ld de, ItemSubmenuJumptable_UseGiveTossQuit ; $46c1
- jr .asm_10665
-
-.asm_10647
- ld hl, ItemSubmenuDataHeader_UseQuit ; $46c9
- ld de, ItemSubmenuJumptable_UseQuit ; $46dc
- jr .asm_10665
-
-.asm_1064f
- ld hl, ItemSubmenuDataHeader_UseSelQuit ; $46e0
- ld de, ItemSubmenuJumptable_UseSelQuit ; $46f7
- jr .asm_10665
-
-.asm_10657
- ld hl, ItemSubmenuDataHeader_GiveTossSelQuit ; $46fd
- ld de, ItemSubmenuJumptable_GiveTossSelQuit ; $471a
- jr .asm_10665
-
-.asm_1065f
- ld hl, ItemSubmenuDataHeader_GiveTossQuit ; $4722
- ld de, ItemSubmenuJumptable_GiveTossQuit ; $473b
-.asm_10665
+ jr nz, .tossable_selectable
+ jr .tossable_unselectable
+
+.usable
+ ld hl, MenuHeader_UsableKeyItem
+ ld de, Jumptable_UseGiveTossRegisterQuit
+ jr .build_menu
+
+.selectable_usable
+ ld hl, MenuHeader_UsableItem
+ ld de, Jumptable_UseGiveTossQuit
+ jr .build_menu
+
+.tossable_selectable
+ ld hl, MenuHeader_UnusableItem
+ ld de, Jumptable_UseQuit
+ jr .build_menu
+
+.tossable_unselectable
+ ld hl, MenuHeader_UnusableKeyItem
+ ld de, Jumptable_UseRegisterQuit
+ jr .build_menu
+
+.unusable
+ ld hl, MenuHeader_HoldableKeyItem
+ ld de, Jumptable_GiveTossRegisterQuit
+ jr .build_menu
+
+.selectable_unusable
+ ld hl, MenuHeader_HoldableItem
+ ld de, Jumptable_GiveTossQuit
+.build_menu
push de
call LoadMenuHeader
call VerticalMenu
@@ -293,18 +305,17 @@ Function105f5: ; 105f5 (4:45f5)
ret c
ld a, [wMenuCursorY]
dec a
- call Function10c9b
+ call Pack_GetJumptablePointer
jp hl
-ItemSubmenuDataHeader_UseGiveTossSelQuit:
- db $40 ; flags
- db 02, 00 ; start coords
- db 12, 06 ; end coords
- dw .MenuData2
+MenuHeader_UsableKeyItem:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 2, SCREEN_WIDTH - 14, TEXTBOX_Y
+ dw .MenuData
db 1 ; default option
-.MenuData2:
- db $c0 ; flags
+.MenuData:
+ db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
db 5 ; items
db "USE@"
db "GIVE@"
@@ -312,106 +323,101 @@ ItemSubmenuDataHeader_UseGiveTossSelQuit:
db "SEL@"
db "QUIT@"
-ItemSubmenuJumptable_UseGiveTossSelQuit:
+Jumptable_UseGiveTossRegisterQuit:
dw UseItem
dw GiveItem
dw TossMenu
dw RegisterItem
dw QuitItemSubmenu
-ItemSubmenuDataHeader_UseGiveTossQuit:
- db $40 ; flags
- db 03, 00 ; start coords
- db 11, 06 ; end coords
- dw .MenuData2
+MenuHeader_UsableItem:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 3, SCREEN_WIDTH - 14, TEXTBOX_Y - 1
+ dw .MenuData
db 1 ; default option
-.MenuData2:
- db $c0 ; flags
+.MenuData:
+ db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
db 4 ; items
db "USE@"
db "GIVE@"
db "TOSS@"
db "QUIT@"
-ItemSubmenuJumptable_UseGiveTossQuit:
+Jumptable_UseGiveTossQuit:
dw UseItem
dw GiveItem
dw TossMenu
dw QuitItemSubmenu
-ItemSubmenuDataHeader_UseQuit:
- db %01000000 ; flags
- db 07, 00 ; start coords
- db 11, 06 ; end coords
- dw .MenuData2
+MenuHeader_UnusableItem:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 7, SCREEN_WIDTH - 14, TEXTBOX_Y - 1
+ dw .MenuData
db 1 ; default option
-.MenuData2:
- db $c0 ; flags
+.MenuData:
+ db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
db 2 ; items
db "USE@"
db "QUIT@"
-ItemSubmenuJumptable_UseQuit:
+Jumptable_UseQuit:
dw UseItem
dw QuitItemSubmenu
-ItemSubmenuDataHeader_UseSelQuit:
- db %01000000 ; flags
- db 05, 00 ; start coords
- db 11, 06 ; end coords
- dw .MenuData2
+MenuHeader_UnusableKeyItem:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 5, SCREEN_WIDTH - 14, TEXTBOX_Y - 1
+ dw .MenuData
db 1 ; default option
-.MenuData2:
- db $c0 ; flags
+.MenuData:
+ db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
db 3 ; items
db "USE@"
db "SEL@"
db "QUIT@"
-ItemSubmenuJumptable_UseSelQuit:
+Jumptable_UseRegisterQuit:
dw UseItem
dw RegisterItem
dw QuitItemSubmenu
-ItemSubmenuDataHeader_GiveTossSelQuit:
- db $40 ; flags
- db 03, 00 ; start coords
- db 11, 06 ; end coords
- dw .MenuData2
+MenuHeader_HoldableKeyItem:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 3, SCREEN_WIDTH - 14, TEXTBOX_Y - 1
+ dw .MenuData
db 1 ; default option
-.MenuData2:
- db $c0 ; flags
+.MenuData:
+ db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
db 4 ; items
db "GIVE@"
db "TOSS@"
db "SEL@"
db "QUIT@"
-ItemSubmenuJumptable_GiveTossSelQuit:
+Jumptable_GiveTossRegisterQuit:
dw GiveItem
dw TossMenu
dw RegisterItem
dw QuitItemSubmenu
-ItemSubmenuDataHeader_GiveTossQuit:
- db $40 ; flags
- db 05, 00 ; start coords
- db 11, 06 ; end coords
- dw .MenuData2
+MenuHeader_HoldableItem:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 5, SCREEN_WIDTH - 14, TEXTBOX_Y - 1
+ dw .MenuData
db 1 ; default option
-.MenuData2:
- db $c0 ; flags
+.MenuData:
+ db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
db 3 ; items
db "GIVE@"
db "TOSS@"
db "QUIT@"
-ItemSubmenuJumptable_GiveTossQuit:
+Jumptable_GiveTossQuit:
dw GiveItem
dw TossMenu
dw QuitItemSubmenu
@@ -419,102 +425,103 @@ ItemSubmenuJumptable_GiveTossQuit:
UseItem:
farcall CheckItemMenu
ld a, [wItemAttributeParamBuffer]
- ld hl, .Jumptable
+ ld hl, .dw
rst JumpTable
ret
-.Jumptable
- dw .NotTheTime
- dw .NotTheTime
- dw .NotTheTime
- dw .NotTheTime
- dw .Current
- dw .Party
- dw .Field
+.dw
+; entries correspond to ITEMMENU_* constants
+ dw .Oak ; ITEMMENU_NOUSE
+ dw .Oak
+ dw .Oak
+ dw .Oak
+ dw .Current ; ITEMMENU_CURRENT
+ dw .Party ; ITEMMENU_PARTY
+ dw .Field ; ITEMMENU_CLOSE
-.NotTheTime
- ld hl, Text_ThisIsntTheTime
- call Function10cb9
+.Oak:
+ ld hl, OakThisIsntTheTimeText
+ call Pack_PrintTextNoScroll
ret
-.Current
+.Current:
call DoItemEffect
ret
-.Party
+.Party:
ld a, [wPartyCount]
and a
- jr z, .no_pokemon
+ jr z, .NoPokemon
call DoItemEffect
xor a
ldh [hBGMapMode], a
- call Function10d70
- call Function10cca
- call Function10e5b
+ call Pack_InitGFX
+ call WaitBGMap_DrawPackGFX
+ call Pack_InitColors
ret
-.no_pokemon
- ld hl, Text_YouDontHaveAPokemon
- call Function10cb9
+.NoPokemon:
+ ld hl, YouDontHaveAMonText
+ call Pack_PrintTextNoScroll
ret
-.Field
+.Field:
call DoItemEffect
- ld a, [wFieldMoveSucceeded]
+ ld a, [wItemEffectSucceeded]
and a
- jr z, .NotTheTime
- ld a, $a
- ld [wce63], a
+ jr z, .Oak
+ ld a, PACKSTATE_QUITRUNSCRIPT
+ ld [wJumptableIndex], a
ret
TossMenu:
- ld hl, Text_ThrowAwayHowMany
- call Function10cb9
- farcall SelectQuantityToToss ; 9:4f20
+ ld hl, AskThrowAwayText
+ call Pack_PrintTextNoScroll
+ farcall SelectQuantityToToss
push af
call ExitMenu
pop af
- jr c, .asm_107cc
- call Function10e38
- ld hl, Text_ConfirmThrowAway
+ jr c, .finish
+ call Pack_GetItemName
+ ld hl, AskQuantityThrowAwayText
call MenuTextbox
call YesNoBox
push af
call ExitMenu
pop af
- jr c, .asm_107cc
- ld hl, wTMsHMsEnd
+ jr c, .finish
+ ld hl, wNumItems
ld a, [wCurItemQuantity]
call TossItem
- call Function10e38
- ld hl, Text_ThrewAway
- call Function10cb9
-.asm_107cc
+ call Pack_GetItemName
+ ld hl, ThrewAwayText
+ call Pack_PrintTextNoScroll
+.finish
ret
-Function107cd:
- ld a, [wce65]
- and a
- jr z, .asm_107e2
- dec a
- jr z, .asm_107da
- dec a
- jr z, .asm_107ea
+Unreferenced_ResetPocketCursorPositions:
+ ld a, [wCurPocket]
+ and a ; ITEM_POCKET
+ jr z, .items
+ dec a ; BALL_POCKET
+ jr z, .balls
+ dec a ; KEY_ITEM_POCKET
+ jr z, .key
ret
-.asm_107da
+.balls
xor a
ld [wBallsPocketCursor], a
ld [wBallsPocketScrollPosition], a
ret
-.asm_107e2
+.items
xor a
ld [wItemsPocketCursor], a
ld [wItemsPocketScrollPosition], a
ret
-.asm_107ea
+.key
xor a
ld [wKeyItemsPocketCursor], a
ld [wKeyItemsPocketScrollPosition], a
@@ -524,156 +531,156 @@ RegisterItem:
farcall CheckSelectableItem
ld a, [wItemAttributeParamBuffer]
and a
- jr nz, .asm_10826
- ld a, [wce65]
+ jr nz, .cant_register
+ ld a, [wCurPocket]
rrca
rrca
- and $c0
+ and REGISTERED_POCKET
ld b, a
ld a, [wCurItemQuantity]
inc a
- and $3f
+ and REGISTERED_NUMBER
or b
ld [wWhichRegisteredItem], a
ld a, [wCurItem]
ld [wRegisteredItem], a
- call Function10e38
+ call Pack_GetItemName
ld de, SFX_FULL_HEAL
call WaitPlaySFX
- ld hl, Text_RegisteredTheItem
- call Function10cb9
+ ld hl, RegisteredItemText
+ call Pack_PrintTextNoScroll
ret
-.asm_10826
- ld hl, Text_CantRegisterThatItem
- call Function10cb9
+.cant_register
+ ld hl, CantRegisterText
+ call Pack_PrintTextNoScroll
ret
GiveItem:
ld a, [wPartyCount]
and a
- jp z, Function108b6
+ jp z, .NoPokemon
ld a, [wOptions]
push af
- res 4, a
+ res NO_TEXT_SCROLL, a
ld [wOptions], a
- ld a, $8
+ ld a, PARTYMENUACTION_GIVE_ITEM
ld [wPartyMenuActionText], a
call ClearBGPalettes
farcall LoadPartyMenuGFX
farcall InitPartyMenuWithCancel
farcall InitPartyMenuGFX
-.asm_10857
+.loop
farcall WritePartyMenuTilemap
farcall PrintPartyMenuText
call WaitBGMap
call SetPalettes
call DelayFrame
farcall PartyMenuSelect
- jr c, .asm_108a5
+ jr c, .finish
ld a, [wCurPartySpecies]
cp EGG
- jr nz, .asm_10883
- ld hl, Text_AnEggCantHoldAnItem
+ jr nz, .give
+ ld hl, .AnEggCantHoldAnItemText
call PrintText
- jr .asm_10857
+ jr .loop
-.asm_10883
- ld a, [wce63]
+.give
+ ld a, [wJumptableIndex]
push af
- ld a, [wce64]
+ ld a, [wPackJumptableIndex]
push af
call GetCurNick
ld hl, wStringBuffer1
ld de, wMonOrItemNameBuffer
- ld bc, $b
+ ld bc, MON_NAME_LENGTH
call CopyBytes
call TryGiveItemToPartymon
pop af
- ld [wce64], a
+ ld [wPackJumptableIndex], a
pop af
- ld [wce63], a
-.asm_108a5
+ ld [wJumptableIndex], a
+.finish
pop af
ld [wOptions], a
xor a
ldh [hBGMapMode], a
- call Function10d70
- call Function10cca
- call Function10e5b
+ call Pack_InitGFX
+ call WaitBGMap_DrawPackGFX
+ call Pack_InitColors
ret
-Function108b6: ; 108b6 (4:48b6)
- ld hl, Text_YouDontHaveAPokemon ; $4f13
- call Function10cb9
+.NoPokemon:
+ ld hl, YouDontHaveAMonText
+ call Pack_PrintTextNoScroll
ret
-
-Text_AnEggCantHoldAnItem:
- text_far Text_AnEGGCantHoldAnItem
- db "@"
+.AnEggCantHoldAnItemText:
+ text_far _AnEggCantHoldAnItemText
+ text_end
QuitItemSubmenu:
ret
BattlePack:
ld hl, wOptions
- set 4, [hl]
- call Function10aba
-.asm_108cb
+ set NO_TEXT_SCROLL, [hl]
+ call InitPackBuffers
+.loop
call JoyTextDelay
- ld a, [wce63]
+ ld a, [wJumptableIndex]
bit 7, a
- jr nz, .asm_108dd
- call Function108e9
+ jr nz, .end
+ call .RunJumptable
call DelayFrame
- jr .asm_108cb
+ jr .loop
-.asm_108dd
- ld a, [wce65]
+.end
+ ld a, [wCurPocket]
ld [wLastPocket], a
ld hl, wOptions
- res 4, [hl]
+ res NO_TEXT_SCROLL, [hl]
ret
-Function108e9: ; 108e9 (4:48e9)
- ld a, [wce63]
+.RunJumptable:
+ ld a, [wJumptableIndex]
ld hl, .Jumptable
- call Function10c9b
+ call Pack_GetJumptablePointer
jp hl
-.Jumptable
- dw BattlePack_InitGFX
- dw BattlePack_InitItemsPocket
- dw BattlePack_ItemsPocketMenu
- dw BattlePack_InitBallsPocket
- dw BattlePack_BallsPocketMenu
- dw BattlePack_InitKeyItemsPocket
- dw BattlePack_KeyItemsPocketMenu
- dw BattlePack_InitTMHMPocket
- dw BattlePack_TMHMPocketMenu
- dw Pack_ExitNoScript
- dw Pack_ExitRunScript
-
-BattlePack_InitGFX:
+.Jumptable:
+; entries correspond to PACKSTATE_* constants
+ dw .InitGFX ; 0
+ dw .InitItemsPocket ; 1
+ dw .ItemsPocketMenu ; 2
+ dw .InitBallsPocket ; 3
+ dw .BallsPocketMenu ; 4
+ dw .InitKeyItemsPocket ; 5
+ dw .KeyItemsPocketMenu ; 6
+ dw .InitTMHMPocket ; 7
+ dw .TMHMPocketMenu ; 8
+ dw Pack_QuitNoScript ; 9
+ dw Pack_QuitRunScript ; 10
+
+.InitGFX:
xor a
ldh [hBGMapMode], a
- call Function10d70
- ld a, [wce64]
- ld [wce63], a
- call Function10e5b
+ call Pack_InitGFX
+ ld a, [wPackJumptableIndex]
+ ld [wJumptableIndex], a
+ call Pack_InitColors
ret
-BattlePack_InitItemsPocket:
- xor a
- ld [wce65], a
- call Function10e51
- call Function10dd6
- call Function10cca
- call Function10c96
+.InitItemsPocket:
+ xor a ; ITEM_POCKET
+ ld [wCurPocket], a
+ call ClearPocketList
+ call DrawPocketName
+ call WaitBGMap_DrawPackGFX
+ call Pack_JumptableNext
ret
-BattlePack_ItemsPocketMenu:
- ld hl, $4e6a
+.ItemsPocketMenu:
+ ld hl, ItemsPocketMenuHeader
call CopyMenuHeader
ld a, [wItemsPocketCursor]
ld [wMenuCursorBuffer], a
@@ -684,24 +691,24 @@ BattlePack_ItemsPocketMenu:
ld [wItemsPocketScrollPosition], a
ld a, [wMenuCursorY]
ld [wItemsPocketCursor], a
- ld b, $7
- ld c, $3
- call Function10cef
+ ld b, PACKSTATE_INITTMHMPOCKET ; left
+ ld c, PACKSTATE_INITBALLSPOCKET ; right
+ call Pack_InterpretJoypad
ret c
- call Function10a03
+ call ItemSubmenu
ret
-BattlePack_InitKeyItemsPocket:
- ld a, $2
- ld [wce65], a
- call Function10e51
- call Function10dd6
- call Function10cca
- call Function10c96
+.InitKeyItemsPocket:
+ ld a, KEY_ITEM_POCKET
+ ld [wCurPocket], a
+ call ClearPocketList
+ call DrawPocketName
+ call WaitBGMap_DrawPackGFX
+ call Pack_JumptableNext
ret
-BattlePack_KeyItemsPocketMenu:
- ld hl, $4e9a
+.KeyItemsPocketMenu:
+ ld hl, KeyItemsPocketMenuHeader
call CopyMenuHeader
ld a, [wKeyItemsPocketCursor]
ld [wMenuCursorBuffer], a
@@ -712,47 +719,47 @@ BattlePack_KeyItemsPocketMenu:
ld [wKeyItemsPocketScrollPosition], a
ld a, [wMenuCursorY]
ld [wKeyItemsPocketCursor], a
- ld b, $3
- ld c, $7
- call Function10cef
+ ld b, PACKSTATE_INITBALLSPOCKET ; left
+ ld c, PACKSTATE_INITTMHMPOCKET ; right
+ call Pack_InterpretJoypad
ret c
- call Function10a03
+ call ItemSubmenu
ret
-BattlePack_InitTMHMPocket:
- ld a, $3
- ld [wce65], a
- call Function10e51
- call Function10dd6
+.InitTMHMPocket:
+ ld a, TM_HM_POCKET
+ ld [wCurPocket], a
+ call ClearPocketList
+ call DrawPocketName
xor a
ldh [hBGMapMode], a
- call Function10cca
- ld hl, Text_PackEmptyString
- call Function10cb9
- call Function10c96
+ call WaitBGMap_DrawPackGFX
+ ld hl, PackEmptyText
+ call Pack_PrintTextNoScroll
+ call Pack_JumptableNext
ret
-BattlePack_TMHMPocketMenu:
- farcall TMHMPocket ; b:457a
- ld b, $5
- ld c, $1
- call Function10cef
+.TMHMPocketMenu:
+ farcall TMHMPocket
+ ld b, PACKSTATE_INITKEYITEMSPOCKET ; left
+ ld c, PACKSTATE_INITITEMSPOCKET ; right
+ call Pack_InterpretJoypad
ret c
xor a
- call Function10a0c
+ call TMHMSubmenu
ret
-BattlePack_InitBallsPocket:
- ld a, $1
- ld [wce65], a
- call Function10e51
- call Function10dd6
- call Function10cca
- call Function10c96
+.InitBallsPocket:
+ ld a, BALL_POCKET
+ ld [wCurPocket], a
+ call ClearPocketList
+ call DrawPocketName
+ call WaitBGMap_DrawPackGFX
+ call Pack_JumptableNext
ret
-BattlePack_BallsPocketMenu:
- ld hl, $4eca
+.BallsPocketMenu:
+ ld hl, BallsPocketMenuHeader
call CopyMenuHeader
ld a, [wBallsPocketCursor]
ld [wMenuCursorBuffer], a
@@ -763,27 +770,27 @@ BattlePack_BallsPocketMenu:
ld [wBallsPocketScrollPosition], a
ld a, [wMenuCursorY]
ld [wBallsPocketCursor], a
- ld b, $1
- ld c, $5
- call Function10cef
+ ld b, PACKSTATE_INITITEMSPOCKET ; left
+ ld c, PACKSTATE_INITKEYITEMSPOCKET ; right
+ call Pack_InterpretJoypad
ret c
- call Function10a03
+ call ItemSubmenu
ret
-Function10a03: ; 10a03 (4:4a03)
+ItemSubmenu:
farcall CheckItemContext
ld a, [wItemAttributeParamBuffer]
-Function10a0c: ; 10a0c (4:4a0c)
+TMHMSubmenu:
and a
- jr z, .asm_10a17
- ld hl, BattlePackUseQuitMenuDataHeader
- ld de, BattlePackUseQuitJumptable
- jr .asm_10a1d
-
-.asm_10a17
- ld hl, BattlePackQuitMenuDataHeader
- ld de, BattlePackQuitJumptable
-.asm_10a1d
+ jr z, .NoUse
+ ld hl, .UsableMenuHeader
+ ld de, .UsableJumptable
+ jr .proceed
+
+.NoUse:
+ ld hl, .UnusableMenuHeader
+ ld de, .UnusableJumptable
+.proceed
push de
call LoadMenuHeader
call VerticalMenu
@@ -792,155 +799,156 @@ Function10a0c: ; 10a0c (4:4a0c)
ret c
ld a, [wMenuCursorY]
dec a
- call Function10c9b
+ call Pack_GetJumptablePointer
jp hl
-BattlePackUseQuitMenuDataHeader:
- db $40 ; flags
- db 07, 00 ; start coords
- db 11, 06 ; end coords
- dw .MenuData2
+.UsableMenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 7, TEXTBOX_HEIGHT, TEXTBOX_Y - 1
+ dw .UsableMenuData
db 1 ; default option
-.MenuData2:
- db $c0 ; flags
+.UsableMenuData:
+ db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
db 2 ; items
db "USE@"
db "QUIT@"
-BattlePackUseQuitJumptable:
- dw BattlePack_UseItem
- dw BattlePack_QuitSubmenu
+.UsableJumptable:
+ dw .Use
+ dw .Quit
-BattlePackQuitMenuDataHeader:
- db $40 ; flags
- db 09, 00 ; start coords
- db 11, 06 ; end coords
- dw .MenuData2
+.UnusableMenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 9, SCREEN_WIDTH - 14, TEXTBOX_Y - 1
+ dw .UnusableMenuData
db 1 ; default option
-.MenuData2:
- db $c0 ; flags
+.UnusableMenuData:
+ db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
db 1 ; items
db "QUIT@"
-BattlePackQuitJumptable:
- dw BattlePack_QuitSubmenu
+.UnusableJumptable:
+ dw .Quit
-BattlePack_UseItem:
+.Use:
farcall CheckItemContext
ld a, [wItemAttributeParamBuffer]
- ld hl, $4a67
+ ld hl, .ItemFunctionJumptable
rst JumpTable
ret
- dw Function10a75
- dw Function10a75
- dw Function10a75
- dw Function10a75
- dw Function10a7c
- dw Function10a86
- dw Function10aa1
+.ItemFunctionJumptable:
+; entries correspond to ITEMMENU_* constants
+ dw .Oak ; ITEMMENU_NOUSE
+ dw .Oak
+ dw .Oak
+ dw .Oak
+ dw .Unused ; ITEMMENU_CURRENT
+ dw .BattleField ; ITEMMENU_PARTY
+ dw .BattleOnly ; ITEMMENU_CLOSE
-Function10a75:
- ld hl, Text_ThisIsntTheTime
- call Function10cb9
+.Oak:
+ ld hl, OakThisIsntTheTimeText
+ call Pack_PrintTextNoScroll
ret
-Function10a7c:
+.Unused:
call DoItemEffect
- ld a, [wFieldMoveSucceeded]
+ ld a, [wItemEffectSucceeded]
and a
- jr nz, asm_10a9c
+ jr nz, .ReturnToBattle
ret
-Function10a86:
+.BattleField:
call DoItemEffect
- ld a, [wFieldMoveSucceeded]
+ ld a, [wItemEffectSucceeded]
and a
- jr nz, asm_10aae
+ jr nz, .quit_run_script
xor a
ldh [hBGMapMode], a
- call Function10d70
- call Function10cca
- call Function10e5b
+ call Pack_InitGFX
+ call WaitBGMap_DrawPackGFX
+ call Pack_InitColors
ret
-asm_10a9c:
+.ReturnToBattle:
call ClearBGPalettes
- jr asm_10aae
+ jr .quit_run_script
-Function10aa1:
+.BattleOnly:
call DoItemEffect
- ld a, [wFieldMoveSucceeded]
+ ld a, [wItemEffectSucceeded]
and a
- jr z, Function10a75
+ jr z, .Oak
cp $2
- jr z, asm_10ab4
-asm_10aae:
- ld a, $a
- ld [wce63], a
+ jr z, .didnt_use_item
+.quit_run_script
+ ld a, PACKSTATE_QUITRUNSCRIPT
+ ld [wJumptableIndex], a
ret
-asm_10ab4:
+.didnt_use_item
xor a
- ld [wFieldMoveSucceeded], a
+ ld [wItemEffectSucceeded], a
ret
-
-BattlePack_QuitSubmenu:
+.Quit:
ret
-Function10aba: ; 10aba (4:4aba)
+InitPackBuffers:
xor a
- ld [wce63], a
+ ld [wJumptableIndex], a
+ ; pocket id -> jumptable index
ld a, [wLastPocket]
- and $3
+ maskbits NUM_POCKETS
ld [wCurPocket], a
inc a
add a
dec a
- ld [wce64], a
- xor a
+ ld [wPackJumptableIndex], a
+ xor a ; FALSE
ld [wPackUsedItem], a
xor a
ld [wSwitchItem], a
ret
-DepositSellInitPackBuffers: ; 10ad5 (4:4ad5)
+DepositSellInitPackBuffers:
xor a
ldh [hBGMapMode], a
- ld [wce63], a
- ld [wce64], a
- ld [wCurPocket], a
+ ld [wJumptableIndex], a ; PACKSTATE_INITGFX
+ ld [wPackJumptableIndex], a ; PACKSTATE_INITGFX
+ ld [wCurPocket], a ; ITEM_POCKET
ld [wPackUsedItem], a
ld [wSwitchItem], a
- call Function10d70
- call Function10e5b
+ call Pack_InitGFX
+ call Pack_InitColors
ret
DepositSellPack:
.loop
- call Function10af7
- call Function10b9f
+ call .RunJumptable
+ call DepositSellTutorial_InterpretJoypad
jr c, .loop
ret
-Function10af7: ; 10af7 (4:4af7)
- ld a, [wce63]
+.RunJumptable:
+ ld a, [wJumptableIndex]
ld hl, .Jumptable
- call Function10c9b
+ call Pack_GetJumptablePointer
jp hl
-.Jumptable
- dw DepositOrSell_ItemPocket
- dw DepositOrSell_BallsPocket
- dw DepositOrSell_KeyItemsPocket
- dw DepositOrSell_TMHMPocket
-
-DepositOrSell_ItemPocket:
- xor a
- call Function10b92
- ld hl, PC_Mart_ItemsPocketMenuDataHeader ; $4e82
+.Jumptable:
+; entries correspond to *_POCKET constants
+ dw .ItemsPocket
+ dw .BallsPocket
+ dw .KeyItemsPocket
+ dw .TMHMPocket
+
+.ItemsPocket:
+ xor a ; ITEM_POCKET
+ call InitPocket
+ ld hl, PC_Mart_ItemsPocketMenuHeader
call CopyMenuHeader
ld a, [wItemsPocketCursor]
ld [wMenuCursorBuffer], a
@@ -953,10 +961,10 @@ DepositOrSell_ItemPocket:
ld [wItemsPocketCursor], a
ret
-DepositOrSell_KeyItemsPocket:
- ld a, $2
- call Function10b92
- ld hl, PC_Mart_KeyItemsPocketMenuDataHeader ; $4eb2
+.KeyItemsPocket:
+ ld a, KEY_ITEM_POCKET
+ call InitPocket
+ ld hl, PC_Mart_KeyItemsPocketMenuHeader
call CopyMenuHeader
ld a, [wKeyItemsPocketCursor]
ld [wMenuCursorBuffer], a
@@ -969,19 +977,19 @@ DepositOrSell_KeyItemsPocket:
ld [wKeyItemsPocketCursor], a
ret
-DepositOrSell_TMHMPocket:
- ld a, $3
- call Function10b92
- call Function10cca
- farcall TMHMPocket ; b:457a
+.TMHMPocket:
+ ld a, TM_HM_POCKET
+ call InitPocket
+ call WaitBGMap_DrawPackGFX
+ farcall TMHMPocket
ld a, [wCurItem]
ld [wCurItem], a
ret
-DepositOrSell_BallsPocket:
- ld a, $1
- call Function10b92
- ld hl, PC_Mart_BallsPocketMenuDataHeader ; $4ee2
+.BallsPocket:
+ ld a, BALL_POCKET
+ call InitPocket
+ ld hl, PC_Mart_BallsPocketMenuHeader
call CopyMenuHeader
ld a, [wBallsPocketCursor]
ld [wMenuCursorBuffer], a
@@ -994,61 +1002,61 @@ DepositOrSell_BallsPocket:
ld [wBallsPocketCursor], a
ret
-Function10b92: ; 10b92 (4:4b92)
- ld [wce65], a
- call Function10e51
- call Function10dd6
- call Function10cca
+InitPocket:
+ ld [wCurPocket], a
+ call ClearPocketList
+ call DrawPocketName
+ call WaitBGMap_DrawPackGFX
ret
-Function10b9f: ; 10b9f (4:4b9f)
+DepositSellTutorial_InterpretJoypad:
ld hl, wMenuJoypad
ld a, [hl]
- and $1
- jr nz, .asm_10bb8
+ and A_BUTTON
+ jr nz, .a_button
ld a, [hl]
- and $2
- jr nz, .asm_10bbf
+ and B_BUTTON
+ jr nz, .b_button
ld a, [hl]
- and $20
- jr nz, .asm_10bc5
+ and D_LEFT
+ jr nz, .d_left
ld a, [hl]
- and $10
- jr nz, .asm_10bd8
+ and D_RIGHT
+ jr nz, .d_right
scf
ret
-.asm_10bb8
- ld a, $1
- ld [wce66], a
+.a_button
+ ld a, TRUE
+ ld [wPackUsedItem], a
and a
ret
-.asm_10bbf
- xor a
- ld [wce66], a
+.b_button
+ xor a ; FALSE
+ ld [wPackUsedItem], a
and a
ret
-.asm_10bc5
- ld a, [wce63]
+.d_left
+ ld a, [wJumptableIndex]
dec a
- and $3
- ld [wce63], a
+ maskbits NUM_POCKETS
+ ld [wJumptableIndex], a
push de
- ld de, $62
+ ld de, SFX_SWITCH_POCKETS
call PlaySFX
pop de
scf
ret
-.asm_10bd8
- ld a, [wce63]
+.d_right
+ ld a, [wJumptableIndex]
inc a
- and $3
- ld [wce63], a
+ maskbits NUM_POCKETS
+ ld [wJumptableIndex], a
push de
- ld de, $62
+ ld de, SFX_SWITCH_POCKETS
call PlaySFX
pop de
scf
@@ -1058,42 +1066,42 @@ TutorialPack:
call DepositSellInitPackBuffers
ld a, [wInputType]
or a
- jr z, .asm_10bfa
- farcall _DudeAutoInput_RightA ; 70:4dee
-.asm_10bfa
- call Function10c07
- call Function10b9f
- jr c, .asm_10bfa
- xor a
- ld [wce66], a
+ jr z, .loop
+ farcall _DudeAutoInput_RightA
+.loop
+ call .RunJumptable
+ call DepositSellTutorial_InterpretJoypad
+ jr c, .loop
+ xor a ; FALSE
+ ld [wPackUsedItem], a
ret
-Function10c07: ; 10c07 (4:4c07)
- ld a, [wce63]
- ld hl, $4c11
- call Function10c9b
+.RunJumptable:
+ ld a, [wJumptableIndex]
+ ld hl, .dw
+ call Pack_GetJumptablePointer
jp hl
-.Jumptable
- dw TutorialItems
- dw TutorialBalls
- dw TutorialKeyItems
- dw TutorialTMHM
-
-TutorialItems:
- xor a
- ld hl, TutorialItemsMenuDataHeader
- jr asm_10c8a
-
-TutorialItemsMenuDataHeader:
- db $40 ; flags
- db 01, 07 ; start coords
- db 11, 19 ; end coords
- dw .MenuData2
+.dw
+; entries correspond to *_POCKET constants
+ dw .Items
+ dw .Balls
+ dw .KeyItems
+ dw .TMHM
+
+.Items:
+ xor a ; ITEM_POCKET
+ ld hl, .ItemsMenuHeader
+ jr .DisplayPocket
+
+.ItemsMenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
+ dw .ItemsMenuData
db 1 ; default option
-.MenuData2:
- db $ae ; flags
+.ItemsMenuData:
+ db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP | STATICMENU_CURSOR ; flags
db 5, 8 ; rows, columns
db 2 ; horizontal spacing
dbw 0, wDudeNumItems
@@ -1101,20 +1109,19 @@ TutorialItemsMenuDataHeader:
dba PlaceMenuItemQuantity
dba UpdateItemDescription
-TutorialKeyItems:
- ld a, $2
- ld hl, TutorialKeyItemsMenuDataHeader
- jr asm_10c8a
+.KeyItems:
+ ld a, KEY_ITEM_POCKET
+ ld hl, .KeyItemsMenuHeader
+ jr .DisplayPocket
-TutorialKeyItemsMenuDataHeader:
- db $40 ; flags
- db 01, 07 ; start coords
- db 11, 19 ; end coords
- dw .MenuData2
+.KeyItemsMenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
+ dw .KeyItemsMenuData
db 1 ; default option
-.MenuData2:
- db $ae ; flags
+.KeyItemsMenuData:
+ db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP | STATICMENU_CURSOR ; flags
db 5, 8 ; rows, columns
db 1 ; horizontal spacing
dbw 0, wDudeNumKeyItems
@@ -1122,29 +1129,28 @@ TutorialKeyItemsMenuDataHeader:
dba PlaceMenuItemQuantity
dba UpdateItemDescription
-TutorialTMHM:
- ld a, $3
- call Function10b92
- call Function10cca
+.TMHM:
+ ld a, TM_HM_POCKET
+ call InitPocket
+ call WaitBGMap_DrawPackGFX
farcall TMHMPocket
ld a, [wCurItem]
ld [wCurItem], a
ret
-TutorialBalls:
- ld a, $1
- ld hl, TutorialBallsMenuDataHeader
- jr asm_10c8a
+.Balls:
+ ld a, BALL_POCKET
+ ld hl, .BallsMenuHeader
+ jr .DisplayPocket
-TutorialBallsMenuDataHeader:
- db $40 ; flags
- db 01, 07 ; start coords
- db 11, 19 ; end coords
- dw .MenuData2
+.BallsMenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
+ dw .BallsMenuData
db 1 ; default option
-.MenuData2:
- db $ae ; flags
+.BallsMenuData:
+ db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP | STATICMENU_CURSOR ; flags
db 5, 8 ; rows, columns
db 2 ; horizontal spacing
dbw 0, wDudeNumBalls
@@ -1152,22 +1158,22 @@ TutorialBallsMenuDataHeader:
dba PlaceMenuItemQuantity
dba UpdateItemDescription
-asm_10c8a:
+.DisplayPocket:
push hl
- call Function10b92
+ call InitPocket
pop hl
call CopyMenuHeader
call ScrollingMenu
ret
-Function10c96: ; 10c96 (4:4c96)
- ld hl, wce63
+Pack_JumptableNext:
+ ld hl, wJumptableIndex
inc [hl]
ret
-Function10c9b: ; 10c9b (4:4c9b)
+Pack_GetJumptablePointer:
ld e, a
- ld d, $0
+ ld d, 0
add hl, de
add hl, de
ld a, [hli]
@@ -1175,91 +1181,91 @@ Function10c9b: ; 10c9b (4:4c9b)
ld l, a
ret
-Pack_ExitNoScript:
- ld hl, wce63
+Pack_QuitNoScript:
+ ld hl, wJumptableIndex
set 7, [hl]
- xor a
- ld [wce66], a
+ xor a ; FALSE
+ ld [wPackUsedItem], a
ret
-Pack_ExitRunScript:
- ld hl, wce63
+Pack_QuitRunScript:
+ ld hl, wJumptableIndex
set 7, [hl]
- ld a, $1
- ld [wce66], a
+ ld a, TRUE
+ ld [wPackUsedItem], a
ret
-Function10cb9: ; 10cb9 (4:4cb9)
+Pack_PrintTextNoScroll:
ld a, [wOptions]
push af
- set 4, a
+ set NO_TEXT_SCROLL, a
ld [wOptions], a
call PrintText
pop af
ld [wOptions], a
ret
-Function10cca: ; 10cca (4:4cca)
+WaitBGMap_DrawPackGFX:
call WaitBGMap
-Function10ccd: ; 10ccd (4:4ccd)
- ld a, [wce65]
- and $3
+DrawPackGFX:
+ ld a, [wCurPocket]
+ maskbits NUM_POCKETS
ld e, a
- ld d, $0
+ ld d, 0
ld hl, PackGFXPointers
add hl, de
add hl, de
ld a, [hli]
ld e, a
ld d, [hl]
- ld hl, $9500
+ ld hl, vTiles2 tile $50
lb bc, BANK(PackGFX), 15
call Request2bpp
ret
PackGFXPointers:
- dw PackGFX + $f0 * 1
- dw PackGFX + $f0 * 3
- dw PackGFX + $f0 * 0
- dw PackGFX + $f0 * 2
+ dw PackGFX + (15 tiles) * 1 ; ITEM_POCKET
+ dw PackGFX + (15 tiles) * 3 ; BALL_POCKET
+ dw PackGFX + (15 tiles) * 0 ; KEY_ITEM_POCKET
+ dw PackGFX + (15 tiles) * 2 ; TM_HM_POCKET
-Function10cef: ; 10cef (4:4cef)
+Pack_InterpretJoypad:
ld hl, wMenuJoypad
ld a, [wSwitchItem]
and a
- jr nz, .asm_10d4c
+ jr nz, .switching_item
ld a, [hl]
- and $1
- jr nz, .asm_10d13
+ and A_BUTTON
+ jr nz, .a_button
ld a, [hl]
- and $2
- jr nz, .asm_10d15
+ and B_BUTTON
+ jr nz, .b_button
ld a, [hl]
- and $20
- jr nz, .asm_10d1c
+ and D_LEFT
+ jr nz, .d_left
ld a, [hl]
- and $10
- jr nz, .asm_10d2d
+ and D_RIGHT
+ jr nz, .d_right
ld a, [hl]
- and $4
- jr nz, .asm_10d3e
+ and SELECT
+ jr nz, .select
scf
ret
-.asm_10d13
+.a_button
and a
ret
-.asm_10d15
- ld a, $9
- ld [wce63], a
+.b_button
+ ld a, PACKSTATE_QUITNOSCRIPT
+ ld [wJumptableIndex], a
scf
ret
-.asm_10d1c
+.d_left
ld a, b
- ld [wce63], a
- ld [wce64], a
+ ld [wJumptableIndex], a
+ ld [wPackJumptableIndex], a
push de
ld de, SFX_SWITCH_POCKETS
call PlaySFX
@@ -1267,10 +1273,10 @@ Function10cef: ; 10cef (4:4cef)
scf
ret
-.asm_10d2d
+.d_right
ld a, c
- ld [wce63], a
- ld [wce64], a
+ ld [wJumptableIndex], a
+ ld [wPackJumptableIndex], a
push de
ld de, SFX_SWITCH_POCKETS
call PlaySFX
@@ -1278,296 +1284,301 @@ Function10cef: ; 10cef (4:4cef)
scf
ret
-.asm_10d3e
- farcall SwitchItemsInBag ; 9:4834
- ld hl, Text_MoveItemWhere
- call Function10cb9
+.select
+ farcall SwitchItemsInBag
+ ld hl, AskItemMoveText
+ call Pack_PrintTextNoScroll
scf
ret
-.asm_10d4c
+.switching_item
ld a, [hl]
- and $5
- jr nz, .asm_10d58
+ and A_BUTTON | SELECT
+ jr nz, .place_insert
ld a, [hl]
- and $2
- jr nz, .asm_10d6a
+ and B_BUTTON
+ jr nz, .end_switch
scf
ret
-.asm_10d58
- farcall SwitchItemsInBag ; 9:4834
+.place_insert
+ farcall SwitchItemsInBag
ld de, SFX_SWITCH_POKEMON
call WaitPlaySFX
ld de, SFX_SWITCH_POKEMON
call WaitPlaySFX
-.asm_10d6a
+.end_switch
xor a
ld [wSwitchItem], a
scf
ret
-Function10d70: ; 10d70 (4:4d70)
+Pack_InitGFX:
call ClearBGPalettes
call ClearTilemap
call ClearSprites
call DisableLCD
ld hl, PackMenuGFX
- ld de, $9000
- ld bc, $600
+ ld de, vTiles2
+ ld bc, $60 tiles
ld a, BANK(PackMenuGFX)
- call FarCopyBytes ; same bank
+ call FarCopyBytes
+; Background
hlcoord 0, 1
ld bc, 11 * SCREEN_WIDTH
ld a, $24
call ByteFill
+; This is where the items themselves will be listed.
hlcoord 5, 1
lb bc, 11, 15
call ClearBox
+; ◀▶ POCKET ▼▲ ITEMS
hlcoord 0, 0
ld a, $28
- ld c, $14
-.asm_10da5
+ ld c, SCREEN_WIDTH
+.loop
ld [hli], a
inc a
dec c
- jr nz, .asm_10da5
- call Function10dd6
- call Function10dc0
- hlcoord 0, 12
- ld bc, IncGradGBPalTable_13
+ jr nz, .loop
+ call DrawPocketName
+ call PlacePackGFX
+; Place the textbox for displaying the item description
+ hlcoord 0, SCREEN_HEIGHT - 4 - 2
+ lb bc, 4, SCREEN_WIDTH - 2
call Textbox
call EnableLCD
- call Function10ccd
+ call DrawPackGFX
ret
-Function10dc0: ; 10dc0 (4:4dc0)
+PlacePackGFX:
hlcoord 0, 3
ld a, $50
- ld de, $f
- ld b, $3
-.asm_10dca
- ld c, $5
-.asm_10dcc
+ ld de, SCREEN_WIDTH - 5
+ ld b, 3
+.row
+ ld c, 5
+.column
ld [hli], a
inc a
dec c
- jr nz, .asm_10dcc
+ jr nz, .column
add hl, de
dec b
- jr nz, .asm_10dca
+ jr nz, .row
ret
-Function10dd6: ; 10dd6 (4:4dd6)
- ld a, [wce65]
+DrawPocketName:
+ ld a, [wCurPocket]
+ ; * 15
ld d, a
swap a
sub d
- ld d, $0
+ ld d, 0
ld e, a
ld hl, .tilemap
add hl, de
ld d, h
ld e, l
hlcoord 0, 7
- ld c, $3
-.asm_10deb
- ld b, $5
-.asm_10ded
+ ld c, 3
+.row
+ ld b, 5
+.col
ld a, [de]
inc de
ld [hli], a
dec b
- jr nz, .asm_10ded
+ jr nz, .col
ld a, c
- ld c, $f
+ ld c, SCREEN_WIDTH - 5
add hl, bc
ld c, a
dec c
- jr nz, .asm_10deb
+ jr nz, .row
ret
.tilemap
+; ITEM_POCKET
db $00, $04, $04, $04, $01 ; top border
db $06, $07, $08, $09, $0a ; Items
db $02, $05, $05, $05, $03 ; bottom border
+; BALL_POCKET
db $00, $04, $04, $04, $01 ; top border
db $15, $16, $17, $18, $19 ; Balls
db $02, $05, $05, $05, $03 ; bottom border
+; KEY_ITEM_POCKET
db $00, $04, $04, $04, $01 ; top border
db $0b, $0c, $0d, $0e, $0f ; Key Items
db $02, $05, $05, $05, $03 ; bottom border
+; TM_HM_POCKET
db $00, $04, $04, $04, $01 ; top border
db $10, $11, $12, $13, $14 ; TM/HM
db $02, $05, $05, $05, $03 ; bottom border
-Function10e38: ; 10e38 (4:4e38)
+Pack_GetItemName:
ld a, [wCurItem]
- ld [wd151], a
+ ld [wNamedObjectIndexBuffer], a
call GetItemName
call CopyName1
ret
-Pack_ClearTilemap:
+Unreferenced_Pack_ClearTilemap:
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld a, " "
call ByteFill
ret
-Function10e51: ; 10e51 (4:4e51)
+ClearPocketList:
hlcoord 5, 2
- lb bc, 10, 15
+ lb bc, 10, SCREEN_WIDTH - 5
call ClearBox
ret
-Function10e5b: ; 10e5b (4:4e5b)
+Pack_InitColors:
call WaitBGMap
- ld b, $14
+ ld b, SCGB_PACKPALS
call GetSGBLayout
call SetPalettes
call DelayFrame
ret
-ItemsPocketMenuDataHeader:
- db $40
- db 01, 07
- db 11, 19
- dw .MenuData2
- db 1
+ItemsPocketMenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
+ dw .MenuData
+ db 1 ; default option
-.MenuData2:
- db $ae
- db 5, 8
- db 2
+.MenuData:
+ db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP | STATICMENU_CURSOR ; flags
+ db 5, 8 ; rows, columns
+ db SCROLLINGMENU_ITEMS_QUANTITY ; item format
dbw 0, wNumItems
- dba PlaceMenuItemName ; 9:49dc
- dba PlaceMenuItemQuantity ; 9:49eb
- dba UpdateItemDescription ; 9:43eb
-
-PC_Mart_ItemsPocketMenuDataHeader:
- db $40
- db 01, 07
- db 11, 19
- dw .MenuData2
- db 1
-
-.MenuData2:
- db $2e
- db 5, 8
- db 2
+ dba PlaceMenuItemName
+ dba PlaceMenuItemQuantity
+ dba UpdateItemDescription
+
+PC_Mart_ItemsPocketMenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
+ dw .MenuData
+ db 1 ; default option
+
+.MenuData:
+ db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP ; flags
+ db 5, 8 ; rows, columns
+ db SCROLLINGMENU_ITEMS_QUANTITY ; item format
dbw 0, wNumItems
- dba PlaceMenuItemName ; 9:49dc
- dba PlaceMenuItemQuantity ; 9:49eb
- dba UpdateItemDescription ; 9:43eb
-
-KeyItemsPocketMenuDataHeader:
- db $40
- db 01, 07
- db 11, 19
- dw .MenuData2
- db 1
-
-.MenuData2:
- db $ae
- db 5, 8
- db 1
+ dba PlaceMenuItemName
+ dba PlaceMenuItemQuantity
+ dba UpdateItemDescription
+
+KeyItemsPocketMenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
+ dw .MenuData
+ db 1 ; default option
+
+.MenuData:
+ db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP | STATICMENU_CURSOR ; flags
+ db 5, 8 ; rows, columns
+ db SCROLLINGMENU_ITEMS_NORMAL ; item format
dbw 0, wNumKeyItems
- dba PlaceMenuItemName ; 9:49dc
- dba PlaceMenuItemQuantity ; 9:49eb
- dba UpdateItemDescription ; 9:43eb
-
-PC_Mart_KeyItemsPocketMenuDataHeader:
- db $40
- db 01, 07
- db 11, 19
- dw .MenuData2
- db 1
-
-.MenuData2:
- db $2e
- db 5, 8
- db 1
+ dba PlaceMenuItemName
+ dba PlaceMenuItemQuantity
+ dba UpdateItemDescription
+
+PC_Mart_KeyItemsPocketMenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
+ dw .MenuData
+ db 1 ; default option
+
+.MenuData:
+ db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP ; flags
+ db 5, 8 ; rows, columns
+ db SCROLLINGMENU_ITEMS_NORMAL ; item format
dbw 0, wNumKeyItems
- dba PlaceMenuItemName ; 9:49dc
- dba PlaceMenuItemQuantity ; 9:49eb
- dba UpdateItemDescription ; 9:43eb
-
-BallsPocketMenuDataHeader:
- db $40
- db 01, 07
- db 11, 19
- dw .MenuData2
- db 1
-
-.MenuData2:
- db $ae
- db 5, 8
- db 2
+ dba PlaceMenuItemName
+ dba PlaceMenuItemQuantity
+ dba UpdateItemDescription
+
+BallsPocketMenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
+ dw .MenuData
+ db 1 ; default option
+
+.MenuData:
+ db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP | STATICMENU_CURSOR ; flags
+ db 5, 8 ; rows, columns
+ db SCROLLINGMENU_ITEMS_QUANTITY ; item format
dbw 0, wNumBalls
- dba PlaceMenuItemName ; 9:49dc
- dba PlaceMenuItemQuantity ; 9:49eb
- dba UpdateItemDescription ; 9:43eb
-
-PC_Mart_BallsPocketMenuDataHeader:
- db $40
- db 01, 07
- db 11, 19
- dw .MenuData2
- db 1
-
-.MenuData2:
- db $2e
- db 5, 8
- db 2
+ dba PlaceMenuItemName
+ dba PlaceMenuItemQuantity
+ dba UpdateItemDescription
+
+PC_Mart_BallsPocketMenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
+ dw .MenuData
+ db 1 ; default option
+
+.MenuData:
+ db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP ; flags
+ db 5, 8 ; rows, columns
+ db SCROLLINGMENU_ITEMS_QUANTITY ; item format
dbw 0, wNumBalls
- dba PlaceMenuItemName ; 9:49dc
- dba PlaceMenuItemQuantity ; 9:49eb
- dba UpdateItemDescription ; 9:43eb
+ dba PlaceMenuItemName
+ dba PlaceMenuItemQuantity
+ dba UpdateItemDescription
-Text_PackNoItems:
- text_far Text_PackNoItems_
- db "@"
+PackNoItemText:
+ text_far _PackNoItemText
+ text_end
-Text_ThrowAwayHowMany:
- text_far Text_ThrowAwayHowMany_
- db "@"
+AskThrowAwayText:
+ text_far _AskThrowAwayText
+ text_end
-Text_ConfirmThrowAway:
- text_far Text_ConfirmThrowAway_
- db "@"
+AskQuantityThrowAwayText:
+ text_far _AskQuantityThrowAwayText
+ text_end
-Text_ThrewAway:
- text_far Text_ThrewAway_
- db "@"
+ThrewAwayText:
+ text_far _ThrewAwayText
+ text_end
-Text_ThisIsntTheTime:
- text_far Text_ThisIsntTheTime_
- db "@"
+OakThisIsntTheTimeText:
+ text_far _OakThisIsntTheTimeText
+ text_end
-Text_YouDontHaveAPokemon:
- text_far Text_YouDontHaveAMon
- db "@"
+YouDontHaveAMonText:
+ text_far _YouDontHaveAMonText
+ text_end
-Text_RegisteredTheItem:
- text_far Text_RegisteredTheItem_
- db "@"
+RegisteredItemText:
+ text_far _RegisteredItemText
+ text_end
-Text_CantRegisterThatItem:
- text_far Text_CantRegisterThatItem_
- db "@"
+CantRegisterText:
+ text_far _CantRegisterText
+ text_end
-Text_MoveItemWhere:
- text_far Text_MoveItemWhere_
- db "@"
+AskItemMoveText:
+ text_far _AskItemMoveText
+ text_end
-Text_PackEmptyString:
- text_far Text_PackEmptyString_
- db "@"
+PackEmptyText:
+ text_far _PackEmptyText
+ text_end
-Text_CantUseItInABattle:
- text_far Text_YouCantUseItInABattle
- db "@"
+YouCantUseItInABattleText:
+ text_far _YouCantUseItInABattleText
+ text_end
-PackMenuGFX: INCBIN "gfx/pack/pack_menu.2bpp"
-PackGFX: INCBIN "gfx/pack/pack.2bpp"
+PackMenuGFX:
+INCBIN "gfx/pack/pack_menu.2bpp"
+PackGFX:
+INCBIN "gfx/pack/pack.2bpp"