Port the PC and boxes
Checks / web (push) Canceled after 0s

Read TileCollisionStdScripts from the ROM so the Pokémon Center PC runs
PokemonCenterPC: Bill's PC (deposit, withdraw, release, change and name
boxes), the player's item storage (withdraw, deposit, toss, mail box) and
Oak's Pokédex rating. The house PC now opens the full player's PC menu.

A catch with a full party goes to the current box through SendMonIntoBox;
a full box keeps the ball, and filling it queues Bill's call as a memory
script after the battle. Saves gain boxes, box names and PC items,
migrated by absence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Sébastien QUEROLandClaude Opus 5.5 committed 2026-09-25 17:12:26 +02:00
1 parent 451464f7c6
commit 3bdca0099e
21 files changed
+1999 -131

No files matched your search

+69
View File
@@ -281,6 +281,73 @@ export const OVERWORLD = {
MansionPalette2: 0x496fe,
} as const;
/** Pokémon Center and house PCs, Bill's PC and Oak's PC: routines, menu
* data, strings and texts, keyed by their PRET labels so that
* \`npm run check:reference\` can verify each address by name. */
export const PC = {
TileCollisionStdScripts: 0x13681,
PokemonCenterPC: 0x1559a,
"PokemonCenterPC.WhichPC": 0x1562c,
"PokemonCenterPC.Jumptable": 0x155e6,
"PC_CheckPartyForPokemon.PokecenterPCCantUseText": 0x15663,
PokecenterPCTurnOnText: 0x15a27,
PokecenterPCWhoseText: 0x15a2c,
PokecenterBillsPCText: 0x15a31,
PokecenterPlayersPCText: 0x15a36,
PokecenterOaksPCText: 0x15a3b,
PokecenterPCOaksClosedText: 0x15a40,
PlayersPCTurnOnText: 0x156ff,
PlayersPCAskWhatDoText: 0x157cc,
"PlayersPCMenuData.WhichPC": 0x157ac,
"PlayersPCMenuData.PlayersPCMenuPointers": 0x15746,
"PlayerWithdrawItemMenu.PlayersPCHowManyWithdrawText": 0x15850,
"PlayerWithdrawItemMenu.PlayersPCWithdrewItemsText": 0x15855,
"PlayerWithdrawItemMenu.PlayersPCNoRoomWithdrawText": 0x1585a,
"PlayerDepositItemMenu.PlayersPCNoItemsText": 0x158c7,
"PlayerDepositItemMenu.PlayersPCHowManyDepositText": 0x1596e,
"PlayerDepositItemMenu.PlayersPCDepositItemsText": 0x15973,
"PlayerDepositItemMenu.PlayersPCNoRoomDepositText": 0x15978,
"TossItemFromPC.ItemsTossOutHowManyText": 0x12a45,
"TossItemFromPC.ItemsThrowAwayText": 0x12a4a,
"TossItemFromPC.ItemsDiscardedText": 0x12a4f,
"TossItemFromPC.ItemsTooImportantText": 0x12a5b,
"_PlayerMailBoxMenu.EmptyMailboxText": 0x447b4,
"_BillsPC.PCGottaHavePokemonText": 0xe417,
"_BillsPC.PCWhatText": 0xe43a,
"_BillsPC.strings": 0xe47f,
"BillsPCDepositMenuHeader.MenuData": 0xe2545,
"BillsPC_Withdraw.MenuData": 0xe2739,
"BillsPC_ChangeBoxSubmenu.MenuData": 0xe3783,
PCString_ChooseaPKMN: 0xe34dd,
PCString_WhatsUp: 0xe34ea,
PCString_ReleasePKMN: 0xe34f4,
PCString_ItsYourLastPKMN: 0xe350f,
PCString_NoMoreUsablePKMN: 0xe3531,
PCString_ReleasedPKMN: 0xe3551,
PCString_Bye: 0xe355e,
PCString_Stored: 0xe3563,
PCString_Got: 0xe356b,
PCString_BoxFull: 0xe3575,
PCString_PartyFull: 0xe3586,
PCString_NoReleasingEGGS: 0xe3597,
"BillsPC_PlaceChooseABoxString.ChooseABox": 0xe37a1,
"BillsPC_PlaceEmptyBoxString_SFX.NoMonString": 0xe37d3,
"BillsPC_PrintBoxName.Current": 0xe36f1,
"BillsPC_PrintBoxCountAndCapacity.OutOf20": 0xe3668,
"BillsPC_RefreshTextboxes.CancelString": 0xe2c67,
"BillsPC_BoxName.PartyPKMN": 0xe2abd,
"NamingScreenJumptable.BoxNameString": 0x11822,
"SetDefaultBoxNames.Box": 0x5ccf,
ChangeBoxSaveText: 0x152a1,
OakPCText1: 0x266de,
OakPCText2: 0x266e3,
OakPCText3: 0x266e8,
OakPCText4: 0x2674c,
OakRatings: 0x2667f,
PhoneContacts: 0x9045f,
Script_ReceivePhoneCall: 0x90241,
} as const;
/** Battle engine tables and texts, keyed by their PRET labels so that
* \`npm run check:reference\` can verify each address by name. */
export const BATTLE = {
@@ -294,6 +361,8 @@ export const BATTLE = {
NewDexDataText: 0xedf0,
AskGiveNicknameText: 0xedf5,
BallBlockedText: 0xf824,
BallBoxFullText: 0xf838,
BallSentToPCText: 0xedeb,
BallDontBeAThiefText: 0xf829,
WobbleProbabilities: 0xf9ba,
"CatchTutorial.Dude": 0x4e5da,