PRET builds none of these releases, so scripts/map-revision.mjs derives where each keeps the profile's labels from the 1.1 build: a bank-by-bank alignment, then the exact references RGBDS recorded while linking 1.1, read at the matching place in the release, each result checked against its bytes. All but 1-3 labels per release are found; the rest, in code the release changed, are -1 so reading them refuses. check:reference verifies the generated file when the ROMs are present. CrystalAssets now points the profile at the cartridge's addresses, and the releases' characters (from their own fonts) and two European text codes decode. The introduction and Mom's scene play in each language and every map sweeps as in English, but the releases stay refused until the logic they localize (units, word order, layouts) is ported. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
163 lines
6.1 KiB
JavaScript
163 lines
6.1 KiB
JavaScript
// The PRET labels behind the profile's address entries that are not keyed
|
|
// by their own label (src/game/rom/profile.ts), shared by check-reference
|
|
// and map-revision.
|
|
export const PROFILE_SYMBOLS = {
|
|
trainerGroups: "TrainerGroups",
|
|
trainerClassNames: "TrainerClassNames",
|
|
trainerClassAttributes: "TrainerClassAttributes",
|
|
trainerClassDVs: "TrainerClassDVs",
|
|
statusOnlyEffects: "StatusOnlyEffects",
|
|
stallMoves: "StallMoves",
|
|
recklessMoves: "RecklessMoves",
|
|
residualMoves: "ResidualMoves",
|
|
riskyEffects: "RiskyEffects",
|
|
mapGroups: "MapGroupPointers",
|
|
tilesets: "Tilesets",
|
|
collisions: "CollisionPermissionTable",
|
|
environmentColors: "EnvironmentColorsPointers",
|
|
backgroundPalettes: "TilesetBGPalette",
|
|
objectPalettes: "MapObjectPals",
|
|
roofPalettes: "RoofPals",
|
|
roofTypes: "MapGroupRoofs",
|
|
roofs: "Roofs",
|
|
housePalettes: "HousePalette",
|
|
sprites: "OverworldSprites",
|
|
facings: "Facings",
|
|
standardScripts: "StdScripts",
|
|
mapScenes: "MapScenes",
|
|
specials: "SpecialsPointers",
|
|
emotes: "Emotes",
|
|
landmarks: "Landmarks",
|
|
weekdayNames: "SetDayOfWeek.WeekdayStrings",
|
|
whatDayText: "SetDayOfWeek.OakTimeWhatDayIsItText",
|
|
isItDayText: "SetDayOfWeek.OakTimeIsItText",
|
|
dstConfirmText: "InitialSetDSTFlag.DSTIsThatOKText",
|
|
timeConfirmText: "InitialClearDSTFlag.TimeAskOkayText",
|
|
baseData: "BaseData",
|
|
pokemonNames: "PokemonNames",
|
|
pokemonPics: "PokemonPicPointers",
|
|
picsBanks: "FixPicBank.PicsBanks",
|
|
pokemonPalettes: "PokemonPalettes",
|
|
growthRates: "GrowthRates",
|
|
evosAttacks: "EvosAttacksPointers",
|
|
moves: "Moves",
|
|
moveNames: "MoveNames",
|
|
itemNames: "ItemNames",
|
|
itemAttributes: "ItemAttributes",
|
|
itemPocketNames: "ItemPocketNames",
|
|
giveItemScript: "GiveItemScript",
|
|
putItemInPocketText: "PutItemInPocketText",
|
|
pocketIsFullText: "PocketIsFullText",
|
|
findItemInBallScript: "FindItemInBallScript",
|
|
caughtAskNicknameText: "CaughtAskNicknameText",
|
|
stringEgg: "String_Egg",
|
|
tmhmMoves: "TMHMMoves",
|
|
eggPic: "EggPic",
|
|
nicknameStrings: "NamingScreenJumptable.NicknameStrings",
|
|
rivalNameString: "NamingScreenJumptable.RivalNameString",
|
|
rivalDefaultName: "NameRival.DefaultName",
|
|
hiddenItemScript: "HiddenItemScript",
|
|
talkToTrainerScript: "TalkToTrainerScript",
|
|
seenByTrainerScript: "SeenByTrainerScript",
|
|
wildBattleScript: "WildBattleScript",
|
|
battleWhiteoutScript: "Script_BattleWhiteout",
|
|
spawnPoints: "SpawnPoints",
|
|
johtoGrassWildMons: "JohtoGrassWildMons",
|
|
grassMonProbTable: "GrassMonProbTable",
|
|
grassCollisions: "CheckGrassCollision.blocks",
|
|
fruitTreeScript: "FruitTreeScript",
|
|
fruitTreeItems: "FruitTreeItems",
|
|
engineFlags: "EngineFlags",
|
|
spriteMovementData: "SpriteMovementData",
|
|
getCurTreeFruit: "GetCurTreeFruit",
|
|
tryResetFruitTrees: "TryResetFruitTrees",
|
|
checkFruitTree: "CheckFruitTree",
|
|
pickedFruitTree: "PickedFruitTree",
|
|
trainerWalkToPlayer: "TrainerWalkToPlayer",
|
|
setMemEvent: "SetMemEvent",
|
|
marts: "Marts",
|
|
martWelcomeText: "MartWelcomeText",
|
|
martAskMoreText: "MartAskMoreText",
|
|
martComeAgainText: "MartComeAgainText",
|
|
martHowManyText: "MartHowManyText",
|
|
martFinalPriceText: "MartFinalPriceText",
|
|
martNoMoneyText: "MartNoMoneyText",
|
|
martPackFullText: "MartPackFullText",
|
|
martThanksText: "MartThanksText",
|
|
martCantBuyText: "MartCantBuyText",
|
|
martSellHowManyText: "MartSellHowManyText",
|
|
martSellPriceText: "MartSellPriceText",
|
|
martBoughtText: "MartBoughtText",
|
|
fadeOutToWhite: "FadeOutToWhite",
|
|
healParty: "HealParty",
|
|
healMachineAnim: "HealMachineAnim",
|
|
randomPhoneMon: "RandomPhoneMon",
|
|
checkPokerus: "CheckPokerus",
|
|
stubbedTrainerRankingsHealings: "StubbedTrainerRankings_Healings",
|
|
warpToSpawnPoint: "WarpToSpawnPoint",
|
|
battleBGMap: "BattleBGMap",
|
|
halveMoney: "HalveMoney",
|
|
getWhiteoutSpawn: "GetWhiteoutSpawn",
|
|
tryReceiveItem: "FindItemInBallScript.TryReceiveItem",
|
|
giveItemDummy: "GiveItemScript_DummyFunction",
|
|
restartMapMusic: "RestartMapMusic",
|
|
fadeOutMusic: "FadeOutMusic",
|
|
fadeOutToBlack: "FadeOutToBlack",
|
|
fadeInFromBlack: "FadeInFromBlack",
|
|
reloadSpritesNoPalettes: "ReloadSpritesNoPalettes",
|
|
receiveSpecialPhoneCall: "CheckSpecialPhoneCall.script",
|
|
specialPhoneCallList: "SpecialPhoneCallList",
|
|
specialCallOnlyWhenOutside: "SpecialCallOnlyWhenOutside",
|
|
specialCallWhereverYouAre: "SpecialCallWhereverYouAre",
|
|
phoneClickText: "PhoneClickText",
|
|
ringTwiceStartCall: "RingTwice_StartCall",
|
|
hangUp: "HangUp",
|
|
initCallReceiveDelay: "InitCallReceiveDelay",
|
|
nameRival: "NameRival",
|
|
setDayOfWeek: "SetDayOfWeek",
|
|
initialSetDst: "InitialSetDSTFlag",
|
|
initialClearDst: "InitialClearDSTFlag",
|
|
toggleDecorationsVisibility: "ToggleDecorationsVisibility",
|
|
toggleMaptileDecorations: "ToggleMaptileDecorations",
|
|
};
|
|
// Work and hardware RAM symbols, compared by their CPU address.
|
|
export const PROFILE_RAM = {
|
|
playerDamageTaken: "wPlayerDamageTaken",
|
|
enemyDamageTaken: "wEnemyDamageTaken",
|
|
payDayMoney: "wPayDayMoney",
|
|
textDecimalByte: "wTextDecimalByte",
|
|
battleReward: "wBattleReward",
|
|
stringBuffer1: "wStringBuffer1",
|
|
stringBuffer2: "wStringBuffer2",
|
|
stringBuffer3: "wStringBuffer3",
|
|
stringBuffer4: "wStringBuffer4",
|
|
stringBuffer5: "wStringBuffer5",
|
|
playerName: "wPlayerName",
|
|
momsName: "wMomsName",
|
|
rivalName: "wRivalName",
|
|
battleMonNickname: "wBattleMonNickname",
|
|
enemyMonNickname: "wEnemyMonNickname",
|
|
curPartyLevel: "wCurPartyLevel",
|
|
monOrItemNameBuffer: "wMonOrItemNameBuffer",
|
|
curFruit: "wCurFruit",
|
|
dailyFlags1: "wDailyFlags1",
|
|
dailyRematchFlags: "wDailyRematchFlags",
|
|
dailyPhoneTimeOfDayFlags: "wDailyPhoneTimeOfDayFlags",
|
|
unusedDailyFlag: "wUnusedDailyFlag",
|
|
itemQuantityChange: "wItemQuantityChange",
|
|
movementBuffer: "wMovementBuffer",
|
|
hiddenItemID: "wHiddenItemID",
|
|
runningTrainerBattleScript: "wRunningTrainerBattleScript",
|
|
callerContact: "wCallerContact",
|
|
surfingPlayerState: "wSurfingPlayerState",
|
|
strengthSpecies: "wStrengthSpecies",
|
|
curHPAnimDeltaHP: "wCurHPAnimDeltaHP",
|
|
visitedSpawns: "wVisitedSpawns",
|
|
tempWildMonSpecies: "wTempWildMonSpecies",
|
|
parkBallsRemaining: "wParkBallsRemaining",
|
|
coins: "wCoins",
|
|
bgMapMode: "hBGMapMode",
|
|
blueCardBalance: "wBlueCardBalance",
|
|
moneyTemp: "hMoneyTemp",
|
|
};
|