diff options
-rw-r--r-- | constants/menu_constants.asm | 5 | ||||
-rw-r--r-- | constants/sfx_constants.asm | 1 | ||||
-rwxr-xr-x | engine/dumps/bank03.asm | 2 | ||||
-rw-r--r-- | engine/events/pokecenter_pc.asm | 508 | ||||
-rw-r--r-- | engine/menu/start_menu.asm | 24 | ||||
-rw-r--r-- | layout.link | 2 | ||||
-rw-r--r-- | scripts/PlayerHouse2F.asm | 2 | ||||
-rw-r--r-- | scripts/SilentHillHouse.asm | 2 | ||||
-rwxr-xr-x | shim.sym | 15 |
9 files changed, 538 insertions, 23 deletions
diff --git a/constants/menu_constants.asm b/constants/menu_constants.asm index 46c6547..9eb2224 100644 --- a/constants/menu_constants.asm +++ b/constants/menu_constants.asm @@ -95,3 +95,8 @@ HMENURETURN_ASM EQU %11111111 const PARTYMENUTEXT_REVIVE const PARTYMENUTEXT_LEVEL_UP const PARTYMENUTEXT_HEAL_CONFUSION + +; ScrollingMenu items structure format + const_def 1 + const SCROLLINGMENU_ITEMS_NORMAL + const SCROLLINGMENU_ITEMS_QUANTITY diff --git a/constants/sfx_constants.asm b/constants/sfx_constants.asm index 881ff52..1540c87 100644 --- a/constants/sfx_constants.asm +++ b/constants/sfx_constants.asm @@ -1,4 +1,5 @@ ; TODO +SFX_BOOT_PC EQU $0A SFX_PAY_DAY EQU $30 SFX_GAME_FREAK_LOGO_RG EQU $31 diff --git a/engine/dumps/bank03.asm b/engine/dumps/bank03.asm index fc4c3cc..0b507ce 100755 --- a/engine/dumps/bank03.asm +++ b/engine/dumps/bank03.asm @@ -2236,7 +2236,7 @@ Texte1c3: line "なまえを つけますか?" done -Functione1d5: +_BillsPC: call Functione284 ret c call LoadStandardMenuHeader diff --git a/engine/events/pokecenter_pc.asm b/engine/events/pokecenter_pc.asm new file mode 100644 index 0000000..28a3343 --- /dev/null +++ b/engine/events/pokecenter_pc.asm @@ -0,0 +1,508 @@ +INCLUDE "constants.asm" + +SECTION "engine/events/pokecenter_pc.asm", ROMX + +; PokemonCenterPC.Jumptable indices + const_def + const PCITEM_PLAYERS_PC + const PCITEM_BILLS_PC + const PCITEM_OAKS_PC + const PCITEM_HALL_OF_FAME + const PCITEM_TURN_OFF + +PokemonCenterPC: +; Also used for player's PC (both in debug and in demo mode) + + ld a, [wDebugFlags] + bit 1, a + jp z, PC_Demo + call PC_PlayBootSound + +; Return if there are no mons in party + ret c + +; Open the player's PC menu + ld hl, .TurnOnText + call MenuTextBoxBackup + ld hl, wDebugFlags + bit 1, [hl] + jr nz, .DisplayMenu + ld hl, .NotConnectedText + call MenuTextBoxBackup + ret + +.NotConnectedText: + text "<⋯⋯> が つながっていなかった" + line "ようだ <⋯⋯>" + prompt + +.DisplayMenu: + ld hl, .TopMenu + call LoadMenuHeader +.loop + xor a + ld [wActiveBackpackPocket], a + call OpenMenu + jr c, .shutdown + ld a, [wMenuSelection] + ld hl, .Jumptable + call CallJumptable + jr nc, .loop + +.shutdown + call CloseWindow + ret + +.TurnOnText: + text "コンピューターを きどう!" + para "ネットワークにせつぞくした!" + prompt + +.TopMenu: + db MENU_BACKUP_TILES + menu_coords 0, 0, 14, 12 + dw .MenuData + db 1 ; default item + +.MenuData: + db STATICMENU_CURSOR + db 0 + dw .WhichPC + dw PlaceMenuStrings + dw .MenuStrings + +.MenuStrings: + db "<PLAYER>の パソコン@" + db "???の パソコン@" + db "オーキドの パソコン@" + db "でんどういり@" + db "せつぞくをきる@" + +.Jumptable: + dw PlayersPC + dw BillsPC + dw OaksPC + dw OaksPC + dw TurnOffPC + +.WhichPC: + db 4 + db PCITEM_PLAYERS_PC + db PCITEM_BILLS_PC + db PCITEM_OAKS_PC + db PCITEM_TURN_OFF + db -1 + +PC_PlayBootSound: + ld a, [wPartyCount] + and a + +; Don't play the bootup sound if player has at least one mon + ret nz + + ld de, SFX_BOOT_PC + call PlaySFX + ld hl, .NoPokemonText + call OpenTextbox + +; Return carry when there are no mons in party + scf + ret + +.NoPokemonText: + text "ピーッ!" + line "ポケモンを もっていない" + cont "ひとは つかうことが できません!" + text_end + text_end + +PC_Demo: + ld de, SFX_BOOT_PC + call PlaySFX + ld hl, .SkarmoryText + call PrintText + call TextboxWaitPressAorB_BlinkCursor + ret + +.SkarmoryText: + text "ポケモン ジャーナル ホームぺージ" + line "<⋯⋯> <⋯⋯> <⋯⋯> <⋯⋯> <⋯⋯> <⋯⋯>" + para "しんポケモン はっけん!!" + line "めいめい ヨロイドり" + cont "はがねの ように" + cont "かたい つばさが とくちょう" + para "ひこうタイプ だけではなく" + line "あたらしく メタルタイプ としても" + cont "ぶんるい されることが けってい" + cont "これからの けんきゅうが またれる" + cont "<⋯⋯> <⋯⋯> <⋯⋯> <⋯⋯> <⋯⋯> <⋯⋯>" + done + +BillsPC: + callab _BillsPC + and a + ret + +PlayersPC: + call _PlayersPC + and a + ret + +OaksPC: + ld hl, .TooManyConnectionsText + call MenuTextBoxBackup + and a + ret + +.TooManyConnectionsText: + text "かいせん が こみあっていて" + line "せつぞくできません" + prompt + +TurnOffPC: + ld hl, .ClosedPCText + call MenuTextBoxBackup + scf + ret + +.ClosedPCText: + text "ネットワークへの せつぞくを" + line "やめました" + prompt + + +_PlayersPC: + ld hl, .TurnOnText + call MenuTextBoxBackup +.loop + call UpdateTimePals + ld hl, .MenuHeader + call LoadMenuHeader + call VerticalMenu + push af + call ExitMenu + pop af + jr c, .done + ld a, [wMenuCursorY] + dec a + ld hl, .Jumptable + call CallJumptable + jr nc, .loop + ld hl, .ShutDownText + call MenuTextBoxBackup +.done + ret + +.MenuHeader: + db MENU_BACKUP_TILES + menu_coords 0, 0, 10, 10 + dw .MenuStrings + db 1 ; default selection + +.MenuStrings: + db STATICMENU_CURSOR + db 4 + db "ひきだす@" + db "あずける@" + db "すてる@" + db "せつぞくをきる@" + +.Jumptable: + dw PlayerWithdrawItemMenu + dw PlayerDepositItemMenu + dw PlayerTossItemMenu + dw PlayerLogOffMenu + +.TurnOnText: + text "<PLAYER>は じぶんのパソコンに" + line "つないだ" + para "どうぐあずかりシステムを" + line "よびだした!" + prompt + +.ShutDownText: + text "<PLAYER>は じぶんのパソコンとの" + line "せつぞくをきった" + para "" + done + +PlayerWithdrawItemMenu: + call LoadStandardMenuHeader + call ClearTileMap + call UpdateSprites +.loop + call PCItemsJoypad + jr c, .quit + call .Submenu + jr .loop +.quit + call Call_ExitMenu + and a + ret + +.Submenu: + callab _CheckTossableItem + ld a, [wItemAttributeParamBuffer] + and a + jr z, .AskQuantity + ld a, 1 + ld [wItemQuantity], a + jr .Withdraw + +.AskQuantity: + ld hl, .HowManyToWithdrawText + call MenuTextBox + callab SelectQuantityToToss + call ExitMenu + call ExitMenu + jr c, .done + +.Withdraw: + ld hl, wUnknownListLengthd1ea + ld a, [wItemIndex] + call TossItem + ld hl, wNumBagItems + call ReceiveItem + jr nc, .PackFull + predef LoadItemData + ld hl, .WithdrewItemsText + call MenuTextBoxBackup + ret + +.PackFull: + ld hl, .NoRoomWithdrawText + call MenuTextBoxBackup + ld hl, wUnknownListLengthd1ea + call ReceiveItem + ret + +.done + ret + +.HowManyToWithdrawText: + text "いくつひきだしますか?" + done + +.WithdrewItemsText: + text_from_ram wStringBuffer2 + text "を @" + deciram wItemQuantity, 1, 2 + text "こ " + line "ひきだしました" + prompt + +.NoRoomWithdrawText: + text "もちものが いっぱいなので" + line "ひきだせません!" + prompt + +PlayerTossItemMenu: + call LoadStandardMenuHeader + call ClearTileMap + call ClearSprites + ld hl, wVramState + res 0, [hl] + call UpdateSprites +.loop + call PCItemsJoypad + jr c, .quit + ld de, wUnknownListLengthd1ea + callab TryTossItem + jr .loop +.quit + ld hl, wVramState + set 0, [hl] + call Call_ExitMenu + and a + ret + +PlayerLogOffMenu: + scf + ret + +PlayerDepositItemMenu: + call .CheckItemsInBag + ret c + call LoadStandardMenuHeader + callab GetPocket2Status + callab DrawBackpack +.loop + callab DebugBackpackLoop + jr c, .quit + call .TryDepositItem + jr .loop +.quit + call ClearPalettes + ld hl, wVramState + set 0, [hl] + call Call_ExitMenu + and a + ret + +.CheckItemsInBag: + callab CheckItemsQuantity + ret nc + +; no item to deposit + ld hl, .NoItemsText + call MenuTextBoxBackup + scf + ret + +.NoItemsText: + text "どうぐを ひとつも" + line "もっていない!" + prompt + +.TryDepositItem: + callab CheckItemMenu + ld a, [wItemAttributeParamBuffer] + ld hl, .Jumptable + jp CallJumptable + +.Jumptable: + dw .Depositable + dw .NotDepositable + dw .BallNotDepositable + dw .SwapPockets + dw .Depositable + dw .Depositable + dw .Depositable + +.NotDepositable: + ld hl, .CantDepositText + call MenuTextBoxBackup + ret + +.CantDepositText: + text "わざマシンは " + line "あずけられない!" + prompt + +.BallNotDepositable: + ld hl, .CantDepositBallText + call MenuTextBoxBackup + ret + +.CantDepositBallText: + text "ボールホルダは" + line "あずけられない!" + prompt + +.SwapPockets: + callab FlipPocket2Status + xor a + ld [wSelectedSwapPosition], a + ret + +.Depositable: + call .DepositItem + ret + +.DepositItem: + callab _CheckTossableItem + ld a, [wItemAttributeParamBuffer] + and a + jr z, .AskQuantity + ld a, 1 + ld [wItemQuantity], a + jr .ContinueDeposit + +.AskQuantity: + ld hl, .HowManyDepositText + call MenuTextBox + callab SelectQuantityToToss + push af + call ExitMenu + call ExitMenu + pop af + jr c, .DeclinedToDeposit + +.ContinueDeposit: + ld hl, wNumBagItems + ld a, [wItemIndex] + call TossItem + ld hl, wUnknownListLengthd1ea + call ReceiveItem + jr nc, .NoRoomInPC + predef LoadItemData + ld hl, .DepositItemsText + call MenuTextBoxBackup + ret + +.NoRoomInPC: + ld hl, .NoRoomDepositText + call MenuTextBoxBackup + ld hl, wNumBagItems + call ReceiveItem + ret + +.DeclinedToDeposit: + and a + ret + +.HowManyDepositText: + text "いくつあずけますか?" + done + +.DepositItemsText: + text_from_ram wStringBuffer2 + text "を @" + deciram wItemQuantity, 1, 2 + text "こ " + line "あずけました" + prompt + +.NoRoomDepositText: + text "どうぐが いっぱいです" + line "もう あずけられません!" + prompt + +PCItemsJoypad: + ld hl, .MenuHeader + call CopyMenuHeader + ld a, [wBackpackAndKeyItemsCursor] + ld [wMenuCursorBuffer], a + ld a, [wBackpackAndKeyItemsScrollPosition] + ld [wMenuScrollPosition], a + call ScrollingMenu + ld a, [wMenuScrollPosition] + ld [wBackpackAndKeyItemsScrollPosition], a + ld a, [wMenuCursorY] + ld [wBackpackAndKeyItemsCursor], a + ld a, [wMenuJoypad] + cp B_BUTTON + jr z, .b_button + cp A_BUTTON + jr z, .a_button + cp SELECT + jr z, .select + jr .next +.select + callab SwitchItemsInBag + jp .next +.next + jp PCItemsJoypad +.a_button + callab ScrollingMenu_ClearLeftColumn + call PlaceHollowCursor + and a + ret +.b_button + scf + ret + +.MenuHeader: + db MENU_BACKUP_TILES + menu_coords 4, 1, 19, 10 + dw .MenuData + db 1 ; default selection + +.MenuData: + db SCROLLINGMENU_ENABLE_SELECT | SCROLLINGMENU_ENABLE_FUNCTION3 | SCROLLINGMENU_ENABLE_RIGHT | SCROLLINGMENU_ENABLE_LEFT + db 4, 8 ; rows, columns + db SCROLLINGMENU_ITEMS_QUANTITY ; type + dbw 0, wUnknownListLengthd1ea + dba PlaceMenuItemName + dba PlaceMenuItemQuantity + dba UpdateItemDescription diff --git a/engine/menu/start_menu.asm b/engine/menu/start_menu.asm index e20f53f..4bb1829 100644 --- a/engine/menu/start_menu.asm +++ b/engine/menu/start_menu.asm @@ -261,8 +261,8 @@ ToolsPocketHeader: dw wNumBagItems dba Function2473b - dba Function24783 - dba Function241ef + dba PlaceMenuItemQuantity + dba UpdateItemDescription dw KeyItemsPocketHeader dw wBackpackAndKeyItemsCursor @@ -280,8 +280,8 @@ KeyItemsPocketHeader: dw wNumKeyItems dba Function2473b - dba Function24783 - dba Function241ef + dba PlaceMenuItemQuantity + dba UpdateItemDescription BackpackMenuHeader: db MENU_BACKUP_TILES ; flags @@ -295,8 +295,8 @@ BackpackMenuHeader: dw wNumBagItems dba Function2473b - dba Function24783 - dba Function241ef + dba PlaceMenuItemQuantity + dba UpdateItemDescription GetPocket2Status: ; puts 2 in wActiveBackpackPocket if pocket 2 has items @@ -476,7 +476,7 @@ HandleBackpackInput: jp .exit .BackpackSelect - callab Function245c5 + callab SwitchItemsInBag jp .exit .exit @@ -496,7 +496,7 @@ HandleBackpackInput: ret BackpackSelected: - callab Function243af + callab ScrollingMenu_ClearLeftColumn call PlaceHollowCursor call LoadItemData callab CheckItemMenu @@ -664,7 +664,7 @@ TryTossItem: jr nz, .TossFail ld hl, .TossedText call MenuTextBox - callab Function24c60 + callab SelectQuantityToToss push af call CloseWindow call ExitMenu @@ -795,9 +795,9 @@ BallPocket: db 0 ; ??? dw wNumBallItems - dba Function24774 - dba Function24783 - dba Function241ef + dba PlaceMenuItemName + dba PlaceMenuItemQuantity + dba UpdateItemDescription DrawBackpackTitleRow: push de diff --git a/layout.link b/layout.link index a04aa0b..97fd388 100644 --- a/layout.link +++ b/layout.link @@ -182,6 +182,8 @@ ROMX $05 "engine/sprites/sprites.asm@LoadOverworldSprite" org $423b "engine/sprites/sprites.asm@OverworldSprites" + org $477d + "engine/events/pokecenter_pc.asm" ROMX $06 org $4000 diff --git a/scripts/PlayerHouse2F.asm b/scripts/PlayerHouse2F.asm index 51c0fbc..bccb514 100644 --- a/scripts/PlayerHouse2F.asm +++ b/scripts/PlayerHouse2F.asm @@ -120,7 +120,7 @@ PlayerHouse2FComputerText: .jump call RefreshScreen - callab Function1477D + callab PokemonCenterPC call Function1fea ret diff --git a/scripts/SilentHillHouse.asm b/scripts/SilentHillHouse.asm index bef5466..2f90068 100644 --- a/scripts/SilentHillHouse.asm +++ b/scripts/SilentHillHouse.asm @@ -61,7 +61,7 @@ SilentHillHouseNPCText1: .jump call RefreshScreen - callab Function1477D + callab PokemonCenterPC call Function1fea ret @@ -20,8 +20,7 @@ ; word Unknown (2 bytes) 05:470E UnknownMapBufferPointers 05:4777 Function14777 -05:477D Function1477D -05:4824 Function14824 +05:4C94 Data14c94 05:4CAC Function14cac 05:4DAC Function14dac 05:4DC4 Function14dc4 @@ -34,16 +33,16 @@ 09:412C _ExitMenu 09:4185 Function24185 09:4199 _InitVerticalMenuCursor -09:41EF Function241ef +09:41EF UpdateItemDescription 09:426A _InitScrollingMenu 09:4287 _ScrollingMenu -09:43AF Function243af -09:45C5 Function245c5 +09:43AF ScrollingMenu_ClearLeftColumn +09:45C5 SwitchItemsInBag 09:473B Function2473b -09:4774 Function24774 -09:4783 Function24783 +09:4774 PlaceMenuItemName +09:4783 PlaceMenuItemQuantity 09:4955 Function24955 -09:4C60 Function24c60 +09:4C60 SelectQuantityToToss ; all these probably print text 0A:4000 Function28000 |