Since we're aiming for consistency across the codebase, I believe it includes a uniform way to refer to the creatures this game consists of in the labels of the code. The only exceptions to this rule are labels referring to things named through the use of the <PK><MN> or <PKMN> characters, in which case PKMN is used. Most of this was already consistent enough™, I just picked the convention with the most occurences and fixed the outliers.
1712 lines
32 KiB
NASM
1712 lines
32 KiB
NASM
; 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: ; 10000
|
|
ld hl, wOptions
|
|
set NO_TEXT_SCROLL, [hl]
|
|
call InitPackBuffers
|
|
.loop
|
|
call JoyTextDelay
|
|
ld a, [wJumptableIndex]
|
|
bit 7, a
|
|
jr nz, .done
|
|
call .RunJumptable
|
|
call DelayFrame
|
|
jr .loop
|
|
|
|
.done
|
|
ld a, [wCurrPocket]
|
|
ld [wLastPocket], a
|
|
ld hl, wOptions
|
|
res NO_TEXT_SCROLL, [hl]
|
|
ret
|
|
; 10026
|
|
|
|
.RunJumptable: ; 10026
|
|
ld a, [wJumptableIndex]
|
|
ld hl, .Jumptable
|
|
call Pack_GetJumptablePointer
|
|
jp hl
|
|
|
|
; 10030
|
|
|
|
.Jumptable: ; 10030 (4:4030)
|
|
; 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: ; 10046 (4:4046)
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call Pack_InitGFX
|
|
ld a, [wPackJumptableIndex]
|
|
ld [wJumptableIndex], a
|
|
call Pack_InitColors
|
|
ret
|
|
|
|
.InitItemsPocket: ; 10056 (4:4056)
|
|
xor a ; ITEM_POCKET
|
|
ld [wCurrPocket], a
|
|
call ClearPocketList
|
|
call DrawPocketName
|
|
call WaitBGMap_DrawPackGFX
|
|
call Pack_JumptableNext
|
|
ret
|
|
|
|
.ItemsPocketMenu: ; 10067 (4:4067)
|
|
ld hl, ItemsPocketMenuDataHeader
|
|
call CopyMenuDataHeader
|
|
ld a, [wItemsPocketCursor]
|
|
ld [wMenuCursorBuffer], a
|
|
ld a, [wItemsPocketScrollPosition]
|
|
ld [wMenuScrollPosition], a
|
|
call ScrollingMenu
|
|
ld a, [wMenuScrollPosition]
|
|
ld [wItemsPocketScrollPosition], a
|
|
ld a, [wMenuCursorY]
|
|
ld [wItemsPocketCursor], a
|
|
ld b, PACKSTATE_INITTMHMPOCKET ; left
|
|
ld c, PACKSTATE_INITBALLSPOCKET ; right
|
|
call Pack_InterpretJoypad
|
|
ret c
|
|
call .ItemBallsKey_LoadSubmenu
|
|
ret
|
|
|
|
.InitKeyItemsPocket: ; 10094 (4:4094)
|
|
ld a, KEY_ITEM_POCKET
|
|
ld [wCurrPocket], a
|
|
call ClearPocketList
|
|
call DrawPocketName
|
|
call WaitBGMap_DrawPackGFX
|
|
call Pack_JumptableNext
|
|
ret
|
|
|
|
.KeyItemsPocketMenu: ; 100a6 (4:40a6)
|
|
ld hl, KeyItemsPocketMenuDataHeader
|
|
call CopyMenuDataHeader
|
|
ld a, [wKeyItemsPocketCursor]
|
|
ld [wMenuCursorBuffer], a
|
|
ld a, [wKeyItemsPocketScrollPosition]
|
|
ld [wMenuScrollPosition], a
|
|
call ScrollingMenu
|
|
ld a, [wMenuScrollPosition]
|
|
ld [wKeyItemsPocketScrollPosition], a
|
|
ld a, [wMenuCursorY]
|
|
ld [wKeyItemsPocketCursor], a
|
|
ld b, PACKSTATE_INITBALLSPOCKET ; left
|
|
ld c, PACKSTATE_INITTMHMPOCKET ; right
|
|
call Pack_InterpretJoypad
|
|
ret c
|
|
call .ItemBallsKey_LoadSubmenu
|
|
ret
|
|
|
|
.InitTMHMPocket: ; 100d3 (4:40d3)
|
|
ld a, TM_HM_POCKET
|
|
ld [wCurrPocket], a
|
|
call ClearPocketList
|
|
call DrawPocketName
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call WaitBGMap_DrawPackGFX
|
|
call Pack_JumptableNext
|
|
ret
|
|
|
|
.TMHMPocketMenu: ; 100e8 (4:40e8)
|
|
farcall TMHMPocket
|
|
ld b, PACKSTATE_INITKEYITEMSPOCKET ; left
|
|
ld c, PACKSTATE_INITITEMSPOCKET ; right
|
|
call Pack_InterpretJoypad
|
|
ret c
|
|
farcall _CheckTossableItem
|
|
ld a, [wItemAttributeParamBuffer]
|
|
and a
|
|
jr nz, .use_quit
|
|
ld hl, .MenuDataHeader2
|
|
ld de, .Jumptable2
|
|
jr .load_jump
|
|
|
|
.use_quit
|
|
ld hl, .MenuDataHeader1
|
|
ld de, .Jumptable1
|
|
.load_jump
|
|
push de
|
|
call LoadMenuDataHeader
|
|
call VerticalMenu
|
|
call ExitMenu
|
|
pop hl
|
|
ret c
|
|
ld a, [wMenuCursorY]
|
|
dec a
|
|
call Pack_GetJumptablePointer
|
|
jp hl
|
|
|
|
; 10124 (4:4124)
|
|
.MenuDataHeader1: ; 0x10124
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 13, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .MenuData2_1
|
|
db 1 ; default option
|
|
; 0x1012c
|
|
|
|
.MenuData2_1: ; 0x1012c
|
|
db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
|
|
db 2 ; items
|
|
db "USE@"
|
|
db "QUIT@"
|
|
; 0x10137
|
|
|
|
.Jumptable1: ; 10137
|
|
dw .UseItem
|
|
dw QuitItemSubmenu
|
|
|
|
; 1013b
|
|
|
|
.MenuDataHeader2: ; 0x1013b
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 13, 5, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .MenuData2_2
|
|
db 1 ; default option
|
|
; 0x10143
|
|
|
|
.MenuData2_2: ; 0x10143
|
|
db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
|
|
db 3 ; items
|
|
db "USE@"
|
|
db "GIVE@"
|
|
db "QUIT@"
|
|
; 0x10153
|
|
|
|
.Jumptable2: ; 10153
|
|
dw .UseItem
|
|
dw GiveItem
|
|
dw QuitItemSubmenu
|
|
; 10159
|
|
|
|
.UseItem: ; 10159
|
|
farcall AskTeachTMHM
|
|
ret c
|
|
farcall ChooseMonToLearnTMHM
|
|
jr c, .declined
|
|
ld hl, wOptions
|
|
ld a, [hl]
|
|
push af
|
|
res NO_TEXT_SCROLL, [hl]
|
|
farcall TeachTMHM
|
|
pop af
|
|
ld [wOptions], a
|
|
.declined
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call Pack_InitGFX
|
|
call WaitBGMap_DrawPackGFX
|
|
call Pack_InitColors
|
|
ret
|
|
|
|
.InitBallsPocket: ; 10186 (4:4186)
|
|
ld a, BALL_POCKET
|
|
ld [wCurrPocket], a
|
|
call ClearPocketList
|
|
call DrawPocketName
|
|
call WaitBGMap_DrawPackGFX
|
|
call Pack_JumptableNext
|
|
ret
|
|
|
|
.BallsPocketMenu: ; 10198 (4:4198)
|
|
ld hl, BallsPocketMenuDataHeader
|
|
call CopyMenuDataHeader
|
|
ld a, [wBallsPocketCursor]
|
|
ld [wMenuCursorBuffer], a
|
|
ld a, [wBallsPocketScrollPosition]
|
|
ld [wMenuScrollPosition], a
|
|
call ScrollingMenu
|
|
ld a, [wMenuScrollPosition]
|
|
ld [wBallsPocketScrollPosition], a
|
|
ld a, [wMenuCursorY]
|
|
ld [wBallsPocketCursor], a
|
|
ld b, PACKSTATE_INITITEMSPOCKET ; left
|
|
ld c, PACKSTATE_INITKEYITEMSPOCKET ; right
|
|
call Pack_InterpretJoypad
|
|
ret c
|
|
call .ItemBallsKey_LoadSubmenu
|
|
ret
|
|
|
|
.ItemBallsKey_LoadSubmenu: ; 101c5 (4:41c5)
|
|
farcall _CheckTossableItem
|
|
ld a, [wItemAttributeParamBuffer]
|
|
and a
|
|
jr nz, .tossable
|
|
farcall CheckSelectableItem
|
|
ld a, [wItemAttributeParamBuffer]
|
|
and a
|
|
jr nz, .selectable
|
|
farcall CheckItemMenu
|
|
ld a, [wItemAttributeParamBuffer]
|
|
and a
|
|
jr nz, .usable
|
|
jr .unusable
|
|
|
|
.selectable
|
|
farcall CheckItemMenu
|
|
ld a, [wItemAttributeParamBuffer]
|
|
and a
|
|
jr nz, .selectable_usable
|
|
jr .selectable_unusable
|
|
|
|
.tossable
|
|
farcall CheckSelectableItem
|
|
ld a, [wItemAttributeParamBuffer]
|
|
and a
|
|
jr nz, .tossable_selectable
|
|
jr .tossable_unselectable
|
|
|
|
.usable
|
|
ld hl, MenuDataHeader_UsableKeyItem
|
|
ld de, Jumptable_UseGiveTossRegisterQuit
|
|
jr .build_menu
|
|
|
|
.selectable_usable
|
|
ld hl, MenuDataHeader_UsableItem
|
|
ld de, Jumptable_UseGiveTossQuit
|
|
jr .build_menu
|
|
|
|
.tossable_selectable
|
|
ld hl, MenuDataHeader_UnusableItem
|
|
ld de, Jumptable_UseQuit
|
|
jr .build_menu
|
|
|
|
.tossable_unselectable
|
|
ld hl, MenuDataHeader_UnusableKeyItem
|
|
ld de, Jumptable_UseRegisterQuit
|
|
jr .build_menu
|
|
|
|
.unusable
|
|
ld hl, MenuDataHeader_HoldableKeyItem
|
|
ld de, Jumptable_GiveTossRegisterQuit
|
|
jr .build_menu
|
|
|
|
.selectable_unusable
|
|
ld hl, MenuDataHeader_HoldableItem
|
|
ld de, Jumptable_GiveTossQuit
|
|
.build_menu
|
|
push de
|
|
call LoadMenuDataHeader
|
|
call VerticalMenu
|
|
call ExitMenu
|
|
pop hl
|
|
ret c
|
|
ld a, [wMenuCursorY]
|
|
dec a
|
|
call Pack_GetJumptablePointer
|
|
jp hl
|
|
|
|
; 10249 (4:4249)
|
|
MenuDataHeader_UsableKeyItem: ; 0x10249
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 13, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .MenuData2
|
|
db 1 ; default option
|
|
; 0x10251
|
|
|
|
.MenuData2: ; 0x10251
|
|
db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
|
|
db 5 ; items
|
|
db "USE@"
|
|
db "GIVE@"
|
|
db "TOSS@"
|
|
db "SEL@"
|
|
db "QUIT@"
|
|
; 0x1026a
|
|
|
|
Jumptable_UseGiveTossRegisterQuit: ; 1026a
|
|
dw UseItem
|
|
dw GiveItem
|
|
dw TossMenu
|
|
dw RegisterItem
|
|
dw QuitItemSubmenu
|
|
; 10274
|
|
|
|
MenuDataHeader_UsableItem: ; 0x10274
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 13, 3, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .MenuData2
|
|
db 1 ; default option
|
|
; 0x1027c
|
|
|
|
.MenuData2: ; 0x1027c
|
|
db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
|
|
db 4 ; items
|
|
db "USE@"
|
|
db "GIVE@"
|
|
db "TOSS@"
|
|
db "QUIT@"
|
|
; 0x10291
|
|
|
|
Jumptable_UseGiveTossQuit: ; 10291
|
|
dw UseItem
|
|
dw GiveItem
|
|
dw TossMenu
|
|
dw QuitItemSubmenu
|
|
; 10299
|
|
|
|
MenuDataHeader_UnusableItem: ; 0x10299
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 13, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .MenuData2
|
|
db 1 ; default option
|
|
; 0x102a1
|
|
|
|
.MenuData2: ; 0x102a1
|
|
db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
|
|
db 2 ; items
|
|
db "USE@"
|
|
db "QUIT@"
|
|
; 0x102ac
|
|
|
|
Jumptable_UseQuit: ; 102ac
|
|
dw UseItem
|
|
dw QuitItemSubmenu
|
|
; 102b0
|
|
|
|
MenuDataHeader_UnusableKeyItem: ; 0x102b0
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 13, 5, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .MenuData2
|
|
db 1 ; default option
|
|
; 0x102b8
|
|
|
|
.MenuData2: ; 0x102b8
|
|
db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
|
|
db 3 ; items
|
|
db "USE@"
|
|
db "SEL@"
|
|
db "QUIT@"
|
|
; 0x102c7
|
|
|
|
Jumptable_UseRegisterQuit: ; 102c7
|
|
dw UseItem
|
|
dw RegisterItem
|
|
dw QuitItemSubmenu
|
|
; 102cd
|
|
|
|
MenuDataHeader_HoldableKeyItem: ; 0x102cd
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 13, 3, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .MenuData2
|
|
db 1 ; default option
|
|
; 0x102d5
|
|
|
|
.MenuData2: ; 0x102d5
|
|
db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
|
|
db 4 ; items
|
|
db "GIVE@"
|
|
db "TOSS@"
|
|
db "SEL@"
|
|
db "QUIT@"
|
|
; 0x102ea
|
|
|
|
Jumptable_GiveTossRegisterQuit: ; 102ea
|
|
dw GiveItem
|
|
dw TossMenu
|
|
dw RegisterItem
|
|
dw QuitItemSubmenu
|
|
; 102f2
|
|
|
|
MenuDataHeader_HoldableItem: ; 0x102f2
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 13, 5, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .MenuData2
|
|
db 1 ; default option
|
|
; 0x102fa
|
|
|
|
.MenuData2: ; 0x102fa
|
|
db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
|
|
db 3 ; items
|
|
db "GIVE@"
|
|
db "TOSS@"
|
|
db "QUIT@"
|
|
; 0x1030b
|
|
|
|
Jumptable_GiveTossQuit: ; 1030b
|
|
dw GiveItem
|
|
dw TossMenu
|
|
dw QuitItemSubmenu
|
|
|
|
; 10311
|
|
|
|
UseItem: ; 10311
|
|
farcall CheckItemMenu
|
|
ld a, [wItemAttributeParamBuffer]
|
|
ld hl, .dw
|
|
rst JumpTable
|
|
ret
|
|
; 1031f
|
|
|
|
.dw ; 1031f (4:431f)
|
|
; 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
|
|
; 1035c
|
|
|
|
.Oak: ; 1032d (4:432d)
|
|
ld hl, Text_ThisIsntTheTime
|
|
call Pack_PrintTextNoScroll
|
|
ret
|
|
|
|
.Current: ; 10334 (4:4334)
|
|
call DoItemEffect
|
|
ret
|
|
|
|
.Party: ; 10338 (4:4338)
|
|
ld a, [wPartyCount]
|
|
and a
|
|
jr z, .NoPokemon
|
|
call DoItemEffect
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call Pack_InitGFX
|
|
call WaitBGMap_DrawPackGFX
|
|
call Pack_InitColors
|
|
ret
|
|
|
|
.NoPokemon:
|
|
ld hl, TextJump_YouDontHaveAMon
|
|
call Pack_PrintTextNoScroll
|
|
ret
|
|
|
|
.Field: ; 10355 (4:4355)
|
|
call DoItemEffect
|
|
ld a, [wItemEffectSucceeded]
|
|
and a
|
|
jr z, .Oak
|
|
ld a, PACKSTATE_QUITRUNSCRIPT
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
; 10364 (4:4364)
|
|
|
|
TossMenu: ; 10364
|
|
ld hl, Text_ThrowAwayHowMany
|
|
call Pack_PrintTextNoScroll
|
|
farcall SelectQuantityToToss
|
|
push af
|
|
call ExitMenu
|
|
pop af
|
|
jr c, .finish
|
|
call Pack_GetItemName
|
|
ld hl, Text_ConfirmThrowAway
|
|
call MenuTextBox
|
|
call YesNoBox
|
|
push af
|
|
call ExitMenu
|
|
pop af
|
|
jr c, .finish
|
|
ld hl, wNumItems
|
|
ld a, [wCurItemQuantity]
|
|
call TossItem
|
|
call Pack_GetItemName
|
|
ld hl, Text_ThrewAway
|
|
call Pack_PrintTextNoScroll
|
|
.finish
|
|
ret
|
|
; 1039d
|
|
|
|
Unreferenced_ResetPocketCursorPositions: ; 1039d
|
|
ld a, [wCurrPocket]
|
|
and a ; ITEM_POCKET
|
|
jr z, .items
|
|
dec a ; BALL_POCKET
|
|
jr z, .balls
|
|
dec a ; KEY_ITEM_POCKET
|
|
jr z, .key
|
|
ret
|
|
|
|
.balls
|
|
xor a
|
|
ld [wBallsPocketCursor], a
|
|
ld [wBallsPocketScrollPosition], a
|
|
ret
|
|
|
|
.items
|
|
xor a
|
|
ld [wItemsPocketCursor], a
|
|
ld [wItemsPocketScrollPosition], a
|
|
ret
|
|
|
|
.key
|
|
xor a
|
|
ld [wKeyItemsPocketCursor], a
|
|
ld [wKeyItemsPocketScrollPosition], a
|
|
ret
|
|
; 103c2
|
|
|
|
RegisterItem: ; 103c2
|
|
farcall CheckSelectableItem
|
|
ld a, [wItemAttributeParamBuffer]
|
|
and a
|
|
jr nz, .cant_register
|
|
ld a, [wCurrPocket]
|
|
rrca
|
|
rrca
|
|
and $c0
|
|
ld b, a
|
|
ld a, [wCurItemQuantity]
|
|
inc a
|
|
and $3f
|
|
or b
|
|
ld [wWhichRegisteredItem], a
|
|
ld a, [wCurItem]
|
|
ld [wRegisteredItem], a
|
|
call Pack_GetItemName
|
|
ld de, SFX_FULL_HEAL
|
|
call WaitPlaySFX
|
|
ld hl, Text_RegisteredItem
|
|
call Pack_PrintTextNoScroll
|
|
ret
|
|
|
|
.cant_register
|
|
ld hl, Text_CantRegister
|
|
call Pack_PrintTextNoScroll
|
|
ret
|
|
; 103fd
|
|
|
|
GiveItem: ; 103fd
|
|
ld a, [wPartyCount]
|
|
and a
|
|
jp z, .NoPokemon
|
|
ld a, [wOptions]
|
|
push af
|
|
res NO_TEXT_SCROLL, a
|
|
ld [wOptions], a
|
|
ld a, PARTYMENUACTION_GIVE_ITEM
|
|
ld [wPartyMenuActionText], a
|
|
call ClearBGPalettes
|
|
farcall LoadPartyMenuGFX
|
|
farcall InitPartyMenuWithCancel
|
|
farcall InitPartyMenuGFX
|
|
.loop
|
|
farcall WritePartyMenuTilemap
|
|
farcall PrintPartyMenuText
|
|
call WaitBGMap
|
|
call SetPalettes
|
|
call DelayFrame
|
|
farcall PartyMenuSelect
|
|
jr c, .finish
|
|
ld a, [wCurPartySpecies]
|
|
cp EGG
|
|
jr nz, .give
|
|
ld hl, .Egg
|
|
call PrintText
|
|
jr .loop
|
|
|
|
.give
|
|
ld a, [wJumptableIndex]
|
|
push af
|
|
ld a, [wPackJumptableIndex]
|
|
push af
|
|
call GetCurNick
|
|
ld hl, wStringBuffer1
|
|
ld de, wMonOrItemNameBuffer
|
|
ld bc, MON_NAME_LENGTH
|
|
call CopyBytes
|
|
call TryGiveItemToPartymon
|
|
pop af
|
|
ld [wPackJumptableIndex], a
|
|
pop af
|
|
ld [wJumptableIndex], a
|
|
.finish
|
|
pop af
|
|
ld [wOptions], a
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call Pack_InitGFX
|
|
call WaitBGMap_DrawPackGFX
|
|
call Pack_InitColors
|
|
ret
|
|
|
|
.NoPokemon: ; 10486 (4:4486)
|
|
ld hl, TextJump_YouDontHaveAMon
|
|
call Pack_PrintTextNoScroll
|
|
ret
|
|
; 1048d (4:448d)
|
|
.Egg: ; 0x1048d
|
|
; An EGG can't hold an item.
|
|
text_jump Text_AnEGGCantHoldAnItem
|
|
db "@"
|
|
; 0x10492
|
|
|
|
QuitItemSubmenu: ; 10492
|
|
ret
|
|
; 10493
|
|
|
|
BattlePack: ; 10493
|
|
ld hl, wOptions
|
|
set NO_TEXT_SCROLL, [hl]
|
|
call InitPackBuffers
|
|
.loop
|
|
call JoyTextDelay
|
|
ld a, [wJumptableIndex]
|
|
bit 7, a
|
|
jr nz, .end
|
|
call .RunJumptable
|
|
call DelayFrame
|
|
jr .loop
|
|
|
|
.end
|
|
ld a, [wCurrPocket]
|
|
ld [wLastPocket], a
|
|
ld hl, wOptions
|
|
res NO_TEXT_SCROLL, [hl]
|
|
ret
|
|
; 104b9
|
|
|
|
.RunJumptable: ; 104b9
|
|
ld a, [wJumptableIndex]
|
|
ld hl, .Jumptable
|
|
call Pack_GetJumptablePointer
|
|
jp hl
|
|
|
|
; 104c3
|
|
|
|
.Jumptable: ; 104c3 (4:44c3)
|
|
; 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: ; 104d9 (4:44d9)
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call Pack_InitGFX
|
|
ld a, [wPackJumptableIndex]
|
|
ld [wJumptableIndex], a
|
|
call Pack_InitColors
|
|
ret
|
|
|
|
.InitItemsPocket: ; 104e9 (4:44e9)
|
|
xor a ; ITEM_POCKET
|
|
ld [wCurrPocket], a
|
|
call ClearPocketList
|
|
call DrawPocketName
|
|
call WaitBGMap_DrawPackGFX
|
|
call Pack_JumptableNext
|
|
ret
|
|
|
|
.ItemsPocketMenu: ; 104fa (4:44fa)
|
|
ld hl, ItemsPocketMenuDataHeader
|
|
call CopyMenuDataHeader
|
|
ld a, [wItemsPocketCursor]
|
|
ld [wMenuCursorBuffer], a
|
|
ld a, [wItemsPocketScrollPosition]
|
|
ld [wMenuScrollPosition], a
|
|
call ScrollingMenu
|
|
ld a, [wMenuScrollPosition]
|
|
ld [wItemsPocketScrollPosition], a
|
|
ld a, [wMenuCursorY]
|
|
ld [wItemsPocketCursor], a
|
|
ld b, PACKSTATE_INITTMHMPOCKET ; left
|
|
ld c, PACKSTATE_INITBALLSPOCKET ; right
|
|
call Pack_InterpretJoypad
|
|
ret c
|
|
call ItemSubmenu
|
|
ret
|
|
|
|
.InitKeyItemsPocket: ; 10527 (4:4527)
|
|
ld a, KEY_ITEM_POCKET
|
|
ld [wCurrPocket], a
|
|
call ClearPocketList
|
|
call DrawPocketName
|
|
call WaitBGMap_DrawPackGFX
|
|
call Pack_JumptableNext
|
|
ret
|
|
|
|
.KeyItemsPocketMenu: ; 10539 (4:4539)
|
|
ld hl, KeyItemsPocketMenuDataHeader
|
|
call CopyMenuDataHeader
|
|
ld a, [wKeyItemsPocketCursor]
|
|
ld [wMenuCursorBuffer], a
|
|
ld a, [wKeyItemsPocketScrollPosition]
|
|
ld [wMenuScrollPosition], a
|
|
call ScrollingMenu
|
|
ld a, [wMenuScrollPosition]
|
|
ld [wKeyItemsPocketScrollPosition], a
|
|
ld a, [wMenuCursorY]
|
|
ld [wKeyItemsPocketCursor], a
|
|
ld b, PACKSTATE_INITBALLSPOCKET ; left
|
|
ld c, PACKSTATE_INITTMHMPOCKET ; right
|
|
call Pack_InterpretJoypad
|
|
ret c
|
|
call ItemSubmenu
|
|
ret
|
|
|
|
.InitTMHMPocket: ; 10566 (4:4566)
|
|
ld a, TM_HM_POCKET
|
|
ld [wCurrPocket], a
|
|
call ClearPocketList
|
|
call DrawPocketName
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call WaitBGMap_DrawPackGFX
|
|
ld hl, Text_PackEmptyString
|
|
call Pack_PrintTextNoScroll
|
|
call Pack_JumptableNext
|
|
ret
|
|
|
|
.TMHMPocketMenu: ; 10581 (4:4581)
|
|
farcall TMHMPocket
|
|
ld b, PACKSTATE_INITKEYITEMSPOCKET ; left
|
|
ld c, PACKSTATE_INITITEMSPOCKET ; right
|
|
call Pack_InterpretJoypad
|
|
ret c
|
|
xor a
|
|
call TMHMSubmenu
|
|
ret
|
|
|
|
.InitBallsPocket: ; 10594 (4:4594)
|
|
ld a, BALL_POCKET
|
|
ld [wCurrPocket], a
|
|
call ClearPocketList
|
|
call DrawPocketName
|
|
call WaitBGMap_DrawPackGFX
|
|
call Pack_JumptableNext
|
|
ret
|
|
|
|
.BallsPocketMenu: ; 105a6 (4:45a6)
|
|
ld hl, BallsPocketMenuDataHeader
|
|
call CopyMenuDataHeader
|
|
ld a, [wBallsPocketCursor]
|
|
ld [wMenuCursorBuffer], a
|
|
ld a, [wBallsPocketScrollPosition]
|
|
ld [wMenuScrollPosition], a
|
|
call ScrollingMenu
|
|
ld a, [wMenuScrollPosition]
|
|
ld [wBallsPocketScrollPosition], a
|
|
ld a, [wMenuCursorY]
|
|
ld [wBallsPocketCursor], a
|
|
ld b, PACKSTATE_INITITEMSPOCKET ; left
|
|
ld c, PACKSTATE_INITKEYITEMSPOCKET ; right
|
|
call Pack_InterpretJoypad
|
|
ret c
|
|
call ItemSubmenu
|
|
ret
|
|
|
|
ItemSubmenu: ; 105d3 (4:45d3)
|
|
farcall CheckItemContext
|
|
ld a, [wItemAttributeParamBuffer]
|
|
TMHMSubmenu: ; 105dc (4:45dc)
|
|
and a
|
|
jr z, .NoUse
|
|
ld hl, .UsableMenuDataHeader
|
|
ld de, .UsableJumptable
|
|
jr .proceed
|
|
|
|
.NoUse:
|
|
ld hl, .UnusableMenuDataHeader
|
|
ld de, .UnusableJumptable
|
|
.proceed
|
|
push de
|
|
call LoadMenuDataHeader
|
|
call VerticalMenu
|
|
call ExitMenu
|
|
pop hl
|
|
ret c
|
|
ld a, [wMenuCursorY]
|
|
dec a
|
|
call Pack_GetJumptablePointer
|
|
jp hl
|
|
|
|
; 10601 (4:4601)
|
|
.UsableMenuDataHeader: ; 0x10601
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 13, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .UsableMenuData2
|
|
db 1 ; default option
|
|
; 0x10609
|
|
|
|
.UsableMenuData2: ; 0x10609
|
|
db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
|
|
db 2 ; items
|
|
db "USE@"
|
|
db "QUIT@"
|
|
; 0x10614
|
|
|
|
.UsableJumptable: ; 10614
|
|
dw .Use
|
|
dw .Quit
|
|
; 10618
|
|
|
|
.UnusableMenuDataHeader: ; 0x10618
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 13, 9, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .UnusableMenuData2
|
|
db 1 ; default option
|
|
; 0x10620
|
|
|
|
.UnusableMenuData2: ; 0x10620
|
|
db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
|
|
db 1 ; items
|
|
db "QUIT@"
|
|
; 0x10627
|
|
|
|
.UnusableJumptable: ; 10627
|
|
dw .Quit
|
|
; 10629
|
|
|
|
.Use: ; 10629
|
|
farcall CheckItemContext
|
|
ld a, [wItemAttributeParamBuffer]
|
|
ld hl, .ItemFunctionJumptable
|
|
rst JumpTable
|
|
ret
|
|
|
|
.ItemFunctionJumptable: ; 10637 (4:4637)
|
|
; 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
|
|
|
|
.Oak: ; 10645 (4:4645)
|
|
ld hl, Text_ThisIsntTheTime
|
|
call Pack_PrintTextNoScroll
|
|
ret
|
|
|
|
.Unused: ; 1064c (4:464c)
|
|
call DoItemEffect
|
|
ld a, [wItemEffectSucceeded]
|
|
and a
|
|
jr nz, .ReturnToBattle
|
|
ret
|
|
|
|
.BattleField: ; 10656 (4:4656)
|
|
call DoItemEffect
|
|
ld a, [wItemEffectSucceeded]
|
|
and a
|
|
jr nz, .quit_run_script
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call Pack_InitGFX
|
|
call WaitBGMap_DrawPackGFX
|
|
call Pack_InitColors
|
|
ret
|
|
|
|
.ReturnToBattle: ; 1066c (4:466c)
|
|
call ClearBGPalettes
|
|
jr .quit_run_script
|
|
|
|
.BattleOnly: ; 10671 (4:4671)
|
|
call DoItemEffect
|
|
ld a, [wItemEffectSucceeded]
|
|
and a
|
|
jr z, .Oak
|
|
cp $2
|
|
jr z, .didnt_use_item
|
|
.quit_run_script ; 1067e (4:467e)
|
|
ld a, PACKSTATE_QUITRUNSCRIPT
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
|
|
.didnt_use_item ; 10684 (4:4684)
|
|
xor a
|
|
ld [wItemEffectSucceeded], a
|
|
ret
|
|
; 10689 (4:4689)
|
|
.Quit: ; 10689
|
|
ret
|
|
; 1068a
|
|
|
|
InitPackBuffers: ; 1068a
|
|
xor a
|
|
ld [wJumptableIndex], a
|
|
; pocket id -> jumptable index
|
|
ld a, [wLastPocket]
|
|
maskbits NUM_POCKETS
|
|
ld [wCurrPocket], a
|
|
inc a
|
|
add a
|
|
dec a
|
|
ld [wPackJumptableIndex], a
|
|
xor a ; FALSE
|
|
ld [wPackUsedItem], a
|
|
xor a
|
|
ld [wSwitchItem], a
|
|
ret
|
|
; 106a5
|
|
|
|
DepositSellInitPackBuffers: ; 106a5
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
ld [wJumptableIndex], a ; PACKSTATE_INITGFX
|
|
ld [wPackJumptableIndex], a ; PACKSTATE_INITGFX
|
|
ld [wCurrPocket], a ; ITEM_POCKET
|
|
ld [wPackUsedItem], a
|
|
ld [wSwitchItem], a
|
|
call Pack_InitGFX
|
|
call Pack_InitColors
|
|
ret
|
|
; 106be
|
|
|
|
DepositSellPack: ; 106be
|
|
.loop
|
|
call .RunJumptable
|
|
call DepositSellTutorial_InterpretJoypad
|
|
jr c, .loop
|
|
ret
|
|
; 106c7
|
|
|
|
.RunJumptable: ; 106c7
|
|
ld a, [wJumptableIndex]
|
|
ld hl, .Jumptable
|
|
call Pack_GetJumptablePointer
|
|
jp hl
|
|
|
|
; 106d1
|
|
|
|
.Jumptable: ; 106d1 (4:46d1)
|
|
; entries correspond to *_POCKET constants
|
|
dw .ItemsPocket
|
|
dw .BallsPocket
|
|
dw .KeyItemsPocket
|
|
dw .TMHMPocket
|
|
|
|
.ItemsPocket: ; 106d9 (4:46d9)
|
|
xor a ; ITEM_POCKET
|
|
call InitPocket
|
|
ld hl, PC_Mart_ItemsPocketMenuDataHeader
|
|
call CopyMenuDataHeader
|
|
ld a, [wItemsPocketCursor]
|
|
ld [wMenuCursorBuffer], a
|
|
ld a, [wItemsPocketScrollPosition]
|
|
ld [wMenuScrollPosition], a
|
|
call ScrollingMenu
|
|
ld a, [wMenuScrollPosition]
|
|
ld [wItemsPocketScrollPosition], a
|
|
ld a, [wMenuCursorY]
|
|
ld [wItemsPocketCursor], a
|
|
ret
|
|
|
|
.KeyItemsPocket: ; 106ff (4:46ff)
|
|
ld a, KEY_ITEM_POCKET
|
|
call InitPocket
|
|
ld hl, PC_Mart_KeyItemsPocketMenuDataHeader
|
|
call CopyMenuDataHeader
|
|
ld a, [wKeyItemsPocketCursor]
|
|
ld [wMenuCursorBuffer], a
|
|
ld a, [wKeyItemsPocketScrollPosition]
|
|
ld [wMenuScrollPosition], a
|
|
call ScrollingMenu
|
|
ld a, [wMenuScrollPosition]
|
|
ld [wKeyItemsPocketScrollPosition], a
|
|
ld a, [wMenuCursorY]
|
|
ld [wKeyItemsPocketCursor], a
|
|
ret
|
|
|
|
.TMHMPocket: ; 10726 (4:4726)
|
|
ld a, TM_HM_POCKET
|
|
call InitPocket
|
|
call WaitBGMap_DrawPackGFX
|
|
farcall TMHMPocket
|
|
ld a, [wCurItem]
|
|
ld [wCurItem], a
|
|
ret
|
|
|
|
.BallsPocket: ; 1073b (4:473b)
|
|
ld a, BALL_POCKET
|
|
call InitPocket
|
|
ld hl, PC_Mart_BallsPocketMenuDataHeader
|
|
call CopyMenuDataHeader
|
|
ld a, [wBallsPocketCursor]
|
|
ld [wMenuCursorBuffer], a
|
|
ld a, [wBallsPocketScrollPosition]
|
|
ld [wMenuScrollPosition], a
|
|
call ScrollingMenu
|
|
ld a, [wMenuScrollPosition]
|
|
ld [wBallsPocketScrollPosition], a
|
|
ld a, [wMenuCursorY]
|
|
ld [wBallsPocketCursor], a
|
|
ret
|
|
|
|
InitPocket: ; 10762 (4:4762)
|
|
ld [wCurrPocket], a
|
|
call ClearPocketList
|
|
call DrawPocketName
|
|
call WaitBGMap_DrawPackGFX
|
|
ret
|
|
|
|
DepositSellTutorial_InterpretJoypad: ; 1076f
|
|
ld hl, wMenuJoypad
|
|
ld a, [hl]
|
|
and A_BUTTON
|
|
jr nz, .a_button
|
|
ld a, [hl]
|
|
and B_BUTTON
|
|
jr nz, .b_button
|
|
ld a, [hl]
|
|
and D_LEFT
|
|
jr nz, .d_left
|
|
ld a, [hl]
|
|
and D_RIGHT
|
|
jr nz, .d_right
|
|
scf
|
|
ret
|
|
|
|
.a_button
|
|
ld a, TRUE
|
|
ld [wPackUsedItem], a
|
|
and a
|
|
ret
|
|
|
|
.b_button
|
|
xor a ; FALSE
|
|
ld [wPackUsedItem], a
|
|
and a
|
|
ret
|
|
|
|
.d_left
|
|
ld a, [wJumptableIndex]
|
|
dec a
|
|
maskbits NUM_POCKETS
|
|
ld [wJumptableIndex], a
|
|
push de
|
|
ld de, SFX_SWITCH_POCKETS
|
|
call PlaySFX
|
|
pop de
|
|
scf
|
|
ret
|
|
|
|
.d_right
|
|
ld a, [wJumptableIndex]
|
|
inc a
|
|
maskbits NUM_POCKETS
|
|
ld [wJumptableIndex], a
|
|
push de
|
|
ld de, SFX_SWITCH_POCKETS
|
|
call PlaySFX
|
|
pop de
|
|
scf
|
|
ret
|
|
; 107bb
|
|
|
|
TutorialPack: ; 107bb
|
|
call DepositSellInitPackBuffers
|
|
ld a, [wInputType]
|
|
or a
|
|
jr z, .loop
|
|
farcall _DudeAutoInput_RightA
|
|
.loop
|
|
call .RunJumptable
|
|
call DepositSellTutorial_InterpretJoypad
|
|
jr c, .loop
|
|
xor a ; FALSE
|
|
ld [wPackUsedItem], a
|
|
ret
|
|
; 107d7
|
|
|
|
.RunJumptable: ; 107d7
|
|
ld a, [wJumptableIndex]
|
|
ld hl, .dw
|
|
call Pack_GetJumptablePointer
|
|
jp hl
|
|
|
|
; 107e1
|
|
|
|
.dw ; 107e1 (4:47e1)
|
|
; entries correspond to *_POCKET constants
|
|
dw .Items
|
|
dw .Balls
|
|
dw .wKeyItems
|
|
dw .TMHM
|
|
|
|
.Items: ; 107e9 (4:47e9)
|
|
xor a ; ITEM_POCKET
|
|
ld hl, .ItemsMenuDataHeader
|
|
jr .DisplayPocket
|
|
|
|
; 107ef (4:47ef)
|
|
.ItemsMenuDataHeader: ; 0x107ef
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .ItemsMenuData2
|
|
db 1 ; default option
|
|
; 0x107f7
|
|
|
|
.ItemsMenuData2: ; 0x107f7
|
|
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
|
|
dba PlaceMenuItemName
|
|
dba PlaceMenuItemQuantity
|
|
dba UpdateItemDescription
|
|
; 10807
|
|
|
|
.wKeyItems: ; 10807 (4:4807)
|
|
ld a, KEY_ITEM_POCKET
|
|
ld hl, .KeyItemsMenuDataHeader
|
|
jr .DisplayPocket
|
|
|
|
; 1080e (4:480e)
|
|
.KeyItemsMenuDataHeader: ; 0x1080e
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .KeyItemsMenuData2
|
|
db 1 ; default option
|
|
; 0x10816
|
|
|
|
.KeyItemsMenuData2: ; 0x10816
|
|
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
|
|
dba PlaceMenuItemName
|
|
dba PlaceMenuItemQuantity
|
|
dba UpdateItemDescription
|
|
; 10826
|
|
|
|
.TMHM: ; 10826 (4:4826)
|
|
ld a, TM_HM_POCKET
|
|
call InitPocket
|
|
call WaitBGMap_DrawPackGFX
|
|
farcall TMHMPocket
|
|
ld a, [wCurItem]
|
|
ld [wCurItem], a
|
|
ret
|
|
|
|
.Balls: ; 1083b (4:483b)
|
|
ld a, BALL_POCKET
|
|
ld hl, .BallsMenuDataHeader
|
|
jr .DisplayPocket
|
|
|
|
; 10842 (4:4842)
|
|
.BallsMenuDataHeader: ; 0x10842
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .BallsMenuData2
|
|
db 1 ; default option
|
|
; 0x1084a
|
|
|
|
.BallsMenuData2: ; 0x1084a
|
|
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
|
|
dba PlaceMenuItemName
|
|
dba PlaceMenuItemQuantity
|
|
dba UpdateItemDescription
|
|
; 1085a
|
|
|
|
.DisplayPocket: ; 1085a (4:485a)
|
|
push hl
|
|
call InitPocket
|
|
pop hl
|
|
call CopyMenuDataHeader
|
|
call ScrollingMenu
|
|
ret
|
|
|
|
Pack_JumptableNext: ; 10866 (4:4866)
|
|
ld hl, wJumptableIndex
|
|
inc [hl]
|
|
ret
|
|
|
|
Pack_GetJumptablePointer: ; 1086b
|
|
ld e, a
|
|
ld d, 0
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ret
|
|
; 10874
|
|
|
|
Pack_QuitNoScript: ; 10874 (4:4874)
|
|
ld hl, wJumptableIndex
|
|
set 7, [hl]
|
|
xor a ; FALSE
|
|
ld [wPackUsedItem], a
|
|
ret
|
|
|
|
Pack_QuitRunScript: ; 1087e (4:487e)
|
|
ld hl, wJumptableIndex
|
|
set 7, [hl]
|
|
ld a, TRUE
|
|
ld [wPackUsedItem], a
|
|
ret
|
|
|
|
Pack_PrintTextNoScroll: ; 10889 (4:4889)
|
|
ld a, [wOptions]
|
|
push af
|
|
set NO_TEXT_SCROLL, a
|
|
ld [wOptions], a
|
|
call PrintText
|
|
pop af
|
|
ld [wOptions], a
|
|
ret
|
|
|
|
WaitBGMap_DrawPackGFX: ; 1089a (4:489a)
|
|
call WaitBGMap
|
|
DrawPackGFX: ; 1089d
|
|
ld a, [wCurrPocket]
|
|
maskbits NUM_POCKETS
|
|
ld e, a
|
|
ld d, $0
|
|
ld a, [wBattleType]
|
|
cp BATTLETYPE_TUTORIAL
|
|
jr z, .male_dude
|
|
ld a, [wPlayerGender]
|
|
bit 0, a
|
|
jr nz, .female
|
|
.male_dude
|
|
ld hl, PackGFXPointers
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld d, [hl]
|
|
ld hl, vTiles2 tile $50
|
|
lb bc, BANK(PackGFX), 15
|
|
call Request2bpp
|
|
ret
|
|
|
|
.female
|
|
farcall DrawKrisPackGFX
|
|
ret
|
|
; 108cc
|
|
|
|
PackGFXPointers: ; 108cc
|
|
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
|
|
; 108d4
|
|
|
|
Pack_InterpretJoypad: ; 108d4 (4:48d4)
|
|
ld hl, wMenuJoypad
|
|
ld a, [wSwitchItem]
|
|
and a
|
|
jr nz, .switching_item
|
|
ld a, [hl]
|
|
and A_BUTTON
|
|
jr nz, .a_button
|
|
ld a, [hl]
|
|
and B_BUTTON
|
|
jr nz, .b_button
|
|
ld a, [hl]
|
|
and D_LEFT
|
|
jr nz, .d_left
|
|
ld a, [hl]
|
|
and D_RIGHT
|
|
jr nz, .d_right
|
|
ld a, [hl]
|
|
and SELECT
|
|
jr nz, .select
|
|
scf
|
|
ret
|
|
|
|
.a_button
|
|
and a
|
|
ret
|
|
|
|
.b_button
|
|
ld a, PACKSTATE_QUITNOSCRIPT
|
|
ld [wJumptableIndex], a
|
|
scf
|
|
ret
|
|
|
|
.d_left
|
|
ld a, b
|
|
ld [wJumptableIndex], a
|
|
ld [wPackJumptableIndex], a
|
|
push de
|
|
ld de, SFX_SWITCH_POCKETS
|
|
call PlaySFX
|
|
pop de
|
|
scf
|
|
ret
|
|
|
|
.d_right
|
|
ld a, c
|
|
ld [wJumptableIndex], a
|
|
ld [wPackJumptableIndex], a
|
|
push de
|
|
ld de, SFX_SWITCH_POCKETS
|
|
call PlaySFX
|
|
pop de
|
|
scf
|
|
ret
|
|
|
|
.select
|
|
farcall SwitchItemsInBag
|
|
ld hl, Text_MoveItemWhere
|
|
call Pack_PrintTextNoScroll
|
|
scf
|
|
ret
|
|
|
|
.switching_item
|
|
ld a, [hl]
|
|
and A_BUTTON | SELECT
|
|
jr nz, .place_insert
|
|
ld a, [hl]
|
|
and B_BUTTON
|
|
jr nz, .end_switch
|
|
scf
|
|
ret
|
|
|
|
.place_insert
|
|
farcall SwitchItemsInBag
|
|
ld de, SFX_SWITCH_POKEMON
|
|
call WaitPlaySFX
|
|
ld de, SFX_SWITCH_POKEMON
|
|
call WaitPlaySFX
|
|
.end_switch
|
|
xor a
|
|
ld [wSwitchItem], a
|
|
scf
|
|
ret
|
|
|
|
Pack_InitGFX: ; 10955
|
|
call ClearBGPalettes
|
|
call ClearTileMap
|
|
call ClearSprites
|
|
call DisableLCD
|
|
ld hl, PackMenuGFX
|
|
ld de, vTiles2
|
|
ld bc, $60 tiles
|
|
ld a, BANK(PackMenuGFX)
|
|
call FarCopyBytes
|
|
; Background (blue if male, pink if female)
|
|
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, SCREEN_WIDTH
|
|
.loop
|
|
ld [hli], a
|
|
inc a
|
|
dec c
|
|
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 DrawPackGFX
|
|
ret
|
|
; 109a5
|
|
|
|
PlacePackGFX: ; 109a5
|
|
hlcoord 0, 3
|
|
ld a, $50
|
|
ld de, SCREEN_WIDTH - 5
|
|
ld b, 3
|
|
.row
|
|
ld c, 5
|
|
.column
|
|
ld [hli], a
|
|
inc a
|
|
dec c
|
|
jr nz, .column
|
|
add hl, de
|
|
dec b
|
|
jr nz, .row
|
|
ret
|
|
; 109bb
|
|
|
|
DrawPocketName: ; 109bb
|
|
ld a, [wCurrPocket]
|
|
; * 15
|
|
ld d, a
|
|
swap a
|
|
sub d
|
|
ld d, 0
|
|
ld e, a
|
|
ld hl, .tilemap
|
|
add hl, de
|
|
ld d, h
|
|
ld e, l
|
|
hlcoord 0, 7
|
|
ld c, 3
|
|
.row
|
|
ld b, 5
|
|
.col
|
|
ld a, [de]
|
|
inc de
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .col
|
|
ld a, c
|
|
ld c, SCREEN_WIDTH - 5
|
|
add hl, bc
|
|
ld c, a
|
|
dec c
|
|
jr nz, .row
|
|
ret
|
|
; 109e1
|
|
|
|
.tilemap ; 109e1
|
|
; 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
|
|
; 10a1d
|
|
|
|
Pack_GetItemName: ; 10a1d
|
|
ld a, [wCurItem]
|
|
ld [wNamedObjectIndexBuffer], a
|
|
call GetItemName
|
|
call CopyName1
|
|
ret
|
|
; 10a2a
|
|
|
|
Unreferenced_Pack_ClearTilemap: ; 10a2a
|
|
hlcoord 0, 0
|
|
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
|
|
ld a, " "
|
|
call ByteFill
|
|
ret
|
|
; 10a36
|
|
|
|
ClearPocketList: ; 10a36 (4:4a36)
|
|
hlcoord 5, 2
|
|
lb bc, 10, SCREEN_WIDTH - 5
|
|
call ClearBox
|
|
ret
|
|
|
|
Pack_InitColors: ; 10a40
|
|
call WaitBGMap
|
|
ld b, SCGB_PACKPALS
|
|
call GetSGBLayout
|
|
call SetPalettes
|
|
call DelayFrame
|
|
ret
|
|
; 10a4f
|
|
|
|
ItemsPocketMenuDataHeader: ; 0x10a4f
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .MenuData2
|
|
db 1 ; default option
|
|
; 0x10a57
|
|
|
|
.MenuData2: ; 0x10a57
|
|
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, wNumItems
|
|
dba PlaceMenuItemName
|
|
dba PlaceMenuItemQuantity
|
|
dba UpdateItemDescription
|
|
; 10a67
|
|
|
|
PC_Mart_ItemsPocketMenuDataHeader: ; 0x10a67
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .MenuData2
|
|
db 1 ; default option
|
|
; 0x10a6f
|
|
|
|
.MenuData2: ; 0x10a6f
|
|
db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP ; flags
|
|
db 5, 8 ; rows, columns
|
|
db 2 ; horizontal spacing
|
|
dbw 0, wNumItems
|
|
dba PlaceMenuItemName
|
|
dba PlaceMenuItemQuantity
|
|
dba UpdateItemDescription
|
|
; 10a7f
|
|
|
|
KeyItemsPocketMenuDataHeader: ; 0x10a7f
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .MenuData2
|
|
db 1 ; default option
|
|
; 0x10a87
|
|
|
|
.MenuData2: ; 0x10a87
|
|
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, wNumKeyItems
|
|
dba PlaceMenuItemName
|
|
dba PlaceMenuItemQuantity
|
|
dba UpdateItemDescription
|
|
; 10a97
|
|
|
|
PC_Mart_KeyItemsPocketMenuDataHeader: ; 0x10a97
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .MenuData2
|
|
db 1 ; default option
|
|
; 0x10a9f
|
|
|
|
.MenuData2: ; 0x10a9f
|
|
db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP ; flags
|
|
db 5, 8 ; rows, columns
|
|
db 1 ; horizontal spacing
|
|
dbw 0, wNumKeyItems
|
|
dba PlaceMenuItemName
|
|
dba PlaceMenuItemQuantity
|
|
dba UpdateItemDescription
|
|
; 10aaf
|
|
|
|
BallsPocketMenuDataHeader: ; 0x10aaf
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .MenuData2
|
|
db 1 ; default option
|
|
; 0x10ab7
|
|
|
|
.MenuData2: ; 0x10ab7
|
|
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, wNumBalls
|
|
dba PlaceMenuItemName
|
|
dba PlaceMenuItemQuantity
|
|
dba UpdateItemDescription
|
|
; 10ac7
|
|
|
|
PC_Mart_BallsPocketMenuDataHeader: ; 0x10ac7
|
|
db MENU_BACKUP_TILES ; flags
|
|
menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
|
|
dw .MenuData2
|
|
db 1 ; default option
|
|
; 0x10acf
|
|
|
|
.MenuData2: ; 0x10acf
|
|
db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP ; flags
|
|
db 5, 8 ; rows, columns
|
|
db 2 ; horizontal spacing
|
|
dbw 0, wNumBalls
|
|
dba PlaceMenuItemName
|
|
dba PlaceMenuItemQuantity
|
|
dba UpdateItemDescription
|
|
; 10adf
|
|
|
|
Text_PackNoItems: ; 0x10adf
|
|
; No items.
|
|
text_jump UnknownText_0x1c0b9a
|
|
db "@"
|
|
; 0x10ae4
|
|
|
|
Text_ThrowAwayHowMany: ; 0x10ae4
|
|
; Throw away how many?
|
|
text_jump UnknownText_0x1c0ba5
|
|
db "@"
|
|
; 0x10ae9
|
|
|
|
Text_ConfirmThrowAway: ; 0x10ae9
|
|
; Throw away @ @ (S)?
|
|
text_jump UnknownText_0x1c0bbb
|
|
db "@"
|
|
; 0x10aee
|
|
|
|
Text_ThrewAway: ; 0x10aee
|
|
; Threw away @ (S).
|
|
text_jump UnknownText_0x1c0bd8
|
|
db "@"
|
|
; 0x10af3
|
|
|
|
Text_ThisIsntTheTime: ; 0x10af3
|
|
; OAK: ! This isn't the time to use that!
|
|
text_jump UnknownText_0x1c0bee
|
|
db "@"
|
|
; 0x10af8
|
|
|
|
TextJump_YouDontHaveAMon: ; 0x10af8
|
|
; You don't have a #MON!
|
|
text_jump Text_YouDontHaveAMon
|
|
db "@"
|
|
; 0x10afd
|
|
|
|
Text_RegisteredItem: ; 0x10afd
|
|
; Registered the @ .
|
|
text_jump UnknownText_0x1c0c2e
|
|
db "@"
|
|
; 0x10b02
|
|
|
|
Text_CantRegister: ; 0x10b02
|
|
; You can't register that item.
|
|
text_jump UnknownText_0x1c0c45
|
|
db "@"
|
|
; 0x10b07
|
|
|
|
Text_MoveItemWhere: ; 0x10b07
|
|
; Where should this be moved to?
|
|
text_jump UnknownText_0x1c0c63
|
|
db "@"
|
|
; 0x10b0c
|
|
|
|
Text_PackEmptyString: ; 0x10b0c
|
|
;
|
|
text_jump UnknownText_0x1c0c83
|
|
db "@"
|
|
; 0x10b11
|
|
|
|
TextJump_YouCantUseItInABattle: ; 0x10b11
|
|
; Doesn't seem to be used anywhere
|
|
; "You can't use it in a battle."
|
|
text_jump Text_YouCantUseItInABattle
|
|
db "@"
|
|
; 0x10b16
|
|
|
|
PackMenuGFX:
|
|
INCBIN "gfx/pack/pack_menu.2bpp"
|
|
PackGFX:
|
|
INCBIN "gfx/pack/pack.2bpp"
|