diff options
Diffstat (limited to 'engine/items/pack.asm')
-rwxr-xr-x | engine/items/pack.asm | 1573 |
1 files changed, 1573 insertions, 0 deletions
diff --git a/engine/items/pack.asm b/engine/items/pack.asm new file mode 100755 index 00000000..a8c1fedc --- /dev/null +++ b/engine/items/pack.asm @@ -0,0 +1,1573 @@ +Pack: + ld hl, wOptions + set NO_TEXT_SCROLL, [hl] + call Function10aba +.asm_10438 + call JoyTextDelay + ld a, [wce63] + bit 7, a + jr nz, .asm_1044a + call Function10456 + call DelayFrame + jr .asm_10438 + +.asm_1044a + ld a, [wce65] + ld [wcfc8], a + ld hl, wOptions + res NO_TEXT_SCROLL, [hl] + ret + +Function10456: ; 10456 (4:4456) + ld a, [wce63] + ld hl, .Jumptable ; $4460 + call Function10c9b + 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: + xor a + ldh [hBGMapMode], a + call Function10d70 + ld a, [wce64] + ld [wce63], a + call Function10e5b + ret + +Pack_InitItemsPocket: + xor a + ld [wce65], a + call Function10e51 + call Function10dd6 + call Function10cca + call Function10c96 + ret + +Pack_ItemsPocketMenu: + ld hl, ItemsPocketMenuDataHeader + call CopyMenuHeader + ld a, [wcfca] + ld [wMenuCursorBuffer], a + ld a, [wcfcf] + ld [wMenuScrollPosition], a + call ScrollingMenu + ld a, [wMenuScrollPosition] + ld [wcfcf], a + ld a, [wMenuCursorY] + ld [wcfca], a +.asm_104b7 + ld b, $7 + ld c, $3 + call Function10cef + ret c + call Function105f5 + ret + +Pack_InitKeyItemsPocket: + ld a, $2 + ld [wce65], a + call Function10e51 + call Function10dd6 + call Function10cca + call Function10c96 + ret + +Pack_KeyItemsPocketMenu: + ld hl, KeyItemsPocketMenuDataHeader ; $4e9a + call CopyMenuHeader + ld a, [wcfcb] + ld [wMenuCursorBuffer], a + ld a, [wcfd0] + ld [wMenuScrollPosition], a + call ScrollingMenu + ld a, [wMenuScrollPosition] + ld [wcfd0], a + ld a, [wMenuCursorY] + ld [wcfcb], a + ld b, $3 + ld c, $7 + call Function10cef + ret c + call Function105f5 + ret + +Pack_InitTMHMPocket: + ld a, $3 + ld [wce65], a + call Function10e51 + call Function10dd6 + xor a + ldh [hBGMapMode], a + call Function10cca + call Function10c96 + ret + +Pack_TMHMPocketMenu: + farcall Pack_TMHMPocketMenu_ + ld b, $5 + ld c, $1 + call Function10cef + 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 + push de + call LoadMenuHeader + call VerticalMenu + call ExitMenu + pop hl + ret c + ld a, [wMenuCursorY] + dec a + call Function10c9b + jp hl + +TMHMPocketSubmenuDataHeader_NoGive: + db $40 + db 07, 00 + db 11, 06 + dw .MenuData2 + db 1 + +.MenuData2: + db $c0 + db 2 + db "USE@" + db "QUIT@" + +TMHMPocketSubmenuJumptable_NoGive: + dw UseTMorHM + dw QuitItemSubmenu + +TMHMPocketSubmenuDataHeader_Give: + db $40 + db 05, 00 + db 11, 06 + dw .MenuData2 + db 1 + +.MenuData2: + db $c0 + db 3 + db "USE@" + db "GIVE@" + db "QUIT@" + +TMHMPocketSubmenuJumptable_Give: + dw UseTMorHM + dw GiveItem + dw QuitItemSubmenu + +UseTMorHM: + farcall AskTeachTMHM + ret c + farcall ChooseMonToLearnTMHM + jr c, .asm_105a9 + ld hl, wOptions + ld a, [hl] + push af + res 4, [hl] + farcall TeachTMHM + pop af + ld [wOptions], a +.asm_105a9 + xor a + ldh [hBGMapMode], a + call Function10d70 + call Function10cca + call Function10e5b + ret + +Pack_InitBallsPocket: + ld a, $1 + ld [wce65], a + call Function10e51 + call Function10dd6 + call Function10cca + call Function10c96 + ret + +Pack_BallsPocketMenu: + ld hl, BallsPocketMenuDataHeader ; $4eca + call CopyMenuHeader + ld a, [wcfcc] + ld [wMenuCursorBuffer], a + ld a, [wcfd1] + ld [wMenuScrollPosition], a + call ScrollingMenu + ld a, [wMenuScrollPosition] + ld [wcfd1], a + ld a, [wMenuCursorY] + ld [wcfcc], a + ld b, $1 + ld c, $5 + call Function10cef + ret c + call Function105f5 + ret + +Function105f5: ; 105f5 (4:45f5) + farcall _CheckTossableItem + ld a, [wItemAttributeParamBuffer] + and a + jr nz, .asm_10629 + farcall CheckSelectableItem + ld a, [wItemAttributeParamBuffer] + and a + jr nz, .asm_1061b + farcall CheckItemMenu + ld a, [wItemAttributeParamBuffer] + and a + jr nz, .asm_10637 + jr .asm_10657 + +.asm_1061b + farcall CheckItemMenu + ld a, [wItemAttributeParamBuffer] + and a + jr nz, .asm_1063f + jr .asm_1065f + +.asm_10629 + 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 + push de + call LoadMenuHeader + call VerticalMenu + call ExitMenu + pop hl + ret c + ld a, [wMenuCursorY] + dec a + call Function10c9b + jp hl + +ItemSubmenuDataHeader_UseGiveTossSelQuit: + db $40 ; flags + db 02, 00 ; start coords + db 12, 06 ; end coords + dw .MenuData2 + db 1 ; default option + +.MenuData2: + db $c0 ; flags + db 5 ; items + db "USE@" + db "GIVE@" + db "TOSS@" + db "SEL@" + db "QUIT@" + +ItemSubmenuJumptable_UseGiveTossSelQuit: + 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 + db 1 ; default option + +.MenuData2: + db $c0 ; flags + db 4 ; items + db "USE@" + db "GIVE@" + db "TOSS@" + db "QUIT@" + +ItemSubmenuJumptable_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 + db 1 ; default option + +.MenuData2: + db $c0 ; flags + db 2 ; items + db "USE@" + db "QUIT@" + +ItemSubmenuJumptable_UseQuit: + dw UseItem + dw QuitItemSubmenu + +ItemSubmenuDataHeader_UseSelQuit: + db %01000000 ; flags + db 05, 00 ; start coords + db 11, 06 ; end coords + dw .MenuData2 + db 1 ; default option + +.MenuData2: + db $c0 ; flags + db 3 ; items + db "USE@" + db "SEL@" + db "QUIT@" + +ItemSubmenuJumptable_UseSelQuit: + dw UseItem + dw RegisterItem + dw QuitItemSubmenu + +ItemSubmenuDataHeader_GiveTossSelQuit: + db $40 ; flags + db 03, 00 ; start coords + db 11, 06 ; end coords + dw .MenuData2 + db 1 ; default option + +.MenuData2: + db $c0 ; flags + db 4 ; items + db "GIVE@" + db "TOSS@" + db "SEL@" + db "QUIT@" + +ItemSubmenuJumptable_GiveTossSelQuit: + 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 + db 1 ; default option + +.MenuData2: + db $c0 ; flags + db 3 ; items + db "GIVE@" + db "TOSS@" + db "QUIT@" + +ItemSubmenuJumptable_GiveTossQuit: + dw GiveItem + dw TossMenu + dw QuitItemSubmenu + +UseItem: + farcall CheckItemMenu + ld a, [wItemAttributeParamBuffer] + ld hl, .Jumptable + rst JumpTable + ret + +.Jumptable + dw .NotTheTime + dw .NotTheTime + dw .NotTheTime + dw .NotTheTime + dw .Current + dw .Party + dw .Field + +.NotTheTime + ld hl, Text_ThisIsntTheTime + call Function10cb9 + ret + +.Current + call DoItemEffect + ret + +.Party + ld a, [wPartyCount] + and a + jr z, .no_pokemon + call DoItemEffect + xor a + ldh [hBGMapMode], a + call Function10d70 + call Function10cca + call Function10e5b + ret + +.no_pokemon + ld hl, Text_YouDontHaveAPokemon + call Function10cb9 + ret + +.Field + call DoItemEffect + ld a, [wFieldMoveSucceeded] + and a + jr z, .NotTheTime + ld a, $a + ld [wce63], a + ret + +TossMenu: + ld hl, Text_ThrowAwayHowMany + call Function10cb9 + farcall SelectQuantityToToss ; 9:4f20 + push af + call ExitMenu + pop af + jr c, .asm_107cc + call Function10e38 + ld hl, Text_ConfirmThrowAway + call MenuTextbox + call YesNoBox + push af + call ExitMenu + pop af + jr c, .asm_107cc + ld hl, wTMsHMsEnd + ld a, [wCurItemQuantity] + call TossItem + call Function10e38 + ld hl, Text_ThrewAway + call Function10cb9 +.asm_107cc + ret + +Function107cd: + ld a, [wce65] + and a + jr z, .asm_107e2 + dec a + jr z, .asm_107da + dec a + jr z, .asm_107ea + ret + +.asm_107da + xor a + ld [wcfcc], a + ld [wcfd1], a + ret + +.asm_107e2 + xor a + ld [wcfca], a + ld [wcfcf], a + ret + +.asm_107ea + xor a + ld [wcfcb], a + ld [wcfd0], a + ret + +RegisterItem: + farcall CheckSelectableItem + ld a, [wItemAttributeParamBuffer] + and a + jr nz, .asm_10826 + ld a, [wce65] + 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 Function10e38 + ld de, SFX_FULL_HEAL + call WaitPlaySFX + ld hl, Text_RegisteredTheItem + call Function10cb9 + ret + +.asm_10826 + ld hl, Text_CantRegisterThatItem + call Function10cb9 + ret + +GiveItem: + ld a, [wPartyCount] + and a + jp z, Function108b6 + ld a, [wOptions] + push af + res 4, a + ld [wOptions], a + ld a, $8 + ld [wPartyMenuActionText], a + call ClearBGPalettes + farcall LoadPartyMenuGFX + farcall InitPartyMenuWithCancel + farcall InitPartyMenuGFX +.asm_10857 + farcall WritePartyMenuTilemap + farcall PrintPartyMenuText + call WaitBGMap + call SetPalettes + call DelayFrame + farcall PartyMenuSelect + jr c, .asm_108a5 + ld a, [wCurPartySpecies] + cp EGG + jr nz, .asm_10883 + ld hl, Text_AnEggCantHoldAnItem + call PrintText + jr .asm_10857 + +.asm_10883 + ld a, [wce63] + push af + ld a, [wce64] + push af + call GetCurNick + ld hl, wStringBuffer1 + ld de, wMonOrItemNameBuffer + ld bc, $b + call CopyBytes + call TryGiveItemToPartymon + pop af + ld [wce64], a + pop af + ld [wce63], a +.asm_108a5 + pop af + ld [wOptions], a + xor a + ldh [hBGMapMode], a + call Function10d70 + call Function10cca + call Function10e5b + ret + +Function108b6: ; 108b6 (4:48b6) + ld hl, Text_YouDontHaveAPokemon ; $4f13 + call Function10cb9 + ret + +Text_AnEggCantHoldAnItem: + text_far Text_AnEGGCantHoldAnItem + db "@" + +QuitItemSubmenu: + ret + +BattlePack: + ld hl, wOptions + set 4, [hl] + call Function10aba +.asm_108cb + call JoyTextDelay + ld a, [wce63] + bit 7, a + jr nz, .asm_108dd + call Function108e9 + call DelayFrame + jr .asm_108cb + +.asm_108dd + ld a, [wce65] + ld [wcfc8], a + ld hl, wOptions + res 4, [hl] + ret + +Function108e9: ; 108e9 (4:48e9) + ld a, [wce63] + ld hl, .Jumptable + call Function10c9b + 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: + xor a + ldh [hBGMapMode], a + call Function10d70 + ld a, [wce64] + ld [wce63], a + call Function10e5b + ret + +BattlePack_InitItemsPocket: + xor a + ld [wce65], a + call Function10e51 + call Function10dd6 + call Function10cca + call Function10c96 + ret + +BattlePack_ItemsPocketMenu: + ld hl, $4e6a + call CopyMenuHeader + ld a, [wcfca] + ld [wMenuCursorBuffer], a + ld a, [wcfcf] + ld [wMenuScrollPosition], a + call ScrollingMenu + ld a, [wMenuScrollPosition] + ld [wcfcf], a + ld a, [wMenuCursorY] + ld [wcfca], a + ld b, $7 + ld c, $3 + call Function10cef + ret c + call Function10a03 + ret + +BattlePack_InitKeyItemsPocket: + ld a, $2 + ld [wce65], a + call Function10e51 + call Function10dd6 + call Function10cca + call Function10c96 + ret + +BattlePack_KeyItemsPocketMenu: + ld hl, $4e9a + call CopyMenuHeader + ld a, [wcfcb] + ld [wMenuCursorBuffer], a + ld a, [wcfd0] + ld [wMenuScrollPosition], a + call ScrollingMenu + ld a, [wMenuScrollPosition] + ld [wcfd0], a + ld a, [wMenuCursorY] + ld [wcfcb], a + ld b, $3 + ld c, $7 + call Function10cef + ret c + call Function10a03 + ret + +BattlePack_InitTMHMPocket: + ld a, $3 + ld [wce65], a + call Function10e51 + call Function10dd6 + xor a + ldh [hBGMapMode], a + call Function10cca + ld hl, Text_PackEmptyString + call Function10cb9 + call Function10c96 + ret + +BattlePack_TMHMPocketMenu: + farcall Pack_TMHMPocketMenu_ ; b:457a + ld b, $5 + ld c, $1 + call Function10cef + ret c + xor a + call Function10a0c + ret + +BattlePack_InitBallsPocket: + ld a, $1 + ld [wce65], a + call Function10e51 + call Function10dd6 + call Function10cca + call Function10c96 + ret + +BattlePack_BallsPocketMenu: + ld hl, $4eca + call CopyMenuHeader + ld a, [wcfcc] + ld [wMenuCursorBuffer], a + ld a, [wcfd1] + ld [wMenuScrollPosition], a + call ScrollingMenu + ld a, [wMenuScrollPosition] + ld [wcfd1], a + ld a, [wMenuCursorY] + ld [wcfcc], a + ld b, $1 + ld c, $5 + call Function10cef + ret c + call Function10a03 + ret + +Function10a03: ; 10a03 (4:4a03) + farcall CheckItemContext + ld a, [wItemAttributeParamBuffer] +Function10a0c: ; 10a0c (4:4a0c) + 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 + push de + call LoadMenuHeader + call VerticalMenu + call ExitMenu + pop hl + ret c + ld a, [wMenuCursorY] + dec a + call Function10c9b + jp hl + +BattlePackUseQuitMenuDataHeader: + db $40 ; flags + db 07, 00 ; start coords + db 11, 06 ; end coords + dw .MenuData2 + db 1 ; default option + +.MenuData2: + db $c0 ; flags + db 2 ; items + db "USE@" + db "QUIT@" + +BattlePackUseQuitJumptable: + dw BattlePack_UseItem + dw BattlePack_QuitSubmenu + +BattlePackQuitMenuDataHeader: + db $40 ; flags + db 09, 00 ; start coords + db 11, 06 ; end coords + dw .MenuData2 + db 1 ; default option + +.MenuData2: + db $c0 ; flags + db 1 ; items + db "QUIT@" + +BattlePackQuitJumptable: + dw BattlePack_QuitSubmenu + +BattlePack_UseItem: + farcall CheckItemContext + ld a, [wItemAttributeParamBuffer] + ld hl, $4a67 + rst JumpTable + ret + + dw Function10a75 + dw Function10a75 + dw Function10a75 + dw Function10a75 + dw Function10a7c + dw Function10a86 + dw Function10aa1 + +Function10a75: + ld hl, Text_ThisIsntTheTime + call Function10cb9 + ret + +Function10a7c: + call DoItemEffect + ld a, [wFieldMoveSucceeded] + and a + jr nz, asm_10a9c + ret + +Function10a86: + call DoItemEffect + ld a, [wFieldMoveSucceeded] + and a + jr nz, asm_10aae + xor a + ldh [hBGMapMode], a + call Function10d70 + call Function10cca + call Function10e5b + ret + +asm_10a9c + call ClearBGPalettes + jr asm_10aae + +Function10aa1 + call DoItemEffect + ld a, [wFieldMoveSucceeded] + and a + jr z, Function10a75 + cp $2 + jr z, asm_10ab4 +asm_10aae + ld a, $a + ld [wce63], a + ret + +asm_10ab4 + xor a + ld [wFieldMoveSucceeded], a + ret + +BattlePack_QuitSubmenu: + ret + +Function10aba: ; 10aba (4:4aba) + xor a + ld [wce63], a + ld a, [wcfc8] + and $3 + ld [wCurPocket], a + inc a + add a + dec a + ld [wce64], a + xor a + ld [wPackUsedItem], a + xor a + ld [wSwitchItem], a + ret + +DepositSellInitPackBuffers: ; 10ad5 (4:4ad5) + xor a + ldh [hBGMapMode], a + ld [wce63], a + ld [wce64], a + ld [wCurPocket], a + ld [wPackUsedItem], a + ld [wSwitchItem], a + call Function10d70 + call Function10e5b + ret + +DepositSellPack +.loop + call Function10af7 + call Function10b9f + jr c, .loop + ret + +Function10af7: ; 10af7 (4:4af7) + ld a, [wce63] + ld hl, .Jumptable + call Function10c9b + 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 + call CopyMenuHeader + ld a, [wcfca] + ld [wMenuCursorBuffer], a + ld a, [wcfcf] + ld [wMenuScrollPosition], a + call ScrollingMenu + ld a, [wMenuScrollPosition] + ld [wcfcf], a + ld a, [wMenuCursorY] + ld [wcfca], a + ret + +DepositOrSell_KeyItemsPocket: + ld a, $2 + call Function10b92 + ld hl, PC_Mart_KeyItemsPocketMenuDataHeader ; $4eb2 + call CopyMenuHeader + ld a, [wcfcb] + ld [wMenuCursorBuffer], a + ld a, [wcfd0] + ld [wMenuScrollPosition], a + call ScrollingMenu + ld a, [wMenuScrollPosition] + ld [wcfd0], a + ld a, [wMenuCursorY] + ld [wcfcb], a + ret + +DepositOrSell_TMHMPocket: + ld a, $3 + call Function10b92 + call Function10cca + farcall Pack_TMHMPocketMenu_ ; b:457a + ld a, [wCurItem] + ld [wCurItem], a + ret + +DepositOrSell_BallsPocket: + ld a, $1 + call Function10b92 + ld hl, PC_Mart_BallsPocketMenuDataHeader ; $4ee2 + call CopyMenuHeader + ld a, [wcfcc] + ld [wMenuCursorBuffer], a + ld a, [wcfd1] + ld [wMenuScrollPosition], a + call ScrollingMenu + ld a, [wMenuScrollPosition] + ld [wcfd1], a + ld a, [wMenuCursorY] + ld [wcfcc], a + ret + +Function10b92: ; 10b92 (4:4b92) + ld [wce65], a + call Function10e51 + call Function10dd6 + call Function10cca + ret + +Function10b9f: ; 10b9f (4:4b9f) + ld hl, wMenuJoypad + ld a, [hl] + and $1 + jr nz, .asm_10bb8 + ld a, [hl] + and $2 + jr nz, .asm_10bbf + ld a, [hl] + and $20 + jr nz, .asm_10bc5 + ld a, [hl] + and $10 + jr nz, .asm_10bd8 + scf + ret + +.asm_10bb8 + ld a, $1 + ld [wce66], a + and a + ret + +.asm_10bbf + xor a + ld [wce66], a + and a + ret + +.asm_10bc5 + ld a, [wce63] + dec a + and $3 + ld [wce63], a + push de + ld de, $62 + call PlaySFX + pop de + scf + ret + +.asm_10bd8 + ld a, [wce63] + inc a + and $3 + ld [wce63], a + push de + ld de, $62 + call PlaySFX + pop de + scf + ret + +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 + ret + +Function10c07: ; 10c07 (4:4c07) + ld a, [wce63] + ld hl, $4c11 + call Function10c9b + 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 + db 1 ; default option + +.MenuData2: + db $ae ; flags + db 5, 8 ; rows, columns + db 2 ; horizontal spacing + dbw 0, wDudeNumItems + dba PlaceMenuItemName + dba PlaceMenuItemQuantity + dba UpdateItemDescription + +TutorialKeyItems: + ld a, $2 + ld hl, TutorialKeyItemsMenuDataHeader + jr asm_10c8a + +TutorialKeyItemsMenuDataHeader: + db $40 ; flags + db 01, 07 ; start coords + db 11, 19 ; end coords + dw .MenuData2 + db 1 ; default option + +.MenuData2: + db $ae ; flags + db 5, 8 ; rows, columns + db 1 ; horizontal spacing + dbw 0, wDudeNumKeyItems + dba PlaceMenuItemName + dba PlaceMenuItemQuantity + dba UpdateItemDescription + +TutorialTMHM: + ld a, $3 + call Function10b92 + call Function10cca + farcall Pack_TMHMPocketMenu_ + ld a, [wCurItem] + ld [wCurItem], a + ret + +TutorialBalls: + ld a, $1 + ld hl, TutorialBallsMenuDataHeader + jr asm_10c8a + +TutorialBallsMenuDataHeader: + db $40 ; flags + db 01, 07 ; start coords + db 11, 19 ; end coords + dw .MenuData2 + db 1 ; default option + +.MenuData2: + db $ae ; flags + db 5, 8 ; rows, columns + db 2 ; horizontal spacing + dbw 0, wDudeNumBalls + dba PlaceMenuItemName + dba PlaceMenuItemQuantity + dba UpdateItemDescription + +asm_10c8a + push hl + call Function10b92 + pop hl + call CopyMenuHeader + call ScrollingMenu + ret + +Function10c96: ; 10c96 (4:4c96) + ld hl, wce63 + inc [hl] + ret + +Function10c9b: ; 10c9b (4:4c9b) + ld e, a + ld d, $0 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ret + +Pack_ExitNoScript: + ld hl, wce63 + set 7, [hl] + xor a + ld [wce66], a + ret + +Pack_ExitRunScript: + ld hl, wce63 + set 7, [hl] + ld a, $1 + ld [wce66], a + ret + +Function10cb9: ; 10cb9 (4:4cb9) + ld a, [wOptions] + push af + set 4, a + ld [wOptions], a + call PrintText + pop af + ld [wOptions], a + ret + +Function10cca: ; 10cca (4:4cca) + call WaitBGMap +Function10ccd: ; 10ccd (4:4ccd) + ld a, [wce65] + and $3 + ld e, a + ld d, $0 + ld hl, PackGFXPointers + add hl, de + add hl, de + ld a, [hli] + ld e, a + ld d, [hl] + ld hl, $9500 + 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 + +Function10cef: ; 10cef (4:4cef) + ld hl, wMenuJoypad + ld a, [wSwitchItem] + and a + jr nz, .asm_10d4c + ld a, [hl] + and $1 + jr nz, .asm_10d13 + ld a, [hl] + and $2 + jr nz, .asm_10d15 + ld a, [hl] + and $20 + jr nz, .asm_10d1c + ld a, [hl] + and $10 + jr nz, .asm_10d2d + ld a, [hl] + and $4 + jr nz, .asm_10d3e + scf + ret + +.asm_10d13 + and a + ret + +.asm_10d15 + ld a, $9 + ld [wce63], a + scf + ret + +.asm_10d1c + ld a, b + ld [wce63], a + ld [wce64], a + push de + ld de, SFX_SWITCH_POCKETS + call PlaySFX + pop de + scf + ret + +.asm_10d2d + ld a, c + ld [wce63], a + ld [wce64], a + push de + ld de, SFX_SWITCH_POCKETS + call PlaySFX + pop de + scf + ret + +.asm_10d3e + farcall SwitchItemsInBag ; 9:4834 + ld hl, Text_MoveItemWhere + call Function10cb9 + scf + ret + +.asm_10d4c + ld a, [hl] + and $5 + jr nz, .asm_10d58 + ld a, [hl] + and $2 + jr nz, .asm_10d6a + scf + ret + +.asm_10d58 + farcall SwitchItemsInBag ; 9:4834 + ld de, SFX_SWITCH_POKEMON + call WaitPlaySFX + ld de, SFX_SWITCH_POKEMON + call WaitPlaySFX +.asm_10d6a + xor a + ld [wSwitchItem], a + scf + ret + +Function10d70: ; 10d70 (4:4d70) + call ClearBGPalettes + call ClearTilemap + call ClearSprites + call DisableLCD + ld hl, PackMenuGFX + ld de, $9000 + ld bc, $600 + ld a, BANK(PackMenuGFX) + call FarCopyBytes ; same bank + hlcoord 0, 1 + ld bc, 11 * SCREEN_WIDTH + ld a, $24 + call ByteFill + hlcoord 5, 1 + lb bc, 11, 15 + call ClearBox + hlcoord 0, 0 + ld a, $28 + ld c, $14 +.asm_10da5 + ld [hli], a + inc a + dec c + jr nz, .asm_10da5 + call Function10dd6 + call Function10dc0 + hlcoord 0, 12 + ld bc, IncGradGBPalTable_13 + call Textbox + call EnableLCD + call Function10ccd + ret + +Function10dc0: ; 10dc0 (4:4dc0) + hlcoord 0, 3 + ld a, $50 + ld de, $f + ld b, $3 +.asm_10dca + ld c, $5 +.asm_10dcc + ld [hli], a + inc a + dec c + jr nz, .asm_10dcc + add hl, de + dec b + jr nz, .asm_10dca + ret + +Function10dd6: ; 10dd6 (4:4dd6) + ld a, [wce65] + 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 +.asm_10deb + ld b, $5 +.asm_10ded + ld a, [de] + inc de + ld [hli], a + dec b + jr nz, .asm_10ded + ld a, c + ld c, $f + add hl, bc + ld c, a + dec c + jr nz, .asm_10deb + ret + +.tilemap + db $00, $04, $04, $04, $01 ; top border + db $06, $07, $08, $09, $0a ; Items + db $02, $05, $05, $05, $03 ; bottom border + db $00, $04, $04, $04, $01 ; top border + db $15, $16, $17, $18, $19 ; Balls + db $02, $05, $05, $05, $03 ; bottom border + db $00, $04, $04, $04, $01 ; top border + db $0b, $0c, $0d, $0e, $0f ; Key Items + db $02, $05, $05, $05, $03 ; bottom border + 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) + ld a, [wCurItem] + ld [wd151], a + call GetItemName + call CopyName1 + ret + +Pack_ClearTilemap: + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + ret + +Function10e51: ; 10e51 (4:4e51) + hlcoord 5, 2 + lb bc, 10, 15 + call ClearBox + ret + +Function10e5b: ; 10e5b (4:4e5b) + call WaitBGMap + ld b, $14 + call GetSGBLayout + call SetPalettes + call DelayFrame + ret + +ItemsPocketMenuDataHeader: + db $40 + db 01, 07 + db 11, 19 + dw .MenuData2 + db 1 + +.MenuData2: + db $ae + db 5, 8 + db 2 + 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 + 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 + 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 + 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 + 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 + dbw 0, wNumBalls + dba PlaceMenuItemName ; 9:49dc + dba PlaceMenuItemQuantity ; 9:49eb + dba UpdateItemDescription ; 9:43eb + +Text_PackNoItems: + text_far Text_PackNoItems_ + db "@" + +Text_ThrowAwayHowMany: + text_far Text_ThrowAwayHowMany_ + db "@" + +Text_ConfirmThrowAway: + text_far Text_ConfirmThrowAway_ + db "@" + +Text_ThrewAway: + text_far Text_ThrewAway_ + db "@" + +Text_ThisIsntTheTime: + text_far Text_ThisIsntTheTime_ + db "@" + +Text_YouDontHaveAPokemon: + text_far Text_YouDontHaveAMon + db "@" + +Text_RegisteredTheItem: + text_far Text_RegisteredTheItem_ + db "@" + +Text_CantRegisterThatItem: + text_far Text_CantRegisterThatItem_ + db "@" + +Text_MoveItemWhere: + text_far Text_MoveItemWhere_ + db "@" + +Text_PackEmptyString: + text_far Text_PackEmptyString_ + db "@" + +Text_CantUseItInABattle: + text_far Text_YouCantUseItInABattle + db "@" + +PackMenuGFX: INCBIN "gfx/misc/pack_menu.2bpp" +PackGFX: INCBIN "gfx/misc/pack.2bpp" |