diff options
author | pikalaxalt <PikalaxALT@gmail.com> | 2016-06-24 19:49:55 -0400 |
---|---|---|
committer | pikalaxalt <PikalaxALT@gmail.com> | 2016-06-24 19:49:55 -0400 |
commit | dcda0bae06ec186eb29dc7a4332962864c69cc4d (patch) | |
tree | 8f9e4fe26c0b4b0769becd7a45c56218b1b443f5 | |
parent | 2d117385b1f021729ba03cb6f44c1ef470b34f65 (diff) |
engine/pack.asm
-rw-r--r-- | .gitignore | 5 | ||||
-rwxr-xr-x | engine/pack.asm | 1572 | ||||
-rw-r--r-- | gfx/misc/pack.png | bin | 0 -> 373 bytes | |||
-rw-r--r-- | gfx/misc/pack_menu.png | bin | 0 -> 360 bytes | |||
-rw-r--r-- | home/joypad.asm | 2 | ||||
-rw-r--r-- | main.asm | 82 | ||||
-rw-r--r-- | wram.asm | 18 |
7 files changed, 1668 insertions, 11 deletions
@@ -34,3 +34,8 @@ pokecrystal.txt # swap files for gedit *~ +# compiled graphics +*.2bpp +*.lz +*.1bpp + diff --git a/engine/pack.asm b/engine/pack.asm new file mode 100755 index 00000000..78f709aa --- /dev/null +++ b/engine/pack.asm @@ -0,0 +1,1572 @@ +Function10430: + 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 + ld [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 CopyMenuDataHeader + ld a, [wcfca] + ld [wMenuCursorBuffer], a + ld a, [wcfcf] + ld [wcfd4], a + call ScrollingMenu + ld a, [wcfd4] + 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 CopyMenuDataHeader + ld a, [wcfcb] + ld [wMenuCursorBuffer], a + ld a, [wcfd0] + ld [wcfd4], a + call ScrollingMenu + ld a, [wcfd4] + 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 + ld [hBGMapMode], a + call Function10cca + call Function10c96 + ret + +Pack_TMHMPocketMenu: + callba Pack_TMHMPocketMenu_ + ld b, $5 + ld c, $1 + call Function10cef + ret c + callba CheckTossableItem_ + ld a, [wd03f] + 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 LoadMenuDataHeader + 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: + callba AskTeachTMHM + ret c + callba ChooseMonToLearnTMHM + jr c, .asm_105a9 + ld hl, wOptions + ld a, [hl] + push af + res 4, [hl] + callba TeachTMHM + pop af + ld [wOptions], a +.asm_105a9 + xor a + ld [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 CopyMenuDataHeader + ld a, [wcfcc] + ld [wMenuCursorBuffer], a + ld a, [wcfd1] + ld [wcfd4], a + call ScrollingMenu + ld a, [wcfd4] + 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) + callba CheckTossableItem_ + ld a, [wd03f] + and a + jr nz, .asm_10629 + callba CheckSelectableItem + ld a, [wd03f] + and a + jr nz, .asm_1061b + callba CheckItemMenu + ld a, [wd03f] + and a + jr nz, .asm_10637 + jr .asm_10657 + +.asm_1061b + callba CheckItemMenu + ld a, [wd03f] + and a + jr nz, .asm_1063f + jr .asm_1065f + +.asm_10629 + callba CheckSelectableItem + ld a, [wd03f] + 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 LoadMenuDataHeader + 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: + callba CheckItemMenu + ld a, [wd03f] + 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 + ld [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 + callba 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, [wd003] + 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: + callba CheckSelectableItem + ld a, [wd03f] + and a + jr nz, .asm_10826 + ld a, [wce65] + rrca + rrca + and $c0 + ld b, a + ld a, [wd003] + inc a + and $3f + or b + ld [wd680], a + ld a, [wd002] + ld [wd681], 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 [wd03e], a + call ClearBGPalettes + callba LoadPartyMenuGFX + callba InitPartyMenuWithCancel + callba InitPartyMenuGFX +.asm_10857 + callba WritePartyMenuTilemap + callba PrintPartyMenuText + call WaitBGMap + call SetPalettes + call DelayFrame + callba PartyMenuSelect + jr c, .asm_108a5 + ld a, [wd004] + 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 Function12fa0 + pop af + ld [wce64], a + pop af + ld [wce63], a +.asm_108a5 + pop af + ld [wOptions], a + xor a + ld [hBGMapMode], a + call Function10d70 + call Function10cca + call Function10e5b + ret + +Function108b6: ; 108b6 (4:48b6) + ld hl, Text_YouDontHaveAPokemon ; $4f13 + call Function10cb9 + ret + +Text_AnEggCantHoldAnItem: + text_jump 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 + ld [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 CopyMenuDataHeader + ld a, [wcfca] + ld [wMenuCursorBuffer], a + ld a, [wcfcf] + ld [wcfd4], a + call ScrollingMenu + ld a, [wcfd4] + 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 CopyMenuDataHeader + ld a, [wcfcb] + ld [wMenuCursorBuffer], a + ld a, [wcfd0] + ld [wcfd4], a + call ScrollingMenu + ld a, [wcfd4] + 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 + ld [hBGMapMode], a + call Function10cca + ld hl, Text_PackEmptyString + call Function10cb9 + call Function10c96 + ret + +BattlePack_TMHMPocketMenu: + callba 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 CopyMenuDataHeader + ld a, [wcfcc] + ld [wMenuCursorBuffer], a + ld a, [wcfd1] + ld [wcfd4], a + call ScrollingMenu + ld a, [wcfd4] + 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) + callba CheckItemContext + ld a, [wd03f] +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 LoadMenuDataHeader + 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: + callba CheckItemContext + ld a, [wd03f] + 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 + ld [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 [wce65], a + inc a + add a + dec a + ld [wce64], a + xor a + ld [wce66], a + xor a + ld [wcfd3], a + ret + +Function10ad5: ; 10ad5 (4:4ad5) + xor a + ld [hBGMapMode], a + ld [wce63], a + ld [wce64], a + ld [wce65], a + ld [wce66], a + ld [wcfd3], a + call Function10d70 + call Function10e5b + ret + +.asm_10aee + call Function10af7 + call Function10b9f + jr c, .asm_10aee + 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 CopyMenuDataHeader + ld a, [wcfca] + ld [wMenuCursorBuffer], a + ld a, [wcfcf] + ld [wcfd4], a + call ScrollingMenu + ld a, [wcfd4] + ld [wcfcf], a + ld a, [wMenuCursorY] + ld [wcfca], a + ret + +DepositOrSell_KeyItemsPocket: + ld a, $2 + call Function10b92 + ld hl, PC_Mart_KeyItemsPocketMenuDataHeader ; $4eb2 + call CopyMenuDataHeader + ld a, [wcfcb] + ld [wMenuCursorBuffer], a + ld a, [wcfd0] + ld [wcfd4], a + call ScrollingMenu + ld a, [wcfd4] + ld [wcfd0], a + ld a, [wMenuCursorY] + ld [wcfcb], a + ret + +DepositOrSell_TMHMPocket: + ld a, $3 + call Function10b92 + call Function10cca + callba Pack_TMHMPocketMenu_ ; b:457a + ld a, [wd002] + ld [wd002], a + ret + +DepositOrSell_BallsPocket: + ld a, $1 + call Function10b92 + ld hl, PC_Mart_BallsPocketMenuDataHeader ; $4ee2 + call CopyMenuDataHeader + ld a, [wcfcc] + ld [wMenuCursorBuffer], a + ld a, [wcfd1] + ld [wcfd4], a + call ScrollingMenu + ld a, [wcfd4] + 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 Function10ad5 + ld a, [wInputType] + or a + jr z, .asm_10bfa + callba 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 + callba Pack_TMHMPocketMenu_ + ld a, [wd002] + ld [wd002], 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 CopyMenuDataHeader + 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, [wcfd3] + 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 + callba 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 + callba SwitchItemsInBag ; 9:4834 + ld de, SFX_SWITCH_POKEMON + call WaitPlaySFX + ld de, SFX_SWITCH_POKEMON + call WaitPlaySFX +.asm_10d6a + xor a + ld [wcfd3], 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, [wd002] + ld [wd151], a + call GetItemName + call Function317b + 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_jump Text_PackNoItems_ + db "@" + +Text_ThrowAwayHowMany: + text_jump Text_ThrowAwayHowMany_ + db "@" + +Text_ConfirmThrowAway: + text_jump Text_ConfirmThrowAway_ + db "@" + +Text_ThrewAway: + text_jump Text_ThrewAway_ + db "@" + +Text_ThisIsntTheTime: + text_jump Text_ThisIsntTheTime_ + db "@" + +Text_YouDontHaveAPokemon: + text_jump Text_YouDontHaveAPokemon_ + db "@" + +Text_RegisteredTheItem: + text_jump Text_RegisteredTheItem_ + db "@" + +Text_CantRegisterThatItem: + text_jump Text_CantRegisterThatItem_ + db "@" + +Text_MoveItemWhere: + text_jump Text_MoveItemWhere_ + db "@" + +Text_PackEmptyString: + text_jump Text_PackEmptyString_ + db "@" + +Text_CantUseItInABattle: + text_jump Text_CantUseItInABattle_ + db "@" + +PackMenuGFX: INCBIN "gfx/misc/pack_menu.2bpp" +PackGFX: INCBIN "gfx/misc/pack.2bpp" diff --git a/gfx/misc/pack.png b/gfx/misc/pack.png Binary files differnew file mode 100644 index 00000000..738a9dd9 --- /dev/null +++ b/gfx/misc/pack.png diff --git a/gfx/misc/pack_menu.png b/gfx/misc/pack_menu.png Binary files differnew file mode 100644 index 00000000..52e2bcdd --- /dev/null +++ b/gfx/misc/pack_menu.png diff --git a/home/joypad.asm b/home/joypad.asm index 7fd92fb4..b17cc9cf 100644 --- a/home/joypad.asm +++ b/home/joypad.asm @@ -287,7 +287,7 @@ JoyWaitInput:: ; a77 (0:0a77) ld a, [wInputType] or a jr z, .wait_loop - callba _DudeAutoInput_A + callba DudeAutoInput_A .wait_loop call JoyBlinkCursor @@ -635,9 +635,8 @@ Text_KnowsMove: SECTION "bank4", ROMX, BANK[$4] INCLUDE "engine/player_movement.asm" +INCLUDE "engine/pack.asm" -Function10430: - dr $10430, $117f1 InitializeStartDay_: dr $117f1, $118f8 Function118f8: @@ -667,7 +666,9 @@ ItemfinderFunction: dr $12947, $12e33 PartyMonItemName:: - dr $12e33, $1399d + dr $12e33, $12fa0 +Function12fa0: + dr $12fa0, $1399d Function1399d: dr $1399d, $13a5f Function13a5f: @@ -768,11 +769,19 @@ PushWindow_:: ExitMenu_:: dr $24307, $24395 InitVerticalMenuCursor_:: - dr $24395, $244d7 + dr $24395, $243eb +UpdateItemDescription: + dr $243eb, $244d7 InitScrollingMenu:: dr $244d7, $244f3 ScrollingMenu_:: - dr $244f3, $24a10 + dr $244f3, $24834 +SwitchItemsInBag: + dr $24834, $249dc +PlaceMenuItemName: + dr $249dc, $249eb +PlaceMenuItemQuantity: + dr $249eb, $24a10 Function24a10: dr $24a10, $24a4d Function24a4d: @@ -780,7 +789,9 @@ Function24a4d: Function24a76: dr $24a76, $24b8d Function24b8d: - dr $24b8d, $267ca + dr $24b8d, $24f20 +SelectQuantityToToss: + dr $24f20, $267ca Function267ca: dr $267ca, $2692d InitDecorations: ; 2692d @@ -859,7 +870,19 @@ Function2aab3: SECTION "bankb", ROMX, BANK[$b] dr $2c000, $2c352 Function2c352: - dr $2c352, $2c943 + dr $2c352, $2c57a + +Pack_TMHMPocketMenu_: + dr $2c57a, $2c5ca + +AskTeachTMHM: + dr $2c5ca, $2c606 + +ChooseMonToLearnTMHM: + dr $2c606, $2c672 + +TeachTMHM: + dr $2c672, $2c943 PrintMoveDesc:: dr $2c943, $30000 @@ -1716,7 +1739,43 @@ Text_AskCut_:: dr $1943a1, $1943c9 Text_MonCanCutThis_:: - dr $1943c9, $194953 + dr $1943c9, $194543 + +Text_AnEggCantHoldAnItem_:: + dr $194543, $19455e + +Text_PackNoItems_:: + dr $19455e, $194569 + +Text_ThrowAwayHowMany_:: + dr $194569, $19457f + +Text_ConfirmThrowAway_:: + dr $19457f, $19459c + +Text_ThrewAway_:: + dr $19459c, $1945b2 + +Text_ThisIsntTheTime_:: + dr $1945b2, $1945db + +Text_YouDontHaveAPokemon_:: + dr $1945db, $1945f2 + +Text_RegisteredTheItem_:: + dr $1945f2, $194609 + +Text_CantRegisterThatItem_:: + dr $194609, $194627 + +Text_MoveItemWhere_:: + dr $194627, $194647 + +Text_PackEmptyString_:: + dr $194647, $194649 + +Text_CantUseItInABattle_:: + dr $194649, $194953 Text_WasSentToBillsPC_:: dr $194953, $19496e @@ -1950,8 +2009,11 @@ SECTION "bank70", ROMX, BANK[$70] dr $1c0000, $1c0a66 UpdateTimePredef:: dr $1c0a66, $1c0de9 -_DudeAutoInput_A:: - dr $1c0de9, $1c4000 +DudeAutoInput_A:: + dr $1c0de9, $1c0dee + +DudeAutoInput_RightA:: + dr $1c0dee, $1c4000 SECTION "bank71", ROMX, BANK[$71] dr $1c4000, $1c8000 @@ -3869,6 +3869,24 @@ wOTPartyCount:: ds 1 ; dd55 wOTPartySpecies:: ds PARTY_LENGTH ; dd56 wOTPartySpeciesEnd:: ds 1 ; dd5c +; The tutorial pack uses the OT party space. +; It's placed here rather than at wOTPartyCount +; to avoid confusing the game. +wDudePack:: +wDudeNumItems:: ds 1 ; dd5d +wDudeItems:: ds 2 * 4 ; dd5e +wDudeItemsEnd:: ds 1 ; dd66 + +wDudeNumKeyItems:: ds 1 ; dd67 +wDudeKeyItems:: ds 18 ; dd68 +wDudeKeyItemsEnd:: ds 1 ; dd7a + +wDudeNumBalls:: ds 1 ; dd7b +wDudeBalls:: ds 2 * 4 ; dd7c +wDudeBallsEnd:: ds 1 ; dd84 +wDudePackEnd:: + ds wDudePack - @ + wOTPartyMons:: wOTPartyMon1:: party_struct wOTPartyMon1 ; dd5d wOTPartyMon2:: party_struct wOTPartyMon2 ; dd8d |