Files
Crystal/src/game/rom/profile.ts
T
samyandClaude Opus 5.5 cdee576818
Checks / web (push) Failing after 21s
Private ROM checks / private-rom (push) Failing after 14m27s
Port the Pokédex list, entries and tab (#35)
The start menu's POKéDEX runs Pokedex in New mode: the list up to the
last seen Pokémon, its cursor and page moves, and DisplayDexEntry with
the category, number, footprint, and the height, weight and pages once
caught. The Pokédex tab shows the same records from the loaded game.
Order, entries and footprints are compared with the pinned PRET source.

AREA, CRY, PRNT, the option and search screens, Old and A to Z modes
and Unown mode remain.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 20:19:24 +02:00

1088 lines
35 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/** Addresses only, from PRET 7a7881d0d62e0ddbd82dcf10e7116807487ac651.
* RGBDS 1.0.3 crystal11 build was byte-identical to the user-supplied ROM.
* No original graphics, maps, dialogue, music or ROM instructions live here.
* See docs/NATIVE_PORT.md for source references and verification procedure. */
export const SYMBOLS = {
trainerGroups: 0x39999,
trainerClassNames: 0x2c1ef,
trainerClassAttributes: 0x3959c,
trainerClassDVs: 0x270d6,
statusOnlyEffects: 0x385db,
stallMoves: 0x39348,
recklessMoves: 0x393e2,
residualMoves: 0x39446,
riskyEffects: 0x394ff,
mapGroups: 0x94000,
tilesets: 0x4d596,
collisions: 0x4ce1f,
environmentColors: 0xb279,
backgroundPalettes: 0xb319,
objectPalettes: 0xb469,
roofPalettes: 0xb569,
roofTypes: 0x1c021,
roofs: 0x1c03c,
housePalettes: 0x495ee,
sprites: 0x14736,
facings: 0x4049,
standardScripts: 0xbc000,
mapScenes: 0x4d01e,
specials: 0xc029,
/** CheckSpecialPhoneCall.script: pause, then Script_ReceivePhoneCall. */
receiveSpecialPhoneCall: 0x90173,
specialPhoneCallList: 0x90627,
specialCallOnlyWhenOutside: 0x90188,
specialCallWhereverYouAre: 0x90197,
phoneClickText: 0x9032a,
emotes: 0x1444d,
landmarks: 0x1ca8c3,
weekdayNames: 0x909f2,
whatDayText: 0x90a3f,
isItDayText: 0x90a4f,
dstConfirmText: 0x90a83,
timeConfirmText: 0x90ab7,
baseData: 0x51424,
pokemonNames: 0x53384,
pokemonPics: 0x120000,
picsBanks: 0x511d4,
pokemonPalettes: 0xa8ce,
growthRates: 0x50efa,
evosAttacks: 0x425b1,
moves: 0x41afb,
moveNames: 0x1c9f29,
itemNames: 0x1c8000,
itemAttributes: 0x67c1,
itemPocketNames: 0x9701c,
giveItemScript: 0x96f77,
putItemInPocketText: 0x9705b,
pocketIsFullText: 0x97060,
findItemInBallScript: 0x122ce,
caughtAskNicknameText: 0x4db44,
stringEgg: 0xe035,
tmhmMoves: 0x1167a,
eggPic: 0x151caf,
nicknameStrings: 0x11780,
rivalNameString: 0x117c3,
rivalDefaultName: 0xc2b2,
hiddenItemScript: 0x13625,
talkToTrainerScript: 0xbe66a,
seenByTrainerScript: 0xbe675,
wildBattleScript: 0x97cf9,
battleWhiteoutScript: 0x124c1,
spawnPoints: 0x152ab,
johtoGrassWildMons: 0x2a5e9,
grassMonProbTable: 0x2a1cb,
grassCollisions: 0x149ea,
fruitTreeScript: 0x44000,
fruitTreeItems: 0x44097,
engineFlags: 0x80462,
spriteMovementData: 0x4273,
marts: 0x160a9,
martWelcomeText: 0x15f83,
martAskMoreText: 0x15fb9,
martComeAgainText: 0x15fb4,
martHowManyText: 0x15e0e,
martFinalPriceText: 0x15e13,
martNoMoneyText: 0x15fa5,
martPackFullText: 0x15faa,
martThanksText: 0x15fa0,
martCantBuyText: 0x15faf,
martSellHowManyText: 0x15f73,
martSellPriceText: 0x15f78,
martBoughtText: 0x15fbe,
} as const;
/** Assembly routines that scripts `callasm` but that do nothing. */
export const EMPTY_ROUTINES = {
giveItemDummy: 0x96f76,
battleBGMap: 0x1250a,
} as const;
/** Assembly routines that scripts `callasm`, translated natively. */
export const NATIVE_ROUTINES = {
halveMoney: 0x12513,
getWhiteoutSpawn: 0x12527,
tryReceiveItem: 0x122f8,
getCurTreeFruit: 0x44041,
tryResetFruitTrees: 0x4404c,
checkFruitTree: 0x44055,
pickedFruitTree: 0x4405f,
trainerWalkToPlayer: 0x831e,
setMemEvent: 0x1364f,
ringTwiceStartCall: 0x9026f,
hangUp: 0x902eb,
initCallReceiveDelay: 0x113e5,
} as const;
/** Native handlers are selected by the routine a special index points to,
* so the ROM's own special table remains the source of truth. */
export const SPECIAL_ROUTINES = {
nameRival: 0xc29d,
restartMapMusic: 0x3d47,
fadeOutMusic: 0xc48f,
setDayOfWeek: 0x90913,
initialSetDst: 0x90a54,
initialClearDst: 0x90a88,
toggleDecorationsVisibility: 0x27043,
toggleMaptileDecorations: 0x26feb,
fadeOutToWhite: 0x8c084,
fadeOutToBlack: 0x8c0b6,
fadeInFromBlack: 0x8c0ab,
reloadSpritesNoPalettes: 0xd91,
healParty: 0xc658,
healMachineAnim: 0x12324,
randomPhoneMon: 0x2a567,
checkPokerus: 0xc419,
stubbedTrainerRankingsHealings: 0x1060a2,
warpToSpawnPoint: 0x97c28,
} as const;
/** Work RAM addresses that the event and text formats name as operands. */
export const RAM = {
battleReward: 0xc686,
stringBuffer1: 0xd073,
stringBuffer2: 0xd086,
stringBuffer3: 0xd099,
stringBuffer4: 0xd0ac,
stringBuffer5: 0xd0bf,
playerName: 0xd47d,
momsName: 0xd488,
rivalName: 0xd493,
battleMonNickname: 0xc621,
enemyMonNickname: 0xc616,
curPartyLevel: 0xd143,
monOrItemNameBuffer: 0xd050,
curFruit: 0xd03f,
dailyFlags1: 0xdc1e,
unusedDailyFlag: 0xdc21,
itemQuantityChange: 0xd10c,
movementBuffer: 0xd007,
hiddenItemID: 0xd040,
runningTrainerBattleScript: 0xd04d,
callerContact: 0xd03f,
surfingPlayerState: 0xd1eb,
strengthSpecies: 0xd1ef,
curHPAnimDeltaHP: 0xd1f3,
visitedSpawns: 0xdca5,
tempWildMonSpecies: 0xd22e,
parkBallsRemaining: 0xdc79,
coins: 0xd855,
/** hBGMapMode: HRAM, like hMoneyTemp below. */
bgMapMode: 0xffd4,
blueCardBalance: 0xdc4b,
/** hMoneyTemp: HRAM, not WRAM like the other entries above. */
moneyTemp: 0xffc3,
playerDamageTaken: 0xc682,
enemyDamageTaken: 0xc684,
payDayMoney: 0xc6ec,
textDecimalByte: 0xd265,
} as const;
/** Event constants named directly by translated special routines. */
export const EVENTS = {
playersRoomPoster: 716,
playersHouseConsole: 1857,
playersHouseDoll1: 1858,
playersHouseDoll2: 1859,
playersHouseBigDoll: 1860,
wallOpenedInAerodactylChamber: 809,
wallOpenedInKabutoChamber: 807,
} as const;
/** Engine flag indices named directly by translated routines. */
export const ENGINE_FLAGS = {
pokegear: 4,
pokedex: 11,
allFruitTrees: 84,
} as const;
/** Overworld scripts, routines and tables, keyed by their PRET labels so
* that `npm run check:reference` verifies each address by name. */
export const OVERWORLD = {
NPCTrades: 0xfce58,
TradeTexts: 0xfcf53,
NPCTradeCableText: 0xfcf7b,
TradedForText: 0xfcf80,
"TradedForText.done": 0xfcf92,
BugCatchingContestBattleScript: 0x135eb,
ContestMons: 0x97d87,
"OverworldTownMap": 0xc2c0,
"TownMapGFX": 0xf8ba0,
"JohtoMap": 0x91fff,
"KantoMap": 0x92168,
"TownMapPals.PalMap": 0x91f4b,
"MalePokegearPals": 0xb729,
"FemalePokegearPals": 0xb759,
"DecorationAttributes": 0x26a4f,
"DecorationNames": 0x26b8d,
"DecorationIDs": 0x26f2b,
"_PlayerDecorationMenu.category_pointers": 0x267aa,
"PlayersHousePC": 0xc2e7,
"PutAwayTheDecoText": 0x26ed1,
"NothingToPutAwayText": 0x26ed6,
"SetUpTheDecoText": 0x26edb,
"PutAwayAndSetUpText": 0x26ee0,
"AlreadySetUpText": 0x26ee5,
"WhichSidePutOnText": 0x26e41,
"WhichSidePutAwayText": 0x26e6b,
"DecorationDesc_PosterPointers": 0x26f84,
"DecorationDesc_OrnamentOrConsole.OrnamentConsoleScript": 0x26fd5,
"DecorationDesc_GiantOrnament.BigDollScript": 0x26fe3,
Script_ForcedMovement: 0x1253d,
FallIntoMapScript: 0x96c38,
"_Sine.sinetable_u10": 0x850b,
AskFloorElevatorText: 0x1350d,
Elevator_CurrentFloorText: 0x13537,
ElevatorFloorNames: 0x13583,
JohtoWaterWildMons: 0x2b11d,
KantoGrassWildMons: 0x2b274,
KantoWaterWildMons: 0x2b7f7,
WaterMonProbTable: 0x2a1d9,
SpriteMons: 0x14495,
MonMenuIcons: 0x8eac4,
IconPointers: 0x8ebbf,
AskSurfScript: 0xca2c,
"UsedSurfScript.stubbed_fn": 0xc9a2,
Script_CutFromMenu: 0xc7fe,
SurfFromMenuScript: 0xc983,
Script_StrengthFromMenu: 0xcd29,
Script_UseFlash: 0xc8e6,
UseFlashTextScript: 0xc8f3,
"UseFlashTextScript.BlankText": 0xc908,
BlindingFlash: 0x8c7e1,
Script_WhirlpoolFromMenu: 0xce0b,
Script_WaterfallFromMenu: 0xcb1c,
"SweetScentFromMenu.SweetScent": 0x506c8,
SweetScentEncounter: 0x506ef,
HeadbuttFromMenuScript: 0xcea7,
AskHeadbuttScript: 0xcedc,
ShakeHeadbuttTree: 0x8c80a,
HeadbuttTreeGFX: 0x8c893,
TreeMonEncounter: 0xb81ea,
RockMonEncounter: 0xb8219,
TreeMonMaps: 0xb825e,
RockMonMaps: 0xb82c5,
TreeMons: 0xb82e8,
RockSmashFromMenuScript: 0xcf2e,
HasRockSmash: 0xcf7c,
"CheckBadge.BadgeRequiredText": 0xc73d,
"FieldMoveFailed.CantUseItemText": 0xc780,
CutNothingText: 0xc7c9,
CantSurfText: 0xc9ae,
AlreadySurfingText: 0xc9b3,
"EscapeRopeOrDig.CantUseDigText": 0xcc26,
"TeleportFunction.CantUseTeleportText": 0xccb6,
"FlyFunction.FlyScript": 0xcaa3,
"FlyFunction.ReturnFromFly": 0xcacb,
"EscapeRopeOrDig.UsedEscapeRopeScript": 0xcc2b,
"EscapeRopeOrDig.UsedDigScript": 0xcc35,
"TeleportFunction.TeleportScript": 0xccbb,
FlyFromAnim: 0x8caed,
FlyToAnim: 0x8cb33,
HideSprites: 0x3016,
SkipUpdateMapSprites: 0x154f1,
WaitSFX: 0x3c55,
FadeInFromWhite: 0x8c079,
RepelWoreOffScript: 0x13619,
"ItemFinder.Script_FoundSomething": 0x125ad,
"ItemFinder.Script_FoundNothing": 0x125ba,
"ItemFinder.ItemfinderSound": 0x12599,
"_CardKey.CardKeyScript": 0x507af,
"_BasementKey.BasementKeyScript": 0x507e1,
"_Squirtbottle.SquirtbottleScript": 0x5073c,
"_Squirtbottle.CheckCanUseSquirtbottle": 0x50753,
FishGroups: 0x92488,
TimeFishGroups: 0x9266f,
Script_GotABite: 0xd035,
Script_NotEvenANibble: 0xd01e,
Script_NotEvenANibble2: 0xd027,
Fishing_CheckFacingUp: 0xd06c,
LoadFishingGFX: 0xb84b3,
PutTheRodAway: 0xd095,
FishingGFX: 0xb84f2,
KrisFishingGFX: 0xb8582,
Flypoints: 0x91c5e,
"TownMapBubble.Where": 0x91bf4,
RuinsOfAlphKabutoChamber_MapAttributes: 0x958d0,
"Softboiled_MilkDrinkFunction.ItemCantUseOnMonText": 0xf44a,
RuinsOfAlphAerodactylChamber_MapAttributes: 0x958e8,
AskCutScript: 0xd1a9,
"AskCutScript.CheckMap": 0xd1ba,
CantCutScript: 0xd1cd,
CutDownTreeOrGrass: 0xc810,
GetPartyNickname: 0xc706,
CutTreeBlockPointers: 0xc862,
WhirlpoolBlockPointers: 0xc8a4,
TryStrengthOW: 0xcd78,
SetStrengthFlag: 0xcd12,
Script_AskWaterfall: 0xcb86,
Script_CantDoWaterfall: 0xcb7e,
"Script_UsedWaterfall.CheckContinueWaterfall": 0xcb38,
Script_AskWhirlpoolOW: 0xce6e,
Script_MightyWhirlpool: 0xce66,
DisappearWhirlpool: 0xce1d,
ChrisStateSprites: 0x141b7,
KrisStateSprites: 0x141c0,
Script_GetOnBike: 0xd13e,
Script_GetOnBike_Register: 0xd14e,
Script_GetOffBike: 0xd158,
Script_GetOffBike_Register: 0xd16b,
Script_CantGetOffBike: 0xd171,
UpdatePlayerSprite: 0xe4a,
PlayMapMusic: 0x3cdf,
SurfStartStep: 0x8379,
UpdateTimePals: 0x485,
WaitTileAnimation: 0xfc2fe,
DoneTileAnimation: 0xfc2fb,
StandingTileFrame8: 0xfc2ff,
StandingTileFrame: 0xfc673,
AnimateWaterTile: 0xfc402,
"AnimateWaterTile.WaterTileFrames": 0xfc41c,
AnimateWaterPalette: 0xfc6d7,
AnimateFlowerTile: 0xfc56d,
"AnimateFlowerTile.FlowerTileFrames": 0xfc58c,
AnimateFountainTile: 0xfc387,
"AnimateFountainTile.FountainTileFramePointers": 0xfc3a2,
ForestTreeLeftAnimation: 0xfc45c,
ForestTreeRightAnimation: 0xfc4c4,
ForestTreeLeftAnimation2: 0xfc4f2,
ForestTreeRightAnimation2: 0xfc51c,
ForestTreeLeftFrames: 0xfc484,
ForestTreeRightFrames: 0xfc4a4,
AnimateLavaBubbleTile1: 0xfc5cc,
AnimateLavaBubbleTile2: 0xfc5eb,
LavaBubbleTileFrames: 0xfc605,
AnimateTowerPillarTile: 0xfc645,
"AnimateTowerPillarTile.TowerPillarTileFrameOffsets": 0xfc66b,
AnimateWhirlpoolTile: 0xfc678,
ReadTileToAnimBuffer: 0xfc6a2,
WriteTileFromAnimBuffer: 0xfc696,
ScrollTileRightLeft: 0xfc309,
ScrollTileUpDown: 0xfc318,
ScrollTileLeft: 0xfc327,
ScrollTileRight: 0xfc33b,
ScrollTileUp: 0xfc34f,
ScrollTileDown: 0xfc36a,
FlickeringCaveEntrancePalette: 0xfc71e,
PokeComPalette: 0x49501,
BattleTowerInsidePalette: 0x49550,
IcePathPalette: 0x4959f,
RadioTowerPalette: 0x4963d,
MansionPalette1: 0x4967d,
MansionPalette2: 0x496fe,
} as const;
/** A new game's introduction (engine/menus/intro_menu.asm NewGame):
* InitGender, OakSpeech with InitClock and NamePlayer, and the pictures
* they show, keyed by their PRET labels for \`npm run check:reference\`. */
export const INTRO = {
TrainerPicPointers: 0x128000,
TrainerPalettes: 0xb0ce,
ChrisPic: 0x888a9,
KrisPic: 0x88bb9,
_AreYouABoyOrAreYouAGirlText: 0x1c0ca3,
"InitGender.MenuData": 0x48e04,
_OakText1: 0x1c1d35,
_OakText2: 0x1c1da4,
_OakText4: 0x1c1de5,
_OakText5: 0x1c1e51,
_OakText6: 0x1c4000,
_OakText7: 0x1c4026,
_OakTimeWokeUpText: 0x1bc29c,
_OakTimeWhatTimeIsItText: 0x1bc2eb,
_OakTimeWhatHoursText: 0x1bc2fd,
_OakTimeHoursQuestionMarkText: 0x1bc305,
_OakTimeHowManyMinutesText: 0x1bc308,
_OakTimeWhoaMinutesText: 0x1bc31b,
_OakTimeMinutesQuestionMarkText: 0x1bc323,
_OakTimeOversleptText: 0x1bc326,
_OakTimeYikesText: 0x1bc336,
_OakTimeSoDarkText: 0x1bc34f,
"ChrisNameMenuHeader.MaleNames": 0x882be,
"KrisNameMenuHeader.FemaleNames": 0x882ee,
"NamingScreenJumptable.PlayerNameString": 0x117a3,
"NamePlayer.Chris": 0x60d3,
"NamePlayer.Kris": 0x60de,
String_oclock: 0x9087e,
String_min: 0x9089f,
"GetTimeOfDayString.nite_string": 0x90b71,
"GetTimeOfDayString.morn_string": 0x90b76,
"GetTimeOfDayString.day_string": 0x90b7b,
} as const;
/** The Pokémon stats screen's strings and the type names, keyed by their
* PRET labels so that \`npm run check:reference\` can verify each address. */
export const STATS = {
"LoadPinkPage.Status_Type": 0x4e119,
"LoadPinkPage.OK_str": 0x4e127,
"LoadPinkPage.ExpPointStr": 0x4e12b,
"LoadPinkPage.LevelUpStr": 0x4e136,
"LoadPinkPage.ToStr": 0x4e13f,
"LoadPinkPage.PkrsStr": 0x4e142,
"LoadGreenPage.Item": 0x4e1a0,
"LoadGreenPage.ThreeDashes": 0x4e1a5,
"LoadGreenPage.Move": 0x4e1a9,
IDNoString: 0x4e21e,
OTString: 0x4e222,
EggString: 0x4e3c0,
FiveQMarkString: 0x4e3c4,
EggSoonString: 0x4e3ca,
EggCloseString: 0x4e3fd,
EggMoreTimeString: 0x4e43d,
EggALotMoreTimeString: 0x4e46e,
TypeNames: 0x5097b,
} 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,
"MailboxPC.SubMenuData": 0x4496c,
"MailboxPC.MailClearedPutAwayText": 0x448ac,
"MailboxPC.MailPackFullText": 0x448b1,
"MailboxPC.MailMessageLostText": 0x448b6,
"MailboxPC.MailAlreadyHoldingItemText": 0x4493c,
"MailboxPC.MailEggText": 0x44941,
"MailboxPC.MailMovedFromBoxText": 0x44946,
PCString_RemoveMail: 0xe3544,
"ScrollingMenu_UpdateDisplay.CancelString": 0x2485f,
"_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,
PCString_MoveToWhere: 0xe3500,
PCString_TheresNoRoom: 0xe3521,
"_MovePKMNWithoutMail.MenuData": 0xe28cb,
MoveMonWOMailSaveText: 0x152a6,
"BillsPC_MovePKMNMenu.PCMonHoldingMailText": 0xe4f9,
"MovePKMNWithoutMail_InsertMon.Saving_LeaveOn": 0xe3233,
"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;
/** The start menu, the party menu and its Pokémon submenu, and the pack
* outside battle: menu data, strings and texts, keyed by their PRET labels
* so that \`npm run check:reference\` can verify each address by name. */
export const MENU = {
"Pack.MenuData_1": 0x1012c,
"Pack.MenuData_2": 0x10143,
BootedTMText: 0x2c8bf,
BootedHMText: 0x2c8c4,
ContainedMoveText: 0x2c8c9,
TMHMNotCompatibleText: 0x2c8ce,
"KnowsMove.KnowsMoveText": 0xfa06,
"PlacePartyMonTMHMCompatibility.string_able": 0x50221,
"PlacePartyMonTMHMCompatibility.string_not_able": 0x50226,
"StartMenu.Items": 0x126eb,
PartyMenuStrings: 0x504d2,
MonMenuOptionStrings: 0x24caf,
MonMenuOptions: 0x24cd9,
"GiveTakeItemMenuData.Items": 0x12ca3,
String_MoveWhere: 0x1316b,
"MonMenu_Softboiled_MilkDrink.PokemonNotEnoughHPText": 0x12f00,
MayRegisterItemText: 0x13340,
RegisteredItemText: 0x10afd,
CantRegisterText: 0x10b02,
ItemsOakWarningText: 0x12a67,
MailItems: 0xb9e80,
PokemonSwapItemText: 0x12caf,
PokemonHoldItemText: 0x12cb4,
PokemonRemoveMailText: 0x12cb9,
PokemonNotHoldingText: 0x12cbe,
ItemStorageFullText: 0x12cc3,
PokemonTookItemText: 0x12cc8,
PokemonAskSwapItemText: 0x12ccd,
ItemCantHeldText: 0x12cd2,
"MonMailAction.MenuData": 0x12dd1,
"MonMailAction.MailLoseMessageText": 0x12de2,
"MonMailAction.MailDetachedText": 0x12de7,
"MonMailAction.MailNoSpaceText": 0x12dec,
"MonMailAction.MailAskSendToPCText": 0x12df1,
"MonMailAction.MailboxFullText": 0x12df6,
"MonMailAction.MailSentToPCText": 0x12dfb,
"GiveItem.AnEggCantHoldAnItemText": 0x1048d,
"MenuHeader_UsableKeyItem.MenuData": 0x10251,
"MenuHeader_UsableItem.MenuData": 0x1027c,
"MenuHeader_UnusableItem.MenuData": 0x102a1,
"MenuHeader_UnusableKeyItem.MenuData": 0x102b8,
"MenuHeader_HoldableKeyItem.MenuData": 0x102d5,
"MenuHeader_HoldableItem.MenuData": 0x102fa,
AskThrowAwayText: 0x10ae4,
AskItemMoveText: 0x10b07,
AskQuantityThrowAwayText: 0x10ae9,
ThrewAwayText: 0x10aee,
YouDontHaveAMonText: 0x10af8,
RaiseThePPOfWhichMoveText: 0xf725,
PPIsMaxedOutText: 0xf72f,
PPsIncreasedText: 0xf734,
BicycleEffect: 0xee08,
EvoStoneEffect: 0xee0f,
EscapeRopeEffect: 0xf44f,
RepelEffect: 0xf46a,
SuperRepelEffect: 0xf462,
MaxRepelEffect: 0xf466,
RepelUsedEarlierIsStillInEffectText: 0xf47d,
CoinCaseEffect: 0xf59a,
"CoinCaseEffect.CoinCaseCountText": 0xf5a0,
BlueCardEffect: 0xf58f,
"BlueCardEffect.BlueCardBalanceText": 0xf595,
SacredAshEffect: 0xf753,
SacredAshScript: 0x50821,
NormalBoxEffect: 0xf763,
GorgeousBoxEffect: 0xf767,
"OpenBox.SentTrophyHomeText": 0xf778,
ItemfinderEffect: 0xf5b8,
CardKeyEffect: 0xf745,
BasementKeyEffect: 0xf74c,
SquirtbottleEffect: 0xf73e,
OldRodEffect: 0xf5a5,
GoodRodEffect: 0xf5a9,
SuperRodEffect: 0xf5ad,
VitaminEffect: 0xee3d,
RareCandyEffect: 0xef14,
ItemStatRoseText: 0xeea6,
StatStrings: 0xeeab,
StatExpItemPointerOffsets: 0xeeeb,
"PlacePartyMonEvoStoneCompatibility.string_able": 0x502a3,
"PlacePartyMonEvoStoneCompatibility.string_not_able": 0x502a8,
EvosAttacksPointers: 0x425b1,
EvolvingText: 0x42482,
CongratulationsYourPokemonText: 0x42473,
EvolvedIntoText: 0x42478,
StoppedEvolvingText: 0x4247d,
} 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 = {
UsefulMoves: 0x39301,
EncoreMoves: 0x38c85,
RainDanceMoves: 0x390e7,
SunnyDayMoves: 0x39134,
AI_Smart_EffectHandlers: 0x386f2,
PokedexDataPointerTable: 0x44378,
"HeavyBall_GetDexEntryBank.PokedexEntryBanks": 0xec4c,
"HeavyBallMultiplier.WeightsTable": 0xecc4,
FleeMons: 0x3c59a,
WildCelebiAppearedText: 0x80793,
ContestAskSwitchText: 0xcc0c2,
"DisplayAlreadyCaughtText.ContestAlreadyCaughtText": 0xcc0d0,
"BugContest_SetCaughtContestMon.ContestCaughtMonText": 0xe71d,
DownpourText: 0x817a3,
SunGotBrightText: 0x817b8,
SandstormBrewedText: 0x816e4,
BattleText_RainContinuesToFall: 0x8091f,
BattleText_TheSunlightIsStrong: 0x80938,
BattleText_TheSandstormRages: 0x80951,
BattleText_TheRainStopped: 0x80967,
BattleText_TheSunlightFaded: 0x8097a,
BattleText_TheSandstormSubsided: 0x8098f,
SandstormHitsText: 0x8084d,
MadeSubstituteText: 0x81362,
HasSubstituteText: 0x81378,
TooWeakSubText: 0x8138d,
SubTookDamageText: 0x813ad,
SubFadedText: 0x813d0,
TransformedText: 0x81499,
MimicLearnedMoveText: 0x813e6,
MirrorMoveFailedText: 0x815c1,
TransformedTypeText: 0x81452,
SketchedText: 0x81143,
FledFromBattleText: 0x812ac,
FledInFearText: 0x812c1,
BlownAwayText: 0x812d2,
DraggedOutText: 0x81544,
MetronomeExcepts: 0x37454,
WeatherTypeModifiers: 0xfbe13,
WeatherMoveModifiers: 0xfbe20,
WasSeededText: 0x813f8,
EvadedText: 0x81407,
LeechSeedSapsText: 0x8080e,
StartedNightmareText: 0x8160b,
HasANightmareText: 0x80822,
PutACurseText: 0x8163d,
HurtByCurseText: 0x80836,
DestinyBondEffectText: 0x81156,
TookDownWithItText: 0x810da,
ProtectedItselfText: 0x81665,
BracedItselfText: 0x816f9,
EnduredText: 0x80eb0,
SpiteEffectText: 0x8117f,
BellChimedText: 0x811a0,
WasDisabledText: 0x8141d,
GotAnEncoreText: 0x81109,
BattleText_TargetsEncoreEnded: 0x80c8a,
FellInLoveText: 0x8170b,
InLoveWithText: 0x80ec4,
InfatuationText: 0x80eda,
MistText: 0x8130b,
GettingPumpedText: 0x81338,
EliminatedStatsText: 0x81476,
WentToSleepText: 0x80fd7,
RestedText: 0x80fe9,
CantEscapeNowText: 0x815f7,
SharedPainText: 0x8111b,
BellyDrumText: 0x817d2,
CopiedStatsText: 0x817f6,
CoveredByVeilText: 0x8171c,
BattleText_SafeguardFaded: 0x808d2,
StartPerishText: 0x816c2,
PerishCountText: 0x80864,
SpikesText: 0x81691,
BattleText_UserHurtBySpikes: 0x80bae,
ShedLeechSeedText: 0x8177a,
BlewSpikesText: 0x8178e,
ReleasedByText: 0x81764,
ForesawAttackText: 0x81817,
BattleText_TargetWasHitByFutureSight: 0x808b6,
BadlyPoisonedText: 0x811e6,
IgnoredOrders2Text: 0x81850,
TookAimText: 0x81136,
StoringEnergyText: 0x80e6e,
UnleashedEnergyText: 0x80e84,
UsedBindText: 0x80e11,
WrappedByText: 0x80e44,
FireSpinTrapText: 0x80e34,
ClampedByText: 0x80e59,
WhirlpoolTrapText: 0x80e24,
BattleText_UsersHurtByStringBuffer1: 0x80de2,
BattleText_UserWasReleasedFromStringBuffer1: 0x80df5,
"BattleCommand_Charge.UsedText": 0x36bdb,
"BattleCommand_Charge.BattleMadeWhirlwindText": 0x36c0e,
"BattleCommand_Charge.BattleTookSunlightText": 0x36c13,
"BattleCommand_Charge.BattleLoweredHeadText": 0x36c18,
"BattleCommand_Charge.BattleGlowingText": 0x36c1d,
"BattleCommand_Charge.BattleFlewText": 0x36c22,
"BattleCommand_Charge.BattleDugText": 0x36c27,
PlayerHitTimesText: 0x812e5,
EnemyHitTimesText: 0x812f8,
DreamEatenText: 0x81227,
WasFrozenText: 0x8125d,
WasDefrostedText: 0x8162b,
CoinsScatteredText: 0x81435,
StoleText: 0x815da,
MagnitudeText: 0x81751,
BeatUpAttackText: 0x8182d,
PresentFailedText: 0x8183b,
CrashedText: 0x81046,
BattleText_PlayerPickedUpPayDayMoney: 0x80730,
MagnitudePower: 0x379b4,
PresentPower: 0x37907,
FlailReversalPower: 0x35807,
HookedPokemonAttackedText: 0x8075c,
MagikarpLengths: 0xfbca8,
ItemUsedText: 0xf83d,
BallBrokeFreeText: 0xedb5,
BallAppearedCaughtText: 0xedba,
BallAlmostHadItText: 0xedbf,
BallSoCloseText: 0xedc4,
Text_GotchaMonWasCaught: 0xedc9,
WaitButtonText: 0xede6,
NewDexDataText: 0xedf0,
AskGiveNicknameText: 0xedf5,
BallBlockedText: 0xf824,
BallBoxFullText: 0xf838,
BallSentToPCText: 0xedeb,
BallDontBeAThiefText: 0xf829,
WobbleProbabilities: 0xf9ba,
"CatchTutorial.Dude": 0x4e5da,
LightScreenEffectText: 0x814b4,
ReflectEffectText: 0x814c7,
BattleText_MonsLightScreenFell: 0x808e7,
BattleText_MonsReflectFaded: 0x80905,
WantsToBattleText: 0x807a9,
BattleText_EnemyWasDefeated: 0x809da,
GotMoneyForWinningText: 0x809be,
SentSomeToMomText: 0x809fc,
SentHalfToMomText: 0x80a2a,
SentAllToMomText: 0x80a3d,
BattleText_EnemySentOut: 0x80af8,
BattleText_TheresNoEscapeFromTrainerBattle: 0x80b49,
AccuracyLevelMultipliers: 0x34eb2,
AlreadyAsleepText: 0x811c1,
AlreadyConfusedText: 0x80dcc,
AlreadyParalyzedText: 0x81592,
AlreadyPoisonedText: 0x811fa,
AlwaysFleeMons: 0x3c5b1,
AskForgetMoveText: 0x667f,
AttackMissed2Text: 0x81033,
AttackMissedText: 0x81020,
"BattleCommand_StatDownMessage.BattleStatFellText": 0x36415,
"BattleCommand_StatDownMessage.BattleStatSharplyFellText": 0x36410,
"BattleCommand_StatDownMessage.stat": 0x363fe,
"BattleCommand_StatUpMessage.BattleStatWentUpText": 0x363e4,
"BattleCommand_StatUpMessage.BattleStatWentWayUpText": 0x363df,
"BattleCommand_StatUpMessage.stat": 0x363cd,
BattleMonNicknameText: 0x3f2ef,
BattleText_CantEscape: 0x80ba0,
BattleText_CantEscape2: 0x80b3b,
BattleText_EnemyMonFainted: 0x809a8,
BattleText_GotAwaySafely: 0x80b77,
BattleText_ItemHealedConfusion: 0x80dab,
BattleText_MonFainted: 0x80a75,
BattleText_MonHasNoMovesLeft: 0x80c72,
BattleText_StringBuffer1GrewToLevel: 0x80c9c,
BattleText_UserRecoveredPPUsing: 0x80899,
BattleText_UserFledUsingAStringBuffer1: 0x80b89,
BattleText_UsersStringBuffer1Activated: 0x80bde,
LoafingAroundText: 0x80f19,
BeganToNapText: 0x80f31,
WontObeyText: 0x80f44,
TurnedAwayText: 0x80f54,
IgnoredOrdersText: 0x80f66,
IgnoredSleepingText: 0x80f7b,
BattleText_TargetRecoveredWithItem: 0x80880,
BattleText_TheMoveIsDisabled: 0x80c5b,
BattleText_TheresNoPPLeftForThisMove: 0x80c39,
BattleText_WildFled: 0x807bd,
BecameConfusedText: 0x80d97,
BoostedExpPointsText: 0x3f12c,
ButItFailedText: 0x814f0,
ConfusedNoMoreText: 0x80d81,
ConsumableEffects: 0x271de,
CriticalHitChances: 0x346ab,
CriticalHitMoves: 0x346a3,
CriticalHitText: 0x81086,
DefrostedOpponentText: 0x8124b,
DidNotLearnMoveText: 0x667a,
DidntAffect1Text: 0x8150c,
DidntAffect2Text: 0x81520,
DisabledMoveText: 0x80f02,
DisabledNoMoreText: 0x80d39,
DoesntAffectText: 0x81071,
EnemyText: 0x1295,
EnemyWithdrewText: 0x384d0,
ExpPointsText: 0x3f131,
FastAsleepText: 0x80ce7,
FellAsleepText: 0x811b1,
FlinchedText: 0x80d1a,
FrozenSolidText: 0x80d06,
FullyParalyzedText: 0x8157d,
GoMonText: 0x3f2d1,
HasNoPPLeftText: 0x80fba,
HeldStatusHealingEffects: 0x3de44,
HPIsFullText: 0x81534,
DoItMonText: 0x3f2d8,
GoForItMonText: 0x3f2df,
YourFoesWeakGetmMonText: 0x3f2e6,
"WithdrawMonText.WithdrawMonText": 0x3f2fa,
ThatsEnoughComeBackText: 0x3f348,
OKComeBackText: 0x3f34d,
GoodComeBackText: 0x3f352,
ComeBackText: 0x3f35b,
BattleText_UseNextMon: 0x80a83,
BattleText_MonIsAlreadyOut: 0x80c0d,
BattleText_MonCantBeRecalled: 0x80c22,
BattleText_TheresNoWillToBattle: 0x80b0b,
BattleText_AnEGGCantBattle: 0x80b26,
BattleText_EnemyIsAboutToUseWillPlayerChangeMon: 0x80aca,
ChooseAMonString: 0x504e4,
WhichPKMNString: 0x50504,
ItemEffects: 0xe73c,
RestoreHPEffect: 0xf186,
StatusHealingEffect: 0xefcc,
StatusHealingActions: 0xf071,
HealingHPAmounts: 0xf3af,
"PrintPartyMenuActionText.MenuActionTexts": 0x5057b,
ItemWontHaveEffectText: 0xf81f,
ItemCantUseOnEggText: 0xf810,
OakThisIsntTheTimeText: 0x10af3,
UseOnWhichPKMNString: 0x504f3,
FullRestoreEffect: 0xf128,
ReviveEffect: 0xf0c8,
RevivalHerbEffect: 0xf0a9,
EnergypowderEffect: 0xf18c,
EnergyRootEffect: 0xf190,
HealPowderEffect: 0xefad,
BitterBerryEffect: 0xf16a,
RestorePPEffect: 0xf5bf,
XItemEffect: 0xf4c5,
XAccuracyEffect: 0xf482,
GuardSpecEffect: 0xf4ab,
DireHitEffect: 0xf4b8,
PokeDollEffect: 0xf48f,
XItemStats: 0xf504,
HappinessChanges: 0x7221,
ItemLooksBitterText: 0xf80b,
RestoreThePPOfWhichMoveText: 0xf72a,
PPRestoredText: 0xf739,
HungOnText: 0x80e99,
HurtByBurnText: 0x807f8,
HurtByPoisonText: 0x807e2,
HurtItselfText: 0x80d5f,
IdentifiedText: 0x816b1,
IsConfusedText: 0x80d4f,
"IsHMMove.HMMoves": 0x34f0,
ItemAttributes: 0x67c1,
ItFailedText: 0x81500,
LearnedMoveText: 0x666b,
MoveAskForgetText: 0x6670,
MoveCantForgetHMText: 0x669a,
MoveEffectPriorities: 0x3c5df,
MoveEffectsPointers: 0x271f4,
MoveGrammar: 0x105e7a,
MoveNameText: 0x105e23,
"MoveNameText.endusedmovetexts": 0x105e39,
MustRechargeText: 0x80d27,
NoPPLeftText: 0x80f99,
NothingHappenedText: 0x814d9,
NotVeryEffectiveText: 0x810c1,
OftenFleeMons: 0x3c5a8,
OneHitKOText: 0x81097,
ParalyzedText: 0x81558,
"PrintTempMonStats.StatNames": 0x50bb5,
ProtectedByMistText: 0x81321,
ProtectedByText: 0x815a9,
ProtectingItselfText: 0x8167a,
RageBuildingText: 0x810f3,
RecoilText: 0x8134d,
RecoveredUsingText: 0x80bc2,
RegainedHealthText: 0x8100c,
SafeguardProtectText: 0x81733,
SometimesFleeMons: 0x3c59a,
StatLevelMultipliers: 0x364e6,
StatNames: 0x364a6,
StopLearningMoveText: 0x6675,
SuckedHealthText: 0x81210,
SuperEffectiveText: 0x810aa,
Text_1_2_and_Poof: 0x6684,
"Text_1_2_and_Poof.MoveForgotText": 0x6695,
Text_MonGainedExpPoint: 0x3f11b,
TypeBoostItems: 0x35703,
TypeMatchups: 0x34bb1,
UnaffectedText: 0x81061,
UsedMove1Text: 0x105e04,
UsedMove2Text: 0x105e0b,
UsedMoveText: 0x105db9,
"UsedMoveText_CheckObedience.UsedInsteadText": 0x105e1a,
WasBurnedText: 0x8123c,
WasPoisonedText: 0x811d5,
WildPokemonAppearedText: 0x80746,
PokemonFellFromTreeText: 0x80778,
AsleepTreeMonsNite: 0x3eb5d,
AsleepTreeMonsDay: 0x3eb69,
AsleepTreeMonsMorn: 0x3eb6f,
WokeUpText: 0x80cfa,
WontDropAnymoreText: 0x8128f,
WontRiseAnymoreText: 0x81272,
} as const;
/** The Pokégear (engine/pokegear/pokegear.asm) and the phone calls it
* makes (engine/phone/phone.asm): texts, strings and scripts, keyed by
* their PRET labels so that \`npm run check:reference\` can verify each
* address by name. */
export const POKEGEAR = {
PokegearPressButtonText: 0x914d3,
PokegearAskWhoCallText: 0x914ce,
PokegearAskDeleteText: 0x914d8,
"Pokegear_UpdateClock.GearTodayText": 0x90faf,
"PokegearPhone_MakePhoneCall.GearEllipseText": 0x9124c,
"PokegearPhone_MakePhoneCall.GearOutOfServiceText": 0x91251,
"PokegearPhoneContactSubmenu.CallDeleteCancelStrings": 0x9143f,
"PokegearPhoneContactSubmenu.CallCancelStrings": 0x9145b,
NonTrainerCallerNames: 0x903d6,
PhoneOutOfAreaScript: 0x90657,
PhoneScript_JustTalkToThem: 0x90660,
PhoneEllipseText: 0x90336,
String_AM: 0x1dd6fc,
String_PM: 0x1dd6ff,
"Mom_GetScriptPointer.ItemScript": 0xfd0fd,
"Mom_GetScriptPointer.DollScript": 0xfd10a,
MomItems_1: 0xfd136,
"MomItems_1.End": 0xfd15e,
MomItems_2: 0xfd15e,
"MomItems_2.End": 0xfd1ae,
} as const;
/** BankOfMom (engine/events/mom.asm): its texts, strings, menu and digit
* steps, keyed by their PRET labels. */
export const MOM = {
BankOfMom: 0x16218,
"DSTChecks.TimesetAskAdjustDSTText": 0x164f4,
"DSTChecks.MomLostGearBookletText": 0x164f9,
"DSTChecks.TimesetAskDSTText": 0x164fe,
"DSTChecks.TimesetDSTText": 0x16503,
"DSTChecks.TimesetAskNotDSTText": 0x16508,
"DSTChecks.TimesetNotDSTText": 0x1650d,
"Mom_WithdrawDepositMenuJoypad.DigitQuantities": 0x16613,
MomLeavingText1: 0x16649,
MomLeavingText2: 0x1664e,
MomLeavingText3: 0x16653,
MomIsThisAboutYourMoneyText: 0x16658,
MomBankWhatDoYouWantToDoText: 0x1665d,
MomStoreMoneyText: 0x16662,
MomTakeMoneyText: 0x16667,
MomSaveMoneyText: 0x1666c,
MomHaventSavedThatMuchText: 0x16671,
MomNotEnoughRoomInWalletText: 0x16676,
MomInsufficientFundsInWalletText: 0x1667b,
MomNotEnoughRoomInBankText: 0x16680,
MomStartSavingMoneyText: 0x16685,
MomStoredMoneyText: 0x1668a,
MomTakenMoneyText: 0x1668f,
MomJustDoWhatYouCanText: 0x16694,
Mom_SavedString: 0x16699,
Mon_WithdrawString: 0x1669f,
Mom_DepositString: 0x166a8,
Mom_HeldString: 0x166b0,
"BankOfMom_MenuHeader.MenuData": 0x166bd,
} as const;
/** TrainerCard (engine/menus/trainer_card.asm): its strings, the badges'
* OAM templates and the card graphics, keyed by their PRET labels. */
export const TRAINER_CARD = {
"TrainerCard_PrintTopHalfOfCard.Name_Money": 0x252ec,
"TrainerCard_Page1_PrintDexCaught_GameTime.Dex_PlayTime": 0x2534c,
"TrainerCard_Page1_PrintDexCaught_GameTime.Badges": 0x2535c,
TrainerCard_JohtoBadgesOAM: 0x254c9,
LeaderGFX: 0x25583,
BadgeGFX: 0x26043,
ChrisCardPic: 0x88365,
KrisCardPic: 0x88595,
PredefPals: 0x9df6,
} as const;
/** Pokedex (engine/pokedex/pokedex.asm, pokedex_2.asm, pokedex_3.asm):
* its strings, the New mode order, the entries and their graphics, keyed
* by their PRET labels. */
export const POKEDEX = {
String_SEEN: 0x407e1,
String_OWN: 0x407e6,
"Pokedex_DrawDexEntryScreenBG.Height": 0x40852,
"Pokedex_DrawDexEntryScreenBG.Weight": 0x4085c,
"Pokedex_DrawDexEntryScreenBG.MenuItems": 0x40867,
"Pokedex_PlaceDefaultStringIfNotSeen.NameNotSeen": 0x40b9a,
NewPokedexOrder: 0x40d60,
"GetDexEntryPointer.PokedexEntryBanks": 0x44351,
PokedexDataPointerTable: 0x44378,
Footprints: 0xf9434,
"LoadQuestionMarkPic.QuestionMarkLZ": 0x1de0e1,
PokedexQuestionMarkPalette: 0x8fba,
} as const;
/** _Option (engine/menus/options_menu.asm): its screen and setting
* strings, keyed by their PRET labels. */
export const OPTIONS = {
StringOptions: 0xe4241,
"Options_TextSpeed.Fast": 0xe4337,
"Options_TextSpeed.Mid": 0xe433c,
"Options_TextSpeed.Slow": 0xe4341,
"Options_BattleScene.On": 0xe4398,
"Options_BattleScene.Off": 0xe439c,
"Options_BattleStyle.Shift": 0xe43d1,
"Options_BattleStyle.Set": 0xe43d7,
"Options_Sound.Mono": 0xe4416,
"Options_Sound.Stereo": 0xe441d,
"Options_Print.Lightest": 0xe4464,
"Options_Print.Lighter": 0xe446d,
"Options_Print.Normal": 0xe4476,
"Options_Print.Darker": 0xe447f,
"Options_Print.Darkest": 0xe4488,
"Options_MenuAccount.Off": 0xe44f2,
"Options_MenuAccount.On": 0xe44f6,
} as const;
export const MAP_GROUP_COUNT = 26;
export const NUM_POKEMON = 251;
export const NUM_TRAINER_CLASSES = 67;
export const NUM_ITEMS = 190;
export const NUM_ENGINE_FLAGS = 162;
export const NUM_FRUIT_TREES = 30;
export const NUM_SPRITEMOVEDATA = 37;
/** The last group has no following pointer to bound it. */
export const LAST_MAP_GROUP_SIZE = 11;
/** Areas whose rules, scripts and presentation are ported. Other decoded
* maps remain unavailable; the label only distinguishes interiors that share
* a ROM landmark name. */
export const NATIVE_MAPS: Record<string, string> = {
"24:3": "Route 29",
"24:13": "Route 29 gate",
"24:4": "New Bark Town",
"24:5": "Elm’s lab",
"24:6": "Your home",
"24:7": "Your room",
"24:8": "Neighbor’s house",
"24:9": "Elm’s house",
"26:1": "Route 30",
"26:3": "Cherrygrove City",
"26:4": "Poké Mart",
"26:5": "Pokémon Center",
"26:6": "Gym speech house",
"26:7": "Guide Gent’s house",
"26:8": "Evolution speech house",
"26:9": "Berry house",
"26:10": "Mr. Pokémon’s house",
"26:2": "Route 31",
"26:11": "Route 31 Violet gate",
"3:78": "Dark Cave",
"10:5": "Violet City",
"10:6": "Violet Mart",
"10:7": "Violet Gym",
"10:8": "Earl’s Pokémon Academy",
"10:9": "Nickname speech house",
"10:10": "Pokémon Center",
"10:11": "Kyle’s house",
"3:1": "Sprout Tower 1F",
"3:2": "Sprout Tower 2F",
"3:3": "Sprout Tower 3F",
};
export const INITIAL_POSITION = { map: "24:7", x: 3, y: 3 } as const;