diff options
Diffstat (limited to 'engine')
-rwxr-xr-x | engine/main_menu.asm | 2 | ||||
-rwxr-xr-x | engine/mart.asm | 4 | ||||
-rw-r--r-- | engine/pack.asm | 833 | ||||
-rwxr-xr-x | engine/pokecenter_pc.asm | 6 | ||||
-rwxr-xr-x | engine/startmenu.asm | 46 | ||||
-rwxr-xr-x | engine/switch_items.asm | 274 | ||||
-rwxr-xr-x | engine/tmhm2.asm | 592 |
7 files changed, 1310 insertions, 447 deletions
diff --git a/engine/main_menu.asm b/engine/main_menu.asm index 508abab33..0c7819ca2 100755 --- a/engine/main_menu.asm +++ b/engine/main_menu.asm @@ -41,7 +41,7 @@ MenuData2_0x49d1c: ; 49d1c db $80 ; flags db 0 ; items dw MainMenuItems - dw Function1f79 + dw PlaceMenuStrings dw MainMenuText ; 49d20 diff --git a/engine/mart.asm b/engine/mart.asm index 9d7940a5d..2d8ac0c2c 100755 --- a/engine/mart.asm +++ b/engine/mart.asm @@ -809,9 +809,9 @@ UnknownText_0x15eae: ; 0x15eae SellMenu: ; 15eb3 call DisableSpriteUpdates - callba Function106a5 + callba DepositSellInitPackBuffers .asm_15ebc - callba Function106be + callba DepositSellPack ld a, [wcf66] and a jp z, Function15ece diff --git a/engine/pack.asm b/engine/pack.asm index 0b7d35ece..e755d60c8 100644 --- a/engine/pack.asm +++ b/engine/pack.asm @@ -1,67 +1,69 @@ +wCurrPocket EQU $cf65 + Pack: ; 10000 ld hl, Options set NO_TEXT_SCROLL, [hl] - call Function1068a + call InitPackBuffers .loop call JoyTextDelay ld a, [wJumptableIndex] bit 7, a jr nz, .done - call Function10026 + call .RunJumptable call DelayFrame jr .loop .done - ld a, [wcf65] + ld a, [wCurrPocket] ld [wLastPocket], a ld hl, Options res NO_TEXT_SCROLL, [hl] ret ; 10026 -Function10026: ; 10026 +.RunJumptable: ; 10026 ld a, [wJumptableIndex] - ld hl, Jumptable_10030 - call Function1086b + ld hl, .Jumptable + call Pack_GetJumptablePointer jp [hl] -; 10030 - - -Jumptable_10030: ; 10030 (4:4030) - dw Function10046 - dw Function10056 - dw Function10067 - dw Function10186 - dw Function10198 - dw Function10094 - dw Function100a6 - dw Function100d3 - dw Function100e8 - dw Function10874 - dw Function1087e +; 10030 -Function10046: ; 10046 (4:4046) +.Jumptable: ; 10030 (4:4030) + jumptable_start + jumptable .InitGFX ; 0 + jumptable .InitItemsPocket ; 1 + jumptable .ItemsPocketMenu ; 2 + jumptable .InitBallsPocket ; 3 + jumptable .BallsPocketMenu ; 4 + jumptable .InitKeyItemsPocket ; 5 + jumptable .KeyItemsPocketMenu ; 6 + jumptable .InitTMHMPocket ; 7 + jumptable .TMHMPocketMenu ; 8 + jumptable Pack_QuitNoScript ; 9 + jumptable Pack_QuitRunScript ; 10 + +.InitGFX: ; 10046 (4:4046) xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX ld a, [wcf64] ld [wJumptableIndex], a - call Function10a40 + call Pack_InitColors ret -Function10056: ; 10056 (4:4056) +.InitItemsPocket: ; 10056 (4:4056) xor a - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function10067: ; 10067 (4:4067) - ld hl, MenuDataHeader_0x10a4f +.ItemsPocketMenu: ; 10067 (4:4067) + ld hl, ItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wItemsPocketCursor] ld [wMenuCursorBuffer], a @@ -74,22 +76,22 @@ Function10067: ; 10067 (4:4067) ld [wItemsPocketCursor], a ld b, $7 ld c, $3 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function101c5 + call .ItemBallsKey_LoadSubmenu ret -Function10094: ; 10094 (4:4094) +.InitKeyItemsPocket: ; 10094 (4:4094) ld a, $2 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function100a6: ; 100a6 (4:40a6) - ld hl, MenuDataHeader_0x10a7f +.KeyItemsPocketMenu: ; 100a6 (4:40a6) + ld hl, KeyItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wKeyItemsPocketCursor] ld [wMenuCursorBuffer], a @@ -102,39 +104,40 @@ Function100a6: ; 100a6 (4:40a6) ld [wKeyItemsPocketCursor], a ld b, $3 ld c, $7 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function101c5 + call .ItemBallsKey_LoadSubmenu ret -Function100d3: ; 100d3 (4:40d3) +.InitTMHMPocket: ; 100d3 (4:40d3) ld a, $3 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName xor a ld [hBGMapMode], a call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function100e8: ; 100e8 (4:40e8) - callba Function2c76f +.TMHMPocketMenu: ; 100e8 (4:40e8) + callba TMHMPocket ld b, $5 ld c, $1 - call Function108d4 + call Pack_InterpretJoypad ret c callba _CheckTossableItem ld a, [wItemAttributeParamBuffer] and a - jr nz, .asm_1010a - ld hl, MenuDataHeader_0x1013b - ld de, Jumptable_10153 - jr .asm_10110 -.asm_1010a - ld hl, MenuDataHeader_0x10124 - ld de, Jumptable_10137 -.asm_10110 + 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 InterpretMenu2 @@ -143,39 +146,41 @@ Function100e8: ; 100e8 (4:40e8) ret c ld a, [MenuSelection2] dec a - call Function1086b + call Pack_GetJumptablePointer jp [hl] -; 10124 (4:4124) -MenuDataHeader_0x10124: ; 0x10124 +; 10124 (4:4124) +.MenuDataHeader1: ; 0x10124 db $40 ; flags db 07, 13 ; start coords db 11, 19 ; end coords - dw MenuData2_0x1012c + dw .MenuData2_1 db 1 ; default option ; 0x1012c -MenuData2_0x1012c: ; 0x1012c +.MenuData2_1: ; 0x1012c db $c0 ; flags db 2 ; items db "USE@" db "QUIT@" ; 0x10137 -Jumptable_10137: ; 10137 - dw Function10159 - dw QuitItemSubmenu +.Jumptable1: ; 10137 + jumptable_start + jumptable .UseItem + jumptable QuitItemSubmenu + ; 1013b -MenuDataHeader_0x1013b: ; 0x1013b +.MenuDataHeader2: ; 0x1013b db $40 ; flags db 05, 13 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10143 + dw .MenuData2_2 db 1 ; default option ; 0x10143 -MenuData2_0x10143: ; 0x10143 +.MenuData2_2: ; 0x10143 db $c0 ; flags db 3 ; items db "USE@" @@ -183,43 +188,43 @@ MenuData2_0x10143: ; 0x10143 db "QUIT@" ; 0x10153 -Jumptable_10153: ; 10153 - dw Function10159 +.Jumptable2: ; 10153 + dw .UseItem dw GiveItem dw QuitItemSubmenu ; 10159 -Function10159: ; 10159 - callba Function2c7bf +.UseItem: ; 10159 + callba AskTeachTMHM ret c - callba Function2c7fb - jr c, .asm_10179 + callba ChooseMonToLearnTMHM + jr c, .declined ld hl, Options ld a, [hl] push af - res 4, [hl] - callba Function2c867 + res NO_TEXT_SCROLL, [hl] + callba TeachTMHM pop af ld [Options], a -.asm_10179 +.declined xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX call WaitBGMap_DrawPackGFX - call Function10a40 + call Pack_InitColors ret -Function10186: ; 10186 (4:4186) +.InitBallsPocket: ; 10186 (4:4186) ld a, $1 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function10198: ; 10198 (4:4198) - ld hl, MenuDataHeader_0x10aaf +.BallsPocketMenu: ; 10198 (4:4198) + ld hl, BallsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wBallsPocketCursor] ld [wMenuCursorBuffer], a @@ -232,12 +237,12 @@ Function10198: ; 10198 (4:4198) ld [wBallsPocketCursor], a ld b, $1 ld c, $5 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function101c5 + call .ItemBallsKey_LoadSubmenu ret -Function101c5: ; 101c5 (4:41c5) +.ItemBallsKey_LoadSubmenu: ; 101c5 (4:41c5) callba _CheckTossableItem ld a, [wItemAttributeParamBuffer] and a @@ -268,32 +273,32 @@ Function101c5: ; 101c5 (4:41c5) .usable ld hl, MenuDataHeader_UsableKeyItem - ld de, Jumptable_1026a + ld de, Jumptable_UseGiveTossRegisterQuit jr .build_menu .selectable_usable ld hl, MenuDataHeader_UsableItem - ld de, Jumptable_10291 + ld de, Jumptable_UseGiveTossQuit jr .build_menu .tossable_selectable ld hl, MenuDataHeader_UnusableItem - ld de, Jumptable_102ac + ld de, Jumptable_UseQuit jr .build_menu .tossable_unselectable ld hl, MenuDataHeader_UnusableKeyItem - ld de, Jumptable_102c7 + ld de, Jumptable_UseRegisterQuit jr .build_menu .unusable ld hl, MenuDataHeader_HoldableKeyItem - ld de, Jumptable_102ea + ld de, Jumptable_GiveTossRegisterQuit jr .build_menu .selectable_unusable ld hl, MenuDataHeader_HoldableItem - ld de, Jumptable_1030b + ld de, Jumptable_GiveTossQuit .build_menu push de call LoadMenuDataHeader @@ -303,10 +308,10 @@ Function101c5: ; 101c5 (4:41c5) ret c ld a, [MenuSelection2] dec a - call Function1086b + call Pack_GetJumptablePointer jp [hl] -; 10249 (4:4249) +; 10249 (4:4249) MenuDataHeader_UsableKeyItem: ; 0x10249 db $40 ; flags db 01, 13 ; start coords @@ -325,12 +330,13 @@ MenuDataHeader_UsableKeyItem: ; 0x10249 db "QUIT@" ; 0x1026a -Jumptable_1026a: ; 1026a - dw UseItem - dw GiveItem - dw TossMenu - dw RegisterItem - dw QuitItemSubmenu +Jumptable_UseGiveTossRegisterQuit: ; 1026a + jumptable_start + jumptable UseItem + jumptable GiveItem + jumptable TossMenu + jumptable RegisterItem + jumptable QuitItemSubmenu ; 10274 MenuDataHeader_UsableItem: ; 0x10274 @@ -350,11 +356,12 @@ MenuDataHeader_UsableItem: ; 0x10274 db "QUIT@" ; 0x10291 -Jumptable_10291: ; 10291 - dw UseItem - dw GiveItem - dw TossMenu - dw QuitItemSubmenu +Jumptable_UseGiveTossQuit: ; 10291 + jumptable_start + jumptable UseItem + jumptable GiveItem + jumptable TossMenu + jumptable QuitItemSubmenu ; 10299 MenuDataHeader_UnusableItem: ; 0x10299 @@ -372,9 +379,10 @@ MenuDataHeader_UnusableItem: ; 0x10299 db "QUIT@" ; 0x102ac -Jumptable_102ac: ; 102ac - dw UseItem - dw QuitItemSubmenu +Jumptable_UseQuit: ; 102ac + jumptable_start + jumptable UseItem + jumptable QuitItemSubmenu ; 102b0 MenuDataHeader_UnusableKeyItem: ; 0x102b0 @@ -393,10 +401,11 @@ MenuDataHeader_UnusableKeyItem: ; 0x102b0 db "QUIT@" ; 0x102c7 -Jumptable_102c7: ; 102c7 - dw UseItem - dw RegisterItem - dw QuitItemSubmenu +Jumptable_UseRegisterQuit: ; 102c7 + jumptable_start + jumptable UseItem + jumptable RegisterItem + jumptable QuitItemSubmenu ; 102cd MenuDataHeader_HoldableKeyItem: ; 0x102cd @@ -416,11 +425,12 @@ MenuDataHeader_HoldableKeyItem: ; 0x102cd db "QUIT@" ; 0x102ea -Jumptable_102ea: ; 102ea - dw GiveItem - dw TossMenu - dw RegisterItem - dw QuitItemSubmenu +Jumptable_GiveTossRegisterQuit: ; 102ea + jumptable_start + jumptable GiveItem + jumptable TossMenu + jumptable RegisterItem + jumptable QuitItemSubmenu ; 102f2 MenuDataHeader_HoldableItem: ; 0x102f2 @@ -439,10 +449,12 @@ MenuDataHeader_HoldableItem: ; 0x102f2 db "QUIT@" ; 0x1030b -Jumptable_1030b: ; 1030b - dw GiveItem - dw TossMenu - dw QuitItemSubmenu +Jumptable_GiveTossQuit: ; 1030b + jumptable_start + jumptable GiveItem + jumptable TossMenu + jumptable QuitItemSubmenu + ; 10311 UseItem: ; 10311 @@ -454,18 +466,19 @@ UseItem: ; 10311 ; 1031f .jumptable: ; 1031f (4:431f) - dw .Oak - dw .Oak - dw .Oak - dw .Oak - dw .Current - dw .Party - dw .Field + jumptable_start + jumptable .Oak + jumptable .Oak + jumptable .Oak + jumptable .Oak + jumptable .Current + jumptable .Party + jumptable .Field ; 1035c .Oak: ; 1032d (4:432d) ld hl, Text_ThisIsntTheTime - call Function10889 + call Pack_PrintTextNoScroll ret .Current: ; 10334 (4:4334) @@ -479,28 +492,28 @@ UseItem: ; 10311 call DoItemEffect xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX call WaitBGMap_DrawPackGFX - call Function10a40 + call Pack_InitColors ret + .NoPokemon ld hl, TextJump_YouDontHaveAPkmn - call Function10889 + call Pack_PrintTextNoScroll ret .Field: ; 10355 (4:4355) call DoItemEffect - ld a, [wd0ec] + ld a, [wItemEffectSucceeded] and a jr z, .Oak ld a, $a ld [wJumptableIndex], a ret ; 10364 (4:4364) - TossMenu: ; 10364 ld hl, Text_ThrowAwayHowMany - call Function10889 + call Pack_PrintTextNoScroll callba Function24fbf push af call ExitMenu @@ -519,35 +532,35 @@ TossMenu: ; 10364 call TossItem call Pack_GetItemName ld hl, Text_ThrewAway - call Function10889 - + call Pack_PrintTextNoScroll .finish ret ; 1039d Function1039d: ; 1039d - ld a, [wcf65] +; unreferenced + ld a, [wCurrPocket] and a - jr z, .asm_103b2 + jr z, .items dec a - jr z, .asm_103aa + jr z, .balls dec a - jr z, .asm_103ba + jr z, .key ret -.asm_103aa +.balls xor a ld [wBallsPocketCursor], a ld [wBallsPocketScrollPosition], a ret -.asm_103b2 +.items xor a ld [wItemsPocketCursor], a ld [wItemsPocketScrollPosition], a ret -.asm_103ba +.key xor a ld [wKeyItemsPocketCursor], a ld [wKeyItemsPocketScrollPosition], a @@ -558,8 +571,8 @@ RegisterItem: ; 103c2 callba CheckSelectableItem ld a, [wItemAttributeParamBuffer] and a - jr nz, .asm_103f6 - ld a, [wcf65] + jr nz, .cant_register + ld a, [wCurrPocket] rrca rrca and $c0 @@ -575,22 +588,22 @@ RegisterItem: ; 103c2 ld de, SFX_FULL_HEAL call WaitPlaySFX ld hl, Text_RegisteredItem - call Function10889 + call Pack_PrintTextNoScroll ret -.asm_103f6 +.cant_register ld hl, Text_CantRegister - call Function10889 + call Pack_PrintTextNoScroll ret ; 103fd GiveItem: ; 103fd ld a, [PartyCount] and a - jp z, Function10486 + jp z, .NoPokemon ld a, [Options] push af - res 4, a + res NO_TEXT_SCROLL, a ld [Options], a ld a, $8 ld [PartyMenuActionText], a @@ -598,55 +611,52 @@ GiveItem: ; 103fd callba LoadPartyMenuGFX callba InitPartyMenuWithCancel callba InitPartyMenuGFX -.asm_10427 +.loop callba WritePartyMenuTilemap callba PrintPartyMenuText call WaitBGMap call SetPalettes call DelayFrame callba PartyMenuSelect - jr c, .asm_10475 - + jr c, .finish ld a, [CurPartySpecies] cp EGG - jr nz, .asm_10453 - - ld hl, TextJump_AnEGGCantHoldAnItem + jr nz, .give + ld hl, .Egg call PrintText - jr .asm_10427 + jr .loop -.asm_10453 +.give ld a, [wJumptableIndex] push af ld a, [wcf64] push af call GetCurNick ld hl, StringBuffer1 - ld de, wd050 + ld de, wd050_MonNick ld bc, PKMN_NAME_LENGTH call CopyBytes - call Function12bd9 + call TryGiveItemToPartymon pop af ld [wcf64], a pop af ld [wJumptableIndex], a -.asm_10475 +.finish pop af ld [Options], a xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX call WaitBGMap_DrawPackGFX - call Function10a40 + call Pack_InitColors ret -Function10486: ; 10486 (4:4486) +.NoPokemon: ; 10486 (4:4486) ld hl, TextJump_YouDontHaveAPkmn - call Function10889 + call Pack_PrintTextNoScroll ret ; 1048d (4:448d) - -TextJump_AnEGGCantHoldAnItem: ; 0x1048d +.Egg: ; 0x1048d ; An EGG can't hold an item. text_jump Text_AnEGGCantHoldAnItem db "@" @@ -656,70 +666,69 @@ QuitItemSubmenu: ; 10492 ret ; 10493 - BattlePack: ; 10493 ld hl, Options - set 4, [hl] - call Function1068a + set NO_TEXT_SCROLL, [hl] + call InitPackBuffers .loop call JoyTextDelay ld a, [wJumptableIndex] bit 7, a jr nz, .end - call Function104b9 + call .RunJumptable call DelayFrame jr .loop .end - ld a, [wcf65] + ld a, [wCurrPocket] ld [wLastPocket], a ld hl, Options - res 4, [hl] + res NO_TEXT_SCROLL, [hl] ret ; 104b9 -Function104b9: ; 104b9 +.RunJumptable: ; 104b9 ld a, [wJumptableIndex] - ld hl, Jumptable_104c3 - call Function1086b + ld hl, .Jumptable + call Pack_GetJumptablePointer jp [hl] -; 104c3 - - -Jumptable_104c3: ; 104c3 (4:44c3) - dw Function104d9 - dw Function104e9 - dw Function104fa - dw Function10594 - dw Function105a6 - dw Function10527 - dw Function10539 - dw Function10566 - dw Function10581 - dw Function10874 - dw Function1087e +; 104c3 -Function104d9: ; 104d9 (4:44d9) +.Jumptable: ; 104c3 (4:44c3) + jumptable_start + jumptable .InitGFX ; 0 + jumptable .InitItemsPocket ; 1 + jumptable .ItemsPocketMenu ; 2 + jumptable .InitBallsPocket ; 3 + jumptable .BallsPocketMenu ; 4 + jumptable .InitKeyItemsPocket ; 5 + jumptable .KeyItemsPocketMenu ; 6 + jumptable .InitTMHMPocket ; 7 + jumptable .TMHMPocketMenu ; 8 + jumptable Pack_QuitNoScript ; 9 + jumptable Pack_QuitRunScript ; 10 + +.InitGFX: ; 104d9 (4:44d9) xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX ld a, [wcf64] ld [wJumptableIndex], a - call Function10a40 + call Pack_InitColors ret -Function104e9: ; 104e9 (4:44e9) +.InitItemsPocket: ; 104e9 (4:44e9) xor a - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function104fa: ; 104fa (4:44fa) - ld hl, MenuDataHeader_0x10a4f +.ItemsPocketMenu: ; 104fa (4:44fa) + ld hl, ItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wItemsPocketCursor] ld [wMenuCursorBuffer], a @@ -732,22 +741,22 @@ Function104fa: ; 104fa (4:44fa) ld [wItemsPocketCursor], a ld b, $7 ld c, $3 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function105d3 + call ItemSubmenu ret -Function10527: ; 10527 (4:4527) +.InitKeyItemsPocket: ; 10527 (4:4527) ld a, $2 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function10539: ; 10539 (4:4539) - ld hl, MenuDataHeader_0x10a7f +.KeyItemsPocketMenu: ; 10539 (4:4539) + ld hl, KeyItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wKeyItemsPocketCursor] ld [wMenuCursorBuffer], a @@ -760,45 +769,45 @@ Function10539: ; 10539 (4:4539) ld [wKeyItemsPocketCursor], a ld b, $3 ld c, $7 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function105d3 + call ItemSubmenu ret -Function10566: ; 10566 (4:4566) +.InitTMHMPocket: ; 10566 (4:4566) ld a, $3 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName xor a ld [hBGMapMode], a call WaitBGMap_DrawPackGFX ld hl, Text_PackEmptyString - call Function10889 - call Function10866 + call Pack_PrintTextNoScroll + call Pack_JumptableNext ret -Function10581: ; 10581 (4:4581) - callba Function2c76f +.TMHMPocketMenu: ; 10581 (4:4581) + callba TMHMPocket ld b, $5 ld c, $1 - call Function108d4 + call Pack_InterpretJoypad ret c xor a - call Function105dc + call TMHMSubmenu ret -Function10594: ; 10594 (4:4594) +.InitBallsPocket: ; 10594 (4:4594) ld a, $1 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function105a6: ; 105a6 (4:45a6) - ld hl, MenuDataHeader_0x10aaf +.BallsPocketMenu: ; 105a6 (4:45a6) + ld hl, BallsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wBallsPocketCursor] ld [wMenuCursorBuffer], a @@ -811,21 +820,21 @@ Function105a6: ; 105a6 (4:45a6) ld [wBallsPocketCursor], a ld b, $1 ld c, $5 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function105d3 + call ItemSubmenu ret -Function105d3: ; 105d3 (4:45d3) +ItemSubmenu: ; 105d3 (4:45d3) callba CheckItemContext ld a, [wItemAttributeParamBuffer] - -Function105dc: ; 105dc (4:45dc) +TMHMSubmenu: ; 105dc (4:45dc) and a jr z, .NoUse ld hl, .UsableMenuDataHeader ld de, .UsableJumptable jr .proceed + .NoUse ld hl, .UnusableMenuDataHeader ld de, .UnusableJumptable @@ -838,10 +847,10 @@ Function105dc: ; 105dc (4:45dc) ret c ld a, [MenuSelection2] dec a - call Function1086b + call Pack_GetJumptablePointer jp [hl] -; 10601 (4:4601) +; 10601 (4:4601) .UsableMenuDataHeader: ; 0x10601 db $40 ; flags db 07, 13 ; start coords @@ -858,8 +867,9 @@ Function105dc: ; 105dc (4:45dc) ; 0x10614 .UsableJumptable: ; 10614 - dw .Use - dw .Quit + jumptable_start + jumptable .Use + jumptable .Quit ; 10618 .UnusableMenuDataHeader: ; 0x10618 @@ -877,7 +887,8 @@ Function105dc: ; 105dc (4:45dc) ; 0x10627 .UnusableJumptable: ; 10627 - dw .Quit + jumptable_start + jumptable .Quit ; 10629 .Use: ; 10629 @@ -888,72 +899,70 @@ Function105dc: ; 105dc (4:45dc) ret .ItemFunctionJumptable: ; 10637 (4:4637) - dw .Oak - dw .Oak - dw .Oak - dw .Oak - dw .Unused - dw .BattleField - dw .BattleOnly - + jumptable_start + jumptable .Oak + jumptable .Oak + jumptable .Oak + jumptable .Oak + jumptable .Unused + jumptable .BattleField + jumptable .BattleOnly .Oak: ; 10645 (4:4645) ld hl, Text_ThisIsntTheTime - call Function10889 + call Pack_PrintTextNoScroll ret .Unused: ; 1064c (4:464c) call DoItemEffect - ld a, [wd0ec] + ld a, [wItemEffectSucceeded] and a - jr nz, .asm_1066c + jr nz, .ReturnToBattle ret .BattleField: ; 10656 (4:4656) call DoItemEffect - ld a, [wd0ec] + ld a, [wItemEffectSucceeded] and a - jr nz, .asm_1067e + jr nz, .quit_run_script xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX call WaitBGMap_DrawPackGFX - call Function10a40 + call Pack_InitColors ret -.asm_1066c: ; 1066c (4:466c) +.ReturnToBattle: ; 1066c (4:466c) call ClearBGPalettes - jr .asm_1067e + jr .quit_run_script .BattleOnly: ; 10671 (4:4671) call DoItemEffect - ld a, [wd0ec] + ld a, [wItemEffectSucceeded] and a jr z, .Oak cp $2 - jr z, .asm_10684 -.asm_1067e: ; 1067e (4:467e) - ld a, $a + jr z, .didnt_use_item +.quit_run_script: ; 1067e (4:467e) + ld a, Pack_QuitRunScriptTableIndex ld [wJumptableIndex], a ret -.asm_10684: ; 10684 (4:4684) +.didnt_use_item: ; 10684 (4:4684) xor a - ld [wd0ec], a + ld [wItemEffectSucceeded], a ret ; 10689 (4:4689) - .Quit: ; 10689 ret ; 1068a - -Function1068a: ; 1068a +InitPackBuffers: ; 1068a xor a ld [wJumptableIndex], a ld a, [wLastPocket] and $3 - ld [wcf65], a + ld [wCurrPocket], a inc a add a dec a @@ -961,50 +970,49 @@ Function1068a: ; 1068a xor a ld [wcf66], a xor a - ld [wd0e3], a + ld [wSwitchItem], a ret ; 106a5 -Function106a5: ; 106a5 +DepositSellInitPackBuffers: ; 106a5 xor a ld [hBGMapMode], a ld [wJumptableIndex], a ld [wcf64], a - ld [wcf65], a + ld [wCurrPocket], a ld [wcf66], a - ld [wd0e3], a - call Function10955 - call Function10a40 + ld [wSwitchItem], a + call Pack_InitGFX + call Pack_InitColors ret ; 106be -Function106be: ; 106be -.asm_106be - call Function106c7 - call Function1076f - jr c, .asm_106be +DepositSellPack: ; 106be +.loop + call .RunJumptable + call DepositSellTutorial_InterpretJoypad + jr c, .loop ret ; 106c7 -Function106c7: ; 106c7 +.RunJumptable: ; 106c7 ld a, [wJumptableIndex] - ld hl, Jumptable_106d1 - call Function1086b + ld hl, .Jumptable + call Pack_GetJumptablePointer jp [hl] -; 106d1 - - -Jumptable_106d1: ; 106d1 (4:46d1) - dw .ItemsPocket - dw .BallsPocket - dw .KeyItemsPocket - dw .TMHMPocket +; 106d1 +.Jumptable: ; 106d1 (4:46d1) + jumptable_start + jumptable .ItemsPocket + jumptable .BallsPocket + jumptable .KeyItemsPocket + jumptable .TMHMPocket .ItemsPocket: ; 106d9 (4:46d9) xor a call InitPocket - ld hl, MenuDataHeader_0x10a67 + ld hl, PC_Mart_ItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wItemsPocketCursor] ld [wMenuCursorBuffer], a @@ -1020,7 +1028,7 @@ Jumptable_106d1: ; 106d1 (4:46d1) .KeyItemsPocket: ; 106ff (4:46ff) ld a, 2 call InitPocket - ld hl, MenuDataHeader_0x10a97 + ld hl, PC_Mart_KeyItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wKeyItemsPocketCursor] ld [wMenuCursorBuffer], a @@ -1037,7 +1045,7 @@ Jumptable_106d1: ; 106d1 (4:46d1) ld a, 3 call InitPocket call WaitBGMap_DrawPackGFX - callba Function2c76f + callba TMHMPocket ld a, [CurItem] ld [CurItem], a ret @@ -1045,7 +1053,7 @@ Jumptable_106d1: ; 106d1 (4:46d1) .BallsPocket: ; 1073b (4:473b) ld a, 1 call InitPocket - ld hl, MenuDataHeader_0x10ac7 + ld hl, PC_Mart_BallsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wBallsPocketCursor] ld [wMenuCursorBuffer], a @@ -1059,61 +1067,60 @@ Jumptable_106d1: ; 106d1 (4:46d1) ret InitPocket: ; 10762 (4:4762) - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX ret - -Function1076f: ; 1076f - ld hl, wcf73 +DepositSellTutorial_InterpretJoypad: ; 1076f + ld hl, wMenuJoypad ld a, [hl] - and $1 - jr nz, .asm_10788 + and A_BUTTON + jr nz, .a_button ld a, [hl] - and $2 - jr nz, .asm_1078f + and B_BUTTON + jr nz, .b_button ld a, [hl] - and $20 - jr nz, .asm_10795 + and D_LEFT + jr nz, .d_left ld a, [hl] - and $10 - jr nz, .asm_107a8 + and D_RIGHT + jr nz, .d_right scf ret -.asm_10788 - ld a, $1 +.a_button + ld a, TRUE ld [wcf66], a and a ret -.asm_1078f +.b_button xor a ld [wcf66], a and a ret -.asm_10795 +.d_left ld a, [wJumptableIndex] dec a and $3 ld [wJumptableIndex], a push de - ld de, SFX_UNKNOWN_62 + ld de, SFX_SWITCH_POCKETS call PlaySFX pop de scf ret -.asm_107a8 +.d_right ld a, [wJumptableIndex] inc a and $3 ld [wJumptableIndex], a push de - ld de, SFX_UNKNOWN_62 + ld de, SFX_SWITCH_POCKETS call PlaySFX pop de scf @@ -1121,118 +1128,117 @@ Function1076f: ; 1076f ; 107bb TutorialPack: ; 107bb - call Function106a5 + call DepositSellInitPackBuffers ld a, [InputType] or a jr z, .loop callba _DudeAutoInput_RightA - .loop - call Function107d7 - call Function1076f + call .RunJumptable + call DepositSellTutorial_InterpretJoypad jr c, .loop xor a ld [wcf66], a ret ; 107d7 -Function107d7: ; 107d7 +.RunJumptable: ; 107d7 ld a, [wJumptableIndex] ld hl, .jumptable - call Function1086b + call Pack_GetJumptablePointer jp [hl] -; 107e1 +; 107e1 .jumptable: ; 107e1 (4:47e1) - dw Function107e9 - dw Function1083b - dw Function10807 - dw Function10826 + jumptable_start + jumptable .Items + jumptable .Balls + jumptable .KeyItems + jumptable .TMHM - -Function107e9: ; 107e9 (4:47e9) +.Items: ; 107e9 (4:47e9) xor a - ld hl, MenuDataHeader_0x107ef - jr Function1085a -; 107ef (4:47ef) + ld hl, .ItemsMenuDataHeader + jr .DisplayPocket -MenuDataHeader_0x107ef: ; 0x107ef +; 107ef (4:47ef) +.ItemsMenuDataHeader: ; 0x107ef db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw .MenuData2 + dw .ItemsMenuData2 db 1 ; default option ; 0x107f7 -.MenuData2: ; 0x107f7 +.ItemsMenuData2: ; 0x107f7 db $ae ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing - dbw 0, OTPartyMons + dbw 0, wDudeNumItems dba PlaceMenuItemName dba PlaceMenuItemQuantity dba UpdateItemDescription ; 10807 -Function10807: ; 10807 (4:4807) +.KeyItems: ; 10807 (4:4807) ld a, 2 - ld hl, MenuDataHeader_0x1080e - jr Function1085a -; 1080e (4:480e) + ld hl, .KeyItemsMenuDataHeader + jr .DisplayPocket -MenuDataHeader_0x1080e: ; 0x1080e +; 1080e (4:480e) +.KeyItemsMenuDataHeader: ; 0x1080e db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw .MenuData2 + dw .KeyItemsMenuData2 db 1 ; default option ; 0x10816 -.MenuData2: ; 0x10816 +.KeyItemsMenuData2: ; 0x10816 db $ae ; flags db 5, 8 ; rows, columns db 1 ; horizontal spacing - dbw 0, OTPartyMon1Exp + 2 + dbw 0, wDudeNumKeyItems dba PlaceMenuItemName dba PlaceMenuItemQuantity dba UpdateItemDescription ; 10826 -Function10826: ; 10826 (4:4826) +.TMHM: ; 10826 (4:4826) ld a, 3 call InitPocket call WaitBGMap_DrawPackGFX - callba Function2c76f + callba TMHMPocket ld a, [CurItem] ld [CurItem], a ret -Function1083b: ; 1083b (4:483b) +.Balls: ; 1083b (4:483b) ld a, 1 - ld hl, MenuDataHeader_0x10842 - jr Function1085a -; 10842 (4:4842) + ld hl, .BallsMenuDataHeader + jr .DisplayPocket -MenuDataHeader_0x10842: ; 0x10842 +; 10842 (4:4842) +.BallsMenuDataHeader: ; 0x10842 db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw .MenuData2 + dw .BallsMenuData2 db 1 ; default option ; 0x1084a -.MenuData2: ; 0x1084a +.BallsMenuData2: ; 0x1084a db $ae ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing - dbw 0, OTPartyMon1CaughtGender + dbw 0, wDudeNumBalls dba PlaceMenuItemName dba PlaceMenuItemQuantity dba UpdateItemDescription ; 1085a -Function1085a: ; 1085a (4:485a) +.DisplayPocket: ; 1085a (4:485a) push hl call InitPocket pop hl @@ -1240,12 +1246,12 @@ Function1085a: ; 1085a (4:485a) call HandleScrollingMenu ret -Function10866: ; 10866 (4:4866) +Pack_JumptableNext: ; 10866 (4:4866) ld hl, wJumptableIndex inc [hl] ret -Function1086b: ; 1086b +Pack_GetJumptablePointer: ; 1086b ld e, a ld d, 0 rept 2 @@ -1257,24 +1263,24 @@ endr ret ; 10874 -Function10874: ; 10874 (4:4874) +Pack_QuitNoScript: ; 10874 (4:4874) ld hl, wJumptableIndex set 7, [hl] xor a ld [wcf66], a ret -Function1087e: ; 1087e (4:487e) +Pack_QuitRunScript: ; 1087e (4:487e) ld hl, wJumptableIndex set 7, [hl] - ld a, $1 + ld a, TRUE ld [wcf66], a ret -Function10889: ; 10889 (4:4889) +Pack_PrintTextNoScroll: ; 10889 (4:4889) ld a, [Options] push af - set 4, a + set NO_TEXT_SCROLL, a ld [Options], a call PrintText pop af @@ -1283,10 +1289,8 @@ Function10889: ; 10889 (4:4889) WaitBGMap_DrawPackGFX: ; 1089a (4:489a) call WaitBGMap - - DrawPackGFX: ; 1089d - ld a, [wcf65] + ld a, [wCurrPocket] and $3 ld e, a ld d, $0 @@ -1296,7 +1300,6 @@ DrawPackGFX: ; 1089d ld a, [PlayerGender] bit 0, a jr nz, .female - .male_dude ld hl, PackGFXPointers rept 2 @@ -1322,85 +1325,91 @@ PackGFXPointers: ; 108cc dw PackGFX + $f0 * 2 ; 108d4 -Function108d4: ; 108d4 (4:48d4) - ld hl, wcf73 - ld a, [wd0e3] +Pack_InterpretJoypad: ; 108d4 (4:48d4) + ld hl, wMenuJoypad + ld a, [wSwitchItem] and a - jr nz, .asm_10931 + jr nz, .switching_item ld a, [hl] - and $1 - jr nz, .asm_108f8 + and A_BUTTON + jr nz, .a_button ld a, [hl] - and $2 - jr nz, .asm_108fa + and B_BUTTON + jr nz, .b_button ld a, [hl] - and $20 - jr nz, .asm_10901 + and D_LEFT + jr nz, .d_left ld a, [hl] - and $10 - jr nz, .asm_10912 + and D_RIGHT + jr nz, .d_right ld a, [hl] - and $4 - jr nz, .asm_10923 + and SELECT + jr nz, .select scf ret -.asm_108f8 + +.a_button and a ret -.asm_108fa - ld a, $9 + +.b_button + ld a, Pack_QuitNoScriptTableIndex ld [wJumptableIndex], a scf ret -.asm_10901 + +.d_left ld a, b ld [wJumptableIndex], a ld [wcf64], a push de - ld de, SFX_UNKNOWN_62 + ld de, SFX_SWITCH_POCKETS call PlaySFX pop de scf ret -.asm_10912 + +.d_right ld a, c ld [wJumptableIndex], a ld [wcf64], a push de - ld de, SFX_UNKNOWN_62 + ld de, SFX_SWITCH_POCKETS call PlaySFX pop de scf ret -.asm_10923 - callba Function2490c + +.select + callba SwitchItemsInBag ld hl, Text_MoveItemWhere - call Function10889 + call Pack_PrintTextNoScroll scf ret -.asm_10931 + +.switching_item ld a, [hl] - and $5 - jr nz, .asm_1093d + and A_BUTTON | SELECT + jr nz, .place_insert ld a, [hl] - and $2 - jr nz, .asm_1094f + and B_BUTTON + jr nz, .end_switch scf ret -.asm_1093d - callba Function2490c + +.place_insert + callba SwitchItemsInBag ld de, SFX_SWITCH_POKEMON call WaitPlaySFX ld de, SFX_SWITCH_POKEMON call WaitPlaySFX -.asm_1094f +.end_switch xor a - ld [wd0e3], a + ld [wSwitchItem], a scf ret - -Function10955: ; 10955 +Pack_InitGFX: ; 10955 call ClearBGPalettes call ClearTileMap call ClearSprites @@ -1410,18 +1419,15 @@ Function10955: ; 10955 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 @@ -1431,10 +1437,8 @@ Function10955: ; 10955 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 @@ -1463,13 +1467,11 @@ PlacePackGFX: ; 109a5 ; 109bb DrawPocketName: ; 109bb - ld a, [wcf65] - + ld a, [wCurrPocket] ; * 15 ld d, a swap a sub d - ld d, 0 ld e, a ld hl, .tilemap @@ -1499,15 +1501,12 @@ DrawPocketName: ; 109bb 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 @@ -1536,25 +1535,24 @@ ClearPocketList: ; 10a36 (4:4a36) call ClearBox ret - -Function10a40: ; 10a40 +Pack_InitColors: ; 10a40 call WaitBGMap - ld b, SCREEN_WIDTH + ld b, SCGB_14 call GetSGBLayout call SetPalettes call DelayFrame ret ; 10a4f -MenuDataHeader_0x10a4f: ; 0x10a4f +ItemsPocketMenuDataHeader: ; 0x10a4f db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10a57 + dw .MenuData2 db 1 ; default option ; 0x10a57 -MenuData2_0x10a57: ; 0x10a57 +.MenuData2: ; 0x10a57 db $ae ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing @@ -1564,15 +1562,15 @@ MenuData2_0x10a57: ; 0x10a57 dba UpdateItemDescription ; 10a67 -MenuDataHeader_0x10a67: ; 0x10a67 +PC_Mart_ItemsPocketMenuDataHeader: ; 0x10a67 db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10a6f + dw .MenuData2 db 1 ; default option ; 0x10a6f -MenuData2_0x10a6f: ; 0x10a6f +.MenuData2: ; 0x10a6f db $2e ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing @@ -1582,15 +1580,15 @@ MenuData2_0x10a6f: ; 0x10a6f dba UpdateItemDescription ; 10a7f -MenuDataHeader_0x10a7f: ; 0x10a7f +KeyItemsPocketMenuDataHeader: ; 0x10a7f db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10a87 + dw .MenuData2 db 1 ; default option ; 0x10a87 -MenuData2_0x10a87: ; 0x10a87 +.MenuData2: ; 0x10a87 db $ae ; flags db 5, 8 ; rows, columns db 1 ; horizontal spacing @@ -1600,15 +1598,15 @@ MenuData2_0x10a87: ; 0x10a87 dba UpdateItemDescription ; 10a97 -MenuDataHeader_0x10a97: ; 0x10a97 +PC_Mart_KeyItemsPocketMenuDataHeader: ; 0x10a97 db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10a9f + dw .MenuData2 db 1 ; default option ; 0x10a9f -MenuData2_0x10a9f: ; 0x10a9f +.MenuData2: ; 0x10a9f db $2e ; flags db 5, 8 ; rows, columns db 1 ; horizontal spacing @@ -1618,15 +1616,15 @@ MenuData2_0x10a9f: ; 0x10a9f dba UpdateItemDescription ; 10aaf -MenuDataHeader_0x10aaf: ; 0x10aaf +BallsPocketMenuDataHeader: ; 0x10aaf db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10ab7 + dw .MenuData2 db 1 ; default option ; 0x10ab7 -MenuData2_0x10ab7: ; 0x10ab7 +.MenuData2: ; 0x10ab7 db $ae ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing @@ -1636,15 +1634,15 @@ MenuData2_0x10ab7: ; 0x10ab7 dba UpdateItemDescription ; 10ac7 -MenuDataHeader_0x10ac7: ; 0x10ac7 +PC_Mart_BallsPocketMenuDataHeader: ; 0x10ac7 db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10acf + dw .MenuData2 db 1 ; default option ; 0x10acf -MenuData2_0x10acf: ; 0x10acf +.MenuData2: ; 0x10acf db $2e ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing @@ -1723,6 +1721,5 @@ TextJump_YouCantUseItInABattle: ; 0x10b11 PackMenuGFX: INCBIN "gfx/misc/pack_menu.2bpp" - PackGFX: INCBIN "gfx/misc/pack.2bpp" diff --git a/engine/pokecenter_pc.asm b/engine/pokecenter_pc.asm index 4cf3f79b6..3a0996da1 100755 --- a/engine/pokecenter_pc.asm +++ b/engine/pokecenter_pc.asm @@ -431,9 +431,9 @@ KrisDepositItemMenu: ; 0x1588b jr c, .asm_158b6 call DisableSpriteUpdates call LoadStandardMenuDataHeader - callba Function106a5 + callba DepositSellInitPackBuffers .asm_1589c - callba Function106be + callba DepositSellPack ld a, [wcf66] and a jr z, .asm_158b3 @@ -629,7 +629,7 @@ Function15985: ; 0x15985 call Function156c7 .asm_159f2 - callba Function2490c + callba SwitchItemsInBag .asm_159f8 jp .asm_15989 diff --git a/engine/startmenu.asm b/engine/startmenu.asm index 1a5a7f535..029f287c7 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -795,49 +795,49 @@ GiveTakePartyMonItem: ; 12b60 ; Eggs can't hold items! ld a, [CurPartySpecies] cp EGG - jr z, .asm_12ba6 + jr z, .cancel ld hl, GiveTakeItemMenuData call LoadMenuDataHeader call InterpretMenu2 call ExitMenu - jr c, .asm_12ba6 + jr c, .cancel call GetCurNick ld hl, StringBuffer1 - ld de, wd050 - ld bc, $b + ld de, wd050_MonNick + ld bc, PKMN_NAME_LENGTH call CopyBytes ld a, [MenuSelection2] cp 1 - jr nz, .asm_12ba0 + jr nz, .take call LoadStandardMenuDataHeader call ClearPalettes - call Function12ba9 + call .GiveItem call ClearPalettes call LoadFontsBattleExtra call ExitMenu ld a, 0 ret -.asm_12ba0 +.take call TakePartyItem ld a, 3 ret -.asm_12ba6 +.cancel ld a, 3 ret ; 12ba9 -Function12ba9: ; 12ba9 +.GiveItem: ; 12ba9 - callba Function106a5 + callba DepositSellInitPackBuffers .loop - callba Function106be + callba DepositSellPack ld a, [wcf66] and a @@ -852,7 +852,7 @@ Function12ba9: ; 12ba9 and a jr nz, .next - call Function12bd9 + call TryGiveItemToPartymon jr .quit .next @@ -865,41 +865,41 @@ Function12ba9: ; 12ba9 ; 12bd9 -Function12bd9: ; 12bd9 +TryGiveItemToPartymon: ; 12bd9 call SpeechTextBox call PartyMonItemName call GetPartyItemLocation ld a, [hl] and a - jr z, .asm_12bf4 + jr z, .give_item_to_mon push hl ld d, a callba ItemIsMail pop hl - jr c, .asm_12c01 + jr c, .please_remove_mail ld a, [hl] - jr .asm_12c08 + jr .already_holding_item -.asm_12bf4 +.give_item_to_mon call GiveItemToPokemon ld hl, MadeHoldText call MenuTextBoxBackup call GivePartyItem ret -.asm_12c01 +.please_remove_mail ld hl, PleaseRemoveMailText call MenuTextBoxBackup ret -.asm_12c08 +.already_holding_item ld [wd265], a call GetItemName ld hl, SwitchAlreadyHoldingText call StartMenuYesNo - jr c, .asm_12c4b + jr c, .abort call GiveItemToPokemon ld a, [wd265] @@ -909,7 +909,7 @@ Function12bd9: ; 12bd9 pop af ld [CurItem], a call ReceiveItemFromPokemon - jr nc, .asm_12c3c + jr nc, .bag_full ld hl, TookAndMadeHoldText call MenuTextBoxBackup @@ -918,14 +918,14 @@ Function12bd9: ; 12bd9 call GivePartyItem ret -.asm_12c3c +.bag_full ld a, [wd265] ld [CurItem], a call ReceiveItemFromPokemon ld hl, ItemStorageIsFullText call MenuTextBoxBackup -.asm_12c4b +.abort ret ; 12c4c diff --git a/engine/switch_items.asm b/engine/switch_items.asm new file mode 100755 index 000000000..834648773 --- /dev/null +++ b/engine/switch_items.asm @@ -0,0 +1,274 @@ +SwitchItemsInBag: ; 2490c (9:490c) + ld a, [wSwitchItem] + and a + jr z, .init + ld b, a + ld a, [wCurrPocketCursorPosition] + inc a + cp b + jr z, .trivial + ld a, [wCurrPocketCursorPosition] + call Function24a5c + ld a, [hl] + cp $ff + ret z + ld a, [wSwitchItem] + dec a + ld [wSwitchItem], a + call Function249a7 + jp c, Function249d1 + ld a, [wCurrPocketCursorPosition] + ld c, a + ld a, [wSwitchItem] + cp c + jr c, .asm_2497a + jr .asm_2494a + +.init + ld a, [wCurrPocketCursorPosition] + inc a + ld [wSwitchItem], a + ret + +.trivial + xor a + ld [wSwitchItem], a + ret + +.asm_2494a + ld a, [wSwitchItem] + call Function24a40 + ld a, [wCurrPocketCursorPosition] + ld d, a + ld a, [wSwitchItem] + ld e, a + call Function24a6c + push bc + ld a, [wSwitchItem] + call Function24a5c + dec hl + push hl + call Function24a80 + add hl, bc + ld d, h + ld e, l + pop hl + pop bc + call Function24aab + ld a, [wCurrPocketCursorPosition] + call Function24a4d + xor a + ld [wSwitchItem], a + ret + +.asm_2497a + ld a, [wSwitchItem] + call Function24a40 + ld a, [wCurrPocketCursorPosition] + ld d, a + ld a, [wSwitchItem] + ld e, a + call Function24a6c + push bc + ld a, [wSwitchItem] + call Function24a5c + ld d, h + ld e, l + call Function24a80 + add hl, bc + pop bc + call CopyBytes + ld a, [wCurrPocketCursorPosition] + call Function24a4d + xor a + ld [wSwitchItem], a + ret + +Function249a7: ; 249a7 (9:49a7) + ld a, [wSwitchItem] + call Function24a5c + ld d, h + ld e, l + ld a, [wCurrPocketCursorPosition] + call Function24a5c + ld a, [de] + cp [hl] + jr nz, .asm_249cd + ld a, [wCurrPocketCursorPosition] + call Function24a97 + cp 99 + jr z, .asm_249cd + ld a, [wSwitchItem] + call Function24a97 + cp 99 + jr nz, .asm_249cf +.asm_249cd + and a + ret + +.asm_249cf + scf + ret + +Function249d1: ; 249d1 (9:49d1) + ld a, [wSwitchItem] + call Function24a5c + inc hl + push hl + ld a, [wCurrPocketCursorPosition] + call Function24a5c + inc hl + ld a, [hl] + pop hl + add [hl] + cp 100 + jr c, .asm_24a01 + sub 99 + push af + ld a, [wCurrPocketCursorPosition] + call Function24a5c + inc hl + ld [hl], 99 + ld a, [wSwitchItem] + call Function24a5c + inc hl + pop af + ld [hl], a + xor a + ld [wSwitchItem], a + ret + +.asm_24a01 + push af + ld a, [wCurrPocketCursorPosition] + call Function24a5c + inc hl + pop af + ld [hl], a + ld hl, wMenuData2Addr + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wSwitchItem] + cp [hl] + jr nz, .asm_24a25 + dec [hl] + ld a, [wSwitchItem] + call Function24a5c + ld [hl], $ff + xor a + ld [wSwitchItem], a + ret + +.asm_24a25 + dec [hl] + call Function24a80 + push bc + ld a, [wSwitchItem] + call Function24a5c + pop bc + push hl + add hl, bc + pop de +.asm_24a34 + ld a, [hli] + ld [de], a + inc de + cp $ff + jr nz, .asm_24a34 + xor a + ld [wSwitchItem], a + ret + +Function24a40: ; 24a40 (9:4a40) + call Function24a5c + ld de, wd002 + call Function24a80 + call CopyBytes + ret + +Function24a4d: ; 24a4d (9:4a4d) + call Function24a5c + ld d, h + ld e, l + ld hl, wd002 + call Function24a80 + call CopyBytes + ret + +Function24a5c: ; 24a5c (9:4a5c) + push af + call Function24a80 + ld hl, wMenuData2Addr + ld a, [hli] + ld h, [hl] + ld l, a + inc hl + pop af + call AddNTimes + ret + +Function24a6c: ; 24a6c (9:4a6c) + push hl + call Function24a80 + ld a, d + sub e + jr nc, .asm_24a76 + dec a + cpl +.asm_24a76 + ld hl, 0 + call AddNTimes + ld b, h + ld c, l + pop hl + ret + +Function24a80: ; 24a80 (9:4a80) + push hl + ld a, [wcf94] + ld c, a + ld b, 0 + ld hl, Unknown_24a91 +rept 2 + add hl, bc +endr + ld c, [hl] + inc hl + ld b, [hl] + pop hl + ret + +; 24a91 (9:4a91) + +Unknown_24a91: ; 24a91 + dw 0, 1, 2 +; 24a97 + +Function24a97: ; 24a97 (9:4a97) + push af + call Function24a80 + ld a, c + cp $2 + jr nz, .asm_24aa7 + pop af + call Function24a5c + inc hl + ld a, [hl] + ret + +.asm_24aa7 + pop af + ld a, $1 + ret + +Function24aab: ; 24aab (9:4aab) +.loop + ld a, [hld] + ld [de], a + dec de + dec bc + ld a, b + or c + jr nz, .loop + ret diff --git a/engine/tmhm2.asm b/engine/tmhm2.asm new file mode 100755 index 000000000..d9e05fb8c --- /dev/null +++ b/engine/tmhm2.asm @@ -0,0 +1,592 @@ +TMHMPocket: ; 2c76f (b:476f) + ld a, $1 + ld [hInMenu], a + call TMHM_PocketLoop + ld a, $0 + ld [hInMenu], a + ret nc + call Function1bee + call WaitBGMap + ld a, [CurItem] + dec a + ld [ItemCountBuffer], a + ld hl, TMsHMs + ld c, a + ld b, 0 + add hl, bc + ld a, [hl] + ld [wItemQuantityBuffer], a + call .ConvertItemToTMHMNumber + scf + ret + +.ConvertItemToTMHMNumber: ; 2c798 (b:4798) + ld a, [CurItem] + ld c, a + callab GetNumberedTMHM + ld a, c + ld [CurItem], a + ret + +ConvertCurItemIntoCurTMHM: ; 2c7a7 (b:47a7) + ld a, [CurItem] + ld c, a + callab GetTMHMNumber + ld a, c + ld [wCurTMHM], a + ret + +GetTMHMItemMove: ; 2c7b6 (b:47b6) + call ConvertCurItemIntoCurTMHM + predef GetTMHMMove + ret + +AskTeachTMHM: ; 2c7bf (b:47bf) + ld hl, Options + ld a, [hl] + push af + res NO_TEXT_SCROLL, [hl] + ld a, [CurItem] + cp TM01 + jr c, .NotTMHM + call GetTMHMItemMove + ld a, [wCurTMHM] + ld [wPutativeTMHMMove], a + call GetMoveName + call CopyName1 + ld hl, Text_BootedTM ; Booted up a TM + ld a, [CurItem] + cp HM01 + jr c, .TM + ld hl, Text_BootedHM ; Booted up an HM +.TM + call PrintText + ld hl, Text_ItContained + call PrintText + call YesNoBox +.NotTMHM + pop bc + ld a, b + ld [Options], a + ret + +ChooseMonToLearnTMHM: ; 2c7fb + ld hl, StringBuffer2 + ld de, wd066 + ld bc, 12 + call CopyBytes + call ClearBGPalettes +ChooseMonToLearnTMHM_NoRefresh: ; 2c80a + callba LoadPartyMenuGFX + callba InitPartyMenuWithCancel + callba InitPartyMenuGFX + ld a, $3 + ld [PartyMenuActionText], a +.loopback + callba WritePartyMenuTilemap + callba PrintPartyMenuText + call WaitBGMap + call SetPalettes + call DelayFrame + callba PartyMenuSelect + push af + ld a, [CurPartySpecies] + cp EGG + pop bc ; now contains the former contents of af + jr z, .egg + push bc + ld hl, wd066 + ld de, StringBuffer2 + ld bc, 12 + call CopyBytes + pop af ; now contains the original contents of af + ret + +.egg + push hl + push de + push bc + push af + ld de, SFX_WRONG + call PlaySFX + call WaitSFX + pop af + pop bc + pop de + pop hl + jr .loopback +; 2c867 + +TeachTMHM: ; 2c867 + predef CanLearnTMHMMove + + push bc + ld a, [CurPartyMon] + ld hl, PartyMonNicknames + call GetNick + pop bc + + ld a, c + and a + jr nz, .compatible + push de + ld de, SFX_WRONG + call PlaySFX + pop de + ld hl, Text_TMHMNotCompatible + call PrintText + jr .nope + +.compatible + callab KnowsMove + jr c, .nope + + predef LearnMove + ld a, b + and a + jr z, .nope + + callba MobileFn_106049 + ld a, [CurItem] + call IsHM + ret c + + ld c, HAPPINESS_LEARNMOVE + callab ChangeHappiness + call ConsumeTM + jr .learned_move + +.nope + and a + ret + +.unused + ld a, 2 + ld [wItemEffectSucceeded], a +.learned_move + scf + ret +; 2c8bf (b:48bf) + +Text_BootedTM: ; 0x2c8bf + ; Booted up a TM. + text_jump UnknownText_0x1c0373 + db "@" +; 0x2c8c4 + +Text_BootedHM: ; 0x2c8c4 + ; Booted up an HM. + text_jump UnknownText_0x1c0384 + db "@" +; 0x2c8c9 + +Text_ItContained: ; 0x2c8c9 + ; It contained @ . Teach @ to a #MON? + text_jump UnknownText_0x1c0396 + db "@" +; 0x2c8ce + +Text_TMHMNotCompatible: ; 0x2c8ce + ; is not compatible with @ . It can't learn @ . + text_jump UnknownText_0x1c03c2 + db "@" +; 0x2c8d3 + +TMHM_PocketLoop: ; 2c8d3 (b:48d3) + xor a + ld [hBGMapMode], a + call TMHM_DisplayPocketItems + ld a, $2 + ld [wcfa1], a + ld a, $7 + ld [wcfa2], a + ld a, $1 + ld [wcfa4], a + ld a, $5 + sub d + inc a + cp $6 + jr nz, .okay + dec a +.okay + ld [wcfa3], a + ld a, $c + ld [wcfa5], a + xor a + ld [wcfa6], a + ld a, $20 + ld [wcfa7], a + ld a, $f3 + ld [wcfa8], a + ld a, [wTMHMPocketCursor] + inc a + ld [MenuSelection2], a + ld a, $1 + ld [wcfaa], a + jr TMHM_ShowTMMoveDescription + +TMHM_JoypadLoop: ; 2c915 (b:4915) + call TMHM_DisplayPocketItems + call Function1bc9 + ld b, a + ld a, [MenuSelection2] + dec a + ld [wTMHMPocketCursor], a + xor a + ld [hBGMapMode], a + ld a, [wcfa6] + bit 7, a + jp nz, TMHM_ScrollPocket + ld a, b + ld [wMenuJoypad], a + bit A_BUTTON_F, a + jp nz, TMHM_ChooseTMorHM + bit B_BUTTON_F, a + jp nz, TMHM_ExitPack + bit D_RIGHT_F, a + jp nz, TMHM_ExitPocket + bit D_LEFT_F, a + jp nz, TMHM_ExitPocket +TMHM_ShowTMMoveDescription: ; 2c946 (b:4946) + call TMHM_CheckHoveringOverCancel + jp nc, TMHM_ExitPocket + hlcoord 0, 12 + ld b, 4 + ld c, SCREEN_WIDTH - 2 + call TextBox + ld a, [CurItem] + cp NUM_TMS + NUM_HMS + 1 + jr nc, TMHM_JoypadLoop + ld [wd265], a + predef GetTMHMMove + ld a, [wd265] + ld [CurSpecies], a + hlcoord 1, 14 + call PrintMoveDesc + jp TMHM_JoypadLoop + +TMHM_ChooseTMorHM: ; 2c974 (b:4974) + call TMHM_PlaySFX_ReadText2 + call CountTMsHMs ; This stores the count to wd265. + ld a, [MenuSelection2] + dec a + ld b, a + ld a, [wTMHMPocketScrollPosition] + add b + ld b, a + ld a, [wd265] + cp b + jr z, _TMHM_ExitPack ; our cursor was hovering over CANCEL +TMHM_CheckHoveringOverCancel: ; 2c98a (b:498a) + call TMHM_GetCurrentPocketPosition + ld a, [MenuSelection2] + ld b, a +.loop + inc c + ld a, c + cp NUM_TMS + NUM_HMS + 1 + jr nc, .okay + ld a, [hli] + and a + jr z, .loop + dec b + jr nz, .loop + ld a, c +.okay + ld [CurItem], a + cp -1 + ret + +TMHM_ExitPack: ; 2c9a5 (b:49a5) + call TMHM_PlaySFX_ReadText2 +_TMHM_ExitPack: ; 2c9a8 (b:49a8) + ld a, $2 + ld [wMenuJoypad], a + and a + ret + +TMHM_ExitPocket: ; 2c9af (b:49af) + and a + ret + +TMHM_ScrollPocket: ; 2c9b1 (b:49b1) + ld a, b + bit 7, a + jr nz, .skip + ld hl, wTMHMPocketScrollPosition + ld a, [hl] + and a + jp z, TMHM_JoypadLoop + dec [hl] + call TMHM_DisplayPocketItems + jp TMHM_ShowTMMoveDescription + +.skip + call TMHM_GetCurrentPocketPosition + ld b, 5 +.loop + inc c + ld a, c + cp NUM_TMS + NUM_HMS + 1 + jp nc, TMHM_JoypadLoop + ld a, [hli] + and a + jr z, .loop + dec b + jr nz, .loop + ld hl, wTMHMPocketScrollPosition + inc [hl] + call TMHM_DisplayPocketItems + jp TMHM_ShowTMMoveDescription + +TMHM_DisplayPocketItems: ; 2c9e2 (b:49e2) + ld a, [BattleType] + cp BATTLETYPE_TUTORIAL + jp z, Tutorial_TMHMPocket + + hlcoord 5, 2 + lb bc, 10, 15 + ld a, " " + call ClearBox + call TMHM_GetCurrentPocketPosition + ld d, $5 +.loop2 + inc c + ld a, c + cp NUM_TMS + NUM_HMS + 1 + jr nc, .NotTMHM + ld a, [hli] + and a + jr z, .loop2 + ld b, a + ld a, c + ld [wd265], a + push hl + push de + push bc + call TMHMPocket_GetCurrentLineCoord + push hl + ld a, [wd265] + cp NUM_TMS + 1 + jr nc, .HM + ld de, wd265 + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + jr .okay + +.HM + push af + sub NUM_TMS + ld [wd265], a + ld [hl], "H" + inc hl + ld de, wd265 + lb bc, PRINTNUM_RIGHTALIGN | 1, 2 + call PrintNum + pop af + ld [wd265], a +.okay + predef GetTMHMMove + ld a, [wd265] + ld [wPutativeTMHMMove], a + call GetMoveName + pop hl + ld bc, 3 + add hl, bc + push hl + call PlaceString + pop hl + pop bc + ld a, c + push bc + cp NUM_TMS + 1 + jr nc, .hm2 + ld bc, SCREEN_WIDTH + 9 + add hl, bc + ld [hl], "×" + inc hl + ld a, "0" ; why are we doing this? + pop bc + push bc + ld a, b + ld [wd265], a + ld de, wd265 + lb bc, 1, 2 + call PrintNum +.hm2 + pop bc + pop de + pop hl + dec d + jr nz, .loop2 + jr .done + +.NotTMHM + call TMHMPocket_GetCurrentLineCoord +rept 3 + inc hl +endr + push de + ld de, TMHM_String_Cancel + call PlaceString + pop de +.done + ret + +TMHMPocket_GetCurrentLineCoord: ; 2ca86 (b:4a86) + hlcoord 5, 0 + ld bc, 2 * SCREEN_WIDTH + ld a, 6 + sub d + ld e, a + ; AddNTimes +.loop + add hl, bc + dec e + jr nz, .loop + ret +; 2ca95 (b:4a95) + +Function2ca95: ; 2ca95 +; unreferenced + pop hl + ld bc, 3 + add hl, bc + predef GetTMHMMove + ld a, [wd265] + ld [wPutativeTMHMMove], a + call GetMoveName + push hl + call PlaceString + pop hl + ret +; 2caae + +TMHM_String_Cancel: ; 2caae + db "CANCEL@" +; 2cab5 + +TMHM_GetCurrentPocketPosition: ; 2cab5 (b:4ab5) + ld hl, TMsHMs + ld a, [wTMHMPocketScrollPosition] + ld b, a + inc b + ld c, 0 +.loop + inc c + ld a, [hli] + and a + jr z, .loop + dec b + jr nz, .loop + dec hl + dec c + ret + +Tutorial_TMHMPocket: ; 2caca (b:4aca) + hlcoord 9, 3 + push de + ld de, TMHM_String_Cancel + call PlaceString + pop de + ret + +TMHM_PlaySFX_ReadText2: ; 2cad6 (b:4ad6) + push de + ld de, SFX_READ_TEXT_2 + call PlaySFX + pop de + ret +; 2cadf (b:4adf) + +Function2cadf: ; 2cadf +; unreferenced + call ConvertCurItemIntoCurTMHM + call .CheckHaveRoomForTMHM + ld hl, .NoRoomText + jr nc, .print + ld hl, .ReceivedText +.print + jp PrintText +; 2caf0 + +.NoRoomText: ; 0x2caf0 + ; You have no room for any more @ S. + text_jump UnknownText_0x1c03fa + db "@" +; 0x2caf5 + +.ReceivedText: ; 0x2caf5 + ; You received @ ! + text_jump UnknownText_0x1c0421 + db "@" +; 0x2cafa + +.CheckHaveRoomForTMHM: ; 2cafa + ld a, [wd265] + dec a + ld hl, TMsHMs + ld b, 0 + ld c, a + add hl, bc + ld a, [hl] + inc a + cp NUM_TMS * 2 + ret nc + ld [hl], a + ret +; 2cb0c + +ConsumeTM: ; 2cb0c (b:4b0c) + call ConvertCurItemIntoCurTMHM + ld a, [wd265] + dec a + ld hl, TMsHMs + ld b, 0 + ld c, a + add hl, bc + ld a, [hl] + and a + ret z + dec a + ld [hl], a + ret nz + ld a, [wTMHMPocketScrollPosition] + and a + ret z + dec a + ld [wTMHMPocketScrollPosition], a + ret + +CountTMsHMs: ; 2cb2a (b:4b2a) + ld b, 0 + ld c, NUM_TMS + NUM_HMS + ld hl, TMsHMs +.loop + ld a, [hli] + and a + jr z, .skip + inc b +.skip + dec c + jr nz, .loop + ld a, b + ld [wd265], a + ret + +PrintMoveDesc: ; 2cb3e + push hl + ld hl, MoveDescriptions + ld a, [CurSpecies] + dec a + ld c, a + ld b, 0 +rept 2 + add hl, bc +endr + ld a, [hli] + ld e, a + ld d, [hl] + pop hl + jp PlaceString +; 2cb52 |