/** 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, 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, 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, /** hMoneyTemp: HRAM, not WRAM like the other entries above. */ moneyTemp: 0xffc3, } 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, } 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 = { "OverworldTownMap": 0xc2c0, "TownMapGFX": 0xf8ba0, "JohtoMap": 0x91fff, "KantoMap": 0x92168, "TownMapPals.PalMap": 0x91f4b, "MalePokegearPals": 0xb729, "FemalePokegearPals": 0xb759, "DecorationAttributes": 0x26a4f, "DecorationNames": 0x26b8d, "_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, "CheckBadge.BadgeRequiredText": 0xc73d, "FieldMoveFailed.CantUseItemText": 0xc780, CutNothingText: 0xc7c9, CantSurfText: 0xc9ae, AlreadySurfingText: 0xc9b3, "EscapeRopeOrDig.CantUseDigText": 0xcc26, "TeleportFunction.CantUseTeleportText": 0xccb6, "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, 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, "_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 = { "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, "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, AskQuantityThrowAwayText: 0x10ae9, ThrewAwayText: 0x10aee, YouDontHaveAMonText: 0x10af8, RaiseThePPOfWhichMoveText: 0xf725, PPIsMaxedOutText: 0xf72f, PPsIncreasedText: 0xf734, BicycleEffect: 0xee08, EvoStoneEffect: 0xee0f, 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 = { 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_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, 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; /** _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 = { "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", }; export const INITIAL_POSITION = { map: "24:7", x: 3, y: 3 } as const;