diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 9d3d69e9..1cd88a09 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -18,6 +18,19 @@ body: validations: required: true + - type: dropdown + id: game + attributes: + label: Which game were you playing + description: Pick every version you saw the bug in. + multiple: true + options: + - Red + - Blue + - Yellow + validations: + required: true + - type: dropdown id: os attributes: @@ -31,6 +44,26 @@ body: validations: required: true + - type: dropdown + id: mods_enabled + attributes: + label: Were any mods on + description: Check the MODS tab in the launcher if you're not sure. + options: + - "No" + - "Yes" + validations: + required: true + + - type: input + id: mods_which + attributes: + label: Which mods (if any were on) + description: List the enabled mods. Leave blank if none were on. + placeholder: nuzlocke 1.0.0, running-shoes 0.3 + validations: + required: false + - type: input id: version attributes: diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index dd25ba84..16cb533d 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -26,6 +26,20 @@ body: validations: required: true + - type: dropdown + id: game + attributes: + label: Which game is this about + description: Pick every version it applies to. + multiple: true + options: + - Red + - Blue + - Yellow + - Not version-specific + validations: + required: true + - type: input id: discord attributes: diff --git a/.github/ISSUE_TEMPLATE/mod_request.yml b/.github/ISSUE_TEMPLATE/mod_request.yml index 89ffcfef..ed812e01 100644 --- a/.github/ISSUE_TEMPLATE/mod_request.yml +++ b/.github/ISSUE_TEMPLATE/mod_request.yml @@ -23,6 +23,20 @@ body: validations: required: true + - type: dropdown + id: game + attributes: + label: Which game is this for + description: Pick every version the mod should cover. + multiple: true + options: + - Red + - Blue + - Yellow + - Not version-specific + validations: + required: true + - type: input id: discord attributes: diff --git a/data/scripts/flavor/celadon_mansion_3f.lua b/data/scripts/flavor/celadon_mansion_3f.lua index e13d5a3e..a7aca328 100644 --- a/data/scripts/flavor/celadon_mansion_3f.lua +++ b/data/scripts/flavor/celadon_mansion_3f.lua @@ -1,33 +1,88 @@ --- Celadon Mansion 3F Game Designer (pokered/scripts/CeladonMansion3F.asm --- CeladonMansion3FGameDesignerText): text_asm counts set bits in --- wPokedexOwned and compares against NUM_POKEMON - 1 (discounts Mew). --- If the player owns >= 150 species, shows the "completed" text --- (originally followed by DisplayDiploma, which has no equivalent UI --- in this port, so we just show the congratulatory text); otherwise --- shows the normal encouragement text. +-- Celadon Mansion 3F, the GAME FREAK dev floor +-- (pokered+pokeyellow/scripts/CeladonMansion3F.asm). Every dev's +-- text_asm counts set bits in wPokedexOwned against NUM_POKEMON - 1 +-- (150, discounting Mew). The game designer shows the diploma +-- (DisplayDiploma -> src/ui/Diploma.lua) on a completed dex; Yellow's +-- graphic artist then offers the printed copy (PrintDiploma, stood in +-- by src/core/Printer.lua's PNG export like the Pokédex PRNT item). + +local function ownedCount(game) + local dex = game.save.pokedex + local owned = 0 + if dex and dex.owned then + for _ in pairs(dex.owned) do owned = owned + 1 end + end + return owned +end + return { CELADON_MANSION_3F = { talk = { TEXT_CELADONMANSION3F_GAME_DESIGNER = function(game, ow, npc, done) local t = game.data.text - local dex = game.save.pokedex - local owned = 0 - if dex and dex.owned then - for _ in pairs(dex.owned) do - owned = owned + 1 - end - end - -- NUM_POKEMON - 1 = 150 (discounts Mew, per pokered) - local label, fallback - if owned >= 150 then - label, fallback = "_CeladonMansion3FGameDesignerCompletedDexText", - "Wow! Excellent!\nYou completed\nyour POKeDEX!\nCongratulations!" - else - label, fallback = "_CeladonMansion3FGameDesignerText", - "Is that right?\nI'm the game\ndesigner!\nFilling up your\nPOKeDEX is tough,\nbut don't quit!\nWhen you finish,\ncome tell me!" - end local TextBox = require("src.render.TextBox") - game.stack:push(TextBox.new(game, t[label] or fallback, done)) + if ownedCount(game) < 150 then + game.stack:push(TextBox.new(game, + t._CeladonMansion3FGameDesignerText + or "Is that right?\nI'm the game\ndesigner!\fFilling up your\nPOKéDEX is tough,\nbut don't quit!", + done)) + return + end + game.stack:push(TextBox.new(game, + t._CeladonMansion3FGameDesignerCompletedDexText + or "Wow! Excellent!\nYou completed\nyour POKéDEX!\nCongratulations!", + function() + local Diploma = require("src.ui.Diploma") + game.stack:push(Diploma.new(game, function() + -- Yellow tags on the unlocked-printing line (CompletedDexText2) + local after = require("src.core.GameVersion").isYellow() + and (t._CeladonMansion3FGameDesignerCompletedDexText2 + or "You can print out\nyour diploma with\nthe GAME BOY\nPrinter!") + or nil + if after then + game.stack:push(TextBox.new(game, after, done)) + else + done() + end + end)) + end)) + end, + + TEXT_CELADONMANSION3F_GRAPHIC_ARTIST = function(game, ow, npc, done) + local t = game.data.text + local TextBox = require("src.render.TextBox") + local yellow = require("src.core.GameVersion").isYellow() + if not (yellow and ownedCount(game) >= 150) then + game.stack:push(TextBox.new(game, + t._CeladonMansion3FGraphicArtistText + or "I'm the graphic\nartist!\nI drew you!", done)) + return + end + -- _CeladonMansion3FGraphicArtistText2: offer to print the diploma + game.stack:push(TextBox.new(game, + t._CeladonMansion3FGraphicArtistText2 + or "I'm the graphic\nartist!\fShould I print\nyour diploma?", + function() + local ChoiceBox = require("src.ui.ChoiceBox") + game.stack:push(ChoiceBox.new(game, function(yes) + if not yes then + game.stack:push(TextBox.new(game, + t._CeladonMansion3FGraphicArtistText3 + or "Oh. But it's a\nspecial diploma!", done)) + return + end + local Printer = require("src.core.Printer") + local Diploma = require("src.ui.Diploma") + local Strings = require("src.core.Strings") + local saved, err = Printer.save("diploma", 160, 144, function() + Diploma.render(game) + end) + -- the PRNT stand-in always reports where the PNG landed + game.stack:push(TextBox.new(game, saved + and Strings("There you go!\fSaved as\n%s\vin the save\nfolder.", saved) + or Strings("Printer error!\n%s", tostring(err)), done)) + end)) + end)) end, }, }, diff --git a/data/scripts/init.lua b/data/scripts/init.lua index 76eb8cd5..b6a214c3 100644 --- a/data/scripts/init.lua +++ b/data/scripts/init.lua @@ -12,11 +12,18 @@ -- different files can each add NPCs to the same map), and mod -- contributions from the map_scripts registry compose on top of it. +local GameVersion = require("src.core.GameVersion") local MapScripts = require("src.script.MapScripts") +-- OaksLab is a full Yellow rewrite (one Eevee ball + forced Pikachu); +-- Red/Blue keep the three-starter choose flow. +local oaksLab = GameVersion.isYellow() + and "data.scripts.oaks_lab_yellow" + or "data.scripts.oaks_lab" + for _, mapEntry in ipairs({ { "PALLET_TOWN", "data.scripts.pallet_town" }, - { "OAKS_LAB", "data.scripts.oaks_lab" }, + { "OAKS_LAB", oaksLab }, { "REDS_HOUSE_1F", "data.scripts.reds_house" }, { "CELADON_MANSION_ROOF_HOUSE", "data.scripts.celadon_eevee" }, }) do @@ -36,6 +43,18 @@ for _, file in ipairs({ "data.scripts.story", "data.scripts.story2", end end +-- Yellow-only content on top of the shared tables (talk keys merge per +-- TEXT constant): the Kanto-starter gift quests and Jessie & James. +if GameVersion.isYellow() then + for _, file in ipairs({ "data.scripts.yellow_gifts", + "data.scripts.yellow_jessie_james", + "data.scripts.yellow_beach_house" }) do + for mapId, mod in pairs(require(file)) do + MapScripts.attachBase(mapId, mod) + end + end +end + local M = {} function M.get(mapId) diff --git a/data/scripts/oaks_lab_yellow.lua b/data/scripts/oaks_lab_yellow.lua new file mode 100644 index 00000000..7d21fb99 --- /dev/null +++ b/data/scripts/oaks_lab_yellow.lua @@ -0,0 +1,296 @@ +-- Hand-ported from pret/pokeyellow scripts/OaksLab.asm. +-- Yellow: one Eevee ball on the table. Rival snatches it; Oak then +-- gives the player the wild Pikachu he caught earlier (STARTER_PIKACHU). +-- Object indices differ from Red (no Charmander/Squirtle/Bulbasaur balls): +-- 1 RIVAL (4,3), 2 EEVEE_POKE_BALL (7,3), 3 OAK1 (5,2), +-- 4-5 POKEDEX (2,1)/(3,1), 6 OAK2 (door), 7 GIRL, 8-9 SCIENTIST. +-- +-- wRivalStarter rides in save.rivalStarter (RIVAL_STARTER_* 1 JOLTEON / +-- 2 FLAREON / 3 VAPOREON): JOLTEON baseline at the snatch +-- (OaksLabRivalTakesPokeballScript), FLAREON on a lab win / VAPOREON on +-- a lab loss (OaksLabRivalEndBattleScript), and Route 22's first battle +-- upgrades FLAREON back to JOLTEON (Route22Rival1AfterBattleScript). + +local OAK1 = 3 +local RIVAL = 1 + +return { + talk = { + TEXT_OAKSLAB_OAK1 = { + { "face_player" }, + -- Yellow's OaksLabOak1Text leads with the dex-rating branch: once + -- EVENT_PALLET_AFTER_GETTING_POKEBALLS is set (converted saves) or + -- 2+ species are owned, Oak asks how the Pokédex is coming and + -- rates it (predef DisplayDexRating) + { "check_flag", "EVENT_PALLET_AFTER_GETTING_POKEBALLS" }, + { "jump_if_true", "dex_rating" }, + { "check_dex_owned", 2 }, + { "jump_if_true", "dex_rating" }, + { "check_item", "POKE_BALL" }, + { "jump_if_true", "come_see" }, + { "check_flag", "EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE" }, + { "jump_if_true", "give_balls" }, + { "check_flag", "EVENT_GOT_POKEDEX" }, + { "jump_if_true", "around_world" }, + { "check_flag", "EVENT_BATTLED_RIVAL_IN_OAKS_LAB" }, + { "jump_if_false", "pre_lab_battle" }, + { "check_item", "OAKS_PARCEL" }, + { "jump_if_false", "raise_young" }, + -- .DeliverParcelText: parcel handover, then the Pokédex scene + -- (OaksLabRivalArrivesAtOaksRequestScript -> OakGivesPokedexScript) + { "show_text", "_OaksLabOak1DeliverParcelText" }, + { "play_sound", "Get_Key_Item" }, + { "show_text", "_OaksLabOak1ParcelThanksText" }, + { "take_item", "OAKS_PARCEL", 1 }, + { "stop_music" }, + { "play_music", "Music_MeetRival" }, + { "show_text", "_OaksLabRivalGrampsText" }, + { "show_object", "OAKS_LAB", "OAKSLAB_RIVAL" }, + { "place_npc", RIVAL, 4, 7, "up" }, + { "move_npc_to", RIVAL, 4, 3 }, + { "play_music", "Music_OaksLab" }, + { "face_object", RIVAL, "up" }, + { "face_object", OAK1, "down" }, + -- Yellow opens with the rival bragging, not Red's "what did you + -- call me for" (OaksLabOakGivesPokedexScript text order) + { "show_text", "_OaksLabRivalMyPokemonHasGrownStrongerText" }, + { "face_object", RIVAL, "up" }, + { "face_object", OAK1, "down" }, + { "show_text", "_OaksLabOakIHaveARequestText" }, + { "face_object", RIVAL, "up" }, + { "face_object", OAK1, "down" }, + { "show_text", "_OaksLabOakMyInventionPokedexText" }, + { "show_text", "_OaksLabOakGotPokedexText" }, + { "play_sound", "Get_Key_Item" }, + { "hide_object", "OAKS_LAB", "OAKSLAB_POKEDEX1" }, + { "hide_object", "OAKS_LAB", "OAKSLAB_POKEDEX2" }, + { "face_object", RIVAL, "up" }, + { "face_object", OAK1, "down" }, + { "show_text", "_OaksLabOakThatWasMyDreamText" }, + { "face_object", RIVAL, "right" }, + { "show_text", "_OaksLabRivalLeaveItAllToMeText" }, + { "set_flag", "EVENT_GOT_POKEDEX" }, + { "set_flag", "EVENT_OAK_GOT_PARCEL" }, + { "hide_object", "VIRIDIAN_CITY", "VIRIDIANCITY_OLD_MAN_SLEEPY" }, + { "show_object", "VIRIDIAN_CITY", "VIRIDIANCITY_OLD_MAN" }, + { "stop_music" }, + { "play_music", "Music_MeetRival" }, + { "move_npc_to", RIVAL, 4, 7 }, + { "hide_object", "OAKS_LAB", "OAKSLAB_RIVAL" }, + { "play_music", "Music_OaksLab" }, + { "set_flag", "EVENT_1ST_ROUTE22_RIVAL_BATTLE" }, + { "clear_flag", "EVENT_2ND_ROUTE22_RIVAL_BATTLE" }, + { "set_flag", "EVENT_ROUTE22_RIVAL_WANTS_BATTLE" }, + { "show_object", "ROUTE_22", "ROUTE22_RIVAL1" }, + { "jump", "end" }, + + { "label", "raise_young" }, + -- Yellow: talk-to-it (starter Pikachu) instead of Red raise-young line. + { "show_text", "_OaksLabOak1YouShouldTalkToIt" }, + { "jump", "end" }, + + { "label", "pre_lab_battle" }, + { "check_flag", "EVENT_GOT_STARTER" }, + { "jump_if_true", "can_fight" }, + { "show_text", "_OaksLabOak1GoAheadItsYours" }, + { "jump", "end" }, + { "label", "can_fight" }, + { "show_text", "_OaksLabOak1YourPokemonCanFightText" }, + { "jump", "end" }, + + { "label", "around_world" }, + { "show_text", "_OaksLabOak1PokemonAroundTheWorldText" }, + { "jump", "end" }, + + { "label", "give_balls" }, + { "check_flag", "EVENT_GOT_POKEBALLS_FROM_OAK" }, + { "jump_if_true", "come_see" }, + { "set_flag", "EVENT_GOT_POKEBALLS_FROM_OAK" }, + { "give_item", "POKE_BALL", 5, false }, + { "show_text", "_OaksLabOak1ReceivedPokeballsText" }, + { "play_sound", "Get_Key_Item" }, + { "show_text", "_OaksLabGivePokeballsExplanationText" }, + { "jump", "end" }, + + { "label", "come_see" }, + { "show_text", "_OaksLabOak1ComeSeeMeSometimesText" }, + { "jump", "end" }, + + { "label", "dex_rating" }, + { "show_text", "_OaksLabOak1HowIsYourPokedexComingText" }, + { "dex_rating" }, + }, + + -- OaksLabEeveePokeBallText / OaksLabRivalExclamationScript -> + -- OaksLabChoseStarterScript..OaksLabPlayerReceivesPikachuScript: + -- before Oak's choose speech the ball is just flavor; after it, the + -- rival "!"s, shoves the player off the table, snatches the ball, + -- then the player is walked over to Oak and handed Pikachu. + TEXT_OAKSLAB_EEVEE_POKE_BALL = function(game, ow, npc, done) + local flags = game.save.flags + if flags.EVENT_GOT_STARTER then + done() + return + end + if not flags.EVENT_OAK_ASKED_TO_CHOOSE_MON then + ow.runner:run({ + { "show_text", "_OaksLabThatsAPokeball" }, + }, { onDone = done }) + return + end + local px, py = ow.player.cellX, ow.player.cellY + local rows = { + -- OaksLabRivalExclamationScript: "!" over the rival + { "emote", RIVAL, "shock" }, + } + -- .RivalPushesPlayerAwayFromEeveeBall + the PAD_RIGHT x2 shove: + -- the rival cuts across to the ball WHILE the player standing + -- below it is bumped two tiles right (both movements run in the + -- same beat, so the walk overlaps the shove like the original) + if py == 4 then + rows[#rows + 1] = { "walk_npc", RIVAL, + { "down", "right", "right", "right" }, { wait = false } } + rows[#rows + 1] = { "face_player_dir", "left" } + rows[#rows + 1] = { "move_player", "right", 2 } + -- let the rival finish the last stretch to (7,4) + rows[#rows + 1] = { "wait", 40 } + else + rows[#rows + 1] = { "move_npc_to", RIVAL, 7, 4 } + end + rows[#rows + 1] = { "face_object", RIVAL, "up" } + rows[#rows + 1] = { "hide_object", "OAKS_LAB", "OAKSLAB_EEVEE_POKE_BALL" } + -- rival starter baseline (RIVAL_STARTER_JOLTEON) at snatch time + rows[#rows + 1] = { "set_field", "rivalStarter", 1 } + rows[#rows + 1] = { "show_text", "_OaksLabRivalTakesText1" } + rows[#rows + 1] = { "play_sound", "Get_Key_Item" } + rows[#rows + 1] = { "show_text", "_OaksLabRivalTakesText2" } + rows[#rows + 1] = { "show_text", "_OaksLabRivalTakesText3" } + rows[#rows + 1] = { "show_text", "_OaksLabRivalTakesText4" } + rows[#rows + 1] = { "show_text", "_OaksLabRivalTakesText5" } + -- OaksLabRLE_PlayerWalksToOak: the simulated-joypad buffer plays + -- its RLE list BACKWARDS (StartSimulatingJoypadStates consumes + -- from wSimulatedJoypadStatesEnd), so the real order is LEFT 1, + -- DOWN 1, LEFT 3, UP 2 -- from the shove spot (9,4) the player + -- rounds the BOTTOM of the table to (5,3), directly below Oak + if py == 4 then + rows[#rows + 1] = { "walk_npc", "player", + { "left", "down", "left", "left", "left", "up", "up" } } + else + rows[#rows + 1] = { "walk_npc", "player", { "left" } } + end + rows[#rows + 1] = { "face_player_dir", "up" } + rows[#rows + 1] = { "face_object", OAK1, "down" } + -- OaksLabPlayerReceivedMonText: no nickname prompt -- the starter + -- Pikachu keeps its species name + rows[#rows + 1] = { "show_text", "_OaksLabOakGivesText" } + rows[#rows + 1] = { "play_sound", "Get_Key_Item" } + rows[#rows + 1] = { "show_text", "_OaksLabReceivedText", { RAM = "PIKACHU" } } + rows[#rows + 1] = { "give_pokemon", "PIKACHU", 5, true } + rows[#rows + 1] = { "set_flag", "EVENT_GOT_STARTER" } + rows[#rows + 1] = { "set_flag", "EVENT_CHOSE_PIKACHU" } + ow.runner:run(rows, { npc = npc, onDone = done }) + end, + + TEXT_OAKSLAB_RIVAL = { + { "face_player" }, + { "check_flag", "EVENT_GOT_STARTER" }, + { "jump_if_false", "pre_starter" }, + { "show_text", "_OaksLabRivalMyPokemonLooksStrongerText" }, + { "jump", "end" }, + + { "label", "pre_starter" }, + { "check_flag", "EVENT_FOLLOWED_OAK_INTO_LAB_2" }, + { "jump_if_false", "gramps_gone" }, + { "show_text", "_OaksLabRivalIllGetABetterPokemonThanYou" }, + { "jump", "end" }, + + { "label", "gramps_gone" }, + { "show_text", "_OaksLabRivalGrampsIsntAroundText" }, + }, + }, + + onEnter = function(game, ow) + if not (game.save.flags and game.save.flags.EVENT_GOT_POKEDEX) then + return + end + local Commands = require("src.script.Commands") + local ctx = { save = game.save, game = game, overworld = ow } + Commands.hide_object(ctx, "OAKS_LAB", "OAKSLAB_POKEDEX1") + Commands.hide_object(ctx, "OAKS_LAB", "OAKSLAB_POKEDEX2") + end, + + onStep = function(game, ow, x, y) + local flags = game.save.flags + -- OaksLabPlayerDontGoAwayScript: y==6 without the starter walks the + -- player back up a tile + if flags.EVENT_FOLLOWED_OAK_INTO_LAB and not flags.EVENT_GOT_STARTER + and y >= 6 then + ow.runner:run({ + { "face_object", OAK1, "down" }, + { "face_object", RIVAL, "down" }, + { "show_text", "_OaksLabOakDontGoAwayYetText" }, + { "move_player", "up", 1 }, + }, {}) + return true + end + -- OaksLabRivalChallengesPlayerScript..OaksLabPikachuDislikesPokeballsScript: + -- heading for the door with Pikachu starts the rival battle, his + -- exit walk, then Pikachu pops out of its ball. + if flags.EVENT_GOT_STARTER and not flags.EVENT_BATTLED_RIVAL_IN_OAKS_LAB + and y >= 6 then + local rival = ow:npcByIndex(RIVAL) + if not rival then return false end + local rows = { + { "face_player_dir", "up" }, + { "stop_music" }, + { "play_music", "Music_MeetRival" }, + { "show_text", "_OaksLabRivalIllTakeYouOnText" }, + } + -- FindPathToPlayer with the Y distance decremented: the rival + -- stops one tile above the player + local target + for _, c in ipairs({ { x, y - 1 }, { x - 1, y }, { x + 1, y }, + { x, y + 1 } }) do + if ow.map:inBounds(c[1], c[2]) and ow.map:isWalkableCell(c[1], c[2]) then + target = c + break + end + end + if target then + table.insert(rows, { "move_npc_to", RIVAL, target[1], target[2] }) + end + table.insert(rows, { "face_object", RIVAL, + target and target[2] < y and "down" + or target and target[2] > y and "up" + or target and target[1] < x and "right" or "left" }) + table.insert(rows, { "start_battle", "trainer", "OPP_RIVAL1", 1 }) + table.insert(rows, { "heal_party" }) + table.insert(rows, { "set_flag", "EVENT_BATTLED_RIVAL_IN_OAKS_LAB" }) + -- OaksLabRivalEndBattleScript: his Eevee's future evolution is + -- decided here -- FLAREON if the player won, VAPOREON otherwise + table.insert(rows, { "check_battle_result", "win" }) + table.insert(rows, { "jump_if_false", "lost_lab" }) + table.insert(rows, { "set_field", "rivalStarter", 2 }) + table.insert(rows, { "jump", "exit" }) + table.insert(rows, { "label", "lost_lab" }) + table.insert(rows, { "set_field", "rivalStarter", 3 }) + table.insert(rows, { "label", "exit" }) + -- OaksLabRivalStartsExitScript: parting shot, walk out past the + -- player, restore the lab theme + table.insert(rows, { "wait", 20 }) + table.insert(rows, { "show_text", "_OaksLabRivalSmellYouLaterText" }) + table.insert(rows, { "move_npc_to", RIVAL, 4, 11 }) + table.insert(rows, { "hide_object", "OAKS_LAB", "OAKSLAB_RIVAL" }) + table.insert(rows, { "play_music", "Music_OaksLab" }) + -- OaksLabPikachuEscapesPokeballScript: Pikachu hates its ball. + -- The overworld follower itself is still an open port + -- (docs/yellow-version.md runtime backlog); the story beat plays. + table.insert(rows, { "play_cry", "PIKACHU" }) + table.insert(rows, { "show_text", "_OaksLabPikachuDislikesPokeballsText1" }) + table.insert(rows, { "show_text", "_OaksLabPikachuDislikesPokeballsText2" }) + ow.runner:run(rows, { npc = rival }) + return true + end + return false + end, +} diff --git a/data/scripts/safari.lua b/data/scripts/safari.lua index c25cfdc8..3cc2ce3a 100644 --- a/data/scripts/safari.lua +++ b/data/scripts/safari.lua @@ -19,19 +19,60 @@ local FEE = 500 local BALLS = 30 local STEPS = 502 -local function startGame(game, t, done) - game.save.money = game.save.money - FEE - game.save.safari = { balls = BALLS, steps = STEPS } +local function startGame(game, t, done, balls, introText) + game.save.safari = { balls = balls or BALLS, steps = STEPS } + game.save.safariNags = nil local TextBox = require("src.render.TextBox") - local paid = (t._SafariZoneGateSafariZoneWorker1ThatllBe500PleaseText - or "That'll be ¥500\nplease!\f{PLAYER} received\n30 SAFARI BALLs!") - :gsub("{PLAYER}", game.save.player.name) + local paid = introText + or (t._SafariZoneGateSafariZoneWorker1ThatllBe500PleaseText + or "That'll be ¥500\nplease!\f{PLAYER} received\n30 SAFARI BALLs!") + :gsub("{NUM:[^}]*}", "500") + paid = paid:gsub("{PLAYER}", game.save.player.name) local pa = t._SafariZoneGateSafariZoneWorker1CallYouOnThePAText or "\fWe'll call you on\nthe PA when you\nrun out of time\nor SAFARI BALLs!" local luck = t._SafariZoneGateSafariZoneWorker1GoodLuckText or "Good Luck!" game.stack:push(TextBox.new(game, paid .. pa .. "\f" .. luck, done)) end +-- Yellow's soft-lock fix (scripts/SafariZoneGate_2.asm): a player short of +-- the full fee still gets in. +-- 0 < money < 500: SafariZoneEntranceCalculateLowCostAdmission takes +-- everything and hands over min(money/23 + 1, 29) balls. +-- money == 0: SafariZoneEntranceGetLowCostAdmissionText nags four times +-- (LowCostText5/6/7/8), then relents -- free entry, one ball. +local function yellowLowCost(game, ow, t, done, back) + local TextBox = require("src.render.TextBox") + if game.save.money > 0 then + local balls = math.min(math.floor(game.save.money / 23) + 1, 29) + game.save.money = 0 + local intro = + (t._SafariZoneGateSafariZoneWorker1NotEnoughMoneyText + or "Oops! Not enough\nmoney!") + .. (t._SafariZoneLowCostText1 + or "\fOh, all right, pay\nme what you have.") + .. "\f" .. (t._SafariZoneLowCostText2 + or "But, I can't give\nyou all 30 BALLs.") + startGame(game, t, done, balls, intro) + return + end + local nag = game.save.safariNags or 0 + game.save.safariNags = nag + 1 + if nag >= 3 then + local intro = + (t._SafariZoneLowCostText8 or "Read my lips, NO!\nGet it?") + .. (t._SafariZoneLowCostText3 + or "\fYou're persistent,\naren't you?\fOK, you can go in\nfor free, but\njust this once!") + startGame(game, t, done, 1, intro) + return + end + local nags = { + t._SafariZoneLowCostText5 or "I'm sorry, but you\nhave to pay to\nenter.", + t._SafariZoneLowCostText6 or "You can't enter\nwithout paying!", + t._SafariZoneLowCostText7 or "I said, no money,\nno entry!", + } + back(nags[nag + 1]) +end + local function joinPrompt(game, ow, done) done = done or function() end local TextBox = require("src.render.TextBox") @@ -51,9 +92,14 @@ local function joinPrompt(game, ow, done) back(t._SafariZoneGateSafariZoneWorker1PleaseComeAgainText or "OK! Please come\nagain!") elseif game.save.money < FEE then - back(t._SafariZoneGateSafariZoneWorker1NotEnoughMoneyText - or "Oops! Not enough\nmoney!") + if require("src.core.GameVersion").isYellow() then + yellowLowCost(game, ow, t, done, back) + else + back(t._SafariZoneGateSafariZoneWorker1NotEnoughMoneyText + or "Oops! Not enough\nmoney!") + end else + game.save.money = game.save.money - FEE startGame(game, t, done) end end)) diff --git a/data/scripts/story2.lua b/data/scripts/story2.lua index 43d5ea27..26208190 100644 --- a/data/scripts/story2.lua +++ b/data/scripts/story2.lua @@ -1,6 +1,10 @@ -- More hand-ported events: the Pallet Town intro, the thirsty Saffron -- gate guards, the Bike Voucher chain, fossils and the day-care. --- Registered via data/scripts/init.lua; each cites its pokered source. +-- Registered via data/scripts/init.lua; Red/Blue cite pokered, Yellow +-- cites pokeyellow (Pallet stop row, Oak spawn, walk RLE, and the +-- wild-Pikachu beat before the lab escort). + +local GameVersion = require("src.core.GameVersion") local M = {} @@ -35,72 +39,79 @@ function escort.findPath(fromX, fromY, toX, toY) return path end --- PalletTownOakWalksToPlayerScript: Oak appears at his object spot --- (8,5) and zigzags to one tile below the player (hNPCPlayerYDistance --- is pre-decremented before predef FindPathToPlayer). +-- Red: Oak object (8,5) -> one tile below the player at y=1. +-- Yellow: Oak object (10,4); stop fires at y=0 (pokeyellow PalletTown). function escort.oakApproach(playerX) + if GameVersion.isYellow() then + return escort.findPath(10, 4, playerX, 1) + end return escort.findPath(8, 5, playerX, 2) end --- RLEList_ProfOakWalkToLab (engine/overworld/auto_movement.asm): --- DOWN x5, LEFT, DOWN x5, RIGHT x3, UP -- Oak's last step lands on the --- lab door (12,11). (The trailing NPC_CHANGE_FACING is a march-in- --- place beat on the mat; here Oak just stands his final beat.) -escort.oakSteps = { - "down", "down", "down", "down", "down", - "left", - "down", "down", "down", "down", "down", - "right", "right", "right", - "up", -} +-- RLEList_ProfOakWalkToLab (engine/overworld/auto_movement.asm). +-- Yellow differs: first DOWN is x6 (Oak starts one tile farther north). +local function buildOakSteps() + if GameVersion.isYellow() then + return { + "down", "down", "down", "down", "down", "down", + "left", + "down", "down", "down", "down", "down", + "right", "right", "right", + "up", + } + end + return { + "down", "down", "down", "down", "down", + "left", + "down", "down", "down", "down", "down", + "right", "right", "right", + "up", + } +end --- RLEList_PlayerWalkToLab decodes to UP x2, RIGHT x3, DOWN x5, LEFT, --- DOWN x6 and plays in REVERSE buffer order (wSimulatedJoypadStatesEnd --- grows downward): DOWN x6, LEFT, DOWN x5, RIGHT x3, UP x2 -- Oak's --- exact path one step behind. The 17th press (the second UP) is eaten --- by the door-warp frame (WarpFound clears hJoyHeld via EnterMap), so --- only 16 real steps happen; the walk ends on the door at (12,11). +escort.oakSteps = buildOakSteps() + +-- Player stays one step behind Oak (simplified reverse-RLE port). escort.playerSteps = { "down" } for _, d in ipairs(escort.oakSteps) do escort.playerSteps[#escort.playerSteps + 1] = d end +local function npcNamed(ow, name) + for _, n in ipairs(ow.npcs or {}) do + if n.def and n.def.name == name then return n end + end + return nil +end + M.PALLET_TOWN = { talk = require("data.scripts.pallet_town").talk, escort = escort, - -- Oak stops you at the north row (PalletTownDefaultScript's - -- `wYCoord == 1` check), walks up from (8,5), and leads you to his - -- lab with the player one step behind (scripts/PalletTown.asm + - -- PalletMovementScriptPointerTable in - -- engine/overworld/auto_movement.asm), then the lab walk-in and the - -- choose-mon exchange (scripts/OaksLab.asm OaksLabDefaultScript .. - -- OaksLabOakChooseMonSpeechScript). + -- Red: stop at y==1 from (8,5). Yellow: stop at y==0 from (10,4), + -- then a wild Pikachu battle before the lab escort (pokeyellow + -- PalletTownPikachuBattleScript). onStep = function(game, ow, x, y) - if y ~= 1 or game.save.flags.EVENT_FOLLOWED_OAK_INTO_LAB + local yellow = GameVersion.isYellow() + local stopY = yellow and 0 or 1 + if y ~= stopY or game.save.flags.EVENT_FOLLOWED_OAK_INTO_LAB or game.save.flags.EVENT_GOT_STARTER then return false end local TextBox = require("src.render.TextBox") local Commands = require("src.script.Commands") local Music = require("src.core.Music") + local BattleState = require("src.battle.BattleState") local t = game.data.text local ctx = { save = game.save, game = game, overworld = ow } - -- PalletTownDefaultScript: stop the player, turn them around - -- (wPlayerMovingDirection = PLAYER_DIR_DOWN applies on the very - -- next frame, before the text box opens) and strike up the "oak - -- appears" theme (MUSIC_MEET_PROF_OAK) - ow.player.facing = "down" + -- Red turns the player down; Yellow faces up at the north exit. + ow.player.facing = yellow and "up" or "down" Music.play(game.data, "Music_MeetProfOak") - -- DelayFrames-style hold: the world pauses (input stays locked) - -- for `frames` frames, then cb runs. Reuses the emote pause slot; - -- with an `npc` the "!" bubble draws above it (EmotionBubble). local function hold(frames, npc, cb) ow.emote = { frames = frames, npc = npc, onDone = cb } end - -- chain single-tile scriptMoves through a direction list local function walkList(entity, steps, done) local i = 0 local function nextStep() @@ -114,10 +125,8 @@ M.PALLET_TOWN = { nextStep() end - -- ---- Oak's Lab side (scripts/OaksLab.asm) ---------------------- - - -- OaksLabOakChooseMonSpeechScript: the fed-up / choose-mon / - -- what-about-me / be-patient exchange, Delay3 between boxes + -- OaksLabOakChooseMonSpeechScript. Yellow's OakChooseMon text is + -- the single-ball speech, not Red's "there are 3 POKéMON". local function chooseMonSpeech() local function say(key, fb, next) game.stack:push(TextBox.new(game, t[key] or fb, next)) @@ -126,7 +135,9 @@ M.PALLET_TOWN = { "{RIVAL}: Gramps!\nI'm fed up with\nwaiting!", function() hold(3, nil, function() say("_OaksLabOakChooseMonText", - "OAK: Here, {PLAYER}!\fThere are 3\nPOKéMON here!\fYou can have one!\nChoose!", function() + yellow + and "OAK: Look, {PLAYER}! Do\nyou see that ball\non the table?" + or "OAK: Here, {PLAYER}!\fThere are 3\nPOKéMON here!\fYou can have one!\nChoose!", function() hold(3, nil, function() say("_OaksLabRivalWhatAboutMeText", "{RIVAL}: Hey!\nGramps! What\nabout me?", function() @@ -143,30 +154,18 @@ M.PALLET_TOWN = { end) end - -- entering the lab: the door Oak (OAKSLAB_OAK2, (5,10)) walks up 3 - -- ahead of the player (OaksLabOakEntersLabScript OakEntryMovement), - -- swaps for the desk Oak (OAKSLAB_OAK1, (5,2)), then the player - -- walks up 8 from the mat (PlayerEntryMovementRLE) while the rival - -- and Oak turn with them (OaksLabPlayerEntersLabScript / - -- OaksLabFollowedOakScript) + -- Door Oak is OAKSLAB_OAK2: Red index 8, Yellow index 6 (one ball). local function labWalkIn() - local oak2 = ow:npcByIndex(8) + local oak2 = npcNamed(ow, "OAKSLAB_OAK2") or ow:npcByIndex(yellow and 6 or 8) local function swapOaks() Commands.hide_object(ctx, "OAKS_LAB", "OAKSLAB_OAK2") Commands.show_object(ctx, "OAKS_LAB", "OAKSLAB_OAK1") - hold(3, nil, function() -- Delay3 - Commands.face_object(ctx, 1, "down") -- rival watches you pass + hold(3, nil, function() + Commands.face_object(ctx, 1, "down") ow:scriptMove(ow.player, "up", 8, function() - -- OaksLabFollowedOakScript: flags only after the walk-in, so a - -- stray step on the door mat can't fire the "don't go away" - -- push-up (oaks_lab.lua onStep) mid-cutscene. Outdoor escort - -- still re-arms on F1 mid-escort -- these flags stay clear - -- until the lab walk finishes. game.save.flags.EVENT_FOLLOWED_OAK_INTO_LAB = true game.save.flags.EVENT_FOLLOWED_OAK_INTO_LAB_2 = true Commands.face_object(ctx, 1, "up") - -- res BIT_NO_MAP_MUSIC + PlayDefaultMusic: the lab theme - -- only starts once the walk-in is done Music.playMap(game.data, "OAKS_LAB") chooseMonSpeech() end) @@ -179,9 +178,6 @@ M.PALLET_TOWN = { end end - -- PalletMovementScript_Done + the door warp: Oak is hidden as the - -- player steps into the doorway; PALLET_TOWN warp 3 -> OAKS_LAB - -- warp 2 = (5,11), with the door SFX (WarpFound -> SFX_GO_INSIDE) local function enterLab() Commands.hide_object(ctx, "PALLET_TOWN", "PALLETTOWN_OAK") Commands.show_object(ctx, "OAKS_LAB", "OAKSLAB_OAK2") @@ -190,10 +186,6 @@ M.PALLET_TOWN = { { keepMusic = true }) end - -- PalletMovementScript_WalkToLab: Oak's NPC movement and the - -- player's simulated joypad run simultaneously, in lockstep; the - -- player retraces Oak's path one step behind and follows him into - -- the doorway on the final beat local function walkToLab(oak) local i = 0 local function tick() @@ -206,9 +198,6 @@ M.PALLET_TOWN = { if oak and escort.oakSteps[i] then ow:scriptMove(oak, escort.oakSteps[i], 1) elseif oak then - -- RLEList_ProfOakWalkToLab's trailing NPC_CHANGE_FACING beat: - -- Oak marches in place on the door mat while the player takes - -- the final step up behind him (movement.asm ChangeFacingDirection) ow:marchInPlace(oak) end ow:scriptMove(ow.player, playerStep, 1, tick) @@ -216,9 +205,6 @@ M.PALLET_TOWN = { tick() end - -- PalletMovementScript_OakMoveLeft/_PlayerMoveLeft: from the right - -- tile (x == 11) Oak sidesteps left first, then the player follows - -- left (wNumStepsToTake = wXCoord - 10), and only then both walk local function escortToLab(oak) local numSteps = x - 10 if oak and numSteps > 0 then @@ -232,37 +218,65 @@ M.PALLET_TOWN = { end end - -- ---- Pallet Town side (scripts/PalletTown.asm) ----------------- + -- After Oak reaches the player: Red goes straight to "It's unsafe!". + -- Yellow (PalletTownOakGreetsPlayerScript..AfterPikachuBattleScript): + -- ThatWasClose -> Oak faces the grass patch -> BATTLE_TYPE_PIKACHU + -- (the old-man-style simulated battle where PROF.OAK throws the ball + -- and always catches the lv5 Pikachu) -> Whew -> ComeWithMe. + local function afterOakArrives(oak) + if not yellow then + game.stack:push(TextBox.new(game, + t._PalletTownOakItsUnsafeText + or "OAK: It's unsafe!\nWild POKéMON\nlive in tall grass!", + function() escortToLab(oak) end)) + return + end + local function comeWithMe() + game.stack:push(TextBox.new(game, + t._PalletTownOakComeWithMe + or "OAK: Here, come with\nme!", + function() escortToLab(oak) end)) + end + local function afterPikaBattle() + if oak then oak.facing = "up" end + game.stack:push(TextBox.new(game, + t._PalletTownOakWhewText or "OAK: Whew...", + comeWithMe)) + end + game.stack:push(TextBox.new(game, + t._PalletTownOakThatWasCloseText + or "OAK: That was\nclose!\fWild POKéMON live\nin tall grass!", + function() + -- Oak turns toward the horizontally adjacent grass (left exit + -- looks right, right exit looks left -- the + -- EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN branch) + if oak then oak.facing = x == 10 and "right" or "left" end + local battle = BattleState.newWild(game, "PIKACHU", 5) + battle:makeOldManDemo("PROF.OAK") + battle.onFinish = function() + afterPikaBattle() + end + game.stack:push(battle) + end)) + end - -- PalletTownOakWalksToPlayerScript: Oak appears at (8,5), faces up - -- (SetSpriteFacingDirectionAndDelay + Delay3), then zigzags to the - -- player; the "It's unsafe!" text follows and the escort begins local function oakAppearsAndWalks() Commands.show_object(ctx, "PALLET_TOWN", "PALLETTOWN_OAK") - local oak = ow:npcByIndex(1) + local oak = npcNamed(ow, "PALLETTOWN_OAK") or ow:npcByIndex(1) if oak then oak.facing = "up" end hold(6, nil, function() walkList(oak, escort.oakApproach(x), function() - -- PalletTownOakNotSafeComeWithMeScript: the second text waits - -- for a button, then the escort starts - game.stack:push(TextBox.new(game, - t._PalletTownOakItsUnsafeText - or "OAK: It's unsafe!\nWild POKéMON\nlive in tall grass!", - function() escortToLab(oak) end)) + afterOakArrives(oak) end) end) end - -- The "Hey! Wait!" box ends without a button wait (auto), then the - -- "!" bubble shows over the player WHILE the box is still on screen - -- (PalletTownOakText: DelayFrames 10 then EmotionBubble, box not yet - -- cleared). onOverlap sets the bubble during the box's last frames; - -- the box pops after `overlap`, and the bubble's 60-frame hold then - -- runs to Oak's appearance (the bubble is static while the box is up, - -- since the overworld pauses under it, so 10 overlap + 50 = 60). game.stack:push(TextBox.new(game, t._PalletTownOakHeyWaitDontGoOutText or "OAK: Hey! Wait!\nDon't go out!", nil, { auto = { delay = 10, overlap = 10, onOverlap = function() + -- .HeyWaitDontGoOutText turns the player to face down (toward + -- the approaching Oak) before the exclamation bubble + ow.player.facing = "down" ow.emote = { npc = ow.player, frames = 50, onDone = oakAppearsAndWalks } end } })) return true diff --git a/data/scripts/story6.lua b/data/scripts/story6.lua index 297a711e..d847c09b 100644 --- a/data/scripts/story6.lua +++ b/data/scripts/story6.lua @@ -173,7 +173,46 @@ local function syncGymGatesAfterBattle(game, ow) applyGymGates(game, ow) end +-- Yellow's quiz-first rule (scripts/CinnabarGym.asm SuperNerd2..7): a +-- gate guardian refuses to battle until his quiz was attempted -- a +-- wrong answer sics him on you (the onInteract path below), a right one +-- opens his gate; walking up and talking first just gets the room's +-- CinnabarGymText_N lecture (Func_f2150's pointer table). +local function yellowQuizTalk(machineIndex) + return function(game, ow, npc, done) + local yellow = require("src.core.GameVersion").isYellow() + local defeated = ow:trainerDefeated(npc) + local gateOpen = game.save.flags[gymGateFlag(machineIndex)] + if yellow and not defeated and not gateOpen then + local TextBox = require("src.render.TextBox") + local t = game.data.text + game.stack:push(TextBox.new(game, + t["_CinnabarGymText_" .. machineIndex] + or "You have to take\nthe quiz first!", done)) + return + end + -- gate open (or Red/Blue): the ordinary trainer engagement / + -- after-battle line, mirroring talkTo's generic trainer branch + npc:facePlayer(ow.player) + if not defeated then + ow:engageTrainer(npc, done) + return + end + local header = game.data:trainerHeader(ow.map.def.label, npc.def.index) + local after = header and header.after and game.data.text[header.after] + local TextBox = require("src.render.TextBox") + game.stack:push(TextBox.new(game, after or "...", done)) + end +end + M.CINNABAR_GYM = { + talk = (function() + local talk = {} + for i = 1, 6 do + talk["TEXT_CINNABARGYM_SUPER_NERD" .. (i + 1)] = yellowQuizTalk(i) + end + return talk + end)(), onEnter = applyGymGates, onVictory = syncGymGatesAfterBattle, onInteract = function(game, ow, fx, fy) diff --git a/data/scripts/yellow_beach_house.lua b/data/scripts/yellow_beach_house.lua new file mode 100644 index 00000000..3352bee1 --- /dev/null +++ b/data/scripts/yellow_beach_house.lua @@ -0,0 +1,131 @@ +-- Summer Beach House (scripts/SummerBeachHouse.asm), Yellow's Route 19 +-- surf shack. The Surfin' Dude only lets a party Pikachu that knows +-- SURF ride (IsSurfingPikachuInParty, home/map_objects.asm); saying yes +-- runs the Surfing Pikachu minigame (src/ui/SurfingMinigame.lua). The +-- corner printer shows/prints the high score once you have surfed this +-- visit (BIT_PIKACHU_MAP_SURF_SELECT is a per-map-load flag, so the +-- session markers live on the overworld state, not the save). + +local function surfingPikachu(game) + for _, mon in ipairs(game.save.party or {}) do + if mon.species == "PIKACHU" then + for _, mv in ipairs(mon.moves or {}) do + if mv.id == "SURF" then return mon end + end + end + end + return nil +end + +local function push(game, text, done) + local TextBox = require("src.render.TextBox") + game.stack:push(TextBox.new(game, text, done)) +end + +-- the two-variant posters: the surf-capable line once a surfing +-- Pikachu is along, the plain one otherwise +local function poster(n) + return function(game, ow, npc, done) + local t = game.data.text + local key = ("_SummerBeachHousePoster%dText%d"):format( + n, surfingPikachu(game) and 1 or 2) + push(game, t[key] or "A surfing poster.", done) + end +end + +return { + SUMMER_BEACH_HOUSE = { + talk = { + TEXT_SUMMERBEACHHOUSE_SURFINDUDE = function(game, ow, npc, done) + local t = game.data.text + if not surfingPikachu(game) then + push(game, t._SummerBeachHouseSurfinDudeText4 + or "Dogs and burgers\non special today!", done) + return + end + -- Text1 on the first ask each visit, the short Text3 after + local ask = ow.surfinDudeAsked + and (t._SummerBeachHouseSurfinDudeText3 or "Wanna go SURF?") + or (t._SummerBeachHouseSurfinDudeText1 + or "Whoa!\nYour PIKACHU knows\nhow to SURF!\fGive it a go?") + ow.surfinDudeAsked = true + push(game, ask, function() + local ChoiceBox = require("src.ui.ChoiceBox") + game.stack:push(ChoiceBox.new(game, function(yes) + if not yes then + push(game, t._SummerBeachHouseSurfinDudeText2 + or "Come SURF anytime,\nmy friend!", done) + return + end + local SurfingMinigame = require("src.ui.SurfingMinigame") + game.stack:push(SurfingMinigame.new(game, function() + ow.surfedThisVisit = true -- BIT_PIKACHU_MAP_SURF_SELECT + require("src.core.Music").playMap(game.data, ow.map.id) + done() + end)) + end)) + end) + end, + + TEXT_SUMMERBEACHHOUSE_PIKACHU = function(game, ow, npc, done) + local t = game.data.text + push(game, t._SummerBeachHousePikachuText or "PIKACHU: Pikaa!", + function() + require("src.core.Sound").playCry(game.data, "PIKACHU") + done() + end) + end, + + TEXT_SUMMERBEACHHOUSE_POSTER1 = poster(1), + TEXT_SUMMERBEACHHOUSE_POSTER2 = poster(2), + TEXT_SUMMERBEACHHOUSE_POSTER3 = poster(3), + + TEXT_SUMMERBEACHHOUSE_PRINTER = function(game, ow, npc, done) + local t = game.data.text + if not surfingPikachu(game) then + push(game, t._SummerBeachHousePrinterText1 + or "It's some sort of\na machine...", done) + return + end + push(game, t._SummerBeachHousePrinterText2 + or "SUMMER BEACH HOUSE\nPRINTER, it says.", function() + if not ow.surfedThisVisit then + done() + return + end + push(game, t._SummerBeachHousePrinterText3 + or "The Hi-Score is\nshown.\fPRINT it out?", function() + local ChoiceBox = require("src.ui.ChoiceBox") + game.stack:push(ChoiceBox.new(game, function(yes) + if not yes then + done() + return + end + -- PrintSurfingMinigameHighScore -> PNG stand-in + local Printer = require("src.core.Printer") + local Font = require("src.render.Font") + local Strings = require("src.core.Strings") + local hi = game.save.surfingHighScore or 0 + local name = game.save.player.name or "RED" + local saved, err = Printer.save("surf_hiscore", 160, 64, + function() + love.graphics.setColor(1, 1, 1, 1) + love.graphics.rectangle("fill", 0, 0, 160, 64) + love.graphics.setColor(0, 0, 0, 1) + love.graphics.rectangle("line", 2.5, 2.5, 155, 59) + Font.draw(Strings("SUMMER BEACH HOUSE"), 8, 10) + Font.draw(Strings("SURFING Hi-Score"), 8, 24) + Font.draw(name, 8, 40) + Font.draw(Strings("%d pts", hi), 96, 40) + end) + push(game, saved + and Strings("Printed!\fSaved as\n%s\vin the save\nfolder.", + saved) + or Strings("Printer error!\n%s", tostring(err)), done) + end)) + end) + end) + end, + }, + }, +} diff --git a/data/scripts/yellow_gifts.lua b/data/scripts/yellow_gifts.lua new file mode 100644 index 00000000..17460594 --- /dev/null +++ b/data/scripts/yellow_gifts.lua @@ -0,0 +1,102 @@ +-- Yellow's three Kanto-starter side-quests, hand-ported from +-- scripts/CeruleanMelaniesHouse.asm, scripts/Route24.asm +-- (Route24CooltrainerM4Text) and scripts/VermilionCity_2.asm +-- (VermilionCityPrintOfficerJennyText). Registered on top of the shared +-- Red map scripts by data/scripts/init.lua on a Yellow boot only, so the +-- table keys compose with story.lua / story4.lua's existing entries. + +local M = {} + +-- Melanie hands over her Bulbasaur once the starter Pikachu trusts you +-- (wPikachuHappiness >= 147). +M.CERULEAN_MELANIES_HOUSE = { + talk = { + TEXT_CERULEANMELANIESHOUSE_MELANIE = function(game, ow, npc, done) + local rows = { { "face_player" } } + if game.save.flags.EVENT_GOT_BULBASAUR_IN_CERULEAN then + rows[#rows + 1] = { "show_text", "MelanieText4" } + elseif (game.save.pikachuHappiness or 90) < 147 then + rows[#rows + 1] = { "show_text", "MelanieText1" } + else + rows[#rows + 1] = { "show_text", "MelanieText1" } + rows[#rows + 1] = { "ask", "MelanieText2" } + rows[#rows + 1] = { "jump_if_false", "declined" } + rows[#rows + 1] = { "give_pokemon", "BULBASAUR", 10 } + rows[#rows + 1] = { "jump_if_false", "end" } -- party + box full + rows[#rows + 1] = { "show_text", "MelanieText3" } + rows[#rows + 1] = { "hide_object", "CERULEAN_MELANIES_HOUSE", + "CERULEANMELANIESHOUSE_BULBASAUR" } + rows[#rows + 1] = { "set_flag", "EVENT_GOT_BULBASAUR_IN_CERULEAN" } + rows[#rows + 1] = { "jump", "end" } + rows[#rows + 1] = { "label", "declined" } + rows[#rows + 1] = { "show_text", "MelanieText5" } + end + ow.runner:run(rows, { npc = npc, onDone = done }) + end, + -- pet flavor: the text with the species' cry over it + TEXT_CERULEANMELANIESHOUSE_BULBASAUR = { + { "play_cry", "BULBASAUR" }, + { "show_text", "MelanieBulbasaurText" }, + }, + TEXT_CERULEANMELANIESHOUSE_ODDISH = { + { "play_cry", "ODDISH" }, + { "show_text", "MelanieOddishText" }, + }, + TEXT_CERULEANMELANIESHOUSE_SANDSHREW = { + { "play_cry", "SANDSHREW" }, + { "show_text", "MelanieSandshrewText" }, + }, + }, +} + +-- Damian gives away the Charmander he thinks is too weak (EVENT_54F). +M.ROUTE_24 = { + talk = { + TEXT_ROUTE24_COOLTRAINER_M4 = { + { "face_player" }, + { "check_flag", "EVENT_54F" }, + { "jump_if_true", "after" }, + { "ask", "_Route24DamianText1" }, + { "jump_if_false", "declined" }, + { "give_pokemon", "CHARMANDER", 10 }, + { "jump_if_false", "end" }, + { "show_text", "_Route24DamianText2" }, + { "set_flag", "EVENT_54F" }, + { "jump", "end" }, + { "label", "declined" }, + { "show_text", "_Route24DamianText3" }, + { "jump", "end" }, + { "label", "after" }, + { "show_text", "_Route24DamianText4" }, + }, + }, +} + +-- Officer Jenny's Squirtle: kept until you carry the Thunder Badge. +M.VERMILION_CITY = { + talk = { + TEXT_VERMILIONCITY_OFFICER_JENNY = function(game, ow, npc, done) + local rows = { { "face_player" } } + if game.save.flags.EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY then + rows[#rows + 1] = { "show_text", "_OfficerJennyText5" } + elseif not (game.save.inventory + and game.save.inventory.THUNDERBADGE) then + rows[#rows + 1] = { "show_text", "_OfficerJennyText1" } + else + rows[#rows + 1] = { "ask", "_OfficerJennyText2" } + rows[#rows + 1] = { "jump_if_false", "declined" } + rows[#rows + 1] = { "give_pokemon", "SQUIRTLE", 10 } + rows[#rows + 1] = { "jump_if_false", "end" } + rows[#rows + 1] = { "show_text", "_OfficerJennyText3" } + rows[#rows + 1] = { "set_flag", + "EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY" } + rows[#rows + 1] = { "jump", "end" } + rows[#rows + 1] = { "label", "declined" } + rows[#rows + 1] = { "show_text", "_OfficerJennyText4" } + end + ow.runner:run(rows, { npc = npc, onDone = done }) + end, + }, +} + +return M diff --git a/data/scripts/yellow_jessie_james.lua b/data/scripts/yellow_jessie_james.lua new file mode 100644 index 00000000..3a16dc57 --- /dev/null +++ b/data/scripts/yellow_jessie_james.lua @@ -0,0 +1,261 @@ +-- Jessie & James, Yellow's Team Rocket duo, at all four ambush sites: +-- Mt Moon B2F (scripts/MtMoonB2F.asm), Rocket Hideout B4F +-- (scripts/RocketHideoutB4F.asm), Pokemon Tower 7F +-- (scripts/PokemonTower7F.asm) and Silph Co 11F (scripts/SilphCo11F.asm). +-- Every site shares one shape: a coordinate trigger swaps the map theme +-- for Music_MeetJessieJames, the motto plays, the duo closes in, one +-- battle against the shared OPP_ROCKET party fights them both, and after +-- their parting lines they vanish together under a second sting of the +-- theme before the map theme resumes (PlayDefaultMusic -> +-- play_default_music). +-- +-- Registered on top of the shared tables by data/scripts/init.lua on a +-- Yellow boot; MT_MOON_B2F's onStep chains story2's Super Nerd / fossil +-- trigger and SILPH_CO_11F's chains story's Giovanni trigger, since +-- non-talk hooks replace rather than merge. + +local M = {} + +-- Capture the FUNCTION, not the table: attachBase stores the module +-- table itself, so once this file's onStep is attached the table's slot +-- points back here -- delegating through the table would self-recurse. +local baseMtMoonStep = require("data.scripts.story2").MT_MOON_B2F.onStep +local baseSilph11Step = require("data.scripts.story").SILPH_CO_11F.onStep + +M.MT_MOON_B2F = { + talk = { + TEXT_MTMOONB2F_JESSIE = { + { "face_player" }, { "show_text", "_MtMoonJessieJamesText1" }, + }, + TEXT_MTMOONB2F_JAMES = { + { "face_player" }, { "show_text", "_MtMoonJessieJamesText1" }, + }, + }, + + onStep = function(game, ow, x, y) + if baseMtMoonStep and baseMtMoonStep(game, ow, x, y) then + return true + end + local f = game.save.flags + if x ~= 3 or y ~= 5 then return false end + if f.EVENT_BEAT_MT_MOON_3_JESSIE_JAMES then return false end + if not (f.EVENT_GOT_DOME_FOSSIL or f.EVENT_GOT_HELIX_FOSSIL) then + return false + end + ow.runner:run({ + { "stop_music" }, + { "play_music", "Music_MeetJessieJames" }, + { "show_object", "MT_MOON_B2F", "MTMOONB2F_JESSIE" }, + { "show_object", "MT_MOON_B2F", "MTMOONB2F_JAMES" }, + { "show_text", "_MtMoonJessieJamesText1" }, + { "face_player_dir", "right" }, + { "show_text", "_MtMoonJessieJamesText2" }, + { "start_battle", "trainer", "OPP_ROCKET", 42 }, + { "check_battle_result", "win" }, + { "jump_if_false", "end" }, + { "show_text", "_MtMoonJessieJamesText3" }, + { "show_text", "_MtMoonJessieJamesText4" }, + { "stop_music" }, + { "play_music", "Music_MeetJessieJames" }, + { "hide_object", "MT_MOON_B2F", "MTMOONB2F_JESSIE" }, + { "hide_object", "MT_MOON_B2F", "MTMOONB2F_JAMES" }, + { "play_default_music" }, + { "set_flag", "EVENT_BEAT_MT_MOON_3_JESSIE_JAMES" }, + }, {}) + return true + end, +} + +-- ------------------------------------------------------------------- +-- Rocket Hideout B4F (RocketHideoutB4FScript_455a5..Script13): the +-- motto plays from off-screen FIRST, then the duo pops in at (25,10) / +-- (24,10) and whichever of them shares the player's column ($18=24 or +-- $19=25, EVENT_ROCKET_HIDEOUT_4_JESSIE_JAMES_ON_LEFT) walks the three +-- tiles down to loom over the player while the other steps one. A loss +-- re-hides them (RocketHideoutB4FResetScripts via EVENT_6A0), so the +-- trigger re-arms clean. +-- ------------------------------------------------------------------- + +M.ROCKET_HIDEOUT_B4F = { + talk = { + TEXT_ROCKETHIDEOUTB4F_JESSIE = { + { "face_player" }, { "show_text", "_RocketHideoutJessieJamesText1" }, + }, + TEXT_ROCKETHIDEOUTB4F_JAMES = { + { "face_player" }, { "show_text", "_RocketHideoutJessieJamesText1" }, + }, + }, + + onStep = function(game, ow, x, y) + local f = game.save.flags + if y ~= 14 or (x ~= 24 and x ~= 25) then return false end + if f.EVENT_BEAT_ROCKET_HIDEOUT_4_JESSIE_JAMES then return false end + -- ON_LEFT: player under James's column (25); movement data pairs + -- RocketHideoutB4FJessieJamesMovementData_45605/45606 swap so the + -- column-mate walks 3, the other 1. + local onLeft = (x == 25) + ow.runner:run({ + { "stop_music" }, + { "play_music", "Music_MeetJessieJames" }, + { "show_text", "_RocketHideoutJessieJamesText1" }, + { "face_player_dir", "up" }, + { "emote", "player", "shock", 30 }, + { "show_object", "ROCKET_HIDEOUT_B4F", "ROCKETHIDEOUTB4F_JAMES" }, + { "show_object", "ROCKET_HIDEOUT_B4F", "ROCKETHIDEOUTB4F_JESSIE" }, + -- James (object 2) then Jessie (object 3), Script4..Script9 order + { "walk_npc", 2, onLeft and { "down", "down", "down" } or { "down" } }, + { "face_object", 2, onLeft and "down" or "left" }, + { "walk_npc", 3, onLeft and { "down" } or { "down", "down", "down" } }, + { "face_object", 3, onLeft and "right" or "down" }, + { "show_text", "_RocketHideoutJessieJamesText2" }, + { "start_battle", "trainer", "OPP_ROCKET", 43 }, + { "check_battle_result", "win" }, + { "jump_if_false", "lost" }, + { "show_text", "_RocketHideoutJessieJamesText3" }, + { "show_text", "_RocketHideoutJessieJamesText4" }, + { "stop_music" }, + { "play_music", "Music_MeetJessieJames" }, + { "fade", "out" }, + { "hide_object", "ROCKET_HIDEOUT_B4F", "ROCKETHIDEOUTB4F_JAMES" }, + { "hide_object", "ROCKET_HIDEOUT_B4F", "ROCKETHIDEOUTB4F_JESSIE" }, + { "fade", "in" }, + { "play_default_music" }, + { "set_flag", "EVENT_BEAT_ROCKET_HIDEOUT_4_JESSIE_JAMES" }, + { "jump", "end" }, + { "label", "lost" }, + { "hide_object", "ROCKET_HIDEOUT_B4F", "ROCKETHIDEOUTB4F_JAMES" }, + { "hide_object", "ROCKET_HIDEOUT_B4F", "ROCKETHIDEOUTB4F_JESSIE" }, + }, {}) + return true + end, +} + +-- ------------------------------------------------------------------- +-- Pokemon Tower 7F (PokemonTower7FScript_60d2a..Script10): same beat +-- one floor below Fuji, except the duo pops in BEFORE the motto and +-- Jessie ($a=10 column) leads the walk-down; ON_LEFT ($b=11) hands the +-- three-tile walk to James instead. On a loss vanilla only resets the +-- script counter (the blackout warp reloads the map anyway). +-- ------------------------------------------------------------------- + +M.POKEMON_TOWER_7F = { + talk = { + TEXT_POKEMONTOWER7F_JESSIE = { + { "face_player" }, { "show_text", "_PokemonTowerJessieJamesText1" }, + }, + TEXT_POKEMONTOWER7F_JAMES = { + { "face_player" }, { "show_text", "_PokemonTowerJessieJamesText1" }, + }, + }, + + onStep = function(game, ow, x, y) + local f = game.save.flags + if y ~= 12 or (x ~= 10 and x ~= 11) then return false end + if f.EVENT_BEAT_POKEMONTOWER_7_JESSIE_JAMES then return false end + local onLeft = (x == 11) -- EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT + ow.runner:run({ + { "stop_music" }, + { "play_music", "Music_MeetJessieJames" }, + { "show_object", "POKEMON_TOWER_7F", "POKEMONTOWER7F_JESSIE" }, + { "show_object", "POKEMON_TOWER_7F", "POKEMONTOWER7F_JAMES" }, + { "show_text", "_PokemonTowerJessieJamesText1" }, + { "face_player_dir", "up" }, + { "emote", "player", "shock", 30 }, + -- Jessie (object 1) then James (object 2), Script1..Script6 order + { "walk_npc", 1, onLeft and { "down" } or { "down", "down", "down" } }, + { "face_object", 1, onLeft and "right" or "down" }, + { "walk_npc", 2, onLeft and { "down", "down", "down" } or { "down" } }, + { "face_object", 2, onLeft and "down" or "left" }, + { "show_text", "_PokemonTowerJessieJamesText2" }, + { "start_battle", "trainer", "OPP_ROCKET", 44 }, + { "check_battle_result", "win" }, + { "jump_if_false", "end" }, + { "show_text", "_PokemonTowerJessieJamesText3" }, + { "show_text", "_PokemonTowerJessieJamesText4" }, + { "stop_music" }, + { "play_music", "Music_MeetJessieJames" }, + { "fade", "out" }, + { "hide_object", "POKEMON_TOWER_7F", "POKEMONTOWER7F_JESSIE" }, + { "hide_object", "POKEMON_TOWER_7F", "POKEMONTOWER7F_JAMES" }, + { "fade", "in" }, + { "play_default_music" }, + { "set_flag", "EVENT_BEAT_POKEMONTOWER_7_JESSIE_JAMES" }, + }, {}) + return true + end, +} + +-- ------------------------------------------------------------------- +-- Silph Co 11F (SilphCo11FScript_6229c..Script14): the only site where +-- the duo starts VISIBLE (toggleable_objects.asm keeps SILPHCO11F_JAMES +-- / _JESSIE ON), flanking Giovanni at (2,8)/(3,8), so they are talkable +-- before the ambush (SilphCo11FJessieJamesText = the full motto). The +-- trigger is the top row (y=3, x<4); EVENT_780/EVENT_781 pick one of +-- three approach paths (SilphCo11FMovementData_622f5..62311, $5=up +-- $6=left) that route James then Jessie up to the player without ever +-- crossing the player's tile. Their duo text lives in +-- text/SilphCo10F.asm (_SilphCoJessieJamesText*). +-- ------------------------------------------------------------------- + +M.SILPH_CO_11F = { + talk = { + TEXT_SILPHCO11F_JESSIE = { + { "face_player" }, { "show_text", "_SilphCoJessieJamesText1" }, + }, + TEXT_SILPHCO11F_JAMES = { + { "face_player" }, { "show_text", "_SilphCoJessieJamesText1" }, + }, + }, + + onStep = function(game, ow, x, y) + if baseSilph11Step and baseSilph11Step(game, ow, x, y) then + return true + end + local f = game.save.flags + if y ~= 3 or x > 3 then return false end + if f.EVENT_BEAT_SILPH_CO_11F_JESSIE_JAMES then return false end + -- x==3 -> base path, x==2 -> EVENT_780 variant, x<=1 -> EVENT_781 + local jamesDirs, jamesFace, jessieDirs, jessieFace + if x == 3 then + jamesDirs, jamesFace = { "up", "up", "up", "up", "up" }, "right" + jessieDirs, jessieFace = { "up", "up", "up", "up" }, "up" + elseif x == 2 then + jamesDirs, jamesFace = { "up", "up", "up", "up" }, "up" + jessieDirs, jessieFace = { "up", "up", "up", "up", "up" }, "left" + else + jamesDirs = { "up", "up", "left", "up", "up" } + jamesFace = "up" + jessieDirs = { "up", "up", "up", "left", "up", "up" } + jessieFace = "left" + end + ow.runner:run({ + { "stop_music" }, + { "play_music", "Music_MeetJessieJames" }, + { "show_text", "_SilphCoJessieJamesText1" }, + { "face_player_dir", "down" }, + { "emote", "player", "shock", 30 }, + -- James (object 4) then Jessie (object 6), Script5..Script10 order + { "walk_npc", 4, jamesDirs }, + { "face_object", 4, jamesFace }, + { "walk_npc", 6, jessieDirs }, + { "face_object", 6, jessieFace }, + { "show_text", "_SilphCoJessieJamesText2" }, + { "start_battle", "trainer", "OPP_ROCKET", 45 }, + { "check_battle_result", "win" }, + { "jump_if_false", "end" }, + { "show_text", "_SilphCoJessieJamesText3" }, + { "show_text", "_SilphCoJessieJamesText4" }, + { "stop_music" }, + { "play_music", "Music_MeetJessieJames" }, + { "fade", "out" }, + { "hide_object", "SILPH_CO_11F", "SILPHCO11F_JAMES" }, + { "hide_object", "SILPH_CO_11F", "SILPHCO11F_JESSIE" }, + { "fade", "in" }, + { "play_default_music" }, + { "set_flag", "EVENT_BEAT_SILPH_CO_11F_JESSIE_JAMES" }, + }, {}) + return true + end, +} + +return M diff --git a/docs/blue-version.md b/docs/blue-version.md deleted file mode 100644 index 313efb6a..00000000 --- a/docs/blue-version.md +++ /dev/null @@ -1,131 +0,0 @@ -# Building a Blue Version of the port - -pokered builds Red and Blue from one source tree: the Makefile -assembles everything twice with `rgbasm -D _RED` or `-D _BLUE`, and -every in-game difference sits in an `IF DEF(_RED)` / `IF DEF(_BLUE)` -block. Our extraction pipeline resolves those conditionals the same -way (`tools/extract/util.py` `ASM_DEFINES`), so most of a Blue build -falls out of re-running the extractors. Only three things are -hand-ported on the Lua side and need swapping by hand. - -## What differs between Red and Blue - -| Where (pokered) | What | -| --- | --- | -| `data/wild/maps/*.asm` (34 files) | Version-exclusive encounters (Red: Ekans, Oddish, Growlithe, Mankey, Scyther, Electabuzz, Blue: Sandshrew, Bellsprout, Vulpix, Meowth, Pinsir, Magmar) | -| `data/pokemon/title_mons.asm` | The 16 title-screen Pokémon | -| `engine/movie/title.asm` + `gfx/version.asm` | The "Red Version" / "Blue Version" ribbon | -| `constants/player_constants.asm` | Preset names (Red: RED/ASH/JACK + BLUE/GARY/JOHN) | -| `data/sgb/sgb_palettes.asm`, `sgb_border.asm` | Super Game Boy palettes and border | -| `data/events/prizes.asm`, `prize_mon_levels.asm` | Game Corner prize mons, costs and levels | -| `engine/movie/intro.asm`, `data/credits/credits_text.asm`, `engine/slots/slot_machine.asm`, `engine/battle/animations.asm`, `audio/sfx/save_3.asm` | Small gated tweaks (credits say "BLUE VERSION STAFF", etc.) | - -## Step 1, flip the extraction define - -`tools/extract/util.py`: - -```python -ASM_DEFINES = {"_RED"} # -> {"_BLUE"} -``` - -Then regenerate everything (same as scripts/setup.sh does): - -```sh -cd tools -../.venv/bin/python3 build_data.py \ - --pokered /Users/bryanbassett/Documents/development/pokered \ - --out ../data/generated --assets ../assets/generated -``` - -This alone switches the wild encounters, preset names, SGB palettes -and credits text. **Caveat:** `parse_preset_names` sanity-checks in -`tools/extract/field.py:1193` expect "RED" in the player presets, -relax that check for a Blue build (Blue's presets are BLUE/GARY/JOHN -for the player and RED/ASH/JACK for the rival). - -`tools/extract/palettes.py` uses its own raw reader with hardcoded -`IF DEF(_BLUE)` skipping (around line 44), invert that too, or port -it to `read_asm` so `ASM_DEFINES` covers it. - -## Step 2, title screen (hand-ported) - -`src/ui/TitleState.lua`: - -1. **Ribbon art.** The extractor writes - `assets/generated/title/red_version.png`; add `blue_version.png` - to `gfx.extract_title` in `tools/extract/gfx.py` (source: - `gfx/title/blue_version.png`, 64×8). In `TitleState:draw()`, the - Red strip needs two quads (tiles 0–1 "Red", skip, tiles 5–9 - "Version", `title.asm` `VersionOnTitleScreenText`). Blue's strip - prints its tiles contiguously (`db $61..$68`), so draw the whole - 64×8 image at px (56, 64) and verify with the title driver - screenshot. - -2. **Title mons.** Replace `CYCLE_SPECIES` with Blue's list from - `data/pokemon/title_mons.asm`: - - ```lua - local CYCLE_SPECIES = { - "SQUIRTLE", "CHARMANDER", "BULBASAUR", "MANKEY", "HITMONLEE", - "VULPIX", "CHANSEY", "AERODACTYL", "JOLTEON", "SNORLAX", - "GLOOM", "POLIWAG", "DODUO", "PORYGON", "GENGAR", "RAICHU", - } - ``` - -## Step 3, Game Corner prizes (hand-ported) - -`data/scripts/story3.lua` (~line 209) carries the Red prize tables. -Blue's values (`prizes.asm` + `prize_mon_levels.asm`): - -| Prize | Cost | Level | -| --- | --- | --- | -| ABRA | 120 | 6 | -| CLEFAIRY | 750 | 12 | -| NIDORINO | 1200 | 17 | -| PINSIR | 2500 | 20 | -| DRATINI | 4600 | 24 | -| PORYGON | 6500 | 18 | - -(TM prizes are identical in both versions.) - -## Step 4, verify - -```sh -luajit tests/run_tests.lua -``` - -Plus two spot checks: - -```sh -# every grass table must have exactly 10 slots (a conditional-parsing -# regression shows up as 19–20 slots) -luajit -e 'local e=dofile("data/generated/encounters.lua") -for m,d in pairs(e) do if type(d)=="table" and d.grass and #d.grass.slots>0 - and #d.grass.slots~=10 then print("BAD",m,#d.grass.slots) end end' - -# a Blue exclusive should now appear (and Growlithe should not) -grep -c VULPIX data/generated/encounters.lua -grep -c GROWLITHE data/generated/encounters.lua -``` - -Title screenshot: run the driver in -`tests/drivers/` style (`SHOT_DIR=... POKEPORT_DRIVER=... love .`) and -eyeball the ribbon, title mon, and copyright row. - -## What you get for free / what to skip - -- Free after re-extraction: encounters (incl. Super Rod groups), SGB - palettes, preset names, credits text, the gated sfx/animation - tweaks. -- Trades, gift Pokémon, story scripts, gym data: identical in Western - Red/Blue, nothing to touch. -- Save files: a Red save loads fine, but dex AREA nests and new - encounters will be Blue's. Trainer parties are identical. - -## Making it a runtime toggle instead - -If you want one build with both versions, extraction would need to -emit both branches keyed by version (e.g. `slots` / `slotsBlue`) and -the three hand-ported spots would read a `save.version` or -`conf.lua` flag. That is a bigger change than the rebuild above, -the flip-and-regenerate route needs no engine changes at all. diff --git a/docs/new-features.md b/docs/new-features.md index 2b3b3514..87d5c781 100644 --- a/docs/new-features.md +++ b/docs/new-features.md @@ -259,6 +259,7 @@ stick push hides it, the next screen touch brings it back, and unplugging the last controller restores it immediately. Layout re-derives from the window size on rotation. Desktop testing: `POKEPORT_TOUCH=1 love .` forces the overlay on and lets the mouse act as a finger (`=0` forces it off). + ## Translation support Every string the player can read is now reachable from a mod, so a @@ -344,3 +345,20 @@ quarantine on load; clicking it jumps to the tab holding the first problem. `tools/tiled_export.py` turns the imported ROM cache into a Tiled workspace, so maps can be edited in a real map editor and exported back out as a mod. It has its own document: docs/tiled-map-editing.md. + +## Pokédex diploma (both versions) + +The Celadon Mansion 3F game designer shows the dex-completion diploma +once 150 species are owned. On Yellow, the graphic artist next to him +then offers to print it, saving the certificate as a PNG under `prints/` +in the save directory, and Bill's PC gains Yellow's PRINT BOX item which +exports the current box list the same way. + +## Pokédex printing (Yellow) + +Yellow's Game Boy Printer PRNT option in the Pokédex side menu is stood in +for by an image export: choosing PRNT renders the mon's entry page (sprite, +kind, number, height/weight, dex text) to a PNG at 4x scale under +`prints/` in the save directory, then reports the filename in a dialog. +No printer hardware or link cable emulation involved; the file is the +printout. diff --git a/main.lua b/main.lua index fb846d15..f88a7381 100644 --- a/main.lua +++ b/main.lua @@ -135,10 +135,10 @@ function closeEditor() end local function bootGame(version) - -- The launcher hands us the chosen game (Red / Blue); scripted and headless - -- runs fall back to POKEPORT_VERSION, then Red. Set the active version and - -- overlay its extracted cache BEFORE anything requires generated data, so - -- data/generated + assets/generated resolve to that version's files. + -- The launcher hands us the chosen game (Red / Blue / Yellow); scripted and + -- headless runs fall back to POKEPORT_VERSION, then Red. Set the active + -- version and overlay its extracted cache BEFORE anything requires generated + -- data, so data/generated + assets/generated resolve to that version's files. local GameVersion = require("src.core.GameVersion") GameVersion.set(version or os.getenv("POKEPORT_VERSION") or "red") require("src.import.CacheFs").mountVersion(GameVersion.get()) @@ -231,11 +231,11 @@ function love.load(args) return end - -- Interactive: the launcher always runs. Red and Blue are each live: a - -- column shows Play when that game's ROM is already imported, or Choose ROM - -- / drag-drop when it is not (Yellow is still a placeholder). Any dropped - -- .gb is routed to Red or Blue by its SHA-1; pressing Play boots that game. - -- Edit on a save row opens the bundled editor on that slot (openEditor). + -- Interactive: the launcher always runs. Red, Blue, and Yellow are each + -- live: a column shows Play when that game's ROM is already imported, or + -- Choose ROM / drag-drop when it is not. Any dropped .gb is routed by its + -- SHA-1 (GameVersion.forSha1); pressing Play boots that game. Edit on a + -- save row opens the bundled editor on that slot (openEditor). Importer = RomImporter.new(function(version) Importer = nil bootGame(version) diff --git a/scripts/setup.sh b/scripts/setup.sh index 5c1ae093..c1251b1d 100755 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -1,11 +1,12 @@ #!/usr/bin/env bash -# Build game data from a user-provided Pokemon Red ROM and install LÖVE. +# Build game data from a user-provided Pokemon Red/Blue/Yellow ROM and install LÖVE. # # Usage: # scripts/setup.sh --rom /path/to/pokemon-red.gb +# scripts/setup.sh --rom /path/to/pokemon-yellow.gbc # ROM_PATH=/path/to/pokemon-red.gb scripts/setup.sh # -# With no explicit path, the first *.gb file in the project root is used. +# With no explicit path, the first *.gb / *.gbc file in the project root is used. set -euo pipefail @@ -34,15 +35,17 @@ command -v python3 >/dev/null 2>&1 \ || fail "Python 3 is required to decode the ROM" if [ -z "$ROM" ]; then - for candidate in "$ROOT"/*.gb; do + shopt -s nullglob + for candidate in "$ROOT"/*.gb "$ROOT"/*.gbc; do if [ -f "$candidate" ]; then ROM="$candidate" break fi done + shopt -u nullglob fi [ -n "$ROM" ] && [ -f "$ROM" ] \ - || fail "Pokemon Red ROM not found. Put your .gb file in $ROOT or pass --rom /path/to/file.gb" + || fail "Pokemon ROM not found. Put a .gb or .gbc in $ROOT or pass --rom /path/to/file" if [ ! -x "$VENV/bin/python3" ]; then say "creating Python environment" diff --git a/src/audio/ChipAsm.lua b/src/audio/ChipAsm.lua index 95e14ae5..17faf577 100644 --- a/src/audio/ChipAsm.lua +++ b/src/audio/ChipAsm.lua @@ -22,7 +22,7 @@ local NOTES = { -- mirrors ChipAudio's snapTicks so authored drums land on the same sample -- grid as the ROM's own drum tables local function snapTicks(ticks) - return math.floor((ticks * 735 + 256) / 512) + return math.floor((ticks * 1470 + 256) / 512) end -- ------- validation diff --git a/src/battle/BattleState.lua b/src/battle/BattleState.lua index ad0e5e2d..d636618c 100644 --- a/src/battle/BattleState.lua +++ b/src/battle/BattleState.lua @@ -630,8 +630,22 @@ end -- player mon; the battle menu appears under the OLD MAN's name and a -- scripted cursor hovers FIGHT, hops to ITEM and forces the item menu -- (one POKé BALL x50). The throw always catches; nothing is kept. -function BattleState:makeOldManDemo() +-- Yellow's Pallet intro (BATTLE_TYPE_PIKACHU) is the same simulated +-- script under "PROF.OAK" (pokeyellow core.asm .profOakName), so the +-- displayed thrower name is a parameter. +function BattleState:makeOldManDemo(name) self.demo = true + self.demoName = name or "OLD MAN" + -- Yellow's Pallet intro runs this before the player owns any mon + -- (BATTLE_TYPE_PIKACHU precedes the lab gift), so newWild flagged the + -- battle dead for lack of a party. The demo never sends out, draws, or + -- acts with the player side; a hidden placeholder battler keeps the + -- shared battle phases nil-safe. + if not self.player then + self.dead = false + self.player = makeBattler(self.game.data, + Pokemon.new(self.game.data, self.enemy.mon.species, 5), true) + end end -- Safari Zone battles (engine/battle/core.asm safari sections + @@ -1046,6 +1060,10 @@ function BattleState:computeMusicKind() end end end + -- init_battle.asm: challenging a gym leader (wGymLeaderNo, the badge + -- fights only -- not Lance or the Champion) bumps the companion's + -- happiness the moment the battle starts + self.isGymLeader = isBoss if self.kind == "trainer" and self.trainer and self.trainer.id == "OPP_RIVAL3" then return "final" @@ -1086,6 +1104,10 @@ function BattleState:enter() end local Music = require("src.core.Music") self.musicKind = self:computeMusicKind() + if self.isGymLeader then + require("src.world.PikachuFollower") + .modifyHappiness(self.game.save, "GYMLEADER") + end -- normally already playing: the transition wipe starts the theme -- (audio/play_battle_music.asm runs before the transition, and -- Music.play no-ops on the same song); this covers battles pushed @@ -1711,7 +1733,7 @@ function BattleState:oldManThrow() self.phase = "messages" self.afterQueue = "finish" self.result = "run" -- nothing is kept; wBattleResult only ends the demo - self:say(Strings("OLD MAN used\nPOKé BALL!")) + self:say(Strings("%s used\nPOKé BALL!", self.demoName or "OLD MAN")) self:act(function() require("src.core.Sound").play(self.data, "Ball_Toss") -- ItemUseBall's beat before the toss chain (like throwBall) @@ -2986,6 +3008,17 @@ function BattleState:onFaint(battler) self.participants[battler.mon] = nil end Runtime.emit("battle.fainted", { battle = self, battler = battler }) + if battler.isPlayer then + -- HandlePlayerMonFainted (core.asm:1070-1085): the companion loses + -- happiness on its own faint; an enemy 30+ levels above it makes + -- that the CARELESSTRAINER hit instead + local enemyLevel = self.enemy and self.enemy.mon + and self.enemy.mon.level or 0 + local reason = (enemyLevel - (battler.mon.level or 0)) >= 30 + and "CARELESSTRAINER" or "FAINTED" + require("src.world.PikachuFollower") + .modifyHappiness(self.game.save, reason, battler.mon) + end -- the faint slide + cry ride the queue (after the move animation and -- the HP-bar drain, pokered's order); the slide finishes before the -- faint text via a queued hold @@ -3070,6 +3103,9 @@ function BattleState:enemyMonFainted() -- the move-learn checks (experience.asm:245-256) local game = self.game for _, lv in ipairs(levels) do + -- experience.asm:248 fires per grew-level text + require("src.world.PikachuFollower") + .modifyHappiness(game.save, "LEVELUP", mon) self:sayNext(Strings("%s grew\nto level %d!", name, lv)) self:uiNext(function() require("src.core.Sound").play(game.data, "Level_Up") @@ -3890,7 +3926,10 @@ function BattleState:finish() -- way back -- an unrecoverable state, not merely a wrong one. -- playerMonFainted is the path that should have caught this; if we land -- here it did not, so say so rather than silently papering over it. - if self.result ~= "lose" and not Party.firstHealthy(self.game.save.party) then + -- The old-man / PROF.OAK demo also skips it: the party never fought + -- (Yellow's Pallet intro runs before the player owns a mon at all). + if self.result ~= "lose" and not self.demo + and not Party.firstHealthy(self.game.save.party) then Logger.warn("battle finished %s with no healthy party; forcing blackout", tostring(self.result)) self.result = "lose" @@ -4802,7 +4841,9 @@ function BattleState:drawTextArea() Font.drawCode(Font.BORDER.br, 80, 96) love.graphics.setColor(0, 0, 0, 1) for i, mv in ipairs(self.player.curMoves) do - Font.draw(self.data.moves[mv.id].name, 48, 96 + i * 8) + -- unknown ids (mod-injected moves) print raw instead of crashing + local def = self.data.moves[mv.id] + Font.draw(def and def.name or tostring(mv.id), 48, 96 + i * 8) end Font.drawCode((self.moveSwapIndex == self.moveIndex) and 0xEC or 0xED, 40, 96 + self.moveIndex * 8) @@ -4811,10 +4852,10 @@ function BattleState:drawTextArea() end local sel = self.player.curMoves[self.moveIndex] if sel then + local def = self.data.moves[sel.id] if self.player.disabledSlot == self.moveIndex then Font.draw(Strings("disabled!"), 8, 80) - else - local def = self.data.moves[sel.id] + elseif def then Font.draw(Strings("TYPE/"), 8, 72) -- the type record's display name (a mod type shows its name, and -- PSYCHIC_TYPE prints PSYCHIC like the original) diff --git a/src/core/ChipSynth.lua b/src/core/ChipSynth.lua index 89f004dc..8f095e68 100644 --- a/src/core/ChipSynth.lua +++ b/src/core/ChipSynth.lua @@ -14,15 +14,15 @@ local bit = require("bit") local ChipSynth = {} -local SAMPLE_RATE = 22050 +local SAMPLE_RATE = 44100 local TICKS_PER_SECOND = 15360 local FRAME_TICKS = 256 local GB_CLOCK = 4194304 --- one 4096-sample stereo SoundData is the unit both the worker hands off and +-- one 8192-sample stereo SoundData is the unit both the worker hands off and -- the synchronous fallback queues; the source keeps MUSIC_BUFFER_COUNT of them --- (~6s) for stall tolerance (window resize, a long GC pause) -local MUSIC_BUFFER_SAMPLES = 4096 +-- (~6s at 44100) for stall tolerance (window resize, a long GC pause) +local MUSIC_BUFFER_SAMPLES = 8192 local MUSIC_BUFFER_COUNT = 32 ChipSynth.SAMPLE_RATE = SAMPLE_RATE @@ -33,7 +33,13 @@ local PITCHES = { 0xF82C, 0xF89D, 0xF907, 0xF96B, 0xF9CA, 0xFA23, 0xFA77, 0xFAC7, 0xFB12, 0xFB58, 0xFB9B, 0xFBDA, } -local DUTY = { [0] = 0.125, [1] = 0.25, [2] = 0.5, [3] = 0.75 } +-- LuaGB / DMG 8-step duty tables (index 0-3); stored on channels as that index +local WAVE_PATTERN_TABLES = { + [0] = {0, 0, 0, 0, 0, 0, 0, 1}, + [1] = {1, 0, 0, 0, 0, 0, 0, 1}, + [2] = {1, 0, 0, 0, 0, 1, 1, 1}, + [3] = {0, 1, 1, 1, 1, 1, 1, 0}, +} local WAVE_LEVEL = { [0] = 0, [1] = 1, [2] = 0.5, [3] = 0.25 } local NOISE_DIVISORS = { [0] = 8, [1] = 16, [2] = 32, [3] = 48, @@ -41,7 +47,7 @@ local NOISE_DIVISORS = { } local function snapTicks(ticks) - return math.floor((ticks * 735 + 256) / 512) + return math.floor((ticks * 1470 + 256) / 512) end local cachedProgramFile @@ -143,7 +149,7 @@ function Channel.new(engine, spec, options) speed = 12, volume = 12, fade = 0, - duty = 0.5, + duty = 2, octave = 4, waveInstrument = 0, waveLevel = 1, @@ -317,7 +323,7 @@ function Channel:nextEvent() target = self:frequency(bit.band(packed, 0x0F), octave), } elseif command == 0xEC then - self.duty = DUTY[bit.band(self:byte(), 3)] or 0.5 + self.duty = bit.band(self:byte(), 3) elseif command == 0xED then self.engine.tempo = self:byte() * 0x100 + self:byte() elseif command == 0xEE then @@ -329,10 +335,10 @@ function Channel:nextEvent() elseif command == 0xFC then local packed = self:byte() self.duty = { - DUTY[bit.band(bit.rshift(packed, 6), 3)], - DUTY[bit.band(bit.rshift(packed, 4), 3)], - DUTY[bit.band(bit.rshift(packed, 2), 3)], - DUTY[bit.band(packed, 3)], + bit.band(bit.rshift(packed, 6), 3), + bit.band(bit.rshift(packed, 4), 3), + bit.band(bit.rshift(packed, 2), 3), + bit.band(packed, 3), } elseif command == 0xFD then self.callStack[#self.callStack + 1] = self.address + 2 @@ -423,27 +429,23 @@ function Channel:sampleNoise(parameter) parameter = parameter or 0 local divisor = NOISE_DIVISORS[bit.band(parameter, 7)] local shift = bit.rshift(parameter, 4) - local output = bit.band(self.noiseLfsr, 1) == 0 and 1 or -1 - if shift >= 14 then return output end - local cycles = GB_CLOCK / divisor / (2 ^ shift) / SAMPLE_RATE - local width7 = bit.band(parameter, 8) ~= 0 - local remaining = cycles - local area = 0 - - while remaining > 0 do - local untilClock = 1 - self.noiseClock - local span = math.min(remaining, untilClock) - output = bit.band(self.noiseLfsr, 1) == 0 and 1 or -1 - area = area + output * span - self.noiseClock = self.noiseClock + span - remaining = remaining - span - if self.noiseClock >= 1 - 1e-12 then - self.noiseClock = 0 - self:clockNoise(width7) + if shift < 14 then + local cycles = GB_CLOCK / divisor / (2 ^ shift) / SAMPLE_RATE + local width7 = bit.band(parameter, 8) ~= 0 + local remaining = cycles + while remaining > 0 do + local untilClock = 1 - self.noiseClock + local span = math.min(remaining, untilClock) + self.noiseClock = self.noiseClock + span + remaining = remaining - span + if self.noiseClock >= 1 - 1e-12 then + self.noiseClock = 0 + self:clockNoise(width7) + end end end - - return area / cycles + -- LuaGB: instantaneous inverted LFSR LSB (high when bit0 == 0) + return bit.band(self.noiseLfsr, 1) == 0 and 1 or -1 end local function sweepCalculation(register, sweep) @@ -481,7 +483,7 @@ function Channel:sampleDrum(event, sampleIndex) end local elapsed = (sampleIndex - segment.startSample) / SAMPLE_RATE local volume = envelopeVolume(segment.volume, segment.fade, elapsed) - return self:sampleNoise(segment.parameter) * volume / 15 * 0.35 + return self:sampleNoise(segment.parameter) * volume / 15 end function Channel:sample() @@ -502,7 +504,7 @@ function Channel:sample() local volume = envelopeVolume( event.volume or 0, event.fade or 0, event.elapsed) if event.noise then - return self:sampleNoise(event.noiseParameter) * volume / 15 * 0.35 + return self:sampleNoise(event.noiseParameter) * volume / 15 end local register = event.register @@ -537,13 +539,18 @@ function Channel:sample() -- a def-local program may omit its wave table entirely if not wave then return 0 end local index = math.min(32, math.floor(phase * 32) + 1) - return wave[index] * event.waveLevel * 0.55 + return wave[index] * event.waveLevel end local duty = event.duty if type(duty) == "table" then duty = duty[frame % 4 + 1] end - return (phase < duty and 1 or -1) * volume / 15 * 0.5 + local pattern = WAVE_PATTERN_TABLES[duty or 2] or WAVE_PATTERN_TABLES[2] + local step = math.floor(phase * 8) % 8 + if pattern[step + 1] == 0 then + return -volume / 15 + end + return volume / 15 end local Engine = {} @@ -597,8 +604,8 @@ local function readWaves(banks, audio, engineNumber) for byteIndex = 0, 15 do local packed = romByte( banks, spec.bank, spec.address + wave * 16 + byteIndex) - values[#values + 1] = (bit.rshift(packed, 4) - 7.5) / 7.5 - values[#values + 1] = (bit.band(packed, 0x0F) - 7.5) / 7.5 + values[#values + 1] = (bit.rshift(packed, 4) - 8) / 8 + values[#values + 1] = (bit.band(packed, 0x0F) - 8) / 8 end waves[#waves + 1] = values end @@ -606,8 +613,8 @@ local function readWaves(banks, audio, engineNumber) for byteIndex = 0, 15 do local packed = romByte( banks, spec.bank, spec.address + 5 * 16 + byteIndex) - values[#values + 1] = (bit.rshift(packed, 4) - 7.5) / 7.5 - values[#values + 1] = (bit.band(packed, 0x0F) - 7.5) / 7.5 + values[#values + 1] = (bit.rshift(packed, 4) - 8) / 8 + values[#values + 1] = (bit.band(packed, 0x0F) - 8) / 8 end for _ = 1, 4 do waves[#waves + 1] = values end return waves @@ -615,7 +622,7 @@ end -- def-local waves are authored either as raw 0-15 nibbles (the ROM's own -- units) or as the -1..1 samples readWaves produces; the synth wants the --- latter +-- latter (LuaGB: (nibble - 8) / 8) local function normalizeWaves(source) local waves = {} for index, values in ipairs(source) do @@ -625,7 +632,7 @@ local function normalizeWaves(source) end local wave = {} for position, value in ipairs(values) do - wave[position] = nibbles and (value - 7.5) / 7.5 or value + wave[position] = nibbles and (value - 8) / 8 or value end waves[index] = wave end @@ -690,7 +697,7 @@ end function Engine:sample() local value = 0 for _, channel in ipairs(self.channels) do value = value + channel:sample() end - return math.max(-1, math.min(1, value * 0.5)) + return math.max(-1, math.min(1, value / 4)) end function Engine:sampleStereo() @@ -701,8 +708,8 @@ function Engine:sampleStereo() if not event or event.panLeft ~= false then left = left + value end if not event or event.panRight ~= false then right = right + value end end - return math.max(-1, math.min(1, left * 0.5)), - math.max(-1, math.min(1, right * 0.5)) + return math.max(-1, math.min(1, left / 4)), + math.max(-1, math.min(1, right / 4)) end function Engine:sampleChannel(number) @@ -711,7 +718,7 @@ function Engine:sampleChannel(number) local value = channel:sample() if channel.number == number then selected = value end end - return math.max(-1, math.min(1, selected * 0.5)) + return math.max(-1, math.min(1, selected / 4)) end -- render `samples` frames into a fresh SoundData (mono or stereo). love.sound diff --git a/src/core/Data.lua b/src/core/Data.lua index ed9e4db4..8ca5a734 100644 --- a/src/core/Data.lua +++ b/src/core/Data.lua @@ -85,6 +85,13 @@ function Data:seedDefaults() for key, value in pairs(BOOT_DEFAULTS) do if boot[key] == nil then boot[key] = copy(value) end end + -- Yellow boots its own attract movie (engine/movie/intro_yellow.asm); + -- only the un-overridden default flips, so a total conversion that set + -- field.boot.screens.splash keeps its choice on any version. + if boot.screens.splash == BOOT_DEFAULTS.screens.splash + and require("src.core.GameVersion").isYellow() then + boot.screens.splash = "YellowIntro" + end -- the naming screen presets the importer already extracts but nothing -- ever read (field.presetNames) if boot.namePresets == nil then diff --git a/src/core/Game.lua b/src/core/Game.lua index f0a243d9..22e72772 100644 --- a/src/core/Game.lua +++ b/src/core/Game.lua @@ -90,10 +90,13 @@ function Game:load() self.save.player.x, self.save.player.y, self.save.player.facing) else local titleState = self:makeTitleState() - -- the copyright splash + Nidorino-vs-Gengar attract movie plays - -- before the title (engine/movie/splash.asm + intro.asm); the ids come - -- from field.boot.screens so a total conversion owns the whole boot - Screens.push(self, bootScreens(self).splash or "IntroMovie", function() + -- the copyright splash + attract movie plays before the title + -- (engine/movie/splash.asm + intro.asm; Yellow swaps in its own + -- 18-scene movie, engine/movie/intro_yellow.asm); the ids come from + -- field.boot.screens so a total conversion owns the whole boot + local splash = require("src.core.GameVersion").isYellow() + and "YellowIntro" or "IntroMovie" + Screens.push(self, bootScreens(self).splash or splash, function() StateStack:push(titleState) end) end diff --git a/src/core/GameVersion.lua b/src/core/GameVersion.lua index cef349af..855b632f 100644 --- a/src/core/GameVersion.lua +++ b/src/core/GameVersion.lua @@ -1,12 +1,13 @@ --- Which Gen-1 game this process is running: Red (the historical default) or --- Blue. One source of truth for everything that differs by version -- the --- accepted ROM hash, the import manifest, where the extracted cache lives, --- and the save-file suffix -- so the importer, cache mount, SaveData, title --- screen and palette all agree. +-- Which Gen-1 game this process is running: Red (the historical default), +-- Blue, or Yellow. One source of truth for everything that differs by +-- version -- the accepted ROM hash, the import manifest, where the +-- extracted cache lives, and the save-file suffix -- so the importer, +-- cache mount, SaveData, title screen and palette all agree. -- -- Red keeps every un-suffixed path it always used (save.lua, the root cache), -- so existing installs are untouched; Blue is namespaced under blue/ and --- _blue so both can be imported and played side by side. +-- _blue, Yellow under yellow/ and _yellow, so all three can be imported and +-- played side by side. -- -- Zero requires, so it loads during love.conf and under plain Lua for tools -- and tests. The active version is a process-global set once at boot from @@ -19,6 +20,7 @@ GameVersion.VERSIONS = { id = "red", label = "Red", displayName = "Pokemon Red", + launcherName = "Red", -- game-panel header in the launcher sha1 = "ea9bcae617fdf159b045185467ae58b2e4a48b9a", manifest = "tools/rom_manifest.json", cachePrefix = "", -- Red owns the cache root (backwards compatible) @@ -28,15 +30,26 @@ GameVersion.VERSIONS = { id = "blue", label = "Blue", displayName = "Pokemon Blue", + launcherName = "Blue", sha1 = "d7037c83e1ae5b39bde3c30787637ba1d4c48ce2", manifest = "tools/rom_manifest_blue.json", cachePrefix = "blue/", -- blue/data/generated, blue/assets/generated saveSuffix = "_blue", -- save_blue.lua / .bak / .tmp }, + yellow = { + id = "yellow", + label = "Yellow", + displayName = "Pokemon Yellow", + launcherName = "Yellow (alpha)", + sha1 = "cc7d03262ebfaf2f06772c1a480c7d9d5f4a38e1", + manifest = "tools/rom_manifest_yellow.json", + cachePrefix = "yellow/", -- yellow/data/generated, yellow/assets/generated + saveSuffix = "_yellow", -- save_yellow.lua / .bak / .tmp + }, } --- Launcher column order (Yellow is still a placeholder, handled by the UI). -GameVersion.ORDER = { "red", "blue" } +-- Launcher column order. +GameVersion.ORDER = { "red", "blue", "yellow" } GameVersion.current = "red" @@ -53,6 +66,10 @@ function GameVersion.isBlue() return GameVersion.current == "blue" end +function GameVersion.isYellow() + return GameVersion.current == "yellow" +end + -- Metadata for a version id, defaulting to the active one. function GameVersion.info(id) return GameVersion.VERSIONS[id or GameVersion.current] diff --git a/src/core/Printer.lua b/src/core/Printer.lua new file mode 100644 index 00000000..7fae79a1 --- /dev/null +++ b/src/core/Printer.lua @@ -0,0 +1,44 @@ +-- Game Boy Printer stand-in. Yellow's printer jobs +-- (engine/printer/printer.asm: PrintPokedexEntry and friends) drove a +-- serial thermal printer; this port renders the same printout into a PNG +-- under prints/ in the save directory instead, and the caller shows a +-- dialog with where it landed. Scaled up 4x so the "print" is legible +-- on a modern screen. + +local Logger = require("src.core.Logger") + +local Printer = {} + +local SCALE = 4 + +-- Render drawFn (which draws a w x h GB-pixel image at 0,0) into +-- prints/_.png. Returns the save-dir-relative path, or nil +-- and an error string (headless / no canvas support degrades gracefully). +function Printer.save(name, w, h, drawFn) + if not (love.graphics and love.graphics.newCanvas) then + return nil, "no graphics" + end + local ok, canvas = pcall(love.graphics.newCanvas, w * SCALE, h * SCALE) + if not ok then return nil, tostring(canvas) end + love.graphics.push("all") + love.graphics.setCanvas(canvas) + love.graphics.origin() + love.graphics.scale(SCALE, SCALE) + love.graphics.clear(1, 1, 1, 1) + love.graphics.setColor(1, 1, 1, 1) + local drawOk, drawErr = pcall(drawFn) + love.graphics.pop() + if not drawOk then return nil, tostring(drawErr) end + local data + ok, data = pcall(canvas.newImageData, canvas) + if not ok then return nil, tostring(data) end + love.filesystem.createDirectory("prints") + local path = ("prints/%s_%s.png"):format(name, os.date("%Y-%m-%d_%H%M%S")) + local encOk, err = pcall(data.encode, data, "png", path) + if not encOk then return nil, tostring(err) end + Logger.info("printed %s -> %s/%s", + name, love.filesystem.getSaveDirectory(), path) + return path +end + +return Printer diff --git a/src/core/SaveData.lua b/src/core/SaveData.lua index d8277c9f..3ed802df 100644 --- a/src/core/SaveData.lua +++ b/src/core/SaveData.lua @@ -24,10 +24,11 @@ local GameVersion = require("src.core.GameVersion") local SaveData = {} --- Progress files carry the game-version suffix so Red and Blue saves coexist: --- Red keeps save.lua / .bak / .tmp exactly as before; Blue is save_blue.lua --- (+ .bak/.tmp). options.lua is deliberately shared across versions (it holds --- global preferences and the mod enable-state, not per-playthrough data). +-- Progress files carry the game-version suffix so Red / Blue / Yellow saves +-- coexist: Red keeps save.lua / .bak / .tmp exactly as before; Blue is +-- save_blue.lua and Yellow is save_yellow.lua (+ .bak/.tmp). options.lua is +-- deliberately shared across versions (it holds global preferences and the +-- mod enable-state, not per-playthrough data). local OPTIONS_FILENAME = "options.lua" -- Main / backup / staged-witness names for a version (defaults to the active @@ -323,8 +324,9 @@ end -- under options.saveSlots[version]; the active slot is also cached -- process-wide (like GameVersion.current) so the hot saveNames path does -- not re-read options every call. A false cache entry means "no slot in --- use" and the flat legacy path (save.lua / save_blue.lua) is used, which --- keeps a brand-new install and every pre-slots caller working unchanged. +-- use" and the flat legacy path (save.lua / save_blue.lua / save_yellow.lua) +-- is used, which keeps a brand-new install and every pre-slots caller +-- working unchanged. local activeSlotCache = {} -- version -> slotId in use, or false when none local slotsChecked = {} -- version -> true once resolved this process @@ -336,17 +338,18 @@ local function slotNames(version, id) end -- the pre-slots flat names a version always used (save.lua for Red, --- save_blue.lua for Blue); still the destination before any slot exists +-- save_blue.lua / save_yellow.lua for the others); still the destination +-- before any slot exists local function legacyNames(version) local main = "save" .. GameVersion.saveSuffix(version) .. ".lua" return main, main .. ".bak", main .. ".tmp" end -- Slot resolution is only meaningful for versions GameVersion actually knows --- (red/blue). The launcher also renders a locked placeholder tab ("yellow") --- that has no info entry and therefore no saveSuffix; resolving its legacy --- names would index a nil info table and crash. Treat any unknown version as --- having no slots so the slot APIs degrade to empty/no-op instead. +-- (red / blue / yellow). An unknown id has no info entry and therefore no +-- saveSuffix; resolving its legacy names would index a nil info table and +-- crash. Treat any unknown version as having no slots so the slot APIs +-- degrade to empty/no-op instead. local function knownVersion(version) return GameVersion.info(version) ~= nil end @@ -892,7 +895,7 @@ end) -- a .tmp witness before the swap, so a crash mid-write is recoverable. function SaveData.save(data, mods) -- write to the file matching this save's own version, not just the active - -- one, so a Blue playthrough always lands in save_blue.lua + -- one, so Blue/Yellow playthroughs land in save_blue.lua / save_yellow.lua local FILENAME, BACKUP_FILENAME, TMP_FILENAME = saveNames(data.version) if data.options then SaveData.saveOptions(data.options) diff --git a/src/core/Sound.lua b/src/core/Sound.lua index 328fa8a6..5ef8b754 100644 --- a/src/core/Sound.lua +++ b/src/core/Sound.lua @@ -192,10 +192,45 @@ local function newCrySource(data, species, def) return newFileSource(resolved) end +-- Yellow's voiced Pikachu clips (audio/pikachu_pcm.asm +-- PlayPikachuSoundClip): 1-bit PCM decoded to WAVs at import +-- (data.audio.pikaCries = clip count). Returns the source, nil when the +-- cache carries no clips (Red/Blue) or headless. +function Sound.playPikaCry(data, n) + if not love.audio then return nil end + local count = data.audio and data.audio.pikaCries + if not count then return nil end + n = math.max(1, math.min(count, n or 1)) + local key = "pikacry:" .. n + local src = cache[key] + if src == false then return nil end + if not src then + local ok, s = pcall(love.audio.newSource, + ("assets/generated/audio/pika_cries/cry_%02d.wav"):format(n), "static") + if not ok then + cache[key] = false + return nil + end + s:setVolume(BASE_VOLUME * volumeScale) + cache[key] = s + src = s + end + src:stop() + src:play() + played("cry", "PIKACHU_PCM_" .. n, "PIKACHU") + return src +end + -- returns the source (nil headless) so callers that block on the cry -- like the original's PlayCry -> WaitForSoundToFinish can poll it function Sound.playCry(data, species) if not love.audio then return nil end + -- Yellow voices every Pikachu cry with the PCM clips (the chip cry is + -- never used for the species there); clip 1 is the everyday "Pika!" + if species == "PIKACHU" then + local src = Sound.playPikaCry(data, 1) + if src then return src end + end local cries = data.audio and data.audio.cries local def = cries and cries[species] if not def then return nil end diff --git a/src/import/CacheFs.lua b/src/import/CacheFs.lua index c85ed8d0..2a0e88b9 100644 --- a/src/import/CacheFs.lua +++ b/src/import/CacheFs.lua @@ -32,11 +32,11 @@ local CacheFs = {} local SEP = package.config:sub(1, 1) -- Cache-relative paths are prefixed with this before every read/write, so a --- Blue import lands in blue/ (see src.core.GameVersion) while a Red import --- keeps the historical root. The launcher sets it per import / per readiness --- check; it stays "" for Red. Runtime *reads* (require / newImage) do NOT go --- through here -- CacheFs.mountVersion overlays the active version's subtree --- onto the un-prefixed paths instead. +-- Blue/Yellow import lands under its GameVersion.cachePrefix (blue/, yellow/) +-- while a Red import keeps the historical root. The launcher sets it per +-- import / per readiness check; it stays "" for Red. Runtime *reads* +-- (require / newImage) do NOT go through here -- CacheFs.mountVersion overlays +-- the active version's subtree onto the un-prefixed paths instead. CacheFs.prefix = "" local function withPrefix(rel) @@ -330,16 +330,16 @@ end -- Overlay the active version's extracted cache onto the un-prefixed read -- paths, so require("data.generated.*") and love.graphics.newImage( -- "assets/generated/*") resolve to that version's files. Red lives at the --- cache root and needs nothing; Blue lives under blue/ and is *prepended* so --- it wins over any Red copy at the root and over the game source. Called --- once at boot, before Game:load (main.lua). Returns true when nothing was --- needed or the mount succeeded. +-- cache root and needs nothing; non-Red versions (blue/, yellow/, …) are +-- *prepended* so they win over any Red copy at the root and over the game +-- source. Called once at boot, before Game:load (main.lua). Returns true +-- when nothing was needed or the mount succeeded. function CacheFs.mountVersion(version) local prefix = require("src.core.GameVersion").cachePrefix(version) if prefix == "" then return true end -- Red: already at the root - local sub = prefix:gsub("/+$", "") -- "blue/" -> "blue" + local sub = prefix:gsub("/+$", "") -- "blue/" / "yellow/" -> bare dir -- The cache root is the portable game folder when active, else LÖVE's OS - -- save directory (where love.filesystem wrote blue/...). + -- save directory (where love.filesystem wrote blue/... or yellow/...). local base = CacheFs.root() if not base and love.filesystem.getSaveDirectory then base = love.filesystem.getSaveDirectory() @@ -355,12 +355,12 @@ function CacheFs.mountVersion(version) end -- Undo mountVersion. A process normally mounts exactly one version and then --- boots it, but the launcher can open the save editor on a Blue save, close --- it, and press Play on Red: with blue/ still prepended, Red's --- require("data.generated.*") and its generated art would silently resolve to --- Blue's files. Callers must also drop the generated modules from --- package.loaded (src.core.Data:unloadGenerated) -- unmounting alone only --- fixes the read path, not what require already cached. +-- boots it, but the launcher can open the save editor on a Blue/Yellow save, +-- close it, and press Play on Red: with that version's subtree still +-- prepended, Red's require("data.generated.*") and its generated art would +-- silently resolve to the other game's files. Callers must also drop the +-- generated modules from package.loaded (src.core.Data:unloadGenerated) -- +-- unmounting alone only fixes the read path, not what require already cached. -- -- Returns true when nothing was mounted or the unmount took. Red is a no-op -- because its cache lives at the root and was never overlaid. diff --git a/src/import/RomExtractor.lua b/src/import/RomExtractor.lua index 6b3c3a21..c28c0d69 100644 --- a/src/import/RomExtractor.lua +++ b/src/import/RomExtractor.lua @@ -163,8 +163,12 @@ function RomExtractor:extractTilesets() for pos = offset, offset + 15 do block[#block + 1] = blocksRaw[pos] end blocks[#blocks + 1] = block end + -- Red/Blue keep collision lists in ROM0; Yellow moved them to bank 1 + -- (pokeyellow Overworld_Coll at 01:4ac2). Pointers in $4000-$7FFF are + -- banked; treat ROM0-range pointers as bank 0. + local collBank = collisionPointer < 0x4000 and 0 or 1 local walkable = sorted(self:readTerminated( - 0, collisionPointer, 0xFF)) + collBank, collisionPointer, 0xFF)) local warpPointer = self.rom:word( warpPointers.bank, warpPointers.address + (index - 1) * 2) local warpTiles = unique(self:readTerminated( @@ -447,14 +451,26 @@ function RomExtractor:extractSprites() local pointer = self.rom:word(pointerTable.bank, address) local firstHalf = self.rom:byte(pointerTable.bank, address + 2) local bank = self.rom:byte(pointerTable.bank, address + 3) - local byteLength = spec.imageWidth * spec.imageHeight / 4 - local frames = spec.imageHeight / 16 + local width = spec.imageWidth + local height = spec.imageHeight + local byteLength = width * height / 4 + local frames = height / 16 local expected = firstHalf * (frames >= 6 and 2 or 1) - assert(byteLength == expected, constName .. ": sprite length mismatch") + if byteLength ~= expected then + -- Commercial ROM sheet length wins over pret PNG atlases (Yellow nurse + -- PNG is taller than the 12-tile SpriteSheetPointerTable entry). + byteLength = expected + assert(byteLength * 4 % width == 0, + constName .. ": ROM sprite length not tile-aligned") + height = byteLength * 4 / width + frames = height / 16 + expected = firstHalf * (frames >= 6 and 2 or 1) + assert(byteLength == expected, constName .. ": sprite length mismatch") + end local base = spec.imageBase if not written[base] then self:write2bpp(self.rom:bytes(bank, pointer, byteLength), - spec.imageWidth, spec.imageHeight, + width, height, "sprites/" .. base .. ".png", true) written[base] = true end @@ -862,20 +878,24 @@ function RomExtractor:extractPalettes() local order = self.manifest.paletteOrder local paletteTable = self:symbol("SuperPalettes") local function scale5(value) return round(value * 255 / 31) end - local palettes = {} - for index, name in ipairs(order) do - local colors = {} - for color = 0, 3 do - local value = self.rom:word(paletteTable.bank, - paletteTable.address + (index - 1) * 8 + color * 2) - colors[#colors + 1] = { - scale5(bit.band(value, 0x1F)), - scale5(bit.band(bit.rshift(value, 5), 0x1F)), - scale5(bit.band(bit.rshift(value, 10), 0x1F)), - } + local function readTable(symbol, names) + local out = {} + for index, name in ipairs(names) do + local colors = {} + for color = 0, 3 do + local value = self.rom:word(symbol.bank, + symbol.address + (index - 1) * 8 + color * 2) + colors[#colors + 1] = { + scale5(bit.band(value, 0x1F)), + scale5(bit.band(bit.rshift(value, 5), 0x1F)), + scale5(bit.band(bit.rshift(value, 10), 0x1F)), + } + end + out[name] = colors end - palettes[name] = colors + return out end + local palettes = readTable(paletteTable, order) local monsterTable = self:symbol("MonsterPalettes") local monsterPalettes = {} for index, species in ipairs(self.manifest.dexOrder) do @@ -887,6 +907,11 @@ function RomExtractor:extractPalettes() source = "ROM:SuperPalettes + MonsterPalettes", palettes = palettes, order = order, pokemon = monsterPalettes, } + -- Yellow (and GBC carts) also carry CGBBasePalettes beside SuperPalettes. + if self.symbols["CGBBasePalettes"] then + data.cgbBase = readTable(self:symbol("CGBBasePalettes"), order) + data.source = data.source .. " + CGBBasePalettes" + end self:write("palettes", data) self:tick("Color palettes", 1, 1) return data @@ -915,6 +940,10 @@ function RomExtractor:extractIcons() GRASS = "assets/generated/icons/plant.png", SNAKE = "assets/generated/icons/snake.png", QUADRUPED = "assets/generated/icons/quadruped.png", + -- Yellow's ICON_PIKACHU draws from the overworld PikachuSprite sheet + -- (data/icon_pointers.asm mon_icon_header PikachuSprite, 0/12); + -- only referenced when the manifest's iconOrder includes it + PIKACHU = "assets/generated/sprites/pikachu.png", } local frames = { { "bug", "BugIconFrame1", "BugIconFrame2" }, @@ -1048,7 +1077,9 @@ function RomExtractor:extractPokemon() local typeById = self:typesById() local names = self:symbol("MonsterNames") local baseStats = self:symbol("BaseStats") - local mewStats = self:symbol("MewBaseStats") + -- Red/Blue keep Mew outside BaseStats (pret pokered MewBaseStats). + -- Yellow stores Mew as dex 151 inside BaseStats (pret/pokeyellow). + local mewStats = self.symbols["MewBaseStats"] and self:symbol("MewBaseStats") local decodedNames = {} for index = 1, #speciesOrder do decodedNames[index] = self.rom:decodeText( @@ -1067,7 +1098,7 @@ function RomExtractor:extractPokemon() local dex = assert(dexBySpecies[species], "missing dex number for " .. species) local row - if species == "MEW" then + if species == "MEW" and mewStats then row = self.rom:bytes(mewStats.bank, mewStats.address, 28) else row = self.rom:bytes( @@ -1410,6 +1441,142 @@ function RomExtractor:extractText() } end +function RomExtractor:extractYellowTitleArt() + -- pret/pokeyellow engine/movie/title_yellow.asm: the Yellow title is a + -- tilemap composition over BOTH tile banks. LoadYellowTitleScreenGFX + -- loads PokemonLogoGraphics into vChars2 (BG ids $00-$7F), + -- TitlePikachuBGGraphics into vChars1 (ids $80-$EF), + -- TitlePikachuOBGraphics at vChars1 tile $70 (ids $F0-$FC, also the eye + -- OAM tiles), and PokemonLogoCornerGraphics at vChars1 tile $7D (ids + -- $FD-$FF). Every tilemap mixes ids from several of those sheets, so a + -- single-sheet lookup shows checkerboard garbage where a foreign-bank id + -- lands (e.g. blank id $00 = logo tile 0, not Pikachu BG tile 0). + if not self.symbols["TitlePikachuBGGraphics"] then return end + -- raw sheets, kept for debugging / mod reference + self:raw2bpp("TitlePikachuBGGraphics", 128, 32, + "title/pikachu_bg.png", { transparent = true }) + self:raw2bpp("TitlePikachuOBGraphics", 96, 8, + "title/pikachu_ob.png", { transparent = true }) + + -- Tile counts are the Graphics..GraphicsEnd symbol gaps in pokeyellow.sym. + local function sheetTiles(label, count, transparent) + local symbol = self:symbol(label) + local raw = self.rom:bytes(symbol.bank, symbol.address, count * 16) + local tiles = {} + for offset = 1, #raw, 16 do + local one = {} + for i = offset, offset + 15 do one[#one + 1] = raw[i] end + tiles[#tiles + 1] = ImageWriter.decode2bpp(one, 8, 8, transparent) + end + return tiles + end + local logo = sheetTiles("PokemonLogoGraphics", 115) + local corner = sheetTiles("PokemonLogoCornerGraphics", 3) + local bg = sheetTiles("TitlePikachuBGGraphics", 64) + local ob = sheetTiles("TitlePikachuOBGraphics", 12) + local obClear = sheetTiles("TitlePikachuOBGraphics", 12, true) + local function tileFor(id) + if id < 0x80 then return logo[id + 1] end + if id < 0xF0 then return bg[id - 0x80 + 1] end + if id < 0xFD then return ob[id - 0xF0 + 1] end + return corner[id - 0xFD + 1] + end + -- OAM-style blit: color-0 pixels stay whatever the target already holds + -- (ImageWriter.blit copies alpha-0 pixels wholesale, which would punch + -- holes into the face under the eye sprites). + local function blitSprite(target, tile, tx, ty, flipX) + for y = 0, 7 do + for x = 0, 7 do + local sx = flipX and 7 - x or x + local r, g, b, a = tile:getPixel(sx, y) + if a ~= 0 then target:setPixel(tx + x, ty + y, r, g, b, a) end + end + end + end + -- cells = { {id, col, row}, ... }; untouched cells stay transparent + local function compose(cols, rows, cells) + local pose = ImageWriter.blank(cols * 8, rows * 8, 1, 1, 1, 0) + for _, cell in ipairs(cells) do + local tile = tileFor(cell[1]) + if tile then ImageWriter.blit(pose, tile, cell[2] * 8, cell[3] * 8) end + end + return pose + end + local function mapCells(map, cols, rows) + local ids = self.rom:bytes(map.bank, map.address, cols * rows) + local cells = {} + for index, id in ipairs(ids) do + cells[#cells + 1] = + { id, (index - 1) % cols, math.floor((index - 1) / cols) } + end + return cells + end + + -- TitleScreen_PlacePokemonLogo: 16x7 box at (2,1). Yellow's logo sheet + -- is deduplicated (unlike Red's sequential rip), so the raw2bpp + -- pokemon_logo.png from extractField is scrambled; overwrite it with the + -- tilemap composition. Kept opaque: TitleState clears to white behind it. + self:save(compose(16, 7, + mapCells(self:symbol("TitleScreenPokemonLogoTilemap"), 16, 7)), + "title/pokemon_logo.png") + + -- TitleScreen_PlacePikaSpeechBubble: 7x4 box at (6,4) plus the two tail + -- tiles $64/$65 the routine pokes at (9,8) -- one row below the box, over + -- blank cells of the Pikachu row. Composed 7x5 with the tail at (3,4); + -- matteColor0 clears the outside-the-balloon whites, the outline protects + -- the interior. + local bubbleCells = mapCells( + self:symbol("TitleScreenPikaBubbleTilemap"), 7, 4) + bubbleCells[#bubbleCells + 1] = { 0x64, 3, 4 } + bubbleCells[#bubbleCells + 1] = { 0x65, 4, 4 } + self:save(ImageWriter.matteColor0(compose(7, 5, bubbleCells)), + "title/pika_bubble.png") + + -- TitleScreen_PlacePikachu: 12x9 box at (4,8) plus the right-ear edge + -- tiles it pokes down column 16 (rows 10-13) -- composed 13x9 with those + -- at relative column 12, rows 2-5. The open eyes are OAM + -- (TitleScreenPikachuEyesOAMData, copied at place time): OB tiles 0-3 at + -- screen (56,80)/(88,80) blocks, the left eye x-flipped (attr $22); baked + -- into the composition relative to the box origin px(32,64). + local pikaCells = mapCells(self:symbol("TitleScreenPikachuTilemap"), 12, 9) + pikaCells[#pikaCells + 1] = { 0x96, 12, 2 } + pikaCells[#pikaCells + 1] = { 0x9d, 12, 3 } + pikaCells[#pikaCells + 1] = { 0xa7, 12, 4 } + pikaCells[#pikaCells + 1] = { 0xb1, 12, 5 } + local pikachu = ImageWriter.matteColor0(compose(13, 9, pikaCells)) + -- DoTitleScreenFunction's blink rewrites the eye OAM tile ids with + -- `and $f3 / or e` (e = 0 open / 4 half / 8 closed), so the OB sheet + -- holds three 4-tile eye sets. Bake the open set into pikachu.png and + -- save half/closed as standalone overlays for TitleState's blink. + local EYE_LAYOUT = { + { 2, 24, 16, true }, { 1, 32, 16, true }, + { 4, 24, 24, true }, { 3, 32, 24, true }, + { 1, 56, 16 }, { 2, 64, 16 }, + { 3, 56, 24 }, { 4, 64, 24 }, + } + -- Blink overlays for the (24,16)-(71,31) eye band: the BG face is + -- eyeless (the eyes are OAM), so each overlay = the blank-face crop + -- with the half (+4) / closed (+8) tile set composited color-0 + -- transparent -- exactly what the hardware shows mid-blink. + local overlays = {} + for suffix, base in pairs({ eyes_half = 4, eyes_closed = 8 }) do + local overlay = ImageWriter.blank(48, 16, 1, 1, 1, 0) + ImageWriter.blit(overlay, pikachu, 0, 0, 24, 16, 48, 16) + for _, e in ipairs(EYE_LAYOUT) do + blitSprite(overlay, obClear[base + e[1]], e[2] - 24, e[3] - 16, e[4]) + end + overlays[suffix] = overlay + end + -- open eyes bake into pikachu.png AFTER the blank-face crops + for _, e in ipairs(EYE_LAYOUT) do + blitSprite(pikachu, obClear[e[1]], e[2], e[3], e[4]) + end + self:save(pikachu, "title/pikachu.png") + for suffix, overlay in pairs(overlays) do + self:save(overlay, "title/" .. suffix .. ".png") + end +end + function RomExtractor:raw2bpp(label, width, height, relative, options) options = options or {} local expected = width * height / 4 @@ -1454,6 +1621,8 @@ function RomExtractor:extractField() "title/copyright.png"); tick() self:raw2bpp("GameFreakLogoGraphics", 72, 8, "title/gamefreak_inc.png"); tick() + -- Yellow fixed Pikachu title art (no-op on Red/Blue manifests). + self:extractYellowTitleArt(); tick() local fallingStar = self:raw2bpp( "FallingStar", 8, 8, "intro/falling_star.png", @@ -1502,35 +1671,71 @@ function RomExtractor:extractField() end self:save(star, "intro/big_star.png"); tick() - local gengar = self:symbol("FightIntroBackMon") - local gengarRaw = self.rom:bytes( - gengar.bank, gengar.address, 96 * 16) - local gengarTiles = {} - for offset = 1, #gengarRaw, 16 do - local raw = {} - for index = offset, offset + 15 do raw[#raw + 1] = gengarRaw[index] end - gengarTiles[#gengarTiles + 1] = ImageWriter.decode2bpp(raw, 8, 8) - end - for number = 1, 3 do - local tilemap = self:symbol("GengarIntroTiles" .. number) - local tileIds = self.rom:bytes(tilemap.bank, tilemap.address, 49) - local pose = ImageWriter.blank(56, 56, 0, 0, 0, 0) - for index, tileId in ipairs(tileIds) do - ImageWriter.blit(pose, gengarTiles[tileId + 1], - (index - 1) % 7 * 8, math.floor((index - 1) / 7) * 8) + -- Yellow has no FightIntro Gengar/Nidorino fight (pret/pokeyellow + -- engine/movie/intro_yellow.asm); write blank placeholders so Title/ + -- Intro still find the expected paths. Red/Blue keep the tilemap rip. + if self.symbols["FightIntroBackMon"] then + local gengar = self:symbol("FightIntroBackMon") + local gengarRaw = self.rom:bytes( + gengar.bank, gengar.address, 96 * 16) + local gengarTiles = {} + for offset = 1, #gengarRaw, 16 do + local raw = {} + for index = offset, offset + 15 do raw[#raw + 1] = gengarRaw[index] end + gengarTiles[#gengarTiles + 1] = ImageWriter.decode2bpp(raw, 8, 8) + end + for number = 1, 3 do + local tilemap = self:symbol("GengarIntroTiles" .. number) + local tileIds = self.rom:bytes(tilemap.bank, tilemap.address, 49) + local pose = ImageWriter.blank(56, 56, 0, 0, 0, 0) + for index, tileId in ipairs(tileIds) do + ImageWriter.blit(pose, gengarTiles[tileId + 1], + (index - 1) % 7 * 8, math.floor((index - 1) / 7) * 8) + end + pose = ImageWriter.matteColor0(pose) + self:save(pose, "intro/gengar_" .. number .. ".png"); tick() + end + else + for number = 1, 3 do + self:save(ImageWriter.blank(56, 56, 0, 0, 0, 0), + "intro/gengar_" .. number .. ".png"); tick() end - pose = ImageWriter.matteColor0(pose) - self:save(pose, "intro/gengar_" .. number .. ".png"); tick() end - for number, label in ipairs({ - "FightIntroFrontMon", "FightIntroFrontMon2", "FightIntroFrontMon3", - }) do - self:raw2bpp(label, 48, 48, - "intro/red_nidorino_" .. number .. ".png", - { transparent = true, columns = true }) - tick() + if self.symbols["FightIntroFrontMon"] then + for number, label in ipairs({ + "FightIntroFrontMon", "FightIntroFrontMon2", "FightIntroFrontMon3", + }) do + self:raw2bpp(label, 48, 48, + "intro/red_nidorino_" .. number .. ".png", + { transparent = true, columns = true }) + tick() + end + else + for number = 1, 3 do + self:save(ImageWriter.blank(48, 48, 1, 1, 1, 0), + "intro/red_nidorino_" .. number .. ".png"); tick() + end end + + -- Optional Yellow-only intro atlas (pret/pokeyellow gfx/yellow_intro.asm). + if self.symbols["YellowIntroGraphics1"] then + self:raw2bpp("YellowIntroGraphics1", 128, 64, + "intro/yellow_intro_1.png") + end + if self.symbols["YellowIntroGraphics2"] then + -- atlas2 doubles as the intro's OBJ tile bank (vChars0); OBJ color 0 + -- is hardware-transparent, and the BG draws it over a white clear so + -- BG cells lose nothing + self:raw2bpp("YellowIntroGraphics2", 128, 128, + "intro/yellow_intro_2.png", { transparent = true }) + end + -- Yellow intro clouds (intro_yellow.asm YellowIntroCloudGFX): 8 tiles, + -- two 4-tile animation frames -- saved 32x16, one frame per row. + if self.symbols["YellowIntroCloudGFX"] then + self:raw2bpp("YellowIntroCloudGFX", 32, 16, "intro/clouds.png") + end + for number = 1, 2 do self:writeCompressedPic( "ShrinkPic" .. number, "intro/shrink" .. number .. ".png") @@ -1563,10 +1768,27 @@ function RomExtractor:extractField() end self:save(symbolSheet, "slots/symbols.png"); tick() - local emotes = ImageWriter.blank(48, 16, 1, 1, 1, 0) - for index, label in ipairs({ - "ShockEmote", "QuestionEmote", "HappyEmote", - }) do + -- Emote sheet layout comes from manifest.field.emotionBubbles so the + -- versions can differ: Red ships the three shared bubbles, Yellow adds + -- the five Pikachu-only ones (emotion_bubbles.asm Skull/Heart/Bolt/ + -- Zzz/FishEmote, used by the PikachuEmotionTable reactions). + local EMOTE_SYMBOLS = { + EXCLAMATION_BUBBLE = "ShockEmote", QUESTION_BUBBLE = "QuestionEmote", + SMILE_BUBBLE = "HappyEmote", SKULL_BUBBLE = "SkullEmote", + HEART_BUBBLE = "HeartEmote", BOLT_BUBBLE = "BoltEmote", + ZZZ_BUBBLE = "ZzzEmote", FISH_BUBBLE = "FishEmote", + } + local bubbleDefs = self.manifest.field.emotionBubbles + and self.manifest.field.emotionBubbles.bubbles + local emoteLabels = {} + for _, b in ipairs(bubbleDefs or {}) do + emoteLabels[#emoteLabels + 1] = EMOTE_SYMBOLS[b.name] + end + if #emoteLabels == 0 then + emoteLabels = { "ShockEmote", "QuestionEmote", "HappyEmote" } + end + local emotes = ImageWriter.blank(#emoteLabels * 16, 16, 1, 1, 1, 0) + for index, label in ipairs(emoteLabels) do local symbol = self:symbol(label) local image = ImageWriter.decode2bpp( self.rom:bytes(symbol.bank, symbol.address, 64), 16, 16, true) @@ -1574,6 +1796,26 @@ function RomExtractor:extractField() end self:save(emotes, "emotes.png"); tick() + -- Yellow-only: the Surfing Pikachu minigame sheets + -- (gfx/surfing_pikachu.asm) at pret's canvas widths, so + -- src/ui/SurfingMinigame.lua's quads can be read off the source pngs. + -- 1a is the BG set (water/beach/score tiles, opaque); 1b the OAM pose + -- sheet and 1c the intro set (both color-0 transparent). + for _, spec in ipairs({ + { "SurfingPikachu1Graphics1", 65, 40, false, "minigame/surf_1a.png" }, + { "SurfingPikachu1Graphics2", 256, 128, true, "minigame/surf_1b.png" }, + { "SurfingPikachu1Graphics3", 144, 96, true, "minigame/surf_1c.png" }, + }) do + if self.symbols[spec[1]] then + local symbol = self:symbol(spec[1]) + local tilesPerRow = spec[3] / 8 + local image = ImageWriter.decode2bpp( + self.rom:bytes(symbol.bank, symbol.address, spec[2] * 16), + spec[3], spec[2] / tilesPerRow * 8, spec[4]) + self:save(image, spec[5]) + end + end + self:raw1bpp("LedgeHoppingShadow", 8, 8, "fx/shadow.png", true); tick() for _, spec in ipairs({ @@ -1664,7 +1906,9 @@ end function RomExtractor:extractAudio() self:beginStage("Sound programs") local metadata = copy(self.manifest.audio) - local bankOrder = { 2, 8, 31 } + -- Yellow adds a fourth music bank ($20: Jessie & James, Surfing + -- Pikachu, GB Printer); the manifest names the pack when it needs it. + local bankOrder = metadata.programBanks or { 2, 8, 31 } local chunks = {} for index, bank in ipairs(bankOrder) do local first = Rom.offset(bank, 0x4000) + 1 @@ -1683,6 +1927,7 @@ function RomExtractor:extractAudio() for name, header in pairs(metadata.musicHeaders) do songs[name] = header end + metadata.pikaCries = self:extractPikachuCries() local cries = {} local cryData = metadata.cryData for index, species in ipairs(self.manifest.constants.speciesOrder) do @@ -1709,6 +1954,57 @@ function RomExtractor:extractAudio() return metadata end +-- Yellow's voiced Pikachu clips (audio/pikachu_cries_pointers.asm +-- PikachuCriesPointerTable, 42 `dba` rows; each clip is `dw length` then +-- 1-bit PCM, MSB first -- home/pikachu_cries.asm PlayPikachuPCM toggles +-- rAUD3LEVEL per bit at roughly 190 CPU cycles a sample). Decoded to +-- plain 8-bit mono WAVs; returns the clip count for data.audio.pikaCries, +-- or nil when the manifest has no pointer table (Red/Blue). +function RomExtractor:extractPikachuCries() + if not self.symbols["PikachuCriesPointerTable"] then return nil end + local NUM = 42 -- NUM_PIKA_CRIES + local RATE = 22050 -- ~4.19 MHz / ~190 cycles per sample + -- byte -> 8 samples, MSB first (LoadNextSoundClipSample: `and $80`) + local lut = {} + for byte = 0, 255 do + local out = {} + for bit = 7, 0, -1 do + local on = math.floor(byte / 2 ^ bit) % 2 == 1 + out[#out + 1] = string.char(on and 0xE0 or 0x20) + end + lut[byte] = table.concat(out) + end + local function u16(v) + return string.char(v % 256, math.floor(v / 256) % 256) + end + local function u32(v) + return string.char(v % 256, math.floor(v / 256) % 256, + math.floor(v / 65536) % 256, math.floor(v / 16777216) % 256) + end + local CacheFs = require("src.import.CacheFs") + local pointers = self:symbol("PikachuCriesPointerTable") + for index = 0, NUM - 1 do + local row = self.rom:bytes(pointers.bank, pointers.address + index * 3, 3) + local bank, address = row[1], row[2] + row[3] * 256 + local header = self.rom:bytes(bank, address, 2) + local length = header[1] + header[2] * 256 + local raw = self.rom:bytes(bank, address + 2, length) + local samples = {} + for i, byte in ipairs(raw) do samples[i] = lut[byte] end + local pcm = table.concat(samples) + local wav = "RIFF" .. u32(36 + #pcm) .. "WAVEfmt " .. u32(16) + .. u16(1) .. u16(1) .. u32(RATE) .. u32(RATE) .. u16(1) .. u16(8) + .. "data" .. u32(#pcm) .. pcm + local ok, err = CacheFs.write( + ("assets/generated/audio/pika_cries/cry_%02d.wav"):format(index + 1), + wav) + if not ok then + error("could not write pika cry " .. (index + 1) .. ": " .. tostring(err)) + end + end + return NUM +end + function RomExtractor:run() local results = {} results.constants = self:extractConstants() diff --git a/src/import/RomImporter.lua b/src/import/RomImporter.lua index 99618938..38fcab47 100644 --- a/src/import/RomImporter.lua +++ b/src/import/RomImporter.lua @@ -37,8 +37,8 @@ local REQUIRED_FILES = { -- "Split-screen ROM selector" first-run palette (matches FirstRun.dc.html from -- the Claude Design project): a dark neon arcade panel, one column per game. --- Red is live; Blue and Yellow are lit placeholders until those games are --- supported. Values are 0-255 RGB; alpha is applied per draw. +-- Red, Blue, and Yellow share the same importer flow once listed in +-- GameVersion.VERSIONS. Values are 0-255 RGB; alpha is applied per draw. local PAL = { -- radial background gradient (bright navy at top-centre -> near black) bgTop = { 22, 34, 74 }, -- #16224a @@ -302,13 +302,13 @@ end -- it directly through love.filesystem -- already mounted at the physfs -- root, so no io.* absolute-path handling is needed. -- --- Only a .gb whose SHA maps to a version that is not yet ready counts as +-- Only a .gb/.gbc whose SHA maps to a version that is not yet ready counts as -- pending. GameActivity always writes the SAF pick to picked_rom.gb, so a --- naive "first .gb wins" scan would re-import Red when the player tries to --- add Blue (issue #167). +-- naive "first ROM wins" scan would re-import Red when the player tries to +-- add Blue (issue #167). Yellow carts are typically .gbc. local function findPendingRom(ready) for _, name in ipairs(love.filesystem.getDirectoryItems("")) do - if name:lower():match("%.gb$") and love.filesystem.getInfo(name, "file") then + if name:lower():match("%.gbc?$") and love.filesystem.getInfo(name, "file") then local data = love.filesystem.read(name) if type(data) == "string" and #data == 1024 * 1024 then local version = GameVersion.forSha1(sha1(data)) @@ -360,14 +360,14 @@ local function chooseRom(promptName) local platform = love.system.getOS() if platform == "OS X" then return commandOutput( - ([[osascript -e 'POSIX path of (choose file with prompt "%s" of type {"gb"})' 2>/dev/null]]) + ([[osascript -e 'POSIX path of (choose file with prompt "%s" of type {"gb", "gbc"})' 2>/dev/null]]) :format(prompt)) elseif platform == "Windows" then local script = table.concat({ "Add-Type -AssemblyName System.Windows.Forms;", "$d=New-Object System.Windows.Forms.OpenFileDialog;", "$d.Title='" .. prompt .. "';", - "$d.Filter='Game Boy ROM (*.gb)|*.gb|All files (*.*)|*.*';", + "$d.Filter='Game Boy ROM (*.gb;*.gbc)|*.gb;*.gbc|All files (*.*)|*.*';", -- write the pick as UTF-8: the console's OEM codepage would mangle -- non-ASCII names (Pokémon -> Pok\x82mon) and crash any text draw -- that shows them (#325) @@ -377,11 +377,11 @@ local function chooseRom(promptName) 'powershell -NoProfile -STA -Command "' .. script .. '"') elseif platform == "Linux" then local path = commandOutput( - ([[zenity --file-selection --title="%s" --file-filter="Game Boy ROM | *.gb" 2>/dev/null]]) + ([[zenity --file-selection --title="%s" --file-filter="Game Boy ROM | *.gb *.gbc" 2>/dev/null]]) :format(prompt)) if path then return path end return commandOutput( - [[kdialog --getopenfilename "$HOME" "*.gb|Game Boy ROM" 2>/dev/null]]) + [[kdialog --getopenfilename "$HOME" "*.gb *.gbc|Game Boy ROM" 2>/dev/null]]) end return nil end @@ -470,10 +470,11 @@ local function updaterAllowed() return true end --- The launcher runs Red and Blue as two independent columns. Each dropped or +-- The launcher runs each GameVersion as an independent tab. Each dropped or -- chosen ROM is routed to its version by SHA-1, extracted into that version's --- own cache (Red at the root, Blue under blue/), so both can be imported and --- played side by side. onComplete(version) hands the chosen game off to boot. +-- own cache (Red at the root, Blue under blue/, Yellow under yellow/), so all +-- can be imported and played side by side. onComplete(version) hands the +-- chosen game off to boot. -- opts: launcher (a fresh import stays on the launcher instead of auto-booting), -- forceImport (treat every version as not-yet-imported, so re-import is forced), -- onEditSave(version, slotId) (host handler for the Edit affordance on a save @@ -542,13 +543,18 @@ function RomImporter.new(onComplete, opts) CacheFs.prefix = saved self.returning[version] = (not ready) and marker ~= nil and marker ~= markerFor(version) - self.romName[version] = "pokemon_" .. info.id .. ".gb" + self.romName[version] = "pokemon_" .. info.id + .. (info.id == "yellow" and ".gbc" or ".gb") end - -- Android: import a save-dir .gb that is not yet ready (USB drop or a + -- Android: import a save-dir .gb/.gbc that is not yet ready (USB drop or a -- leftover SAF pick), routed by SHA-1. Already-imported carts are skipped - -- so a stale picked_rom.gb cannot block the opposite version. - if android and not (self.ready.red and self.ready.blue) then + -- so a stale picked_rom.gb cannot block another version. + local needRom = false + for _, version in ipairs(GameVersion.ORDER) do + if not self.ready[version] then needRom = true; break end + end + if android and needRom then local name, data = findPendingRom(self.ready) if name then self:startData(data, name) end end @@ -608,7 +614,7 @@ function RomImporter:focus(f) local version = self.androidPendingExportVersion or self:_savedropTarget() self.androidPendingExportVersion = nil self.saveNotice[version] = { ok = true, text = "Save exported." } - if self.tab == "mods" or self.tab == "yellow" then self.tab = version end + if self.tab == "mods" then self.tab = version end return end local modName = findPendingMod(false) @@ -629,9 +635,13 @@ function RomImporter:focus(f) end return end - if self.ready.red and self.ready.blue then return end - local name, data = findPendingRom(self.ready) - if name then self:startData(data, name) end + for _, v in ipairs(GameVersion.ORDER) do + if not self.ready[v] then + local name, data = findPendingRom(self.ready) + if name then self:startData(data, name) end + return + end + end end function RomImporter:setError(message, version) @@ -660,7 +670,8 @@ local function resetPointerCursor(self) end -- Verify + extract a ROM. The version is decided by the ROM's own SHA-1, so --- dropping a Red or Blue cart into either column always lands in the right one. +-- dropping a Red, Blue, or Yellow cart into any column always lands in the +-- right one. function RomImporter:startData(data, displayName) if self.workState == "working" then return end if type(data) ~= "string" then @@ -676,14 +687,14 @@ function RomImporter:startData(data, displayName) local version = GameVersion.forSha1(actualHash) if not version then self:setError(("Unsupported ROM (SHA-1 %s). Use an unmodified US Pokemon " - .. "Red or Blue ROM."):format(actualHash)) + .. "Red, Blue, or Yellow ROM."):format(actualHash)) return end local info = GameVersion.info(version) -- Bring the launcher to this version's tab so its progress bar is on screen -- (a dropped cart is routed by SHA-1 regardless of which tab was showing). - if self.tab == "red" or self.tab == "blue" or self.tab == "yellow" then + if GameVersion.VERSIONS[self.tab] then self.tab = version end self.importing = version @@ -731,7 +742,7 @@ function RomImporter:startData(data, displayName) self.returning[version] = false self.romName[version] = (displayName and (displayName:match("[^/\\]+$") or displayName)) or self.romName[version] - -- Android: drop the consumed save-dir .gb (picked_rom.gb or a USB copy) + -- Android: drop the consumed save-dir .gb/.gbc (picked_rom.gb or a USB copy) -- so the next Choose / focus cannot treat it as a fresh pending ROM. if self.android and type(displayName) == "string" and not displayName:find("[/\\]") then @@ -845,12 +856,12 @@ function RomImporter:chooseMod() end -- Which game a dropped .sav imports into: a .sav has no version signature of --- its own, so it lands on the active game tab. When a non-game tab (mods, or --- the locked yellow placeholder) is showing, default to red -- the always- --- present first game -- rather than guess. +-- its own, so it lands on the active game tab. When a non-game tab (mods) is +-- showing, default to red -- the always-present first game -- rather than +-- guess. function RomImporter:_savedropTarget() local v = self.tab - if v == "red" or v == "blue" then return v end + if GameVersion.VERSIONS[v] then return v end return "red" end @@ -861,8 +872,7 @@ end -- playable with its game's data present. function RomImporter:_importSave(version, source) if self.workState == "working" then return end - if self.tab == "red" or self.tab == "blue" or self.tab == "mods" - or self.tab == "yellow" then + if GameVersion.VERSIONS[self.tab] or self.tab == "mods" then self.tab = version end if not self.ready[version] then @@ -971,8 +981,8 @@ function RomImporter:choose(version) if self.workState == "working" then return end self.chooseVersion = version or "red" if self.android then - -- Prefer a not-yet-imported .gb already in the save dir (USB copy, or a - -- fresh SAF pick). Never reuse an already-imported cart's file -- that + -- Prefer a not-yet-imported .gb/.gbc already in the save dir (USB copy, or + -- a fresh SAF pick). Never reuse an already-imported cart's file -- that -- was the #167 failure mode (second Choose just re-extracted Red). local name, data = findPendingRom(self.ready) if name then @@ -995,8 +1005,8 @@ function RomImporter:choose(version) return end -- Handheld Linux (Anbernic stock OS / PortMaster) rarely has zenity or - -- kdialog. Fall back to the same "drop a .gb next to the game" scan used - -- on Android, which works when the game is launched as an unpacked + -- kdialog. Fall back to the same "drop a .gb/.gbc next to the game" scan + -- used on Android, which works when the game is launched as an unpacked -- directory (see build-rg34xxsp.sh). local name, data = findPendingRom(self.ready) if name then @@ -1010,13 +1020,13 @@ function RomImporter:choose(version) or "the game folder" self.notice = { version = self.chooseVersion, - status = "No file picker. Copy your .gb into:", + status = "No file picker. Copy your .gb/.gbc into:", detail = where, } return end if love.system.getOS() ~= "OS X" and love.system.getOS() ~= "Windows" then - self:setError("File selection is unavailable here. Drop the .gb file onto the window.") + self:setError("File selection is unavailable here. Drop the .gb/.gbc file onto the window.") end end @@ -1112,7 +1122,7 @@ function RomImporter:_updatePadCursor(dt) local next = (self.modScroll or 0) + step self.modScroll = math.max(0, math.min(maxS, next)) end - elseif self.tab == "red" or self.tab == "blue" then + elseif GameVersion.VERSIONS[self.tab] then local maxS = (self._slotMax and self._slotMax[self.tab]) or 0 if maxS > 0 then local next = (self.slotScroll[self.tab] or 0) + step @@ -1138,7 +1148,7 @@ function RomImporter:gamepadpressed(_, button) -- Start / Select: Play if ready, else Choose ROM on the active game tab. if self.workState == "working" then return end local version = self.tab - if version == "red" or version == "blue" then + if GameVersion.VERSIONS[version] then if self.ready[version] then self:play(version) else self:choose(version) end end end @@ -1972,9 +1982,9 @@ function RomImporter:keypressed(key) if self.workState == "working" then return end if key == "return" or key == "space" or key == "kpenter" then -- Enter acts on the visible game tab: Play if its ROM is ready, otherwise - -- open its picker. The mods / placeholder tabs have no keyboard action. + -- open its picker. The mods tab has no keyboard action. local version = self.tab - if version == "red" or version == "blue" then + if GameVersion.VERSIONS[version] then if self.ready[version] then self:play(version) else self:choose(version) end end end @@ -2132,7 +2142,7 @@ function RomImporter:_drawTabBar(x, y, w, h, chip) end cursorX = segEnd + gap end - -- "N of 3 ready" (Red + Blue count; Yellow never ready), hidden if no room + -- "N of 3 ready" (Red + Blue + Yellow once in GameVersion.ORDER) local ready = 0 for _, v in ipairs(GameVersion.ORDER) do if self.ready[v] then ready = ready + 1 end end love.graphics.setFont(self.readyFont) @@ -2152,9 +2162,12 @@ end function RomImporter:_drawGamePanel(version, x, y, w, h) local s, pulse = self._s, self.pulse self.panelVersion = version - local locked = version == "yellow" - local info = (not locked) and GameVersion.info(version) or nil - local gameName = locked and "Pokemon Yellow" or info.displayName + -- Defensive: only lock when the version is absent from GameVersion (never + -- solely because id == "yellow"). + local info = GameVersion.info(version) + local locked = info == nil + local gameName = info and (info.launcherName or info.displayName) + or tostring(version) local ready = (not locked) and self.ready[version] or false -- header: name + status pill @@ -2191,12 +2204,13 @@ function RomImporter:_drawGamePanel(version, x, y, w, h) local rightX = twoCol and (x + colW + colGap) or x -- ROM card contents by state (rehomes the existing import flow) - local dropHint = self.android and "Copy the .gb via USB." - or Strings("Or drop the .gb file here.") - local accent = locked and PAL.gold or (version == "red" and PAL.red or PAL.blue) + local dropHint = self.android and "Copy the .gb/.gbc via USB." + or Strings("Or drop the .gb/.gbc file here.") + local accent = version == "yellow" and PAL.gold + or (version == "red" and PAL.red or PAL.blue) local romState, romDetail, romBtnLabel, romBtnEnabled, romProgress if locked then - romState, romDetail = "Not supported yet", "Yellow support is on the way." + romState, romDetail = "Not supported yet", "Support for this game is on the way." romBtnLabel, romBtnEnabled = "Import unavailable", false else local importing = self.importing == version @@ -2245,7 +2259,6 @@ function RomImporter:_drawGamePanel(version, x, y, w, h) -- SAVE FILES card: Import save is live once the ROM is imported (playable); -- Export save is live only when the active slot actually holds a save. The - -- locked yellow placeholder has no save backend, so both stay disabled. The -- hint line doubles as the last import/export outcome (green ok / red error). local sfImportEnabled, sfExportEnabled = false, false if not locked then @@ -2358,9 +2371,7 @@ function RomImporter:_drawGamePanel(version, x, y, w, h) self:_playButton(leftX, playY, colW, playH, gameName, ready, locked) -- SAVE SLOT card (right column, or stacked below Play when single-column). - -- The locked Yellow placeholder has no save backend (no GameVersion entry, so - -- no slots can exist); skip the panel entirely rather than draw an empty, - -- non-functional "+ New save slot" on a COMING SOON game. + -- Skip only when the version is absent from GameVersion (no save backend). if not locked then if twoCol then self:_drawSaveSlotPanel(version, rightX, bodyTop, colW, bodyH) diff --git a/src/inventory/ItemEffects.lua b/src/inventory/ItemEffects.lua index 484bcc67..50d40b71 100644 --- a/src/inventory/ItemEffects.lua +++ b/src/inventory/ItemEffects.lua @@ -183,6 +183,12 @@ function ItemEffects.use(data, save, itemId, target, battle, moveIndex, ow) return "failed", { Strings("OAK: %s!\nThis isn't the\ntime to use that!", save.player.name) } end local b = battle.player + -- PIKAHAPPY_USEDXITEM (item_effects.asm ItemUseXAccuracy / + -- GuardSpec / DireHit / XStat) on the active companion + if itemId ~= "POKE_DOLL" then + require("src.world.PikachuFollower") + .modifyHappiness(save, "USEDXITEM", b and b.mon) + end if itemId == "X_ACCURACY" then -- ItemUseXAccuracy sets USING_X_ACCURACY: moves never miss -- (not an accuracy stage) @@ -253,6 +259,18 @@ function ItemEffects.use(data, save, itemId, target, battle, moveIndex, ow) return "consumed", { Strings("%s's PP\nwas restored!", monName(data, target)) } end + -- PIKAHAPPY_USEDITEM (item_effects.asm ItemUseMedicine, item id up to + -- CALCIUM): fires once a medicine has a target, before the effect + -- resolves -- potions, status cures, revives and vitamins all count, + -- RARE_CANDY does not (its success is a LEVELUP bump instead) + if target and (HEAL_AMOUNT[itemId] or STATUS_HEAL[itemId] + or itemId == "MAX_POTION" or itemId == "FULL_RESTORE" + or itemId == "REVIVE" or itemId == "MAX_REVIVE" + or VITAMINS[itemId]) then + require("src.world.PikachuFollower") + .modifyHappiness(save, "USEDITEM", target) + end + local heal = HEAL_AMOUNT[itemId] if heal or itemId == "MAX_POTION" or itemId == "FULL_RESTORE" then -- a FULL RESTORE on a statused mon already at full HP acts as a @@ -323,12 +341,29 @@ function ItemEffects.use(data, save, itemId, target, battle, moveIndex, ow) local old = target.stats target.stats = Stats.calc(speciesDef, target.level, target.dvs, target.statExp) target.hp = math.min(target.stats.hp, target.hp + (target.stats.hp - old.hp)) + -- PIKAHAPPY_LEVELUP on a candy level (item_effects.asm:1540) + require("src.world.PikachuFollower") + .modifyHappiness(save, "LEVELUP", target) return "consumed", { Strings("%s grew\nto level %d!", monName(data, target), target.level) }, { leveledTo = target.level } end if STONES[itemId] then if not target then return "failed", { Strings("It won't have\nany effect.") } end + -- Yellow's starter Pikachu never evolves: ItemUseEvoStone runs + -- IsThisPartyMonStarterPikachu (OT identity match) before + -- TryEvolvingMon and bails with the voiced cry + RefusingText. + -- The stone is NOT consumed on the refuse path. + if target.species == "PIKACHU" + and require("src.core.GameVersion").isYellow() + and target.ot == save.player.name + and target.otId == save.player.id then + require("src.core.Sound").playCry(data, "PIKACHU") + local raw = data.text and data.text._RefusingText + local line = raw and raw:gsub("{RAM:[^}]*}", monName(data, target)) + or Strings("%s\nis refusing!", monName(data, target)) + return "failed", { line } + end local speciesDef = data.pokemon[target.species] for _, evo in ipairs(speciesDef.evolutions) do if evo.method == "ITEM" and evo.item == itemId then diff --git a/src/link/Protocol.lua b/src/link/Protocol.lua index f26d2c75..6b147af8 100644 --- a/src/link/Protocol.lua +++ b/src/link/Protocol.lua @@ -382,6 +382,12 @@ function TradeSession:apply(game) Runtime.emit("pokemon.received", { mon = received, from = "link", peerName = self.peerName }) self.party[self.myPick] = received + -- PIKAHAPPY_TRADE (engine/link/cable_club.asm:801): trading the + -- companion away is the biggest happiness hit and zeroes the mood + if game and sent then + require("src.world.PikachuFollower") + .modifyHappiness(game.save, "TRADE", sent) + end if game and game.save.pokedex then game.save.pokedex.seen[received.species] = true game.save.pokedex.owned[received.species] = true diff --git a/src/render/PaletteFX.lua b/src/render/PaletteFX.lua index 4891f446..4af5ca02 100644 --- a/src/render/PaletteFX.lua +++ b/src/render/PaletteFX.lua @@ -78,8 +78,11 @@ PaletteFX.GBC_OBJ_BLUE = { -- playthrough, red otherwise. White (index 1) and black (index 4) are -- identical across versions, so callers that only touch the endpoints -- (e.g. BattleState's zone white/black snap) need no version branch. +-- Yellow is CGB-enhanced (pokeyellow CGBBasePalettes) and has no extracted +-- boot-ROM auto-palette here; keep the Red ramp -- never Blue's GBC_BG_BLUE. function PaletteFX.ogBg() if GameVersion.isBlue() then return PaletteFX.GBC_BG_BLUE end + if GameVersion.isYellow() then return PaletteFX.GBC_BG end return PaletteFX.GBC_BG end @@ -88,8 +91,10 @@ end -- version-distinct cache-group string, because SpriteRenderer.getObpImage keys -- its baked-image cache by (image path, group): a shared group would collide a -- Red bake with a Blue one and one version would show the other's colors. +-- Yellow: same Red OBJ green as above until Yellow-specific tables land. function PaletteFX.ogObj() if GameVersion.isBlue() then return PaletteFX.GBC_OBJ_BLUE, "gbcobj_blue" end + if GameVersion.isYellow() then return PaletteFX.GBC_OBJ, "gbcobj" end return PaletteFX.GBC_OBJ, "gbcobj" end @@ -311,6 +316,9 @@ end -- Red-derived pokered-gbc pack, so under RED++ a Blue playthrough must -- read these from the ROM-imported table or the title ribbon stays red -- and the Game Corner reels keep Red's pink (issue #128). +-- Yellow is intentionally NOT in BLUE_VERSIONED: skip Blue LOGO1/SLOTS* +-- recolors. When CGBBasePalettes were imported (palettes.cgbBase), Yellow +-- prefers those over SGB SuperPalettes for named zones. local BLUE_VERSIONED = { LOGO1 = true, SLOTS2 = true, SLOTS3 = true, SLOTS4 = true, } @@ -320,6 +328,11 @@ local function romNamedPal(data, name) return p and p.palettes and p.palettes[name] end +local function yellowCgbNamedPal(data, name) + local p = data and data.palettes + return p and p.cgbBase and p.cgbBase[name] +end + -- named palette from the active pack (nil on stale builds / missing name). -- RED++ falls back to the ROM pack for names the gbc table omits (rare). -- OG RED short-circuits EVERY name to the one global GBC boot-ROM BG palette @@ -329,10 +342,16 @@ end -- GBC_OBJ green), so this stays a BG-only hook. function PaletteFX.pal(data, name) if PaletteFX.mode == "ogred" then return PaletteFX.ogBg() end + -- Blue-only ROM override for versioned SuperPals. Yellow (isYellow) and + -- Red keep the active pack / Red-like path -- do not apply Blue recolors. if GameVersion.isBlue() and BLUE_VERSIONED[name] then local fromRom = romNamedPal(data, name) if fromRom then return fromRom end end + if GameVersion.isYellow() then + local fromCgb = yellowCgbNamedPal(data, name) + if fromCgb then return fromCgb end + end local p = PaletteFX.pack(data) local c = p and p.palettes[name] if c then return c end @@ -644,7 +663,10 @@ function PaletteFX.modeLabel(mode) mode = mode or PaletteFX.mode -- The GBC boot-ROM mode wears the running game's name: it is red for Red and -- blue for Blue (see ogBg), so a Blue playthrough shows "OG BLUE". + -- Yellow still uses the Red boot-ROM ramp (no Yellow table yet), so keep + -- the "OG RED" label rather than inventing an "OG YELLOW" without colors. if mode == "ogred" and GameVersion.isBlue() then return "OG BLUE" end + if mode == "ogred" and GameVersion.isYellow() then return "OG RED" end return PaletteFX.MODE_LABELS[mode] or "GBC" end diff --git a/src/script/Commands.lua b/src/script/Commands.lua index 25022d57..20bfe457 100644 --- a/src/script/Commands.lua +++ b/src/script/Commands.lua @@ -173,6 +173,27 @@ function Commands.check_item(ctx, itemId) ctx.lastCheck = (ctx.save.inventory[itemId] or 0) > 0 end +-- check_dex_owned : lastCheck = the player owns at least n species +-- (the CountSetBits-over-wPokedexOwned gate in Yellow's OaksLabOak1Text) +function Commands.check_dex_owned(ctx, n) + local owned = 0 + for _ in pairs(ctx.save.pokedex and ctx.save.pokedex.owned or {}) do + owned = owned + 1 + end + ctx.lastCheck = owned >= (n or 1) +end + +-- dex_rating: DisplayDexRating (engine/events/pokedex_rating.asm) -- +-- Oak's seen/owned tally plus the per-decade rating line; blocks until +-- the box closes. Headless-safe no-op without an overworld. +function Commands.dex_rating(ctx) + local ow = ctx.overworld + if not ow then return end + local runner = ctx.runner + ow:dexRating(function() runner:resume() end) + runner:yield() +end + function Commands.jump_if_true(ctx, target) if ctx.lastCheck then return target end end @@ -561,7 +582,10 @@ end -- AskName runs for party (AddPartyMon) and box (SendNewMonToBox) when a -- script runner is present; mods that pre-set gift.nickname skip it. -- Box deposits also print SentToBoxText (give_pokemon.asm:36-37). -function Commands.give_pokemon(ctx, species, level) +-- skipNickname suppresses the AskName prompt: Yellow's lab Pikachu is +-- added straight through AddPartyMon (pokeyellow scripts/OaksLab.asm +-- OaksLabPlayerReceivedMonText) -- the starter Pikachu keeps its name. +function Commands.give_pokemon(ctx, species, level, skipNickname) -- Native mods can transform a gift before the Pokémon object is created. -- This is intentionally an event rather than a special-case starter hook: -- mods can use the same seam for story gifts, fossils, or custom scripts. @@ -597,7 +621,7 @@ function Commands.give_pokemon(ctx, species, level) ctx.boxNum = boxNum -- AskName: both AddPartyMon and SendNewMonToBox; skip mod-set nicks -- and callback-style callers with no script runner to yield on. - if not gift.nickname and ctx.runner then + if not gift.nickname and not skipNickname and ctx.runner then askNickname(ctx, mon) end if boxNum then @@ -748,7 +772,46 @@ end -- player CHARMANDER -> base+0, SQUIRTLE -> base+1, BULBASAUR -> base+2. -- offsets (flag -> party offset) lets a modded roster remap the pick; -- field.starterCounterpicks is the data-side default when stamped. +-- Yellow's rival parties key off wRivalStarter (save.rivalStarter, +-- 1 JOLTEON / 2 FLAREON / 3 VAPOREON -- set in oaks_lab_yellow.lua), not +-- the player's starter counterpick. Keyed by the Red call-site party so +-- the shared story scripts need no version branches: +-- Route 22 #1 RIVAL1 4 -> party 2 (fixed; Route22Script_50ed6), and +-- a win upgrades FLAREON to JOLTEON (Route22Rival1AfterBattleScript) +-- Cerulean RIVAL1 7 -> party 3 (fixed; CeruleanCity.asm:143) +-- S.S. Anne RIVAL2 1 -> party 1 (fixed; SSAnne2F.asm:98) +-- Tower 2F RIVAL2 4 -> 1 + starter (PokemonTower2F.asm:148) +-- Silph 7F RIVAL2 7 -> 4 + starter (SilphCo7F.asm:185) +-- Route 22 #2 RIVAL2 10 -> 7 + starter (Route22Script_50ee1) +-- Champion RIVAL3 1 -> 0 + starter (ChampionsRoom.asm:69) +local YELLOW_RIVAL_PARTIES = { + OPP_RIVAL1 = { + [4] = { party = 2, upgradeOnWin = { from = 2, to = 1 } }, + [7] = { party = 3 }, + }, + OPP_RIVAL2 = { + [1] = { party = 1 }, [4] = { base = 1 }, + [7] = { base = 4 }, [10] = { base = 7 }, + }, + OPP_RIVAL3 = { [1] = { base = 0 } }, +} + function Commands.rival_battle(ctx, oppClass, baseParty, offsets) + local GameVersion = require("src.core.GameVersion") + if GameVersion.isYellow() then + local spec = YELLOW_RIVAL_PARTIES[oppClass] + and YELLOW_RIVAL_PARTIES[oppClass][baseParty] + if spec then + local starter = ctx.save.rivalStarter or 1 + local party = spec.party or (spec.base + starter) + Commands.start_battle(ctx, "trainer", oppClass, party) + if spec.upgradeOnWin and ctx.lastBattleResult == "win" + and ctx.save.rivalStarter == spec.upgradeOnWin.from then + ctx.save.rivalStarter = spec.upgradeOnWin.to + end + return + end + end offsets = offsets or (ctx.game.data.field and ctx.game.data.field.starterCounterpicks) local offset = 0 @@ -951,6 +1014,17 @@ function Commands.stop_music(ctx) require("src.core.Music").stop() end +-- play_default_music: PlayDefaultMusic -- resume the current map's own +-- theme (data.audio.mapSongs) after a cutscene override, keeping the +-- bike/surf substitution rules. Headless-safe no-op without an overworld. +function Commands.play_default_music(ctx) + local ow = ctx.overworld + if not ow then return end + require("src.core.Music").playMap(ctx.game.data, ow.map.id, + ctx.save and ctx.save.onBike, + ow.player and ow.player.surfing) +end + -- replace_block : the Cut-tree/card-key-door idiom, -- on the current map function Commands.replace_block(ctx, bx, by, blockId) diff --git a/src/script/ScriptRunner.lua b/src/script/ScriptRunner.lua index bac4c31d..94fd1ffa 100644 --- a/src/script/ScriptRunner.lua +++ b/src/script/ScriptRunner.lua @@ -191,8 +191,18 @@ function ScriptRunner:yield() end function ScriptRunner:resume(...) - if not self.co then return end - local ok, err = coroutine.resume(self.co, ...) + local co = self.co + if not co then return end + -- A completion callback can fire synchronously from inside the running + -- coroutine (e.g. a battle that finishes during its own stack push when + -- the party is already fainted). Resuming a running coroutine is an + -- error that would kill the whole script, so land the pending yield + -- first and continue on the next update tick instead. + if coroutine.status(co) == "running" then + self.waitingFrames = 1 + return + end + local ok, err = coroutine.resume(co, ...) if not ok then local source = self.ctx and self.ctx.source local where = source @@ -209,8 +219,10 @@ function ScriptRunner:resume(...) self.co = nil self.waitingFrames = nil self.waitingCheck = nil - elseif coroutine.status(self.co) == "dead" then - self.co = nil + -- status via the captured co: a nested resume during the call above may + -- already have torn self.co down, and status(nil) would throw + elseif coroutine.status(co) == "dead" then + if self.co == co then self.co = nil end end end diff --git a/src/ui/BagMenu.lua b/src/ui/BagMenu.lua index e28f5773..95cb7b38 100644 --- a/src/ui/BagMenu.lua +++ b/src/ui/BagMenu.lua @@ -158,15 +158,22 @@ local function useOn(game, battle, id, target, list, moveIndex, picker) local moveId = payload local mdef = game.data.moves[moveId] local function teach() + -- PIKAHAPPY_USEDTMHM on a successful teach (item_effects.asm:2500) + local function taught() + require("src.world.PikachuFollower") + .modifyHappiness(game.save, "USEDTMHM", target) + end if #target.moves < 4 then table.insert(target.moves, { id = moveId, pp = mdef.pp }) showMessages(game, { Strings("%s learned\n%s!", target.nickname or game.data.pokemon[target.species].name, mdef.name) }) if result == "learn" then consume(game, id) end + taught() else require("src.ui.Screens").push(game, "MoveLearnMenu", target, moveId, function(learned) if learned and result == "learn" then consume(game, id) end + if learned then taught() end end) end end diff --git a/src/ui/BoxMenu.lua b/src/ui/BoxMenu.lua index 252969af..8ffea44d 100644 --- a/src/ui/BoxMenu.lua +++ b/src/ui/BoxMenu.lua @@ -127,6 +127,9 @@ local function deposit(game) end table.remove(game.save.party, item.value) table.insert(active, mon) + -- PIKAHAPPY_DEPOSITED (engine/pokemon/bills_pc.asm:247) + require("src.world.PikachuFollower") + .modifyHappiness(game.save, "DEPOSITED", mon) local name = monName(game, mon) game.stringBuffer = name game.boxNumString = tostring(game.save.currentBox) @@ -220,13 +223,43 @@ local function drawChrome(game) love.graphics.setColor(1, 1, 1, 1) end +-- PrintPCBox (engine/printer/printer.asm): Yellow's box-list print job, +-- box number plus each stored mon's name, level and dex number; the PNG +-- under prints/ stands in for the printer paper. +local function printBox(game) + local box = Boxes.active(game.save) + local Printer = require("src.core.Printer") + local TextBox = require("src.render.TextBox") + local h = 32 + math.max(1, #box) * 10 + local saved, err = Printer.save("box_" .. (game.save.currentBox or 1), + 160, h, function() + love.graphics.setColor(1, 1, 1, 1) + love.graphics.rectangle("fill", 0, 0, 160, h) + love.graphics.setColor(0, 0, 0, 1) + Font.draw(Strings("BOX No.%d", game.save.currentBox or 1), 8, 8) + if #box == 0 then Font.draw(Strings("Empty."), 8, 24) end + for i, mon in ipairs(box) do + local def = game.data.pokemon[mon.species] + Font.draw(mon.nickname or (def and def.name) or tostring(mon.species), + 8, 14 + i * 10) + Font.draw(Strings(":L%d No.%03d", mon.level or 0, + def and def.dex or 0), 88, 14 + i * 10) + end + love.graphics.setColor(1, 1, 1, 1) + end) + game.stack:push(TextBox.new(game, saved + and Strings("Printed BOX %d!\fSaved as\n%s\vin the save\nfolder.", + game.save.currentBox or 1, saved) + or Strings("Printer error!\n%s", tostring(err)))) +end + function BoxMenu.new(game) Boxes.ensure(game.save) -- bills_pc.asm BillsPCMenu: TextBoxBorder at (0,0) with interior -- 12x10 → total 14x12. "CHANGE BOX" / "WITHDRAW " need the -- full interior (cursor col + label). keepOpen so WITHDRAW/DEPOSIT/ -- RELEASE/CHANGE BOX leave this menu underneath (jp BillsPCMenu). - local menu = Menu.new(game, { + local items = { { label = Strings("WITHDRAW "), keepOpen = true, onSelect = function() withdraw(game) end }, { label = Strings("DEPOSIT "), keepOpen = true, @@ -235,10 +268,19 @@ function BoxMenu.new(game) onSelect = function() release(game) end }, { label = Strings("CHANGE BOX"), keepOpen = true, onSelect = function() changeBox(game) end }, - { label = Strings("SEE YA!") }, + } + -- Yellow's PRINT BOX item (bills_pc.asm _YELLOW -> PrintPCBox): the + -- Game Boy Printer box list becomes a PNG under prints/, like the + -- Pokédex PRNT stand-in + if require("src.core.GameVersion").isYellow() then + items[#items + 1] = { label = Strings("PRINT BOX"), keepOpen = true, + onSelect = function() printBox(game) end } + end + items[#items + 1] = { label = Strings("SEE YA!") } + local menu = Menu.new(game, items, -- Bill's PC runs silent end to end (BIT_NO_MENU_BUTTON_SOUND, -- engine/menus/pokemon_pc.asm) - }, { tx = 0, ty = 0, tw = 14, th = 12, noSound = true }) + { tx = 0, ty = 0, tw = 14, th = #items * 2 + 2, noSound = true }) local baseDraw = menu.draw function menu:draw() baseDraw(self) diff --git a/src/ui/DexEntryMenu.lua b/src/ui/DexEntryMenu.lua index 9db99195..6e8cf5ea 100644 --- a/src/ui/DexEntryMenu.lua +++ b/src/ui/DexEntryMenu.lua @@ -55,11 +55,17 @@ function DexEntryMenu:update(dt) end function DexEntryMenu:draw() + DexEntryMenu.render(self.game, self.def, self.sprite, self.forceOwned) +end + +-- Static entry-page renderer, shared with the printer stand-in +-- (src/core/Printer.lua renders the same page into a PNG the way +-- PrintPokedexEntry rendered it to the Game Boy Printer). +function DexEntryMenu.render(game, def, sprite, forceOwned) love.graphics.setColor(1, 1, 1, 1) love.graphics.rectangle("fill", 0, 0, 160, 144) - local def = self.def - if self.sprite then - love.graphics.draw(self.sprite, 8, math.max(0, 60 - self.sprite:getHeight())) + if sprite then + love.graphics.draw(sprite, 8, math.max(0, 60 - sprite:getHeight())) end love.graphics.setColor(0, 0, 0, 1) Font.draw(def.name, 72, 8) @@ -70,10 +76,10 @@ function DexEntryMenu:draw() Font.draw(e.kind or "?", 72, 20) -- same number width as the list (constants.dexDigits), so a dex past 999 -- prints the extra digit everywhere at once - local digits = (self.game.data.constants or {}).dexDigits or 3 + local digits = (game.data.constants or {}).dexDigits or 3 Font.draw(("No.%0" .. digits .. "d"):format(def.dex or 0), 72, 32) - local owned = self.forceOwned - or (self.game.save.pokedex and self.game.save.pokedex.owned[def.id]) + local owned = forceOwned + or (game.save.pokedex and game.save.pokedex.owned[def.id]) -- height/weight print only once owned, like the description -- (pokedex.asm: "if the pokemon has not been owned, don't print the -- height, weight, or description") @@ -84,7 +90,7 @@ function DexEntryMenu:draw() Font.draw(Strings("HT %d′%02d″", e.heightFt, e.heightIn or 0), 72, 44) Font.draw(Strings("WT %.1flb", (e.weight or 0) / 10), 72, 54) end - local text = owned and e.text and self.game.data.text[e.text] or nil + local text = owned and e.text and game.data.text[e.text] or nil local y = 72 if text then for line in (text:gsub("\v", "\n"):gsub("\f", "\n") .. "\n"):gmatch("(.-)\n") do diff --git a/src/ui/Diploma.lua b/src/ui/Diploma.lua new file mode 100644 index 00000000..7ed1a8c5 --- /dev/null +++ b/src/ui/Diploma.lua @@ -0,0 +1,50 @@ +-- The dex-completion diploma (engine/events/diploma.asm DisplayDiploma / +-- diploma2.asm DisplayDiplomaTop): a bordered certificate page with the +-- player's name, shown by the Celadon Mansion 3F game designer once 150 +-- species are owned. Diploma.render also backs the Yellow-only printed +-- copy (engine/printer/printer.asm PrintDiploma -> src/core/Printer.lua). + +local Font = require("src.render.Font") +local Strings = require("src.core.Strings") + +local Diploma = {} +Diploma.__index = Diploma +Diploma.isOpaque = true + +function Diploma.new(game, onDone) + return setmetatable({ game = game, onDone = onDone }, Diploma) +end + +function Diploma:update() + local input = self.game.input + if input:wasPressed("a") or input:wasPressed("b") then + self.game.stack:pop() + if self.onDone then self.onDone() end + end +end + +-- the DisplayDiplomaTop layout, hlcoord tiles kept as x*8 / y*8 pixels +function Diploma.render(game) + love.graphics.setColor(1, 1, 1, 1) + love.graphics.rectangle("fill", 0, 0, 160, 144) + love.graphics.setColor(0, 0, 0, 1) + love.graphics.rectangle("line", 2.5, 2.5, 155, 139) + Font.draw(Strings(""), 40, 16) -- hlcoord 5,2 + Font.draw(Strings("Player"), 24, 32) -- hlcoord 3,4 + Font.draw(game.save.player.name or "RED", 80, 32) -- hlcoord 10,4 + local congrats = { -- hlcoord 2,6 + "Congrats! This", "diploma certifies", "that you have", + "completed your", "POKéDEX.", + } + for i, line in ipairs(congrats) do + Font.draw(Strings(line), 16, 48 + (i - 1) * 10) + end + Font.draw(Strings("GAME FREAK"), 72, 128) -- hlcoord 9,16 + love.graphics.setColor(1, 1, 1, 1) +end + +function Diploma:draw() + Diploma.render(self.game) +end + +return Diploma diff --git a/src/ui/PartyMenu.lua b/src/ui/PartyMenu.lua index e20470c0..422208b0 100644 --- a/src/ui/PartyMenu.lua +++ b/src/ui/PartyMenu.lua @@ -104,6 +104,7 @@ PartyMenu.iconFrames = { FAIRY = { rest = 3, alt = 0 }, -- FairySprite tile 12 <-> tile 0 BIRD = { rest = 3, alt = 0 }, -- BirdSprite tile 12 <-> tile 0 WATER = { rest = 0, alt = 3 }, -- SeelSprite tile 0 <-> tile 12 + PIKACHU = { rest = 0, alt = 3 }, -- Yellow: PikachuSprite tile 0 <-> 12 } -- Which 16x16 frame of `name`'s sheet to draw; `ih` (sheet pixel diff --git a/src/ui/PokedexMenu.lua b/src/ui/PokedexMenu.lua index f1c07571..92c385f9 100644 --- a/src/ui/PokedexMenu.lua +++ b/src/ui/PokedexMenu.lua @@ -57,7 +57,7 @@ function PokedexMenu.new(game, opts) -- original, QUIT returns to the list local Menu = require("src.ui.Menu") local Screens = require("src.ui.Screens") - game.stack:push(Menu.new(game, { + local entries = { { label = Strings("DATA"), onSelect = function() Screens.push(game, "DexEntryMenu", item.value) end }, @@ -67,8 +67,34 @@ function PokedexMenu.new(game, opts) { label = Strings("AREA"), onSelect = function() Screens.push(game, "TownMap", { nestSpecies = item.value }) end }, - { label = Strings("QUIT") }, - }, { tx = 12, ty = 8, tw = 8, th = 10 })) + } + -- Yellow's PRNT item (engine/menus/pokedex.asm PokedexMenuItemsText + -- _YELLOW branch -> PrintPokedexEntry): the Game Boy Printer job is + -- stood in for by a PNG of the entry page saved under prints/. + if require("src.core.GameVersion").isYellow() then + entries[#entries + 1] = { label = Strings("PRNT"), onSelect = function() + local DexEntryMenu = require("src.ui.DexEntryMenu") + local Printer = require("src.core.Printer") + local TextBox = require("src.render.TextBox") + local def = game.data.pokemon[item.value] + local path = require("src.pokemon.Sprites").path( + game.data, item.value, "front", { kind = "dex" }) + local ok, sprite = false, nil + if path then ok, sprite = pcall(love.graphics.newImage, path) end + local saved, err = Printer.save("dex_" .. item.value, 160, 144, + function() + DexEntryMenu.render(game, def, ok and sprite or nil, false) + end) + game.stack:push(TextBox.new(game, saved + and Strings("Printed %s's\ndata!\fSaved as\n%s\vin the save\nfolder.", + def.name, saved) + or Strings("Printer error!\n%s", tostring(err)))) + end } + end + entries[#entries + 1] = { label = Strings("QUIT") } + game.stack:push(Menu.new(game, entries, + { tx = 12, ty = 8, tw = 8, + th = #entries * 2 + 2 })) end, }) list.sgbPalettes = PokedexMenu.sgbPalettes diff --git a/src/ui/SurfingMinigame.lua b/src/ui/SurfingMinigame.lua new file mode 100644 index 00000000..96659568 --- /dev/null +++ b/src/ui/SurfingMinigame.lua @@ -0,0 +1,368 @@ +-- Surfing Pikachu minigame (engine/minigame/surfing_pikachu.asm): the +-- Summer Beach House wave run. Paddle for speed, launch off the wave, +-- spin in the air and land flat for points; a crooked landing wipes out +-- and ends the run. The scene is built from the real ROM sheets +-- (gfx/surfing_pikachu.asm, ripped at import to +-- assets/generated/minigame/surf_1a/1b.png): the scalloped water tiles, +-- the beach with the palm and the doll hut, the "HP:" score strip with +-- the sheet digits, the cloud, and the OAM Pikachu poses -- the air +-- tricks quantize to the sheet's rotation frames like the original's +-- sprite anims, instead of free-rotating one pose. The original drew +-- the big wave with per-scanline scroll tricks (wLYOverrides); here the +-- crest profile is a curve filled with the sheet's foam/shade tiles. +-- Score model keeps the original's shape (ride ticks + airtime + full +-- rotations); high score persists in save.surfingHighScore for the +-- beach-house printer. + +local Font = require("src.render.Font") +local Strings = require("src.core.Strings") +local Music = require("src.core.Music") +local Sound = require("src.core.Sound") + +local SurfingMinigame = {} +SurfingMinigame.__index = SurfingMinigame +SurfingMinigame.isOpaque = true + +local PIKA_X = 44 -- fixed screen x while riding +local RUN_DISTANCE = 3200 -- scroll px from paddle-out to the beach +local GRAVITY = 0.14 +local HORIZON = 24 -- sea starts under the sky strip + +-- surf_1b quads: {x, y, w, h} in sheet pixels (pose pitch is 24x24) +local B = { + digits = { x = 0, y = 104 }, -- "0123456789", 8x8 each + good = { 0, 72, 32, 8 }, + yeah = { 32, 72, 32, 8 }, + ohno = { 80, 96, 48, 24 }, + splash = { 48, 80, 32, 24 }, + cloud = { 96, 112, 32, 8 }, + paddle = { { 0, 80, 24, 24 }, { 24, 80, 24, 24 } }, +} +-- rotation frames, 45-degree buckets clockwise from upright +local POSES = { + [0] = { 48, 0, 24, 24 }, -- upright ride + [45] = { 24, 0, 24, 24 }, -- nose down + [90] = { 0, 48, 24, 24 }, -- board vertical + [135] = { 48, 48, 24, 24 }, -- tumbling + [180] = { 72, 48, 24, 24 }, -- upside down + [225] = { 48, 48, 24, 24 }, + [270] = { 0, 48, 24, 24 }, + [315] = { 0, 0, 24, 24 }, -- tail down +} + +-- surf_1a quads (BG tiles) +local A = { + scallop = { 16, 0, 8, 8 }, -- open-water pattern, row A + scallop2 = { 16, 8, 8, 8 }, -- row B variant + shade = { 8, 16, 8, 8 }, -- gray dither, wave belly + lip = { 24, 0, 8, 8 }, -- foam curl for the crest edge + palm = { 8, 32, 8, 8 }, -- palm fronds + beach = { 24, 32, 16, 8 }, -- black shore silhouette + hut = { 8, 40, 16, 8 }, -- the Pikachu doll hut on the sand + hp = { 20, 40, 20, 8 }, -- "HP:" score label +} + +-- SGB-style zones: one sea palette over the frame plus a yellow +-- OBJ-flavored palette tracking Pikachu's tiles (rectangular attribute +-- blocks are all the SGB could do, bleed and all) +local SEA_PAL = { { 255, 255, 255 }, { 112, 184, 248 }, + { 56, 120, 216 }, { 0, 0, 0 } } +local PIKA_PAL = { { 255, 255, 255 }, { 248, 216, 64 }, + { 224, 144, 32 }, { 0, 0, 0 } } + +local function newQuad(spec, img) + return love.graphics.newQuad(spec[1], spec[2], spec[3], spec[4], + img:getDimensions()) +end + +function SurfingMinigame.new(game, onDone) + local self = setmetatable({ game = game, onDone = onDone }, SurfingMinigame) + self.phase = "ride" -- ride | air | wipeout | results + self.t = 0 + self.distance = 0 + self.speed = 2 + self.score = 0 + self.rideTick = 0 + self.y = 0 -- air offset above the wave (positive = up) + self.vy = 0 + self.rot = 0 -- degrees, accumulates through the air + self.spins = 0 + self.airFrames = 0 + self.resultShown = 0 + self.banner = nil -- {quad, frames}: GOOD!/YEAH-/Oh no.. + + local function sheet(path) + local ok, img = pcall(love.graphics.newImage, path) + return ok and img or nil + end + self.bg = sheet("assets/generated/minigame/surf_1a.png") + self.ob = sheet("assets/generated/minigame/surf_1b.png") + if self.bg then + self.aq = {} + for k, spec in pairs(A) do self.aq[k] = newQuad(spec, self.bg) end + end + if self.ob then + self.bq = {} + for k, spec in pairs(B) do + if spec[3] then self.bq[k] = newQuad(spec, self.ob) end + end + self.bq.paddle = { newQuad(B.paddle[1], self.ob), + newQuad(B.paddle[2], self.ob) } + self.bq.poses = {} + for deg, spec in pairs(POSES) do + self.bq.poses[deg] = newQuad(spec, self.ob) + end + self.bq.digit = {} + for d = 0, 9 do + self.bq.digit[d] = love.graphics.newQuad(B.digits.x + d * 8, + B.digits.y, 8, 8, self.ob:getDimensions()) + end + end + Music.play(game.data, "Music_SurfingPikachu") + return self +end + +-- crest height at screen x for the current scroll (two sines so the +-- wave rolls instead of looping visibly) +function SurfingMinigame:seaY(x) + local s = self.distance + x + return 92 - 14 * math.sin(s / 26) - 6 * math.sin(s / 9.5) +end + +function SurfingMinigame:finishRun() + self.phase = "results" + local save = self.game.save + self.newRecord = self.score > (save.surfingHighScore or 0) + if self.newRecord then save.surfingHighScore = self.score end + Music.stop() + Sound.play(self.game.data, self.newRecord and "Get_Item1" or "Ball_Poof") +end + +function SurfingMinigame:update() + local input = self.game.input + self.t = self.t + 1 + if self.banner then + self.banner.frames = self.banner.frames - 1 + if self.banner.frames <= 0 then self.banner = nil end + end + if self.phase == "results" then + self.resultShown = self.resultShown + 1 + if self.resultShown > 30 + and (input:wasPressed("a") or input:wasPressed("b")) then + self.game.stack:pop() + if self.onDone then self.onDone(self.score) end + end + return + end + if self.phase == "wipeout" then + self.splash = (self.splash or 0) + 1 + if self.splash > 70 then self:finishRun() end + return + end + + -- the wave scrolls by the current speed; the beach ends the run + self.distance = self.distance + 0.8 + self.speed * 0.35 + if self.distance >= RUN_DISTANCE then + -- rode it all the way in: distance bonus like the original's goal + self.score = self.score + 500 + self:finishRun() + return + end + + if self.phase == "ride" then + -- paddling: mash A for speed, it bleeds off on its own + if input:wasPressed("a") and self.speed < 8 then + self.speed = self.speed + 1 + end + if self.t % 45 == 0 and self.speed > 2 then + self.speed = self.speed - 1 + end + self.rideTick = self.rideTick + 1 + if self.rideTick % 12 == 0 then self.score = self.score + 1 end + -- launch off the lip + if input:wasPressed("up") then + self.phase = "air" + self.vy = 1.6 + self.speed * 0.45 + self.rot, self.spins, self.airFrames = 0, 0, 0 + Sound.play(self.game.data, "Ledge_Jump") + end + elseif self.phase == "air" then + self.airFrames = self.airFrames + 1 + self.vy = self.vy - GRAVITY + self.y = self.y + self.vy + -- tricks: hold either direction to spin + local spin = (input:isDown("left") and -6 or 0) + + (input:isDown("right") and 6 or 0) + self.rot = self.rot + spin + if math.abs(self.rot) >= (self.spins + 1) * 360 then + self.spins = self.spins + 1 + end + if self.y <= 0 and self.vy < 0 then + self.y = 0 + local tilt = math.abs(self.rot) % 360 + if tilt <= 60 or tilt >= 300 then + -- clean landing: airtime + full rotations pay out + self.score = self.score + self.spins * 100 + + math.floor(self.airFrames / 4) + self.phase = "ride" + self.banner = { quad = self.spins > 0 and "yeah" or "good", + frames = 50 } + Sound.play(self.game.data, "Cut") + else + self.phase = "wipeout" + self.splash = 0 + self.banner = { quad = "ohno", frames = 70 } + Sound.play(self.game.data, "Faint_Fall") + end + end + end +end + +-- draw one 8x8 sheet tile quad at x, y +function SurfingMinigame:tile(q, x, y) + love.graphics.draw(self.bg, self.aq[q], x, y) +end + +function SurfingMinigame:sgbPalettes() + local P = require("src.render.PaletteFX") + local zones = { P.whole(SEA_PAL) } + if self.phase ~= "wipeout" and self.phase ~= "results" then + local tx = math.floor((PIKA_X - 12) / 8) + local ty = math.floor(math.max(0, self.pikaScreenY or 60) / 8) + zones[#zones + 1] = P.zone(PIKA_PAL, tx, ty, tx + 3, ty + 3) + end + return zones +end + +function SurfingMinigame:drawScore(x, y, n) + local s = tostring(n) + for i = 1, #s do + love.graphics.draw(self.ob, self.bq.digit[tonumber(s:sub(i, i))], + x + (i - 1) * 8, y) + end +end + +function SurfingMinigame:draw() + local haveSheets = self.bg and self.ob + -- sky + love.graphics.setColor(1, 1, 1, 1) + love.graphics.rectangle("fill", 0, 0, 160, 144) + if not haveSheets then + -- cache predates the surf sheets: plain shapes keep it playable + love.graphics.setColor(0, 0, 0, 1) + Font.draw(Strings("SCORE %d", self.score), 4, 4) + love.graphics.rectangle("fill", PIKA_X - 8, + self:seaY(PIKA_X) - 16 - self.y, 16, 16) + love.graphics.setColor(1, 1, 1, 1) + return + end + + -- cloud in the sky strip + love.graphics.draw(self.ob, self.bq.cloud, 112, 8) + + -- open water: the scalloped pattern tiles the whole sea, phase-locked + -- to the scroll so the surface slides + local shift = math.floor(self.distance) % 8 + for ty = HORIZON, 136, 8 do + local alt = (ty / 8) % 2 == 0 + for tx = -8, 160, 8 do + self:tile(alt and "scallop" or "scallop2", tx - shift, ty) + end + end + + -- the wave face: a white patch hugging the ride line (the original + -- carved it with per-scanline scroll; the ellipse stands in), with a + -- few scallops floating inside and the foam lip along its upper edge + local faceY = self:seaY(56) + 10 + love.graphics.setColor(1, 1, 1, 1) + love.graphics.ellipse("fill", 56, faceY, 46, 30) + love.graphics.ellipse("fill", 100, faceY + 16, 40, 22) + for _, spot in ipairs({ { 30, 8 }, { 70, 16 }, { 48, 22 } }) do + self:tile("scallop", 56 - 46 + spot[1] - shift, faceY - 24 + spot[2]) + end + local pikaY = self:seaY(PIKA_X) - 20 - self.y + for a = 205, 335, 18 do + local r = math.rad(a) + local lx = 56 + math.cos(r) * 44 - 4 + local ly = faceY + math.sin(r) * 28 - 4 + -- foam that would land inside Pikachu's SGB zone comes out orange; + -- leave that patch to the spray ellipse instead + if math.abs(lx - PIKA_X) > 28 or math.abs(ly - (pikaY + 12)) > 26 then + self:tile("lip", lx, ly) + end + end + self:tile("shade", 92 - shift, faceY + 20) + self:tile("shade", 116 - shift, faceY + 24) + + -- beach slides through at the start and again before the goal + local beachX + if self.distance < 160 then + beachX = -self.distance + elseif self.distance > RUN_DISTANCE - 200 then + beachX = 160 - (self.distance - (RUN_DISTANCE - 200)) + end + if beachX then + for tx = 0, 32, 8 do + self:tile("beach", beachX + tx, 128) + self:tile("beach", beachX + tx, 136) + end + love.graphics.setColor(0, 0, 0, 1) + love.graphics.rectangle("fill", beachX + 9, 118, 2, 10) + love.graphics.setColor(1, 1, 1, 1) + self:tile("palm", beachX + 6, 112) + self:tile("hut", beachX + 20, 118) + end + + -- Pikachu. The white spray patch under him doubles as the yellow SGB + -- zone's backdrop: shade 0 maps to white in both palettes, so the + -- attribute-block bleed never shows on the water pattern. + love.graphics.setColor(1, 1, 1, 1) + local py = self:seaY(PIKA_X) - 20 - self.y + self.pikaScreenY = py -- the yellow SGB zone tracks this + love.graphics.ellipse("fill", PIKA_X, py + 12, 25, 21) + if self.phase == "wipeout" then + love.graphics.draw(self.ob, self.bq.splash, PIKA_X - 16, + self:seaY(PIKA_X) - 16) + else + local quad + if self.phase == "ride" and self.speed <= 2 + and self.distance < 120 then + quad = self.bq.paddle[math.floor(self.t / 8) % 2 + 1] + else + local bucket = math.floor(((self.rot % 360) + 22.5) / 45) % 8 * 45 + quad = self.bq.poses[bucket] or self.bq.poses[0] + end + love.graphics.draw(self.ob, quad, PIKA_X - 12, py) + end + + -- banner beats: GOOD! / YEAH- / Oh no.. + if self.banner and self.bq[self.banner.quad] then + love.graphics.draw(self.ob, self.bq[self.banner.quad], 60, 40) + end + + -- score strip, bottom right: HP: + sheet digits + love.graphics.setColor(1, 1, 1, 1) + love.graphics.rectangle("fill", 100, 134, 60, 10) + love.graphics.draw(self.bg, self.aq.hp, 102, 135) + self:drawScore(126, 135, self.score) + + if self.phase == "results" then + love.graphics.setColor(1, 1, 1, 1) + love.graphics.rectangle("fill", 20, 48, 120, 48) + love.graphics.setColor(0, 0, 0, 1) + love.graphics.rectangle("line", 20.5, 48.5, 119, 47) + Font.draw(Strings("SCORE %d", self.score), 32, 56) + if self.newRecord then + Font.draw(Strings("New record!"), 32, 68) + else + Font.draw(Strings("HI %d", self.game.save.surfingHighScore or 0), + 32, 68) + end + if self.resultShown > 30 then + Font.draw(Strings("A: done"), 32, 82) + end + love.graphics.setColor(1, 1, 1, 1) + end +end + +return SurfingMinigame diff --git a/src/ui/TitleState.lua b/src/ui/TitleState.lua index 979d24d7..88fd8293 100644 --- a/src/ui/TitleState.lua +++ b/src/ui/TitleState.lua @@ -33,11 +33,25 @@ end function TitleState:sgbPalettes(game) local P = require("src.render.PaletteFX") - local z = { - P.zone(P.pal(game.data, "LOGO2"), 0, 0, 19, 7), - P.zone(withPureWhite(P.pal(game.data, "LOGO1")), 0, 8, 19, 9), - P.zone(P.pal(game.data, "MEWMON"), 0, 10, 19, 17), - } + local z + if self.yellowLayout then + -- Yellow's BlkPacket_Titlescreen (pokeyellow data/sgb/sgb_packets.asm): + -- rows 0-7 logo band pal 0 (PAL_LOGO2), rows 8-17 Pikachu + copyright + -- pal 2 (PAL_MEWMON), then the two bubble-tail cells at (9,8)-(10,8) + -- back on pal 0. No Red/Blue LOGO1 ribbon band. + local logoPal = P.pal(game.data, "LOGO2") + z = { + P.zone(logoPal, 0, 0, 19, 7), + P.zone(P.pal(game.data, "MEWMON"), 0, 8, 19, 17), + P.zone(logoPal, 9, 8, 10, 8), + } + else + z = { + P.zone(P.pal(game.data, "LOGO2"), 0, 0, 19, 7), + P.zone(withPureWhite(P.pal(game.data, "LOGO1")), 0, 8, 19, 9), + P.zone(P.pal(game.data, "MEWMON"), 0, 10, 19, 17), + } + end local top = game.stack and game.stack:top() local box = top and top.titleUiBox if box then @@ -61,6 +75,14 @@ local BLUE_CYCLE_SPECIES = { "VULPIX", "CHANSEY", "AERODACTYL", "JOLTEON", "SNORLAX", "GLOOM", "POLIWAG", "DODUO", "PORYGON", "GENGAR", "RAICHU", } +-- Yellow has no TitleMons table (engine/movie/title_yellow.asm is a fixed +-- Pikachu title). Until field.title.cycleSpecies is imported, keep a short +-- Pikachu-centric list so the Red/Blue cycling UI still has something to show. +local YELLOW_CYCLE_SPECIES = { + "PIKACHU", "EEVEE", "BULBASAUR", "CHARMANDER", "SQUIRTLE", + "JIGGLYPUFF", "MEOWTH", "PSYDUCK", "VULPIX", "ABRA", + "GROWLITHE", "CUBONE", "GASTLY", "HITMONLEE", "SNORLAX", "DRAGONITE", +} local CYCLE_FRAMES = 240 -- the original waits ~4s between picks local function tryImage(path) @@ -93,9 +115,36 @@ function TitleState.new(game, opts) or "assets/generated/title/red_version.png") self.player = tryImage("assets/generated/title/player.png") self.blue = GameVersion.isBlue() - -- Blue cycles its own title mons and prints its ribbon contiguously; a - -- field.title.cycleSpecies override (mods / total conversions) still wins. - local defaultCycle = self.blue and BLUE_CYCLE_SPECIES or CYCLE_SPECIES + self.yellow = GameVersion.isYellow() + or title.layout == "yellow_pikachu" + -- Yellow title is a fixed Pikachu composition (title_yellow.asm), not + -- TitleMons cycling. Prefer composed pikachu.png from the Yellow import. + self.yellowPikachu = self.yellow and tryImage(imagePath(title.pikachu) + or "assets/generated/title/pikachu.png") or nil + self.yellowBubble = self.yellow and tryImage(imagePath(title.pikaBubble) + or "assets/generated/title/pika_bubble.png") or nil + self.yellowLayout = self.yellow and self.yellowPikachu ~= nil + if self.yellowLayout then + -- title.asm boot: hSCY starts at $40 with the logo parked above the + -- viewport; .bouncePokemonLogoLoop drops it in with an overshoot + -- bounce, then the whoosh, the speech bubble, and PikachuCry1 before + -- the title music starts. Blink overlays are the OB tile swaps of + -- DoTitleScreenFunction. + self.eyesHalf = tryImage("assets/generated/title/eyes_half.png") + self.eyesClosed = tryImage("assets/generated/title/eyes_closed.png") + self.scy = 0x40 + self.phase = "drop" + self.dropStep, self.dropLeft = 1, nil + self.showBubble = false + self.blinkTimer = 0 + self.blinkAt = nil + else + self.phase = "loop" + self.showBubble = true + end + local defaultCycle = self.yellowLayout and { "PIKACHU" } + or (self.yellow and YELLOW_CYCLE_SPECIES) + or (self.blue and BLUE_CYCLE_SPECIES or CYCLE_SPECIES) self.cycleSpecies = (type(title.cycleSpecies) == "table" and #title.cycleSpecies > 0) and title.cycleSpecies or defaultCycle @@ -107,6 +156,14 @@ function TitleState.new(game, opts) end function TitleState:enter() + -- Yellow defers the title theme until after the logo drop and + -- Pikachu's cry (title.asm plays MUSIC_TITLE_SCREEN only after + -- WaitForSoundToFinish on PikachuCry1) + if self.yellowLayout then return end + self:startMusic() +end + +function TitleState:startMusic() local data = self.game.data local song = self.title.music or "Music_TitleScreen" if data.audio and data.audio.songs and data.audio.songs[song] then @@ -114,6 +171,83 @@ function TitleState:enter() end end +-- .TitleScreenPokemonLogoYScrolls: { dy per frame, frames }; the -3 +-- rebound step lands with SFX_INTRO_CRASH +local DROP_STEPS = { + { -4, 16 }, { 3, 4 }, { -3, 4 }, { 2, 2 }, { -2, 2 }, { 1, 2 }, { -1, 2 }, +} + +-- the boot cinematic up to the interactive loop; one call per frame +function TitleState:updateSequence() + local Sound = require("src.core.Sound") + local data = self.game.data + if self.phase == "drop" then + local step = DROP_STEPS[self.dropStep] + if not step then + self.phase = "settle" + self.timer = 0 + return + end + if self.dropLeft == nil then + self.dropLeft = step[2] + if step[1] == -3 then Sound.play(data, "Intro_Crash") end + end + self.scy = self.scy + step[1] + self.dropLeft = self.dropLeft - 1 + if self.dropLeft <= 0 then + self.dropStep = self.dropStep + 1 + self.dropLeft = nil + end + elseif self.phase == "settle" then + -- ld c, 36 / DelayFrames, then the whoosh and the bubble + self.timer = self.timer + 1 + if self.timer >= 36 then + Sound.play(data, "Intro_Whoosh") + self.showBubble = true + self.phase = "bubble" + self.timer = 0 + end + elseif self.phase == "bubble" then + self.timer = self.timer + 1 + if self.timer >= 3 then + self.crySrc = Sound.playPikaCry(data, 1) + self.phase = "cry" + self.timer = 0 + end + elseif self.phase == "cry" then + -- WaitForSoundToFinish before the music starts + self.timer = self.timer + 1 + local playing = self.crySrc and self.crySrc.isPlaying + and self.crySrc:isPlaying() + if not playing or self.timer > 180 then + self.crySrc = nil + self:startMusic() + self.phase = "loop" + self.blinkTimer = 0 + end + end +end + +-- DoTitleScreenFunction.CheckTimer: an 8-bit frame counter blinks at 0, +-- $80 and $90; the blink itself runs half/closed/half over 9 frames +function TitleState:updateBlink() + local t = self.blinkTimer + self.blinkTimer = (t + 1) % 256 + if t == 0 or t == 0x80 or t == 0x90 then self.blinkAt = 0 end + if self.blinkAt then + self.blinkAt = self.blinkAt + 1 + if self.blinkAt > 9 then self.blinkAt = nil end + end +end + +-- the blink overlay for this frame (nil = open eyes) +function TitleState:blinkOverlay() + local at = self.blinkAt + if not at then return nil end + if at <= 3 or at > 6 then return self.eyesHalf end + return self.eyesClosed +end + function TitleState:currentSprite() local species = self.cycleSpecies[self.cycleIndex] local cached = self.sprites[species] @@ -219,9 +353,26 @@ function TitleState:openMenu() end function TitleState:update(dt) + if self.yellowLayout then + if self.phase ~= "loop" then + self:updateSequence() + return -- input is ignored until the cinematic lands (title.asm) + end + self:updateBlink() + local input = self.game.input + if input:wasPressed("start") or input:wasPressed("a") then + -- .go_to_main_menu voices PikachuCry11 on the way out + local Sound = require("src.core.Sound") + if not Sound.playPikaCry(self.game.data, 11) then + Sound.playCry(self.game.data, "PIKACHU") + end + self:openMenu() + end + return + end self.timer = self.timer + 1 self.blink = (self.blink + 1) % 60 - if self.timer >= CYCLE_FRAMES then + if not self.yellowLayout and self.timer >= CYCLE_FRAMES then self.timer = 0 -- random pick that never repeats the current one if #self.cycleSpecies > 1 then @@ -238,9 +389,11 @@ function TitleState:update(dt) end local input = self.game.input if input:wasPressed("start") or input:wasPressed("a") then - -- the title mon cries when you leave the title (.finishedWaiting) + -- the title mon cries when you leave the title (.finishedWaiting); + -- Yellow's fixed Pikachu title always cries Pikachu. require("src.core.Sound").playCry(self.game.data, - self.cycleSpecies[self.cycleIndex]) + self.yellowLayout and "PIKACHU" + or self.cycleSpecies[self.cycleIndex]) self:openMenu() end end @@ -248,50 +401,65 @@ end -- The original tilemap (engine/movie/title.asm): logo at tile (2,1), -- the version ribbon at (7,8), Red's title art as OAM at px (82,80), -- the title mon in the 7x7 box at tile (5,10), copyright on row 17. +-- Yellow (title_yellow.asm): logo (2,1), speech bubble (6,4), Pikachu +-- (4,8) 12x9 — no version ribbon, no cycling mon, no Red OAM. function TitleState:draw() love.graphics.setColor(1, 1, 1, 1) love.graphics.rectangle("fill", 0, 0, 160, 144) + local scrollY = self.yellowLayout and -(self.scy or 0) or 0 if self.logo then - love.graphics.draw(self.logo, 16, 8) + love.graphics.draw(self.logo, 16, 8 + scrollY) else love.graphics.setColor(0, 0, 0, 1) - Font.draw(self.blue and "POKéMON BLUE" or Strings("POKéMON RED"), - (160 - 12 * 8) / 2, 24) + local brand = self.yellow and "POKéMON YELLOW" + or (self.blue and "POKéMON BLUE" or Strings("POKéMON RED")) + Font.draw(brand, (160 - 12 * 8) / 2, 24 + scrollY) love.graphics.setColor(1, 1, 1, 1) end - if self.version then - local iw, ih = self.version:getDimensions() - if self.blue then - -- Blue prints its ribbon contiguously ("Blue Version", hlcoord 7,8). - -- The extracted strip packs those eight glyph tiles into image tiles - -- 0..7 (tiles 8..9 are blank), so draw that 64px run at px (56, 64). - love.graphics.draw(self.version, - love.graphics.newQuad(0, 0, 64, 8, iw, ih), 56, 64) - else - -- Red's strip holds Red+Green+Version glyphs; the tilemap prints - -- tiles $60,$61 ("Red"), a space, then $65-$69 ("Version"). - love.graphics.draw(self.version, - love.graphics.newQuad(0, 0, 16, 8, iw, ih), 56, 64) - love.graphics.draw(self.version, - love.graphics.newQuad(40, 0, 40, 8, iw, ih), 80, 64) + if self.yellowLayout then + -- everything scrolls together through the logo drop (rSCY): screen + -- y = BG y - SCY, so the composition rides at -scy until it lands + local dy = scrollY + if self.yellowBubble and self.showBubble then + love.graphics.draw(self.yellowBubble, 48, 32 + dy) + end + -- hlcoord 4,8 → px (32, 64); composed 13x9 tile sprite + love.graphics.draw(self.yellowPikachu, 32, 64 + dy) + local overlay = self:blinkOverlay() + if overlay then + -- the eye OAM band sits at (56,80) on the landed screen + love.graphics.draw(overlay, 32 + 24, 64 + 16 + dy) + end + else + -- Yellow's Version_GFX slot holds a leftover "Blue Version" ribbon + -- (pokeyellow gfx/title/blue_version.png, unreferenced by title code); + -- the Yellow fallback layout draws no ribbon at all. + if self.version and not self.yellow then + local iw, ih = self.version:getDimensions() + if self.blue then + love.graphics.draw(self.version, + love.graphics.newQuad(0, 0, 64, 8, iw, ih), 56, 64) + else + love.graphics.draw(self.version, + love.graphics.newQuad(0, 0, 16, 8, iw, ih), 56, 64) + love.graphics.draw(self.version, + love.graphics.newQuad(40, 0, 40, 8, iw, ih), 80, 64) + end + end + local sprite = self:currentSprite() + if sprite then + local w, h = sprite:getDimensions() + local slide = (self.slideIn or 0) * 8 + love.graphics.draw(sprite, 40 + math.floor((56 - w) / 2) + slide, + 136 - h) + end + if self.player then + love.graphics.draw(self.player, 82, 80) end end - local sprite = self:currentSprite() - if sprite then - local w, h = sprite:getDimensions() - local slide = (self.slideIn or 0) * 8 -- scroll in from the right - -- bottom-aligned and centered in the (5,10)-(11,16) tile box - love.graphics.draw(sprite, 40 + math.floor((56 - w) / 2) + slide, - 136 - h) - end - -- Red is OAM in the original: he draws over the mon's box edge - if self.player then - love.graphics.draw(self.player, 82, 80) - end love.graphics.setColor(0, 0, 0, 1) - -- the copyright row (tile 2,17); copyrightText because field.title's - -- copyright key already names the extracted image strip - Font.draw(self.title.copyrightText or Strings("2026 bois club games"), 1, 136) + Font.draw(self.title.copyrightText or Strings("2026 bois club games"), + 1, 136 + scrollY) love.graphics.setColor(1, 1, 1, 1) end diff --git a/src/ui/YellowIntro.lua b/src/ui/YellowIntro.lua new file mode 100644 index 00000000..5a4e3c31 --- /dev/null +++ b/src/ui/YellowIntro.lua @@ -0,0 +1,740 @@ +-- Yellow's boot attract movie, a faithful port of PlayIntroScene +-- (pokeyellow engine/movie/intro_yellow.asm) over the extracted atlases +-- (gfx/intro/yellow_intro_1.2bpp -> intro/yellow_intro_1.png, atlas1, +-- 16x8 tiles; yellow_intro_2.2bpp -> yellow_intro_2.png, atlas2, 16x16 +-- tiles; clouds.2bpp -> intro/clouds.png, two 4-tile frames). +-- +-- Faithful pieces: the 18-scene jumptable with its 128/88-frame timers, +-- the animated-object system (YellowIntro_AnimatedObjectSpawnStateData / +-- Jumptable / FramesData / OAMData, data/sprite_anims/intro_frames.asm + +-- intro_oam.asm), the scene-7 per-scanline SCY sine wave +-- (YellowIntro_Copy8BitSineWave, +-4px period 32, rotated 1 line/frame), +-- the scene-3 SCX ramp to $68, the scene-11 cloud tile flip every 8 +-- frames, and the scene-14/15/16 BGP strobe / fade sequences +-- (YellowIntroPalSequence_f9dd6 / _f9e0a). BGP composes with the SGB +-- colorization through sgbPalettes (PalPacket_Generic = MEWMON, +-- PalPacket_PikachusBeach = PIKACHUS_BEACH), like the title screen. +-- +-- Deliberately dropped: the CGB-only OBJ-palette pokes of scenes 7/11 +-- (Func_f98a2 / Func_f98cb recolor 5-6 tiles of the surf/fly sprite), +-- OBP-vs-BGP divergence during the strobes (one whole-screen shade map +-- stands in for both), and the never-spawned objects $0/$4 (dead code, +-- intro_yellow.asm:173). +-- +-- Any of A/B/START skips the whole movie (PlayIntroScene:16-19). Pops +-- itself and calls onDone() when finished or skipped. + +local Music = require("src.core.Music") + +local YellowIntro = {} +YellowIntro.__index = YellowIntro +YellowIntro.isOpaque = true + +-- ------- data tables (data/sprite_anims/intro_oam.asm) ---------------- + +-- OAM lists: rows of { dy, dx, tileDelta, flip } +local function grid(rows, cols, dy0, dx0, tileForRC) + local list = {} + for r = 0, rows - 1 do + for c = 0, cols - 1 do + list[#list + 1] = { dy0 + r * 8, dx0 + c * 8, tileForRC(r, c), false } + end + end + return list +end + +local OAM = {} + +-- Unkn_fa17e: 2x2, tiles +0/+1 over +$10/+$11 +OAM.fa17e = grid(2, 2, -8, -8, function(r, c) return r * 0x10 + c end) + +-- Unkn_fa18f: 16x32; bottom two rows mirror their left half +OAM.fa18f = { + { -16, -8, 0x00 }, { -16, 0, 0x01 }, + { -8, -8, 0x10 }, { -8, 0, 0x11 }, + { 0, -8, 0x20 }, { 0, 0, 0x20, true }, + { 8, -8, 0x21 }, { 8, 0, 0x21, true }, +} + +-- Unkn_fa1b0: 32x40 (16-wide head rows, 32-wide mirrored body rows) +OAM.fa1b0 = { + { -24, -8, 0x00 }, { -24, 0, 0x01 }, + { -16, -8, 0x02 }, { -16, 0, 0x03 }, + { -8, -16, 0x04 }, { -8, -8, 0x05 }, { -8, 0, 0x06 }, { -8, 8, 0x04, true }, + { 0, -16, 0x07 }, { 0, -8, 0x08 }, { 0, 0, 0x08, true }, { 0, 8, 0x07, true }, + { 8, -16, 0x09 }, { 8, -8, 0x0a }, { 8, 0, 0x0a, true }, { 8, 8, 0x09, true }, + { 16, -16, 0x0b }, { 16, -8, 0x0c }, { 16, 0, 0x0c, true }, { 16, 8, 0x0b, true }, +} + +-- Unkn_fa201: 6x6 = 48x48, row r uses tiles +$r0..+$r5 +OAM.fa201 = grid(6, 6, -24, -24, function(r, c) return r * 0x10 + c end) + +-- Unkn_fa292: 5x5 = 40x40, row bases $00,$05,$10,$15,$20 +local FA292_ROW = { 0x00, 0x05, 0x10, 0x15, 0x20 } +OAM.fa292 = {} +for r = 0, 4 do + for c = 0, 4 do + OAM.fa292[#OAM.fa292 + 1] = + { -20 + r * 8, -16 + c * 8, FA292_ROW[r + 1] + c, false } + end +end + +-- Unkn_fa2f7: 32x8 mirrored streak +OAM.fa2f7 = { + { -4, -16, 0x00 }, { -4, -8, 0x01 }, + { -4, 0, 0x01, true }, { -4, 8, 0x00, true }, +} + +-- Unkn_fa308: two mirrored 16x16 clusters, 32px apart +OAM.fa308 = { + { -8, -24, 0x00 }, { -8, -16, 0x01 }, + { 0, -24, 0x02 }, { 0, -16, 0x03 }, + { -8, 8, 0x01, true }, { -8, 16, 0x00, true }, + { 0, 8, 0x03, true }, { 0, 16, 0x02, true }, +} + +-- Unkn_fa329: two mirrored 24x16 clusters +OAM.fa329 = { + { -8, -40, 0x00 }, { -8, -32, 0x01 }, { -8, -24, 0x02 }, + { 0, -40, 0x10 }, { 0, -32, 0x11 }, { 0, -24, 0x12 }, + { -8, 16, 0x02, true }, { -8, 24, 0x01, true }, { -8, 32, 0x00, true }, + { 0, 16, 0x12, true }, { 0, 24, 0x11, true }, { 0, 32, 0x10, true }, +} + +-- frameId -> { atlas2 tile offset, OAM list } +local FRAMES = { + [0x01] = { 0x96, OAM.fa17e }, [0x02] = { 0x98, OAM.fa17e }, + [0x03] = { 0x9a, OAM.fa17e }, + [0x04] = { 0x0c, OAM.fa18f }, [0x05] = { 0x0e, OAM.fa18f }, + [0x06] = { 0x3c, OAM.fa18f }, + [0x07] = { 0x60, OAM.fa1b0 }, [0x08] = { 0x70, OAM.fa1b0 }, + [0x09] = { 0x80, OAM.fa1b0 }, + [0x0a] = { 0x90, OAM.fa201 }, [0x0b] = { 0x00, OAM.fa201 }, + [0x0c] = { 0x06, OAM.fa201 }, + [0x0d] = { 0xc6, OAM.fa292 }, + [0x0e] = { 0x6d, OAM.fa2f7 }, + [0x0f] = { 0xf0, OAM.fa308 }, [0x10] = { 0xf4, OAM.fa308 }, + [0x11] = { 0xf8, OAM.fa308 }, + [0x12] = { 0x9c, OAM.fa329 }, [0x13] = { 0xec, OAM.fa329 }, +} + +-- frame scripts (intro_frames.asm): { {frameId, duration}, ..., loop=bool } +local FRAMESETS = { + [1] = { { 0x01, 4 }, { 0x02, 4 }, { 0x03, 4 }, loop = true }, + [2] = { { 0x04, 4 }, { 0x05, 4 }, { 0x06, 4 }, loop = true }, + [3] = { { 0x07, 4 }, { 0x08, 4 }, { 0x09, 4 }, loop = true }, + [5] = { { 0x0b, 32 } }, + [6] = { { 0x0c, 32 } }, + [7] = { { 0x0d, 32 } }, + [8] = { { 0x0e, 32 } }, + [9] = { { 0x0f, 31 }, { 0x11, 2 }, { 0x0f, 2 }, { 0x11, 2 }, + { 0x0f, 31 }, { 0x11, 2 }, { 0x0f, 23 }, { 0x10, 32 } }, + [10] = { { 0x12, 4 }, { 0x13, 4 }, loop = true }, +} + +-- object id -> { frameset, seq } (YellowIntro_AnimatedObjectSpawnStateData; +-- seq indexes the movement jumptable) +local SPAWN = { + [1] = { 1, "static" }, [2] = { 2, "static" }, [3] = { 3, "static" }, + [5] = { 5, "surf" }, [6] = { 6, "fly" }, [7] = { 7, "static" }, + [8] = { 8, "bar" }, [9] = { 9, "static" }, [10] = { 10, "static" }, +} + +-- speed-bar spawn rows (YellowIntroFlyingSpeedBarData; first byte is X -- +-- the source's "; y, x, speed" comment is wrong) +local SPEED_BARS = { + { 0xD0, 0x20, 2 }, { 0xF0, 0x30, 4 }, { 0xD0, 0x40, 6 }, + { 0xC0, 0x50, 8 }, { 0xE0, 0x60, 8 }, { 0xC0, 0x70, 6 }, + { 0xE0, 0x80, 4 }, { 0xF0, 0x90, 2 }, +} + +-- scene-6 sine (YellowIntro_Copy8BitSineWave.SineWave), signed SCY deltas +local WAVE = { 0, 0, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 0, + 0, 0, -1, -2, -2, -3, -3, -3, -4, -3, -3, -3, -2, -2, -1, 0 } + +-- scene-10 BG tilemaps (gfx/intro/unknown_f9b6e/f9be6/f9bf2.tilemap) +local SKY_MAP = { + { 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x60,0x61,0x62 }, + { 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x62,0x00,0x00,0x00 }, + { 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x62,0x00,0x00,0x00,0x00 }, + { 0x60,0x61,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x62,0x00,0x00,0x00,0x00,0x00 }, + { 0x00,0x00,0x63,0x60,0x61,0x60,0x61,0x02,0x02,0x02,0x02,0x60,0x61,0x62,0x00,0x00,0x00,0x00,0x00,0x00 }, + { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x62,0x63,0x62,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, +} +local BADGE_MAP = { + { 0x30, 0x31, 0x32, 0x33 }, { 0x40, 0x41, 0x42, 0x43 }, + { 0x50, 0x51, 0x52, 0x53 }, +} +local MARK_MAP = { { 0x12, 0x13 }, { 0x22, 0x23 } } + +-- scene-14 strobe (YellowIntroPalSequence_f9dd6): 13 groups of +-- $e4,$c0,$c0,$e4 with the 52nd byte replaced by the terminator +local STROBE_SEQ = {} +for i = 1, 51 do + local m = (i - 1) % 4 + STROBE_SEQ[i] = (m == 1 or m == 2) and 0xC0 or 0xE4 +end +-- scene-16 fade to white (YellowIntroPalSequence_f9e0a) +local FADE_SEQ = { 0xE4, 0x90, 0x90, 0x40, 0x40, 0x00, 0x00 } + +-- Func_fa079's sine bob (Unkn_fa0aa, sine_table 32). The ROM table's +-- `dw sin(x)` truncates the 1.0 peak to $0000, which pops the sprite 8px +-- for one frame at every crest (a=16 / a=48) on hardware; the true peak +-- is restored here so the balloon glide loops smoothly. +local function bobOffset(phase) + local a = phase % 64 + local half = a % 32 + local v = math.floor(8 * math.sin(math.pi * half / 32)) + return a < 32 and v or -v +end + +local function tryImage(path) + local ok, img = pcall(love.graphics.newImage, path) + return ok and img or nil +end + +-- ------- state -------------------------------------------------------- + +function YellowIntro.new(game, onDone) + local self = setmetatable({}, YellowIntro) + self.game = game + self.onDone = onDone + self.finished = false + self.scene = 0 + self.timer = 0 + self.seqIndex = 0 + self.scx = 0 + self.bgp = 0xE4 + self.palName = "MEWMON" -- PalPacket_Generic + self.objects = {} + self.cloudFrame = 0 + + self.atlas1 = tryImage("assets/generated/intro/yellow_intro_1.png") + self.atlas2 = tryImage("assets/generated/intro/yellow_intro_2.png") + self.clouds = tryImage("assets/generated/intro/clouds.png") + self.quads = {} + + -- 32x32 BG tile grid (vBGMap0); signed addressing: id < $80 -> atlas1, + -- id >= $80 -> atlas2 (LCDC $e3, bit4 = 0) + self.bg = {} + self:bgLetterbox() + self.bgDirty = true + self.wave = nil + local ok, canvas = pcall(love.graphics.newCanvas, 256, 256) + self.bgCanvas = ok and canvas or nil + + -- Yellow boots exactly like Red up to the attract movie: the copyright + -- card and the GAME FREAK shooting-star splash play first. Reuse + -- IntroMovie's phases 1-2 and take over where its Gengar fight (phase + -- 3) would begin; a skip press during the pre-roll skips everything. + local IntroMovie = require("src.ui.IntroMovie") + local pre = IntroMovie.new(game, nil) + local baseStart = pre.startPhase + pre.finish = function(m) + if m.finished then return end + m.finished = true + self.pre = nil + self:finish() + end + pre.startPhase = function(m, phase) + if phase == 3 then + m.finished = true + self.pre = nil + self:beginScenes() + else + baseStart(m, phase) + end + end + self.pre = pre + return self +end + +function YellowIntro:sgbPalettes(game) + if self.pre then return self.pre:sgbPalettes(game) end + local P = require("src.render.PaletteFX") + local pal = P.pal(game.data, self.palName) + if not pal then return nil end + -- rBGP composed with the SGB colors: shade i displays palette color + -- ((bgp >> 2i) & 3), whole screen (one map stands in for BGP and OBP) + local bgp = self.bgp + local map = {} + for i = 0, 3 do + map[i] = math.floor(bgp / 4 ^ i) % 4 + end + return { P.whole(P.permute(pal, map)) } +end + +-- ------- BG helpers --------------------------------------------------- + +function YellowIntro:bgFill(id) + for y = 0, 31 do + local row = self.bg[y] or {} + self.bg[y] = row + for x = 0, 31 do row[x] = id end + end + self.bgDirty = true +end + +-- Func_f9e5f: rows 0-3 / 14-17 tile $01, rows 4-13 tile $00 +function YellowIntro:bgLetterbox() + self:bgFill(0x01) + for y = 4, 13 do + for x = 0, 31 do self.bg[y][x] = 0x00 end + end + for y = 18, 31 do + for x = 0, 31 do self.bg[y][x] = 0x00 end + end + self.bgDirty = true +end + +function YellowIntro:bgBlit(col, row, map) + for r, line in ipairs(map) do + for c, id in ipairs(line) do + self.bg[(row + r - 1) % 32][(col + c - 1) % 32] = id + end + end + self.bgDirty = true +end + +function YellowIntro:quadFor(image, tile) + local key = image + local cacheByImage = self.quads[key] + if not cacheByImage then + cacheByImage = {} + self.quads[key] = cacheByImage + end + local quad = cacheByImage[tile] + if not quad then + local iw, ih = image:getDimensions() + quad = love.graphics.newQuad( + (tile % 16) * 8, math.floor(tile / 16) * 8, 8, 8, iw, ih) + cacheByImage[tile] = quad + end + return quad +end + +function YellowIntro:rebuildBgCanvas() + if not self.bgCanvas then return end + love.graphics.push("all") + love.graphics.setCanvas(self.bgCanvas) + love.graphics.clear(1, 1, 1, 1) + love.graphics.setColor(1, 1, 1, 1) + for y = 0, 31 do + for x = 0, 31 do + local id = self.bg[y][x] + local image, tile + if id < 0x80 then + image, tile = self.atlas1, id + else + image, tile = self.atlas2, id + end + if image then + -- scene-11 cloud animation retargets BG tiles $60-$63 at the + -- clouds sheet (VBlank copy to $9600); frame = clouds row 0/1 + if self.clouds and id >= 0x60 and id <= 0x63 then + local cw, ch = self.clouds:getDimensions() + love.graphics.draw(self.clouds, + love.graphics.newQuad((id - 0x60) * 8, self.cloudFrame * 8, + 8, 8, cw, ch), x * 8, y * 8) + else + love.graphics.draw(image, self:quadFor(image, tile), x * 8, y * 8) + end + end + end + end + love.graphics.pop() + self.bgDirty = false +end + +-- ------- objects ------------------------------------------------------ + +function YellowIntro:spawn(id, x, y) + local spec = SPAWN[id] + local obj = { + id = id, frameset = spec[1], seq = spec[2], + x = x, y = y, xoff = 0, yoff = 0, + step = 1, wait = 0, held = false, + fieldB = 0, fieldC = 0, + } + local script = FRAMESETS[obj.frameset] + obj.wait = script[1][2] + self.objects[#self.objects + 1] = obj + return obj +end + +function YellowIntro:clearObjects() + self.objects = {} +end + +local function updateFrameScript(obj) + if obj.held then return end + obj.wait = obj.wait - 1 + if obj.wait > 0 then return end + local script = FRAMESETS[obj.frameset] + if obj.step >= #script then + if script.loop then + obj.step = 1 + obj.wait = script[1][2] + else + obj.held = true -- endanim: hold last frame forever + end + return + end + obj.step = obj.step + 1 + obj.wait = script[obj.step][2] +end + +function YellowIntro:updateObjects() + for _, obj in ipairs(self.objects) do + if obj.seq == "bar" then + -- Func_fa062: constant velocity, 8-bit wrap + obj.x = (obj.x + obj.fieldB) % 256 + elseif obj.seq == "surf" then + -- Func_fa014, including the original's Y = X + 1 quirk: the + -- comparison register still holds X when Y is written, so the + -- sprite rides a 45-degree diagonal until X parks at $58 + if obj.x ~= 0x58 then + obj.x = (obj.x + 4) % 256 + obj.y = (obj.x + 1) % 256 + end + elseif obj.seq == "fly" then + -- Func_fa02b: rise 2px/frame to Y=$58, then a +-8px sine bob + -- with a 64-frame period (and the truncated-peak notch) + if obj.fieldB == 0 then + if obj.y ~= 0x58 then + obj.y = (obj.y - 2) % 256 + else + obj.fieldB = 1 + end + end + if obj.fieldB == 1 then + obj.yoff = bobOffset(obj.fieldC) + obj.fieldC = obj.fieldC + 1 + end + end + updateFrameScript(obj) + end +end + +function YellowIntro:drawObjects() + if not self.atlas2 then return end + for _, obj in ipairs(self.objects) do + local frameId = FRAMESETS[obj.frameset][obj.step][1] + local frame = FRAMES[frameId] + if frame then + local base, list = frame[1], frame[2] + for _, entry in ipairs(list) do + local dy, dx, delta, flip = entry[1], entry[2], entry[3], entry[4] + -- OAM position: screen = (X + dx - 8, Y + dy - 16) + local px = (obj.x + obj.xoff + dx - 8) % 256 + local py = (obj.y + obj.yoff + dy - 16) % 256 + if px < 160 and py < 144 then + local quad = self:quadFor(self.atlas2, base + delta) + if flip then + love.graphics.draw(self.atlas2, quad, px + 8, py, 0, -1, 1) + else + love.graphics.draw(self.atlas2, quad, px, py) + end + end + end + end + end +end + +-- ------- scenes ------------------------------------------------------- + +-- setup scenes run once and advance immediately; wait scenes count their +-- timer down (YellowIntro_CheckFrameTimerDecrement: N running frames, +-- expiry actions on frame N+1) +function YellowIntro:startScene(scene) + self.scene = scene + local t = self + if scene == 0 then + -- running pika 1 over the boot letterbox + t.palName = "MEWMON" + t.scx = 0 + t:bgLetterbox() + t:spawn(1, 0x58, 0x58) + t.timer = 130 + t.scene = 1 + elseif scene == 2 then + -- pikachu kick: 6x6 atlas2 block parked at BG col 20 row 6 (scrolled + -- in by scene 3) + 8 speed bars + t:bgFill(0x00) + local block = {} + for r = 0, 5 do + local line = {} + for c = 0, 5 do line[c + 1] = 0x90 + r * 0x10 + c end + block[r + 1] = line + end + t:bgBlit(20, 6, block) + for _, bar in ipairs(SPEED_BARS) do + local obj = t:spawn(8, bar[1], bar[2]) + obj.fieldB = bar[3] + end + t.palName = "PIKACHUS_BEACH" + t.timer = 128 + t.scene = 3 + elseif scene == 4 then + -- running pika 2 + t:clearObjects() + t.scx = 0 + t:bgLetterbox() + t:spawn(2, 0x58, 0x58) + t.palName = "MEWMON" + t.timer = 128 + t.scene = 5 + elseif scene == 6 then + -- surfing pika over the wavy sea (per-scanline SCY sine) + t.scx = 0 + t.wave = {} + for i = 0, 255 do t.wave[i] = WAVE[i % 32 + 1] end + t:bgFill(0x10) + for y = 0, 2 do + for x = 0, 31 do t.bg[y][x] = 0x00 end + end + for x = 0, 31 do t.bg[3][x] = x % 2 == 0 and 0x20 or 0x21 end + t:spawn(5, 0xF8, 0x40) + t.palName = "PIKACHUS_BEACH" + t.bgDirty = true + t.timer = 88 + t.scene = 7 + elseif scene == 8 then + -- running pika 3 + t:clearObjects() + t.wave = nil + t.scx = 0 + t:bgLetterbox() + t:spawn(3, 0x58, 0x58) + t.palName = "MEWMON" + t.timer = 128 + t.scene = 9 + elseif scene == 10 then + -- flying pika over clouds + badge + mark + t:clearObjects() + t.scx = 0 + t:bgFill(0x00) + for y = 0, 7 do + for x = 0, 31 do t.bg[y][x] = 0x02 end + end + t:bgBlit(0, 8, SKY_MAP) + t:bgBlit(12, 4, BADGE_MAP) + t:bgBlit(3, 7, MARK_MAP) + t:spawn(6, 0x58, 0x98) + t.palName = "PIKACHUS_BEACH" + t.timer = 128 + t.scene = 11 + elseif scene == 12 then + -- pika close-up: 12x8 atlas1 paste at BG (5,6) + fixups + t:clearObjects() + t.scx = 0 + t:bgLetterbox() + local paste = {} + for r = 0, 7 do + local line = {} + for c = 0, 11 do line[c + 1] = 0x04 + r * 0x10 + c end + paste[r + 1] = line + end + t:bgBlit(5, 6, paste) + t.bg[6][4] = 0x03 + t.bg[7][4] = 0x74 + t.bg[13][5] = 0x00 + t:spawn(9, 0x58, 0x60) + t.palName = "MEWMON" + t.timer = 128 + t.scene = 13 + elseif scene == 14 then + -- thunderbolt strobe; timer reused as the sequence index + t.seqIndex = 0 + t.scene = 14 + elseif scene == 15 then + t.timer = 40 + t.scene = 15 + elseif scene == 16 then + t.seqIndex = 0 + t.scene = 16 + elseif scene == 17 then + t.timer = 64 + t.scene = 17 + end +end + +function YellowIntro:enter() + if self.pre then return end -- pre-roll first; beginScenes takes over + self:beginScenes() +end + +-- InitYellowIntroGFXAndMusic: the movie's own music starts with scene 0 +function YellowIntro:beginScenes() + local data = self.game.data + local songs = data.audio and data.audio.songs + local song = songs and (songs.Music_YellowIntro and "Music_YellowIntro" + or songs.Music_IntroBattle and "Music_IntroBattle") + if song then pcall(Music.play, data, song, false) end + self:startScene(0) +end + +function YellowIntro:finish() + if self.finished then return end + self.finished = true + pcall(Music.stop) + self.game.stack:pop() + if self.onDone then self.onDone() end +end + +function YellowIntro:update(dt) + if self.finished then return end + if self.pre then + self.pre:update(dt) + return + end + local input = self.game.input + if input:wasPressed("a") or input:wasPressed("b") + or input:wasPressed("start") then + self:finish() + return + end + + local scene = self.scene + if scene == 1 or scene == 5 or scene == 9 then + if self.timer > 0 then + self.timer = self.timer - 1 + else + self:clearObjects() + self:startScene(scene + 1) + end + elseif scene == 3 then + if self.timer > 0 then + self.timer = self.timer - 1 + if self.scx ~= 0x68 then self.scx = self.scx + 4 end + else + self:clearObjects() + self:startScene(4) + end + elseif scene == 7 then + if self.timer > 0 then + self.timer = self.timer - 1 + self.scx = (self.scx + 2) % 256 + -- rotate the sine phase 1 scanline per frame + local first = self.wave[0] + for i = 0, 254 do self.wave[i] = self.wave[i + 1] end + self.wave[255] = first + else + self:clearObjects() + self:startScene(8) + end + elseif scene == 11 then + if self.timer > 0 then + -- cloud tiles swap every 8 frames (YellowIntroScene11) + if self.timer % 8 == 0 then + local frame = math.floor(self.timer / 8) % 2 + if frame ~= self.cloudFrame then + self.cloudFrame = frame + self.bgDirty = true + end + end + self.timer = self.timer - 1 + else + self:clearObjects() + self:startScene(12) + end + elseif scene == 13 then + if self.timer > 0 then + self.timer = self.timer - 1 + else + -- spawn the thunderbolt over the close-up (object $A stays with $9) + self:spawn(10, 0x58, 0x68) + self:startScene(14) + end + elseif scene == 14 then + self.seqIndex = self.seqIndex + 1 + local v = STROBE_SEQ[self.seqIndex] + if v then + self.bgp = v + else + -- .expired: everything despawns, letterbox returns, logo/face + -- object $7 appears for the strobe scene + self:clearObjects() + self:bgLetterbox() + self.bgp = 0xE4 + self:spawn(7, 0x58, 0x58) + self:startScene(15) + end + elseif scene == 15 then + if self.timer > 0 then + if self.timer % 4 == 0 then + -- rBGP ^= $03: flips how the two lightest shades display + self.bgp = self.bgp == 0xE4 and 0xE7 or 0xE4 + end + self.timer = self.timer - 1 + else + self.bgp = 0xE4 + self:startScene(16) + end + elseif scene == 16 then + self.seqIndex = self.seqIndex + 1 + local v = FADE_SEQ[self.seqIndex] + if v then + self.bgp = v + else + self:startScene(17) + end + elseif scene == 17 then + if self.timer > 0 then + self.timer = self.timer - 1 + else + self:finish() + return + end + end + + self:updateObjects() + if self.bgDirty then self:rebuildBgCanvas() end +end + +function YellowIntro:draw() + if self.pre then + self.pre:draw() + return + end + love.graphics.setColor(1, 1, 1, 1) + love.graphics.rectangle("fill", 0, 0, 160, 144) + if self.bgCanvas then + if self.wave then + -- per-scanline SCY override, LY $10-$7F only (scene 7's VBlank + -- copy covers just that band; the rest render unshifted). Each + -- strip wraps horizontally like the BG map: SCX climbs past 96 + -- during the scene and a single quad would clamp at the canvas + -- edge and smear the right of the screen. + local cw, ch = self.bgCanvas:getDimensions() + local sx = self.scx % 256 + local w1 = math.min(160, 256 - sx) + for ly = 0, 143 do + local dy = (ly >= 16 and ly < 128) and self.wave[ly] or 0 + local sy = (ly + dy) % 256 + love.graphics.draw(self.bgCanvas, + love.graphics.newQuad(sx, sy, w1, 1, cw, ch), 0, ly) + if w1 < 160 then + love.graphics.draw(self.bgCanvas, + love.graphics.newQuad(0, sy, 160 - w1, 1, cw, ch), w1, ly) + end + end + else + local cw, ch = self.bgCanvas:getDimensions() + local sx = self.scx % 256 + love.graphics.draw(self.bgCanvas, + love.graphics.newQuad(sx, 0, math.min(160, 256 - sx), 144, cw, ch), + 0, 0) + if sx > 96 then + -- horizontal wrap (scene 3 scrolls the kick block in from col 20) + love.graphics.draw(self.bgCanvas, + love.graphics.newQuad(0, 0, 160 - (256 - sx), 144, cw, ch), + 256 - sx, 0) + end + end + end + self:drawObjects() + love.graphics.setColor(1, 1, 1, 1) +end + +return YellowIntro diff --git a/src/world/Collision.lua b/src/world/Collision.lua index a61458c2..69306c57 100644 --- a/src/world/Collision.lua +++ b/src/world/Collision.lua @@ -15,9 +15,11 @@ end -- entities: array of anything with cellX/cellY (and optional targetX/targetY -- while mid-step, so nobody walks into a cell being entered). +-- e.passable entities never block (Yellow's companion Pikachu: the player +-- walks straight through and it re-trails, pikachu_follow.asm). function Collision.occupied(entities, cx, cy, ignore) for _, e in ipairs(entities) do - if e ~= ignore then + if e ~= ignore and not e.passable then if (e.cellX == cx and e.cellY == cy) or (e.targetX == cx and e.targetY == cy) then return e diff --git a/src/world/OverworldController.lua b/src/world/OverworldController.lua index 8d854abe..13315d87 100644 --- a/src/world/OverworldController.lua +++ b/src/world/OverworldController.lua @@ -343,6 +343,9 @@ function OverworldState:setMap(mapId, x, y, facing, opts) self.pendingSeamMusic = nil self.entities = { self.player } for _, n in ipairs(self.npcs) do table.insert(self.entities, n) end + -- Yellow's companion Pikachu trails the player (never in + -- self.entities: it does not block movement, pikachu_follow.asm) + require("src.world.PikachuFollower").onMapEntered(Game, self) -- opts.keepMusic: the Oak-escort warp keeps MUSIC_MEET_PROF_OAK -- playing into the lab (BIT_NO_MAP_MUSIC in wStatusFlags7); @@ -870,6 +873,7 @@ function OverworldState:update(dt) for _, npc in ipairs(self.npcs) do npc:update(self.map, self.entities) end + require("src.world.PikachuFollower").update(Game, self) for _, g in ipairs(self.ghosts) do g.npc:update(g.map, g.peers) @@ -1494,7 +1498,12 @@ function OverworldState:interact() end if npc then if not npc.moving then - self:talkTo(npc) + if npc.pikachuFollower then + -- the companion answers directly (TalkToPikachu), no map text id + require("src.world.PikachuFollower").talk(Game, self, npc) + else + self:talkTo(npc) + end end interacted(self, fx, fy, "npc", npc) return @@ -2431,7 +2440,7 @@ end -- Prof. Oak's dex rating service (engine/events/pokedex_rating.asm): -- the completion line with seen AND owned counts, then the per-decade -- rating text. -function OverworldState:dexRating() +function OverworldState:dexRating(onDone) require("src.core.Sound").play(Game.data, "Pokedex_Rating") local seen, owned = 0, 0 for _ in pairs(Game.save.pokedex.seen or {}) do seen = seen + 1 end @@ -2449,7 +2458,7 @@ function OverworldState:dexRating() completion = completion :gsub("{NUM:hDexRatingNumMonsSeen[^}]*}", tostring(seen)) :gsub("{NUM:hDexRatingNumMonsOwned[^}]*}", tostring(owned)) - Game.stack:push(TextBox.new(Game, completion .. "\f" .. rating)) + Game.stack:push(TextBox.new(Game, completion .. "\f" .. rating, onDone)) end -- AnimateHealingMachine (engine/overworld/healing_machine.asm): balls @@ -2874,6 +2883,9 @@ function OverworldState:applyFieldPoison() mon.hp = 0 mon.status = nil -- the original clears status on the faint table.insert(fainted, mon) + -- callfar_ModifyPikachuHappiness PIKAHAPPY_PSNFNT (poison.asm) + require("src.world.PikachuFollower") + .modifyHappiness(save, "PSNFNT", mon) end end end @@ -2942,6 +2954,8 @@ end function OverworldState:onStepComplete() local p = self.player self.todSteps = (self.todSteps or 0) + 1 + -- UpdatePikachuHappinessAndMood rides the step counter (poison.asm) + require("src.world.PikachuFollower").onStep(Game.save) -- re-evaluate day/night so a step-based clock can fire world.tod_changed; -- paletteNameFor reads self.tod on the next paint if Runtime.wantsHook("world.tod") then @@ -4032,6 +4046,9 @@ function OverworldState:drawWorld() -- the "!" bubble above a trainer who spotted the player local function fxEmote() if not (self.emote and self.emote.npc) then return end + -- bubble = false is a silent hold (a Pikachu emotion that plays a + -- cry with no bubble still pauses the world for its beat) + if self.emote.bubble == false then return end local npc = self.emote.npc local ex = npc.px - cam.x + 4 local ey = npc.py - cam.y - 14 diff --git a/src/world/PikachuFollower.lua b/src/world/PikachuFollower.lua new file mode 100644 index 00000000..3d5c5b5c --- /dev/null +++ b/src/world/PikachuFollower.lua @@ -0,0 +1,375 @@ +-- Yellow's overworld companion Pikachu (pokeyellow engine/pikachu/ +-- pikachu_follow.asm ShouldPikachuSpawn / SpawnPikachu_, plus the +-- talk-to-it mood beat of engine/pikachu/pikachu_emotions.asm +-- TalkToPikachu). The follower is an NPC-shaped entity that lives in +-- ow.npcs (so the standard update/draw walk cycle runs) but never in +-- ow.entities -- like the original it does not block the player: walk +-- onto its cell and it simply trails to the cell you vacated. +-- +-- Happiness rides in save.pikachuHappiness (wPikachuHappiness, seeded 90 +-- by init_player_data.asm) and mood in save.pikachuMood (wPikachuMood, +-- neutral 128). modifyHappiness below is the full ModifyPikachuHappiness +-- port (engine/events/pikachu_happiness.asm): the HappinessChangeTable +-- delta picked by the current happiness hundred-band, then the +-- PikachuMoods byte nudging the mood; onStep is poison.asm's +-- UpdatePikachuHappinessAndMood (256-step coin-flip WALKING bump, mood +-- converging by 1 per step toward 128). + +local GameVersion = require("src.core.GameVersion") + +local PikachuFollower = {} + +local INDEX = 99 -- synthetic object index, clear of any map's real objects + +local OPPOSITE = { up = "down", down = "up", left = "right", right = "left" } + +-- wPikachuHappiness boot value (engine/movie/oak_speech/ +-- init_player_data.asm: happiness = 90) +local function happiness(save) + if save.pikachuHappiness == nil then save.pikachuHappiness = 90 end + return save.pikachuHappiness +end + +function PikachuFollower.bumpHappiness(save, delta) + save.pikachuHappiness = + math.max(0, math.min(255, happiness(save) + delta)) +end + +-- HappinessChangeTable (engine/events/pikachu_happiness.asm): delta by +-- happiness band (<100 / <200 / rest), plus the PikachuMoods target byte +-- ($80 leaves the mood alone). Keys mirror the PIKAHAPPY_* constants. +local HAPPINESS_CHANGES = { + LEVELUP = { 5, 3, 2, mood = 0x8a }, + USEDITEM = { 5, 3, 2, mood = 0x83 }, + USEDXITEM = { 1, 1, 0, mood = 0x80 }, + GYMLEADER = { 3, 2, 1, mood = 0x80 }, + USEDTMHM = { 1, 1, 0, mood = 0x94 }, + WALKING = { 2, 1, 1, mood = 0x80 }, + DEPOSITED = { -3, -3, -5, mood = 0x62 }, + FAINTED = { -1, -1, -1, mood = 0x6c }, + PSNFNT = { -5, -5, -10, mood = 0x62 }, + CARELESSTRAINER = { -5, -5, -10, mood = 0x6c }, + TRADE = { -10, -10, -20, mood = 0x00 }, +} + +-- the companion mon: a healthy (or any) party PIKACHU stands in for the +-- original's OT-checked starter, same approximation as shouldSpawn +function PikachuFollower.starterInParty(save, needHealthy) + for _, mon in ipairs(save.party or {}) do + if mon.species == "PIKACHU" + and (not needHealthy or (mon.hp or 0) > 0) then + return mon + end + end + return nil +end + +-- ModifyPikachuHappiness. mon is the party mon the event applied to for +-- the per-mon reasons (IsThisPartyMonStarterPikachu); GYMLEADER and +-- WALKING instead require any healthy starter in the party +-- (IsStarterPikachuAliveInOurParty). +function PikachuFollower.modifyHappiness(save, reason, mon) + if not GameVersion.isYellow() then return end + local row = HAPPINESS_CHANGES[reason] + if not row then return end + if reason == "GYMLEADER" or reason == "WALKING" then + if not PikachuFollower.starterInParty(save, true) then return end + elseif not (mon and mon.species == "PIKACHU") then + return + end + local h = happiness(save) + local band = h < 100 and 1 or h < 200 and 2 or 3 + save.pikachuHappiness = math.max(0, math.min(255, h + row[band])) + -- PikachuMoods: bytes above $80 only ever raise the mood (and defer to + -- a pending scripted emotion modifier), bytes below only lower it + local b = row.mood + if b ~= 0x80 then + local mood = save.pikachuMood or 128 + if b > 0x80 then + if mood < b and not save.pikachuEmotionModifier then + save.pikachuMood = b + end + elseif mood > b then + save.pikachuMood = b + end + end +end + +-- UpdatePikachuHappinessAndMood (engine/events/poison.asm): every 256th +-- step a coin flip on the WALKING bump; every step the mood converges by +-- 1 toward the neutral 128. +function PikachuFollower.onStep(save) + if not GameVersion.isYellow() then return end + save.pikachuWalkSteps = ((save.pikachuWalkSteps or 0) + 1) % 256 + local rand = love and love.math and love.math.random or math.random + if save.pikachuWalkSteps == 0 and rand(0, 1) == 1 then + PikachuFollower.modifyHappiness(save, "WALKING") + end + local mood = save.pikachuMood or 128 + if mood < 128 then + save.pikachuMood = mood + 1 + elseif mood > 128 then + save.pikachuMood = mood - 1 + end +end + +-- ShouldPikachuSpawn, approximated: Yellow, the lab gift happened, and a +-- healthy Pikachu is in the party (the original checks the starter's OT +-- identity; a traded second Pikachu standing in is accepted here). +-- Surfing and biking hide the follower (BIT_PIKACHU_SPAWN flags). +local function shouldSpawn(game, ow) + if not GameVersion.isYellow() then return false end + local save = game.save + if not (save.flags and save.flags.EVENT_GOT_STARTER) then return false end + if save.onBike or (ow.player and ow.player.surfing) then return false end + if not (game.data.sprites and game.data.sprites.SPRITE_PIKACHU) then + return false + end + for _, mon in ipairs(save.party or {}) do + if mon.species == "PIKACHU" and (mon.hp or 0) > 0 then return true end + end + return false +end + +local function makeFollower(game, ow, x, y, facing) + local NPC = require("src.world.NPC") + local npc = NPC.new(game.data, ow.map.id, { + index = INDEX, name = "PIKACHU_FOLLOWER", sprite = "SPRITE_PIKACHU", + movement = "STAY", range = "NONE", x = x, y = y, + }) + npc.pikachuFollower = true + npc.passable = true -- never blocks a step (Collision.occupied) + npc.facing = facing or "down" + return npc +end + +local function findFollower(ow) + for i, npc in ipairs(ow.npcs or {}) do + if npc.pikachuFollower then return npc, i end + end + return nil +end + +local function remove(ow) + local npc, i = findFollower(ow) + if not npc then return end + table.remove(ow.npcs, i) + for j, e in ipairs(ow.entities or {}) do + if e == npc then table.remove(ow.entities, j) break end + end +end + +-- spawn cell: directly behind the player's facing when that cell is +-- walkable, else the player's own cell (it trails out on the next step) +local function spawnCell(ow) + local p = ow.player + local dx = p.facing == "left" and 1 or p.facing == "right" and -1 or 0 + local dy = p.facing == "up" and 1 or p.facing == "down" and -1 or 0 + local bx, by = p.cellX + dx, p.cellY + dy + if ow.map:inBounds(bx, by) and ow.map:isWalkableCell(bx, by) then + return bx, by + end + return p.cellX, p.cellY +end + +function PikachuFollower.onMapEntered(game, ow) + remove(ow) + if not shouldSpawn(game, ow) then return end + local x, y = spawnCell(ow) + local npc = makeFollower(game, ow, x, y, ow.player.facing) + table.insert(ow.npcs, npc) + -- entities is the draw list; passable keeps it out of collision + table.insert(ow.entities, npc) + ow.pikachuTrail = { x = ow.player.cellX, y = ow.player.cellY } +end + +-- one follow step per frame: chase the cell the player last vacated +-- (pikachu_follow.asm keeps it one walk step behind) +function PikachuFollower.update(game, ow) + local npc = findFollower(ow) + if not npc then + if shouldSpawn(game, ow) then PikachuFollower.onMapEntered(game, ow) end + return + end + if not shouldSpawn(game, ow) then + remove(ow) + return + end + local p = ow.player + local trail = ow.pikachuTrail + if not trail then + trail = { x = p.cellX, y = p.cellY } + ow.pikachuTrail = trail + end + -- the player left the trailing cell: it becomes Pikachu's next goal + if p.cellX ~= trail.x or p.cellY ~= trail.y then + npc.goalX, npc.goalY = trail.x, trail.y + trail.x, trail.y = p.cellX, p.cellY + end + if npc.moving or not npc.goalX then return end + local gx, gy = npc.goalX, npc.goalY + if npc.cellX == gx and npc.cellY == gy then + npc.goalX, npc.goalY = nil, nil + return + end + -- fell more than a screen behind (forced movement, warp math): snap + local far = math.abs(npc.cellX - gx) + math.abs(npc.cellY - gy) + if far > 6 then + npc.cellX, npc.cellY = gx, gy + npc.px, npc.py = gx * 16, gy * 16 + npc.goalX, npc.goalY = nil, nil + return + end + local dir + if npc.cellX < gx then dir = "right" + elseif npc.cellX > gx then dir = "left" + elseif npc.cellY < gy then dir = "down" + else dir = "up" end + npc.facing = dir + npc.targetX = npc.cellX + (dir == "right" and 1 or dir == "left" and -1 or 0) + npc.targetY = npc.cellY + (dir == "down" and 1 or dir == "up" and -1 or 0) + npc.moving = true + npc.progress = 0 +end + +-- --------------------------------------------------------------------- +-- TalkToPikachu (engine/pikachu/pikachu_emotions.asm + data/pikachu/ +-- pikachu_emotions.asm): pick a scripted emotion, then play its bubble +-- and voiced PCM clip. The face-pic animation half of each emotion +-- (pikaemotion_pikapic) has no port; the bubble + clip carry the beat. +-- --------------------------------------------------------------------- + +-- PikachuEmotionTable, reduced to each entry's bubble + pikaemotion_pcm +-- clip (bubble names are the *_BUBBLE constants; nil cry = silent). +-- turnAway is pikaemotion_9 (face away from the player, emotion 30). +local EMOTIONS = { + [1] = {}, + [2] = { bubble = "SMILE_BUBBLE", cry = 35 }, + [3] = { cry = 40 }, + [4] = { cry = 29 }, + [5] = { cry = 31 }, + [6] = { bubble = "SKULL_BUBBLE" }, + [7] = { cry = 1 }, + [8] = { cry = 39 }, + [9] = { bubble = "SKULL_BUBBLE", cry = 6 }, + [10] = { bubble = "HEART_BUBBLE", cry = 5 }, + [11] = { bubble = "ZZZ_BUBBLE", cry = 37 }, + [12] = {}, + [13] = {}, + [14] = { bubble = "BOLT_BUBBLE", cry = 10 }, + [15] = { cry = 34 }, + [16] = { cry = 33 }, + [17] = { cry = 13 }, + [18] = {}, + [19] = { bubble = "HEART_BUBBLE", cry = 33 }, + [20] = { bubble = "HEART_BUBBLE", cry = 5 }, + [21] = { bubble = "FISH_BUBBLE" }, + [22] = { cry = 4 }, + [23] = { cry = 19 }, + [24] = { bubble = "EXCLAMATION_BUBBLE" }, + [25] = { bubble = "BOLT_BUBBLE", cry = 35 }, + [26] = { bubble = "ZZZ_BUBBLE", cry = 37 }, + [27] = { cry = 9 }, + [28] = { cry = 15 }, + [29] = { cry = 5 }, + [30] = { bubble = "HEART_BUBBLE", cry = 5, turnAway = true }, + [31] = { cry = 19 }, + [32] = { cry = 26 }, +} + +-- GetPikaPicAnimationScriptIndex (engine/pikachu/pikachu_pic_animation +-- .asm): mood picks the column (PikachuMoodLookupTable), happiness the +-- row (PikaPicAnimationScriptPointerLookupTable); the cell is the +-- emotion index. +local MOOD_THRESHOLDS = { 40, 127, 128, 210, 255 } +local MOOD_MATRIX = { + { limit = 50, 14, 14, 6, 13, 13 }, + { limit = 100, 9, 9, 5, 12, 12 }, + { limit = 130, 3, 3, 1, 8, 8 }, + { limit = 160, 3, 3, 4, 15, 15 }, + { limit = 200, 17, 17, 7, 2, 2 }, + { limit = 250, 17, 17, 16, 10, 10 }, + { limit = 255, 17, 17, 19, 20, 20 }, +} + +-- wPikachuEmotionModifier values 1-5 (MapSpecificPikachuExpression +-- .Emotions): scripted one-shots -- 21 is the fishing-rod reaction +local MODIFIER_EMOTIONS = { 18, 21, 23, 24, 25 } + +local function moodEmotion(save) + local mood = save.pikachuMood or 128 + local column = 5 + for i, threshold in ipairs(MOOD_THRESHOLDS) do + if mood <= threshold then column = i break end + end + local h = happiness(save) + local row = MOOD_MATRIX[#MOOD_MATRIX] + for _, r in ipairs(MOOD_MATRIX) do + if h <= r.limit then row = r break end + end + return row[column] +end + +-- MapSpecificPikachuExpression + TalkToPikachu's selection order +local function selectEmotion(game, ow, save) + local mapId = ow.map.id + -- Fan Club / Pewter Center map beats (the Bill's-house event variant + -- is owned by that map's script) + if mapId == "POKEMON_FAN_CLUB" then return 30 end + if mapId == "PEWTER_POKECENTER" then return 26 end + local starter = PikachuFollower.starterInParty(save) + if starter then + if starter.status == "SLP" then return 11 end + if starter.status then return 28 end + end + if mapId:find("POKEMON_TOWER_", 1, true) == 1 then return 22 end + local modifier = save.pikachuEmotionModifier + if modifier and MODIFIER_EMOTIONS[modifier] then + save.pikachuEmotionModifier = nil + return MODIFIER_EMOTIONS[modifier] + end + return moodEmotion(save) +end + +local function bubbleIndex(game, name) + local sheet = game.data.field and game.data.field.emotionBubbles + for i, b in ipairs(sheet and sheet.bubbles or {}) do + if b.name == name then return i end + end + return nil +end + +function PikachuFollower.talk(game, ow, npc, done) + npc:facePlayer(ow.player) + ow.player.facing = OPPOSITE[npc.facing] or ow.player.facing + local save = game.save + local emotion = selectEmotion(game, ow, save) + local e = EMOTIONS[emotion] or EMOTIONS[1] + if e.turnAway then + npc.facing = ow.player.facing -- pikaemotion_9: back to the player + end + local Sound = require("src.core.Sound") + if e.cry then + if not Sound.playPikaCry(game.data, e.cry) then + Sound.playCry(game.data, "PIKACHU") + end + end + -- caches built before the Yellow bubble sheet only carry the three + -- shared bubbles; a missing crop degrades to a silent hold + local bi = e.bubble and bubbleIndex(game, e.bubble) + ow.emote = { + npc = npc, frames = 50, bubble = bi or false, + onDone = done, + } +end + +-- npc the player is facing, when it is the follower (interact hook) +function PikachuFollower.at(ow, cx, cy) + local npc = findFollower(ow) + if npc and not npc.moving and npc.cellX == cx and npc.cellY == cy then + return npc + end + return nil +end + +return PikachuFollower diff --git a/tests/drivers/jessie_james_sites_test.lua b/tests/drivers/jessie_james_sites_test.lua new file mode 100644 index 00000000..1fe0cf0b --- /dev/null +++ b/tests/drivers/jessie_james_sites_test.lua @@ -0,0 +1,83 @@ +-- Driver: the three post-Mt-Moon Jessie & James ambushes +-- (data/scripts/yellow_jessie_james.lua). Yellow only: +-- POKEPORT_VERSION=yellow POKEPORT_DRIVER=tests/drivers/jessie_james_sites_test.lua love . +-- For each site: step onto the trigger tile, A-mash through motto / +-- challenge / battle / parting lines, then confirm the beat flag is set +-- and both duo objects are gone. +return function(game) + local U = dofile("tests/drivers/util.lua") + local DIR = os.getenv("SHOT_DIR") or "/tmp/shots" + local Pokemon = require("src.pokemon.Pokemon") + + -- A-mash needs a damaging first move (a stat move stalls the mash) + game.save.party = {} + local mon = Pokemon.new(game.data, "MEWTWO", 100) + mon.moves = { { id = "TACKLE", pp = 35 } } + table.insert(game.save.party, mon) + + local sites = { + { tag = "hideout", map = "ROCKET_HIDEOUT_B4F", tx = 24, ty = 14, + beat = "EVENT_BEAT_ROCKET_HIDEOUT_4_JESSIE_JAMES", + james = "ROCKETHIDEOUTB4F_JAMES", jessie = "ROCKETHIDEOUTB4F_JESSIE" }, + { tag = "tower", map = "POKEMON_TOWER_7F", tx = 10, ty = 12, + beat = "EVENT_BEAT_POKEMONTOWER_7_JESSIE_JAMES", + james = "POKEMONTOWER7F_JAMES", jessie = "POKEMONTOWER7F_JESSIE" }, + { tag = "silph", map = "SILPH_CO_11F", tx = 3, ty = 3, + beat = "EVENT_BEAT_SILPH_CO_11F_JESSIE_JAMES", + james = "SILPHCO11F_JAMES", jessie = "SILPHCO11F_JESSIE" }, + } + + local function visible(ow, name) + for _, n in ipairs(ow.npcs) do + if n.def and n.def.name == name then return true end + end + return false + end + + for _, s in ipairs(sites) do + -- heal between fights and re-arm the site + for _, m in ipairs(game.save.party) do + m.hp = m.stats.hp + m.moves[1].pp = 35 + end + game.save.flags[s.beat] = nil + + -- step onto the trigger from below; fall back to above if blocked + U.teleport(game, s.map, s.tx, s.ty + 1, "up") + local ow = game.overworld + U.hold(game, "up", 20) + U.wait(10) + if not ow.runner:isRunning() + and (ow.player.cellX ~= s.tx or ow.player.cellY ~= s.ty) then + U.teleport(game, s.map, s.tx, s.ty - 1, "down") + ow = game.overworld + U.hold(game, "down", 20) + U.wait(10) + end + U.log(s.tag, "player at", ow.player.cellX, ow.player.cellY, + "runner:", tostring(ow.runner:isRunning())) + U.shot(game, DIR .. ("/jj_%s_0_trigger.png"):format(s.tag)) + + local settled = false + for i = 1, 3000 do + if game.stack:top() == ow and not ow.runner:isRunning() + and #ow.scriptMoves == 0 and game.save.flags[s.beat] then + settled = true + break + end + if i == 120 then + U.shot(game, DIR .. ("/jj_%s_1_scene.png"):format(s.tag)) + end + U.tap(game, "a") + U.wait(3) + end + U.shot(game, DIR .. ("/jj_%s_2_done.png"):format(s.tag)) + U.log(s.tag, "settled:", tostring(settled), + "flag:", tostring(game.save.flags[s.beat]), + "james visible:", tostring(visible(ow, s.james)), + "jessie visible:", tostring(visible(ow, s.jessie))) + end + + U.log("DONE") + love.event.quit() +end diff --git a/tests/drivers/surfing_minigame_test.lua b/tests/drivers/surfing_minigame_test.lua new file mode 100644 index 00000000..5fb6145d --- /dev/null +++ b/tests/drivers/surfing_minigame_test.lua @@ -0,0 +1,92 @@ +-- Driver: Summer Beach House gate + Surfing Pikachu minigame +-- (data/scripts/yellow_beach_house.lua, src/ui/SurfingMinigame.lua). +-- POKEPORT_VERSION=yellow POKEPORT_DRIVER=tests/drivers/surfing_minigame_test.lua love . +-- Talks to the Surfin' Dude without a surfing Pikachu (burger line), +-- then with one: plays a run -- paddle, jump, spin, land -- rides to +-- the results card, and checks the high score persisted; finally pokes +-- the printer for the hi-score print offer. +return function(game) + local U = dofile("tests/drivers/util.lua") + local DIR = os.getenv("SHOT_DIR") or "/tmp/shots" + local Pokemon = require("src.pokemon.Pokemon") + + game.save.party = { Pokemon.new(game.data, "PIKACHU", 50) } + + U.teleport(game, "SUMMER_BEACH_HOUSE", 2, 2, "up") + local ow = game.overworld + -- dude is at (2,3); stand at (2,2)... face down instead + ow.player.facing = "down" + U.wait(5) + + U.tap(game, "a") + U.wait(30) + U.shot(game, DIR .. "/surf_0_no_surf.png") + -- close the burger line fully + for _ = 1, 40 do + if game.stack:top() == ow then break end + U.tap(game, "a") + U.wait(4) + end + U.log("gate without SURF done") + + -- now teach SURF and retry: mash A through pitch + YES into the game + game.save.party[1].moves = { { id = "SURF", pp = 15 } } + local offerShot = false + for _ = 1, 300 do + local top = game.stack:top() + if top and top.seaY then break end + if not offerShot and top ~= ow and top and top.pages then + U.shot(game, DIR .. "/surf_1_offer.png") + offerShot = true + end + U.tap(game, "a") + U.wait(4) + end + local mg = game.stack:top() + U.log("minigame running:", tostring(mg and mg.seaY ~= nil)) + if mg and mg.seaY then + for _ = 1, 8 do U.tap(game, "a") U.wait(3) end -- paddle + U.shot(game, DIR .. "/surf_2_ride.png") + U.tap(game, "up") -- launch + U.hold(game, "right", 30) -- spin + U.shot(game, DIR .. "/surf_3_air.png") + -- let it land and ride out the rest of the run + for _ = 1, 4000 do + if mg.phase == "results" then break end + if mg.phase == "ride" and (U.frame() % 4) == 0 then + U.tap(game, "a") + end + U.wait(1) + end + U.shot(game, DIR .. "/surf_4_results.png") + U.log("phase:", mg.phase, "score:", mg.score, + "hi:", tostring(game.save.surfingHighScore)) + U.tap(game, "a") -- dismiss results + U.wait(20) + end + + -- printer: should offer the hi-score print after surfing this visit + U.teleport(game, "SUMMER_BEACH_HOUSE", 6, 2, "up") + ow = game.overworld + ow.surfedThisVisit = true + U.wait(5) + -- printer is a bg event on the top wall; poke the talk script directly + local MapScripts = require("data.scripts.init") + local handler = MapScripts.talkScript("SUMMER_BEACH_HOUSE", + "TEXT_SUMMERBEACHHOUSE_PRINTER") + U.log("printer handler:", type(handler)) + if type(handler) == "function" then + local finished = false + handler(game, ow, nil, function() finished = true end) + for _ = 1, 200 do + if finished then break end + U.tap(game, "a") + U.wait(4) + end + U.shot(game, DIR .. "/surf_5_printer.png") + U.log("printer flow finished:", tostring(finished)) + end + + U.log("DONE") + love.event.quit() +end diff --git a/tests/mod_audio_tests.lua b/tests/mod_audio_tests.lua index d5f423e9..d45ca5e4 100644 --- a/tests/mod_audio_tests.lua +++ b/tests/mod_audio_tests.lua @@ -1,8 +1,7 @@ --- Audio modding (M9): per-definition shape dispatch in Music/Sound, failure --- isolation instead of a latching global disable, the granular --- sfx/cries/map_songs merge, the ChipAsm assembler and its def-local blob --- mode in ChipAudio, the song-literal tables and their fallbacks, and the --- music.select hook plus the audio events. +-- Audio modding (M9): ChipAsm assembler and its def-local blob mode in +-- ChipAudio, chip/wav shape dispatch in Music/Sound, failure isolation, the +-- granular sfx/cries/map_songs merge, song-literal tables and their +-- fallbacks, and the music.select hook plus the audio events. package.path = "./?.lua;./?/init.lua;" .. package.path local S = require("tests.harness").suite("mod audio") @@ -18,12 +17,8 @@ _G.love = love local savedAudio, savedSound = love.audio, love.sound local assets = { - ["assets/theme.ogg"] = true, - ["assets/theme_loop.ogg"] = true, - ["assets/other.ogg"] = true, ["assets/beep.wav"] = true, - ["assets/chime.ogg"] = true, - ["assets/cry.ogg"] = true, + ["assets/chime.wav"] = true, } local sources = {} @@ -254,14 +249,14 @@ local waveSong = ChipAsm.song{ waves = { flatWave }, } local waveTrace = ChipAudio._traceFirstMusicSampleForTest(blobData, waveSong) -check(math.abs(waveTrace[1].value - 0.55) < 1e-9, +check(math.abs(waveTrace[1].value - 1) < 1e-9, "def-local waves drive the wave channel") -- def-local drums are honored over the ROM's noise headers local drumTrace = ChipAudio._traceFirstMusicSampleForTest(blobData, drumDef) check(drumTrace[1].drumSegments == 1, "def-local drums reach the noise channel") --- ------- data fixtures +-- ------- data fixtures (chip + wav only) local chipSong = ChipAsm.song{ channels = { { hw = 1, program = { @@ -272,31 +267,39 @@ local chipSong = ChipAsm.song{ } } }, } +local chipSongB = ChipAsm.song{ + channels = { { hw = 1, program = { + { notetype = { speed = 12, volume = 10, fade = 0 } }, + { octave = 5 }, + { note = "G", len = 8 }, + { loop = { count = 0, to = 1 } }, + } } }, +} + +local chipSfx = ChipAsm.sfx{ channels = { { hw = 1, program = { + { squareNote = { len = 8, volume = 15, fade = 1, frequency = 0x600 } }, +} } } } + local function fixtureData() return { audio = { songs = { Music_Chip = chipSong, - Music_File = { file = "assets/theme.ogg" }, - Music_Split = { file = "assets/theme.ogg", - loopFile = "assets/theme_loop.ogg" }, - Music_Other = { file = "assets/other.ogg" }, - Music_Broken = { file = "assets/missing.ogg" }, - Music_BikeRiding = { file = "assets/other.ogg" }, - Music_PalletTown = { file = "assets/theme.ogg" }, + Music_Other = chipSongB, + Music_Broken = { file = "assets/missing.wav" }, + Music_BikeRiding = chipSongB, + Music_PalletTown = chipSong, }, sfx = { Beep = "assets/beep.wav", - Chime = { file = "assets/chime.ogg", fanfare = true }, + Chime = { file = "assets/chime.wav", fanfare = true }, Level_Up = "assets/beep.wav", - Broken = { file = "assets/missing.ogg" }, - Chip_Sfx = ChipAsm.sfx{ channels = { { hw = 1, program = { - { squareNote = { len = 8, volume = 15, fade = 1, frequency = 0x600 } }, - } } } }, + Broken = { file = "assets/missing.wav" }, + Chip_Sfx = chipSfx, }, cries = {}, mapSongs = { PALLET_TOWN = "Music_PalletTown" }, - battle = { wild = "Music_Chip", wildWin = "Music_File" }, + battle = { wild = "Music_Chip", wildWin = "Music_Other" }, }, } end @@ -308,7 +311,7 @@ local function reset(data) return data end --- ------- dispatch: the branch follows the definition, not a global flag +-- ------- dispatch: chip and wav branches local data = reset(fixtureData()) @@ -318,38 +321,17 @@ check(lastSource() and lastSource().queueable, check(lastSource().playing, "the chip song started") local chipSource = lastSource() -Music.play(data, "Music_File") -check(lastSource() and not lastSource().queueable - and lastSource().file == "assets/theme.ogg", - "a file def becomes a stream source") +Music.play(data, "Music_Other") +check(lastSource() and lastSource().queueable and lastSource().playing, + "a second chip song streams through ChipAudio") check(not chipSource.playing, "the outgoing chip song was stopped") -check(lastSource().looping == true, "a looping file song loops") - --- intro/loop chaining now works regardless of import mode -Music.play(data, "Music_Split") -local intro = sources[#sources - 1] -local body = sources[#sources] -check(intro.file == "assets/theme.ogg" and body.file == "assets/theme_loop.ogg", - "a split def loads both files") -check(intro.looping == false and body.looping == true, - "the intro plays once and the body loops") -check(intro.playing and not body.playing, "the loop body waits for the intro") -intro.playing = false -Music.update(data) -check(body.playing, "update() chains the intro into the loop body") - --- a file song never latches chip playback off for the songs around it -Music.play(data, "Music_Chip") -check(lastSource().queueable and lastSource().playing, - "a chip song still plays after a file song") -check(not body.playing, "the outgoing file song was stopped") -- playOnce must survive the threaded "empty QueueableSource" window: -- Source:isPlaying is false until the first worker buffer lands, and that -- gap must not look like the jingle already ended (Poké Center heal). data = reset(fixtureData()) Music.playMap(data, "PALLET_TOWN", false, false) -check(Music.playOnce(data, "Music_Chip"), "playOnce starts a chip jingle") +check(Music.playOnce(data, "Music_Other"), "playOnce starts a chip jingle") local jingle = lastSource() local clearAwait = ChipAudio._simulateAwaitingFirstBufferForTest() check(clearAwait ~= nil, "test can force the awaiting-first-buffer window") @@ -374,17 +356,17 @@ check(lastSource() and lastSource().mode == "static" -- ------- failure isolation: a bad def costs one log line, nothing else data = reset(fixtureData()) -Music.play(data, "Music_File") +Music.play(data, "Music_Chip") local playing = lastSource() local before = loggedCount("bad song def") Music.play(data, "Music_Broken") -Music.play(data, "Music_File") +Music.play(data, "Music_Chip") Music.play(data, "Music_Broken") check(loggedCount("bad song def") == before + 1, "a broken song def is logged exactly once") check(playing.playing, "the previous song keeps playing through a bad def") Music.play(data, "Music_Other") -check(lastSource().file == "assets/other.ogg" and lastSource().playing, +check(lastSource().queueable and lastSource().playing, "a bad def does not disable the rest of the music") local sfxBefore = loggedCount("bad sfx def") @@ -397,32 +379,26 @@ Sound.play(data, "Beep") check(lastSource() and lastSource().file == "assets/beep.wav", "a bad sfx does not disable the rest of the effects") --- ------- cries: every authoring variant plays +-- ------- cries: chip and derived variants data = reset(fixtureData()) data.audio.cries.RHYDON = { header = { address = 0x4000, bank = 2, engine = 1 }, pitch = 0, length = 0, } -data.audio.cries.CHIPMON = { chip = ChipAsm.sfx{ channels = { { hw = 1, - program = { { squareNote = { len = 8, volume = 15, fade = 1, - frequency = 0x600 } } } } } }.chip, - pitch = 0, length = 0 } +data.audio.cries.CHIPMON = { chip = chipSfx.chip, pitch = 0, length = 0 } data.audio.cries.SHELLORD = { base = "CHIPMON", pitch = 0x2A, length = 0x50 } -data.audio.cries.FILEMON = { file = "assets/cry.ogg", pitch = 1.1 } data.audio.cries.CHAINMON = { base = "SHELLORD" } check(Sound.playCry(data, "CHIPMON"), "a chip cry plays") check(Sound.playCry(data, "SHELLORD"), "a derived cry plays") check(Sound.playCry(data, "CHAINMON"), "a derived cry chain resolves") -local fileCry = Sound.playCry(data, "FILEMON") -check(fileCry and fileCry.file == "assets/cry.ogg", "a file cry plays") -check(fileCry.pitch == 1.1, "a file cry honors its playback rate") check(Sound.playCry(data, "NOBODY") == nil, "an unregistered species is silent") -- GROWL/ROAR layer their own tempo shift on top of any cry shape -Sound.playMoveCry(data, "FILEMON", 0xC0) -check(math.abs(fileCry.pitch - 256 / (128 + 0xC0)) < 1e-9, - "playMoveCry layers the move's tempo shift onto a file cry") +local chipCry = Sound.playCry(data, "CHIPMON") +Sound.playMoveCry(data, "CHIPMON", 0xC0) +check(math.abs(chipCry.pitch - 256 / (128 + 0xC0)) < 1e-9, + "playMoveCry layers the move's tempo shift onto a chip cry") data.audio.cries.ORPHAN = { base = "MISSING" } local cryBefore = loggedCount("bad cry def") @@ -438,14 +414,14 @@ check(Music.special(data, "title") == "Music_TitleScreen", check(Music.special(data, "bike") == "Music_BikeRiding", "the bike role falls back to Music_BikeRiding") Music.playMap(data, "PALLET_TOWN", true, false) -check(lastSource().file == "assets/other.ogg", +check(lastSource().queueable, "the fallback outdoor set engages the bike theme") data = reset(fixtureData()) -data.audio.special = { bike = "Music_File" } +data.audio.special = { bike = "Music_Other" } data.audio.outdoorSongs = { Music_PalletTown = true } Music.playMap(data, "PALLET_TOWN", true, false) -check(lastSource().file == "assets/theme.ogg", +check(lastSource().queueable, "a renamed bike theme engages on outdoor maps") check(Music.special(data, "title") == "Music_TitleScreen", "roles the data table omits still fall back") @@ -453,7 +429,7 @@ check(Music.special(data, "title") == "Music_TitleScreen", data = reset(fixtureData()) data.audio.outdoorSongs = {} Music.playMap(data, "PALLET_TOWN", true, false) -check(lastSource().file == "assets/theme.ogg", +check(lastSource().queueable, "a map outside the outdoor set keeps its own theme on the bike") -- fanfare ducking: the shared table or the definition's own flag @@ -487,12 +463,12 @@ check(lastSource() ~= firstBeep, "Sound.invalidate drops the cached source") data = reset(fixtureData()) Music.play(data, "Music_Broken") check(#sources == 0, "a broken def creates no source") -data.audio.songs.Music_Broken = { file = "assets/other.ogg" } +data.audio.songs.Music_Broken = chipSongB Music.play(data, "Music_Broken") check(#sources == 0, "a failed label stays negatively cached") Music.reload() Music.play(data, "Music_Broken") -check(lastSource() and lastSource().file == "assets/other.ogg", +check(lastSource() and lastSource().queueable, "Music.reload re-resolves a repaired def") ChipAudio.invalidate() @@ -527,7 +503,7 @@ check(seen[3].reason == "victory" and seen[3].kind == "wild", "playVictory reaches the hook") Music.playOnce(data, "Music_Other") check(seen[4].reason == "once", "playOnce reaches the hook") -Music.play(data, "Music_Split") +Music.play(data, "Music_Chip") check(seen[5].reason == "direct", "a direct play defaults to the direct reason") -- returning nil silences the cue; returning a label plays that label @@ -535,27 +511,25 @@ Music.reload() resetSources() hooks:removeOwner("test") hooks:wrap("music.select", function() return nil end, nil, "silencer") -Music.play(data, "Music_File") +Music.play(data, "Music_Chip") check(#sources == 0, "a hook returning nil silences the cue") hooks:removeOwner("silencer") hooks:wrap("music.select", function(nextLink, song, ctx) - if song == "Music_File" then return nextLink("Music_Other", ctx) end + if song == "Music_Chip" then return nextLink("Music_Other", ctx) end return nextLink(song, ctx) end, nil, "swap") -Music.play(data, "Music_File") -check(lastSource().file == "assets/other.ogg", "a hook may swap the label") --- the swapped label is what dedupe compares, so re-asking still restarts --- nothing but a genuinely different choice does Music.play(data, "Music_Chip") +check(lastSource().queueable, "a hook may swap the label") +Music.play(data, "Music_Other") check(lastSource().queueable, "an unswapped label still plays") -- a throwing wrapper is skipped and the chain continues hooks:wrap("music.select", function() error("boom", 0) end, nil, "thrower") Music.reload() resetSources() -Music.play(data, "Music_File") -check(lastSource() and lastSource().file == "assets/other.ogg", +Music.play(data, "Music_Chip") +check(lastSource() and lastSource().queueable, "a throwing wrapper is skipped and the surviving chain still runs") hooks:removeOwner("thrower") hooks:removeOwner("swap") @@ -570,13 +544,13 @@ events:on("sound.played", function(p) played[#played + 1] = p end, nil, "test") Music.playMap(data, "PALLET_TOWN", false, false) check(started[1] and started[1].song == "Music_PalletTown" - and started[1].reason == "map" and started[1].chip == false, + and started[1].reason == "map" and started[1].chip == true, "music.started carries the song, reason and chip flag") -Music.play(data, "Music_Chip") +Music.play(data, "Music_Other") check(started[2].previous == "Music_PalletTown" and started[2].chip == true, "music.started names the song it replaced") Music.stop() -check(#stopped == 1 and stopped[1].song == "Music_Chip", +check(#stopped == 1 and stopped[1].song == "Music_Other", "music.stopped names the song that was playing") Music.stop() check(#stopped == 1, "stopping silence emits nothing") @@ -587,9 +561,9 @@ check(played[1] and played[1].kind == "sfx" and played[1].name == "Beep", Sound.playMove(data, { sound = "Chip_Sfx", pitch = 0x10, tempo = 0x90 }) check(played[2].kind == "move" and played[2].name == "Chip_Sfx", "sound.played fires for a move sound") -data.audio.cries.FILEMON = { file = "assets/cry.ogg" } -Sound.playCry(data, "FILEMON") -check(played[3].kind == "cry" and played[3].species == "FILEMON", +data.audio.cries.CHIPMON = { chip = chipSfx.chip, pitch = 0, length = 0 } +Sound.playCry(data, "CHIPMON") +check(played[3].kind == "cry" and played[3].species == "CHIPMON", "sound.played fires for a cry") Runtime.install(savedEvents, savedHooks) @@ -639,14 +613,22 @@ end local granularFiles = { ["mods/coast/manifest.json"] = manifestJson("coast", 2), ["mods/coast/main.lua"] = [[ +local ChipAsm = require("src.audio.ChipAsm") return function(mod) - mod.content.music:register("Music_CoastTown", { - file = "assets/theme.ogg", loopFile = "assets/theme_loop.ogg" }) + mod.content.music:register("Music_CoastTown", ChipAsm.song{ + channels = { { hw = 1, program = { + { notetype = { speed = 12, volume = 12, fade = 0 } }, + { octave = 4 }, { note = "C", len = 8 }, + { loop = { count = 0, to = 1 } }, + } } }, + }) mod.content.sfx:register("Shell_Found", { - file = "assets/chime.ogg", fanfare = true }) + file = "assets/chime.wav", fanfare = true }) mod.content.cries:register("SHELLORD", { header = { address = 16696, bank = 2, engine = 1 }, pitch = 42, length = 80 }) - mod.content.cries:register("REEFMON", { file = "assets/cry.ogg" }) + mod.content.cries:register("REEFMON", ChipAsm.sfx{ channels = { { hw = 1, + program = { { squareNote = { len = 4, volume = 15, fade = 1, + frequency = 0x500 } } } } } }) mod.content.map_songs:override("PALLET_TOWN", "Music_CoastTown") mod.content.cries:patch("RHYDON", { pitch = 200 }) mod.content.sfx:remove("Beep") @@ -660,7 +642,8 @@ merged.audio.cries.RHYDON = { local granular = Loader.new({ fs = memfs(granularFiles) }) check(granular:load(merged) == true, "the granular audio mod loads: " .. table.concat(granular.errors, "; ")) -check(merged.audio.songs.Music_CoastTown.loopFile == "assets/theme_loop.ogg", +check(merged.audio.songs.Music_CoastTown + and merged.audio.songs.Music_CoastTown.chip, "music merges into data.audio.songs") check(merged.audio.sfx.Shell_Found.fanfare == true, "sfx merges into data.audio.sfx") @@ -676,12 +659,12 @@ check(merged.audio.sfx.Beep == nil, "remove tombstones an sfx") -- the merged map song plays through the ordinary map path reset(merged) Music.playMap(merged, "PALLET_TOWN", false, false) -check(sources[1] and sources[1].file == "assets/theme.ogg" and sources[1].playing, +check(sources[1] and sources[1].queueable and sources[1].playing, "a mod's map song plays on the map it claims") -- a brand-new species sounds everywhere a vanilla one does local reefCry = Sound.playCry(merged, "REEFMON") -check(reefCry and reefCry.file == "assets/cry.ogg" and reefCry.playing, +check(reefCry and reefCry.playing, "a species the mod invented plays its registered cry") -- and the hook can still take the map theme away from it @@ -693,7 +676,7 @@ mapHooks:wrap("music.select", function(nextLink, song, ctx) end, nil, "night") reset(merged) Music.playMap(merged, "PALLET_TOWN", false, false) -check(lastSource().file == "assets/other.ogg", +check(lastSource().queueable, "music.select overrides the track for a map") Runtime.install(savedEvents, savedHooks) @@ -701,8 +684,15 @@ Runtime.install(savedEvents, savedHooks) local bootstrapFiles = { ["mods/tc/manifest.json"] = manifestJson("tc", 2), ["mods/tc/main.lua"] = [[ +local ChipAsm = require("src.audio.ChipAsm") return function(mod) - mod.content.music:register("Music_TC", { file = "assets/theme.ogg" }) + mod.content.music:register("Music_TC", ChipAsm.song{ + channels = { { hw = 1, program = { + { notetype = { speed = 12, volume = 12, fade = 0 } }, + { octave = 4 }, { note = "C", len = 8 }, + { loop = { count = 0, to = 1 } }, + } } }, + }) mod.content.map_songs:register("TC_TOWN", "Music_TC") end ]], @@ -722,14 +712,14 @@ local v1Files = { ["mods/legacy/manifest.json"] = manifestJson("legacy", 1), ["mods/legacy/main.lua"] = [[ return function(mod) - mod.content.audio:override("sfx", { Beep = "assets/other.ogg", + mod.content.audio:override("sfx", { Beep = "assets/chime.wav", Legacy_Only = "assets/beep.wav" }) end ]], ["mods/modern/manifest.json"] = manifestJson("modern", 2, '["legacy"]'), ["mods/modern/main.lua"] = [[ return function(mod) - mod.content.sfx:override("Beep", "assets/chime.ogg") + mod.content.sfx:override("Beep", "assets/beep.wav") end ]], } @@ -739,7 +729,7 @@ check(v1Loader:load(v1Data) == true, "the v1 audio registry still loads: " .. table.concat(v1Loader.errors, "; ")) check(v1Data.audio.sfx.Legacy_Only == "assets/beep.wav", "the v1 whole-table replacement still applies") -check(v1Data.audio.sfx.Beep == "assets/chime.ogg", +check(v1Data.audio.sfx.Beep == "assets/beep.wav", "a granular registration beats a v1 whole-table replacement") check(v1Data.audio._owners.sfx.Beep == "modern", "the granular writer owns the id even when a v1 table landed on it first") @@ -761,11 +751,11 @@ local badFiles = { ["mods/coast/manifest.json"] = manifestJson("coast", 2), ["mods/coast/main.lua"] = [[ return function(mod) - mod.content.music:register("Music_Bad", { file = "assets/missing.ogg" }) - mod.content.sfx:register("Sfx_Bad", { file = "assets/missing.ogg" }) - mod.content.sfx:register("Loop_Bad", { file = "assets/missing.ogg" }) - mod.content.cries:register("BADMON", { file = "assets/missing.ogg" }) - mod.content.sfx:register("Gone", { file = "assets/missing.ogg" }) + mod.content.music:register("Music_Bad", { file = "assets/missing.wav" }) + mod.content.sfx:register("Sfx_Bad", { file = "assets/missing.wav" }) + mod.content.sfx:register("Loop_Bad", { file = "assets/missing.wav" }) + mod.content.cries:register("BADMON", { file = "assets/missing.wav" }) + mod.content.sfx:register("Gone", { file = "assets/missing.wav" }) mod.content.sfx:remove("Gone") end ]], @@ -812,7 +802,7 @@ check(#badLoader.errors == errorsBefore + 4, "a known-bad def reports to Loader.errors once, not per play") -- an engine-owned def has no mod to blame, so it stays a console line -badData.audio.songs.Music_BaseBad = { file = "assets/missing.ogg" } +badData.audio.songs.Music_BaseBad = { file = "assets/missing.wav" } Music.play(badData, "Music_BaseBad") check(loggedCount("bad song def") > 0 and #badLoader.errors == errorsBefore + 4, "a base-owned failure never lands in Loader.errors") diff --git a/tools/build_rom_data.py b/tools/build_rom_data.py index 4e1813a6..8428812b 100755 --- a/tools/build_rom_data.py +++ b/tools/build_rom_data.py @@ -1,9 +1,9 @@ #!/usr/bin/env python3 -"""Build game data directly from a canonical Pokemon Red ROM. +"""Build game data directly from a canonical Pokemon Red/Blue/Yellow ROM. -It accepts one user-provided, canonical US Pokemon Red ROM. Symbol -addresses and assembly-erased names are bundled as non-ROM metadata, so no -pret/pokered checkout, RGBDS build, or external .sym file is required. +It accepts one user-provided, canonical US Gen-1 ROM. Symbol addresses and +assembly-erased names are bundled as non-ROM metadata, so no pret checkout, +RGBDS build, or external .sym file is required for the public ROM path. """ from __future__ import annotations @@ -21,8 +21,11 @@ from PIL import Image sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from extract import util # noqa: E402 -from rom_data import (RomImage, SymbolTable, bcd, decode_text, # noqa: E402 - decompress_pic, load_manifest, read_string) +from rom_data import ( # noqa: E402 + CANONICAL_BLUE_SHA1, CANONICAL_RED_SHA1, CANONICAL_YELLOW_SHA1, + RomImage, SymbolTable, bcd, decode_text, decompress_pic, load_manifest, + read_string, +) DATASETS = ( @@ -31,6 +34,19 @@ DATASETS = ( "text", "field", "battle_anims", ) +_TOOLS_DIR = os.path.dirname(os.path.abspath(__file__)) +VERSION_MANIFESTS = { + "red": os.path.join(_TOOLS_DIR, "rom_manifest.json"), + "blue": os.path.join(_TOOLS_DIR, "rom_manifest_blue.json"), + "yellow": os.path.join(_TOOLS_DIR, "rom_manifest_yellow.json"), +} +VERSION_SHA1 = { + "red": CANONICAL_RED_SHA1, + "blue": CANONICAL_BLUE_SHA1, + "yellow": CANONICAL_YELLOW_SHA1, +} +SHA1_TO_VERSION = {sha1: version for version, sha1 in VERSION_SHA1.items()} + GB_SHADES = ( (255, 255, 255, 255), (170, 170, 170, 255), @@ -46,6 +62,36 @@ def _symbol(symbols, name): raise ValueError(f"required symbol {name!r} is missing") from exc +def _has_symbol(symbols, name): + return name in symbols.by_name + + +def resolve_manifest_path(version, manifest_arg): + """Pick the shipped manifest for --version, or an explicit --manifest path.""" + if manifest_arg is not None: + return manifest_arg + path = VERSION_MANIFESTS[version] + if not os.path.isfile(path): + raise ValueError( + f"manifest for version {version!r} is missing: {path} " + f"(generate it before extracting)") + return path + + +def version_for_manifest(manifest, requested_version=None, manifest_explicit=False): + """Resolve game version from an explicit flag or the manifest romSha1.""" + rom_sha1 = manifest.get("romSha1") + detected = SHA1_TO_VERSION.get(rom_sha1) + if manifest_explicit: + # Explicit --manifest wins: hash/version come from the file itself. + return detected or requested_version or "red" + if requested_version and detected and requested_version != detected: + raise ValueError( + f"--version {requested_version} does not match manifest romSha1 " + f"{rom_sha1} ({detected})") + return detected or requested_version or "red" + + def extract_constants(manifest, out_dir): data = manifest["constants"] util.write_lua( @@ -227,8 +273,12 @@ def extract_tilesets(rom, symbols, manifest, out_dir, assets_dir): list(blocks_raw[offset:offset + 16]) for offset in range(0, len(blocks_raw), 16) ] + # Red/Blue keep collision lists in ROM0; Yellow moved them to bank 1 + # (pokeyellow Overworld_Coll at 01:4ac2). Pointers in $4000-$7FFF are + # banked; treat ROM0-range pointers as bank 0. + coll_bank = 0 if collision_pointer < 0x4000 else 1 walkable = sorted(_read_terminated( - rom, 0, collision_pointer, 0xFF)) + rom, coll_bank, collision_pointer, 0xFF)) warp_pointer = rom.word( warp_pointers.bank, warp_pointers.address + index * 2) warp_tiles = sorted(set(_read_terminated( @@ -356,19 +406,33 @@ def extract_sprites(rom, symbols, manifest, out_dir, assets_dir): pointer = rom.word(table.bank, address) first_half_length = rom.byte(table.bank, address + 2) bank = rom.byte(table.bank, address + 3) - byte_length = spec["imageWidth"] * spec["imageHeight"] // 4 - frames = spec["imageHeight"] // 16 + width = spec["imageWidth"] + height = spec["imageHeight"] + byte_length = width * height // 4 + frames = height // 16 expected_length = first_half_length * (2 if frames >= 6 else 1) if byte_length != expected_length: - raise ValueError( - f"{const_name}: ROM sprite length {expected_length} does not " - f"match atlas length {byte_length}") + # Commercial ROM sheet length wins over pret PNG atlases (Yellow's + # nurse.png is 16x64 but SpriteSheetPointerTable still stores 12 + # tiles / 192 bytes). + byte_length = expected_length + if byte_length * 4 % width: + raise ValueError( + f"{const_name}: ROM sprite length {byte_length} is not " + f"tile-aligned for width {width}") + height = byte_length * 4 // width + frames = height // 16 + expected_length = first_half_length * (2 if frames >= 6 else 1) + if byte_length != expected_length: + raise ValueError( + f"{const_name}: ROM sprite length {expected_length} does not " + f"match atlas length {width * spec['imageHeight'] // 4}") base = spec["imageBase"] if base not in written: _write_2bpp_png( rom.bytes(bank, pointer, byte_length), - spec["imageWidth"], spec["imageHeight"], + width, height, os.path.join(assets_dir, "sprites", base + ".png"), transparent_color0=True) written.add(base) @@ -1040,9 +1104,25 @@ def extract_palettes(rom, symbols, manifest, out_dir): "order": order, "pokemon": mon_pals, } + if _has_symbol(symbols, "CGBBasePalettes"): + cgb_table = _symbol(symbols, "CGBBasePalettes") + cgb = {} + for index, name in enumerate(order): + colors = [] + for color in range(4): + value = rom.word( + cgb_table.bank, cgb_table.address + index * 8 + color * 2) + colors.append([ + _scale5(value & 0x1F), + _scale5((value >> 5) & 0x1F), + _scale5((value >> 10) & 0x1F), + ]) + cgb[name] = colors + data["cgbBase"] = cgb + data["source"] = data["source"] + " + CGBBasePalettes" util.write_lua( os.path.join(out_dir, "palettes.lua"), data, - header="Source: canonical Pokemon Red ROM; 4 RGB colors per palette") + header="Source: canonical Gen-1 ROM; 4 RGB colors per palette") return data @@ -1216,7 +1296,9 @@ def extract_pokemon(rom, symbols, manifest, out_dir, assets_dir): type_by_id = _types_by_id(manifest) names = _symbol(symbols, "MonsterNames") base_stats = _symbol(symbols, "BaseStats") - mew_stats = _symbol(symbols, "MewBaseStats") + # Red/Blue keep Mew outside BaseStats at MewBaseStats; Yellow folds Mew + # into BaseStats at dex 151 (pret/pokeyellow), so the symbol is optional. + mew_stats = symbols.by_name.get("MewBaseStats") decoded_names = [] for index in range(len(species_order)): @@ -1232,7 +1314,7 @@ def extract_pokemon(rom, symbols, manifest, out_dir, assets_dir): ("MISSINGNO", "UNUSED", "FOSSIL_", "MON_GHOST")): continue dex = dex_by_species[species] - if species == "MEW": + if species == "MEW" and mew_stats is not None: row = rom.bytes(mew_stats.bank, mew_stats.address, 28) else: row = rom.bytes( @@ -1634,6 +1716,111 @@ def extract_field(rom, symbols, manifest, out_dir, assets_dir): raw_2bpp( "GameFreakLogoGraphics", 72, 8, "title/gamefreak_inc.png") + # Yellow fixed Pikachu title (pret/pokeyellow title_yellow.asm): tilemap + # composition over both tile banks -- PokemonLogoGraphics in vChars2 + # (BG ids $00-$7F), TitlePikachuBGGraphics in vChars1 (ids $80-$EF), + # TitlePikachuOBGraphics at vChars1 tile $70 (ids $F0-$FC, also the eye + # OAM tiles), PokemonLogoCornerGraphics at vChars1 tile $7D ($FD-$FF). + # Mirrors RomExtractor:extractYellowTitleArt. + if _has_symbol(symbols, "TitlePikachuBGGraphics"): + raw_2bpp( + "TitlePikachuBGGraphics", 128, 32, "title/pikachu_bg.png", + transparent=True) + raw_2bpp( + "TitlePikachuOBGraphics", 96, 8, "title/pikachu_ob.png", + transparent=True) + + def sheet_tiles(label, count, transparent=False): + symbol = _symbol(symbols, label) + raw = rom.bytes(symbol.bank, symbol.address, count * 16) + return [ + _decode_2bpp(raw[index:index + 16], 8, 8, transparent) + for index in range(0, len(raw), 16) + ] + + # tile counts = Graphics..GraphicsEnd symbol gaps in pokeyellow.sym + logo_tiles = sheet_tiles("PokemonLogoGraphics", 115) + corner_tiles = sheet_tiles("PokemonLogoCornerGraphics", 3) + bg_tiles = sheet_tiles("TitlePikachuBGGraphics", 64) + ob_tiles = sheet_tiles("TitlePikachuOBGraphics", 12) + ob_clear = sheet_tiles("TitlePikachuOBGraphics", 12, True) + + def tile_for(tid): + if tid < 0x80: + return logo_tiles[tid] + if tid < 0xF0: + return bg_tiles[tid - 0x80] + if tid < 0xFD: + return ob_tiles[tid - 0xF0] + return corner_tiles[tid - 0xFD] + + def matte_color0(pose): + from collections import deque + w, h = pose.size + seen = set() + q = deque() + + def add(x, y): + if (x, y) in seen or not (0 <= x < w and 0 <= y < h): + return + if pose.getpixel((x, y)) == (255, 255, 255, 255): + seen.add((x, y)) + q.append((x, y)) + for x in range(w): + add(x, 0); add(x, h - 1) + for y in range(h): + add(0, y); add(w - 1, y) + while q: + x, y = q.popleft() + pose.putpixel((x, y), (255, 255, 255, 0)) + add(x - 1, y); add(x + 1, y); add(x, y - 1); add(x, y + 1) + return pose + + def compose(cols, rows, cells): + pose = Image.new("RGBA", (cols * 8, rows * 8), (255, 255, 255, 0)) + for tid, cx, cy in cells: + pose.paste(tile_for(tid), (cx * 8, cy * 8)) + return pose + + def map_cells(label, cols, rows): + loc = _symbol(symbols, label) + ids = list(rom.bytes(loc.bank, loc.address, cols * rows)) + return [ + (tid, index % cols, index // cols) + for index, tid in enumerate(ids) + ] + + # 16x7 logo box at (2,1); overwrites the scrambled sequential rip + # above (Yellow's logo sheet is deduplicated, Red's is not) + _save_png( + compose(16, 7, map_cells("TitleScreenPokemonLogoTilemap", 16, 7)), + os.path.join(assets_dir, "title/pokemon_logo.png")) + + # 7x4 bubble at (6,4) + the two tail tiles poked at (9,8) + bubble_cells = map_cells("TitleScreenPikaBubbleTilemap", 7, 4) + bubble_cells += [(0x64, 3, 4), (0x65, 4, 4)] + _save_png( + matte_color0(compose(7, 5, bubble_cells)), + os.path.join(assets_dir, "title/pika_bubble.png")) + + # 12x9 Pikachu at (4,8) + right-ear edge tiles down column 16 and + # the baked OAM eyes (TitleScreenPikachuEyesOAMData, left eye + # x-flipped, attr $22) + pika_cells = map_cells("TitleScreenPikachuTilemap", 12, 9) + pika_cells += [(0x96, 12, 2), (0x9d, 12, 3), + (0xa7, 12, 4), (0xb1, 12, 5)] + pikachu = matte_color0(compose(13, 9, pika_cells)) + for ob_index, px, py, flip in ( + (1, 24, 16, True), (0, 32, 16, True), + (3, 24, 24, True), (2, 32, 24, True), + (0, 56, 16, False), (1, 64, 16, False), + (2, 56, 24, False), (3, 64, 24, False)): + eye = ob_clear[ob_index] + if flip: + eye = eye.transpose(Image.Transpose.FLIP_LEFT_RIGHT) + pikachu.paste(eye, (px, py), eye) + _save_png(pikachu, os.path.join(assets_dir, "title/pikachu.png")) + falling_star = raw_2bpp( "FallingStar", 8, 8, "intro/falling_star.png", transparent=True) @@ -1684,31 +1871,47 @@ def extract_field(rom, symbols, manifest, out_dir, assets_dir): (8, row * 8)) _save_png(star, os.path.join(assets_dir, "intro/big_star.png")) - gengar = _symbol(symbols, "FightIntroBackMon") - gengar_raw = rom.bytes(gengar.bank, gengar.address, 96 * 16) - gengar_tiles = [ - _decode_2bpp(gengar_raw[index:index + 16], 8, 8) - for index in range(0, len(gengar_raw), 16) - ] - for number in (1, 2, 3): - tilemap = _symbol(symbols, f"GengarIntroTiles{number}") - tile_ids = rom.bytes(tilemap.bank, tilemap.address, 49) - pose = Image.new("RGBA", (56, 56)) - for index, tile_id in enumerate(tile_ids): - pose.paste( - gengar_tiles[tile_id], - ((index % 7) * 8, (index // 7) * 8)) - pose = _matte_color0(pose) - _save_png( - pose, os.path.join( - assets_dir, "intro", f"gengar_{number}.png")) + # Yellow replaces the Gengar/Nidorino fight intro (no FightIntro* symbols). + # Still emit the Red/Blue asset paths so Title/Intro loaders stay happy. + if _has_symbol(symbols, "FightIntroBackMon"): + gengar = _symbol(symbols, "FightIntroBackMon") + gengar_raw = rom.bytes(gengar.bank, gengar.address, 96 * 16) + gengar_tiles = [ + _decode_2bpp(gengar_raw[index:index + 16], 8, 8) + for index in range(0, len(gengar_raw), 16) + ] + for number in (1, 2, 3): + tilemap = _symbol(symbols, f"GengarIntroTiles{number}") + tile_ids = rom.bytes(tilemap.bank, tilemap.address, 49) + pose = Image.new("RGBA", (56, 56)) + for index, tile_id in enumerate(tile_ids): + pose.paste( + gengar_tiles[tile_id], + ((index % 7) * 8, (index // 7) * 8)) + pose = _matte_color0(pose) + _save_png( + pose, os.path.join( + assets_dir, "intro", f"gengar_{number}.png")) + else: + blank = Image.new("RGBA", (56, 56), (0, 0, 0, 0)) + for number in (1, 2, 3): + _save_png( + blank, os.path.join( + assets_dir, "intro", f"gengar_{number}.png")) - for number, label in enumerate(( - "FightIntroFrontMon", "FightIntroFrontMon2", - "FightIntroFrontMon3"), start=1): - raw_2bpp( - label, 48, 48, f"intro/red_nidorino_{number}.png", - transparent=True, columns=True) + if _has_symbol(symbols, "FightIntroFrontMon"): + for number, label in enumerate(( + "FightIntroFrontMon", "FightIntroFrontMon2", + "FightIntroFrontMon3"), start=1): + raw_2bpp( + label, 48, 48, f"intro/red_nidorino_{number}.png", + transparent=True, columns=True) + else: + blank = Image.new("RGBA", (48, 48), (255, 255, 255, 0)) + for number in (1, 2, 3): + _save_png( + blank, os.path.join( + assets_dir, "intro", f"red_nidorino_{number}.png")) for number in (1, 2): _write_compressed_pic( @@ -1864,10 +2067,16 @@ def build(rom, symbols, manifest, out_dir, assets_dir, datasets): def main(): parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument("--rom", required=True, help="canonical Pokemon Red ROM") parser.add_argument( - "--manifest", - default=os.path.join(os.path.dirname(__file__), "rom_manifest.json")) + "--rom", required=True, + help="canonical US Pokemon Red, Blue, or Yellow ROM") + parser.add_argument( + "--version", choices=sorted(VERSION_MANIFESTS), default="red", + help="select the shipped manifest for this version (default: red)") + parser.add_argument( + "--manifest", default=None, + help="explicit manifest path (overrides --version default path; " + "RomImage hash still comes from the file's romSha1)") parser.add_argument("--out", default="data/generated") parser.add_argument("--assets", default="assets/generated") parser.add_argument("--clean", action="store_true") @@ -1877,8 +2086,13 @@ def main(): args = parser.parse_args() try: - manifest = load_manifest(args.manifest) - rom = RomImage(args.rom, manifest["romSha1"]) + manifest_explicit = args.manifest is not None + manifest_path = resolve_manifest_path(args.version, args.manifest) + manifest = load_manifest(manifest_path) + version = version_for_manifest( + manifest, args.version, manifest_explicit=manifest_explicit) + expected_sha1 = manifest.get("romSha1") or VERSION_SHA1[version] + rom = RomImage(args.rom, expected_sha1) symbols = SymbolTable(manifest["symbols"]) except (OSError, ValueError, KeyError, json.JSONDecodeError) as exc: print(f"error: {exc}", file=sys.stderr) @@ -1896,7 +2110,8 @@ def main(): except (ValueError, KeyError, IndexError) as exc: print(f"error: {exc}", file=sys.stderr) return 1 - print(f"\ndone: decoded {', '.join(datasets)} from ROM {rom.sha1}") + print( + f"\ndone: decoded {', '.join(datasets)} from {version} ROM {rom.sha1}") return 0 diff --git a/tools/extract/field.py b/tools/extract/field.py index 898fb298..36740642 100644 --- a/tools/extract/field.py +++ b/tools/extract/field.py @@ -755,14 +755,14 @@ def parse_badge_gates(pokered): def parse_preset_names(pokered): - """constants/player_constants.asm: the _RED preset name menus. + """constants/player_constants.asm: preset name menus. The naming menus (engine/movie/oak_speech/oak_speech2.asm with data/player/names.asm / names_list.asm) offer NEW NAME plus these - three presets each. + three presets each. Red/Blue gate the lists with IF DEF(_RED)/_BLUE; + Yellow ships a single ungated set (YELLOW/ASH/JACK, BLUE/GARY/JOHN). + read_asm resolves version conditionals via util.ASM_DEFINES. """ - # read_asm resolves the version conditionals (util.ASM_DEFINES), so - # only the _RED name set reaches us player, rival = [], [] path = os.path.join(pokered, "constants/player_constants.asm") for lineno, line in read_asm(path): @@ -1116,24 +1116,16 @@ def parse_credits(pokered): os.path.join(pokered, "constants/credits_constants.asm"), stop_at="NUM_CRED_STRINGS") - # CreditsTextPointers: CRED_* value -> string label + # CreditsTextPointers: CRED_* value -> string label. + # Version-gated CredVersion / CreditsText_Version bodies (Red/Blue IF + # DEF) are resolved by read_asm via util.ASM_DEFINES; Yellow has no + # gates and a single "YELLOW VERSION" string. pointers = [] strings = {} - skip = False label = None path = os.path.join(pokered, "data/credits/credits_text.asm") for lineno, line in read_asm(path): s = line.strip() - if re.match(r"IF\s+DEF\(_RED\)", s): - continue - if re.match(r"IF\s+DEF\(", s): - skip = True - continue - if s == "ENDC": - skip = False - continue - if skip: - continue m = re.match(r"dw\s+(\w+)$", s) if m: pointers.append(m.group(1)) @@ -1142,6 +1134,7 @@ def parse_credits(pokered): if m and m.group(1) != "CreditsTextPointers": label = m.group(1) continue + # Optional trailing @ terminator (Yellow omits it on some lines). m = re.match(r'db\s+(-\d+),\s*"([^"]*)"$', s) if m and label: strings[label] = { @@ -1445,9 +1438,20 @@ def extract(pokered, out_dir): or badge_gates["ROUTE_23"]["guards"][-1]["badge"] != "CASCADEBADGE" \ or len(badge_gates["ROUTE_22_GATE"]["coords"]) != 2: util.die("badge gate extraction sanity check failed") - if "RED" not in preset_names["player"] or "BLUE" not in preset_names["rival"] \ - or len(preset_names["player"]) != 3 or len(preset_names["rival"]) != 3: + if len(preset_names["player"]) != 3 or len(preset_names["rival"]) != 3: util.die("preset name extraction sanity check failed") + # Red expects RED/ASH/JACK + BLUE/GARY/JOHN. Yellow ships YELLOW/... with + # no IF DEF gates; Blue swaps player/rival. Only enforce the Red pair when + # building Red (ASM_DEFINES has _RED) or when RED already appears. + if "_RED" in util.ASM_DEFINES or "RED" in preset_names["player"]: + if "YELLOW" in preset_names["player"]: + pass # pokeyellow ungated presets; Red name check does not apply + elif "RED" not in preset_names["player"] \ + or "BLUE" not in preset_names["rival"]: + util.die("preset name extraction sanity check failed") + elif "YELLOW" in preset_names["player"]: + if "BLUE" not in preset_names["rival"]: + util.die("preset name extraction sanity check failed") if "ROCK_TUNNEL_1F" not in dark_maps["maps"]: util.die("dark map extraction sanity check failed") if warp_carpets["tiles"]["down"] != [0x01, 0x12, 0x17, 0x3D, 0x04, 0x18, 0x33] \ diff --git a/tools/make_yellow_manifest.py b/tools/make_yellow_manifest.py new file mode 100755 index 00000000..f1527e2b --- /dev/null +++ b/tools/make_yellow_manifest.py @@ -0,0 +1,478 @@ +#!/usr/bin/env python3 +"""Derive the Pokemon Yellow import manifest from the shipped Red manifest. + +Yellow is a separate pret tree (pokeyellow), not a `_YELLOW` flip of pokered. +Most of the ~3268 Red manifest symbols still exist under the same names in +pokeyellow.sym (~3123 with shifted addresses). The remainder need aliases, +synthetic addresses (Mew in BaseStats), or omission (FightIntro* — Yellow's +intro movie is different; RomExtractor must skip those). + +Map/object/sprite/tileset/text metadata diverge enough that those sections are +rebuilt from pokeyellow source (same helpers as make_rom_manifest.py), while +ROM-address tables and other Red-shaped sections keep the derive-and-remap +path. + +Usage mirrors make_blue_manifest.py: deep-copy Red, remap symbols, override +version-gated field bits, write tools/rom_manifest_yellow.json. +""" + +from __future__ import annotations + +import argparse +import copy +import json +import os +import sys + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +from extract import constants, field, util # noqa: E402 +from make_rom_manifest import ( # noqa: E402 + _music_label, + map_metadata, + simple_constants, + sprite_metadata, + text_metadata, + tileset_metadata, +) +import re # noqa: E402 +from rom_data import SymbolTable # noqa: E402 +from yellow_symbol_aliases import ( # noqa: E402 + FAN_CLUB_ID_RENAMES, + GAME_CORNER_ID_RENAMES, + MAP_CONST_RENAMES, + MAP_LABEL_RENAMES, + OMIT_INTRO_SYMBOLS, + SYMBOL_ALIASES, +) + +try: + from rom_data import CANONICAL_YELLOW_SHA1 +except ImportError: # pragma: no cover — constant lands with GameVersion work + CANONICAL_YELLOW_SHA1 = "cc7d03262ebfaf2f06772c1a480c7d9d5f4a38e1" + +DEV = "/Users/bryanbassett/Documents/development" +DEFAULT_RED = os.path.join(os.path.dirname(__file__), "rom_manifest.json") +DEFAULT_OUT = os.path.join(os.path.dirname(__file__), "rom_manifest_yellow.json") +DEFAULT_POKEYELLOW = os.path.join(DEV, "pokeyellow") +DEFAULT_SYMBOLS = os.path.join(DEV, "pokeyellow-symbols/pokeyellow.sym") + +BASE_STATS_ENTRY_SIZE = 28 +MEW_DEX_NUMBER = 151 + +# Yellow-only symbols Red never referenced. Title / intro / CGB tables must +# be injected so RomExtractor can rip them (make_yellow_manifest only remaps +# Red's name set by default). +YELLOW_EXTRA_SYMBOLS = ( + "TitlePikachuBGGraphics", + "TitlePikachuOBGraphics", + "TitleScreenPikachuTilemap", + "TitleScreenPikaBubbleTilemap", + "TitleScreenPokemonLogoTilemap", + "PokemonLogoCornerGraphics", + "YellowIntroGraphics1", + "YellowIntroGraphics2", + "YellowIntroCloudGFX", + "PikachuCriesPointerTable", + "CGBBasePalettes", + # the five Pikachu-only emotion bubbles (emotion_bubbles.asm) + "SkullEmote", + "HeartEmote", + "BoltEmote", + "ZzzEmote", + "FishEmote", + # Surfing Pikachu minigame sheets (gfx/surfing_pikachu.asm) + "SurfingPikachu1Graphics1", + "SurfingPikachu1Graphics2", + "SurfingPikachu1Graphics3", +) + +# Yellow-only dialogue whose bank labels carry no leading underscore, so +# the text-label scan misses them (scripts/CeruleanMelaniesHouse.asm -- +# the Bulbasaur gift and the pet flavor lines). +YELLOW_EXTRA_TEXT_LABELS = ( + "MelanieText1", "MelanieText2", "MelanieText3", + "MelanieText4", "MelanieText5", + "MelanieBulbasaurText", "MelanieOddishText", "MelanieSandshrewText", +) + +YELLOW_EXTRA_PALETTES = ( + "PIKACHUS_BEACH", + "PIKACHU_PORTRAIT", + "PIKACHUS_BEACH_TITLE", +) + + +def _rename_keys(obj, renames): + """Recursively rename dict keys (and rewrite matching string values).""" + if isinstance(obj, dict): + out = {} + for key, value in obj.items(): + new_key = renames.get(key, key) + out[new_key] = _rename_keys(value, renames) + return out + if isinstance(obj, list): + return [_rename_keys(item, renames) for item in obj] + if isinstance(obj, str): + return renames.get(obj, obj) + return obj + + +def _replace_strings(obj, renames): + """Recursively replace string values (and list entries) via renames.""" + if isinstance(obj, dict): + return {k: _replace_strings(v, renames) for k, v in obj.items()} + if isinstance(obj, list): + return [_replace_strings(item, renames) for item in obj] + if isinstance(obj, str): + return renames.get(obj, obj) + return obj + + +def _drop_strings(obj, dropped): + """Remove dropped names from lists and as dict keys / string values.""" + if isinstance(obj, dict): + out = {} + for key, value in obj.items(): + if key in dropped: + continue + if isinstance(value, str) and value in dropped: + continue + out[key] = _drop_strings(value, dropped) + return out + if isinstance(obj, list): + result = [] + for item in obj: + if isinstance(item, str) and item in dropped: + continue + result.append(_drop_strings(item, dropped)) + return result + return obj + + +def _resolve_mew_base_stats(yellow_symbols): + base = yellow_symbols.by_name.get("BaseStats") + if base is None: + raise SystemExit("pokeyellow.sym missing BaseStats (needed for Mew)") + return [base.bank, base.address + (MEW_DEX_NUMBER - 1) * BASE_STATS_ENTRY_SIZE] + + +def _rebuild_map_songs(pokeyellow, map_order, music_headers): + """Zip pokeyellow data/maps/songs.asm onto the Yellow mapOrder.""" + map_song_consts = [] + path = os.path.join(pokeyellow, "data/maps/songs.asm") + for _, line in util.read_asm(path): + match = re.match(r"db\s+(MUSIC_\w+),", line.strip()) + if match: + map_song_consts.append(match.group(1)) + if len(map_song_consts) != len(map_order): + raise SystemExit( + f"Yellow songs.asm has {len(map_song_consts)} entries but " + f"mapOrder has {len(map_order)}") + + out = {} + missing = [] + for map_name, const_name in zip(map_order, map_song_consts): + label = _music_label(const_name, music_headers) + if label not in music_headers: + missing.append(f"{map_name}:{const_name}->{label}") + continue + out[map_name] = label + if missing: + raise SystemExit( + "Yellow map songs could not resolve music headers: " + + ", ".join(missing[:12]) + + (" ..." if len(missing) > 12 else "")) + return out + + +def _rebuild_yellow_sourced(yellow, pokeyellow): + """Replace sections that Yellow authors differently from Red.""" + map_order, map_dims = constants.extract_map_constants(pokeyellow) + tileset_order = [ + n for n in simple_constants( + pokeyellow, "constants/tileset_constants.asm") if n + ] + sprite_consts = simple_constants( + pokeyellow, "constants/sprite_constants.asm") + sprite_order = [n or "UNUSED" for n in sprite_consts[1:]] + tile_animations = [ + name or "UNUSED" + for name in simple_constants( + pokeyellow, "constants/map_data_constants.asm") + if name and name.startswith("TILEANIM_") + ] + + yellow["constants"]["mapOrder"] = map_order + yellow["constants"]["maps"] = map_dims + yellow["constants"]["tilesetOrder"] = tileset_order + yellow["constants"]["spriteOrder"] = sprite_order + + yellow["maps"] = map_metadata(pokeyellow, map_dims) + yellow["tilesets"] = tileset_metadata(pokeyellow, tileset_order) + yellow["sprites"] = sprite_metadata(pokeyellow, sprite_order) + yellow["text"] = text_metadata(pokeyellow) + yellow["tileAnimations"] = tile_animations + + yellow["audio"]["mapSongs"] = _rebuild_map_songs( + pokeyellow, map_order, yellow["audio"]["musicHeaders"]) + # Red's positional header mapping lands Yellow's intro song + # (pokeyellow Music_YellowIntro, 1f:4294) under the name + # Music_IntroBattle; expose it under its own name too so the Yellow + # intro movie state can ask for the right label. + headers = yellow["audio"]["musicHeaders"] + if "Music_YellowIntro" not in headers and "Music_IntroBattle" in headers: + headers["Music_YellowIntro"] = dict(headers["Music_IntroBattle"]) + return { + "mapCount": len(map_order), + "mapMeta": len(yellow["maps"]), + "tilesets": len(tileset_order), + "sprites": len(sprite_order), + "textLabels": len(yellow["text"]["labels"]), + } + + +def derive(red, pokeyellow, symbols_path): + """Return the Yellow manifest derived from the Red manifest dict.""" + yellow = copy.deepcopy(red) + yellow["romSha1"] = CANONICAL_YELLOW_SHA1 + yellow_symbols = SymbolTable(symbols_path) + + omit = set(OMIT_INTRO_SYMBOLS) + dropped = {name for name, alias in SYMBOL_ALIASES.items() if alias is None} + dropped |= omit + symbol_renames = { + name: alias for name, alias in SYMBOL_ALIASES.items() if alias + } + + # Structural renames for Red-shaped leftovers (field townMap, etc.) before + # Yellow-sourced sections overwrite maps/text/sprites/tilesets. + structural = {} + structural.update(MAP_CONST_RENAMES) + structural.update(MAP_LABEL_RENAMES) + structural.update(GAME_CORNER_ID_RENAMES) + structural.update(FAN_CLUB_ID_RENAMES) + structural.update(symbol_renames) + yellow = _rename_keys(yellow, structural) + yellow = _replace_strings(yellow, structural) + yellow = _drop_strings(yellow, dropped) + + rebuilt = _rebuild_yellow_sourced(yellow, pokeyellow) + + for label in YELLOW_EXTRA_TEXT_LABELS: + if label not in yellow["text"]["labels"]: + yellow["text"]["labels"].append(label) + + # Rebuild symbols from Red's name set with Yellow addresses / aliases, + # then ensure every Yellow-sourced label/header is present. + resolved = {} + missing = [] + alias_hits = 0 + for name in red["symbols"]: + if name in omit or name in dropped: + continue + if name == "MewBaseStats": + resolved["MewBaseStats"] = _resolve_mew_base_stats(yellow_symbols) + alias_hits += 1 + continue + target = symbol_renames.get(name, name) + if name in symbol_renames: + alias_hits += 1 + # Structural map-header rename may already have changed the key. + target = MAP_LABEL_RENAMES.get(target, target) + if target.endswith("_h"): + base = target[:-2] + target = MAP_LABEL_RENAMES.get(base, base) + "_h" \ + if base in MAP_LABEL_RENAMES else target + symbol = yellow_symbols.by_name.get(target) + if symbol is None: + # Drop Red-only symbols that Yellow-sourced sections no longer need. + continue + resolved[target] = [symbol.bank, symbol.address] + + print( + "warning: omitting Yellow-incompatible intro symbols " + f"(RomExtractor must skip): {', '.join(OMIT_INTRO_SYMBOLS)}" + ) + + for label in yellow["text"]["labels"]: + if label in resolved: + continue + symbol = yellow_symbols.by_name.get(label) + if symbol is None: + missing.append(label) + continue + resolved[label] = [symbol.bank, symbol.address] + for spec in yellow["maps"].values(): + header = spec["label"] + "_h" + if header in resolved: + continue + symbol = yellow_symbols.by_name.get(header) + if symbol is None: + missing.append(header) + continue + resolved[header] = [symbol.bank, symbol.address] + + # Pointer asm labels (ViridianPokeCenterChanseyText etc.) also need symbols + # when extract_text resolves through them. + for pointers in yellow["text"]["pointers"].values(): + for spec in pointers.values(): + for key in ("label", "text"): + name = spec.get(key) + if not name or name in resolved: + continue + symbol = yellow_symbols.by_name.get(name) + if symbol is not None: + resolved[name] = [symbol.bank, symbol.address] + + yellow["symbols"] = resolved + + for name in YELLOW_EXTRA_SYMBOLS: + symbol = yellow_symbols.by_name.get(name) + if symbol is None: + raise SystemExit(f"pokeyellow.sym missing Yellow extra symbol {name}") + yellow["symbols"][name] = [symbol.bank, symbol.address] + + # Yellow-only songs live in music bank $20, which Red's engine never + # had; ship the bank in the audio pack and add their headers. + yellow["audio"]["programBanks"] = [2, 8, 31, 32] + for name in ("Music_MeetJessieJames", "Music_SurfingPikachu", + "Music_GBPrinter"): + symbol = yellow_symbols.by_name.get(name) + if symbol is None: + raise SystemExit(f"pokeyellow.sym missing Yellow song {name}") + yellow["audio"]["musicHeaders"][name] = { + "bank": symbol.bank, "address": symbol.address, "engine": 3, + } + + # SuperPalettes grows by three Yellow-only SGB entries after GAMEFREAK. + order = list(yellow.get("paletteOrder") or []) + for name in YELLOW_EXTRA_PALETTES: + if name not in order: + order.append(name) + yellow["paletteOrder"] = order + + # Yellow appends ICON_PIKACHU ($a) after Red's ten party icons + # (constants/icon_constants.asm); MonPartyData nybble $a resolves to + # it, drawn from the overworld PikachuSprite sheet. + icons = list(yellow.get("iconOrder") or []) + if "PIKACHU" not in icons: + icons.append("PIKACHU") + yellow["iconOrder"] = icons + + still_missing = [] + for name in yellow["symbols"]: + if name == "MewBaseStats": + continue + if name not in yellow_symbols.by_name: + still_missing.append(name) + if still_missing or missing: + raise SystemExit( + "pokeyellow.sym is missing symbols the manifest needs: " + + ", ".join(sorted(set(still_missing + missing))[:20]) + + (" ..." if len(set(still_missing + missing)) > 20 else "")) + + # Version-gated field bits from pokeyellow. + saved = util.ASM_DEFINES + util.ASM_DEFINES = set() + try: + yellow["field"]["presetNames"] = field.parse_preset_names(pokeyellow) + try: + yellow["field"]["credits"] = field.parse_credits(pokeyellow) + except SystemExit as exc: + print(f"warning: parse_credits failed ({exc}); keeping Red credits") + # TODO: hand-author a Yellow credits banner if pret layout drifts. + finally: + util.ASM_DEFINES = saved + + presets = yellow["field"]["presetNames"] + if "YELLOW" not in presets["player"] or "BLUE" not in presets["rival"]: + raise SystemExit( + f"Yellow preset-name parse unexpected: {presets!r}") + + # Fixed Pikachu title (no TitleMons cycle); extractor fills image paths. + title = yellow["field"].setdefault("title", {}) + title["layout"] = "yellow_pikachu" + title["cycleSpecies"] = [] + title["music"] = title.get("music") or "Music_TitleScreen" + title["pikachuBg"] = { + "path": "assets/generated/title/pikachu_bg.png", + "width": 128, "height": 32, + } + title["pikachuOb"] = { + "path": "assets/generated/title/pikachu_ob.png", + "width": 96, "height": 8, + } + title["pikachu"] = { + "path": "assets/generated/title/pikachu.png", + "width": 96, "height": 72, + } + title["pikaBubble"] = { + "path": "assets/generated/title/pika_bubble.png", + "width": 56, "height": 32, + } + + # Yellow's emote sheet grows the five Pikachu-only bubbles + # (engine/overworld/emotion_bubbles.asm Skull/Heart/Bolt/Zzz/FishEmote, + # constants/script_constants.asm order); RomExtractor rips whatever + # this bubble list names. + yellow_bubbles = ["EXCLAMATION_BUBBLE", "QUESTION_BUBBLE", "SMILE_BUBBLE", + "SKULL_BUBBLE", "HEART_BUBBLE", "BOLT_BUBBLE", + "ZZZ_BUBBLE", "FISH_BUBBLE"] + yellow["field"]["emotionBubbles"] = { + "path": "assets/generated/emotes.png", + "width": 16 * len(yellow_bubbles), "height": 16, + "bubbles": [{"name": name, "x": i * 16, "y": 0, "w": 16, "h": 16} + for i, name in enumerate(yellow_bubbles)], + } + + # Ensure Melanie / Summer Beach town-map entries exist after rebuild. + locations = yellow["field"]["townMap"]["locations"] + if "CERULEAN_MELANIES_HOUSE" not in locations \ + and "CERULEAN_CITY" in locations: + locations["CERULEAN_MELANIES_HOUSE"] = dict(locations["CERULEAN_CITY"]) + if "SUMMER_BEACH_HOUSE" not in locations and "ROUTE_19" in locations: + locations["SUMMER_BEACH_HOUSE"] = dict(locations["ROUTE_19"]) + + meta = { + "aliasCount": alias_hits, + "omittedIntro": list(OMIT_INTRO_SYMBOLS), + "droppedSymbols": sorted(dropped - omit), + "rebuilt": rebuilt, + } + return yellow, meta + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--red", default=DEFAULT_RED, + help="shipped Red manifest to derive from") + parser.add_argument("--pokeyellow", default=DEFAULT_POKEYELLOW, + help="pokeyellow source checkout") + parser.add_argument("--symbols", default=DEFAULT_SYMBOLS, + help="pokeyellow.sym symbol file") + parser.add_argument("--out", default=DEFAULT_OUT) + args = parser.parse_args() + + pokeyellow = os.path.abspath(args.pokeyellow) + if not os.path.isfile(os.path.join(pokeyellow, "main.asm")): + raise SystemExit(f"{pokeyellow} is not a pokeyellow checkout") + with open(args.red, encoding="utf-8") as f: + red = json.load(f) + + yellow, meta = derive(red, pokeyellow, os.path.abspath(args.symbols)) + with open(args.out, "w", encoding="utf-8", newline="\n") as f: + json.dump(yellow, f, ensure_ascii=False, indent=2, sort_keys=True) + f.write("\n") + + print(f"wrote {args.out}") + print(f"symbols: {len(yellow['symbols'])}") + print(f"aliases applied: {meta['aliasCount']}") + print(f"omitted intro: {meta['omittedIntro']}") + print(f"dropped: {len(meta['droppedSymbols'])} " + f"({', '.join(meta['droppedSymbols'][:8])}...)") + print(f"rebuilt: {meta['rebuilt']}") + + +if __name__ == "__main__": + main() diff --git a/tools/rom_data.py b/tools/rom_data.py index 800e1652..a7203b9b 100644 --- a/tools/rom_data.py +++ b/tools/rom_data.py @@ -10,6 +10,7 @@ from dataclasses import dataclass CANONICAL_RED_SHA1 = "ea9bcae617fdf159b045185467ae58b2e4a48b9a" CANONICAL_BLUE_SHA1 = "d7037c83e1ae5b39bde3c30787637ba1d4c48ce2" +CANONICAL_YELLOW_SHA1 = "cc7d03262ebfaf2f06772c1a480c7d9d5f4a38e1" ROM_BANK_SIZE = 0x4000 diff --git a/tools/rom_manifest_yellow.json b/tools/rom_manifest_yellow.json new file mode 100644 index 00000000..9d565854 --- /dev/null +++ b/tools/rom_manifest_yellow.json @@ -0,0 +1,50480 @@ +{ + "audio": { + "battle": { + "final": "Music_FinalBattle", + "gym": "Music_GymLeaderBattle", + "gymWin": "Music_DefeatedGymLeader", + "trainer": "Music_TrainerBattle", + "trainerWin": "Music_DefeatedTrainer", + "wild": "Music_WildBattle", + "wildWin": "Music_DefeatedWildMon" + }, + "cryData": { + "address": 21574, + "bank": 14 + }, + "cryHeaders": { + "0": { + "address": 16444, + "bank": 2, + "engine": 1 + }, + "1": { + "address": 16453, + "bank": 2, + "engine": 1 + }, + "10": { + "address": 16534, + "bank": 2, + "engine": 1 + }, + "11": { + "address": 16543, + "bank": 2, + "engine": 1 + }, + "12": { + "address": 16552, + "bank": 2, + "engine": 1 + }, + "13": { + "address": 16561, + "bank": 2, + "engine": 1 + }, + "14": { + "address": 16570, + "bank": 2, + "engine": 1 + }, + "15": { + "address": 16579, + "bank": 2, + "engine": 1 + }, + "16": { + "address": 16588, + "bank": 2, + "engine": 1 + }, + "17": { + "address": 16597, + "bank": 2, + "engine": 1 + }, + "18": { + "address": 16606, + "bank": 2, + "engine": 1 + }, + "19": { + "address": 16615, + "bank": 2, + "engine": 1 + }, + "2": { + "address": 16462, + "bank": 2, + "engine": 1 + }, + "20": { + "address": 16624, + "bank": 2, + "engine": 1 + }, + "21": { + "address": 16633, + "bank": 2, + "engine": 1 + }, + "22": { + "address": 16642, + "bank": 2, + "engine": 1 + }, + "23": { + "address": 16651, + "bank": 2, + "engine": 1 + }, + "24": { + "address": 16660, + "bank": 2, + "engine": 1 + }, + "25": { + "address": 16669, + "bank": 2, + "engine": 1 + }, + "26": { + "address": 16678, + "bank": 2, + "engine": 1 + }, + "27": { + "address": 16687, + "bank": 2, + "engine": 1 + }, + "28": { + "address": 16696, + "bank": 2, + "engine": 1 + }, + "29": { + "address": 16705, + "bank": 2, + "engine": 1 + }, + "3": { + "address": 16471, + "bank": 2, + "engine": 1 + }, + "30": { + "address": 16714, + "bank": 2, + "engine": 1 + }, + "31": { + "address": 16723, + "bank": 2, + "engine": 1 + }, + "32": { + "address": 16732, + "bank": 2, + "engine": 1 + }, + "33": { + "address": 16741, + "bank": 2, + "engine": 1 + }, + "34": { + "address": 16750, + "bank": 2, + "engine": 1 + }, + "35": { + "address": 16759, + "bank": 2, + "engine": 1 + }, + "36": { + "address": 16768, + "bank": 2, + "engine": 1 + }, + "37": { + "address": 16777, + "bank": 2, + "engine": 1 + }, + "4": { + "address": 16480, + "bank": 2, + "engine": 1 + }, + "5": { + "address": 16489, + "bank": 2, + "engine": 1 + }, + "6": { + "address": 16498, + "bank": 2, + "engine": 1 + }, + "7": { + "address": 16507, + "bank": 2, + "engine": 1 + }, + "8": { + "address": 16516, + "bank": 2, + "engine": 1 + }, + "9": { + "address": 16525, + "bank": 2, + "engine": 1 + } + }, + "mapSongs": { + "AGATHAS_ROOM": "Music_PokemonTower", + "BIKE_SHOP": "Music_Cities2", + "BILLS_HOUSE": "Music_Cities2", + "BLUES_HOUSE": "Music_PalletTown", + "BRUNOS_ROOM": "Music_Dungeon1", + "CELADON_CHIEF_HOUSE": "Music_Celadon", + "CELADON_CITY": "Music_Celadon", + "CELADON_DINER": "Music_Celadon", + "CELADON_GYM": "Music_Gym", + "CELADON_HOTEL": "Music_Celadon", + "CELADON_MANSION_1F": "Music_Celadon", + "CELADON_MANSION_2F": "Music_Celadon", + "CELADON_MANSION_3F": "Music_Celadon", + "CELADON_MANSION_ROOF": "Music_Celadon", + "CELADON_MANSION_ROOF_HOUSE": "Music_Celadon", + "CELADON_MART_1F": "Music_Pokecenter", + "CELADON_MART_2F": "Music_Pokecenter", + "CELADON_MART_3F": "Music_Pokecenter", + "CELADON_MART_4F": "Music_Pokecenter", + "CELADON_MART_5F": "Music_Pokecenter", + "CELADON_MART_ELEVATOR": "Music_Pokecenter", + "CELADON_MART_ROOF": "Music_Pokecenter", + "CELADON_POKECENTER": "Music_Pokecenter", + "CERULEAN_BADGE_HOUSE": "Music_Cities1", + "CERULEAN_CAVE_1F": "Music_Dungeon1", + "CERULEAN_CAVE_2F": "Music_Dungeon1", + "CERULEAN_CAVE_B1F": "Music_Dungeon1", + "CERULEAN_CITY": "Music_Cities2", + "CERULEAN_GYM": "Music_Gym", + "CERULEAN_MART": "Music_Pokecenter", + "CERULEAN_MELANIES_HOUSE": "Music_Cities2", + "CERULEAN_POKECENTER": "Music_Pokecenter", + "CERULEAN_TRASHED_HOUSE": "Music_Cities2", + "CERULEAN_TRASHED_HOUSE_COPY": "Music_Dungeon3", + "CHAMPIONS_ROOM": "Music_IndigoPlateau", + "CINNABAR_GYM": "Music_Gym", + "CINNABAR_ISLAND": "Music_Cinnabar", + "CINNABAR_LAB": "Music_Cinnabar", + "CINNABAR_LAB_FOSSIL_ROOM": "Music_Cinnabar", + "CINNABAR_LAB_METRONOME_ROOM": "Music_Cinnabar", + "CINNABAR_LAB_TRADE_ROOM": "Music_Cinnabar", + "CINNABAR_MART": "Music_Pokecenter", + "CINNABAR_MART_COPY": "Music_Cinnabar", + "CINNABAR_POKECENTER": "Music_Pokecenter", + "COLOSSEUM": "Music_Celadon", + "COPYCATS_HOUSE_1F": "Music_Cities1", + "COPYCATS_HOUSE_2F": "Music_Cities1", + "DAYCARE": "Music_Cities1", + "DIGLETTS_CAVE": "Music_Dungeon2", + "DIGLETTS_CAVE_ROUTE_11": "Music_Dungeon2", + "DIGLETTS_CAVE_ROUTE_2": "Music_Dungeon2", + "FIGHTING_DOJO": "Music_Cities1", + "FUCHSIA_BILLS_GRANDPAS_HOUSE": "Music_Cities2", + "FUCHSIA_CITY": "Music_Cities2", + "FUCHSIA_GOOD_ROD_HOUSE": "Music_Cities2", + "FUCHSIA_GYM": "Music_Gym", + "FUCHSIA_MART": "Music_Pokecenter", + "FUCHSIA_MEETING_ROOM": "Music_Cities2", + "FUCHSIA_POKECENTER": "Music_Pokecenter", + "GAME_CORNER": "Music_GameCorner", + "GAME_CORNER_PRIZE_ROOM": "Music_Celadon", + "HALL_OF_FAME": "Music_PalletTown", + "INDIGO_PLATEAU": "Music_IndigoPlateau", + "INDIGO_PLATEAU_LOBBY": "Music_IndigoPlateau", + "LANCES_ROOM": "Music_IndigoPlateau", + "LAVENDER_CUBONE_HOUSE": "Music_Lavender", + "LAVENDER_MART": "Music_Pokecenter", + "LAVENDER_POKECENTER": "Music_Pokecenter", + "LAVENDER_TOWN": "Music_Lavender", + "LORELEIS_ROOM": "Music_Gym", + "MR_FUJIS_HOUSE": "Music_Lavender", + "MR_PSYCHICS_HOUSE": "Music_Cities1", + "MT_MOON_1F": "Music_Dungeon3", + "MT_MOON_B1F": "Music_Dungeon3", + "MT_MOON_B2F": "Music_Dungeon3", + "MT_MOON_POKECENTER": "Music_Pokecenter", + "MUSEUM_1F": "Music_Cities1", + "MUSEUM_2F": "Music_Cities1", + "NAME_RATERS_HOUSE": "Music_Cities2", + "OAKS_LAB": "Music_OaksLab", + "PALLET_TOWN": "Music_PalletTown", + "PEWTER_CITY": "Music_Cities1", + "PEWTER_GYM": "Music_Gym", + "PEWTER_MART": "Music_Pokecenter", + "PEWTER_NIDORAN_HOUSE": "Music_Cities1", + "PEWTER_POKECENTER": "Music_Pokecenter", + "PEWTER_SPEECH_HOUSE": "Music_Cities1", + "POKEMON_FAN_CLUB": "Music_Vermilion", + "POKEMON_MANSION_1F": "Music_CinnabarMansion", + "POKEMON_MANSION_2F": "Music_CinnabarMansion", + "POKEMON_MANSION_3F": "Music_CinnabarMansion", + "POKEMON_MANSION_B1F": "Music_CinnabarMansion", + "POKEMON_TOWER_1F": "Music_PokemonTower", + "POKEMON_TOWER_2F": "Music_PokemonTower", + "POKEMON_TOWER_3F": "Music_PokemonTower", + "POKEMON_TOWER_4F": "Music_PokemonTower", + "POKEMON_TOWER_5F": "Music_PokemonTower", + "POKEMON_TOWER_6F": "Music_PokemonTower", + "POKEMON_TOWER_7F": "Music_PokemonTower", + "POWER_PLANT": "Music_Dungeon1", + "REDS_HOUSE_1F": "Music_PalletTown", + "REDS_HOUSE_2F": "Music_PalletTown", + "ROCKET_HIDEOUT_B1F": "Music_Dungeon1", + "ROCKET_HIDEOUT_B2F": "Music_Dungeon1", + "ROCKET_HIDEOUT_B3F": "Music_Dungeon1", + "ROCKET_HIDEOUT_B4F": "Music_Dungeon1", + "ROCKET_HIDEOUT_ELEVATOR": "Music_Dungeon1", + "ROCK_TUNNEL_1F": "Music_Dungeon3", + "ROCK_TUNNEL_B1F": "Music_Dungeon3", + "ROCK_TUNNEL_POKECENTER": "Music_Pokecenter", + "ROUTE_1": "Music_Routes1", + "ROUTE_10": "Music_Routes3", + "ROUTE_11": "Music_Routes4", + "ROUTE_11_GATE_1F": "Music_Vermilion", + "ROUTE_11_GATE_2F": "Music_Vermilion", + "ROUTE_12": "Music_Routes4", + "ROUTE_12_GATE_1F": "Music_Cities1", + "ROUTE_12_GATE_2F": "Music_Cities1", + "ROUTE_12_SUPER_ROD_HOUSE": "Music_Celadon", + "ROUTE_13": "Music_Routes4", + "ROUTE_14": "Music_Routes4", + "ROUTE_15": "Music_Routes4", + "ROUTE_15_GATE_1F": "Music_Cities1", + "ROUTE_15_GATE_2F": "Music_Cities1", + "ROUTE_16": "Music_Routes3", + "ROUTE_16_FLY_HOUSE": "Music_Celadon", + "ROUTE_16_GATE_1F": "Music_Cities1", + "ROUTE_16_GATE_2F": "Music_Cities1", + "ROUTE_17": "Music_Routes3", + "ROUTE_18": "Music_Routes3", + "ROUTE_18_GATE_1F": "Music_Cities1", + "ROUTE_18_GATE_2F": "Music_Cities1", + "ROUTE_19": "Music_Routes3", + "ROUTE_2": "Music_Routes1", + "ROUTE_20": "Music_Routes3", + "ROUTE_21": "Music_Routes3", + "ROUTE_22": "Music_Routes3", + "ROUTE_22_GATE": "Music_Dungeon2", + "ROUTE_23": "Music_IndigoPlateau", + "ROUTE_24": "Music_Routes2", + "ROUTE_25": "Music_Routes2", + "ROUTE_2_GATE": "Music_Cities1", + "ROUTE_2_TRADE_HOUSE": "Music_Cities1", + "ROUTE_3": "Music_Routes3", + "ROUTE_4": "Music_Routes3", + "ROUTE_5": "Music_Routes3", + "ROUTE_5_GATE": "Music_Cities1", + "ROUTE_6": "Music_Routes3", + "ROUTE_6_GATE": "Music_Cities1", + "ROUTE_7": "Music_Routes3", + "ROUTE_7_GATE": "Music_Cities1", + "ROUTE_8": "Music_Routes3", + "ROUTE_8_GATE": "Music_Cities1", + "ROUTE_9": "Music_Routes3", + "SAFARI_ZONE_CENTER": "Music_SafariZone", + "SAFARI_ZONE_CENTER_REST_HOUSE": "Music_SafariZone", + "SAFARI_ZONE_EAST": "Music_SafariZone", + "SAFARI_ZONE_EAST_REST_HOUSE": "Music_SafariZone", + "SAFARI_ZONE_GATE": "Music_Cities2", + "SAFARI_ZONE_NORTH": "Music_SafariZone", + "SAFARI_ZONE_NORTH_REST_HOUSE": "Music_SafariZone", + "SAFARI_ZONE_SECRET_HOUSE": "Music_SafariZone", + "SAFARI_ZONE_WEST": "Music_SafariZone", + "SAFARI_ZONE_WEST_REST_HOUSE": "Music_SafariZone", + "SAFFRON_CITY": "Music_Cities1", + "SAFFRON_GYM": "Music_Gym", + "SAFFRON_MART": "Music_Pokecenter", + "SAFFRON_PIDGEY_HOUSE": "Music_Cities1", + "SAFFRON_POKECENTER": "Music_Pokecenter", + "SEAFOAM_ISLANDS_1F": "Music_Dungeon2", + "SEAFOAM_ISLANDS_B1F": "Music_Dungeon2", + "SEAFOAM_ISLANDS_B2F": "Music_Dungeon2", + "SEAFOAM_ISLANDS_B3F": "Music_Dungeon2", + "SEAFOAM_ISLANDS_B4F": "Music_Dungeon2", + "SILPH_CO_10F": "Music_SilphCo", + "SILPH_CO_11F": "Music_SilphCo", + "SILPH_CO_1F": "Music_SilphCo", + "SILPH_CO_2F": "Music_SilphCo", + "SILPH_CO_3F": "Music_SilphCo", + "SILPH_CO_4F": "Music_SilphCo", + "SILPH_CO_5F": "Music_SilphCo", + "SILPH_CO_6F": "Music_SilphCo", + "SILPH_CO_7F": "Music_SilphCo", + "SILPH_CO_8F": "Music_SilphCo", + "SILPH_CO_9F": "Music_SilphCo", + "SILPH_CO_ELEVATOR": "Music_SilphCo", + "SS_ANNE_1F": "Music_SSAnne", + "SS_ANNE_1F_ROOMS": "Music_SSAnne", + "SS_ANNE_2F": "Music_SSAnne", + "SS_ANNE_2F_ROOMS": "Music_SSAnne", + "SS_ANNE_3F": "Music_SSAnne", + "SS_ANNE_B1F": "Music_SSAnne", + "SS_ANNE_B1F_ROOMS": "Music_SSAnne", + "SS_ANNE_BOW": "Music_SSAnne", + "SS_ANNE_CAPTAINS_ROOM": "Music_SSAnne", + "SS_ANNE_KITCHEN": "Music_SSAnne", + "SUMMER_BEACH_HOUSE": "Music_Routes3", + "TRADE_CENTER": "Music_Celadon", + "UNDERGROUND_PATH_NORTH_SOUTH": "Music_Routes1", + "UNDERGROUND_PATH_ROUTE_5": "Music_Cities1", + "UNDERGROUND_PATH_ROUTE_6": "Music_Cities1", + "UNDERGROUND_PATH_ROUTE_6_COPY": "Music_Vermilion", + "UNDERGROUND_PATH_ROUTE_7": "Music_Cities1", + "UNDERGROUND_PATH_ROUTE_7_COPY": "Music_Celadon", + "UNDERGROUND_PATH_ROUTE_8": "Music_Cities1", + "UNDERGROUND_PATH_WEST_EAST": "Music_Routes1", + "UNUSED_MAP_0B": "Music_Cities1", + "UNUSED_MAP_69": "Music_Dungeon2", + "UNUSED_MAP_6A": "Music_Dungeon2", + "UNUSED_MAP_6B": "Music_SSAnne", + "UNUSED_MAP_6D": "Music_PokemonTower", + "UNUSED_MAP_6E": "Music_Dungeon1", + "UNUSED_MAP_6F": "Music_SilphCo", + "UNUSED_MAP_70": "Music_SilphCo", + "UNUSED_MAP_72": "Music_SSAnne", + "UNUSED_MAP_73": "Music_SSAnne", + "UNUSED_MAP_74": "Music_SSAnne", + "UNUSED_MAP_75": "Music_SSAnne", + "UNUSED_MAP_CC": "Music_Dungeon1", + "UNUSED_MAP_CD": "Music_Dungeon1", + "UNUSED_MAP_CE": "Music_Dungeon1", + "UNUSED_MAP_E7": "Music_Cinnabar", + "UNUSED_MAP_ED": "Music_SilphCo", + "UNUSED_MAP_EE": "Music_SilphCo", + "UNUSED_MAP_F1": "Music_SilphCo", + "UNUSED_MAP_F2": "Music_SilphCo", + "UNUSED_MAP_F3": "Music_SilphCo", + "UNUSED_MAP_F4": "Music_SilphCo", + "VERMILION_CITY": "Music_Vermilion", + "VERMILION_DOCK": "Music_SSAnne", + "VERMILION_GYM": "Music_Gym", + "VERMILION_MART": "Music_Pokecenter", + "VERMILION_OLD_ROD_HOUSE": "Music_Cities2", + "VERMILION_PIDGEY_HOUSE": "Music_Vermilion", + "VERMILION_POKECENTER": "Music_Pokecenter", + "VERMILION_TRADE_HOUSE": "Music_Vermilion", + "VICTORY_ROAD_1F": "Music_Dungeon3", + "VICTORY_ROAD_2F": "Music_Dungeon3", + "VICTORY_ROAD_3F": "Music_Dungeon3", + "VIRIDIAN_CITY": "Music_Cities1", + "VIRIDIAN_FOREST": "Music_Dungeon2", + "VIRIDIAN_FOREST_NORTH_GATE": "Music_Cities1", + "VIRIDIAN_FOREST_SOUTH_GATE": "Music_Cities1", + "VIRIDIAN_GYM": "Music_Gym", + "VIRIDIAN_MART": "Music_Pokecenter", + "VIRIDIAN_NICKNAME_HOUSE": "Music_Cities1", + "VIRIDIAN_POKECENTER": "Music_Pokecenter", + "VIRIDIAN_SCHOOL_HOUSE": "Music_Cities1", + "WARDENS_HOUSE": "Music_Cities2" + }, + "musicHeaders": { + "Music_BikeRiding": { + "address": 17014, + "bank": 31, + "engine": 3 + }, + "Music_Celadon": { + "address": 16990, + "bank": 2, + "engine": 1 + }, + "Music_Cinnabar": { + "address": 16999, + "bank": 2, + "engine": 1 + }, + "Music_CinnabarMansion": { + "address": 17092, + "bank": 31, + "engine": 3 + }, + "Music_Cities1": { + "address": 16969, + "bank": 2, + "engine": 1 + }, + "Music_Cities2": { + "address": 16981, + "bank": 2, + "engine": 1 + }, + "Music_Credits": { + "address": 16981, + "bank": 31, + "engine": 3 + }, + "Music_DefeatedGymLeader": { + "address": 17140, + "bank": 8, + "engine": 2 + }, + "Music_DefeatedTrainer": { + "address": 17122, + "bank": 8, + "engine": 2 + }, + "Music_DefeatedWildMon": { + "address": 17131, + "bank": 8, + "engine": 2 + }, + "Music_Dungeon1": { + "address": 17056, + "bank": 31, + "engine": 3 + }, + "Music_Dungeon2": { + "address": 17068, + "bank": 31, + "engine": 3 + }, + "Music_Dungeon3": { + "address": 17080, + "bank": 31, + "engine": 3 + }, + "Music_FinalBattle": { + "address": 17113, + "bank": 8, + "engine": 2 + }, + "Music_GBPrinter": { + "address": 16873, + "bank": 32, + "engine": 3 + }, + "Music_GameCorner": { + "address": 17035, + "bank": 31, + "engine": 3 + }, + "Music_Gym": { + "address": 16960, + "bank": 2, + "engine": 1 + }, + "Music_GymLeaderBattle": { + "address": 17086, + "bank": 8, + "engine": 2 + }, + "Music_HallOfFame": { + "address": 16990, + "bank": 31, + "engine": 3 + }, + "Music_IndigoPlateau": { + "address": 17137, + "bank": 2, + "engine": 1 + }, + "Music_IntroBattle": { + "address": 17044, + "bank": 31, + "engine": 3 + }, + "Music_JigglypuffSong": { + "address": 17008, + "bank": 31, + "engine": 3 + }, + "Music_Lavender": { + "address": 17020, + "bank": 2, + "engine": 1 + }, + "Music_MeetEvilTrainer": { + "address": 17122, + "bank": 31, + "engine": 3 + }, + "Music_MeetFemaleTrainer": { + "address": 17131, + "bank": 31, + "engine": 3 + }, + "Music_MeetJessieJames": { + "address": 16852, + "bank": 32, + "engine": 3 + }, + "Music_MeetMaleTrainer": { + "address": 17140, + "bank": 31, + "engine": 3 + }, + "Music_MeetProfOak": { + "address": 17041, + "bank": 2, + "engine": 1 + }, + "Music_MeetRival": { + "address": 17050, + "bank": 2, + "engine": 1 + }, + "Music_MuseumGuy": { + "address": 17059, + "bank": 2, + "engine": 1 + }, + "Music_OaksLab": { + "address": 16999, + "bank": 31, + "engine": 3 + }, + "Music_PalletTown": { + "address": 16942, + "bank": 2, + "engine": 1 + }, + "Music_PkmnHealed": { + "address": 17080, + "bank": 2, + "engine": 1 + }, + "Music_Pokecenter": { + "address": 16951, + "bank": 2, + "engine": 1 + }, + "Music_PokemonTower": { + "address": 17104, + "bank": 31, + "engine": 3 + }, + "Music_Routes1": { + "address": 17089, + "bank": 2, + "engine": 1 + }, + "Music_Routes2": { + "address": 17101, + "bank": 2, + "engine": 1 + }, + "Music_Routes3": { + "address": 17113, + "bank": 2, + "engine": 1 + }, + "Music_Routes4": { + "address": 17125, + "bank": 2, + "engine": 1 + }, + "Music_SSAnne": { + "address": 17032, + "bank": 2, + "engine": 1 + }, + "Music_SafariZone": { + "address": 17071, + "bank": 2, + "engine": 1 + }, + "Music_SilphCo": { + "address": 17113, + "bank": 31, + "engine": 3 + }, + "Music_Surfing": { + "address": 17026, + "bank": 31, + "engine": 3 + }, + "Music_SurfingPikachu": { + "address": 16843, + "bank": 32, + "engine": 3 + }, + "Music_TitleScreen": { + "address": 16969, + "bank": 31, + "engine": 3 + }, + "Music_TrainerBattle": { + "address": 17095, + "bank": 8, + "engine": 2 + }, + "Music_Vermilion": { + "address": 17008, + "bank": 2, + "engine": 1 + }, + "Music_WildBattle": { + "address": 17104, + "bank": 8, + "engine": 2 + }, + "Music_YellowIntro": { + "address": 17044, + "bank": 31, + "engine": 3 + } + }, + "noiseHeaders": { + "1": { + "1": { + "address": 16387, + "bank": 2, + "engine": 1 + }, + "10": { + "address": 16414, + "bank": 2, + "engine": 1 + }, + "11": { + "address": 16417, + "bank": 2, + "engine": 1 + }, + "12": { + "address": 16420, + "bank": 2, + "engine": 1 + }, + "13": { + "address": 16423, + "bank": 2, + "engine": 1 + }, + "14": { + "address": 16426, + "bank": 2, + "engine": 1 + }, + "15": { + "address": 16429, + "bank": 2, + "engine": 1 + }, + "16": { + "address": 16432, + "bank": 2, + "engine": 1 + }, + "17": { + "address": 16435, + "bank": 2, + "engine": 1 + }, + "18": { + "address": 16438, + "bank": 2, + "engine": 1 + }, + "19": { + "address": 16441, + "bank": 2, + "engine": 1 + }, + "2": { + "address": 16390, + "bank": 2, + "engine": 1 + }, + "3": { + "address": 16393, + "bank": 2, + "engine": 1 + }, + "4": { + "address": 16396, + "bank": 2, + "engine": 1 + }, + "5": { + "address": 16399, + "bank": 2, + "engine": 1 + }, + "6": { + "address": 16402, + "bank": 2, + "engine": 1 + }, + "7": { + "address": 16405, + "bank": 2, + "engine": 1 + }, + "8": { + "address": 16408, + "bank": 2, + "engine": 1 + }, + "9": { + "address": 16411, + "bank": 2, + "engine": 1 + } + }, + "2": { + "1": { + "address": 16387, + "bank": 8, + "engine": 2 + }, + "10": { + "address": 16414, + "bank": 8, + "engine": 2 + }, + "11": { + "address": 16417, + "bank": 8, + "engine": 2 + }, + "12": { + "address": 16420, + "bank": 8, + "engine": 2 + }, + "13": { + "address": 16423, + "bank": 8, + "engine": 2 + }, + "14": { + "address": 16426, + "bank": 8, + "engine": 2 + }, + "15": { + "address": 16429, + "bank": 8, + "engine": 2 + }, + "16": { + "address": 16432, + "bank": 8, + "engine": 2 + }, + "17": { + "address": 16435, + "bank": 8, + "engine": 2 + }, + "18": { + "address": 16438, + "bank": 8, + "engine": 2 + }, + "19": { + "address": 16441, + "bank": 8, + "engine": 2 + }, + "2": { + "address": 16390, + "bank": 8, + "engine": 2 + }, + "3": { + "address": 16393, + "bank": 8, + "engine": 2 + }, + "4": { + "address": 16396, + "bank": 8, + "engine": 2 + }, + "5": { + "address": 16399, + "bank": 8, + "engine": 2 + }, + "6": { + "address": 16402, + "bank": 8, + "engine": 2 + }, + "7": { + "address": 16405, + "bank": 8, + "engine": 2 + }, + "8": { + "address": 16408, + "bank": 8, + "engine": 2 + }, + "9": { + "address": 16411, + "bank": 8, + "engine": 2 + } + }, + "3": { + "1": { + "address": 16387, + "bank": 31, + "engine": 3 + }, + "10": { + "address": 16414, + "bank": 31, + "engine": 3 + }, + "11": { + "address": 16417, + "bank": 31, + "engine": 3 + }, + "12": { + "address": 16420, + "bank": 31, + "engine": 3 + }, + "13": { + "address": 16423, + "bank": 31, + "engine": 3 + }, + "14": { + "address": 16426, + "bank": 31, + "engine": 3 + }, + "15": { + "address": 16429, + "bank": 31, + "engine": 3 + }, + "16": { + "address": 16432, + "bank": 31, + "engine": 3 + }, + "17": { + "address": 16435, + "bank": 31, + "engine": 3 + }, + "18": { + "address": 16438, + "bank": 31, + "engine": 3 + }, + "19": { + "address": 16441, + "bank": 31, + "engine": 3 + }, + "2": { + "address": 16390, + "bank": 31, + "engine": 3 + }, + "3": { + "address": 16393, + "bank": 31, + "engine": 3 + }, + "4": { + "address": 16396, + "bank": 31, + "engine": 3 + }, + "5": { + "address": 16399, + "bank": 31, + "engine": 3 + }, + "6": { + "address": 16402, + "bank": 31, + "engine": 3 + }, + "7": { + "address": 16405, + "bank": 31, + "engine": 3 + }, + "8": { + "address": 16408, + "bank": 31, + "engine": 3 + }, + "9": { + "address": 16411, + "bank": 31, + "engine": 3 + } + } + }, + "programBanks": [ + 2, + 8, + 31, + 32 + ], + "sfxHeaders": { + "59": { + "address": 16912, + "bank": 2, + "engine": 1 + }, + "Arrow_Tiles": { + "address": 16885, + "bank": 2, + "engine": 1 + }, + "Ball_Poof": { + "address": 16825, + "bank": 8, + "engine": 2 + }, + "Ball_Toss": { + "address": 16819, + "bank": 8, + "engine": 2 + }, + "Battle_09": { + "address": 16861, + "bank": 8, + "engine": 2 + }, + "Battle_0B": { + "address": 16867, + "bank": 8, + "engine": 2 + }, + "Battle_0C": { + "address": 16870, + "bank": 8, + "engine": 2 + }, + "Battle_0D": { + "address": 16873, + "bank": 8, + "engine": 2 + }, + "Battle_0E": { + "address": 16876, + "bank": 8, + "engine": 2 + }, + "Battle_0F": { + "address": 16879, + "bank": 8, + "engine": 2 + }, + "Battle_12": { + "address": 16888, + "bank": 8, + "engine": 2 + }, + "Battle_13": { + "address": 16891, + "bank": 8, + "engine": 2 + }, + "Battle_14": { + "address": 16894, + "bank": 8, + "engine": 2 + }, + "Battle_16": { + "address": 16900, + "bank": 8, + "engine": 2 + }, + "Battle_17": { + "address": 16903, + "bank": 8, + "engine": 2 + }, + "Battle_18": { + "address": 16906, + "bank": 8, + "engine": 2 + }, + "Battle_19": { + "address": 16909, + "bank": 8, + "engine": 2 + }, + "Battle_1B": { + "address": 16915, + "bank": 8, + "engine": 2 + }, + "Battle_1C": { + "address": 16918, + "bank": 8, + "engine": 2 + }, + "Battle_1E": { + "address": 16924, + "bank": 8, + "engine": 2 + }, + "Battle_20": { + "address": 16933, + "bank": 8, + "engine": 2 + }, + "Battle_21": { + "address": 16936, + "bank": 8, + "engine": 2 + }, + "Battle_22": { + "address": 16939, + "bank": 8, + "engine": 2 + }, + "Battle_23": { + "address": 16942, + "bank": 8, + "engine": 2 + }, + "Battle_24": { + "address": 16945, + "bank": 8, + "engine": 2 + }, + "Battle_25": { + "address": 16951, + "bank": 8, + "engine": 2 + }, + "Battle_26": { + "address": 16954, + "bank": 8, + "engine": 2 + }, + "Battle_27": { + "address": 16957, + "bank": 8, + "engine": 2 + }, + "Battle_28": { + "address": 16966, + "bank": 8, + "engine": 2 + }, + "Battle_29": { + "address": 16975, + "bank": 8, + "engine": 2 + }, + "Battle_2A": { + "address": 16981, + "bank": 8, + "engine": 2 + }, + "Battle_2B": { + "address": 16990, + "bank": 8, + "engine": 2 + }, + "Battle_2C": { + "address": 16996, + "bank": 8, + "engine": 2 + }, + "Battle_2E": { + "address": 17014, + "bank": 8, + "engine": 2 + }, + "Battle_2F": { + "address": 17023, + "bank": 8, + "engine": 2 + }, + "Battle_31": { + "address": 17041, + "bank": 8, + "engine": 2 + }, + "Battle_32": { + "address": 17047, + "bank": 8, + "engine": 2 + }, + "Battle_33": { + "address": 17053, + "bank": 8, + "engine": 2 + }, + "Battle_34": { + "address": 17059, + "bank": 8, + "engine": 2 + }, + "Battle_35": { + "address": 17068, + "bank": 8, + "engine": 2 + }, + "Battle_36": { + "address": 17074, + "bank": 8, + "engine": 2 + }, + "Caught_Mon": { + "address": 16846, + "bank": 8, + "engine": 2 + }, + "Collision": { + "address": 16924, + "bank": 2, + "engine": 1 + }, + "Cut": { + "address": 16900, + "bank": 2, + "engine": 1 + }, + "Damage": { + "address": 16882, + "bank": 8, + "engine": 2 + }, + "Denied": { + "address": 16879, + "bank": 2, + "engine": 1 + }, + "Dex_Page_Added": { + "address": 16840, + "bank": 8, + "engine": 2 + }, + "Doubleslap": { + "address": 16921, + "bank": 8, + "engine": 2 + }, + "Enter_PC": { + "address": 16849, + "bank": 2, + "engine": 1 + }, + "Faint_Fall": { + "address": 16858, + "bank": 8, + "engine": 2 + }, + "Faint_Thud": { + "address": 16831, + "bank": 8, + "engine": 2 + }, + "Fly": { + "address": 16876, + "bank": 2, + "engine": 1 + }, + "Get_Item1": { + "address": 16786, + "bank": 2, + "engine": 1 + }, + "Get_Item2": { + "address": 16795, + "bank": 2, + "engine": 1 + }, + "Get_Key_Item": { + "address": 16828, + "bank": 2, + "engine": 1 + }, + "Go_Inside": { + "address": 16903, + "bank": 2, + "engine": 1 + }, + "Go_Outside": { + "address": 16927, + "bank": 2, + "engine": 1 + }, + "Heal_Ailment": { + "address": 16810, + "bank": 2, + "engine": 1 + }, + "Heal_HP": { + "address": 16807, + "bank": 2, + "engine": 1 + }, + "Healing_Machine": { + "address": 16858, + "bank": 2, + "engine": 1 + }, + "Horn_Drill": { + "address": 16930, + "bank": 8, + "engine": 2 + }, + "Intro_Crash": { + "address": 16948, + "bank": 31, + "engine": 3 + }, + "Intro_Hip": { + "address": 16939, + "bank": 31, + "engine": 3 + }, + "Intro_Hop": { + "address": 16942, + "bank": 31, + "engine": 3 + }, + "Intro_Lunge": { + "address": 16936, + "bank": 31, + "engine": 3 + }, + "Intro_Raise": { + "address": 16945, + "bank": 31, + "engine": 3 + }, + "Intro_Whoosh": { + "address": 16951, + "bank": 31, + "engine": 3 + }, + "Ledge": { + "address": 16870, + "bank": 2, + "engine": 1 + }, + "Level_Up": { + "address": 16786, + "bank": 8, + "engine": 2 + }, + "Not_Very_Effective": { + "address": 16885, + "bank": 8, + "engine": 2 + }, + "Peck": { + "address": 16855, + "bank": 8, + "engine": 2 + }, + "Poisoned": { + "address": 16837, + "bank": 2, + "engine": 1 + }, + "Pokedex_Rating": { + "address": 16819, + "bank": 2, + "engine": 1 + }, + "Pokeflute": { + "address": 16936, + "bank": 2, + "engine": 1 + }, + "Pound": { + "address": 16864, + "bank": 8, + "engine": 2 + }, + "Press_AB": { + "address": 16816, + "bank": 2, + "engine": 1 + }, + "Psybeam": { + "address": 17005, + "bank": 8, + "engine": 2 + }, + "Psychic_M": { + "address": 17032, + "bank": 8, + "engine": 2 + }, + "Purchase": { + "address": 16918, + "bank": 2, + "engine": 1 + }, + "Push_Boulder": { + "address": 16888, + "bank": 2, + "engine": 1 + }, + "Run": { + "address": 16837, + "bank": 8, + "engine": 2 + }, + "SS_Anne_Horn": { + "address": 16891, + "bank": 2, + "engine": 1 + }, + "Safari_Zone_PA": { + "address": 16939, + "bank": 2, + "engine": 1 + }, + "Save": { + "address": 16930, + "bank": 2, + "engine": 1 + }, + "Shooting_Star": { + "address": 16966, + "bank": 31, + "engine": 3 + }, + "Shrink": { + "address": 16852, + "bank": 2, + "engine": 1 + }, + "Slots_New_Spin": { + "address": 16960, + "bank": 31, + "engine": 3 + }, + "Slots_Reward": { + "address": 16957, + "bank": 31, + "engine": 3 + }, + "Slots_Stop_Wheel": { + "address": 16954, + "bank": 31, + "engine": 3 + }, + "Start_Menu": { + "address": 16813, + "bank": 2, + "engine": 1 + }, + "Super_Effective": { + "address": 16912, + "bank": 8, + "engine": 2 + }, + "Swap": { + "address": 16906, + "bank": 2, + "engine": 1 + }, + "Switch": { + "address": 16855, + "bank": 2, + "engine": 1 + }, + "Teleport_Enter1": { + "address": 16864, + "bank": 2, + "engine": 1 + }, + "Teleport_Enter2": { + "address": 16873, + "bank": 2, + "engine": 1 + }, + "Teleport_Exit1": { + "address": 16861, + "bank": 2, + "engine": 1 + }, + "Teleport_Exit2": { + "address": 16867, + "bank": 2, + "engine": 1 + }, + "Tink": { + "address": 16804, + "bank": 2, + "engine": 1 + }, + "Trade_Machine": { + "address": 16840, + "bank": 2, + "engine": 1 + }, + "Trainer_Appeared": { + "address": 17083, + "bank": 8, + "engine": 2 + }, + "Turn_Off_PC": { + "address": 16846, + "bank": 2, + "engine": 1 + }, + "Turn_On_PC": { + "address": 16843, + "bank": 2, + "engine": 1 + }, + "Vine_Whip": { + "address": 16897, + "bank": 8, + "engine": 2 + }, + "Withdraw_Deposit": { + "address": 16897, + "bank": 2, + "engine": 1 + } + }, + "waveBanks": { + "1": { + "address": 17267, + "bank": 2 + }, + "2": { + "address": 17267, + "bank": 8 + }, + "3": { + "address": 17267, + "bank": 31 + } + } + }, + "battleAnimations": { + "baseCoordCount": 177, + "firstSpecialEffect": 216, + "frameBlockCount": 122, + "miscAnimations": [ + "SHOWPIC_ANIM", + "STATUS_AFFECTED_ANIM", + "ANIM_A8", + "ENEMY_HUD_SHAKE_ANIM", + "TRADE_BALL_DROP_ANIM", + "TRADE_BALL_SHAKE_ANIM", + "TRADE_BALL_TILT_ANIM", + "TRADE_BALL_POOF_ANIM", + "XSTATITEM_ANIM", + "XSTATITEM_DUPLICATE_ANIM", + "SHRINKING_SQUARE_ANIM", + "ANIM_B1", + "ANIM_B2", + "ANIM_B3", + "ANIM_B4", + "ANIM_B5", + "ANIM_B6", + "ANIM_B7", + "ANIM_B8", + "ANIM_B9", + "BURN_PSN_ANIM", + "ANIM_BB", + "SLP_PLAYER_ANIM", + "SLP_ANIM", + "CONF_PLAYER_ANIM", + "CONF_ANIM", + "SLIDE_DOWN_ANIM", + "TOSS_ANIM", + "SHAKE_ANIM", + "POOF_ANIM", + "BLOCKBALL_ANIM", + "GREATTOSS_ANIM", + "ULTRATOSS_ANIM", + "SHAKE_SCREEN_ANIM", + "HIDEPIC_ANIM", + "ROCK_ANIM", + "BAIT_ANIM" + ], + "moveCount": 165, + "specialEffects": { + "216": "SE_WAVY_SCREEN", + "217": "SE_SUBSTITUTE_MON", + "218": "SE_SHAKE_BACK_AND_FORTH", + "219": "SE_SLIDE_ENEMY_MON_OFF", + "220": "SE_SHOW_ENEMY_MON_PIC", + "221": "SE_SHOW_MON_PIC", + "222": "SE_BLINK_ENEMY_MON", + "223": "SE_HIDE_ENEMY_MON_PIC", + "224": "SE_FLASH_ENEMY_MON_PIC", + "225": "SE_DELAY_ANIMATION_10", + "226": "SE_SPIRAL_BALLS_INWARD", + "227": "SE_SHAKE_ENEMY_HUD_2", + "228": "SE_SHAKE_ENEMY_HUD", + "229": "SE_SLIDE_MON_HALF_OFF", + "230": "SE_PETALS_FALLING", + "231": "SE_LEAVES_FALLING", + "232": "SE_TRANSFORM_MON", + "233": "SE_SLIDE_MON_DOWN_AND_HIDE", + "234": "SE_MINIMIZE_MON", + "235": "SE_BOUNCE_UP_AND_DOWN", + "236": "SE_SHOOT_MANY_BALLS_UPWARD", + "237": "SE_SHOOT_BALLS_UPWARD", + "238": "SE_SQUISH_MON_PIC", + "239": "SE_HIDE_MON_PIC", + "240": "SE_LIGHT_SCREEN_PALETTE", + "241": "SE_RESET_MON_POSITION", + "242": "SE_MOVE_MON_HORIZONTALLY", + "243": "SE_BLINK_MON", + "244": "SE_SLIDE_MON_OFF", + "245": "SE_FLASH_MON_PIC", + "246": "SE_SLIDE_MON_DOWN", + "247": "SE_SLIDE_MON_UP", + "248": "SE_FLASH_SCREEN_LONG", + "249": "SE_DARKEN_MON_PALETTE", + "250": "SE_WATER_DROPLETS_EVERYWHERE", + "251": "SE_SHAKE_SCREEN", + "252": "SE_RESET_SCREEN_PALETTE", + "253": "SE_DARK_SCREEN_PALETTE", + "254": "SE_DARK_SCREEN_FLASH" + }, + "subanimCount": 86, + "subanimTypes": [ + "NORMAL", + "HVFLIP", + "HFLIP", + "COORDFLIP", + "REVERSE", + "ENEMY" + ], + "tilesheets": [ + { + "height": 40, + "path": "assets/generated/battle/anims/move_anim_0.png", + "source": "gfx/battle/move_anim_0.png", + "width": 128 + }, + { + "height": 40, + "path": "assets/generated/battle/anims/move_anim_1.png", + "source": "gfx/battle/move_anim_1.png", + "width": 128 + }, + { + "height": 40, + "path": "assets/generated/battle/anims/move_anim_0.png", + "source": "gfx/battle/move_anim_0.png", + "width": 128 + } + ] + }, + "charmap": { + "0": "", + "10": "ザ", + "100": "", + "101": "", + "102": "", + "103": "", + "104": "", + "105": "", + "106": "", + "107": "", + "108": "", + "109": "", + "11": "ジ", + "110": "ぃ", + "111": "ぅ", + "112": "‘", + "113": "’", + "114": "“", + "115": "”", + "116": "·", + "117": "…", + "118": "ぁ", + "119": "ぇ", + "12": "ズ", + "120": "ぉ", + "121": "┌", + "122": "─", + "123": "┐", + "124": "│", + "125": "└", + "126": "┘", + "127": " ", + "128": "A", + "129": "B", + "13": "ゼ", + "130": "C", + "131": "D", + "132": "E", + "133": "F", + "134": "G", + "135": "H", + "136": "I", + "137": "J", + "138": "K", + "139": "L", + "14": "ゾ", + "140": "M", + "141": "N", + "142": "O", + "143": "P", + "144": "Q", + "145": "R", + "146": "S", + "147": "T", + "148": "U", + "149": "V", + "15": "ダ", + "150": "W", + "151": "X", + "152": "Y", + "153": "Z", + "154": "(", + "155": ")", + "156": ":", + "157": ";", + "158": "[", + "159": "]", + "16": "ヂ", + "160": "a", + "161": "b", + "162": "c", + "163": "d", + "164": "e", + "165": "f", + "166": "g", + "167": "h", + "168": "i", + "169": "j", + "17": "ヅ", + "170": "k", + "171": "l", + "172": "m", + "173": "n", + "174": "o", + "175": "p", + "176": "q", + "177": "r", + "178": "s", + "179": "t", + "18": "デ", + "180": "u", + "181": "v", + "182": "w", + "183": "x", + "184": "y", + "185": "z", + "186": "é", + "187": "'d", + "188": "'l", + "189": "'s", + "19": "ド", + "190": "'t", + "191": "'v", + "192": "た", + "193": "ち", + "194": "つ", + "195": "て", + "196": "と", + "197": "な", + "198": "に", + "199": "ぬ", + "200": "ね", + "201": "の", + "202": "は", + "203": "ひ", + "204": "ふ", + "205": "へ", + "206": "ほ", + "207": "ま", + "208": "み", + "209": "む", + "210": "め", + "211": "も", + "212": "や", + "213": "ゆ", + "214": "よ", + "215": "ら", + "216": "り", + "217": "る", + "218": "れ", + "219": "ろ", + "220": "わ", + "221": "を", + "222": "ん", + "223": "っ", + "224": "'", + "225": "", + "226": "", + "227": "-", + "228": "'r", + "229": "'m", + "230": "?", + "231": "!", + "232": ".", + "233": "ァ", + "234": "ゥ", + "235": "ェ", + "236": "▷", + "237": "▲", + "238": "▼", + "239": "♂", + "240": "", + "241": "×", + "242": ".", + "243": "/", + "244": ",", + "245": "♀", + "246": "0", + "247": "1", + "248": "2", + "249": "3", + "25": "バ", + "250": "4", + "251": "5", + "252": "6", + "253": "7", + "254": "8", + "255": "9", + "26": "ビ", + "27": "ブ", + "28": "ボ", + "38": "が", + "39": "ぎ", + "40": "ぐ", + "41": "げ", + "42": "ご", + "43": "ざ", + "44": "じ", + "45": "ず", + "46": "ぜ", + "47": "ぞ", + "48": "だ", + "49": "ぢ", + "5": "ガ", + "50": "づ", + "51": "で", + "52": "ど", + "58": "ば", + "59": "び", + "6": "ギ", + "60": "ぶ", + "61": "べ", + "62": "ぼ", + "64": "パ", + "65": "ピ", + "66": "プ", + "67": "ポ", + "68": "ぱ", + "69": "ぴ", + "7": "グ", + "70": "ぷ", + "71": "ぺ", + "72": "ぽ", + "73": "\f", + "74": "POKéMON", + "75": "<_CONT>", + "76": "", + "78": "\n", + "79": "\n", + "8": "ゲ", + "80": "", + "81": "\f", + "82": "{PLAYER}", + "83": "{RIVAL}", + "84": "POKé", + "85": "\u000b", + "86": "……", + "87": "", + "88": "", + "89": "{TARGET}", + "9": "ゴ", + "90": "{USER}", + "91": "PC", + "92": "TM", + "93": "TRAINER", + "94": "ROCKET", + "95": "", + "96": "", + "97": "", + "98": "", + "99": "" + }, + "constants": { + "mapOrder": [ + "PALLET_TOWN", + "VIRIDIAN_CITY", + "PEWTER_CITY", + "CERULEAN_CITY", + "LAVENDER_TOWN", + "VERMILION_CITY", + "CELADON_CITY", + "FUCHSIA_CITY", + "CINNABAR_ISLAND", + "INDIGO_PLATEAU", + "SAFFRON_CITY", + "UNUSED_MAP_0B", + "ROUTE_1", + "ROUTE_2", + "ROUTE_3", + "ROUTE_4", + "ROUTE_5", + "ROUTE_6", + "ROUTE_7", + "ROUTE_8", + "ROUTE_9", + "ROUTE_10", + "ROUTE_11", + "ROUTE_12", + "ROUTE_13", + "ROUTE_14", + "ROUTE_15", + "ROUTE_16", + "ROUTE_17", + "ROUTE_18", + "ROUTE_19", + "ROUTE_20", + "ROUTE_21", + "ROUTE_22", + "ROUTE_23", + "ROUTE_24", + "ROUTE_25", + "REDS_HOUSE_1F", + "REDS_HOUSE_2F", + "BLUES_HOUSE", + "OAKS_LAB", + "VIRIDIAN_POKECENTER", + "VIRIDIAN_MART", + "VIRIDIAN_SCHOOL_HOUSE", + "VIRIDIAN_NICKNAME_HOUSE", + "VIRIDIAN_GYM", + "DIGLETTS_CAVE_ROUTE_2", + "VIRIDIAN_FOREST_NORTH_GATE", + "ROUTE_2_TRADE_HOUSE", + "ROUTE_2_GATE", + "VIRIDIAN_FOREST_SOUTH_GATE", + "VIRIDIAN_FOREST", + "MUSEUM_1F", + "MUSEUM_2F", + "PEWTER_GYM", + "PEWTER_NIDORAN_HOUSE", + "PEWTER_MART", + "PEWTER_SPEECH_HOUSE", + "PEWTER_POKECENTER", + "MT_MOON_1F", + "MT_MOON_B1F", + "MT_MOON_B2F", + "CERULEAN_TRASHED_HOUSE", + "CERULEAN_MELANIES_HOUSE", + "CERULEAN_POKECENTER", + "CERULEAN_GYM", + "BIKE_SHOP", + "CERULEAN_MART", + "MT_MOON_POKECENTER", + "CERULEAN_TRASHED_HOUSE_COPY", + "ROUTE_5_GATE", + "UNDERGROUND_PATH_ROUTE_5", + "DAYCARE", + "ROUTE_6_GATE", + "UNDERGROUND_PATH_ROUTE_6", + "UNDERGROUND_PATH_ROUTE_6_COPY", + "ROUTE_7_GATE", + "UNDERGROUND_PATH_ROUTE_7", + "UNDERGROUND_PATH_ROUTE_7_COPY", + "ROUTE_8_GATE", + "UNDERGROUND_PATH_ROUTE_8", + "ROCK_TUNNEL_POKECENTER", + "ROCK_TUNNEL_1F", + "POWER_PLANT", + "ROUTE_11_GATE_1F", + "DIGLETTS_CAVE_ROUTE_11", + "ROUTE_11_GATE_2F", + "ROUTE_12_GATE_1F", + "BILLS_HOUSE", + "VERMILION_POKECENTER", + "POKEMON_FAN_CLUB", + "VERMILION_MART", + "VERMILION_GYM", + "VERMILION_PIDGEY_HOUSE", + "VERMILION_DOCK", + "SS_ANNE_1F", + "SS_ANNE_2F", + "SS_ANNE_3F", + "SS_ANNE_B1F", + "SS_ANNE_BOW", + "SS_ANNE_KITCHEN", + "SS_ANNE_CAPTAINS_ROOM", + "SS_ANNE_1F_ROOMS", + "SS_ANNE_2F_ROOMS", + "SS_ANNE_B1F_ROOMS", + "UNUSED_MAP_69", + "UNUSED_MAP_6A", + "UNUSED_MAP_6B", + "VICTORY_ROAD_1F", + "UNUSED_MAP_6D", + "UNUSED_MAP_6E", + "UNUSED_MAP_6F", + "UNUSED_MAP_70", + "LANCES_ROOM", + "UNUSED_MAP_72", + "UNUSED_MAP_73", + "UNUSED_MAP_74", + "UNUSED_MAP_75", + "HALL_OF_FAME", + "UNDERGROUND_PATH_NORTH_SOUTH", + "CHAMPIONS_ROOM", + "UNDERGROUND_PATH_WEST_EAST", + "CELADON_MART_1F", + "CELADON_MART_2F", + "CELADON_MART_3F", + "CELADON_MART_4F", + "CELADON_MART_ROOF", + "CELADON_MART_ELEVATOR", + "CELADON_MANSION_1F", + "CELADON_MANSION_2F", + "CELADON_MANSION_3F", + "CELADON_MANSION_ROOF", + "CELADON_MANSION_ROOF_HOUSE", + "CELADON_POKECENTER", + "CELADON_GYM", + "GAME_CORNER", + "CELADON_MART_5F", + "GAME_CORNER_PRIZE_ROOM", + "CELADON_DINER", + "CELADON_CHIEF_HOUSE", + "CELADON_HOTEL", + "LAVENDER_POKECENTER", + "POKEMON_TOWER_1F", + "POKEMON_TOWER_2F", + "POKEMON_TOWER_3F", + "POKEMON_TOWER_4F", + "POKEMON_TOWER_5F", + "POKEMON_TOWER_6F", + "POKEMON_TOWER_7F", + "MR_FUJIS_HOUSE", + "LAVENDER_MART", + "LAVENDER_CUBONE_HOUSE", + "FUCHSIA_MART", + "FUCHSIA_BILLS_GRANDPAS_HOUSE", + "FUCHSIA_POKECENTER", + "WARDENS_HOUSE", + "SAFARI_ZONE_GATE", + "FUCHSIA_GYM", + "FUCHSIA_MEETING_ROOM", + "SEAFOAM_ISLANDS_B1F", + "SEAFOAM_ISLANDS_B2F", + "SEAFOAM_ISLANDS_B3F", + "SEAFOAM_ISLANDS_B4F", + "VERMILION_OLD_ROD_HOUSE", + "FUCHSIA_GOOD_ROD_HOUSE", + "POKEMON_MANSION_1F", + "CINNABAR_GYM", + "CINNABAR_LAB", + "CINNABAR_LAB_TRADE_ROOM", + "CINNABAR_LAB_METRONOME_ROOM", + "CINNABAR_LAB_FOSSIL_ROOM", + "CINNABAR_POKECENTER", + "CINNABAR_MART", + "CINNABAR_MART_COPY", + "INDIGO_PLATEAU_LOBBY", + "COPYCATS_HOUSE_1F", + "COPYCATS_HOUSE_2F", + "FIGHTING_DOJO", + "SAFFRON_GYM", + "SAFFRON_PIDGEY_HOUSE", + "SAFFRON_MART", + "SILPH_CO_1F", + "SAFFRON_POKECENTER", + "MR_PSYCHICS_HOUSE", + "ROUTE_15_GATE_1F", + "ROUTE_15_GATE_2F", + "ROUTE_16_GATE_1F", + "ROUTE_16_GATE_2F", + "ROUTE_16_FLY_HOUSE", + "ROUTE_12_SUPER_ROD_HOUSE", + "ROUTE_18_GATE_1F", + "ROUTE_18_GATE_2F", + "SEAFOAM_ISLANDS_1F", + "ROUTE_22_GATE", + "VICTORY_ROAD_2F", + "ROUTE_12_GATE_2F", + "VERMILION_TRADE_HOUSE", + "DIGLETTS_CAVE", + "VICTORY_ROAD_3F", + "ROCKET_HIDEOUT_B1F", + "ROCKET_HIDEOUT_B2F", + "ROCKET_HIDEOUT_B3F", + "ROCKET_HIDEOUT_B4F", + "ROCKET_HIDEOUT_ELEVATOR", + "UNUSED_MAP_CC", + "UNUSED_MAP_CD", + "UNUSED_MAP_CE", + "SILPH_CO_2F", + "SILPH_CO_3F", + "SILPH_CO_4F", + "SILPH_CO_5F", + "SILPH_CO_6F", + "SILPH_CO_7F", + "SILPH_CO_8F", + "POKEMON_MANSION_2F", + "POKEMON_MANSION_3F", + "POKEMON_MANSION_B1F", + "SAFARI_ZONE_EAST", + "SAFARI_ZONE_NORTH", + "SAFARI_ZONE_WEST", + "SAFARI_ZONE_CENTER", + "SAFARI_ZONE_CENTER_REST_HOUSE", + "SAFARI_ZONE_SECRET_HOUSE", + "SAFARI_ZONE_WEST_REST_HOUSE", + "SAFARI_ZONE_EAST_REST_HOUSE", + "SAFARI_ZONE_NORTH_REST_HOUSE", + "CERULEAN_CAVE_2F", + "CERULEAN_CAVE_B1F", + "CERULEAN_CAVE_1F", + "NAME_RATERS_HOUSE", + "CERULEAN_BADGE_HOUSE", + "UNUSED_MAP_E7", + "ROCK_TUNNEL_B1F", + "SILPH_CO_9F", + "SILPH_CO_10F", + "SILPH_CO_11F", + "SILPH_CO_ELEVATOR", + "UNUSED_MAP_ED", + "UNUSED_MAP_EE", + "TRADE_CENTER", + "COLOSSEUM", + "UNUSED_MAP_F1", + "UNUSED_MAP_F2", + "UNUSED_MAP_F3", + "UNUSED_MAP_F4", + "LORELEIS_ROOM", + "BRUNOS_ROOM", + "AGATHAS_ROOM", + "SUMMER_BEACH_HOUSE" + ], + "maps": { + "AGATHAS_ROOM": { + "height": 6, + "index": 247, + "width": 5 + }, + "BIKE_SHOP": { + "height": 4, + "index": 66, + "width": 4 + }, + "BILLS_HOUSE": { + "height": 4, + "index": 88, + "width": 4 + }, + "BLUES_HOUSE": { + "height": 4, + "index": 39, + "width": 4 + }, + "BRUNOS_ROOM": { + "height": 6, + "index": 246, + "width": 5 + }, + "CELADON_CHIEF_HOUSE": { + "height": 4, + "index": 139, + "width": 4 + }, + "CELADON_CITY": { + "height": 18, + "index": 6, + "width": 25 + }, + "CELADON_DINER": { + "height": 4, + "index": 138, + "width": 5 + }, + "CELADON_GYM": { + "height": 9, + "index": 134, + "width": 5 + }, + "CELADON_HOTEL": { + "height": 4, + "index": 140, + "width": 7 + }, + "CELADON_MANSION_1F": { + "height": 6, + "index": 128, + "width": 4 + }, + "CELADON_MANSION_2F": { + "height": 6, + "index": 129, + "width": 4 + }, + "CELADON_MANSION_3F": { + "height": 6, + "index": 130, + "width": 4 + }, + "CELADON_MANSION_ROOF": { + "height": 6, + "index": 131, + "width": 4 + }, + "CELADON_MANSION_ROOF_HOUSE": { + "height": 4, + "index": 132, + "width": 4 + }, + "CELADON_MART_1F": { + "height": 4, + "index": 122, + "width": 10 + }, + "CELADON_MART_2F": { + "height": 4, + "index": 123, + "width": 10 + }, + "CELADON_MART_3F": { + "height": 4, + "index": 124, + "width": 10 + }, + "CELADON_MART_4F": { + "height": 4, + "index": 125, + "width": 10 + }, + "CELADON_MART_5F": { + "height": 4, + "index": 136, + "width": 10 + }, + "CELADON_MART_ELEVATOR": { + "height": 2, + "index": 127, + "width": 2 + }, + "CELADON_MART_ROOF": { + "height": 4, + "index": 126, + "width": 10 + }, + "CELADON_POKECENTER": { + "height": 4, + "index": 133, + "width": 7 + }, + "CERULEAN_BADGE_HOUSE": { + "height": 4, + "index": 230, + "width": 4 + }, + "CERULEAN_CAVE_1F": { + "height": 9, + "index": 228, + "width": 15 + }, + "CERULEAN_CAVE_2F": { + "height": 9, + "index": 226, + "width": 15 + }, + "CERULEAN_CAVE_B1F": { + "height": 9, + "index": 227, + "width": 15 + }, + "CERULEAN_CITY": { + "height": 18, + "index": 3, + "width": 20 + }, + "CERULEAN_GYM": { + "height": 7, + "index": 65, + "width": 5 + }, + "CERULEAN_MART": { + "height": 4, + "index": 67, + "width": 4 + }, + "CERULEAN_MELANIES_HOUSE": { + "height": 4, + "index": 63, + "width": 4 + }, + "CERULEAN_POKECENTER": { + "height": 4, + "index": 64, + "width": 7 + }, + "CERULEAN_TRASHED_HOUSE": { + "height": 4, + "index": 62, + "width": 4 + }, + "CERULEAN_TRASHED_HOUSE_COPY": { + "height": 4, + "index": 69, + "width": 4 + }, + "CHAMPIONS_ROOM": { + "height": 4, + "index": 120, + "width": 4 + }, + "CINNABAR_GYM": { + "height": 9, + "index": 166, + "width": 10 + }, + "CINNABAR_ISLAND": { + "height": 9, + "index": 8, + "width": 10 + }, + "CINNABAR_LAB": { + "height": 4, + "index": 167, + "width": 9 + }, + "CINNABAR_LAB_FOSSIL_ROOM": { + "height": 4, + "index": 170, + "width": 4 + }, + "CINNABAR_LAB_METRONOME_ROOM": { + "height": 4, + "index": 169, + "width": 4 + }, + "CINNABAR_LAB_TRADE_ROOM": { + "height": 4, + "index": 168, + "width": 4 + }, + "CINNABAR_MART": { + "height": 4, + "index": 172, + "width": 4 + }, + "CINNABAR_MART_COPY": { + "height": 4, + "index": 173, + "width": 4 + }, + "CINNABAR_POKECENTER": { + "height": 4, + "index": 171, + "width": 7 + }, + "COLOSSEUM": { + "height": 4, + "index": 240, + "width": 5 + }, + "COPYCATS_HOUSE_1F": { + "height": 4, + "index": 175, + "width": 4 + }, + "COPYCATS_HOUSE_2F": { + "height": 4, + "index": 176, + "width": 4 + }, + "DAYCARE": { + "height": 4, + "index": 72, + "width": 4 + }, + "DIGLETTS_CAVE": { + "height": 18, + "index": 197, + "width": 20 + }, + "DIGLETTS_CAVE_ROUTE_11": { + "height": 4, + "index": 85, + "width": 4 + }, + "DIGLETTS_CAVE_ROUTE_2": { + "height": 4, + "index": 46, + "width": 4 + }, + "FIGHTING_DOJO": { + "height": 6, + "index": 177, + "width": 5 + }, + "FUCHSIA_BILLS_GRANDPAS_HOUSE": { + "height": 4, + "index": 153, + "width": 4 + }, + "FUCHSIA_CITY": { + "height": 18, + "index": 7, + "width": 20 + }, + "FUCHSIA_GOOD_ROD_HOUSE": { + "height": 4, + "index": 164, + "width": 4 + }, + "FUCHSIA_GYM": { + "height": 9, + "index": 157, + "width": 5 + }, + "FUCHSIA_MART": { + "height": 4, + "index": 152, + "width": 4 + }, + "FUCHSIA_MEETING_ROOM": { + "height": 4, + "index": 158, + "width": 7 + }, + "FUCHSIA_POKECENTER": { + "height": 4, + "index": 154, + "width": 7 + }, + "GAME_CORNER": { + "height": 9, + "index": 135, + "width": 10 + }, + "GAME_CORNER_PRIZE_ROOM": { + "height": 4, + "index": 137, + "width": 5 + }, + "HALL_OF_FAME": { + "height": 4, + "index": 118, + "width": 5 + }, + "INDIGO_PLATEAU": { + "height": 9, + "index": 9, + "width": 10 + }, + "INDIGO_PLATEAU_LOBBY": { + "height": 6, + "index": 174, + "width": 8 + }, + "LANCES_ROOM": { + "height": 13, + "index": 113, + "width": 13 + }, + "LAVENDER_CUBONE_HOUSE": { + "height": 4, + "index": 151, + "width": 4 + }, + "LAVENDER_MART": { + "height": 4, + "index": 150, + "width": 4 + }, + "LAVENDER_POKECENTER": { + "height": 4, + "index": 141, + "width": 7 + }, + "LAVENDER_TOWN": { + "height": 9, + "index": 4, + "width": 10 + }, + "LORELEIS_ROOM": { + "height": 6, + "index": 245, + "width": 5 + }, + "MR_FUJIS_HOUSE": { + "height": 4, + "index": 149, + "width": 4 + }, + "MR_PSYCHICS_HOUSE": { + "height": 4, + "index": 183, + "width": 4 + }, + "MT_MOON_1F": { + "height": 18, + "index": 59, + "width": 20 + }, + "MT_MOON_B1F": { + "height": 14, + "index": 60, + "width": 14 + }, + "MT_MOON_B2F": { + "height": 18, + "index": 61, + "width": 20 + }, + "MT_MOON_POKECENTER": { + "height": 4, + "index": 68, + "width": 7 + }, + "MUSEUM_1F": { + "height": 4, + "index": 52, + "width": 10 + }, + "MUSEUM_2F": { + "height": 4, + "index": 53, + "width": 7 + }, + "NAME_RATERS_HOUSE": { + "height": 4, + "index": 229, + "width": 4 + }, + "OAKS_LAB": { + "height": 6, + "index": 40, + "width": 5 + }, + "PALLET_TOWN": { + "height": 9, + "index": 0, + "width": 10 + }, + "PEWTER_CITY": { + "height": 18, + "index": 2, + "width": 20 + }, + "PEWTER_GYM": { + "height": 7, + "index": 54, + "width": 5 + }, + "PEWTER_MART": { + "height": 4, + "index": 56, + "width": 4 + }, + "PEWTER_NIDORAN_HOUSE": { + "height": 4, + "index": 55, + "width": 4 + }, + "PEWTER_POKECENTER": { + "height": 4, + "index": 58, + "width": 7 + }, + "PEWTER_SPEECH_HOUSE": { + "height": 4, + "index": 57, + "width": 4 + }, + "POKEMON_FAN_CLUB": { + "height": 4, + "index": 90, + "width": 4 + }, + "POKEMON_MANSION_1F": { + "height": 14, + "index": 165, + "width": 15 + }, + "POKEMON_MANSION_2F": { + "height": 14, + "index": 214, + "width": 15 + }, + "POKEMON_MANSION_3F": { + "height": 9, + "index": 215, + "width": 15 + }, + "POKEMON_MANSION_B1F": { + "height": 14, + "index": 216, + "width": 15 + }, + "POKEMON_TOWER_1F": { + "height": 9, + "index": 142, + "width": 10 + }, + "POKEMON_TOWER_2F": { + "height": 9, + "index": 143, + "width": 10 + }, + "POKEMON_TOWER_3F": { + "height": 9, + "index": 144, + "width": 10 + }, + "POKEMON_TOWER_4F": { + "height": 9, + "index": 145, + "width": 10 + }, + "POKEMON_TOWER_5F": { + "height": 9, + "index": 146, + "width": 10 + }, + "POKEMON_TOWER_6F": { + "height": 9, + "index": 147, + "width": 10 + }, + "POKEMON_TOWER_7F": { + "height": 9, + "index": 148, + "width": 10 + }, + "POWER_PLANT": { + "height": 18, + "index": 83, + "width": 20 + }, + "REDS_HOUSE_1F": { + "height": 4, + "index": 37, + "width": 4 + }, + "REDS_HOUSE_2F": { + "height": 4, + "index": 38, + "width": 4 + }, + "ROCKET_HIDEOUT_B1F": { + "height": 14, + "index": 199, + "width": 15 + }, + "ROCKET_HIDEOUT_B2F": { + "height": 14, + "index": 200, + "width": 15 + }, + "ROCKET_HIDEOUT_B3F": { + "height": 14, + "index": 201, + "width": 15 + }, + "ROCKET_HIDEOUT_B4F": { + "height": 12, + "index": 202, + "width": 15 + }, + "ROCKET_HIDEOUT_ELEVATOR": { + "height": 4, + "index": 203, + "width": 3 + }, + "ROCK_TUNNEL_1F": { + "height": 18, + "index": 82, + "width": 20 + }, + "ROCK_TUNNEL_B1F": { + "height": 18, + "index": 232, + "width": 20 + }, + "ROCK_TUNNEL_POKECENTER": { + "height": 4, + "index": 81, + "width": 7 + }, + "ROUTE_1": { + "height": 18, + "index": 12, + "width": 10 + }, + "ROUTE_10": { + "height": 36, + "index": 21, + "width": 10 + }, + "ROUTE_11": { + "height": 9, + "index": 22, + "width": 30 + }, + "ROUTE_11_GATE_1F": { + "height": 5, + "index": 84, + "width": 4 + }, + "ROUTE_11_GATE_2F": { + "height": 4, + "index": 86, + "width": 4 + }, + "ROUTE_12": { + "height": 54, + "index": 23, + "width": 10 + }, + "ROUTE_12_GATE_1F": { + "height": 4, + "index": 87, + "width": 5 + }, + "ROUTE_12_GATE_2F": { + "height": 4, + "index": 195, + "width": 4 + }, + "ROUTE_12_SUPER_ROD_HOUSE": { + "height": 4, + "index": 189, + "width": 4 + }, + "ROUTE_13": { + "height": 9, + "index": 24, + "width": 30 + }, + "ROUTE_14": { + "height": 27, + "index": 25, + "width": 10 + }, + "ROUTE_15": { + "height": 9, + "index": 26, + "width": 30 + }, + "ROUTE_15_GATE_1F": { + "height": 5, + "index": 184, + "width": 4 + }, + "ROUTE_15_GATE_2F": { + "height": 4, + "index": 185, + "width": 4 + }, + "ROUTE_16": { + "height": 9, + "index": 27, + "width": 20 + }, + "ROUTE_16_FLY_HOUSE": { + "height": 4, + "index": 188, + "width": 4 + }, + "ROUTE_16_GATE_1F": { + "height": 7, + "index": 186, + "width": 4 + }, + "ROUTE_16_GATE_2F": { + "height": 4, + "index": 187, + "width": 4 + }, + "ROUTE_17": { + "height": 72, + "index": 28, + "width": 10 + }, + "ROUTE_18": { + "height": 9, + "index": 29, + "width": 25 + }, + "ROUTE_18_GATE_1F": { + "height": 5, + "index": 190, + "width": 4 + }, + "ROUTE_18_GATE_2F": { + "height": 4, + "index": 191, + "width": 4 + }, + "ROUTE_19": { + "height": 27, + "index": 30, + "width": 10 + }, + "ROUTE_2": { + "height": 36, + "index": 13, + "width": 10 + }, + "ROUTE_20": { + "height": 9, + "index": 31, + "width": 50 + }, + "ROUTE_21": { + "height": 45, + "index": 32, + "width": 10 + }, + "ROUTE_22": { + "height": 9, + "index": 33, + "width": 20 + }, + "ROUTE_22_GATE": { + "height": 4, + "index": 193, + "width": 5 + }, + "ROUTE_23": { + "height": 72, + "index": 34, + "width": 10 + }, + "ROUTE_24": { + "height": 18, + "index": 35, + "width": 10 + }, + "ROUTE_25": { + "height": 9, + "index": 36, + "width": 30 + }, + "ROUTE_2_GATE": { + "height": 4, + "index": 49, + "width": 5 + }, + "ROUTE_2_TRADE_HOUSE": { + "height": 4, + "index": 48, + "width": 4 + }, + "ROUTE_3": { + "height": 9, + "index": 14, + "width": 35 + }, + "ROUTE_4": { + "height": 9, + "index": 15, + "width": 45 + }, + "ROUTE_5": { + "height": 18, + "index": 16, + "width": 10 + }, + "ROUTE_5_GATE": { + "height": 3, + "index": 70, + "width": 4 + }, + "ROUTE_6": { + "height": 18, + "index": 17, + "width": 10 + }, + "ROUTE_6_GATE": { + "height": 3, + "index": 73, + "width": 4 + }, + "ROUTE_7": { + "height": 9, + "index": 18, + "width": 10 + }, + "ROUTE_7_GATE": { + "height": 4, + "index": 76, + "width": 3 + }, + "ROUTE_8": { + "height": 9, + "index": 19, + "width": 30 + }, + "ROUTE_8_GATE": { + "height": 4, + "index": 79, + "width": 3 + }, + "ROUTE_9": { + "height": 9, + "index": 20, + "width": 30 + }, + "SAFARI_ZONE_CENTER": { + "height": 13, + "index": 220, + "width": 15 + }, + "SAFARI_ZONE_CENTER_REST_HOUSE": { + "height": 4, + "index": 221, + "width": 4 + }, + "SAFARI_ZONE_EAST": { + "height": 13, + "index": 217, + "width": 15 + }, + "SAFARI_ZONE_EAST_REST_HOUSE": { + "height": 4, + "index": 224, + "width": 4 + }, + "SAFARI_ZONE_GATE": { + "height": 3, + "index": 156, + "width": 4 + }, + "SAFARI_ZONE_NORTH": { + "height": 18, + "index": 218, + "width": 20 + }, + "SAFARI_ZONE_NORTH_REST_HOUSE": { + "height": 4, + "index": 225, + "width": 4 + }, + "SAFARI_ZONE_SECRET_HOUSE": { + "height": 4, + "index": 222, + "width": 4 + }, + "SAFARI_ZONE_WEST": { + "height": 13, + "index": 219, + "width": 15 + }, + "SAFARI_ZONE_WEST_REST_HOUSE": { + "height": 4, + "index": 223, + "width": 4 + }, + "SAFFRON_CITY": { + "height": 18, + "index": 10, + "width": 20 + }, + "SAFFRON_GYM": { + "height": 9, + "index": 178, + "width": 10 + }, + "SAFFRON_MART": { + "height": 4, + "index": 180, + "width": 4 + }, + "SAFFRON_PIDGEY_HOUSE": { + "height": 4, + "index": 179, + "width": 4 + }, + "SAFFRON_POKECENTER": { + "height": 4, + "index": 182, + "width": 7 + }, + "SEAFOAM_ISLANDS_1F": { + "height": 9, + "index": 192, + "width": 15 + }, + "SEAFOAM_ISLANDS_B1F": { + "height": 9, + "index": 159, + "width": 15 + }, + "SEAFOAM_ISLANDS_B2F": { + "height": 9, + "index": 160, + "width": 15 + }, + "SEAFOAM_ISLANDS_B3F": { + "height": 9, + "index": 161, + "width": 15 + }, + "SEAFOAM_ISLANDS_B4F": { + "height": 9, + "index": 162, + "width": 15 + }, + "SILPH_CO_10F": { + "height": 9, + "index": 234, + "width": 8 + }, + "SILPH_CO_11F": { + "height": 9, + "index": 235, + "width": 9 + }, + "SILPH_CO_1F": { + "height": 9, + "index": 181, + "width": 15 + }, + "SILPH_CO_2F": { + "height": 9, + "index": 207, + "width": 15 + }, + "SILPH_CO_3F": { + "height": 9, + "index": 208, + "width": 15 + }, + "SILPH_CO_4F": { + "height": 9, + "index": 209, + "width": 15 + }, + "SILPH_CO_5F": { + "height": 9, + "index": 210, + "width": 15 + }, + "SILPH_CO_6F": { + "height": 9, + "index": 211, + "width": 13 + }, + "SILPH_CO_7F": { + "height": 9, + "index": 212, + "width": 13 + }, + "SILPH_CO_8F": { + "height": 9, + "index": 213, + "width": 13 + }, + "SILPH_CO_9F": { + "height": 9, + "index": 233, + "width": 13 + }, + "SILPH_CO_ELEVATOR": { + "height": 2, + "index": 236, + "width": 2 + }, + "SS_ANNE_1F": { + "height": 9, + "index": 95, + "width": 20 + }, + "SS_ANNE_1F_ROOMS": { + "height": 8, + "index": 102, + "width": 12 + }, + "SS_ANNE_2F": { + "height": 9, + "index": 96, + "width": 20 + }, + "SS_ANNE_2F_ROOMS": { + "height": 8, + "index": 103, + "width": 12 + }, + "SS_ANNE_3F": { + "height": 3, + "index": 97, + "width": 10 + }, + "SS_ANNE_B1F": { + "height": 4, + "index": 98, + "width": 15 + }, + "SS_ANNE_B1F_ROOMS": { + "height": 8, + "index": 104, + "width": 12 + }, + "SS_ANNE_BOW": { + "height": 7, + "index": 99, + "width": 10 + }, + "SS_ANNE_CAPTAINS_ROOM": { + "height": 4, + "index": 101, + "width": 3 + }, + "SS_ANNE_KITCHEN": { + "height": 8, + "index": 100, + "width": 7 + }, + "SUMMER_BEACH_HOUSE": { + "height": 4, + "index": 248, + "width": 7 + }, + "TRADE_CENTER": { + "height": 4, + "index": 239, + "width": 5 + }, + "UNDERGROUND_PATH_NORTH_SOUTH": { + "height": 24, + "index": 119, + "width": 4 + }, + "UNDERGROUND_PATH_ROUTE_5": { + "height": 4, + "index": 71, + "width": 4 + }, + "UNDERGROUND_PATH_ROUTE_6": { + "height": 4, + "index": 74, + "width": 4 + }, + "UNDERGROUND_PATH_ROUTE_6_COPY": { + "height": 4, + "index": 75, + "width": 4 + }, + "UNDERGROUND_PATH_ROUTE_7": { + "height": 4, + "index": 77, + "width": 4 + }, + "UNDERGROUND_PATH_ROUTE_7_COPY": { + "height": 4, + "index": 78, + "width": 4 + }, + "UNDERGROUND_PATH_ROUTE_8": { + "height": 4, + "index": 80, + "width": 4 + }, + "UNDERGROUND_PATH_WEST_EAST": { + "height": 4, + "index": 121, + "width": 25 + }, + "UNUSED_MAP_0B": { + "height": 0, + "index": 11, + "width": 0 + }, + "UNUSED_MAP_69": { + "height": 0, + "index": 105, + "width": 0 + }, + "UNUSED_MAP_6A": { + "height": 0, + "index": 106, + "width": 0 + }, + "UNUSED_MAP_6B": { + "height": 0, + "index": 107, + "width": 0 + }, + "UNUSED_MAP_6D": { + "height": 0, + "index": 109, + "width": 0 + }, + "UNUSED_MAP_6E": { + "height": 0, + "index": 110, + "width": 0 + }, + "UNUSED_MAP_6F": { + "height": 0, + "index": 111, + "width": 0 + }, + "UNUSED_MAP_70": { + "height": 0, + "index": 112, + "width": 0 + }, + "UNUSED_MAP_72": { + "height": 0, + "index": 114, + "width": 0 + }, + "UNUSED_MAP_73": { + "height": 0, + "index": 115, + "width": 0 + }, + "UNUSED_MAP_74": { + "height": 0, + "index": 116, + "width": 0 + }, + "UNUSED_MAP_75": { + "height": 0, + "index": 117, + "width": 0 + }, + "UNUSED_MAP_CC": { + "height": 0, + "index": 204, + "width": 0 + }, + "UNUSED_MAP_CD": { + "height": 0, + "index": 205, + "width": 0 + }, + "UNUSED_MAP_CE": { + "height": 0, + "index": 206, + "width": 0 + }, + "UNUSED_MAP_E7": { + "height": 0, + "index": 231, + "width": 0 + }, + "UNUSED_MAP_ED": { + "height": 0, + "index": 237, + "width": 0 + }, + "UNUSED_MAP_EE": { + "height": 0, + "index": 238, + "width": 0 + }, + "UNUSED_MAP_F1": { + "height": 0, + "index": 241, + "width": 0 + }, + "UNUSED_MAP_F2": { + "height": 0, + "index": 242, + "width": 0 + }, + "UNUSED_MAP_F3": { + "height": 0, + "index": 243, + "width": 0 + }, + "UNUSED_MAP_F4": { + "height": 0, + "index": 244, + "width": 0 + }, + "VERMILION_CITY": { + "height": 18, + "index": 5, + "width": 20 + }, + "VERMILION_DOCK": { + "height": 6, + "index": 94, + "width": 14 + }, + "VERMILION_GYM": { + "height": 9, + "index": 92, + "width": 5 + }, + "VERMILION_MART": { + "height": 4, + "index": 91, + "width": 4 + }, + "VERMILION_OLD_ROD_HOUSE": { + "height": 4, + "index": 163, + "width": 4 + }, + "VERMILION_PIDGEY_HOUSE": { + "height": 4, + "index": 93, + "width": 4 + }, + "VERMILION_POKECENTER": { + "height": 4, + "index": 89, + "width": 7 + }, + "VERMILION_TRADE_HOUSE": { + "height": 4, + "index": 196, + "width": 4 + }, + "VICTORY_ROAD_1F": { + "height": 9, + "index": 108, + "width": 10 + }, + "VICTORY_ROAD_2F": { + "height": 9, + "index": 194, + "width": 15 + }, + "VICTORY_ROAD_3F": { + "height": 9, + "index": 198, + "width": 15 + }, + "VIRIDIAN_CITY": { + "height": 18, + "index": 1, + "width": 20 + }, + "VIRIDIAN_FOREST": { + "height": 24, + "index": 51, + "width": 17 + }, + "VIRIDIAN_FOREST_NORTH_GATE": { + "height": 4, + "index": 47, + "width": 5 + }, + "VIRIDIAN_FOREST_SOUTH_GATE": { + "height": 4, + "index": 50, + "width": 5 + }, + "VIRIDIAN_GYM": { + "height": 9, + "index": 45, + "width": 10 + }, + "VIRIDIAN_MART": { + "height": 4, + "index": 42, + "width": 4 + }, + "VIRIDIAN_NICKNAME_HOUSE": { + "height": 4, + "index": 44, + "width": 4 + }, + "VIRIDIAN_POKECENTER": { + "height": 4, + "index": 41, + "width": 7 + }, + "VIRIDIAN_SCHOOL_HOUSE": { + "height": 4, + "index": 43, + "width": 4 + }, + "WARDENS_HOUSE": { + "height": 4, + "index": 155, + "width": 5 + } + }, + "moveOrder": [ + "POUND", + "KARATE_CHOP", + "DOUBLESLAP", + "COMET_PUNCH", + "MEGA_PUNCH", + "PAY_DAY", + "FIRE_PUNCH", + "ICE_PUNCH", + "THUNDERPUNCH", + "SCRATCH", + "VICEGRIP", + "GUILLOTINE", + "RAZOR_WIND", + "SWORDS_DANCE", + "CUT", + "GUST", + "WING_ATTACK", + "WHIRLWIND", + "FLY", + "BIND", + "SLAM", + "VINE_WHIP", + "STOMP", + "DOUBLE_KICK", + "MEGA_KICK", + "JUMP_KICK", + "ROLLING_KICK", + "SAND_ATTACK", + "HEADBUTT", + "HORN_ATTACK", + "FURY_ATTACK", + "HORN_DRILL", + "TACKLE", + "BODY_SLAM", + "WRAP", + "TAKE_DOWN", + "THRASH", + "DOUBLE_EDGE", + "TAIL_WHIP", + "POISON_STING", + "TWINEEDLE", + "PIN_MISSILE", + "LEER", + "BITE", + "GROWL", + "ROAR", + "SING", + "SUPERSONIC", + "SONICBOOM", + "DISABLE", + "ACID", + "EMBER", + "FLAMETHROWER", + "MIST", + "WATER_GUN", + "HYDRO_PUMP", + "SURF", + "ICE_BEAM", + "BLIZZARD", + "PSYBEAM", + "BUBBLEBEAM", + "AURORA_BEAM", + "HYPER_BEAM", + "PECK", + "DRILL_PECK", + "SUBMISSION", + "LOW_KICK", + "COUNTER", + "SEISMIC_TOSS", + "STRENGTH", + "ABSORB", + "MEGA_DRAIN", + "LEECH_SEED", + "GROWTH", + "RAZOR_LEAF", + "SOLARBEAM", + "POISONPOWDER", + "STUN_SPORE", + "SLEEP_POWDER", + "PETAL_DANCE", + "STRING_SHOT", + "DRAGON_RAGE", + "FIRE_SPIN", + "THUNDERSHOCK", + "THUNDERBOLT", + "THUNDER_WAVE", + "THUNDER", + "ROCK_THROW", + "EARTHQUAKE", + "FISSURE", + "DIG", + "TOXIC", + "CONFUSION", + "PSYCHIC_M", + "HYPNOSIS", + "MEDITATE", + "AGILITY", + "QUICK_ATTACK", + "RAGE", + "TELEPORT", + "NIGHT_SHADE", + "MIMIC", + "SCREECH", + "DOUBLE_TEAM", + "RECOVER", + "HARDEN", + "MINIMIZE", + "SMOKESCREEN", + "CONFUSE_RAY", + "WITHDRAW", + "DEFENSE_CURL", + "BARRIER", + "LIGHT_SCREEN", + "HAZE", + "REFLECT", + "FOCUS_ENERGY", + "BIDE", + "METRONOME", + "MIRROR_MOVE", + "SELFDESTRUCT", + "EGG_BOMB", + "LICK", + "SMOG", + "SLUDGE", + "BONE_CLUB", + "FIRE_BLAST", + "WATERFALL", + "CLAMP", + "SWIFT", + "SKULL_BASH", + "SPIKE_CANNON", + "CONSTRICT", + "AMNESIA", + "KINESIS", + "SOFTBOILED", + "HI_JUMP_KICK", + "GLARE", + "DREAM_EATER", + "POISON_GAS", + "BARRAGE", + "LEECH_LIFE", + "LOVELY_KISS", + "SKY_ATTACK", + "TRANSFORM", + "BUBBLE", + "DIZZY_PUNCH", + "SPORE", + "FLASH", + "PSYWAVE", + "SPLASH", + "ACID_ARMOR", + "CRABHAMMER", + "EXPLOSION", + "FURY_SWIPES", + "BONEMERANG", + "REST", + "ROCK_SLIDE", + "HYPER_FANG", + "SHARPEN", + "CONVERSION", + "TRI_ATTACK", + "SUPER_FANG", + "SLASH", + "SUBSTITUTE", + "STRUGGLE" + ], + "source": "ROM metadata manifest", + "speciesOrder": [ + "RHYDON", + "KANGASKHAN", + "NIDORAN_M", + "CLEFAIRY", + "SPEAROW", + "VOLTORB", + "NIDOKING", + "SLOWBRO", + "IVYSAUR", + "EXEGGUTOR", + "LICKITUNG", + "EXEGGCUTE", + "GRIMER", + "GENGAR", + "NIDORAN_F", + "NIDOQUEEN", + "CUBONE", + "RHYHORN", + "LAPRAS", + "ARCANINE", + "MEW", + "GYARADOS", + "SHELLDER", + "TENTACOOL", + "GASTLY", + "SCYTHER", + "STARYU", + "BLASTOISE", + "PINSIR", + "TANGELA", + "UNUSED", + "UNUSED", + "GROWLITHE", + "ONIX", + "FEAROW", + "PIDGEY", + "SLOWPOKE", + "KADABRA", + "GRAVELER", + "CHANSEY", + "MACHOKE", + "MR_MIME", + "HITMONLEE", + "HITMONCHAN", + "ARBOK", + "PARASECT", + "PSYDUCK", + "DROWZEE", + "GOLEM", + "UNUSED", + "MAGMAR", + "UNUSED", + "ELECTABUZZ", + "MAGNETON", + "KOFFING", + "UNUSED", + "MANKEY", + "SEEL", + "DIGLETT", + "TAUROS", + "UNUSED", + "UNUSED", + "UNUSED", + "FARFETCHD", + "VENONAT", + "DRAGONITE", + "UNUSED", + "UNUSED", + "UNUSED", + "DODUO", + "POLIWAG", + "JYNX", + "MOLTRES", + "ARTICUNO", + "ZAPDOS", + "DITTO", + "MEOWTH", + "KRABBY", + "UNUSED", + "UNUSED", + "UNUSED", + "VULPIX", + "NINETALES", + "PIKACHU", + "RAICHU", + "UNUSED", + "UNUSED", + "DRATINI", + "DRAGONAIR", + "KABUTO", + "KABUTOPS", + "HORSEA", + "SEADRA", + "UNUSED", + "UNUSED", + "SANDSHREW", + "SANDSLASH", + "OMANYTE", + "OMASTAR", + "JIGGLYPUFF", + "WIGGLYTUFF", + "EEVEE", + "FLAREON", + "JOLTEON", + "VAPOREON", + "MACHOP", + "ZUBAT", + "EKANS", + "PARAS", + "POLIWHIRL", + "POLIWRATH", + "WEEDLE", + "KAKUNA", + "BEEDRILL", + "UNUSED", + "DODRIO", + "PRIMEAPE", + "DUGTRIO", + "VENOMOTH", + "DEWGONG", + "UNUSED", + "UNUSED", + "CATERPIE", + "METAPOD", + "BUTTERFREE", + "MACHAMP", + "UNUSED", + "GOLDUCK", + "HYPNO", + "GOLBAT", + "MEWTWO", + "SNORLAX", + "MAGIKARP", + "UNUSED", + "UNUSED", + "MUK", + "UNUSED", + "KINGLER", + "CLOYSTER", + "UNUSED", + "ELECTRODE", + "CLEFABLE", + "WEEZING", + "PERSIAN", + "MAROWAK", + "UNUSED", + "HAUNTER", + "ABRA", + "ALAKAZAM", + "PIDGEOTTO", + "PIDGEOT", + "STARMIE", + "BULBASAUR", + "VENUSAUR", + "TENTACRUEL", + "UNUSED", + "GOLDEEN", + "SEAKING", + "UNUSED", + "UNUSED", + "UNUSED", + "UNUSED", + "PONYTA", + "RAPIDASH", + "RATTATA", + "RATICATE", + "NIDORINO", + "NIDORINA", + "GEODUDE", + "PORYGON", + "AERODACTYL", + "UNUSED", + "MAGNEMITE", + "UNUSED", + "UNUSED", + "CHARMANDER", + "SQUIRTLE", + "CHARMELEON", + "WARTORTLE", + "CHARIZARD", + "UNUSED", + "FOSSIL_KABUTOPS", + "FOSSIL_AERODACTYL", + "MON_GHOST", + "ODDISH", + "GLOOM", + "VILEPLUME", + "BELLSPROUT", + "WEEPINBELL", + "VICTREEBEL" + ], + "spriteOrder": [ + "SPRITE_RED", + "SPRITE_BLUE", + "SPRITE_OAK", + "SPRITE_YOUNGSTER", + "SPRITE_MONSTER", + "SPRITE_COOLTRAINER_F", + "SPRITE_COOLTRAINER_M", + "SPRITE_LITTLE_GIRL", + "SPRITE_BIRD", + "SPRITE_MIDDLE_AGED_MAN", + "SPRITE_GAMBLER", + "SPRITE_SUPER_NERD", + "SPRITE_GIRL", + "SPRITE_HIKER", + "SPRITE_BEAUTY", + "SPRITE_GENTLEMAN", + "SPRITE_DAISY", + "SPRITE_BIKER", + "SPRITE_SAILOR", + "SPRITE_COOK", + "SPRITE_BIKE_SHOP_CLERK", + "SPRITE_MR_FUJI", + "SPRITE_GIOVANNI", + "SPRITE_ROCKET", + "SPRITE_CHANNELER", + "SPRITE_WAITER", + "SPRITE_SILPH_WORKER_F", + "SPRITE_MIDDLE_AGED_WOMAN", + "SPRITE_BRUNETTE_GIRL", + "SPRITE_LANCE", + "SPRITE_UNUSED_RED_1", + "SPRITE_SCIENTIST", + "SPRITE_ROCKER", + "SPRITE_SWIMMER", + "SPRITE_SAFARI_ZONE_WORKER", + "SPRITE_GYM_GUIDE", + "SPRITE_GRAMPS", + "SPRITE_CLERK", + "SPRITE_FISHING_GURU", + "SPRITE_GRANNY", + "SPRITE_NURSE", + "SPRITE_LINK_RECEPTIONIST", + "SPRITE_SILPH_PRESIDENT", + "SPRITE_SILPH_WORKER_M", + "SPRITE_WARDEN", + "SPRITE_CAPTAIN", + "SPRITE_FISHER", + "SPRITE_KOGA", + "SPRITE_GUARD", + "SPRITE_UNUSED_RED_2", + "SPRITE_MOM", + "SPRITE_BALDING_GUY", + "SPRITE_LITTLE_BOY", + "SPRITE_UNUSED_RED_3", + "SPRITE_GAMEBOY_KID", + "SPRITE_FAIRY", + "SPRITE_AGATHA", + "SPRITE_BRUNO", + "SPRITE_LORELEI", + "SPRITE_SEEL", + "SPRITE_PIKACHU", + "SPRITE_OFFICER_JENNY", + "SPRITE_SANDSHREW", + "SPRITE_ODDISH", + "SPRITE_BULBASAUR", + "SPRITE_JIGGLYPUFF", + "SPRITE_CLEFAIRY", + "SPRITE_CHANSEY", + "SPRITE_JESSIE", + "SPRITE_JAMES", + "SPRITE_POKE_BALL", + "SPRITE_FOSSIL", + "SPRITE_BOULDER", + "SPRITE_PAPER", + "SPRITE_POKEDEX", + "SPRITE_CLIPBOARD", + "SPRITE_SNORLAX", + "SPRITE_UNUSED_OLD_AMBER", + "SPRITE_OLD_AMBER", + "SPRITE_UNUSED_GAMBLER_ASLEEP_1", + "SPRITE_UNUSED_GAMBLER_ASLEEP_2", + "SPRITE_GAMBLER_ASLEEP" + ], + "tilesetOrder": [ + "OVERWORLD", + "REDS_HOUSE_1", + "MART", + "FOREST", + "REDS_HOUSE_2", + "DOJO", + "POKECENTER", + "GYM", + "HOUSE", + "FOREST_GATE", + "MUSEUM", + "UNDERGROUND", + "GATE", + "SHIP", + "SHIP_PORT", + "CEMETERY", + "INTERIOR", + "CAVERN", + "LOBBY", + "MANSION", + "LAB", + "CLUB", + "FACILITY", + "PLATEAU", + "BEACH_HOUSE" + ], + "types": { + "BIRD": 6, + "BUG": 7, + "DRAGON": 26, + "ELECTRIC": 23, + "FIGHTING": 1, + "FIRE": 20, + "FLYING": 2, + "GHOST": 8, + "GRASS": 22, + "GROUND": 4, + "ICE": 25, + "NORMAL": 0, + "POISON": 3, + "PSYCHIC_TYPE": 24, + "ROCK": 5, + "WATER": 21 + } + }, + "dexEntryLabels": { + "ABRA": "_AbraDexEntry", + "AERODACTYL": "_AerodactylDexEntry", + "ALAKAZAM": "_AlakazamDexEntry", + "ARBOK": "_ArbokDexEntry", + "ARCANINE": "_ArcanineDexEntry", + "ARTICUNO": "_ArticunoDexEntry", + "BEEDRILL": "_BeedrillDexEntry", + "BELLSPROUT": "_BellsproutDexEntry", + "BLASTOISE": "_BlastoiseDexEntry", + "BULBASAUR": "_BulbasaurDexEntry", + "BUTTERFREE": "_ButterfreeDexEntry", + "CATERPIE": "_CaterpieDexEntry", + "CHANSEY": "_ChanseyDexEntry", + "CHARIZARD": "_CharizardDexEntry", + "CHARMANDER": "_CharmanderDexEntry", + "CHARMELEON": "_CharmeleonDexEntry", + "CLEFABLE": "_ClefableDexEntry", + "CLEFAIRY": "_ClefairyDexEntry", + "CLOYSTER": "_CloysterDexEntry", + "CUBONE": "_CuboneDexEntry", + "DEWGONG": "_DewgongDexEntry", + "DIGLETT": "_DiglettDexEntry", + "DITTO": "_DittoDexEntry", + "DODRIO": "_DodrioDexEntry", + "DODUO": "_DoduoDexEntry", + "DRAGONAIR": "_DragonairDexEntry", + "DRAGONITE": "_DragoniteDexEntry", + "DRATINI": "_DratiniDexEntry", + "DROWZEE": "_DrowzeeDexEntry", + "DUGTRIO": "_DugtrioDexEntry", + "EEVEE": "_EeveeDexEntry", + "EKANS": "_EkansDexEntry", + "ELECTABUZZ": "_ElectabuzzDexEntry", + "ELECTRODE": "_ElectrodeDexEntry", + "EXEGGCUTE": "_ExeggcuteDexEntry", + "EXEGGUTOR": "_ExeggutorDexEntry", + "FARFETCHD": "_FarfetchdDexEntry", + "FEAROW": "_FearowDexEntry", + "FLAREON": "_FlareonDexEntry", + "GASTLY": "_GastlyDexEntry", + "GENGAR": "_GengarDexEntry", + "GEODUDE": "_GeodudeDexEntry", + "GLOOM": "_GloomDexEntry", + "GOLBAT": "_GolbatDexEntry", + "GOLDEEN": "_GoldeenDexEntry", + "GOLDUCK": "_GolduckDexEntry", + "GOLEM": "_GolemDexEntry", + "GRAVELER": "_GravelerDexEntry", + "GRIMER": "_GrimerDexEntry", + "GROWLITHE": "_GrowlitheDexEntry", + "GYARADOS": "_GyaradosDexEntry", + "HAUNTER": "_HaunterDexEntry", + "HITMONCHAN": "_HitmonchanDexEntry", + "HITMONLEE": "_HitmonleeDexEntry", + "HORSEA": "_HorseaDexEntry", + "HYPNO": "_HypnoDexEntry", + "IVYSAUR": "_IvysaurDexEntry", + "JIGGLYPUFF": "_JigglypuffDexEntry", + "JOLTEON": "_JolteonDexEntry", + "JYNX": "_JynxDexEntry", + "KABUTO": "_KabutoDexEntry", + "KABUTOPS": "_KabutopsDexEntry", + "KADABRA": "_KadabraDexEntry", + "KAKUNA": "_KakunaDexEntry", + "KANGASKHAN": "_KangaskhanDexEntry", + "KINGLER": "_KinglerDexEntry", + "KOFFING": "_KoffingDexEntry", + "KRABBY": "_KrabbyDexEntry", + "LAPRAS": "_LaprasDexEntry", + "LICKITUNG": "_LickitungDexEntry", + "MACHAMP": "_MachampDexEntry", + "MACHOKE": "_MachokeDexEntry", + "MACHOP": "_MachopDexEntry", + "MAGIKARP": "_MagikarpDexEntry", + "MAGMAR": "_MagmarDexEntry", + "MAGNEMITE": "_MagnemiteDexEntry", + "MAGNETON": "_MagnetonDexEntry", + "MANKEY": "_MankeyDexEntry", + "MAROWAK": "_MarowakDexEntry", + "MEOWTH": "_MeowthDexEntry", + "METAPOD": "_MetapodDexEntry", + "MEW": "_MewDexEntry", + "MEWTWO": "_MewtwoDexEntry", + "MOLTRES": "_MoltresDexEntry", + "MR_MIME": "_MrMimeDexEntry", + "MUK": "_MukDexEntry", + "NIDOKING": "_NidokingDexEntry", + "NIDOQUEEN": "_NidoqueenDexEntry", + "NIDORAN_F": "_NidoranFDexEntry", + "NIDORAN_M": "_NidoranMDexEntry", + "NIDORINA": "_NidorinaDexEntry", + "NIDORINO": "_NidorinoDexEntry", + "NINETALES": "_NinetalesDexEntry", + "ODDISH": "_OddishDexEntry", + "OMANYTE": "_OmanyteDexEntry", + "OMASTAR": "_OmastarDexEntry", + "ONIX": "_OnixDexEntry", + "PARAS": "_ParasDexEntry", + "PARASECT": "_ParasectDexEntry", + "PERSIAN": "_PersianDexEntry", + "PIDGEOT": "_PidgeotDexEntry", + "PIDGEOTTO": "_PidgeottoDexEntry", + "PIDGEY": "_PidgeyDexEntry", + "PIKACHU": "_PikachuDexEntry", + "PINSIR": "_PinsirDexEntry", + "POLIWAG": "_PoliwagDexEntry", + "POLIWHIRL": "_PoliwhirlDexEntry", + "POLIWRATH": "_PoliwrathDexEntry", + "PONYTA": "_PonytaDexEntry", + "PORYGON": "_PorygonDexEntry", + "PRIMEAPE": "_PrimeapeDexEntry", + "PSYDUCK": "_PsyduckDexEntry", + "RAICHU": "_RaichuDexEntry", + "RAPIDASH": "_RapidashDexEntry", + "RATICATE": "_RaticateDexEntry", + "RATTATA": "_RattataDexEntry", + "RHYDON": "_RhydonDexEntry", + "RHYHORN": "_RhyhornDexEntry", + "SANDSHREW": "_SandshrewDexEntry", + "SANDSLASH": "_SandslashDexEntry", + "SCYTHER": "_ScytherDexEntry", + "SEADRA": "_SeadraDexEntry", + "SEAKING": "_SeakingDexEntry", + "SEEL": "_SeelDexEntry", + "SHELLDER": "_ShellderDexEntry", + "SLOWBRO": "_SlowbroDexEntry", + "SLOWPOKE": "_SlowpokeDexEntry", + "SNORLAX": "_SnorlaxDexEntry", + "SPEAROW": "_SpearowDexEntry", + "SQUIRTLE": "_SquirtleDexEntry", + "STARMIE": "_StarmieDexEntry", + "STARYU": "_StaryuDexEntry", + "TANGELA": "_TangelaDexEntry", + "TAUROS": "_TaurosDexEntry", + "TENTACOOL": "_TentacoolDexEntry", + "TENTACRUEL": "_TentacruelDexEntry", + "VAPOREON": "_VaporeonDexEntry", + "VENOMOTH": "_VenomothDexEntry", + "VENONAT": "_VenonatDexEntry", + "VENUSAUR": "_VenusaurDexEntry", + "VICTREEBEL": "_VictreebelDexEntry", + "VILEPLUME": "_VileplumeDexEntry", + "VOLTORB": "_VoltorbDexEntry", + "VULPIX": "_VulpixDexEntry", + "WARTORTLE": "_WartortleDexEntry", + "WEEDLE": "_WeedleDexEntry", + "WEEPINBELL": "_WeepinbellDexEntry", + "WEEZING": "_WeezingDexEntry", + "WIGGLYTUFF": "_WigglytuffDexEntry", + "ZAPDOS": "_ZapdosDexEntry", + "ZUBAT": "_ZubatDexEntry" + }, + "dexOrder": [ + "BULBASAUR", + "IVYSAUR", + "VENUSAUR", + "CHARMANDER", + "CHARMELEON", + "CHARIZARD", + "SQUIRTLE", + "WARTORTLE", + "BLASTOISE", + "CATERPIE", + "METAPOD", + "BUTTERFREE", + "WEEDLE", + "KAKUNA", + "BEEDRILL", + "PIDGEY", + "PIDGEOTTO", + "PIDGEOT", + "RATTATA", + "RATICATE", + "SPEAROW", + "FEAROW", + "EKANS", + "ARBOK", + "PIKACHU", + "RAICHU", + "SANDSHREW", + "SANDSLASH", + "NIDORAN_F", + "NIDORINA", + "NIDOQUEEN", + "NIDORAN_M", + "NIDORINO", + "NIDOKING", + "CLEFAIRY", + "CLEFABLE", + "VULPIX", + "NINETALES", + "JIGGLYPUFF", + "WIGGLYTUFF", + "ZUBAT", + "GOLBAT", + "ODDISH", + "GLOOM", + "VILEPLUME", + "PARAS", + "PARASECT", + "VENONAT", + "VENOMOTH", + "DIGLETT", + "DUGTRIO", + "MEOWTH", + "PERSIAN", + "PSYDUCK", + "GOLDUCK", + "MANKEY", + "PRIMEAPE", + "GROWLITHE", + "ARCANINE", + "POLIWAG", + "POLIWHIRL", + "POLIWRATH", + "ABRA", + "KADABRA", + "ALAKAZAM", + "MACHOP", + "MACHOKE", + "MACHAMP", + "BELLSPROUT", + "WEEPINBELL", + "VICTREEBEL", + "TENTACOOL", + "TENTACRUEL", + "GEODUDE", + "GRAVELER", + "GOLEM", + "PONYTA", + "RAPIDASH", + "SLOWPOKE", + "SLOWBRO", + "MAGNEMITE", + "MAGNETON", + "FARFETCHD", + "DODUO", + "DODRIO", + "SEEL", + "DEWGONG", + "GRIMER", + "MUK", + "SHELLDER", + "CLOYSTER", + "GASTLY", + "HAUNTER", + "GENGAR", + "ONIX", + "DROWZEE", + "HYPNO", + "KRABBY", + "KINGLER", + "VOLTORB", + "ELECTRODE", + "EXEGGCUTE", + "EXEGGUTOR", + "CUBONE", + "MAROWAK", + "HITMONLEE", + "HITMONCHAN", + "LICKITUNG", + "KOFFING", + "WEEZING", + "RHYHORN", + "RHYDON", + "CHANSEY", + "TANGELA", + "KANGASKHAN", + "HORSEA", + "SEADRA", + "GOLDEEN", + "SEAKING", + "STARYU", + "STARMIE", + "MR_MIME", + "SCYTHER", + "JYNX", + "ELECTABUZZ", + "MAGMAR", + "PINSIR", + "TAUROS", + "MAGIKARP", + "GYARADOS", + "LAPRAS", + "DITTO", + "EEVEE", + "VAPOREON", + "JOLTEON", + "FLAREON", + "PORYGON", + "OMANYTE", + "OMASTAR", + "KABUTO", + "KABUTOPS", + "AERODACTYL", + "SNORLAX", + "ARTICUNO", + "ZAPDOS", + "MOLTRES", + "DRATINI", + "DRAGONAIR", + "DRAGONITE", + "MEWTWO", + "MEW" + ], + "field": { + "badgeGates": { + "ROUTE_22_GATE": { + "badge": "BOULDERBADGE", + "coords": [ + { + "x": 4, + "y": 2 + }, + { + "x": 5, + "y": 2 + } + ], + "failText": "Route22GateGuardNoBoulderbadgeText", + "passText": "Route22GateGuardGoRightAheadText", + "text": "Route22GateGuardText" + }, + "ROUTE_23": { + "failText": "Route23YouDontHaveTheBadgeYetText", + "guards": [ + { + "badge": "EARTHBADGE", + "event": "EVENT_PASSED_EARTHBADGE_CHECK", + "maxX": 13, + "sprite": 1, + "text": "Route23Guard1Text", + "y": 35 + }, + { + "badge": "VOLCANOBADGE", + "event": "EVENT_PASSED_VOLCANOBADGE_CHECK", + "sprite": 2, + "text": "Route23Guard2Text", + "y": 56 + }, + { + "badge": "MARSHBADGE", + "event": "EVENT_PASSED_MARSHBADGE_CHECK", + "sprite": 3, + "text": "Route23Swimmer1Text", + "y": 85 + }, + { + "badge": "SOULBADGE", + "event": "EVENT_PASSED_SOULBADGE_CHECK", + "sprite": 4, + "text": "Route23Swimmer2Text", + "y": 96 + }, + { + "badge": "RAINBOWBADGE", + "event": "EVENT_PASSED_RAINBOWBADGE_CHECK", + "sprite": 5, + "text": "Route23Guard3Text", + "y": 105 + }, + { + "badge": "THUNDERBADGE", + "event": "EVENT_PASSED_THUNDERBADGE_CHECK", + "sprite": 6, + "text": "Route23Guard4Text", + "y": 119 + }, + { + "badge": "CASCADEBADGE", + "event": "EVENT_PASSED_CASCADEBADGE_CHECK", + "sprite": 7, + "text": "Route23Guard5Text", + "y": 136 + } + ], + "passText": "Route23OhThatIsTheBadgeText" + } + }, + "battleHud": { + "fontBattleExtra": { + "height": 16, + "path": "assets/generated/battle/font_battle_extra.png", + "tileBase": 98, + "width": 120 + }, + "hud1": { + "height": 8, + "path": "assets/generated/battle/battle_hud_1.png", + "tileBase": 109, + "width": 24 + }, + "hud2": { + "height": 8, + "path": "assets/generated/battle/battle_hud_2.png", + "tileBase": 115, + "width": 24 + }, + "hud3": { + "height": 8, + "path": "assets/generated/battle/battle_hud_3.png", + "tileBase": 118, + "width": 24 + } + }, + "bikeRiding": { + "maps": [ + "ROUTE_23", + "INDIGO_PLATEAU" + ], + "tilesets": [ + "OVERWORLD", + "FOREST", + "UNDERGROUND", + "SHIP_PORT", + "CAVERN" + ] + }, + "cardKeyDoors": { + "closedDoors": { + "ROCKET_HIDEOUT_B1F": [ + { + "block": 84, + "bx": 12, + "by": 8, + "event": "EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_4", + "open": 14 + } + ], + "ROCKET_HIDEOUT_B4F": [ + { + "block": 45, + "bx": 12, + "by": 5, + "events": [ + "EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0", + "EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1" + ], + "open": 14 + } + ], + "SILPH_CO_10F": [ + { + "block": 84, + "bx": 5, + "by": 4, + "event": "EVENT_SILPH_CO_10_UNLOCKED_DOOR", + "open": 14 + } + ], + "SILPH_CO_11F": [ + { + "block": 32, + "bx": 3, + "by": 6, + "event": "EVENT_SILPH_CO_11_UNLOCKED_DOOR", + "open": 3 + } + ], + "SILPH_CO_2F": [ + { + "block": 84, + "bx": 2, + "by": 2, + "event": "EVENT_SILPH_CO_2_UNLOCKED_DOOR1", + "open": 14 + }, + { + "block": 84, + "bx": 2, + "by": 5, + "event": "EVENT_SILPH_CO_2_UNLOCKED_DOOR2", + "open": 14 + } + ], + "SILPH_CO_3F": [ + { + "block": 95, + "bx": 4, + "by": 4, + "event": "EVENT_SILPH_CO_3_UNLOCKED_DOOR1", + "open": 14 + }, + { + "block": 95, + "bx": 8, + "by": 4, + "event": "EVENT_SILPH_CO_3_UNLOCKED_DOOR2", + "open": 14 + } + ], + "SILPH_CO_4F": [ + { + "block": 84, + "bx": 2, + "by": 6, + "event": "EVENT_SILPH_CO_4_UNLOCKED_DOOR1", + "open": 14 + }, + { + "block": 84, + "bx": 6, + "by": 4, + "event": "EVENT_SILPH_CO_4_UNLOCKED_DOOR2", + "open": 14 + } + ], + "SILPH_CO_5F": [ + { + "block": 95, + "bx": 3, + "by": 2, + "event": "EVENT_SILPH_CO_5_UNLOCKED_DOOR1", + "open": 14 + }, + { + "block": 95, + "bx": 3, + "by": 6, + "event": "EVENT_SILPH_CO_5_UNLOCKED_DOOR2", + "open": 14 + }, + { + "block": 95, + "bx": 7, + "by": 5, + "event": "EVENT_SILPH_CO_5_UNLOCKED_DOOR3", + "open": 14 + } + ], + "SILPH_CO_6F": [ + { + "block": 95, + "bx": 2, + "by": 6, + "event": "EVENT_SILPH_CO_6_UNLOCKED_DOOR", + "open": 14 + } + ], + "SILPH_CO_7F": [ + { + "block": 84, + "bx": 5, + "by": 3, + "event": "EVENT_SILPH_CO_7_UNLOCKED_DOOR1", + "open": 14 + }, + { + "block": 84, + "bx": 10, + "by": 2, + "event": "EVENT_SILPH_CO_7_UNLOCKED_DOOR2", + "open": 14 + }, + { + "block": 84, + "bx": 10, + "by": 6, + "event": "EVENT_SILPH_CO_7_UNLOCKED_DOOR3", + "open": 14 + } + ], + "SILPH_CO_8F": [ + { + "block": 95, + "bx": 3, + "by": 4, + "event": "EVENT_SILPH_CO_8_UNLOCKED_DOOR", + "open": 14 + } + ], + "SILPH_CO_9F": [ + { + "block": 95, + "bx": 1, + "by": 4, + "event": "EVENT_SILPH_CO_9_UNLOCKED_DOOR1", + "open": 14 + }, + { + "block": 84, + "bx": 9, + "by": 2, + "event": "EVENT_SILPH_CO_9_UNLOCKED_DOOR2", + "open": 14 + }, + { + "block": 84, + "bx": 9, + "by": 5, + "event": "EVENT_SILPH_CO_9_UNLOCKED_DOOR3", + "open": 14 + }, + { + "block": 95, + "bx": 5, + "by": 6, + "event": "EVENT_SILPH_CO_9_UNLOCKED_DOOR4", + "open": 14 + } + ] + }, + "doorTiles": [ + 24, + 36 + ], + "doors": { + "SILPH_CO_10F": [ + { + "gate": 8, + "x": 10, + "y": 8 + }, + { + "gate": 9, + "x": 11, + "y": 8 + } + ], + "SILPH_CO_11F": [ + { + "gate": 20, + "x": 9, + "y": 8 + }, + { + "gate": 21, + "x": 9, + "y": 9 + } + ], + "SILPH_CO_2F": [ + { + "gate": 0, + "x": 4, + "y": 4 + }, + { + "gate": 1, + "x": 5, + "y": 4 + } + ], + "SILPH_CO_3F": [ + { + "gate": 10, + "x": 9, + "y": 8 + }, + { + "gate": 11, + "x": 9, + "y": 9 + } + ], + "SILPH_CO_4F": [ + { + "gate": 2, + "x": 4, + "y": 12 + }, + { + "gate": 3, + "x": 5, + "y": 12 + } + ], + "SILPH_CO_5F": [ + { + "gate": 12, + "x": 7, + "y": 4 + }, + { + "gate": 13, + "x": 7, + "y": 5 + } + ], + "SILPH_CO_6F": [ + { + "gate": 14, + "x": 5, + "y": 12 + }, + { + "gate": 15, + "x": 5, + "y": 13 + } + ], + "SILPH_CO_7F": [ + { + "gate": 4, + "x": 10, + "y": 6 + }, + { + "gate": 5, + "x": 11, + "y": 6 + } + ], + "SILPH_CO_8F": [ + { + "gate": 16, + "x": 7, + "y": 8 + }, + { + "gate": 17, + "x": 7, + "y": 9 + } + ], + "SILPH_CO_9F": [ + { + "gate": 6, + "x": 18, + "y": 4 + }, + { + "gate": 7, + "x": 19, + "y": 4 + }, + { + "gate": 18, + "x": 3, + "y": 8 + }, + { + "gate": 19, + "x": 3, + "y": 9 + } + ] + }, + "maps": [ + "SILPH_CO_2F", + "SILPH_CO_3F", + "SILPH_CO_4F", + "SILPH_CO_5F", + "SILPH_CO_6F", + "SILPH_CO_7F", + "SILPH_CO_8F", + "SILPH_CO_9F", + "SILPH_CO_10F", + "SILPH_CO_11F" + ], + "openBlock": 14, + "silphCo11F": { + "doorTile": 94, + "openBlock": 3 + } + }, + "coinPurchases": [ + { + "coins": 50, + "price": 1000 + } + ], + "credits": { + "mons": [ + "VENUSAUR", + "ARBOK", + "RHYHORN", + "FEAROW", + "ABRA", + "GRAVELER", + "HITMONLEE", + "TANGELA", + "STARMIE", + "GYARADOS", + "DITTO", + "OMASTAR", + "VILEPLUME", + "NIDOKING", + "PARASECT", + "GENGAR" + ], + "screens": [ + { + "fade": true, + "lines": [ + { + "column": 6, + "text": "POKéMON" + }, + { + "column": 3, + "text": "YELLOW VERSION" + } + ], + "mon": "VENUSAUR" + }, + { + "fade": true, + "lines": [ + { + "column": 6, + "text": "DIRECTOR" + }, + { + "column": 3, + "text": "SATOSHI TAJIRI" + } + ], + "mon": "ARBOK" + }, + { + "fade": true, + "lines": [ + { + "column": 4, + "text": "PROGRAMMERS" + }, + { + "column": 3, + "text": "TAKENORI OOTA" + }, + { + "column": 2, + "text": "SHIGEKI MORIMOTO" + }, + { + "column": 2, + "text": "TETSUYA WATANABE" + } + ] + }, + { + "fade": false, + "lines": [ + { + "column": 4, + "text": "PROGRAMMERS" + }, + { + "column": 3, + "text": "JUNICHI MASUDA" + }, + { + "column": 3, + "text": "SOUSUKE TAMADA" + } + ], + "mon": "RHYHORN" + }, + { + "fade": true, + "lines": [ + { + "column": 2, + "text": "CHARACTER DESIGN" + }, + { + "column": 4, + "text": "KEN SUGIMORI" + }, + { + "column": 3, + "text": "ATSUKO NISHIDA" + } + ], + "mon": "FEAROW" + }, + { + "fade": true, + "lines": [ + { + "column": 7, + "text": "MUSIC" + }, + { + "column": 3, + "text": "JUNICHI MASUDA" + } + ] + }, + { + "fade": false, + "lines": [ + { + "column": 3, + "text": "SOUND EFFECTS" + }, + { + "column": 3, + "text": "JUNICHI MASUDA" + }, + { + "column": 2, + "text": "TETSUYA WATANABE" + } + ], + "mon": "ABRA" + }, + { + "fade": true, + "lines": [ + { + "column": 4, + "text": "GAME DESIGN" + }, + { + "column": 3, + "text": "SATOSHI TAJIRI" + }, + { + "column": 4, + "text": "KOHJI NISHINO" + } + ], + "mon": "GRAVELER" + }, + { + "fade": true, + "lines": [ + { + "column": 3, + "text": "MONSTER DESIGN" + }, + { + "column": 4, + "text": "KEN SUGIMORI" + }, + { + "column": 3, + "text": "ATSUKO NISHIDA" + }, + { + "column": 2, + "text": "HIRONOBU YOSHIDA" + } + ], + "mon": "HITMONLEE" + }, + { + "fade": true, + "lines": [ + { + "column": 3, + "text": "GAME SCENARIO" + }, + { + "column": 3, + "text": "SATOSHI TAJIRI" + } + ] + }, + { + "fade": false, + "lines": [ + { + "column": 3, + "text": "GAME SCENARIO" + }, + { + "column": 1, + "text": "TOSHINOBU MATSUMIYA" + } + ], + "mon": "TANGELA" + }, + { + "fade": true, + "lines": [ + { + "column": 2, + "text": "PARAMETRIC DESIGN" + }, + { + "column": 4, + "text": "KOHJI NISHINO" + } + ], + "mon": "STARMIE" + }, + { + "fade": true, + "lines": [ + { + "column": 5, + "text": "MAP DESIGN" + }, + { + "column": 3, + "text": "SATOSHI TAJIRI" + }, + { + "column": 4, + "text": "KOHJI NISHINO" + }, + { + "column": 4, + "text": "NOBUHIRO SEYA" + } + ], + "mon": "GYARADOS" + }, + { + "fade": true, + "lines": [ + { + "column": 3, + "text": "PRODUCT TESTING" + }, + { + "column": 3, + "text": "KAZUHITO SEKINE" + }, + { + "column": 4, + "text": "NOBUHIRO SEYA" + } + ] + }, + { + "fade": false, + "lines": [ + { + "column": 3, + "text": "PRODUCT TESTING" + }, + { + "column": 2, + "text": "KAZUSHI SHIMAMURA" + }, + { + "column": 0, + "text": "TERUYUKI SHIMOYAMADA" + } + ], + "mon": "DITTO" + }, + { + "fade": true, + "lines": [ + { + "column": 3, + "text": "SPECIAL THANKS" + }, + { + "column": 5, + "text": "SHOGAKUKAN" + } + ], + "mon": "OMASTAR" + }, + { + "fade": true, + "lines": [ + { + "column": 6, + "text": "××××××××" + }, + { + "column": 4, + "text": "IKUE OOTANI" + } + ], + "mon": "VILEPLUME" + }, + { + "fade": true, + "lines": [ + { + "column": 6, + "text": "PRODUCER" + }, + { + "column": 2, + "text": "TAKEHIRO IZUSHI" + } + ] + }, + { + "fade": false, + "lines": [ + { + "column": 6, + "text": "PRODUCER" + }, + { + "column": 1, + "text": "TAKASHI KAWAGUCHI" + } + ] + }, + { + "fade": false, + "lines": [ + { + "column": 6, + "text": "PRODUCER" + }, + { + "column": 1, + "text": "TSUNEKAZU ISHIHARA" + } + ], + "mon": "NIDOKING" + }, + { + "fade": true, + "lines": [ + { + "column": 2, + "text": "US VERSION STAFF" + } + ] + }, + { + "fade": true, + "lines": [ + { + "column": 2, + "text": "US COORDINATION" + }, + { + "column": 4, + "text": "GAIL TILDEN" + } + ] + }, + { + "fade": false, + "lines": [ + { + "column": 2, + "text": "US COORDINATION" + }, + { + "column": 3, + "text": "NAOKO KAWAKAMI" + }, + { + "column": 3, + "text": "HIRO NAKAMURA" + } + ] + }, + { + "fade": false, + "lines": [ + { + "column": 2, + "text": "US COORDINATION" + }, + { + "column": 3, + "text": "RANDY SHOEMAKE" + }, + { + "column": 4, + "text": "SARA OSBORNE" + } + ] + }, + { + "fade": true, + "lines": [ + { + "column": 2, + "text": "TEXT TRANSLATION" + }, + { + "column": 3, + "text": "NOB OGASAWARA" + } + ] + }, + { + "fade": true, + "lines": [ + { + "column": 4, + "text": "PROGRAMMERS" + }, + { + "column": 2, + "text": "TERUKI MURAKAWA" + }, + { + "column": 4, + "text": "KOHTA FUKUI" + } + ] + }, + { + "fade": true, + "lines": [ + { + "column": 2, + "text": "CHARACTER DESIGN" + }, + { + "column": 1, + "text": "TAKEHIKO HOSOKAWA" + } + ] + }, + { + "fade": true, + "lines": [ + { + "column": 3, + "text": "SPECIAL THANKS" + }, + { + "column": 4, + "text": "KENJI OKUBO" + }, + { + "column": 2, + "text": "TAKAHIRO HARADA" + } + ] + }, + { + "fade": false, + "lines": [ + { + "column": 3, + "text": "SPECIAL THANKS" + }, + { + "column": 2, + "text": "KIMIKO NAKAMICHI" + }, + { + "column": 3, + "text": "KAMON YOSHIMURA" + }, + { + "column": 3, + "text": "SAKAE YAMAZAKI" + } + ] + }, + { + "fade": true, + "lines": [ + { + "column": 3, + "text": "PRODUCT TESTING" + }, + { + "column": 4, + "text": "PAAD TESTING" + }, + { + "column": 0, + "text": "NCL SUPER MARIO CLUB" + } + ] + }, + { + "fade": true, + "lines": [ + { + "column": 1, + "text": "EXECUTIVE PRODUCER" + }, + { + "column": 2, + "text": "HIROSHI YAMAUCHI" + } + ], + "mon": "PARASECT" + }, + { + "copyright": true, + "fade": true, + "lines": [], + "mon": "GENGAR" + } + ] + }, + "cutTreeSwaps": [ + { + "after": 109, + "before": 50 + }, + { + "after": 108, + "before": 51 + }, + { + "after": 111, + "before": 52 + }, + { + "after": 76, + "before": 53 + }, + { + "after": 110, + "before": 96 + }, + { + "after": 10, + "before": 11 + }, + { + "after": 53, + "before": 60 + }, + { + "after": 53, + "before": 63 + }, + { + "after": 54, + "before": 61 + } + ], + "darkMaps": { + "entryMap": "ROCK_TUNNEL_1F", + "flashBadge": "BOULDERBADGE", + "maps": [ + "ROCK_TUNNEL_1F", + "ROCK_TUNNEL_B1F" + ], + "palOffset": 6 + }, + "dungeonTransitionMaps": { + "maps": [ + "VIRIDIAN_FOREST", + "ROCK_TUNNEL_1F", + "SEAFOAM_ISLANDS_1F", + "ROCK_TUNNEL_B1F" + ], + "ranges": [ + { + "first": "MT_MOON_1F", + "last": "MT_MOON_B2F" + }, + { + "first": "SS_ANNE_1F", + "last": "HALL_OF_FAME" + }, + { + "first": "LAVENDER_POKECENTER", + "last": "LAVENDER_CUBONE_HOUSE" + }, + { + "first": "SILPH_CO_2F", + "last": "CERULEAN_CAVE_1F" + } + ] + }, + "emotionBubbles": { + "bubbles": [ + { + "h": 16, + "name": "EXCLAMATION_BUBBLE", + "w": 16, + "x": 0, + "y": 0 + }, + { + "h": 16, + "name": "QUESTION_BUBBLE", + "w": 16, + "x": 16, + "y": 0 + }, + { + "h": 16, + "name": "SMILE_BUBBLE", + "w": 16, + "x": 32, + "y": 0 + }, + { + "h": 16, + "name": "SKULL_BUBBLE", + "w": 16, + "x": 48, + "y": 0 + }, + { + "h": 16, + "name": "HEART_BUBBLE", + "w": 16, + "x": 64, + "y": 0 + }, + { + "h": 16, + "name": "BOLT_BUBBLE", + "w": 16, + "x": 80, + "y": 0 + }, + { + "h": 16, + "name": "ZZZ_BUBBLE", + "w": 16, + "x": 96, + "y": 0 + }, + { + "h": 16, + "name": "FISH_BUBBLE", + "w": 16, + "x": 112, + "y": 0 + } + ], + "height": 16, + "path": "assets/generated/emotes.png", + "width": 128 + }, + "flyOrder": [ + "SEAFOAM_ISLANDS_B1F", + "SEAFOAM_ISLANDS_B1F", + "SEAFOAM_ISLANDS_B2F", + "SEAFOAM_ISLANDS_B2F", + "SEAFOAM_ISLANDS_B3F", + "SEAFOAM_ISLANDS_B3F", + "SEAFOAM_ISLANDS_B4F", + "SEAFOAM_ISLANDS_B4F", + "VICTORY_ROAD_2F", + "POKEMON_MANSION_1F", + "POKEMON_MANSION_1F", + "POKEMON_MANSION_2F", + "PALLET_TOWN", + "VIRIDIAN_CITY", + "PEWTER_CITY", + "CERULEAN_CITY", + "LAVENDER_TOWN", + "VERMILION_CITY", + "CELADON_CITY", + "FUCHSIA_CITY", + "CINNABAR_ISLAND", + "INDIGO_PLATEAU", + "SAFFRON_CITY", + "ROUTE_4", + "ROUTE_10" + ], + "flyWarps": { + "CELADON_CITY": { + "x": 41, + "y": 10 + }, + "CERULEAN_CITY": { + "x": 19, + "y": 18 + }, + "CINNABAR_ISLAND": { + "x": 11, + "y": 12 + }, + "FUCHSIA_CITY": { + "x": 19, + "y": 28 + }, + "INDIGO_PLATEAU": { + "x": 9, + "y": 6 + }, + "LAVENDER_TOWN": { + "x": 3, + "y": 6 + }, + "PALLET_TOWN": { + "x": 5, + "y": 6 + }, + "PEWTER_CITY": { + "x": 13, + "y": 26 + }, + "POKEMON_MANSION_1F": { + "x": 16, + "y": 14 + }, + "POKEMON_MANSION_2F": { + "x": 18, + "y": 14 + }, + "ROUTE_10": { + "x": 11, + "y": 20 + }, + "ROUTE_4": { + "x": 11, + "y": 6 + }, + "SAFFRON_CITY": { + "x": 9, + "y": 30 + }, + "SEAFOAM_ISLANDS_B1F": { + "x": 23, + "y": 7 + }, + "SEAFOAM_ISLANDS_B2F": { + "x": 22, + "y": 7 + }, + "SEAFOAM_ISLANDS_B3F": { + "x": 19, + "y": 7 + }, + "SEAFOAM_ISLANDS_B4F": { + "x": 5, + "y": 14 + }, + "VERMILION_CITY": { + "x": 11, + "y": 4 + }, + "VICTORY_ROAD_2F": { + "x": 22, + "y": 16 + }, + "VIRIDIAN_CITY": { + "x": 23, + "y": 26 + } + }, + "forcedMovement": { + "slopeMaps": [ + "ROUTE_17" + ], + "tiles": { + "ROUTE_16": [ + { + "mode": "bike", + "x": 17, + "y": 10 + }, + { + "mode": "bike", + "x": 17, + "y": 11 + } + ], + "ROUTE_18": [ + { + "mode": "bike", + "x": 33, + "y": 8 + }, + { + "mode": "bike", + "x": 33, + "y": 9 + } + ], + "SEAFOAM_ISLANDS_B3F": [ + { + "mode": "surf", + "x": 18, + "y": 7 + }, + { + "mode": "surf", + "x": 19, + "y": 7 + } + ], + "SEAFOAM_ISLANDS_B4F": [ + { + "mode": "surf", + "x": 4, + "y": 14 + }, + { + "mode": "surf", + "x": 5, + "y": 14 + } + ] + } + }, + "gameCornerPoster": { + "closedBlock": 42, + "event": "EVENT_FOUND_ROCKET_HIDEOUT", + "map": "GAME_CORNER", + "openBlock": 67, + "poster": { + "x": 9, + "y": 4 + }, + "posterText": "TEXT_GAMECORNER_POSTER", + "x": 8, + "y": 2 + }, + "hiddenCoins": { + "GAME_CORNER": [ + { + "coins": 10, + "x": 0, + "y": 8 + }, + { + "coins": 10, + "x": 1, + "y": 16 + }, + { + "coins": 20, + "x": 3, + "y": 11 + }, + { + "coins": 10, + "x": 3, + "y": 14 + }, + { + "coins": 10, + "x": 4, + "y": 12 + }, + { + "coins": 20, + "x": 9, + "y": 12 + }, + { + "coins": 10, + "x": 9, + "y": 15 + }, + { + "coins": 10, + "x": 16, + "y": 14 + }, + { + "coins": 10, + "x": 10, + "y": 16 + }, + { + "coins": 40, + "x": 11, + "y": 7 + }, + { + "coins": 100, + "x": 15, + "y": 8 + }, + { + "coins": 10, + "x": 12, + "y": 15 + } + ] + }, + "hiddenExtras": { + "benchGuys": { + "CELADON_HOTEL": [ + { + "facing": "left", + "text": "CeladonCityHotelText", + "textFacing": "left", + "x": 0, + "y": 4 + } + ], + "CELADON_POKECENTER": [ + { + "facing": "left", + "text": "CeladonCityPokecenterBenchGuyText", + "textFacing": "left", + "x": 0, + "y": 4 + } + ], + "CERULEAN_POKECENTER": [ + { + "facing": "left", + "text": "CeruleanCityPokecenterBenchGuyText", + "textFacing": "left", + "x": 0, + "y": 4 + } + ], + "CINNABAR_POKECENTER": [ + { + "facing": "up", + "text": "CinnabarIslandPokecenterBenchGuyText", + "textFacing": "left", + "x": 0, + "y": 4 + } + ], + "FUCHSIA_POKECENTER": [ + { + "facing": "up", + "text": "FuchsiaCityPokecenterBenchGuyText", + "textFacing": "left", + "x": 0, + "y": 4 + } + ], + "LAVENDER_POKECENTER": [ + { + "facing": "left", + "text": "LavenderCityPokecenterBenchGuyText", + "textFacing": "left", + "x": 0, + "y": 4 + } + ], + "MT_MOON_POKECENTER": [ + { + "facing": "left", + "text": "MtMoonPokecenterBenchGuyText", + "textFacing": "left", + "x": 0, + "y": 4 + } + ], + "PEWTER_POKECENTER": [ + { + "facing": "left", + "text": "PewterCityPokecenterBenchGuyText", + "textFacing": "left", + "x": 0, + "y": 4 + } + ], + "ROCK_TUNNEL_POKECENTER": [ + { + "facing": "left", + "text": "RockTunnelPokecenterBenchGuyText", + "textFacing": "left", + "x": 0, + "y": 4 + } + ], + "SAFARI_ZONE_EAST_REST_HOUSE": [ + { + "facing": "left", + "x": 0, + "y": 4 + } + ], + "SAFARI_ZONE_NORTH_REST_HOUSE": [ + { + "facing": "left", + "x": 0, + "y": 4 + } + ], + "SAFARI_ZONE_WEST_REST_HOUSE": [ + { + "facing": "left", + "x": 0, + "y": 4 + } + ], + "SAFFRON_POKECENTER": [ + { + "facing": "up", + "text": "SaffronCityPokecenterBenchGuyText", + "textFacing": "left", + "x": 0, + "y": 4 + } + ], + "VERMILION_POKECENTER": [ + { + "facing": "up", + "text": "VermilionCityPokecenterBenchGuyText", + "textFacing": "left", + "x": 0, + "y": 4 + } + ], + "VIRIDIAN_POKECENTER": [ + { + "facing": "left", + "text": "ViridianCityPokecenterBenchGuyText", + "textFacing": "left", + "x": 0, + "y": 4 + } + ] + }, + "gymStatues": { + "CELADON_GYM": [ + { + "facing": "up", + "x": 3, + "y": 15 + }, + { + "facing": "up", + "x": 6, + "y": 15 + } + ], + "CERULEAN_GYM": [ + { + "facing": "up", + "x": 3, + "y": 11 + }, + { + "facing": "up", + "x": 6, + "y": 11 + } + ], + "CINNABAR_GYM": [ + { + "facing": "up", + "x": 17, + "y": 13 + } + ], + "FUCHSIA_GYM": [ + { + "facing": "up", + "x": 3, + "y": 15 + }, + { + "facing": "up", + "x": 6, + "y": 15 + } + ], + "PEWTER_GYM": [ + { + "facing": "up", + "x": 3, + "y": 10 + }, + { + "facing": "up", + "x": 6, + "y": 10 + } + ], + "SAFFRON_GYM": [ + { + "facing": "up", + "x": 9, + "y": 15 + } + ], + "VERMILION_GYM": [ + { + "facing": "up", + "x": 3, + "y": 14 + }, + { + "facing": "up", + "x": 6, + "y": 14 + } + ], + "VIRIDIAN_GYM": [ + { + "facing": "up", + "x": 15, + "y": 15 + }, + { + "facing": "up", + "x": 18, + "y": 15 + } + ] + }, + "pcTiles": { + "CELADON_HOTEL": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ], + "CELADON_MANSION_2F": [ + { + "facing": "up", + "x": 0, + "y": 5 + } + ], + "CELADON_POKECENTER": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ], + "CERULEAN_POKECENTER": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ], + "CINNABAR_LAB_FOSSIL_ROOM": [ + { + "facing": "up", + "x": 0, + "y": 4 + }, + { + "facing": "up", + "x": 2, + "y": 4 + } + ], + "CINNABAR_POKECENTER": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ], + "FUCHSIA_POKECENTER": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ], + "INDIGO_PLATEAU_LOBBY": [ + { + "facing": "up", + "x": 15, + "y": 7 + } + ], + "LAVENDER_POKECENTER": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ], + "MT_MOON_POKECENTER": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ], + "PEWTER_POKECENTER": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ], + "REDS_HOUSE_2F": [ + { + "facing": "up", + "x": 0, + "y": 1 + } + ], + "ROCK_TUNNEL_POKECENTER": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ], + "SAFARI_ZONE_EAST_REST_HOUSE": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ], + "SAFARI_ZONE_NORTH_REST_HOUSE": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ], + "SAFARI_ZONE_WEST_REST_HOUSE": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ], + "SAFFRON_POKECENTER": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ], + "SILPH_CO_11F": [ + { + "facing": "up", + "x": 10, + "y": 12 + } + ], + "VERMILION_POKECENTER": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ], + "VIRIDIAN_POKECENTER": [ + { + "facing": "up", + "x": 13, + "y": 3 + } + ] + }, + "printTrash": { + "SS_ANNE_KITCHEN": [ + { + "facing": "down", + "x": 13, + "y": 5 + }, + { + "facing": "down", + "x": 13, + "y": 7 + } + ], + "VERMILION_GYM": [ + { + "facing": "down", + "x": 6, + "y": 1 + } + ] + }, + "trashCans": { + "adjacent": { + "0": [ + 1, + 3 + ], + "1": [ + 0, + 2, + 4 + ], + "10": [ + 7, + 9, + 11, + 13 + ], + "11": [ + 8, + 10, + 14 + ], + "12": [ + 9, + 13 + ], + "13": [ + 10, + 12, + 14 + ], + "14": [ + 11, + 13 + ], + "2": [ + 1, + 5 + ], + "3": [ + 0, + 4, + 6 + ], + "4": [ + 1, + 3, + 5, + 7 + ], + "5": [ + 2, + 4, + 8 + ], + "6": [ + 3, + 7, + 9 + ], + "7": [ + 4, + 6, + 8, + 10 + ], + "8": [ + 5, + 7, + 11 + ], + "9": [ + 6, + 10, + 12 + ] + }, + "cans": [ + { + "can": 0, + "x": 1, + "y": 7 + }, + { + "can": 1, + "x": 1, + "y": 9 + }, + { + "can": 2, + "x": 1, + "y": 11 + }, + { + "can": 3, + "x": 3, + "y": 7 + }, + { + "can": 4, + "x": 3, + "y": 9 + }, + { + "can": 5, + "x": 3, + "y": 11 + }, + { + "can": 6, + "x": 5, + "y": 7 + }, + { + "can": 7, + "x": 5, + "y": 9 + }, + { + "can": 8, + "x": 5, + "y": 11 + }, + { + "can": 9, + "x": 7, + "y": 7 + }, + { + "can": 10, + "x": 7, + "y": 9 + }, + { + "can": 11, + "x": 7, + "y": 11 + }, + { + "can": 12, + "x": 9, + "y": 7 + }, + { + "can": 13, + "x": 9, + "y": 9 + }, + { + "can": 14, + "x": 9, + "y": 11 + } + ], + "columns": 5, + "firstLockCandidates": [ + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 14 + ], + "firstLockEvent": "EVENT_1ST_LOCK_OPENED", + "map": "VERMILION_GYM", + "rows": 3, + "rules": "first switch: random even can (Random & $0e, rolled on Vermilion City load); second switch: random can adjacent to the first (GymTrashCans table); a wrong second can relocks and rerandomizes the first switch", + "secondLockEvent": "EVENT_2ND_LOCK_OPENED" + } + }, + "hiddenItems": { + "CELADON_CITY": [ + { + "item": "PP_UP", + "x": 48, + "y": 15 + } + ], + "CERULEAN_CAVE_1F": [ + { + "item": "RARE_CANDY", + "x": 14, + "y": 11 + } + ], + "CERULEAN_CAVE_B1F": [ + { + "item": "ULTRA_BALL", + "x": 27, + "y": 3 + } + ], + "CERULEAN_CITY": [ + { + "item": "RARE_CANDY", + "x": 15, + "y": 8 + } + ], + "COPYCATS_HOUSE_2F": [ + { + "item": "NUGGET", + "x": 1, + "y": 1 + } + ], + "MT_MOON_B2F": [ + { + "item": "MOON_STONE", + "x": 18, + "y": 12 + }, + { + "item": "ETHER", + "x": 33, + "y": 9 + } + ], + "POKEMON_MANSION_1F": [ + { + "item": "MOON_STONE", + "x": 8, + "y": 16 + } + ], + "POKEMON_MANSION_3F": [ + { + "item": "MAX_REVIVE", + "x": 1, + "y": 9 + } + ], + "POKEMON_MANSION_B1F": [ + { + "item": "RARE_CANDY", + "x": 1, + "y": 9 + } + ], + "POKEMON_TOWER_5F": [ + { + "item": "ELIXER", + "x": 4, + "y": 12 + } + ], + "POWER_PLANT": [ + { + "item": "MAX_ELIXER", + "x": 17, + "y": 16 + }, + { + "item": "PP_UP", + "x": 12, + "y": 1 + } + ], + "ROCKET_HIDEOUT_B1F": [ + { + "item": "PP_UP", + "x": 21, + "y": 15 + } + ], + "ROCKET_HIDEOUT_B3F": [ + { + "item": "NUGGET", + "x": 27, + "y": 17 + } + ], + "ROCKET_HIDEOUT_B4F": [ + { + "item": "SUPER_POTION", + "x": 25, + "y": 1 + } + ], + "ROUTE_10": [ + { + "item": "SUPER_POTION", + "x": 9, + "y": 17 + }, + { + "item": "MAX_ETHER", + "x": 16, + "y": 53 + } + ], + "ROUTE_11": [ + { + "item": "ESCAPE_ROPE", + "x": 48, + "y": 5 + } + ], + "ROUTE_12": [ + { + "item": "HYPER_POTION", + "x": 2, + "y": 63 + } + ], + "ROUTE_13": [ + { + "item": "PP_UP", + "x": 1, + "y": 14 + }, + { + "item": "CALCIUM", + "x": 16, + "y": 13 + } + ], + "ROUTE_17": [ + { + "item": "RARE_CANDY", + "x": 15, + "y": 14 + }, + { + "item": "FULL_RESTORE", + "x": 8, + "y": 45 + }, + { + "item": "PP_UP", + "x": 17, + "y": 72 + }, + { + "item": "MAX_REVIVE", + "x": 4, + "y": 91 + }, + { + "item": "MAX_ELIXER", + "x": 8, + "y": 121 + } + ], + "ROUTE_23": [ + { + "item": "FULL_RESTORE", + "x": 9, + "y": 44 + }, + { + "item": "ULTRA_BALL", + "x": 19, + "y": 70 + }, + { + "item": "MAX_ETHER", + "x": 8, + "y": 90 + } + ], + "ROUTE_25": [ + { + "item": "ETHER", + "x": 38, + "y": 3 + }, + { + "item": "ELIXER", + "x": 10, + "y": 1 + } + ], + "ROUTE_4": [ + { + "item": "GREAT_BALL", + "x": 40, + "y": 3 + } + ], + "ROUTE_9": [ + { + "item": "ETHER", + "x": 14, + "y": 7 + } + ], + "SAFARI_ZONE_GATE": [ + { + "item": "NUGGET", + "x": 10, + "y": 1 + } + ], + "SAFARI_ZONE_WEST": [ + { + "item": "REVIVE", + "x": 6, + "y": 5 + } + ], + "SEAFOAM_ISLANDS_B2F": [ + { + "item": "NUGGET", + "x": 15, + "y": 15 + } + ], + "SEAFOAM_ISLANDS_B3F": [ + { + "item": "MAX_ELIXER", + "x": 9, + "y": 16 + } + ], + "SEAFOAM_ISLANDS_B4F": [ + { + "item": "ULTRA_BALL", + "x": 25, + "y": 17 + } + ], + "SILPH_CO_5F": [ + { + "item": "ELIXER", + "x": 12, + "y": 3 + } + ], + "SILPH_CO_9F": [ + { + "item": "MAX_POTION", + "x": 2, + "y": 15 + } + ], + "SS_ANNE_B1F_ROOMS": [ + { + "item": "HYPER_POTION", + "x": 3, + "y": 1 + } + ], + "SS_ANNE_KITCHEN": [ + { + "item": "GREAT_BALL", + "x": 13, + "y": 9 + } + ], + "UNDERGROUND_PATH_NORTH_SOUTH": [ + { + "item": "FULL_RESTORE", + "x": 3, + "y": 4 + }, + { + "item": "X_SPECIAL", + "x": 4, + "y": 34 + } + ], + "UNDERGROUND_PATH_WEST_EAST": [ + { + "item": "NUGGET", + "x": 12, + "y": 2 + }, + { + "item": "ELIXER", + "x": 21, + "y": 5 + } + ], + "UNUSED_MAP_6F": [ + { + "item": "MAX_ELIXER", + "x": 14, + "y": 11 + } + ], + "VERMILION_CITY": [ + { + "item": "MAX_ETHER", + "x": 14, + "y": 11 + } + ], + "VICTORY_ROAD_2F": [ + { + "item": "ULTRA_BALL", + "x": 5, + "y": 2 + }, + { + "item": "FULL_RESTORE", + "x": 26, + "y": 7 + } + ], + "VIRIDIAN_CITY": [ + { + "item": "POTION", + "x": 14, + "y": 4 + } + ], + "VIRIDIAN_FOREST": [ + { + "item": "POTION", + "x": 1, + "y": 18 + }, + { + "item": "ANTIDOTE", + "x": 16, + "y": 42 + } + ] + }, + "indoorEncounters": { + "excludedTileset": "FOREST", + "firstIndoorMap": 37 + }, + "intro": { + "bigStar": { + "height": 16, + "path": "assets/generated/intro/big_star.png", + "width": 16 + }, + "fallingStar": { + "height": 8, + "path": "assets/generated/intro/falling_star.png", + "width": 8 + }, + "fallingStarBlink": { + "height": 8, + "path": "assets/generated/intro/falling_star_blink.png", + "width": 8 + }, + "gamefreakLogo": { + "height": 24, + "path": "assets/generated/intro/gamefreak_logo.png", + "width": 16 + }, + "gamefreakPresents": { + "height": 8, + "path": "assets/generated/intro/gamefreak_presents.png", + "width": 104 + }, + "gamefreakText": { + "height": 8, + "path": "assets/generated/intro/gamefreak_text.png", + "width": 80 + }, + "gengar": { + "frame1": { + "height": 56, + "path": "assets/generated/intro/gengar_1.png", + "width": 56 + }, + "frame2": { + "height": 56, + "path": "assets/generated/intro/gengar_2.png", + "width": 56 + }, + "frame3": { + "height": 56, + "path": "assets/generated/intro/gengar_3.png", + "width": 56 + } + }, + "nidorino": { + "frame1": { + "height": 48, + "path": "assets/generated/intro/red_nidorino_1.png", + "width": 48 + }, + "frame2": { + "height": 48, + "path": "assets/generated/intro/red_nidorino_2.png", + "width": 48 + }, + "frame3": { + "height": 48, + "path": "assets/generated/intro/red_nidorino_3.png", + "width": 48 + } + } + }, + "ledges": [ + { + "facing": "down", + "input": "down", + "ledgeTile": 55, + "standingTile": 44 + }, + { + "facing": "down", + "input": "down", + "ledgeTile": 54, + "standingTile": 57 + }, + { + "facing": "down", + "input": "down", + "ledgeTile": 55, + "standingTile": 57 + }, + { + "facing": "left", + "input": "left", + "ledgeTile": 39, + "standingTile": 44 + }, + { + "facing": "left", + "input": "left", + "ledgeTile": 39, + "standingTile": 57 + }, + { + "facing": "right", + "input": "right", + "ledgeTile": 13, + "standingTile": 44 + }, + { + "facing": "right", + "input": "right", + "ledgeTile": 29, + "standingTile": 44 + }, + { + "facing": "right", + "input": "right", + "ledgeTile": 13, + "standingTile": 57 + } + ], + "oakSpeech": { + "shrink1": "assets/generated/intro/shrink1.png", + "shrink2": "assets/generated/intro/shrink2.png" + }, + "oldManBattle": { + "afterText": "ViridianCityOldManYouNeedToWeakenTheTargetText", + "battleType": "BATTLE_TYPE_OLD_MAN", + "level": 5, + "map": "VIRIDIAN_CITY", + "species": "WEEDLE", + "text": "ViridianCityOldManText" + }, + "overworldFx": { + "battleTransition": { + "height": 8, + "path": "assets/generated/fx/battle_transition.png", + "width": 8 + }, + "cutTree": { + "height": 16, + "path": "assets/generated/fx/cut_tree.png", + "width": 16 + }, + "fishingRod": { + "height": 24, + "path": "assets/generated/fx/fishing_rod.png", + "width": 8 + }, + "healMachine": { + "height": 16, + "path": "assets/generated/fx/heal_machine.png", + "width": 8 + }, + "pokedexFrame": { + "height": 48, + "path": "assets/generated/fx/pokedex.png", + "width": 24 + }, + "redFishBack": { + "height": 8, + "path": "assets/generated/fx/red_fish_back.png", + "width": 16 + }, + "redFishFront": { + "height": 8, + "path": "assets/generated/fx/red_fish_front.png", + "width": 16 + }, + "redFishSide": { + "height": 8, + "path": "assets/generated/fx/red_fish_side.png", + "width": 16 + }, + "shadow": { + "height": 8, + "path": "assets/generated/fx/shadow.png", + "width": 8 + }, + "smoke": { + "height": 8, + "path": "assets/generated/fx/smoke.png", + "width": 8 + } + }, + "pcItemCap": 50, + "presetNames": { + "customOption": "NEW NAME", + "player": [ + "YELLOW", + "ASH", + "JACK" + ], + "rival": [ + "BLUE", + "GARY", + "JOHN" + ] + }, + "seafoam": { + "SEAFOAM_ISLANDS_1F": { + "holeDestination": "SEAFOAM_ISLANDS_B1F", + "holes": [ + { + "boulderEvent": "EVENT_SEAFOAM1_BOULDER1_DOWN_HOLE", + "hideObject": "TOGGLE_SEAFOAM_ISLANDS_1F_BOULDER_1", + "landsAt": { + "x": 17, + "y": 6 + }, + "showObject": "TOGGLE_SEAFOAM_ISLANDS_B1F_BOULDER_1", + "x": 17, + "y": 6 + }, + { + "boulderEvent": "EVENT_SEAFOAM1_BOULDER2_DOWN_HOLE", + "hideObject": "TOGGLE_SEAFOAM_ISLANDS_1F_BOULDER_2", + "landsAt": { + "x": 22, + "y": 6 + }, + "showObject": "TOGGLE_SEAFOAM_ISLANDS_B1F_BOULDER_2", + "x": 24, + "y": 6 + } + ] + }, + "SEAFOAM_ISLANDS_B1F": { + "holeDestination": "SEAFOAM_ISLANDS_B2F", + "holes": [ + { + "boulderEvent": "EVENT_SEAFOAM2_BOULDER1_DOWN_HOLE", + "hideObject": "TOGGLE_SEAFOAM_ISLANDS_B1F_BOULDER_1", + "landsAt": { + "x": 18, + "y": 6 + }, + "showObject": "TOGGLE_SEAFOAM_ISLANDS_B2F_BOULDER_1", + "x": 18, + "y": 6 + }, + { + "boulderEvent": "EVENT_SEAFOAM2_BOULDER2_DOWN_HOLE", + "hideObject": "TOGGLE_SEAFOAM_ISLANDS_B1F_BOULDER_2", + "landsAt": { + "x": 23, + "y": 6 + }, + "showObject": "TOGGLE_SEAFOAM_ISLANDS_B2F_BOULDER_2", + "x": 23, + "y": 6 + } + ] + }, + "SEAFOAM_ISLANDS_B3F": { + "currents": [ + { + "moves": [ + { + "count": 4, + "dir": "down" + }, + { + "count": 2, + "dir": "right" + }, + { + "count": 6, + "dir": "down" + } + ], + "x": 18, + "y": 7 + }, + { + "moves": [ + { + "count": 1, + "dir": "left" + }, + { + "count": 4, + "dir": "down" + }, + { + "count": 2, + "dir": "right" + }, + { + "count": 6, + "dir": "down" + } + ], + "x": 19, + "y": 7 + } + ], + "currentsDisabledByEvents": [ + "EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE", + "EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE" + ], + "entryCurrent": { + "moves": [ + { + "count": 3, + "dir": "down" + }, + { + "count": 5, + "dir": "right" + }, + { + "count": 6, + "dir": "down" + } + ], + "x": 15, + "y": 8 + }, + "holeDestination": "SEAFOAM_ISLANDS_B4F", + "holes": [ + { + "boulderEvent": "EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE", + "hideObject": "TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_1", + "landsAt": { + "x": 4, + "y": 15 + }, + "showObject": "TOGGLE_SEAFOAM_ISLANDS_B4F_BOULDER_1", + "x": 3, + "y": 16 + }, + { + "boulderEvent": "EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE", + "hideObject": "TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_2", + "landsAt": { + "x": 5, + "y": 15 + }, + "showObject": "TOGGLE_SEAFOAM_ISLANDS_B4F_BOULDER_2", + "x": 6, + "y": 16 + } + ], + "pluggedByHolesOn": { + "holes": [ + { + "boulderEvent": "EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE", + "hideObject": "TOGGLE_SEAFOAM_ISLANDS_B2F_BOULDER_1", + "landsAt": { + "x": 18, + "y": 6 + }, + "showObject": "TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_5", + "x": 19, + "y": 6 + }, + { + "boulderEvent": "EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE", + "hideObject": "TOGGLE_SEAFOAM_ISLANDS_B2F_BOULDER_2", + "landsAt": { + "x": 19, + "y": 6 + }, + "showObject": "TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_6", + "x": 22, + "y": 6 + } + ], + "map": "SEAFOAM_ISLANDS_B2F" + } + }, + "SEAFOAM_ISLANDS_B4F": { + "currents": [ + { + "moves": [ + { + "count": 1, + "dir": "up" + }, + { + "count": 3, + "dir": "right" + }, + { + "count": 3, + "dir": "up" + } + ], + "x": 4, + "y": 14 + }, + { + "moves": [ + { + "count": 1, + "dir": "up" + }, + { + "count": 2, + "dir": "right" + }, + { + "count": 3, + "dir": "up" + } + ], + "x": 5, + "y": 14 + } + ], + "currentsDisabledByEvents": [ + "EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE", + "EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE" + ], + "forcedExit": { + "activeUntilEvents": [ + "EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE", + "EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE" + ], + "coords": [ + { + "x": 20, + "y": 17 + }, + { + "x": 21, + "y": 17 + }, + { + "x": 20, + "y": 16 + }, + { + "x": 21, + "y": 16 + } + ] + } + } + }, + "slotMachines": { + "GAME_CORNER": [ + { + "state": "ok", + "x": 18, + "y": 15 + }, + { + "state": "ok", + "x": 18, + "y": 14 + }, + { + "state": "ok", + "x": 18, + "y": 13 + }, + { + "state": "ok", + "x": 18, + "y": 12 + }, + { + "state": "ok", + "x": 18, + "y": 11 + }, + { + "state": "keys", + "x": 18, + "y": 10 + }, + { + "state": "ok", + "x": 13, + "y": 10 + }, + { + "state": "ok", + "x": 13, + "y": 11 + }, + { + "state": "out_to_lunch", + "x": 13, + "y": 12 + }, + { + "state": "ok", + "x": 13, + "y": 13 + }, + { + "state": "ok", + "x": 13, + "y": 14 + }, + { + "state": "ok", + "x": 13, + "y": 15 + }, + { + "state": "ok", + "x": 12, + "y": 15 + }, + { + "state": "ok", + "x": 12, + "y": 14 + }, + { + "state": "ok", + "x": 12, + "y": 13 + }, + { + "state": "ok", + "x": 12, + "y": 12 + }, + { + "state": "ok", + "x": 12, + "y": 11 + }, + { + "state": "ok", + "x": 12, + "y": 10 + }, + { + "state": "ok", + "x": 7, + "y": 10 + }, + { + "state": "ok", + "x": 7, + "y": 11 + }, + { + "state": "ok", + "x": 7, + "y": 12 + }, + { + "state": "ok", + "x": 7, + "y": 13 + }, + { + "state": "ok", + "x": 7, + "y": 14 + }, + { + "state": "ok", + "x": 7, + "y": 15 + }, + { + "state": "ok", + "x": 6, + "y": 15 + }, + { + "state": "ok", + "x": 6, + "y": 14 + }, + { + "state": "ok", + "x": 6, + "y": 13 + }, + { + "state": "out_of_order", + "x": 6, + "y": 12 + }, + { + "state": "ok", + "x": 6, + "y": 11 + }, + { + "state": "ok", + "x": 6, + "y": 10 + }, + { + "state": "ok", + "x": 1, + "y": 10 + }, + { + "state": "ok", + "x": 1, + "y": 11 + }, + { + "state": "ok", + "x": 1, + "y": 12 + }, + { + "state": "ok", + "x": 1, + "y": 13 + }, + { + "state": "ok", + "x": 1, + "y": 14 + }, + { + "state": "ok", + "x": 1, + "y": 15 + } + ] + }, + "slotSymbols": { + "height": 16, + "order": [ + "7", + "BAR", + "CHERRY", + "FISH", + "BIRD", + "MOUSE" + ], + "sheet": "assets/generated/slots/symbols.png", + "sheets": { + "background": { + "height": 24, + "path": "assets/generated/slots/red_slots_1.png", + "width": 128 + }, + "wheel": { + "height": 48, + "path": "assets/generated/slots/red_slots_2.png", + "width": 32 + } + }, + "symbols": { + "7": { + "h": 16, + "sheet": "assets/generated/slots/symbols.png", + "tiles": 512, + "w": 16, + "x": 0, + "y": 0 + }, + "BAR": { + "h": 16, + "sheet": "assets/generated/slots/symbols.png", + "tiles": 1540, + "w": 16, + "x": 16, + "y": 0 + }, + "BIRD": { + "h": 16, + "sheet": "assets/generated/slots/symbols.png", + "tiles": 4624, + "w": 16, + "x": 64, + "y": 0 + }, + "CHERRY": { + "h": 16, + "sheet": "assets/generated/slots/symbols.png", + "tiles": 2568, + "w": 16, + "x": 32, + "y": 0 + }, + "FISH": { + "h": 16, + "sheet": "assets/generated/slots/symbols.png", + "tiles": 3596, + "w": 16, + "x": 48, + "y": 0 + }, + "MOUSE": { + "h": 16, + "sheet": "assets/generated/slots/symbols.png", + "tiles": 5652, + "w": 16, + "x": 80, + "y": 0 + } + }, + "tilemap": { + "cols": 20, + "rows": 12, + "sheet": "assets/generated/slots/red_slots_1.png", + "tileCols": 16, + "tiles": [ + [ + 0, + 0, + 0, + 0, + 0, + 2, + 3, + 4, + 5, + 0, + 0, + 6, + 7, + 8, + 9, + 0, + 0, + 0, + 0, + 0 + ], + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + [ + 10, + 14, + 11, + 35, + 28, + 30, + 31, + 28, + 28, + 30, + 31, + 28, + 28, + 30, + 31, + 28, + 35, + 10, + 14, + 11 + ], + [ + 12, + 15, + 13, + 36, + 29, + 32, + 33, + 29, + 29, + 32, + 33, + 29, + 29, + 32, + 33, + 29, + 36, + 12, + 15, + 13 + ], + [ + 10, + 16, + 11, + 35, + 22, + 23, + 23, + 22, + 22, + 23, + 23, + 22, + 22, + 23, + 23, + 22, + 35, + 10, + 16, + 11 + ], + [ + 12, + 17, + 13, + 36, + 22, + 23, + 23, + 22, + 22, + 23, + 23, + 22, + 22, + 23, + 23, + 22, + 36, + 12, + 17, + 13 + ], + [ + 10, + 18, + 11, + 35, + 22, + 23, + 23, + 22, + 22, + 23, + 23, + 22, + 22, + 23, + 23, + 22, + 35, + 10, + 18, + 11 + ], + [ + 12, + 19, + 13, + 36, + 22, + 23, + 23, + 22, + 22, + 23, + 23, + 22, + 22, + 23, + 23, + 22, + 36, + 12, + 19, + 13 + ], + [ + 10, + 16, + 11, + 35, + 22, + 23, + 23, + 22, + 22, + 23, + 23, + 22, + 22, + 23, + 23, + 22, + 35, + 10, + 16, + 11 + ], + [ + 12, + 17, + 13, + 36, + 22, + 23, + 23, + 22, + 22, + 23, + 23, + 22, + 22, + 23, + 23, + 22, + 36, + 12, + 17, + 13 + ], + [ + 10, + 14, + 11, + 35, + 0, + 24, + 25, + 0, + 0, + 24, + 25, + 0, + 0, + 24, + 25, + 0, + 35, + 10, + 14, + 11 + ], + [ + 12, + 15, + 13, + 36, + 1, + 26, + 27, + 1, + 1, + 26, + 27, + 1, + 1, + 26, + 27, + 1, + 36, + 12, + 15, + 13 + ] + ] + }, + "width": 96 + }, + "slotWheels": [ + [ + "7", + "MOUSE", + "FISH", + "BAR", + "CHERRY", + "7", + "FISH", + "BIRD", + "BAR", + "CHERRY", + "7", + "MOUSE", + "BIRD", + "BAR", + "CHERRY", + "7", + "MOUSE", + "FISH" + ], + [ + "7", + "FISH", + "CHERRY", + "BIRD", + "MOUSE", + "BAR", + "CHERRY", + "FISH", + "BIRD", + "CHERRY", + "BAR", + "FISH", + "BIRD", + "CHERRY", + "MOUSE", + "7", + "FISH", + "CHERRY" + ], + [ + "7", + "BIRD", + "FISH", + "CHERRY", + "MOUSE", + "BIRD", + "FISH", + "CHERRY", + "MOUSE", + "BIRD", + "FISH", + "CHERRY", + "MOUSE", + "BIRD", + "BAR", + "7", + "BIRD", + "FISH" + ] + ], + "spinners": { + "ROCKET_HIDEOUT_B2F": [ + { + "moves": [ + { + "count": 2, + "dir": "left" + } + ], + "x": 4, + "y": 9 + }, + { + "moves": [ + { + "count": 4, + "dir": "right" + } + ], + "x": 4, + "y": 11 + }, + { + "moves": [ + { + "count": 4, + "dir": "right" + }, + { + "count": 4, + "dir": "up" + } + ], + "x": 4, + "y": 15 + }, + { + "moves": [ + { + "count": 1, + "dir": "up" + }, + { + "count": 4, + "dir": "right" + }, + { + "count": 4, + "dir": "up" + } + ], + "x": 4, + "y": 16 + }, + { + "moves": [ + { + "count": 2, + "dir": "left" + } + ], + "x": 4, + "y": 19 + }, + { + "moves": [ + { + "count": 3, + "dir": "up" + }, + { + "count": 2, + "dir": "left" + } + ], + "x": 4, + "y": 22 + }, + { + "moves": [ + { + "count": 4, + "dir": "right" + }, + { + "count": 2, + "dir": "down" + } + ], + "x": 5, + "y": 14 + }, + { + "moves": [ + { + "count": 2, + "dir": "up" + } + ], + "x": 6, + "y": 22 + }, + { + "moves": [ + { + "count": 4, + "dir": "up" + } + ], + "x": 6, + "y": 24 + }, + { + "moves": [ + { + "count": 6, + "dir": "left" + } + ], + "x": 8, + "y": 9 + }, + { + "moves": [ + { + "count": 1, + "dir": "up" + } + ], + "x": 8, + "y": 12 + }, + { + "moves": [ + { + "count": 4, + "dir": "up" + } + ], + "x": 8, + "y": 15 + }, + { + "moves": [ + { + "count": 6, + "dir": "left" + } + ], + "x": 8, + "y": 19 + }, + { + "moves": [ + { + "count": 4, + "dir": "up" + }, + { + "count": 6, + "dir": "left" + } + ], + "x": 8, + "y": 23 + }, + { + "moves": [ + { + "count": 2, + "dir": "down" + } + ], + "x": 9, + "y": 14 + }, + { + "moves": [ + { + "count": 2, + "dir": "down" + } + ], + "x": 9, + "y": 22 + }, + { + "moves": [ + { + "count": 8, + "dir": "left" + } + ], + "x": 10, + "y": 9 + }, + { + "moves": [ + { + "count": 1, + "dir": "up" + }, + { + "count": 8, + "dir": "left" + } + ], + "x": 10, + "y": 10 + }, + { + "moves": [ + { + "count": 6, + "dir": "up" + }, + { + "count": 8, + "dir": "left" + } + ], + "x": 10, + "y": 15 + }, + { + "moves": [ + { + "count": 4, + "dir": "right" + }, + { + "count": 2, + "dir": "up" + } + ], + "x": 10, + "y": 17 + }, + { + "moves": [ + { + "count": 2, + "dir": "up" + }, + { + "count": 4, + "dir": "right" + }, + { + "count": 2, + "dir": "up" + } + ], + "x": 10, + "y": 19 + }, + { + "moves": [ + { + "count": 4, + "dir": "right" + } + ], + "x": 10, + "y": 25 + }, + { + "moves": [ + { + "count": 2, + "dir": "down" + }, + { + "count": 4, + "dir": "right" + }, + { + "count": 2, + "dir": "down" + } + ], + "x": 11, + "y": 14 + }, + { + "moves": [ + { + "count": 4, + "dir": "right" + }, + { + "count": 2, + "dir": "down" + } + ], + "x": 11, + "y": 16 + }, + { + "moves": [ + { + "count": 2, + "dir": "down" + } + ], + "x": 11, + "y": 18 + }, + { + "moves": [ + { + "count": 10, + "dir": "left" + } + ], + "x": 12, + "y": 9 + }, + { + "moves": [ + { + "count": 2, + "dir": "up" + }, + { + "count": 10, + "dir": "left" + } + ], + "x": 12, + "y": 11 + }, + { + "moves": [ + { + "count": 4, + "dir": "up" + }, + { + "count": 10, + "dir": "left" + } + ], + "x": 12, + "y": 13 + }, + { + "moves": [ + { + "count": 2, + "dir": "right" + }, + { + "count": 2, + "dir": "up" + } + ], + "x": 12, + "y": 17 + }, + { + "moves": [ + { + "count": 2, + "dir": "down" + }, + { + "count": 1, + "dir": "right" + } + ], + "x": 13, + "y": 10 + }, + { + "moves": [ + { + "count": 1, + "dir": "right" + } + ], + "x": 13, + "y": 12 + }, + { + "moves": [ + { + "count": 2, + "dir": "right" + }, + { + "count": 2, + "dir": "down" + } + ], + "x": 13, + "y": 16 + }, + { + "moves": [ + { + "count": 2, + "dir": "left" + }, + { + "count": 2, + "dir": "down" + } + ], + "x": 13, + "y": 18 + }, + { + "moves": [ + { + "count": 3, + "dir": "left" + }, + { + "count": 2, + "dir": "up" + }, + { + "count": 4, + "dir": "right" + }, + { + "count": 2, + "dir": "up" + } + ], + "x": 13, + "y": 19 + }, + { + "moves": [ + { + "count": 4, + "dir": "left" + }, + { + "count": 2, + "dir": "down" + } + ], + "x": 13, + "y": 22 + }, + { + "moves": [ + { + "count": 5, + "dir": "left" + }, + { + "count": 4, + "dir": "up" + }, + { + "count": 6, + "dir": "left" + } + ], + "x": 13, + "y": 23 + }, + { + "moves": [ + { + "count": 2, + "dir": "up" + } + ], + "x": 14, + "y": 17 + }, + { + "moves": [ + { + "count": 2, + "dir": "down" + } + ], + "x": 15, + "y": 16 + }, + { + "moves": [ + { + "count": 1, + "dir": "up" + } + ], + "x": 16, + "y": 14 + }, + { + "moves": [ + { + "count": 3, + "dir": "up" + } + ], + "x": 16, + "y": 16 + }, + { + "moves": [ + { + "count": 5, + "dir": "up" + } + ], + "x": 16, + "y": 18 + }, + { + "moves": [ + { + "count": 4, + "dir": "left" + }, + { + "count": 2, + "dir": "down" + }, + { + "count": 1, + "dir": "right" + } + ], + "x": 17, + "y": 10 + }, + { + "moves": [ + { + "count": 5, + "dir": "left" + }, + { + "count": 2, + "dir": "up" + }, + { + "count": 10, + "dir": "left" + } + ], + "x": 17, + "y": 11 + } + ], + "ROCKET_HIDEOUT_B3F": [ + { + "moves": [ + { + "count": 4, + "dir": "right" + } + ], + "x": 10, + "y": 13 + }, + { + "moves": [ + { + "count": 4, + "dir": "right" + }, + { + "count": 4, + "dir": "up" + }, + { + "count": 4, + "dir": "right" + } + ], + "x": 10, + "y": 19 + }, + { + "moves": [ + { + "count": 4, + "dir": "right" + }, + { + "count": 4, + "dir": "down" + } + ], + "x": 11, + "y": 18 + }, + { + "moves": [ + { + "count": 2, + "dir": "left" + } + ], + "x": 12, + "y": 11 + }, + { + "moves": [ + { + "count": 2, + "dir": "right" + }, + { + "count": 2, + "dir": "up" + }, + { + "count": 4, + "dir": "right" + } + ], + "x": 12, + "y": 17 + }, + { + "moves": [ + { + "count": 3, + "dir": "up" + }, + { + "count": 2, + "dir": "right" + }, + { + "count": 2, + "dir": "up" + }, + { + "count": 4, + "dir": "right" + } + ], + "x": 12, + "y": 20 + }, + { + "moves": [ + { + "count": 4, + "dir": "right" + } + ], + "x": 13, + "y": 16 + }, + { + "moves": [ + { + "count": 2, + "dir": "right" + } + ], + "x": 14, + "y": 11 + }, + { + "moves": [ + { + "count": 4, + "dir": "right" + } + ], + "x": 14, + "y": 15 + }, + { + "moves": [ + { + "count": 2, + "dir": "up" + }, + { + "count": 4, + "dir": "right" + } + ], + "x": 14, + "y": 17 + }, + { + "moves": [ + { + "count": 4, + "dir": "up" + }, + { + "count": 4, + "dir": "right" + } + ], + "x": 14, + "y": 19 + }, + { + "moves": [ + { + "count": 2, + "dir": "right" + } + ], + "x": 15, + "y": 16 + }, + { + "moves": [ + { + "count": 4, + "dir": "down" + } + ], + "x": 15, + "y": 18 + }, + { + "moves": [ + { + "count": 2, + "dir": "up" + } + ], + "x": 16, + "y": 13 + }, + { + "moves": [ + { + "count": 4, + "dir": "down" + } + ], + "x": 17, + "y": 12 + }, + { + "moves": [ + { + "count": 1, + "dir": "up" + } + ], + "x": 18, + "y": 16 + } + ], + "VIRIDIAN_GYM": [ + { + "moves": [ + { + "count": 9, + "dir": "up" + } + ], + "x": 19, + "y": 11 + }, + { + "moves": [ + { + "count": 8, + "dir": "left" + } + ], + "x": 19, + "y": 1 + }, + { + "moves": [ + { + "count": 9, + "dir": "down" + } + ], + "x": 18, + "y": 2 + }, + { + "moves": [ + { + "count": 6, + "dir": "right" + } + ], + "x": 11, + "y": 2 + }, + { + "moves": [ + { + "count": 2, + "dir": "down" + } + ], + "x": 16, + "y": 10 + }, + { + "moves": [ + { + "count": 7, + "dir": "down" + } + ], + "x": 4, + "y": 6 + }, + { + "moves": [ + { + "count": 8, + "dir": "right" + } + ], + "x": 5, + "y": 13 + }, + { + "moves": [ + { + "count": 9, + "dir": "right" + } + ], + "x": 4, + "y": 14 + }, + { + "moves": [ + { + "count": 8, + "dir": "up" + } + ], + "x": 0, + "y": 15 + }, + { + "moves": [ + { + "count": 6, + "dir": "up" + } + ], + "x": 1, + "y": 15 + }, + { + "moves": [ + { + "count": 6, + "dir": "left" + } + ], + "x": 13, + "y": 16 + }, + { + "moves": [ + { + "count": 12, + "dir": "left" + } + ], + "x": 13, + "y": 17 + } + ] + }, + "superRod": { + "CELADON_CITY": [ + { + "level": 23, + "species": "POLIWHIRL" + }, + { + "level": 15, + "species": "SLOWPOKE" + } + ], + "CERULEAN_CAVE_1F": [ + { + "level": 23, + "species": "SLOWBRO" + }, + { + "level": 23, + "species": "SEAKING" + }, + { + "level": 23, + "species": "KINGLER" + }, + { + "level": 23, + "species": "SEADRA" + } + ], + "CERULEAN_CAVE_2F": [ + { + "level": 23, + "species": "SLOWBRO" + }, + { + "level": 23, + "species": "SEAKING" + }, + { + "level": 23, + "species": "KINGLER" + }, + { + "level": 23, + "species": "SEADRA" + } + ], + "CERULEAN_CAVE_B1F": [ + { + "level": 23, + "species": "SLOWBRO" + }, + { + "level": 23, + "species": "SEAKING" + }, + { + "level": 23, + "species": "KINGLER" + }, + { + "level": 23, + "species": "SEADRA" + } + ], + "CERULEAN_CITY": [ + { + "level": 15, + "species": "PSYDUCK" + }, + { + "level": 15, + "species": "GOLDEEN" + }, + { + "level": 15, + "species": "KRABBY" + } + ], + "CERULEAN_GYM": [ + { + "level": 15, + "species": "PSYDUCK" + }, + { + "level": 15, + "species": "GOLDEEN" + }, + { + "level": 15, + "species": "KRABBY" + } + ], + "CINNABAR_ISLAND": [ + { + "level": 15, + "species": "STARYU" + }, + { + "level": 15, + "species": "HORSEA" + }, + { + "level": 15, + "species": "SHELLDER" + }, + { + "level": 15, + "species": "GOLDEEN" + } + ], + "FUCHSIA_CITY": [ + { + "level": 23, + "species": "SEAKING" + }, + { + "level": 15, + "species": "KRABBY" + }, + { + "level": 15, + "species": "GOLDEEN" + }, + { + "level": 15, + "species": "MAGIKARP" + } + ], + "PALLET_TOWN": [ + { + "level": 15, + "species": "TENTACOOL" + }, + { + "level": 15, + "species": "POLIWAG" + } + ], + "ROUTE_10": [ + { + "level": 23, + "species": "POLIWHIRL" + }, + { + "level": 15, + "species": "SLOWPOKE" + } + ], + "ROUTE_11": [ + { + "level": 15, + "species": "KRABBY" + }, + { + "level": 15, + "species": "SHELLDER" + } + ], + "ROUTE_12": [ + { + "level": 5, + "species": "TENTACOOL" + }, + { + "level": 15, + "species": "KRABBY" + }, + { + "level": 15, + "species": "GOLDEEN" + }, + { + "level": 15, + "species": "MAGIKARP" + } + ], + "ROUTE_13": [ + { + "level": 5, + "species": "TENTACOOL" + }, + { + "level": 15, + "species": "KRABBY" + }, + { + "level": 15, + "species": "GOLDEEN" + }, + { + "level": 15, + "species": "MAGIKARP" + } + ], + "ROUTE_17": [ + { + "level": 5, + "species": "TENTACOOL" + }, + { + "level": 15, + "species": "KRABBY" + }, + { + "level": 15, + "species": "GOLDEEN" + }, + { + "level": 15, + "species": "MAGIKARP" + } + ], + "ROUTE_18": [ + { + "level": 5, + "species": "TENTACOOL" + }, + { + "level": 15, + "species": "KRABBY" + }, + { + "level": 15, + "species": "GOLDEEN" + }, + { + "level": 15, + "species": "MAGIKARP" + } + ], + "ROUTE_19": [ + { + "level": 15, + "species": "STARYU" + }, + { + "level": 15, + "species": "HORSEA" + }, + { + "level": 15, + "species": "SHELLDER" + }, + { + "level": 15, + "species": "GOLDEEN" + } + ], + "ROUTE_20": [ + { + "level": 15, + "species": "STARYU" + }, + { + "level": 15, + "species": "HORSEA" + }, + { + "level": 15, + "species": "SHELLDER" + }, + { + "level": 15, + "species": "GOLDEEN" + } + ], + "ROUTE_21": [ + { + "level": 15, + "species": "STARYU" + }, + { + "level": 15, + "species": "HORSEA" + }, + { + "level": 15, + "species": "SHELLDER" + }, + { + "level": 15, + "species": "GOLDEEN" + } + ], + "ROUTE_22": [ + { + "level": 15, + "species": "GOLDEEN" + }, + { + "level": 15, + "species": "POLIWAG" + } + ], + "ROUTE_23": [ + { + "level": 23, + "species": "SLOWBRO" + }, + { + "level": 23, + "species": "SEAKING" + }, + { + "level": 23, + "species": "KINGLER" + }, + { + "level": 23, + "species": "SEADRA" + } + ], + "ROUTE_24": [ + { + "level": 15, + "species": "PSYDUCK" + }, + { + "level": 15, + "species": "GOLDEEN" + }, + { + "level": 15, + "species": "KRABBY" + } + ], + "ROUTE_25": [ + { + "level": 15, + "species": "PSYDUCK" + }, + { + "level": 15, + "species": "GOLDEEN" + }, + { + "level": 15, + "species": "KRABBY" + } + ], + "ROUTE_4": [ + { + "level": 15, + "species": "PSYDUCK" + }, + { + "level": 15, + "species": "GOLDEEN" + }, + { + "level": 15, + "species": "KRABBY" + } + ], + "ROUTE_6": [ + { + "level": 15, + "species": "KRABBY" + }, + { + "level": 15, + "species": "SHELLDER" + } + ], + "SAFARI_ZONE_CENTER": [ + { + "level": 15, + "species": "DRATINI" + }, + { + "level": 15, + "species": "KRABBY" + }, + { + "level": 15, + "species": "PSYDUCK" + }, + { + "level": 15, + "species": "SLOWPOKE" + } + ], + "SAFARI_ZONE_EAST": [ + { + "level": 15, + "species": "DRATINI" + }, + { + "level": 15, + "species": "KRABBY" + }, + { + "level": 15, + "species": "PSYDUCK" + }, + { + "level": 15, + "species": "SLOWPOKE" + } + ], + "SAFARI_ZONE_NORTH": [ + { + "level": 15, + "species": "DRATINI" + }, + { + "level": 15, + "species": "KRABBY" + }, + { + "level": 15, + "species": "PSYDUCK" + }, + { + "level": 15, + "species": "SLOWPOKE" + } + ], + "SAFARI_ZONE_WEST": [ + { + "level": 15, + "species": "DRATINI" + }, + { + "level": 15, + "species": "KRABBY" + }, + { + "level": 15, + "species": "PSYDUCK" + }, + { + "level": 15, + "species": "SLOWPOKE" + } + ], + "SEAFOAM_ISLANDS_B3F": [ + { + "level": 15, + "species": "STARYU" + }, + { + "level": 15, + "species": "HORSEA" + }, + { + "level": 15, + "species": "SHELLDER" + }, + { + "level": 15, + "species": "GOLDEEN" + } + ], + "SEAFOAM_ISLANDS_B4F": [ + { + "level": 15, + "species": "STARYU" + }, + { + "level": 15, + "species": "HORSEA" + }, + { + "level": 15, + "species": "SHELLDER" + }, + { + "level": 15, + "species": "GOLDEEN" + } + ], + "VERMILION_CITY": [ + { + "level": 15, + "species": "KRABBY" + }, + { + "level": 15, + "species": "SHELLDER" + } + ], + "VERMILION_DOCK": [ + { + "level": 15, + "species": "KRABBY" + }, + { + "level": 15, + "species": "SHELLDER" + } + ], + "VIRIDIAN_CITY": [ + { + "level": 15, + "species": "TENTACOOL" + }, + { + "level": 15, + "species": "POLIWAG" + } + ] + }, + "tilePairs": { + "land": [ + { + "a": 32, + "b": 5, + "tileset": "CAVERN" + }, + { + "a": 65, + "b": 5, + "tileset": "CAVERN" + }, + { + "a": 48, + "b": 46, + "tileset": "FOREST" + }, + { + "a": 42, + "b": 5, + "tileset": "CAVERN" + }, + { + "a": 5, + "b": 33, + "tileset": "CAVERN" + }, + { + "a": 82, + "b": 46, + "tileset": "FOREST" + }, + { + "a": 85, + "b": 46, + "tileset": "FOREST" + }, + { + "a": 86, + "b": 46, + "tileset": "FOREST" + }, + { + "a": 32, + "b": 46, + "tileset": "FOREST" + }, + { + "a": 94, + "b": 46, + "tileset": "FOREST" + }, + { + "a": 95, + "b": 46, + "tileset": "FOREST" + } + ], + "water": [ + { + "a": 20, + "b": 46, + "tileset": "FOREST" + }, + { + "a": 72, + "b": 46, + "tileset": "FOREST" + }, + { + "a": 20, + "b": 5, + "tileset": "CAVERN" + } + ] + }, + "title": { + "copyright": { + "height": 8, + "path": "assets/generated/title/copyright.png", + "width": 152 + }, + "cycleSpecies": [], + "gamefreakInc": { + "height": 8, + "path": "assets/generated/title/gamefreak_inc.png", + "width": 72 + }, + "layout": "yellow_pikachu", + "logo": { + "height": 56, + "path": "assets/generated/title/pokemon_logo.png", + "width": 128 + }, + "music": "Music_TitleScreen", + "pikaBubble": { + "height": 32, + "path": "assets/generated/title/pika_bubble.png", + "width": 56 + }, + "pikachu": { + "height": 72, + "path": "assets/generated/title/pikachu.png", + "width": 96 + }, + "pikachuBg": { + "height": 32, + "path": "assets/generated/title/pikachu_bg.png", + "width": 128 + }, + "pikachuOb": { + "height": 8, + "path": "assets/generated/title/pikachu_ob.png", + "width": 96 + }, + "player": { + "height": 56, + "path": "assets/generated/title/player.png", + "width": 40 + }, + "version": { + "height": 8, + "path": "assets/generated/title/red_version.png", + "width": 80 + } + }, + "townMap": { + "background": { + "cursor": { + "height": 16, + "path": "assets/generated/townmap/cursor.png", + "width": 16 + }, + "map": [ + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 8, + 4, + 4, + 4, + 4, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 6, + 8, + 4, + 4, + 6, + 6, + 5, + 6, + 6, + 6, + 6, + 7, + 12, + 7, + 7, + 7, + 5, + 7, + 7, + 7, + 7, + 6, + 6, + 4, + 6, + 6, + 7, + 6, + 5, + 7, + 7, + 7, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 12, + 6, + 11, + 4, + 6, + 6, + 12, + 6, + 12, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 7, + 11, + 4, + 4, + 6, + 6, + 7, + 6, + 7, + 6, + 7, + 7, + 7, + 5, + 7, + 7, + 5, + 7, + 7, + 7, + 5, + 4, + 4, + 4, + 6, + 6, + 7, + 6, + 7, + 6, + 7, + 6, + 6, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 7, + 4, + 4, + 4, + 6, + 6, + 7, + 6, + 7, + 6, + 7, + 11, + 10, + 6, + 6, + 6, + 7, + 6, + 6, + 6, + 7, + 4, + 4, + 4, + 6, + 6, + 7, + 7, + 5, + 6, + 7, + 4, + 4, + 4, + 10, + 6, + 7, + 6, + 6, + 6, + 7, + 4, + 4, + 4, + 6, + 11, + 10, + 6, + 7, + 6, + 7, + 6, + 4, + 4, + 4, + 6, + 5, + 7, + 7, + 7, + 7, + 9, + 4, + 4, + 11, + 4, + 4, + 6, + 7, + 6, + 7, + 11, + 4, + 4, + 4, + 10, + 6, + 6, + 6, + 6, + 7, + 11, + 4, + 4, + 4, + 4, + 4, + 6, + 5, + 11, + 15, + 4, + 4, + 4, + 4, + 4, + 6, + 7, + 7, + 7, + 7, + 4, + 4, + 4, + 4, + 4, + 4, + 10, + 7, + 4, + 15, + 4, + 4, + 9, + 6, + 6, + 6, + 7, + 6, + 6, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 15, + 4, + 13, + 14, + 7, + 7, + 5, + 7, + 7, + 7, + 6, + 11, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 9, + 7, + 8, + 4, + 4, + 10, + 6, + 7, + 11, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 6, + 5, + 7, + 14, + 12, + 14, + 14, + 13, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + "tiles": { + "height": 32, + "path": "assets/generated/townmap/tiles.png", + "width": 32 + } + }, + "cursorOrder": [ + "PALLET_TOWN", + "ROUTE_1", + "VIRIDIAN_CITY", + "ROUTE_2", + "VIRIDIAN_FOREST", + "DIGLETTS_CAVE", + "PEWTER_CITY", + "ROUTE_3", + "MT_MOON_1F", + "ROUTE_4", + "CERULEAN_CITY", + "ROUTE_24", + "ROUTE_25", + "BILLS_HOUSE", + "ROUTE_5", + "ROUTE_6", + "VERMILION_CITY", + "SS_ANNE_1F", + "ROUTE_9", + "ROCK_TUNNEL_POKECENTER", + "ROUTE_10", + "LAVENDER_TOWN", + "POKEMON_TOWER_2F", + "ROUTE_8", + "ROUTE_7", + "CELADON_CITY", + "SAFFRON_CITY", + "ROUTE_11", + "ROUTE_12", + "ROUTE_13", + "ROUTE_14", + "ROUTE_15", + "ROUTE_16", + "ROUTE_17", + "ROUTE_18", + "FUCHSIA_CITY", + "SAFARI_ZONE_EAST", + "ROUTE_19", + "SEAFOAM_ISLANDS_B1F", + "ROUTE_20", + "CINNABAR_ISLAND", + "ROUTE_21", + "ROUTE_22", + "ROUTE_23", + "VICTORY_ROAD_3F", + "INDIGO_PLATEAU", + "POWER_PLANT" + ], + "gridPixelSize": 8, + "locations": { + "AGATHAS_ROOM": { + "name": "POKéMON LEAGUE", + "x": 0, + "y": 2 + }, + "BIKE_SHOP": { + "name": "CERULEAN CITY", + "x": 10, + "y": 2 + }, + "BILLS_HOUSE": { + "name": "SEA COTTAGE", + "x": 12, + "y": 0 + }, + "BLUES_HOUSE": { + "name": "PALLET TOWN", + "x": 2, + "y": 11 + }, + "BRUNOS_ROOM": { + "name": "POKéMON LEAGUE", + "x": 0, + "y": 2 + }, + "CELADON_CHIEF_HOUSE": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_CITY": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_DINER": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_GYM": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_HOTEL": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_MANSION_1F": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_MANSION_2F": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_MANSION_3F": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_MANSION_ROOF": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_MANSION_ROOF_HOUSE": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_MART_1F": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_MART_2F": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_MART_3F": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_MART_4F": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_MART_5F": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_MART_ELEVATOR": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_MART_ROOF": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CELADON_POKECENTER": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "CERULEAN_BADGE_HOUSE": { + "name": "CERULEAN CITY", + "x": 10, + "y": 2 + }, + "CERULEAN_CAVE_1F": { + "name": "CERULEAN CAVE", + "x": 9, + "y": 1 + }, + "CERULEAN_CAVE_2F": { + "name": "CERULEAN CAVE", + "x": 9, + "y": 1 + }, + "CERULEAN_CAVE_B1F": { + "name": "CERULEAN CAVE", + "x": 9, + "y": 1 + }, + "CERULEAN_CITY": { + "name": "CERULEAN CITY", + "x": 10, + "y": 2 + }, + "CERULEAN_GYM": { + "name": "CERULEAN CITY", + "x": 10, + "y": 2 + }, + "CERULEAN_MART": { + "name": "CERULEAN CITY", + "x": 10, + "y": 2 + }, + "CERULEAN_MELANIES_HOUSE": { + "name": "CERULEAN CITY", + "x": 10, + "y": 2 + }, + "CERULEAN_POKECENTER": { + "name": "CERULEAN CITY", + "x": 10, + "y": 2 + }, + "CERULEAN_TRASHED_HOUSE": { + "name": "CERULEAN CITY", + "x": 10, + "y": 2 + }, + "CERULEAN_TRASHED_HOUSE_COPY": { + "name": "CERULEAN CITY", + "x": 10, + "y": 2 + }, + "CHAMPIONS_ROOM": { + "name": "POKéMON LEAGUE", + "x": 0, + "y": 2 + }, + "CINNABAR_GYM": { + "name": "CINNABAR ISLAND", + "x": 2, + "y": 15 + }, + "CINNABAR_ISLAND": { + "name": "CINNABAR ISLAND", + "x": 2, + "y": 15 + }, + "CINNABAR_LAB": { + "name": "CINNABAR ISLAND", + "x": 2, + "y": 15 + }, + "CINNABAR_LAB_FOSSIL_ROOM": { + "name": "CINNABAR ISLAND", + "x": 2, + "y": 15 + }, + "CINNABAR_LAB_METRONOME_ROOM": { + "name": "CINNABAR ISLAND", + "x": 2, + "y": 15 + }, + "CINNABAR_LAB_TRADE_ROOM": { + "name": "CINNABAR ISLAND", + "x": 2, + "y": 15 + }, + "CINNABAR_MART": { + "name": "CINNABAR ISLAND", + "x": 2, + "y": 15 + }, + "CINNABAR_MART_COPY": { + "name": "CINNABAR ISLAND", + "x": 2, + "y": 15 + }, + "CINNABAR_POKECENTER": { + "name": "CINNABAR ISLAND", + "x": 2, + "y": 15 + }, + "COLOSSEUM": { + "name": "POKéMON LEAGUE", + "x": 0, + "y": 2 + }, + "COPYCATS_HOUSE_1F": { + "name": "SAFFRON CITY", + "x": 10, + "y": 5 + }, + "COPYCATS_HOUSE_2F": { + "name": "SAFFRON CITY", + "x": 10, + "y": 5 + }, + "DAYCARE": { + "name": "ROUTE 5", + "x": 10, + "y": 4 + }, + "DIGLETTS_CAVE": { + "name": "DIGLETT's CAVE", + "x": 3, + "y": 4 + }, + "DIGLETTS_CAVE_ROUTE_11": { + "name": "ROUTE 11", + "x": 13, + "y": 9 + }, + "DIGLETTS_CAVE_ROUTE_2": { + "name": "ROUTE 2", + "x": 2, + "y": 6 + }, + "FIGHTING_DOJO": { + "name": "SAFFRON CITY", + "x": 10, + "y": 5 + }, + "FUCHSIA_BILLS_GRANDPAS_HOUSE": { + "name": "FUCHSIA CITY", + "x": 8, + "y": 13 + }, + "FUCHSIA_CITY": { + "name": "FUCHSIA CITY", + "x": 8, + "y": 13 + }, + "FUCHSIA_GOOD_ROD_HOUSE": { + "name": "FUCHSIA CITY", + "x": 8, + "y": 13 + }, + "FUCHSIA_GYM": { + "name": "FUCHSIA CITY", + "x": 8, + "y": 13 + }, + "FUCHSIA_MART": { + "name": "FUCHSIA CITY", + "x": 8, + "y": 13 + }, + "FUCHSIA_MEETING_ROOM": { + "name": "FUCHSIA CITY", + "x": 8, + "y": 13 + }, + "FUCHSIA_POKECENTER": { + "name": "FUCHSIA CITY", + "x": 8, + "y": 13 + }, + "GAME_CORNER": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "GAME_CORNER_PRIZE_ROOM": { + "name": "CELADON CITY", + "x": 7, + "y": 5 + }, + "HALL_OF_FAME": { + "name": "POKéMON LEAGUE", + "x": 0, + "y": 2 + }, + "INDIGO_PLATEAU": { + "name": "INDIGO PLATEAU", + "x": 0, + "y": 2 + }, + "INDIGO_PLATEAU_LOBBY": { + "name": "INDIGO PLATEAU", + "x": 0, + "y": 2 + }, + "LANCES_ROOM": { + "name": "POKéMON LEAGUE", + "x": 0, + "y": 2 + }, + "LAVENDER_CUBONE_HOUSE": { + "name": "LAVENDER TOWN", + "x": 14, + "y": 5 + }, + "LAVENDER_MART": { + "name": "LAVENDER TOWN", + "x": 14, + "y": 5 + }, + "LAVENDER_POKECENTER": { + "name": "LAVENDER TOWN", + "x": 14, + "y": 5 + }, + "LAVENDER_TOWN": { + "name": "LAVENDER TOWN", + "x": 14, + "y": 5 + }, + "LORELEIS_ROOM": { + "name": "POKéMON LEAGUE", + "x": 0, + "y": 2 + }, + "MR_FUJIS_HOUSE": { + "name": "LAVENDER TOWN", + "x": 14, + "y": 5 + }, + "MR_PSYCHICS_HOUSE": { + "name": "SAFFRON CITY", + "x": 10, + "y": 5 + }, + "MT_MOON_1F": { + "name": "MT.MOON", + "x": 6, + "y": 2 + }, + "MT_MOON_B1F": { + "name": "MT.MOON", + "x": 6, + "y": 2 + }, + "MT_MOON_B2F": { + "name": "MT.MOON", + "x": 6, + "y": 2 + }, + "MT_MOON_POKECENTER": { + "name": "ROUTE 4", + "x": 5, + "y": 2 + }, + "MUSEUM_1F": { + "name": "PEWTER CITY", + "x": 2, + "y": 3 + }, + "MUSEUM_2F": { + "name": "PEWTER CITY", + "x": 2, + "y": 3 + }, + "NAME_RATERS_HOUSE": { + "name": "LAVENDER TOWN", + "x": 14, + "y": 5 + }, + "OAKS_LAB": { + "name": "PALLET TOWN", + "x": 2, + "y": 11 + }, + "PALLET_TOWN": { + "name": "PALLET TOWN", + "x": 2, + "y": 11 + }, + "PEWTER_CITY": { + "name": "PEWTER CITY", + "x": 2, + "y": 3 + }, + "PEWTER_GYM": { + "name": "PEWTER CITY", + "x": 2, + "y": 3 + }, + "PEWTER_MART": { + "name": "PEWTER CITY", + "x": 2, + "y": 3 + }, + "PEWTER_NIDORAN_HOUSE": { + "name": "PEWTER CITY", + "x": 2, + "y": 3 + }, + "PEWTER_POKECENTER": { + "name": "PEWTER CITY", + "x": 2, + "y": 3 + }, + "PEWTER_SPEECH_HOUSE": { + "name": "PEWTER CITY", + "x": 2, + "y": 3 + }, + "POKEMON_FAN_CLUB": { + "name": "VERMILION CITY", + "x": 10, + "y": 9 + }, + "POKEMON_MANSION_1F": { + "name": "POKéMON MANSION", + "x": 2, + "y": 15 + }, + "POKEMON_MANSION_2F": { + "name": "POKéMON MANSION", + "x": 2, + "y": 15 + }, + "POKEMON_MANSION_3F": { + "name": "POKéMON MANSION", + "x": 2, + "y": 15 + }, + "POKEMON_MANSION_B1F": { + "name": "POKéMON MANSION", + "x": 2, + "y": 15 + }, + "POKEMON_TOWER_1F": { + "name": "POKéMON TOWER", + "x": 15, + "y": 5 + }, + "POKEMON_TOWER_2F": { + "name": "POKéMON TOWER", + "x": 15, + "y": 5 + }, + "POKEMON_TOWER_3F": { + "name": "POKéMON TOWER", + "x": 15, + "y": 5 + }, + "POKEMON_TOWER_4F": { + "name": "POKéMON TOWER", + "x": 15, + "y": 5 + }, + "POKEMON_TOWER_5F": { + "name": "POKéMON TOWER", + "x": 15, + "y": 5 + }, + "POKEMON_TOWER_6F": { + "name": "POKéMON TOWER", + "x": 15, + "y": 5 + }, + "POKEMON_TOWER_7F": { + "name": "POKéMON TOWER", + "x": 15, + "y": 5 + }, + "POWER_PLANT": { + "name": "POWER PLANT", + "x": 15, + "y": 4 + }, + "REDS_HOUSE_1F": { + "name": "PALLET TOWN", + "x": 2, + "y": 11 + }, + "REDS_HOUSE_2F": { + "name": "PALLET TOWN", + "x": 2, + "y": 11 + }, + "ROCKET_HIDEOUT_B1F": { + "name": "ROCKET HQ", + "x": 7, + "y": 5 + }, + "ROCKET_HIDEOUT_B2F": { + "name": "ROCKET HQ", + "x": 7, + "y": 5 + }, + "ROCKET_HIDEOUT_B3F": { + "name": "ROCKET HQ", + "x": 7, + "y": 5 + }, + "ROCKET_HIDEOUT_B4F": { + "name": "ROCKET HQ", + "x": 7, + "y": 5 + }, + "ROCKET_HIDEOUT_ELEVATOR": { + "name": "ROCKET HQ", + "x": 7, + "y": 5 + }, + "ROCK_TUNNEL_1F": { + "name": "ROCK TUNNEL", + "x": 14, + "y": 3 + }, + "ROCK_TUNNEL_B1F": { + "name": "ROCK TUNNEL", + "x": 14, + "y": 3 + }, + "ROCK_TUNNEL_POKECENTER": { + "name": "ROCK TUNNEL", + "x": 14, + "y": 3 + }, + "ROUTE_1": { + "name": "ROUTE 1", + "x": 2, + "y": 10 + }, + "ROUTE_10": { + "name": "ROUTE 10", + "x": 14, + "y": 4 + }, + "ROUTE_11": { + "name": "ROUTE 11", + "x": 12, + "y": 9 + }, + "ROUTE_11_GATE_1F": { + "name": "ROUTE 11", + "x": 13, + "y": 9 + }, + "ROUTE_11_GATE_2F": { + "name": "ROUTE 11", + "x": 13, + "y": 9 + }, + "ROUTE_12": { + "name": "ROUTE 12", + "x": 14, + "y": 9 + }, + "ROUTE_12_GATE_1F": { + "name": "ROUTE 12", + "x": 14, + "y": 7 + }, + "ROUTE_12_GATE_2F": { + "name": "ROUTE 12", + "x": 14, + "y": 7 + }, + "ROUTE_12_SUPER_ROD_HOUSE": { + "name": "ROUTE 12", + "x": 14, + "y": 10 + }, + "ROUTE_13": { + "name": "ROUTE 13", + "x": 13, + "y": 11 + }, + "ROUTE_14": { + "name": "ROUTE 14", + "x": 11, + "y": 12 + }, + "ROUTE_15": { + "name": "ROUTE 15", + "x": 10, + "y": 13 + }, + "ROUTE_15_GATE_1F": { + "name": "ROUTE 15", + "x": 9, + "y": 13 + }, + "ROUTE_15_GATE_2F": { + "name": "ROUTE 15", + "x": 9, + "y": 13 + }, + "ROUTE_16": { + "name": "ROUTE 16", + "x": 5, + "y": 5 + }, + "ROUTE_16_FLY_HOUSE": { + "name": "ROUTE 16", + "x": 4, + "y": 5 + }, + "ROUTE_16_GATE_1F": { + "name": "ROUTE 16", + "x": 4, + "y": 5 + }, + "ROUTE_16_GATE_2F": { + "name": "ROUTE 16", + "x": 4, + "y": 5 + }, + "ROUTE_17": { + "name": "ROUTE 17", + "x": 4, + "y": 8 + }, + "ROUTE_18": { + "name": "ROUTE 18", + "x": 6, + "y": 13 + }, + "ROUTE_18_GATE_1F": { + "name": "ROUTE 18", + "x": 7, + "y": 13 + }, + "ROUTE_18_GATE_2F": { + "name": "ROUTE 18", + "x": 7, + "y": 13 + }, + "ROUTE_19": { + "name": "SEA ROUTE 19", + "x": 6, + "y": 15 + }, + "ROUTE_2": { + "name": "ROUTE 2", + "x": 2, + "y": 6 + }, + "ROUTE_20": { + "name": "SEA ROUTE 20", + "x": 4, + "y": 15 + }, + "ROUTE_21": { + "name": "SEA ROUTE 21", + "x": 2, + "y": 13 + }, + "ROUTE_22": { + "name": "ROUTE 22", + "x": 0, + "y": 8 + }, + "ROUTE_22_GATE": { + "name": "ROUTE 22", + "x": 0, + "y": 7 + }, + "ROUTE_23": { + "name": "ROUTE 23", + "x": 0, + "y": 6 + }, + "ROUTE_24": { + "name": "ROUTE 24", + "x": 10, + "y": 1 + }, + "ROUTE_25": { + "name": "ROUTE 25", + "x": 11, + "y": 0 + }, + "ROUTE_2_GATE": { + "name": "ROUTE 2", + "x": 2, + "y": 6 + }, + "ROUTE_2_TRADE_HOUSE": { + "name": "ROUTE 2", + "x": 2, + "y": 6 + }, + "ROUTE_3": { + "name": "ROUTE 3", + "x": 4, + "y": 3 + }, + "ROUTE_4": { + "name": "ROUTE 4", + "x": 8, + "y": 2 + }, + "ROUTE_5": { + "name": "ROUTE 5", + "x": 10, + "y": 3 + }, + "ROUTE_5_GATE": { + "name": "ROUTE 5", + "x": 10, + "y": 4 + }, + "ROUTE_6": { + "name": "ROUTE 6", + "x": 10, + "y": 8 + }, + "ROUTE_6_GATE": { + "name": "ROUTE 6", + "x": 10, + "y": 6 + }, + "ROUTE_7": { + "name": "ROUTE 7", + "x": 8, + "y": 5 + }, + "ROUTE_7_GATE": { + "name": "ROUTE 7", + "x": 9, + "y": 5 + }, + "ROUTE_8": { + "name": "ROUTE 8", + "x": 13, + "y": 5 + }, + "ROUTE_8_GATE": { + "name": "ROUTE 8", + "x": 11, + "y": 5 + }, + "ROUTE_9": { + "name": "ROUTE 9", + "x": 13, + "y": 2 + }, + "SAFARI_ZONE_CENTER": { + "name": "SAFARI ZONE", + "x": 8, + "y": 12 + }, + "SAFARI_ZONE_CENTER_REST_HOUSE": { + "name": "SAFARI ZONE", + "x": 8, + "y": 12 + }, + "SAFARI_ZONE_EAST": { + "name": "SAFARI ZONE", + "x": 8, + "y": 12 + }, + "SAFARI_ZONE_EAST_REST_HOUSE": { + "name": "SAFARI ZONE", + "x": 8, + "y": 12 + }, + "SAFARI_ZONE_GATE": { + "name": "SAFARI ZONE", + "x": 8, + "y": 12 + }, + "SAFARI_ZONE_NORTH": { + "name": "SAFARI ZONE", + "x": 8, + "y": 12 + }, + "SAFARI_ZONE_NORTH_REST_HOUSE": { + "name": "SAFARI ZONE", + "x": 8, + "y": 12 + }, + "SAFARI_ZONE_SECRET_HOUSE": { + "name": "SAFARI ZONE", + "x": 8, + "y": 12 + }, + "SAFARI_ZONE_WEST": { + "name": "SAFARI ZONE", + "x": 8, + "y": 12 + }, + "SAFARI_ZONE_WEST_REST_HOUSE": { + "name": "SAFARI ZONE", + "x": 8, + "y": 12 + }, + "SAFFRON_CITY": { + "name": "SAFFRON CITY", + "x": 10, + "y": 5 + }, + "SAFFRON_GYM": { + "name": "SAFFRON CITY", + "x": 10, + "y": 5 + }, + "SAFFRON_MART": { + "name": "SAFFRON CITY", + "x": 10, + "y": 5 + }, + "SAFFRON_PIDGEY_HOUSE": { + "name": "SAFFRON CITY", + "x": 10, + "y": 5 + }, + "SAFFRON_POKECENTER": { + "name": "SAFFRON CITY", + "x": 10, + "y": 5 + }, + "SEAFOAM_ISLANDS_1F": { + "name": "SEAFOAM ISLANDS", + "x": 5, + "y": 15 + }, + "SEAFOAM_ISLANDS_B1F": { + "name": "SEAFOAM ISLANDS", + "x": 5, + "y": 15 + }, + "SEAFOAM_ISLANDS_B2F": { + "name": "SEAFOAM ISLANDS", + "x": 5, + "y": 15 + }, + "SEAFOAM_ISLANDS_B3F": { + "name": "SEAFOAM ISLANDS", + "x": 5, + "y": 15 + }, + "SEAFOAM_ISLANDS_B4F": { + "name": "SEAFOAM ISLANDS", + "x": 5, + "y": 15 + }, + "SILPH_CO_10F": { + "name": "SILPH CO.", + "x": 10, + "y": 5 + }, + "SILPH_CO_11F": { + "name": "SILPH CO.", + "x": 10, + "y": 5 + }, + "SILPH_CO_1F": { + "name": "SAFFRON CITY", + "x": 10, + "y": 5 + }, + "SILPH_CO_2F": { + "name": "SILPH CO.", + "x": 10, + "y": 5 + }, + "SILPH_CO_3F": { + "name": "SILPH CO.", + "x": 10, + "y": 5 + }, + "SILPH_CO_4F": { + "name": "SILPH CO.", + "x": 10, + "y": 5 + }, + "SILPH_CO_5F": { + "name": "SILPH CO.", + "x": 10, + "y": 5 + }, + "SILPH_CO_6F": { + "name": "SILPH CO.", + "x": 10, + "y": 5 + }, + "SILPH_CO_7F": { + "name": "SILPH CO.", + "x": 10, + "y": 5 + }, + "SILPH_CO_8F": { + "name": "SILPH CO.", + "x": 10, + "y": 5 + }, + "SILPH_CO_9F": { + "name": "SILPH CO.", + "x": 10, + "y": 5 + }, + "SILPH_CO_ELEVATOR": { + "name": "SILPH CO.", + "x": 10, + "y": 5 + }, + "SS_ANNE_1F": { + "name": "S.S.ANNE", + "x": 9, + "y": 10 + }, + "SS_ANNE_1F_ROOMS": { + "name": "S.S.ANNE", + "x": 9, + "y": 10 + }, + "SS_ANNE_2F": { + "name": "S.S.ANNE", + "x": 9, + "y": 10 + }, + "SS_ANNE_2F_ROOMS": { + "name": "S.S.ANNE", + "x": 9, + "y": 10 + }, + "SS_ANNE_3F": { + "name": "S.S.ANNE", + "x": 9, + "y": 10 + }, + "SS_ANNE_B1F": { + "name": "S.S.ANNE", + "x": 9, + "y": 10 + }, + "SS_ANNE_B1F_ROOMS": { + "name": "S.S.ANNE", + "x": 9, + "y": 10 + }, + "SS_ANNE_BOW": { + "name": "S.S.ANNE", + "x": 9, + "y": 10 + }, + "SS_ANNE_CAPTAINS_ROOM": { + "name": "S.S.ANNE", + "x": 9, + "y": 10 + }, + "SS_ANNE_KITCHEN": { + "name": "S.S.ANNE", + "x": 9, + "y": 10 + }, + "SUMMER_BEACH_HOUSE": { + "name": "SEA ROUTE 19", + "x": 6, + "y": 15 + }, + "TRADE_CENTER": { + "name": "POKéMON LEAGUE", + "x": 0, + "y": 2 + }, + "UNDERGROUND_PATH_NORTH_SOUTH": { + "name": "UNDERGROUND PATH", + "x": 10, + "y": 5 + }, + "UNDERGROUND_PATH_ROUTE_5": { + "name": "ROUTE 5", + "x": 10, + "y": 4 + }, + "UNDERGROUND_PATH_ROUTE_6": { + "name": "ROUTE 6", + "x": 10, + "y": 6 + }, + "UNDERGROUND_PATH_ROUTE_6_COPY": { + "name": "ROUTE 6", + "x": 10, + "y": 6 + }, + "UNDERGROUND_PATH_ROUTE_7": { + "name": "ROUTE 7", + "x": 9, + "y": 5 + }, + "UNDERGROUND_PATH_ROUTE_7_COPY": { + "name": "ROUTE 7", + "x": 9, + "y": 5 + }, + "UNDERGROUND_PATH_ROUTE_8": { + "name": "ROUTE 8", + "x": 11, + "y": 5 + }, + "UNDERGROUND_PATH_WEST_EAST": { + "name": "UNDERGROUND PATH", + "x": 10, + "y": 5 + }, + "VERMILION_CITY": { + "name": "VERMILION CITY", + "x": 10, + "y": 9 + }, + "VERMILION_DOCK": { + "name": "VERMILION CITY", + "x": 10, + "y": 9 + }, + "VERMILION_GYM": { + "name": "VERMILION CITY", + "x": 10, + "y": 9 + }, + "VERMILION_MART": { + "name": "VERMILION CITY", + "x": 10, + "y": 9 + }, + "VERMILION_OLD_ROD_HOUSE": { + "name": "VERMILION CITY", + "x": 10, + "y": 9 + }, + "VERMILION_PIDGEY_HOUSE": { + "name": "VERMILION CITY", + "x": 10, + "y": 9 + }, + "VERMILION_POKECENTER": { + "name": "VERMILION CITY", + "x": 10, + "y": 9 + }, + "VERMILION_TRADE_HOUSE": { + "name": "VERMILION CITY", + "x": 10, + "y": 9 + }, + "VICTORY_ROAD_1F": { + "name": "VICTORY ROAD", + "x": 0, + "y": 4 + }, + "VICTORY_ROAD_2F": { + "name": "VICTORY ROAD", + "x": 0, + "y": 4 + }, + "VICTORY_ROAD_3F": { + "name": "VICTORY ROAD", + "x": 0, + "y": 4 + }, + "VIRIDIAN_CITY": { + "name": "VIRIDIAN CITY", + "x": 2, + "y": 8 + }, + "VIRIDIAN_FOREST": { + "name": "VIRIDIAN FOREST", + "x": 2, + "y": 4 + }, + "VIRIDIAN_FOREST_NORTH_GATE": { + "name": "ROUTE 2", + "x": 2, + "y": 6 + }, + "VIRIDIAN_FOREST_SOUTH_GATE": { + "name": "ROUTE 2", + "x": 2, + "y": 6 + }, + "VIRIDIAN_GYM": { + "name": "VIRIDIAN CITY", + "x": 2, + "y": 8 + }, + "VIRIDIAN_MART": { + "name": "VIRIDIAN CITY", + "x": 2, + "y": 8 + }, + "VIRIDIAN_NICKNAME_HOUSE": { + "name": "VIRIDIAN CITY", + "x": 2, + "y": 8 + }, + "VIRIDIAN_POKECENTER": { + "name": "VIRIDIAN CITY", + "x": 2, + "y": 8 + }, + "VIRIDIAN_SCHOOL_HOUSE": { + "name": "VIRIDIAN CITY", + "x": 2, + "y": 8 + }, + "WARDENS_HOUSE": { + "name": "FUCHSIA CITY", + "x": 8, + "y": 13 + } + } + }, + "trades": [ + { + "dialogset": 1, + "get": "NIDORINA", + "give": "NIDORINO", + "nickname": "TERRY" + }, + { + "dialogset": 1, + "get": "MR_MIME", + "give": "ABRA", + "nickname": "MARCEL" + }, + { + "dialogset": 3, + "get": "BEEDRILL", + "give": "BUTTERFREE", + "nickname": "CHIKUCHIKU" + }, + { + "dialogset": 1, + "get": "SEEL", + "give": "PONYTA", + "nickname": "SAILOR" + }, + { + "dialogset": 3, + "get": "FARFETCHD", + "give": "SPEAROW", + "nickname": "DUX" + }, + { + "dialogset": 1, + "get": "LICKITUNG", + "give": "SLOWBRO", + "nickname": "MARC" + }, + { + "dialogset": 2, + "get": "JYNX", + "give": "POLIWHIRL", + "nickname": "LOLA" + }, + { + "dialogset": 2, + "get": "ELECTRODE", + "give": "RAICHU", + "nickname": "DORIS" + }, + { + "dialogset": 3, + "get": "TANGELA", + "give": "VENONAT", + "nickname": "CRINKLES" + }, + { + "dialogset": 3, + "get": "NIDORAN_F", + "give": "NIDORAN_M", + "nickname": "SPOT" + } + ], + "warpCarpets": { + "edgeMaps": [ + "SS_ANNE_3F" + ], + "function2Maps": [ + "ROCKET_HIDEOUT_B1F", + "ROCKET_HIDEOUT_B2F", + "ROCKET_HIDEOUT_B4F", + "ROCK_TUNNEL_1F" + ], + "function2Tilesets": [ + "OVERWORLD", + "SHIP", + "SHIP_PORT", + "PLATEAU" + ], + "ssAnneBow": { + "map": "SS_ANNE_BOW", + "tile": 21 + }, + "tiles": { + "down": [ + 1, + 18, + 23, + 61, + 4, + 24, + 51 + ], + "left": [ + 26, + 75 + ], + "right": [ + 15, + 78 + ], + "up": [ + 1, + 92 + ] + } + }, + "waterTilesets": [ + "OVERWORLD", + "FOREST", + "DOJO", + "GYM", + "SHIP", + "SHIP_PORT", + "CAVERN", + "FACILITY", + "PLATEAU" + ] + }, + "fontCharmap": [ + { + "code": 96, + "seq": "" + }, + { + "code": 97, + "seq": "" + }, + { + "code": 98, + "seq": "" + }, + { + "code": 99, + "seq": "" + }, + { + "code": 100, + "seq": "" + }, + { + "code": 101, + "seq": "" + }, + { + "code": 102, + "seq": "" + }, + { + "code": 103, + "seq": "" + }, + { + "code": 104, + "seq": "" + }, + { + "code": 107, + "seq": "" + }, + { + "code": 108, + "seq": "" + }, + { + "code": 114, + "seq": "" + }, + { + "code": 106, + "seq": "" + }, + { + "code": 105, + "seq": "" + }, + { + "code": 109, + "seq": "" + }, + { + "code": 242, + "seq": "" + }, + { + "code": 240, + "seq": "" + }, + { + "code": 115, + "seq": "" + }, + { + "code": 110, + "seq": "" + }, + { + "code": 226, + "seq": "" + }, + { + "code": 225, + "seq": "" + }, + { + "code": 112, + "seq": "" + }, + { + "code": 187, + "seq": "'d" + }, + { + "code": 188, + "seq": "'l" + }, + { + "code": 229, + "seq": "'m" + }, + { + "code": 228, + "seq": "'r" + }, + { + "code": 189, + "seq": "'s" + }, + { + "code": 190, + "seq": "'t" + }, + { + "code": 191, + "seq": "'v" + }, + { + "code": 127, + "seq": " " + }, + { + "code": 231, + "seq": "!" + }, + { + "code": 115, + "seq": "\"" + }, + { + "code": 224, + "seq": "'" + }, + { + "code": 154, + "seq": "(" + }, + { + "code": 155, + "seq": ")" + }, + { + "code": 244, + "seq": "," + }, + { + "code": 227, + "seq": "-" + }, + { + "code": 232, + "seq": "." + }, + { + "code": 243, + "seq": "/" + }, + { + "code": 246, + "seq": "0" + }, + { + "code": 247, + "seq": "1" + }, + { + "code": 248, + "seq": "2" + }, + { + "code": 249, + "seq": "3" + }, + { + "code": 250, + "seq": "4" + }, + { + "code": 251, + "seq": "5" + }, + { + "code": 252, + "seq": "6" + }, + { + "code": 253, + "seq": "7" + }, + { + "code": 254, + "seq": "8" + }, + { + "code": 255, + "seq": "9" + }, + { + "code": 156, + "seq": ":" + }, + { + "code": 157, + "seq": ";" + }, + { + "code": 230, + "seq": "?" + }, + { + "code": 128, + "seq": "A" + }, + { + "code": 129, + "seq": "B" + }, + { + "code": 130, + "seq": "C" + }, + { + "code": 131, + "seq": "D" + }, + { + "code": 132, + "seq": "E" + }, + { + "code": 133, + "seq": "F" + }, + { + "code": 134, + "seq": "G" + }, + { + "code": 135, + "seq": "H" + }, + { + "code": 136, + "seq": "I" + }, + { + "code": 137, + "seq": "J" + }, + { + "code": 138, + "seq": "K" + }, + { + "code": 139, + "seq": "L" + }, + { + "code": 140, + "seq": "M" + }, + { + "code": 141, + "seq": "N" + }, + { + "code": 142, + "seq": "O" + }, + { + "code": 143, + "seq": "P" + }, + { + "code": 144, + "seq": "Q" + }, + { + "code": 145, + "seq": "R" + }, + { + "code": 146, + "seq": "S" + }, + { + "code": 147, + "seq": "T" + }, + { + "code": 148, + "seq": "U" + }, + { + "code": 149, + "seq": "V" + }, + { + "code": 150, + "seq": "W" + }, + { + "code": 151, + "seq": "X" + }, + { + "code": 152, + "seq": "Y" + }, + { + "code": 153, + "seq": "Z" + }, + { + "code": 158, + "seq": "[" + }, + { + "code": 159, + "seq": "]" + }, + { + "code": 160, + "seq": "a" + }, + { + "code": 161, + "seq": "b" + }, + { + "code": 162, + "seq": "c" + }, + { + "code": 163, + "seq": "d" + }, + { + "code": 164, + "seq": "e" + }, + { + "code": 165, + "seq": "f" + }, + { + "code": 166, + "seq": "g" + }, + { + "code": 167, + "seq": "h" + }, + { + "code": 168, + "seq": "i" + }, + { + "code": 169, + "seq": "j" + }, + { + "code": 170, + "seq": "k" + }, + { + "code": 171, + "seq": "l" + }, + { + "code": 172, + "seq": "m" + }, + { + "code": 173, + "seq": "n" + }, + { + "code": 174, + "seq": "o" + }, + { + "code": 175, + "seq": "p" + }, + { + "code": 176, + "seq": "q" + }, + { + "code": 177, + "seq": "r" + }, + { + "code": 178, + "seq": "s" + }, + { + "code": 179, + "seq": "t" + }, + { + "code": 180, + "seq": "u" + }, + { + "code": 181, + "seq": "v" + }, + { + "code": 182, + "seq": "w" + }, + { + "code": 183, + "seq": "x" + }, + { + "code": 184, + "seq": "y" + }, + { + "code": 185, + "seq": "z" + }, + { + "code": 240, + "seq": "¥" + }, + { + "code": 116, + "seq": "·" + }, + { + "code": 241, + "seq": "×" + }, + { + "code": 186, + "seq": "é" + }, + { + "code": 112, + "seq": "‘" + }, + { + "code": 113, + "seq": "’" + }, + { + "code": 114, + "seq": "“" + }, + { + "code": 115, + "seq": "”" + }, + { + "code": 117, + "seq": "…" + }, + { + "code": 96, + "seq": "′" + }, + { + "code": 97, + "seq": "″" + }, + { + "code": 116, + "seq": "№" + }, + { + "code": 117, + "seq": "⋯" + }, + { + "code": 122, + "seq": "─" + }, + { + "code": 124, + "seq": "│" + }, + { + "code": 121, + "seq": "┌" + }, + { + "code": 123, + "seq": "┐" + }, + { + "code": 125, + "seq": "└" + }, + { + "code": 126, + "seq": "┘" + }, + { + "code": 237, + "seq": "▲" + }, + { + "code": 237, + "seq": "▶" + }, + { + "code": 236, + "seq": "▷" + }, + { + "code": 238, + "seq": "▼" + }, + { + "code": 245, + "seq": "♀" + }, + { + "code": 239, + "seq": "♂" + }, + { + "code": 127, + "seq": " " + }, + { + "code": 232, + "seq": "。" + }, + { + "code": 112, + "seq": "「" + }, + { + "code": 113, + "seq": "」" + }, + { + "code": 114, + "seq": "『" + }, + { + "code": 115, + "seq": "』" + }, + { + "code": 118, + "seq": "ぁ" + }, + { + "code": 177, + "seq": "あ" + }, + { + "code": 110, + "seq": "ぃ" + }, + { + "code": 178, + "seq": "い" + }, + { + "code": 111, + "seq": "ぅ" + }, + { + "code": 179, + "seq": "う" + }, + { + "code": 119, + "seq": "ぇ" + }, + { + "code": 180, + "seq": "え" + }, + { + "code": 120, + "seq": "ぉ" + }, + { + "code": 181, + "seq": "お" + }, + { + "code": 182, + "seq": "か" + }, + { + "code": 183, + "seq": "き" + }, + { + "code": 184, + "seq": "く" + }, + { + "code": 185, + "seq": "け" + }, + { + "code": 186, + "seq": "こ" + }, + { + "code": 187, + "seq": "さ" + }, + { + "code": 188, + "seq": "し" + }, + { + "code": 189, + "seq": "す" + }, + { + "code": 190, + "seq": "せ" + }, + { + "code": 191, + "seq": "そ" + }, + { + "code": 192, + "seq": "た" + }, + { + "code": 193, + "seq": "ち" + }, + { + "code": 223, + "seq": "っ" + }, + { + "code": 194, + "seq": "つ" + }, + { + "code": 195, + "seq": "て" + }, + { + "code": 196, + "seq": "と" + }, + { + "code": 197, + "seq": "な" + }, + { + "code": 198, + "seq": "に" + }, + { + "code": 199, + "seq": "ぬ" + }, + { + "code": 200, + "seq": "ね" + }, + { + "code": 201, + "seq": "の" + }, + { + "code": 202, + "seq": "は" + }, + { + "code": 203, + "seq": "ひ" + }, + { + "code": 204, + "seq": "ふ" + }, + { + "code": 205, + "seq": "へ" + }, + { + "code": 206, + "seq": "ほ" + }, + { + "code": 207, + "seq": "ま" + }, + { + "code": 208, + "seq": "み" + }, + { + "code": 209, + "seq": "む" + }, + { + "code": 210, + "seq": "め" + }, + { + "code": 211, + "seq": "も" + }, + { + "code": 224, + "seq": "ゃ" + }, + { + "code": 212, + "seq": "や" + }, + { + "code": 225, + "seq": "ゅ" + }, + { + "code": 213, + "seq": "ゆ" + }, + { + "code": 226, + "seq": "ょ" + }, + { + "code": 214, + "seq": "よ" + }, + { + "code": 215, + "seq": "ら" + }, + { + "code": 216, + "seq": "り" + }, + { + "code": 217, + "seq": "る" + }, + { + "code": 218, + "seq": "れ" + }, + { + "code": 219, + "seq": "ろ" + }, + { + "code": 220, + "seq": "わ" + }, + { + "code": 221, + "seq": "を" + }, + { + "code": 222, + "seq": "ん" + }, + { + "code": 233, + "seq": "ァ" + }, + { + "code": 128, + "seq": "ア" + }, + { + "code": 176, + "seq": "ィ" + }, + { + "code": 129, + "seq": "イ" + }, + { + "code": 234, + "seq": "ゥ" + }, + { + "code": 130, + "seq": "ウ" + }, + { + "code": 235, + "seq": "ェ" + }, + { + "code": 131, + "seq": "エ" + }, + { + "code": 244, + "seq": "ォ" + }, + { + "code": 132, + "seq": "オ" + }, + { + "code": 133, + "seq": "カ" + }, + { + "code": 134, + "seq": "キ" + }, + { + "code": 135, + "seq": "ク" + }, + { + "code": 136, + "seq": "ケ" + }, + { + "code": 137, + "seq": "コ" + }, + { + "code": 138, + "seq": "サ" + }, + { + "code": 139, + "seq": "シ" + }, + { + "code": 140, + "seq": "ス" + }, + { + "code": 141, + "seq": "セ" + }, + { + "code": 142, + "seq": "ソ" + }, + { + "code": 143, + "seq": "タ" + }, + { + "code": 144, + "seq": "チ" + }, + { + "code": 172, + "seq": "ッ" + }, + { + "code": 145, + "seq": "ツ" + }, + { + "code": 146, + "seq": "テ" + }, + { + "code": 147, + "seq": "ト" + }, + { + "code": 148, + "seq": "ナ" + }, + { + "code": 149, + "seq": "ニ" + }, + { + "code": 150, + "seq": "ヌ" + }, + { + "code": 151, + "seq": "ネ" + }, + { + "code": 152, + "seq": "ノ" + }, + { + "code": 153, + "seq": "ハ" + }, + { + "code": 154, + "seq": "ヒ" + }, + { + "code": 155, + "seq": "フ" + }, + { + "code": 156, + "seq": "ホ" + }, + { + "code": 157, + "seq": "マ" + }, + { + "code": 158, + "seq": "ミ" + }, + { + "code": 159, + "seq": "ム" + }, + { + "code": 160, + "seq": "メ" + }, + { + "code": 161, + "seq": "モ" + }, + { + "code": 173, + "seq": "ャ" + }, + { + "code": 162, + "seq": "ヤ" + }, + { + "code": 174, + "seq": "ュ" + }, + { + "code": 163, + "seq": "ユ" + }, + { + "code": 175, + "seq": "ョ" + }, + { + "code": 164, + "seq": "ヨ" + }, + { + "code": 165, + "seq": "ラ" + }, + { + "code": 166, + "seq": "ル" + }, + { + "code": 167, + "seq": "レ" + }, + { + "code": 168, + "seq": "ロ" + }, + { + "code": 169, + "seq": "ワ" + }, + { + "code": 170, + "seq": "ヲ" + }, + { + "code": 171, + "seq": "ン" + }, + { + "code": 227, + "seq": "ー" + }, + { + "code": 240, + "seq": "円" + }, + { + "code": 231, + "seq": "!" + }, + { + "code": 242, + "seq": "." + }, + { + "code": 243, + "seq": "/" + }, + { + "code": 246, + "seq": "0" + }, + { + "code": 247, + "seq": "1" + }, + { + "code": 248, + "seq": "2" + }, + { + "code": 249, + "seq": "3" + }, + { + "code": 250, + "seq": "4" + }, + { + "code": 251, + "seq": "5" + }, + { + "code": 252, + "seq": "6" + }, + { + "code": 253, + "seq": "7" + }, + { + "code": 254, + "seq": "8" + }, + { + "code": 255, + "seq": "9" + }, + { + "code": 230, + "seq": "?" + }, + { + "code": 229, + "seq": "゙" + }, + { + "code": 228, + "seq": "゚" + } + ], + "format": 2, + "growthRates": [ + "MEDIUM_FAST", + "SLIGHTLY_FAST", + "SLIGHTLY_SLOW", + "MEDIUM_SLOW", + "FAST", + "SLOW" + ], + "hms": [ + "CUT", + "FLY", + "SURF", + "STRENGTH", + "FLASH" + ], + "iconOrder": [ + "MON", + "BALL", + "HELIX", + "FAIRY", + "BIRD", + "WATER", + "BUG", + "GRASS", + "SNAKE", + "QUADRUPED", + "PIKACHU" + ], + "items": [ + "MASTER_BALL", + "ULTRA_BALL", + "GREAT_BALL", + "POKE_BALL", + "TOWN_MAP", + "BICYCLE", + "SURFBOARD", + "SAFARI_BALL", + "POKEDEX", + "MOON_STONE", + "ANTIDOTE", + "BURN_HEAL", + "ICE_HEAL", + "AWAKENING", + "PARLYZ_HEAL", + "FULL_RESTORE", + "MAX_POTION", + "HYPER_POTION", + "SUPER_POTION", + "POTION", + "BOULDERBADGE", + "CASCADEBADGE", + "THUNDERBADGE", + "RAINBOWBADGE", + "SOULBADGE", + "MARSHBADGE", + "VOLCANOBADGE", + "EARTHBADGE", + "ESCAPE_ROPE", + "REPEL", + "OLD_AMBER", + "FIRE_STONE", + "THUNDER_STONE", + "WATER_STONE", + "HP_UP", + "PROTEIN", + "IRON", + "CARBOS", + "CALCIUM", + "RARE_CANDY", + "DOME_FOSSIL", + "HELIX_FOSSIL", + "SECRET_KEY", + "ITEM_2C", + "BIKE_VOUCHER", + "X_ACCURACY", + "LEAF_STONE", + "CARD_KEY", + "NUGGET", + "ITEM_32", + "POKE_DOLL", + "FULL_HEAL", + "REVIVE", + "MAX_REVIVE", + "GUARD_SPEC", + "SUPER_REPEL", + "MAX_REPEL", + "DIRE_HIT", + "COIN", + "FRESH_WATER", + "SODA_POP", + "LEMONADE", + "S_S_TICKET", + "GOLD_TEETH", + "X_ATTACK", + "X_DEFEND", + "X_SPEED", + "X_SPECIAL", + "COIN_CASE", + "OAKS_PARCEL", + "ITEMFINDER", + "SILPH_SCOPE", + "POKE_FLUTE", + "LIFT_KEY", + "EXP_ALL", + "OLD_ROD", + "GOOD_ROD", + "SUPER_ROD", + "PP_UP", + "ETHER", + "MAX_ETHER", + "ELIXER", + "MAX_ELIXER", + "FLOOR_B2F", + "FLOOR_B1F", + "FLOOR_1F", + "FLOOR_2F", + "FLOOR_3F", + "FLOOR_4F", + "FLOOR_5F", + "FLOOR_6F", + "FLOOR_7F", + "FLOOR_8F", + "FLOOR_9F", + "FLOOR_10F", + "FLOOR_11F", + "FLOOR_B4F" + ], + "maps": { + "AGATHAS_ROOM": { + "blockLength": 30, + "label": "AgathasRoom", + "objects": [ + { + "name": "AGATHASROOM_AGATHA", + "text": "TEXT_AGATHASROOM_AGATHA", + "trainerClass": "OPP_AGATHA", + "trainerParty": 1 + } + ], + "signTexts": [] + }, + "BIKE_SHOP": { + "blockLength": 16, + "label": "BikeShop", + "objects": [ + { + "name": "BIKESHOP_CLERK", + "text": "TEXT_BIKESHOP_CLERK" + }, + { + "name": "BIKESHOP_MIDDLE_AGED_WOMAN", + "text": "TEXT_BIKESHOP_MIDDLE_AGED_WOMAN" + }, + { + "name": "BIKESHOP_YOUNGSTER", + "text": "TEXT_BIKESHOP_YOUNGSTER" + } + ], + "signTexts": [] + }, + "BILLS_HOUSE": { + "blockLength": 16, + "label": "BillsHouse", + "objects": [ + { + "name": "BILLSHOUSE_BILL_POKEMON", + "text": "TEXT_BILLSHOUSE_BILL_POKEMON" + }, + { + "hidden": true, + "name": "BILLSHOUSE_BILL1", + "text": "TEXT_BILLSHOUSE_BILL_SS_TICKET" + }, + { + "hidden": true, + "name": "BILLSHOUSE_BILL2", + "text": "TEXT_BILLSHOUSE_BILL_CHECK_OUT_MY_RARE_POKEMON" + } + ], + "signTexts": [] + }, + "BLUES_HOUSE": { + "blockLength": 16, + "label": "BluesHouse", + "objects": [ + { + "item": "0", + "name": "BLUESHOUSE_DAISY1", + "text": "TEXT_BLUESHOUSE_DAISY_SITTING" + }, + { + "hidden": true, + "item": "0", + "name": "BLUESHOUSE_DAISY2", + "text": "TEXT_BLUESHOUSE_DAISY_WALKING" + }, + { + "item": "0", + "name": "BLUESHOUSE_TOWN_MAP", + "text": "TEXT_BLUESHOUSE_TOWN_MAP" + } + ], + "signTexts": [] + }, + "BRUNOS_ROOM": { + "blockLength": 30, + "label": "BrunosRoom", + "objects": [ + { + "name": "BRUNOSROOM_BRUNO", + "text": "TEXT_BRUNOSROOM_BRUNO", + "trainerClass": "OPP_BRUNO", + "trainerParty": 1 + } + ], + "signTexts": [] + }, + "CELADON_CHIEF_HOUSE": { + "blockLength": 16, + "label": "CeladonChiefHouse", + "objects": [ + { + "name": "CELADONCHIEFHOUSE_CHIEF", + "text": "TEXT_CELADONCHIEFHOUSE_CHIEF" + }, + { + "name": "CELADONCHIEFHOUSE_ROCKET", + "text": "TEXT_CELADONCHIEFHOUSE_ROCKET" + }, + { + "name": "CELADONCHIEFHOUSE_SAILOR", + "text": "TEXT_CELADONCHIEFHOUSE_SAILOR" + } + ], + "signTexts": [] + }, + "CELADON_CITY": { + "blockLength": 450, + "label": "CeladonCity", + "objects": [ + { + "name": "CELADONCITY_LITTLE_GIRL", + "text": "TEXT_CELADONCITY_LITTLE_GIRL" + }, + { + "name": "CELADONCITY_GRAMPS1", + "text": "TEXT_CELADONCITY_GRAMPS1" + }, + { + "name": "CELADONCITY_GIRL", + "text": "TEXT_CELADONCITY_GIRL" + }, + { + "name": "CELADONCITY_GRAMPS2", + "text": "TEXT_CELADONCITY_GRAMPS2" + }, + { + "name": "CELADONCITY_GRAMPS3", + "text": "TEXT_CELADONCITY_GRAMPS3" + }, + { + "name": "CELADONCITY_FISHER", + "text": "TEXT_CELADONCITY_FISHER" + }, + { + "name": "CELADONCITY_POLIWRATH", + "text": "TEXT_CELADONCITY_POLIWRATH" + }, + { + "name": "CELADONCITY_ROCKET1", + "text": "TEXT_CELADONCITY_ROCKET1" + }, + { + "name": "CELADONCITY_ROCKET2", + "text": "TEXT_CELADONCITY_ROCKET2" + } + ], + "signTexts": [ + "TEXT_CELADONCITY_TRAINER_TIPS1", + "TEXT_CELADONCITY_SIGN", + "TEXT_CELADONCITY_POKECENTER_SIGN", + "TEXT_CELADONCITY_GYM_SIGN", + "TEXT_CELADONCITY_MANSION_SIGN", + "TEXT_CELADONCITY_DEPTSTORE_SIGN", + "TEXT_CELADONCITY_TRAINER_TIPS2", + "TEXT_CELADONCITY_PRIZEEXCHANGE_SIGN", + "TEXT_CELADONCITY_GAMECORNER_SIGN" + ] + }, + "CELADON_DINER": { + "blockLength": 20, + "label": "CeladonDiner", + "objects": [ + { + "name": "CELADONDINER_COOK", + "text": "TEXT_CELADONDINER_COOK" + }, + { + "name": "CELADONDINER_MIDDLE_AGED_WOMAN", + "text": "TEXT_CELADONDINER_MIDDLE_AGED_WOMAN" + }, + { + "name": "CELADONDINER_MIDDLE_AGED_MAN", + "text": "TEXT_CELADONDINER_MIDDLE_AGED_MAN" + }, + { + "name": "CELADONDINER_FISHER", + "text": "TEXT_CELADONDINER_FISHER" + }, + { + "name": "CELADONDINER_GYM_GUIDE", + "text": "TEXT_CELADONDINER_GYM_GUIDE" + } + ], + "signTexts": [] + }, + "CELADON_GYM": { + "blockLength": 45, + "label": "CeladonGym", + "objects": [ + { + "name": "CELADONGYM_ERIKA", + "text": "TEXT_CELADONGYM_ERIKA", + "trainerClass": "OPP_ERIKA", + "trainerParty": 1 + }, + { + "name": "CELADONGYM_COOLTRAINER_F1", + "text": "TEXT_CELADONGYM_COOLTRAINER_F1", + "trainerClass": "OPP_LASS", + "trainerParty": 17 + }, + { + "name": "CELADONGYM_BEAUTY1", + "text": "TEXT_CELADONGYM_BEAUTY1", + "trainerClass": "OPP_BEAUTY", + "trainerParty": 1 + }, + { + "name": "CELADONGYM_COOLTRAINER_F2", + "text": "TEXT_CELADONGYM_COOLTRAINER_F2", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 11 + }, + { + "name": "CELADONGYM_BEAUTY2", + "text": "TEXT_CELADONGYM_BEAUTY2", + "trainerClass": "OPP_BEAUTY", + "trainerParty": 2 + }, + { + "name": "CELADONGYM_COOLTRAINER_F3", + "text": "TEXT_CELADONGYM_COOLTRAINER_F3", + "trainerClass": "OPP_LASS", + "trainerParty": 18 + }, + { + "name": "CELADONGYM_BEAUTY3", + "text": "TEXT_CELADONGYM_BEAUTY3", + "trainerClass": "OPP_BEAUTY", + "trainerParty": 3 + }, + { + "name": "CELADONGYM_COOLTRAINER_F4", + "text": "TEXT_CELADONGYM_COOLTRAINER_F4", + "trainerClass": "OPP_COOLTRAINER_F", + "trainerParty": 1 + } + ], + "signTexts": [] + }, + "CELADON_HOTEL": { + "blockLength": 28, + "label": "CeladonHotel", + "objects": [ + { + "name": "CELADONHOTEL_GRANNY", + "text": "TEXT_CELADONHOTEL_GRANNY" + }, + { + "name": "CELADONHOTEL_BEAUTY", + "text": "TEXT_CELADONHOTEL_BEAUTY" + }, + { + "name": "CELADONHOTEL_SUPER_NERD", + "text": "TEXT_CELADONHOTEL_SUPER_NERD" + } + ], + "signTexts": [] + }, + "CELADON_MANSION_1F": { + "blockLength": 24, + "label": "CeladonMansion1F", + "objects": [ + { + "name": "CELADONMANSION1F_MEOWTH", + "text": "TEXT_CELADONMANSION1F_MEOWTH" + }, + { + "name": "CELADONMANSION1F_GRANNY", + "text": "TEXT_CELADONMANSION1F_GRANNY" + }, + { + "name": "CELADONMANSION1F_CLEFAIRY", + "text": "TEXT_CELADONMANSION1F_CLEFAIRY" + }, + { + "name": "CELADONMANSION1F_NIDORANF", + "text": "TEXT_CELADONMANSION1F_NIDORANF" + } + ], + "signTexts": [ + "TEXT_CELADONMANSION1F_MANAGERS_SUITE_SIGN" + ] + }, + "CELADON_MANSION_2F": { + "blockLength": 24, + "label": "CeladonMansion2F", + "objects": [], + "signTexts": [ + "TEXT_CELADONMANSION2F_MEETING_ROOM_SIGN" + ] + }, + "CELADON_MANSION_3F": { + "blockLength": 24, + "label": "CeladonMansion3F", + "objects": [ + { + "name": "CELADONMANSION3F_PROGRAMMER", + "text": "TEXT_CELADONMANSION3F_PROGRAMMER" + }, + { + "name": "CELADONMANSION3F_GRAPHIC_ARTIST", + "text": "TEXT_CELADONMANSION3F_GRAPHIC_ARTIST" + }, + { + "name": "CELADONMANSION3F_WRITER", + "text": "TEXT_CELADONMANSION3F_WRITER" + }, + { + "name": "CELADONMANSION3F_GAME_DESIGNER", + "text": "TEXT_CELADONMANSION3F_GAME_DESIGNER" + } + ], + "signTexts": [ + "TEXT_CELADONMANSION3F_GAME_PROGRAM_PC", + "TEXT_CELADONMANSION3F_PLAYING_GAME_PC", + "TEXT_CELADONMANSION3F_GAME_SCRIPT_PC", + "TEXT_CELADONMANSION3F_DEV_ROOM_SIGN" + ] + }, + "CELADON_MANSION_ROOF": { + "blockLength": 24, + "label": "CeladonMansionRoof", + "objects": [], + "signTexts": [ + "TEXT_CELADONMANSIONROOF_HOUSE_SIGN" + ] + }, + "CELADON_MANSION_ROOF_HOUSE": { + "blockLength": 16, + "label": "CeladonMansionRoofHouse", + "objects": [ + { + "name": "CELADONMANSION_ROOF_HOUSE_HIKER", + "text": "TEXT_CELADONMANSION_ROOF_HOUSE_HIKER" + }, + { + "name": "CELADONMANSION_ROOF_HOUSE_EEVEE_POKEBALL", + "text": "TEXT_CELADONMANSION_ROOF_HOUSE_EEVEE_POKEBALL" + } + ], + "signTexts": [] + }, + "CELADON_MART_1F": { + "blockLength": 40, + "label": "CeladonMart1F", + "objects": [ + { + "name": "CELADONMART1F_RECEPTIONIST", + "text": "TEXT_CELADONMART1F_RECEPTIONIST" + } + ], + "signTexts": [ + "TEXT_CELADONMART1F_DIRECTORY_SIGN", + "TEXT_CELADONMART1F_CURRENT_FLOOR_SIGN" + ] + }, + "CELADON_MART_2F": { + "blockLength": 40, + "label": "CeladonMart2F", + "objects": [ + { + "name": "CELADONMART2F_CLERK1", + "text": "TEXT_CELADONMART2F_CLERK1" + }, + { + "name": "CELADONMART2F_CLERK2", + "text": "TEXT_CELADONMART2F_CLERK2" + }, + { + "name": "CELADONMART2F_MIDDLE_AGED_MAN", + "text": "TEXT_CELADONMART2F_MIDDLE_AGED_MAN" + }, + { + "name": "CELADONMART2F_GIRL", + "text": "TEXT_CELADONMART2F_GIRL" + } + ], + "signTexts": [ + "TEXT_CELADONMART2F_CURRENT_FLOOR_SIGN" + ] + }, + "CELADON_MART_3F": { + "blockLength": 40, + "label": "CeladonMart3F", + "objects": [ + { + "name": "CELADONMART3F_CLERK", + "text": "TEXT_CELADONMART3F_CLERK" + }, + { + "name": "CELADONMART3F_GAMEBOY_KID1", + "text": "TEXT_CELADONMART3F_GAMEBOY_KID1" + }, + { + "name": "CELADONMART3F_GAMEBOY_KID2", + "text": "TEXT_CELADONMART3F_GAMEBOY_KID2" + }, + { + "name": "CELADONMART3F_GAMEBOY_KID3", + "text": "TEXT_CELADONMART3F_GAMEBOY_KID3" + }, + { + "name": "CELADONMART3F_LITTLE_BOY", + "text": "TEXT_CELADONMART3F_LITTLE_BOY" + } + ], + "signTexts": [ + "TEXT_CELADONMART3F_SNES1", + "TEXT_CELADONMART3F_RPG", + "TEXT_CELADONMART3F_SNES2", + "TEXT_CELADONMART3F_SPORTS_GAME", + "TEXT_CELADONMART3F_SNES3", + "TEXT_CELADONMART3F_PUZZLE_GAME", + "TEXT_CELADONMART3F_SNES4", + "TEXT_CELADONMART3F_FIGHTING_GAME", + "TEXT_CELADONMART3F_CURRENT_FLOOR_SIGN", + "TEXT_CELADONMART3F_POKEMON_POSTER1", + "TEXT_CELADONMART3F_POKEMON_POSTER2", + "TEXT_CELADONMART3F_POKEMON_POSTER3" + ] + }, + "CELADON_MART_4F": { + "blockLength": 40, + "label": "CeladonMart4F", + "objects": [ + { + "name": "CELADONMART4F_CLERK", + "text": "TEXT_CELADONMART4F_CLERK" + }, + { + "name": "CELADONMART4F_SUPER_NERD", + "text": "TEXT_CELADONMART4F_SUPER_NERD" + }, + { + "name": "CELADONMART4F_YOUNGSTER", + "text": "TEXT_CELADONMART4F_YOUNGSTER" + } + ], + "signTexts": [ + "TEXT_CELADONMART4F_CURRENT_FLOOR_SIGN" + ] + }, + "CELADON_MART_5F": { + "blockLength": 40, + "label": "CeladonMart5F", + "objects": [ + { + "name": "CELADONMART5F_GENTLEMAN", + "text": "TEXT_CELADONMART5F_GENTLEMAN" + }, + { + "name": "CELADONMART5F_SAILOR", + "text": "TEXT_CELADONMART5F_SAILOR" + }, + { + "name": "CELADONMART5F_CLERK1", + "text": "TEXT_CELADONMART5F_CLERK1" + }, + { + "name": "CELADONMART5F_CLERK2", + "text": "TEXT_CELADONMART5F_CLERK2" + } + ], + "signTexts": [ + "TEXT_CELADONMART5F_CURRENT_FLOOR_SIGN" + ] + }, + "CELADON_MART_ELEVATOR": { + "blockLength": 4, + "label": "CeladonMartElevator", + "objects": [], + "signTexts": [ + "TEXT_CELADONMARTELEVATOR" + ] + }, + "CELADON_MART_ROOF": { + "blockLength": 40, + "label": "CeladonMartRoof", + "objects": [ + { + "name": "CELADONMARTROOF_SUPER_NERD", + "text": "TEXT_CELADONMARTROOF_SUPER_NERD" + }, + { + "name": "CELADONMARTROOF_LITTLE_GIRL", + "text": "TEXT_CELADONMARTROOF_LITTLE_GIRL" + } + ], + "signTexts": [ + "TEXT_CELADONMARTROOF_VENDING_MACHINE1", + "TEXT_CELADONMARTROOF_VENDING_MACHINE2", + "TEXT_CELADONMARTROOF_VENDING_MACHINE3", + "TEXT_CELADONMARTROOF_CURRENT_FLOOR_SIGN" + ] + }, + "CELADON_POKECENTER": { + "blockLength": 28, + "label": "CeladonPokecenter", + "objects": [ + { + "name": "CELADONPOKECENTER_NURSE", + "text": "TEXT_CELADONPOKECENTER_NURSE" + }, + { + "name": "CELADONPOKECENTER_GENTLEMAN", + "text": "TEXT_CELADONPOKECENTER_GENTLEMAN" + }, + { + "name": "CELADONPOKECENTER_BEAUTY", + "text": "TEXT_CELADONPOKECENTER_BEAUTY" + }, + { + "name": "CELADONPOKECENTER_LINK_RECEPTIONIST", + "text": "TEXT_CELADONPOKECENTER_LINK_RECEPTIONIST" + }, + { + "name": "CELADONPOKECENTER_CHANSEY", + "text": "TEXT_CELADONPOKECENTER_CHANSEY" + } + ], + "signTexts": [] + }, + "CERULEAN_BADGE_HOUSE": { + "blockLength": 16, + "label": "CeruleanBadgeHouse", + "objects": [ + { + "name": "CERULEANBADGEHOUSE_MIDDLE_AGED_MAN", + "text": "TEXT_CERULEANBADGEHOUSE_MIDDLE_AGED_MAN" + } + ], + "signTexts": [] + }, + "CERULEAN_CAVE_1F": { + "blockLength": 135, + "label": "CeruleanCave1F", + "objects": [ + { + "item": "RARE_CANDY", + "name": "CERULEANCAVE1F_RARE_CANDY", + "text": "TEXT_CERULEANCAVE1F_RARE_CANDY" + }, + { + "item": "MAX_ELIXER", + "name": "CERULEANCAVE1F_MAX_ELIXER", + "text": "TEXT_CERULEANCAVE1F_MAX_ELIXER" + }, + { + "item": "MAX_REVIVE", + "name": "CERULEANCAVE1F_MAX_REVIVE", + "text": "TEXT_CERULEANCAVE1F_MAX_REVIVE" + }, + { + "item": "ULTRA_BALL", + "name": "CERULEANCAVE1F_ULTRA_BALL", + "text": "TEXT_CERULEANCAVE1F_ULTRA_BALL" + } + ], + "signTexts": [] + }, + "CERULEAN_CAVE_2F": { + "blockLength": 135, + "label": "CeruleanCave2F", + "objects": [ + { + "item": "RARE_CANDY", + "name": "CERULEANCAVE2F_RARE_CANDY", + "text": "TEXT_CERULEANCAVE2F_RARE_CANDY" + }, + { + "item": "ULTRA_BALL", + "name": "CERULEANCAVE2F_ULTRA_BALL", + "text": "TEXT_CERULEANCAVE2F_ULTRA_BALL" + }, + { + "item": "MAX_REVIVE", + "name": "CERULEANCAVE2F_MAX_REVIVE", + "text": "TEXT_CERULEANCAVE2F_MAX_REVIVE" + }, + { + "item": "FULL_RESTORE", + "name": "CERULEANCAVE2F_FULL_RESTORE", + "text": "TEXT_CERULEANCAVE2F_FULL_RESTORE" + } + ], + "signTexts": [] + }, + "CERULEAN_CAVE_B1F": { + "blockLength": 135, + "label": "CeruleanCaveB1F", + "objects": [ + { + "name": "CERULEANCAVEB1F_MEWTWO", + "pokemon": "MEWTWO", + "text": "TEXT_CERULEANCAVEB1F_MEWTWO" + }, + { + "item": "ULTRA_BALL", + "name": "CERULEANCAVEB1F_ULTRA_BALL1", + "text": "TEXT_CERULEANCAVEB1F_ULTRA_BALL1" + }, + { + "item": "ULTRA_BALL", + "name": "CERULEANCAVEB1F_ULTRA_BALL2", + "text": "TEXT_CERULEANCAVEB1F_ULTRA_BALL2" + }, + { + "item": "MAX_REVIVE", + "name": "CERULEANCAVEB1F_MAX_REVIVE", + "text": "TEXT_CERULEANCAVEB1F_MAX_REVIVE" + }, + { + "item": "MAX_ELIXER", + "name": "CERULEANCAVEB1F_MAX_ELIXER", + "text": "TEXT_CERULEANCAVEB1F_MAX_ELIXER" + } + ], + "signTexts": [] + }, + "CERULEAN_CITY": { + "blockLength": 360, + "label": "CeruleanCity", + "objects": [ + { + "hidden": true, + "name": "CERULEANCITY_RIVAL", + "text": "TEXT_CERULEANCITY_RIVAL" + }, + { + "name": "CERULEANCITY_ROCKET", + "text": "TEXT_CERULEANCITY_ROCKET", + "trainerClass": "OPP_ROCKET", + "trainerParty": 5 + }, + { + "name": "CERULEANCITY_COOLTRAINER_M", + "text": "TEXT_CERULEANCITY_COOLTRAINER_M" + }, + { + "name": "CERULEANCITY_SUPER_NERD1", + "text": "TEXT_CERULEANCITY_SUPER_NERD1" + }, + { + "name": "CERULEANCITY_SUPER_NERD2", + "text": "TEXT_CERULEANCITY_SUPER_NERD2" + }, + { + "hidden": true, + "name": "CERULEANCITY_GUARD1", + "text": "TEXT_CERULEANCITY_GUARD1" + }, + { + "name": "CERULEANCITY_COOLTRAINER_F1", + "text": "TEXT_CERULEANCITY_COOLTRAINER_F1" + }, + { + "name": "CERULEANCITY_ELECTRODE", + "text": "TEXT_CERULEANCITY_ELECTRODE" + }, + { + "name": "CERULEANCITY_COOLTRAINER_F2", + "text": "TEXT_CERULEANCITY_COOLTRAINER_F2" + }, + { + "name": "CERULEANCITY_SUPER_NERD3", + "text": "TEXT_CERULEANCITY_SUPER_NERD3" + }, + { + "name": "CERULEANCITY_GUARD2", + "text": "TEXT_CERULEANCITY_GUARD2" + } + ], + "signTexts": [ + "TEXT_CERULEANCITY_SIGN", + "TEXT_CERULEANCITY_TRAINER_TIPS", + "TEXT_CERULEANCITY_MART_SIGN", + "TEXT_CERULEANCITY_POKECENTER_SIGN", + "TEXT_CERULEANCITY_BIKESHOP_SIGN", + "TEXT_CERULEANCITY_GYM_SIGN" + ] + }, + "CERULEAN_GYM": { + "blockLength": 35, + "label": "CeruleanGym", + "objects": [ + { + "name": "CERULEANGYM_MISTY", + "text": "TEXT_CERULEANGYM_MISTY", + "trainerClass": "OPP_MISTY", + "trainerParty": 1 + }, + { + "name": "CERULEANGYM_COOLTRAINER_F", + "text": "TEXT_CERULEANGYM_COOLTRAINER_F", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 1 + }, + { + "name": "CERULEANGYM_SWIMMER", + "text": "TEXT_CERULEANGYM_SWIMMER", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 1 + }, + { + "name": "CERULEANGYM_GYM_GUIDE", + "text": "TEXT_CERULEANGYM_GYM_GUIDE" + } + ], + "signTexts": [] + }, + "CERULEAN_MART": { + "blockLength": 16, + "label": "CeruleanMart", + "objects": [ + { + "name": "CERULEANMART_CLERK", + "text": "TEXT_CERULEANMART_CLERK" + }, + { + "name": "CERULEANMART_COOLTRAINER_M", + "text": "TEXT_CERULEANMART_COOLTRAINER_M" + }, + { + "name": "CERULEANMART_COOLTRAINER_F", + "text": "TEXT_CERULEANMART_COOLTRAINER_F" + } + ], + "signTexts": [] + }, + "CERULEAN_MELANIES_HOUSE": { + "blockLength": 16, + "label": "CeruleanMelaniesHouse", + "objects": [ + { + "name": "CERULEANMELANIESHOUSE_MELANIE", + "text": "TEXT_CERULEANMELANIESHOUSE_MELANIE" + }, + { + "name": "CERULEANMELANIESHOUSE_BULBASAUR", + "text": "TEXT_CERULEANMELANIESHOUSE_BULBASAUR" + }, + { + "name": "CERULEANMELANIESHOUSE_ODDISH", + "text": "TEXT_CERULEANMELANIESHOUSE_ODDISH" + }, + { + "name": "CERULEANMELANIESHOUSE_SANDSHREW", + "text": "TEXT_CERULEANMELANIESHOUSE_SANDSHREW" + } + ], + "signTexts": [] + }, + "CERULEAN_POKECENTER": { + "blockLength": 28, + "label": "CeruleanPokecenter", + "objects": [ + { + "name": "CERULEANPOKECENTER_NURSE", + "text": "TEXT_CERULEANPOKECENTER_NURSE" + }, + { + "name": "CERULEANPOKECENTER_SUPER_NERD", + "text": "TEXT_CERULEANPOKECENTER_SUPER_NERD" + }, + { + "name": "CERULEANPOKECENTER_GENTLEMAN", + "text": "TEXT_CERULEANPOKECENTER_GENTLEMAN" + }, + { + "name": "CERULEANPOKECENTER_LINK_RECEPTIONIST", + "text": "TEXT_CERULEANPOKECENTER_LINK_RECEPTIONIST" + }, + { + "name": "CERULEANPOKECENTER_CHANSEY", + "text": "TEXT_CERULEANPOKECENTER_CHANSEY" + } + ], + "signTexts": [] + }, + "CERULEAN_TRASHED_HOUSE": { + "blockLength": 16, + "label": "CeruleanTrashedHouse", + "objects": [ + { + "name": "CERULEANTRASHEDHOUSE_FISHING_GURU", + "text": "TEXT_CERULEANTRASHEDHOUSE_FISHING_GURU" + }, + { + "name": "CERULEANTRASHEDHOUSE_GIRL", + "text": "TEXT_CERULEANTRASHEDHOUSE_GIRL" + } + ], + "signTexts": [ + "TEXT_CERULEANTRASHEDHOUSE_WALL_HOLE" + ] + }, + "CHAMPIONS_ROOM": { + "blockLength": 16, + "label": "ChampionsRoom", + "objects": [ + { + "name": "CHAMPIONSROOM_RIVAL", + "text": "TEXT_CHAMPIONSROOM_RIVAL" + }, + { + "hidden": true, + "name": "CHAMPIONSROOM_OAK", + "text": "TEXT_CHAMPIONSROOM_OAK" + } + ], + "signTexts": [] + }, + "CINNABAR_GYM": { + "blockLength": 90, + "label": "CinnabarGym", + "objects": [ + { + "name": "CINNABARGYM_BLAINE", + "text": "TEXT_CINNABARGYM_BLAINE", + "trainerClass": "OPP_BLAINE", + "trainerParty": 1 + }, + { + "name": "CINNABARGYM_SUPER_NERD1", + "text": "TEXT_CINNABARGYM_SUPER_NERD1", + "trainerClass": "OPP_SUPER_NERD", + "trainerParty": 9 + }, + { + "name": "CINNABARGYM_SUPER_NERD2", + "text": "TEXT_CINNABARGYM_SUPER_NERD2", + "trainerClass": "OPP_BURGLAR", + "trainerParty": 4 + }, + { + "name": "CINNABARGYM_SUPER_NERD3", + "text": "TEXT_CINNABARGYM_SUPER_NERD3", + "trainerClass": "OPP_SUPER_NERD", + "trainerParty": 10 + }, + { + "name": "CINNABARGYM_SUPER_NERD4", + "text": "TEXT_CINNABARGYM_SUPER_NERD4", + "trainerClass": "OPP_BURGLAR", + "trainerParty": 5 + }, + { + "name": "CINNABARGYM_SUPER_NERD5", + "text": "TEXT_CINNABARGYM_SUPER_NERD5", + "trainerClass": "OPP_SUPER_NERD", + "trainerParty": 11 + }, + { + "name": "CINNABARGYM_SUPER_NERD6", + "text": "TEXT_CINNABARGYM_SUPER_NERD6", + "trainerClass": "OPP_BURGLAR", + "trainerParty": 6 + }, + { + "name": "CINNABARGYM_SUPER_NERD7", + "text": "TEXT_CINNABARGYM_SUPER_NERD7", + "trainerClass": "OPP_SUPER_NERD", + "trainerParty": 12 + }, + { + "name": "CINNABARGYM_GYM_GUIDE", + "text": "TEXT_CINNABARGYM_GYM_GUIDE" + } + ], + "signTexts": [] + }, + "CINNABAR_ISLAND": { + "blockLength": 90, + "label": "CinnabarIsland", + "objects": [ + { + "name": "CINNABARISLAND_GIRL", + "text": "TEXT_CINNABARISLAND_GIRL" + }, + { + "name": "CINNABARISLAND_GAMBLER", + "text": "TEXT_CINNABARISLAND_GAMBLER" + } + ], + "signTexts": [ + "TEXT_CINNABARISLAND_SIGN", + "TEXT_CINNABARISLAND_MART_SIGN", + "TEXT_CINNABARISLAND_POKECENTER_SIGN", + "TEXT_CINNABARISLAND_POKEMONLAB_SIGN", + "TEXT_CINNABARISLAND_GYM_SIGN" + ] + }, + "CINNABAR_LAB": { + "blockLength": 36, + "label": "CinnabarLab", + "objects": [ + { + "name": "CINNABARLAB_FISHING_GURU", + "text": "TEXT_CINNABARLAB_FISHING_GURU" + } + ], + "signTexts": [ + "TEXT_CINNABARLAB_PHOTO", + "TEXT_CINNABARLAB_MEETING_ROOM_SIGN", + "TEXT_CINNABARLAB_R_AND_D_SIGN", + "TEXT_CINNABARLAB_TESTING_ROOM_SIGN" + ] + }, + "CINNABAR_LAB_FOSSIL_ROOM": { + "blockLength": 16, + "label": "CinnabarLabFossilRoom", + "objects": [ + { + "name": "CINNABARLABFOSSILROOM_SCIENTIST1", + "text": "TEXT_CINNABARLABFOSSILROOM_SCIENTIST1" + }, + { + "name": "CINNABARLABFOSSILROOM_SCIENTIST2", + "text": "TEXT_CINNABARLABFOSSILROOM_SCIENTIST2" + } + ], + "signTexts": [] + }, + "CINNABAR_LAB_METRONOME_ROOM": { + "blockLength": 16, + "label": "CinnabarLabMetronomeRoom", + "objects": [ + { + "name": "CINNABARLABMETRONOMEROOM_SCIENTIST1", + "text": "TEXT_CINNABARLABMETRONOMEROOM_SCIENTIST1" + }, + { + "name": "CINNABARLABMETRONOMEROOM_SCIENTIST2", + "text": "TEXT_CINNABARLABMETRONOMEROOM_SCIENTIST2" + } + ], + "signTexts": [ + "TEXT_CINNABARLABMETRONOMEROOM_PC_KEYBOARD", + "TEXT_CINNABARLABMETRONOMEROOM_PC_MONITOR", + "TEXT_CINNABARLABMETRONOMEROOM_AMBER_PIPE" + ] + }, + "CINNABAR_LAB_TRADE_ROOM": { + "blockLength": 16, + "label": "CinnabarLabTradeRoom", + "objects": [ + { + "name": "CINNABARLABTRADEROOM_SUPER_NERD", + "text": "TEXT_CINNABARLABTRADEROOM_SUPER_NERD" + }, + { + "name": "CINNABARLABTRADEROOM_GRAMPS", + "text": "TEXT_CINNABARLABTRADEROOM_GRAMPS" + }, + { + "name": "CINNABARLABTRADEROOM_BEAUTY", + "text": "TEXT_CINNABARLABTRADEROOM_BEAUTY" + } + ], + "signTexts": [] + }, + "CINNABAR_MART": { + "blockLength": 16, + "label": "CinnabarMart", + "objects": [ + { + "name": "CINNABARMART_CLERK", + "text": "TEXT_CINNABARMART_CLERK" + }, + { + "name": "CINNABARMART_SILPH_WORKER_F", + "text": "TEXT_CINNABARMART_SILPH_WORKER_F" + }, + { + "name": "CINNABARMART_SCIENTIST", + "text": "TEXT_CINNABARMART_SCIENTIST" + } + ], + "signTexts": [] + }, + "CINNABAR_POKECENTER": { + "blockLength": 28, + "label": "CinnabarPokecenter", + "objects": [ + { + "name": "CINNABARPOKECENTER_NURSE", + "text": "TEXT_CINNABARPOKECENTER_NURSE" + }, + { + "name": "CINNABARPOKECENTER_COOLTRAINER_F", + "text": "TEXT_CINNABARPOKECENTER_COOLTRAINER_F" + }, + { + "name": "CINNABARPOKECENTER_GENTLEMAN", + "text": "TEXT_CINNABARPOKECENTER_GENTLEMAN" + }, + { + "name": "CINNABARPOKECENTER_LINK_RECEPTIONIST", + "text": "TEXT_CINNABARPOKECENTER_LINK_RECEPTIONIST" + }, + { + "name": "CINNABARPOKECENTER_CHANSEY", + "text": "TEXT_CINNABARPOKECENTER_CHANSEY" + } + ], + "signTexts": [] + }, + "COLOSSEUM": { + "blockLength": 20, + "label": "Colosseum", + "objects": [ + { + "name": "COLOSSEUM_OPPONENT", + "text": "TEXT_COLOSSEUM_OPPONENT" + } + ], + "signTexts": [] + }, + "COPYCATS_HOUSE_1F": { + "blockLength": 16, + "label": "CopycatsHouse1F", + "objects": [ + { + "name": "COPYCATSHOUSE1F_MIDDLE_AGED_WOMAN", + "text": "TEXT_COPYCATSHOUSE1F_MIDDLE_AGED_WOMAN" + }, + { + "name": "COPYCATSHOUSE1F_MIDDLE_AGED_MAN", + "text": "TEXT_COPYCATSHOUSE1F_MIDDLE_AGED_MAN" + }, + { + "name": "COPYCATSHOUSE1F_CHANSEY", + "text": "TEXT_COPYCATSHOUSE1F_CHANSEY" + } + ], + "signTexts": [] + }, + "COPYCATS_HOUSE_2F": { + "blockLength": 16, + "label": "CopycatsHouse2F", + "objects": [ + { + "name": "COPYCATSHOUSE2F_COPYCAT", + "text": "TEXT_COPYCATSHOUSE2F_COPYCAT" + }, + { + "name": "COPYCATSHOUSE2F_DODUO", + "text": "TEXT_COPYCATSHOUSE2F_DODUO" + }, + { + "name": "COPYCATSHOUSE2F_MONSTER", + "text": "TEXT_COPYCATSHOUSE2F_MONSTER" + }, + { + "name": "COPYCATSHOUSE2F_BIRD", + "text": "TEXT_COPYCATSHOUSE2F_BIRD" + }, + { + "name": "COPYCATSHOUSE2F_FAIRY", + "text": "TEXT_COPYCATSHOUSE2F_FAIRY" + } + ], + "signTexts": [ + "TEXT_COPYCATSHOUSE2F_SNES", + "TEXT_COPYCATSHOUSE2F_PC" + ] + }, + "DAYCARE": { + "blockLength": 16, + "label": "Daycare", + "objects": [ + { + "name": "DAYCARE_GENTLEMAN", + "text": "TEXT_DAYCARE_GENTLEMAN" + } + ], + "signTexts": [] + }, + "DIGLETTS_CAVE": { + "blockLength": 360, + "label": "DiglettsCave", + "objects": [], + "signTexts": [] + }, + "DIGLETTS_CAVE_ROUTE_11": { + "blockLength": 16, + "label": "DiglettsCaveRoute11", + "objects": [ + { + "name": "DIGLETTSCAVEROUTE11_GAMBLER", + "text": "TEXT_DIGLETTSCAVEROUTE11_GAMBLER" + } + ], + "signTexts": [] + }, + "DIGLETTS_CAVE_ROUTE_2": { + "blockLength": 16, + "label": "DiglettsCaveRoute2", + "objects": [ + { + "name": "DIGLETTSCAVEROUTE2_FISHING_GURU", + "text": "TEXT_DIGLETTSCAVEROUTE2_FISHING_GURU" + } + ], + "signTexts": [] + }, + "FIGHTING_DOJO": { + "blockLength": 30, + "label": "FightingDojo", + "objects": [ + { + "name": "FIGHTINGDOJO_KARATE_MASTER", + "text": "TEXT_FIGHTINGDOJO_KARATE_MASTER", + "trainerClass": "OPP_BLACKBELT", + "trainerParty": 1 + }, + { + "name": "FIGHTINGDOJO_BLACKBELT1", + "text": "TEXT_FIGHTINGDOJO_BLACKBELT1", + "trainerClass": "OPP_BLACKBELT", + "trainerParty": 2 + }, + { + "name": "FIGHTINGDOJO_BLACKBELT2", + "text": "TEXT_FIGHTINGDOJO_BLACKBELT2", + "trainerClass": "OPP_BLACKBELT", + "trainerParty": 3 + }, + { + "name": "FIGHTINGDOJO_BLACKBELT3", + "text": "TEXT_FIGHTINGDOJO_BLACKBELT3", + "trainerClass": "OPP_BLACKBELT", + "trainerParty": 4 + }, + { + "name": "FIGHTINGDOJO_BLACKBELT4", + "text": "TEXT_FIGHTINGDOJO_BLACKBELT4", + "trainerClass": "OPP_BLACKBELT", + "trainerParty": 5 + }, + { + "name": "FIGHTINGDOJO_HITMONLEE_POKE_BALL", + "text": "TEXT_FIGHTINGDOJO_HITMONLEE_POKE_BALL" + }, + { + "name": "FIGHTINGDOJO_HITMONCHAN_POKE_BALL", + "text": "TEXT_FIGHTINGDOJO_HITMONCHAN_POKE_BALL" + } + ], + "signTexts": [] + }, + "FUCHSIA_BILLS_GRANDPAS_HOUSE": { + "blockLength": 16, + "label": "FuchsiaBillsGrandpasHouse", + "objects": [ + { + "name": "FUCHSIABILLSGRANDPASHOUSE_MIDDLE_AGED_WOMAN", + "text": "TEXT_FUCHSIABILLSGRANDPASHOUSE_MIDDLE_AGED_WOMAN" + }, + { + "name": "FUCHSIABILLSGRANDPASHOUSE_BILLS_GRANDPA", + "text": "TEXT_FUCHSIABILLSGRANDPASHOUSE_BILLS_GRANDPA" + }, + { + "name": "FUCHSIABILLSGRANDPASHOUSE_YOUNGSTER", + "text": "TEXT_FUCHSIABILLSGRANDPASHOUSE_YOUNGSTER" + } + ], + "signTexts": [] + }, + "FUCHSIA_CITY": { + "blockLength": 360, + "label": "FuchsiaCity", + "objects": [ + { + "name": "FUCHSIACITY_YOUNGSTER1", + "text": "TEXT_FUCHSIACITY_YOUNGSTER1" + }, + { + "name": "FUCHSIACITY_GAMBLER", + "text": "TEXT_FUCHSIACITY_GAMBLER" + }, + { + "name": "FUCHSIACITY_ERIK", + "text": "TEXT_FUCHSIACITY_ERIK" + }, + { + "name": "FUCHSIACITY_YOUNGSTER2", + "text": "TEXT_FUCHSIACITY_YOUNGSTER2" + }, + { + "name": "FUCHSIACITY_CHANSEY", + "text": "TEXT_FUCHSIACITY_CHANSEY" + }, + { + "name": "FUCHSIACITY_VOLTORB", + "text": "TEXT_FUCHSIACITY_VOLTORB" + }, + { + "name": "FUCHSIACITY_KANGASKHAN", + "text": "TEXT_FUCHSIACITY_KANGASKHAN" + }, + { + "name": "FUCHSIACITY_SLOWPOKE", + "text": "TEXT_FUCHSIACITY_SLOWPOKE" + }, + { + "name": "FUCHSIACITY_LAPRAS", + "text": "TEXT_FUCHSIACITY_LAPRAS" + }, + { + "name": "FUCHSIACITY_FOSSIL", + "text": "TEXT_FUCHSIACITY_FOSSIL" + } + ], + "signTexts": [ + "TEXT_FUCHSIACITY_SIGN1", + "TEXT_FUCHSIACITY_SIGN2", + "TEXT_FUCHSIACITY_SAFARI_GAME_SIGN", + "TEXT_FUCHSIACITY_MART_SIGN", + "TEXT_FUCHSIACITY_POKECENTER_SIGN", + "TEXT_FUCHSIACITY_WARDENS_HOME_SIGN", + "TEXT_FUCHSIACITY_SAFARI_ZONE_SIGN", + "TEXT_FUCHSIACITY_GYM_SIGN", + "TEXT_FUCHSIACITY_CHANSEY_SIGN", + "TEXT_FUCHSIACITY_VOLTORB_SIGN", + "TEXT_FUCHSIACITY_KANGASKHAN_SIGN", + "TEXT_FUCHSIACITY_SLOWPOKE_SIGN", + "TEXT_FUCHSIACITY_LAPRAS_SIGN", + "TEXT_FUCHSIACITY_FOSSIL_SIGN" + ] + }, + "FUCHSIA_GOOD_ROD_HOUSE": { + "blockLength": 16, + "label": "FuchsiaGoodRodHouse", + "objects": [ + { + "name": "FUCHSIAGOODRODHOUSE_FISHING_GURU", + "text": "TEXT_FUCHSIAGOODRODHOUSE_FISHING_GURU" + } + ], + "signTexts": [] + }, + "FUCHSIA_GYM": { + "blockLength": 45, + "label": "FuchsiaGym", + "objects": [ + { + "name": "FUCHSIAGYM_KOGA", + "text": "TEXT_FUCHSIAGYM_KOGA", + "trainerClass": "OPP_KOGA", + "trainerParty": 1 + }, + { + "name": "FUCHSIAGYM_ROCKER1", + "text": "TEXT_FUCHSIAGYM_ROCKER1", + "trainerClass": "OPP_JUGGLER", + "trainerParty": 7 + }, + { + "name": "FUCHSIAGYM_ROCKER2", + "text": "TEXT_FUCHSIAGYM_ROCKER2", + "trainerClass": "OPP_JUGGLER", + "trainerParty": 3 + }, + { + "name": "FUCHSIAGYM_ROCKER3", + "text": "TEXT_FUCHSIAGYM_ROCKER3", + "trainerClass": "OPP_JUGGLER", + "trainerParty": 8 + }, + { + "name": "FUCHSIAGYM_ROCKER4", + "text": "TEXT_FUCHSIAGYM_ROCKER4", + "trainerClass": "OPP_TAMER", + "trainerParty": 1 + }, + { + "name": "FUCHSIAGYM_ROCKER5", + "text": "TEXT_FUCHSIAGYM_ROCKER5", + "trainerClass": "OPP_TAMER", + "trainerParty": 2 + }, + { + "name": "FUCHSIAGYM_ROCKER6", + "text": "TEXT_FUCHSIAGYM_ROCKER6", + "trainerClass": "OPP_JUGGLER", + "trainerParty": 4 + }, + { + "name": "FUCHSIAGYM_GYM_GUIDE", + "text": "TEXT_FUCHSIAGYM_GYM_GUIDE" + } + ], + "signTexts": [] + }, + "FUCHSIA_MART": { + "blockLength": 16, + "label": "FuchsiaMart", + "objects": [ + { + "name": "FUCHSIAMART_CLERK", + "text": "TEXT_FUCHSIAMART_CLERK" + }, + { + "name": "FUCHSIAMART_MIDDLE_AGED_MAN", + "text": "TEXT_FUCHSIAMART_MIDDLE_AGED_MAN" + }, + { + "name": "FUCHSIAMART_COOLTRAINER_F", + "text": "TEXT_FUCHSIAMART_COOLTRAINER_F" + } + ], + "signTexts": [] + }, + "FUCHSIA_MEETING_ROOM": { + "blockLength": 28, + "label": "FuchsiaMeetingRoom", + "objects": [ + { + "name": "FUCHSIAMEETINGROOM_SAFARI_ZONE_WORKER1", + "text": "TEXT_FUCHSIAMEETINGROOM_SAFARI_ZONE_WORKER1" + }, + { + "name": "FUCHSIAMEETINGROOM_SAFARI_ZONE_WORKER2", + "text": "TEXT_FUCHSIAMEETINGROOM_SAFARI_ZONE_WORKER2" + }, + { + "name": "FUCHSIAMEETINGROOM_SAFARI_ZONE_WORKER3", + "text": "TEXT_FUCHSIAMEETINGROOM_SAFARI_ZONE_WORKER3" + } + ], + "signTexts": [] + }, + "FUCHSIA_POKECENTER": { + "blockLength": 28, + "label": "FuchsiaPokecenter", + "objects": [ + { + "name": "FUCHSIAPOKECENTER_NURSE", + "text": "TEXT_FUCHSIAPOKECENTER_NURSE" + }, + { + "name": "FUCHSIAPOKECENTER_ROCKER", + "text": "TEXT_FUCHSIAPOKECENTER_ROCKER" + }, + { + "name": "FUCHSIAPOKECENTER_COOLTRAINER_F", + "text": "TEXT_FUCHSIAPOKECENTER_COOLTRAINER_F" + }, + { + "name": "FUCHSIAPOKECENTER_LINK_RECEPTIONIST", + "text": "TEXT_FUCHSIAPOKECENTER_LINK_RECEPTIONIST" + }, + { + "name": "FUCHSIAPOKECENTER_CHANSEY", + "text": "TEXT_FUCHSIAPOKECENTER_CHANSEY" + } + ], + "signTexts": [] + }, + "GAME_CORNER": { + "blockLength": 90, + "label": "GameCorner", + "objects": [ + { + "name": "GAMECORNER_BEAUTY1", + "text": "TEXT_GAMECORNER_BEAUTY1" + }, + { + "name": "GAMECORNER_CLERK", + "text": "TEXT_GAMECORNER_CLERK" + }, + { + "name": "GAMECORNER_MIDDLE_AGED_MAN1", + "text": "TEXT_GAMECORNER_MIDDLE_AGED_MAN1" + }, + { + "name": "GAMECORNER_BEAUTY2", + "text": "TEXT_GAMECORNER_BEAUTY2" + }, + { + "name": "GAMECORNER_FISHING_GURU1", + "text": "TEXT_GAMECORNER_FISHING_GURU1" + }, + { + "name": "GAMECORNER_MIDDLE_AGED_WOMAN", + "text": "TEXT_GAMECORNER_MIDDLE_AGED_WOMAN" + }, + { + "name": "GAMECORNER_GYM_GUIDE", + "text": "TEXT_GAMECORNER_GYM_GUIDE" + }, + { + "name": "GAMECORNER_GAMBLER", + "text": "TEXT_GAMECORNER_GAMBLER" + }, + { + "name": "GAMECORNER_MIDDLE_AGED_MAN2", + "text": "TEXT_GAMECORNER_MIDDLE_AGED_MAN2" + }, + { + "name": "GAMECORNER_FISHING_GURU2", + "text": "TEXT_GAMECORNER_FISHING_GURU2" + }, + { + "name": "GAMECORNER_ROCKET", + "text": "TEXT_GAMECORNER_ROCKET", + "trainerClass": "OPP_ROCKET", + "trainerParty": 7 + } + ], + "signTexts": [ + "TEXT_GAMECORNER_POSTER" + ] + }, + "GAME_CORNER_PRIZE_ROOM": { + "blockLength": 20, + "label": "GameCornerPrizeRoom", + "objects": [ + { + "name": "GAMECORNERPRIZEROOM_BALDING_GUY", + "text": "TEXT_GAMECORNERPRIZEROOM_BALDING_GUY" + }, + { + "name": "GAMECORNERPRIZEROOM_GAMBLER", + "text": "TEXT_GAMECORNERPRIZEROOM_GAMBLER" + } + ], + "signTexts": [ + "TEXT_GAMECORNERPRIZEROOM_PRIZE_VENDOR_1", + "TEXT_GAMECORNERPRIZEROOM_PRIZE_VENDOR_2", + "TEXT_GAMECORNERPRIZEROOM_PRIZE_VENDOR_3" + ] + }, + "HALL_OF_FAME": { + "blockLength": 20, + "label": "HallOfFame", + "objects": [ + { + "name": "HALLOFFAME_OAK", + "text": "TEXT_HALLOFFAME_OAK" + } + ], + "signTexts": [] + }, + "INDIGO_PLATEAU": { + "blockLength": 90, + "label": "IndigoPlateau", + "objects": [], + "signTexts": [] + }, + "INDIGO_PLATEAU_LOBBY": { + "blockLength": 48, + "label": "IndigoPlateauLobby", + "objects": [ + { + "name": "INDIGOPLATEAULOBBY_NURSE", + "text": "TEXT_INDIGOPLATEAULOBBY_NURSE" + }, + { + "name": "INDIGOPLATEAULOBBY_GYM_GUIDE", + "text": "TEXT_INDIGOPLATEAULOBBY_GYM_GUIDE" + }, + { + "name": "INDIGOPLATEAULOBBY_COOLTRAINER_F", + "text": "TEXT_INDIGOPLATEAULOBBY_COOLTRAINER_F" + }, + { + "name": "INDIGOPLATEAULOBBY_CLERK", + "text": "TEXT_INDIGOPLATEAULOBBY_CLERK" + }, + { + "name": "INDIGOPLATEAULOBBY_LINK_RECEPTIONIST", + "text": "TEXT_INDIGOPLATEAULOBBY_LINK_RECEPTIONIST" + }, + { + "name": "INDIGOPLATEAULOBBY_CHANSEY", + "text": "TEXT_INDIGOPLATEAULOBBY_CHANSEY" + } + ], + "signTexts": [] + }, + "LANCES_ROOM": { + "blockLength": 169, + "label": "LancesRoom", + "objects": [ + { + "name": "LANCESROOM_LANCE", + "text": "TEXT_LANCESROOM_LANCE", + "trainerClass": "OPP_LANCE", + "trainerParty": 1 + } + ], + "signTexts": [] + }, + "LAVENDER_CUBONE_HOUSE": { + "blockLength": 16, + "label": "LavenderCuboneHouse", + "objects": [ + { + "name": "LAVENDERCUBONEHOUSE_CUBONE", + "text": "TEXT_LAVENDERCUBONEHOUSE_CUBONE" + }, + { + "name": "LAVENDERCUBONEHOUSE_BRUNETTE_GIRL", + "text": "TEXT_LAVENDERCUBONEHOUSE_BRUNETTE_GIRL" + } + ], + "signTexts": [] + }, + "LAVENDER_MART": { + "blockLength": 16, + "label": "LavenderMart", + "objects": [ + { + "name": "LAVENDERMART_CLERK", + "text": "TEXT_LAVENDERMART_CLERK" + }, + { + "name": "LAVENDERMART_BALDING_GUY", + "text": "TEXT_LAVENDERMART_BALDING_GUY" + }, + { + "name": "LAVENDERMART_COOLTRAINER_M", + "text": "TEXT_LAVENDERMART_COOLTRAINER_M" + } + ], + "signTexts": [] + }, + "LAVENDER_POKECENTER": { + "blockLength": 28, + "label": "LavenderPokecenter", + "objects": [ + { + "name": "LAVENDERPOKECENTER_NURSE", + "text": "TEXT_LAVENDERPOKECENTER_NURSE" + }, + { + "name": "LAVENDERPOKECENTER_GENTLEMAN", + "text": "TEXT_LAVENDERPOKECENTER_GENTLEMAN" + }, + { + "name": "LAVENDERPOKECENTER_LITTLE_GIRL", + "text": "TEXT_LAVENDERPOKECENTER_LITTLE_GIRL" + }, + { + "name": "LAVENDERPOKECENTER_LINK_RECEPTIONIST", + "text": "TEXT_LAVENDERPOKECENTER_LINK_RECEPTIONIST" + }, + { + "name": "LAVENDERPOKECENTER_CHANSEY", + "text": "TEXT_LAVENDERPOKECENTER_CHANSEY" + } + ], + "signTexts": [] + }, + "LAVENDER_TOWN": { + "blockLength": 90, + "label": "LavenderTown", + "objects": [ + { + "name": "LAVENDERTOWN_LITTLE_GIRL", + "text": "TEXT_LAVENDERTOWN_LITTLE_GIRL" + }, + { + "name": "LAVENDERTOWN_COOLTRAINER_M", + "text": "TEXT_LAVENDERTOWN_COOLTRAINER_M" + }, + { + "name": "LAVENDERTOWN_SUPER_NERD", + "text": "TEXT_LAVENDERTOWN_SUPER_NERD" + } + ], + "signTexts": [ + "TEXT_LAVENDERTOWN_SIGN", + "TEXT_LAVENDERTOWN_SILPH_SCOPE_SIGN", + "TEXT_LAVENDERTOWN_MART_SIGN", + "TEXT_LAVENDERTOWN_POKECENTER_SIGN", + "TEXT_LAVENDERTOWN_POKEMON_HOUSE_SIGN", + "TEXT_LAVENDERTOWN_POKEMON_TOWER_SIGN" + ] + }, + "LORELEIS_ROOM": { + "blockLength": 30, + "label": "LoreleisRoom", + "objects": [ + { + "name": "LORELEISROOM_LORELEI", + "text": "TEXT_LORELEISROOM_LORELEI", + "trainerClass": "OPP_LORELEI", + "trainerParty": 1 + } + ], + "signTexts": [] + }, + "MR_FUJIS_HOUSE": { + "blockLength": 16, + "label": "MrFujisHouse", + "objects": [ + { + "name": "MRFUJISHOUSE_SUPER_NERD", + "text": "TEXT_MRFUJISHOUSE_SUPER_NERD" + }, + { + "name": "MRFUJISHOUSE_LITTLE_GIRL", + "text": "TEXT_MRFUJISHOUSE_LITTLE_GIRL" + }, + { + "name": "MRFUJISHOUSE_PSYDUCK", + "text": "TEXT_MRFUJISHOUSE_PSYDUCK" + }, + { + "name": "MRFUJISHOUSE_NIDORINO", + "text": "TEXT_MRFUJISHOUSE_NIDORINO" + }, + { + "hidden": true, + "name": "MRFUJISHOUSE_MR_FUJI", + "text": "TEXT_MRFUJISHOUSE_MR_FUJI" + }, + { + "name": "MRFUJISHOUSE_POKEDEX", + "text": "TEXT_MRFUJISHOUSE_POKEDEX" + } + ], + "signTexts": [] + }, + "MR_PSYCHICS_HOUSE": { + "blockLength": 16, + "label": "MrPsychicsHouse", + "objects": [ + { + "name": "MRPSYCHICSHOUSE_MR_PSYCHIC", + "text": "TEXT_MRPSYCHICSHOUSE_MR_PSYCHIC" + } + ], + "signTexts": [] + }, + "MT_MOON_1F": { + "blockLength": 360, + "label": "MtMoon1F", + "objects": [ + { + "name": "MTMOON1F_HIKER", + "text": "TEXT_MTMOON1F_HIKER", + "trainerClass": "OPP_HIKER", + "trainerParty": 1 + }, + { + "name": "MTMOON1F_YOUNGSTER1", + "text": "TEXT_MTMOON1F_YOUNGSTER1", + "trainerClass": "OPP_YOUNGSTER", + "trainerParty": 3 + }, + { + "name": "MTMOON1F_COOLTRAINER_F1", + "text": "TEXT_MTMOON1F_COOLTRAINER_F1", + "trainerClass": "OPP_LASS", + "trainerParty": 5 + }, + { + "name": "MTMOON1F_SUPER_NERD", + "text": "TEXT_MTMOON1F_SUPER_NERD", + "trainerClass": "OPP_SUPER_NERD", + "trainerParty": 1 + }, + { + "name": "MTMOON1F_COOLTRAINER_F2", + "text": "TEXT_MTMOON1F_COOLTRAINER_F2", + "trainerClass": "OPP_LASS", + "trainerParty": 6 + }, + { + "name": "MTMOON1F_YOUNGSTER2", + "text": "TEXT_MTMOON1F_YOUNGSTER2", + "trainerClass": "OPP_BUG_CATCHER", + "trainerParty": 7 + }, + { + "name": "MTMOON1F_YOUNGSTER3", + "text": "TEXT_MTMOON1F_YOUNGSTER3", + "trainerClass": "OPP_BUG_CATCHER", + "trainerParty": 8 + }, + { + "item": "POTION", + "name": "MTMOON1F_POTION1", + "text": "TEXT_MTMOON1F_POTION1" + }, + { + "item": "MOON_STONE", + "name": "MTMOON1F_MOON_STONE", + "text": "TEXT_MTMOON1F_MOON_STONE" + }, + { + "item": "RARE_CANDY", + "name": "MTMOON1F_RARE_CANDY", + "text": "TEXT_MTMOON1F_RARE_CANDY" + }, + { + "item": "ESCAPE_ROPE", + "name": "MTMOON1F_ESCAPE_ROPE", + "text": "TEXT_MTMOON1F_ESCAPE_ROPE" + }, + { + "item": "POTION", + "name": "MTMOON1F_POTION2", + "text": "TEXT_MTMOON1F_POTION2" + }, + { + "item": "TM_WATER_GUN", + "name": "MTMOON1F_TM_WATER_GUN", + "text": "TEXT_MTMOON1F_TM_WATER_GUN" + } + ], + "signTexts": [ + "TEXT_MTMOON1F_BEWARE_ZUBAT_SIGN" + ] + }, + "MT_MOON_B1F": { + "blockLength": 196, + "label": "MtMoonB1F", + "objects": [], + "signTexts": [] + }, + "MT_MOON_B2F": { + "blockLength": 360, + "label": "MtMoonB2F", + "objects": [ + { + "name": "MTMOONB2F_SUPER_NERD", + "text": "TEXT_MTMOONB2F_SUPER_NERD", + "trainerClass": "OPP_SUPER_NERD", + "trainerParty": 2 + }, + { + "hidden": true, + "name": "MTMOONB2F_JESSIE", + "text": "TEXT_MTMOONB2F_JESSIE" + }, + { + "name": "MTMOONB2F_ROCKET1", + "text": "TEXT_MTMOONB2F_ROCKET1", + "trainerClass": "OPP_ROCKET", + "trainerParty": 2 + }, + { + "name": "MTMOONB2F_ROCKET2", + "text": "TEXT_MTMOONB2F_ROCKET2", + "trainerClass": "OPP_ROCKET", + "trainerParty": 3 + }, + { + "name": "MTMOONB2F_ROCKET3", + "text": "TEXT_MTMOONB2F_ROCKET3", + "trainerClass": "OPP_ROCKET", + "trainerParty": 1 + }, + { + "hidden": true, + "name": "MTMOONB2F_JAMES", + "text": "TEXT_MTMOONB2F_JAMES" + }, + { + "name": "MTMOONB2F_DOME_FOSSIL", + "text": "TEXT_MTMOONB2F_DOME_FOSSIL" + }, + { + "name": "MTMOONB2F_HELIX_FOSSIL", + "text": "TEXT_MTMOONB2F_HELIX_FOSSIL" + }, + { + "item": "HP_UP", + "name": "MTMOONB2F_HP_UP", + "text": "TEXT_MTMOONB2F_HP_UP" + }, + { + "item": "TM_MEGA_PUNCH", + "name": "MTMOONB2F_TM_MEGA_PUNCH", + "text": "TEXT_MTMOONB2F_TM_MEGA_PUNCH" + } + ], + "signTexts": [] + }, + "MT_MOON_POKECENTER": { + "blockLength": 28, + "label": "MtMoonPokecenter", + "objects": [ + { + "name": "MTMOONPOKECENTER_NURSE", + "text": "TEXT_MTMOONPOKECENTER_NURSE" + }, + { + "name": "MTMOONPOKECENTER_YOUNGSTER", + "text": "TEXT_MTMOONPOKECENTER_YOUNGSTER" + }, + { + "name": "MTMOONPOKECENTER_GENTLEMAN", + "text": "TEXT_MTMOONPOKECENTER_GENTLEMAN" + }, + { + "name": "MTMOONPOKECENTER_MAGIKARP_SALESMAN", + "text": "TEXT_MTMOONPOKECENTER_MAGIKARP_SALESMAN" + }, + { + "name": "MTMOONPOKECENTER_CLIPBOARD", + "text": "TEXT_MTMOONPOKECENTER_CLIPBOARD" + }, + { + "name": "MTMOONPOKECENTER_LINK_RECEPTIONIST", + "text": "TEXT_MTMOONPOKECENTER_LINK_RECEPTIONIST" + }, + { + "name": "MTMOONPOKECENTER_CHANSEY", + "text": "TEXT_MTMOONPOKECENTER_CHANSEY" + } + ], + "signTexts": [] + }, + "MUSEUM_1F": { + "blockLength": 40, + "label": "Museum1F", + "objects": [ + { + "name": "MUSEUM1F_SCIENTIST1", + "text": "TEXT_MUSEUM1F_SCIENTIST1" + }, + { + "name": "MUSEUM1F_GAMBLER", + "text": "TEXT_MUSEUM1F_GAMBLER" + }, + { + "name": "MUSEUM1F_SCIENTIST2", + "text": "TEXT_MUSEUM1F_SCIENTIST2" + }, + { + "name": "MUSEUM1F_SCIENTIST3", + "text": "TEXT_MUSEUM1F_SCIENTIST3" + }, + { + "name": "MUSEUM1F_OLD_AMBER", + "text": "TEXT_MUSEUM1F_OLD_AMBER" + } + ], + "signTexts": [] + }, + "MUSEUM_2F": { + "blockLength": 28, + "label": "Museum2F", + "objects": [ + { + "name": "MUSEUM2F_YOUNGSTER", + "text": "TEXT_MUSEUM2F_YOUNGSTER" + }, + { + "name": "MUSEUM2F_GRAMPS", + "text": "TEXT_MUSEUM2F_GRAMPS" + }, + { + "name": "MUSEUM2F_SCIENTIST", + "text": "TEXT_MUSEUM2F_SCIENTIST" + }, + { + "name": "MUSEUM2F_BRUNETTE_GIRL", + "text": "TEXT_MUSEUM2F_BRUNETTE_GIRL" + }, + { + "name": "MUSEUM2F_HIKER", + "text": "TEXT_MUSEUM2F_HIKER" + } + ], + "signTexts": [ + "TEXT_MUSEUM2F_SPACE_SHUTTLE_SIGN", + "TEXT_MUSEUM2F_MOON_STONE_SIGN" + ] + }, + "NAME_RATERS_HOUSE": { + "blockLength": 16, + "label": "NameRatersHouse", + "objects": [ + { + "name": "NAMERATERSHOUSE_NAME_RATER", + "text": "TEXT_NAMERATERSHOUSE_NAME_RATER" + } + ], + "signTexts": [] + }, + "OAKS_LAB": { + "blockLength": 30, + "label": "OaksLab", + "objects": [ + { + "name": "OAKSLAB_RIVAL", + "text": "TEXT_OAKSLAB_RIVAL", + "trainerClass": "OPP_RIVAL1", + "trainerParty": 1 + }, + { + "name": "OAKSLAB_EEVEE_POKE_BALL", + "text": "TEXT_OAKSLAB_EEVEE_POKE_BALL" + }, + { + "hidden": true, + "name": "OAKSLAB_OAK1", + "text": "TEXT_OAKSLAB_OAK1" + }, + { + "name": "OAKSLAB_POKEDEX1", + "text": "TEXT_OAKSLAB_POKEDEX1" + }, + { + "name": "OAKSLAB_POKEDEX2", + "text": "TEXT_OAKSLAB_POKEDEX2" + }, + { + "hidden": true, + "name": "OAKSLAB_OAK2", + "text": "TEXT_OAKSLAB_OAK2" + }, + { + "name": "OAKSLAB_GIRL", + "text": "TEXT_OAKSLAB_GIRL" + }, + { + "name": "OAKSLAB_SCIENTIST1", + "text": "TEXT_OAKSLAB_SCIENTIST1" + }, + { + "name": "OAKSLAB_SCIENTIST2", + "text": "TEXT_OAKSLAB_SCIENTIST2" + } + ], + "signTexts": [] + }, + "PALLET_TOWN": { + "blockLength": 90, + "label": "PalletTown", + "objects": [ + { + "hidden": true, + "name": "PALLETTOWN_OAK", + "text": "TEXT_PALLETTOWN_OAK" + }, + { + "name": "PALLETTOWN_GIRL", + "text": "TEXT_PALLETTOWN_GIRL" + }, + { + "name": "PALLETTOWN_FISHER", + "text": "TEXT_PALLETTOWN_FISHER" + } + ], + "signTexts": [ + "TEXT_PALLETTOWN_OAKSLAB_SIGN", + "TEXT_PALLETTOWN_SIGN", + "TEXT_PALLETTOWN_PLAYERSHOUSE_SIGN", + "TEXT_PALLETTOWN_RIVALSHOUSE_SIGN" + ] + }, + "PEWTER_CITY": { + "blockLength": 360, + "label": "PewterCity", + "objects": [ + { + "name": "PEWTERCITY_COOLTRAINER_F", + "text": "TEXT_PEWTERCITY_COOLTRAINER_F" + }, + { + "name": "PEWTERCITY_COOLTRAINER_M", + "text": "TEXT_PEWTERCITY_COOLTRAINER_M" + }, + { + "name": "PEWTERCITY_SUPER_NERD1", + "text": "TEXT_PEWTERCITY_SUPER_NERD1" + }, + { + "name": "PEWTERCITY_SUPER_NERD2", + "text": "TEXT_PEWTERCITY_SUPER_NERD2" + }, + { + "name": "PEWTERCITY_YOUNGSTER", + "text": "TEXT_PEWTERCITY_YOUNGSTER" + } + ], + "signTexts": [ + "TEXT_PEWTERCITY_TRAINER_TIPS", + "TEXT_PEWTERCITY_POLICE_NOTICE_SIGN", + "TEXT_PEWTERCITY_MART_SIGN", + "TEXT_PEWTERCITY_POKECENTER_SIGN", + "TEXT_PEWTERCITY_MUSEUM_SIGN", + "TEXT_PEWTERCITY_GYM_SIGN", + "TEXT_PEWTERCITY_SIGN" + ] + }, + "PEWTER_GYM": { + "blockLength": 35, + "label": "PewterGym", + "objects": [ + { + "name": "PEWTERGYM_BROCK", + "text": "TEXT_PEWTERGYM_BROCK", + "trainerClass": "OPP_BROCK", + "trainerParty": 1 + }, + { + "name": "PEWTERGYM_COOLTRAINER_M", + "text": "TEXT_PEWTERGYM_COOLTRAINER_M", + "trainerClass": "OPP_JR_TRAINER_M", + "trainerParty": 1 + }, + { + "name": "PEWTERGYM_GYM_GUIDE", + "text": "TEXT_PEWTERGYM_GYM_GUIDE" + } + ], + "signTexts": [] + }, + "PEWTER_MART": { + "blockLength": 16, + "label": "PewterMart", + "objects": [ + { + "name": "PEWTERMART_CLERK", + "text": "TEXT_PEWTERMART_CLERK" + }, + { + "name": "PEWTERMART_YOUNGSTER", + "text": "TEXT_PEWTERMART_YOUNGSTER" + }, + { + "name": "PEWTERMART_SUPER_NERD", + "text": "TEXT_PEWTERMART_SUPER_NERD" + } + ], + "signTexts": [] + }, + "PEWTER_NIDORAN_HOUSE": { + "blockLength": 16, + "label": "PewterNidoranHouse", + "objects": [ + { + "name": "PEWTERNIDORANHOUSE_NIDORAN", + "text": "TEXT_PEWTERNIDORANHOUSE_NIDORAN" + }, + { + "name": "PEWTERNIDORANHOUSE_LITTLE_BOY", + "text": "TEXT_PEWTERNIDORANHOUSE_LITTLE_BOY" + }, + { + "name": "PEWTERNIDORANHOUSE_MIDDLE_AGED_MAN", + "text": "TEXT_PEWTERNIDORANHOUSE_MIDDLE_AGED_MAN" + } + ], + "signTexts": [] + }, + "PEWTER_POKECENTER": { + "blockLength": 28, + "label": "PewterPokecenter", + "objects": [ + { + "name": "PEWTERPOKECENTER_NURSE", + "text": "TEXT_PEWTERPOKECENTER_NURSE" + }, + { + "name": "PEWTERPOKECENTER_GENTLEMAN", + "text": "TEXT_PEWTERPOKECENTER_GENTLEMAN" + }, + { + "name": "PEWTERPOKECENTER_JIGGLYPUFF", + "text": "TEXT_PEWTERPOKECENTER_JIGGLYPUFF" + }, + { + "name": "PEWTERPOKECENTER_LINK_RECEPTIONIST", + "text": "TEXT_PEWTERPOKECENTER_LINK_RECEPTIONIST" + }, + { + "name": "PEWTERPOKECENTER_COOLTRAINER_F", + "text": "TEXT_PEWTERPOKECENTER_COOLTRAINER_F" + }, + { + "name": "PEWTERPOKECENTER_CHANSEY", + "text": "TEXT_PEWTERPOKECENTER_CHANSEY" + } + ], + "signTexts": [] + }, + "PEWTER_SPEECH_HOUSE": { + "blockLength": 16, + "label": "PewterSpeechHouse", + "objects": [ + { + "name": "PEWTERSPEECHHOUSE_GAMBLER", + "text": "TEXT_PEWTERSPEECHHOUSE_GAMBLER" + }, + { + "name": "PEWTERSPEECHHOUSE_YOUNGSTER", + "text": "TEXT_PEWTERSPEECHHOUSE_YOUNGSTER" + } + ], + "signTexts": [] + }, + "POKEMON_FAN_CLUB": { + "blockLength": 16, + "label": "PokemonFanClub", + "objects": [ + { + "name": "POKEMONFANCLUB_CLEFAIRY_FAN", + "text": "TEXT_POKEMONFANCLUB_CLEFAIRY_FAN" + }, + { + "name": "POKEMONFANCLUB_SEEL_FAN", + "text": "TEXT_POKEMONFANCLUB_SEEL_FAN" + }, + { + "name": "POKEMONFANCLUB_CLEFAIRY", + "text": "TEXT_POKEMONFANCLUB_CLEFAIRY" + }, + { + "name": "POKEMONFANCLUB_SEEL", + "text": "TEXT_POKEMONFANCLUB_SEEL" + }, + { + "name": "POKEMONFANCLUB_CHAIRMAN", + "text": "TEXT_POKEMONFANCLUB_CHAIRMAN" + }, + { + "name": "POKEMONFANCLUB_RECEPTIONIST", + "text": "TEXT_POKEMONFANCLUB_RECEPTIONIST" + } + ], + "signTexts": [] + }, + "POKEMON_MANSION_1F": { + "blockLength": 210, + "label": "PokemonMansion1F", + "objects": [ + { + "name": "POKEMONMANSION1F_SCIENTIST", + "text": "TEXT_POKEMONMANSION1F_SCIENTIST", + "trainerClass": "OPP_SCIENTIST", + "trainerParty": 4 + }, + { + "item": "ESCAPE_ROPE", + "name": "POKEMONMANSION1F_ESCAPE_ROPE", + "text": "TEXT_POKEMONMANSION1F_ESCAPE_ROPE" + }, + { + "item": "CARBOS", + "name": "POKEMONMANSION1F_CARBOS", + "text": "TEXT_POKEMONMANSION1F_CARBOS" + } + ], + "signTexts": [] + }, + "POKEMON_MANSION_2F": { + "blockLength": 210, + "label": "PokemonMansion2F", + "objects": [ + { + "name": "POKEMONMANSION2F_SUPER_NERD", + "text": "TEXT_POKEMONMANSION2F_SUPER_NERD", + "trainerClass": "OPP_BURGLAR", + "trainerParty": 7 + }, + { + "item": "CALCIUM", + "name": "POKEMONMANSION2F_CALCIUM", + "text": "TEXT_POKEMONMANSION2F_CALCIUM" + }, + { + "name": "POKEMONMANSION2F_DIARY1", + "text": "TEXT_POKEMONMANSION2F_DIARY1" + }, + { + "name": "POKEMONMANSION2F_DIARY2", + "text": "TEXT_POKEMONMANSION2F_DIARY2" + } + ], + "signTexts": [] + }, + "POKEMON_MANSION_3F": { + "blockLength": 135, + "label": "PokemonMansion3F", + "objects": [ + { + "name": "POKEMONMANSION3F_SUPER_NERD", + "text": "TEXT_POKEMONMANSION3F_SUPER_NERD", + "trainerClass": "OPP_BURGLAR", + "trainerParty": 8 + }, + { + "name": "POKEMONMANSION3F_SCIENTIST", + "text": "TEXT_POKEMONMANSION3F_SCIENTIST", + "trainerClass": "OPP_SCIENTIST", + "trainerParty": 12 + }, + { + "item": "MAX_POTION", + "name": "POKEMONMANSION3F_MAX_POTION", + "text": "TEXT_POKEMONMANSION3F_MAX_POTION" + }, + { + "item": "IRON", + "name": "POKEMONMANSION3F_IRON", + "text": "TEXT_POKEMONMANSION3F_IRON" + }, + { + "name": "POKEMONMANSION3F_DIARY", + "text": "TEXT_POKEMONMANSION3F_DIARY" + } + ], + "signTexts": [] + }, + "POKEMON_MANSION_B1F": { + "blockLength": 210, + "label": "PokemonMansionB1F", + "objects": [ + { + "name": "POKEMONMANSIONB1F_BURGLAR", + "text": "TEXT_POKEMONMANSIONB1F_BURGLAR", + "trainerClass": "OPP_BURGLAR", + "trainerParty": 9 + }, + { + "name": "POKEMONMANSIONB1F_SCIENTIST", + "text": "TEXT_POKEMONMANSIONB1F_SCIENTIST", + "trainerClass": "OPP_SCIENTIST", + "trainerParty": 13 + }, + { + "item": "RARE_CANDY", + "name": "POKEMONMANSIONB1F_RARE_CANDY", + "text": "TEXT_POKEMONMANSIONB1F_RARE_CANDY" + }, + { + "item": "FULL_RESTORE", + "name": "POKEMONMANSIONB1F_FULL_RESTORE", + "text": "TEXT_POKEMONMANSIONB1F_FULL_RESTORE" + }, + { + "item": "TM_BLIZZARD", + "name": "POKEMONMANSIONB1F_TM_BLIZZARD", + "text": "TEXT_POKEMONMANSIONB1F_TM_BLIZZARD" + }, + { + "item": "TM_SOLARBEAM", + "name": "POKEMONMANSIONB1F_TM_SOLARBEAM", + "text": "TEXT_POKEMONMANSIONB1F_TM_SOLARBEAM" + }, + { + "name": "POKEMONMANSIONB1F_DIARY", + "text": "TEXT_POKEMONMANSIONB1F_DIARY" + }, + { + "item": "SECRET_KEY", + "name": "POKEMONMANSIONB1F_SECRET_KEY", + "text": "TEXT_POKEMONMANSIONB1F_SECRET_KEY" + } + ], + "signTexts": [] + }, + "POKEMON_TOWER_1F": { + "blockLength": 90, + "label": "PokemonTower1F", + "objects": [ + { + "name": "POKEMONTOWER1F_RECEPTIONIST", + "text": "TEXT_POKEMONTOWER1F_RECEPTIONIST" + }, + { + "name": "POKEMONTOWER1F_MIDDLE_AGED_WOMAN", + "text": "TEXT_POKEMONTOWER1F_MIDDLE_AGED_WOMAN" + }, + { + "name": "POKEMONTOWER1F_BALDING_GUY", + "text": "TEXT_POKEMONTOWER1F_BALDING_GUY" + }, + { + "name": "POKEMONTOWER1F_GIRL", + "text": "TEXT_POKEMONTOWER1F_GIRL" + }, + { + "name": "POKEMONTOWER1F_CHANNELER", + "text": "TEXT_POKEMONTOWER1F_CHANNELER" + } + ], + "signTexts": [] + }, + "POKEMON_TOWER_2F": { + "blockLength": 90, + "label": "PokemonTower2F", + "objects": [ + { + "name": "POKEMONTOWER2F_RIVAL", + "text": "TEXT_POKEMONTOWER2F_RIVAL" + }, + { + "name": "POKEMONTOWER2F_CHANNELER", + "text": "TEXT_POKEMONTOWER2F_CHANNELER" + } + ], + "signTexts": [] + }, + "POKEMON_TOWER_3F": { + "blockLength": 90, + "label": "PokemonTower3F", + "objects": [ + { + "name": "POKEMONTOWER3F_CHANNELER1", + "text": "TEXT_POKEMONTOWER3F_CHANNELER1", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 5 + }, + { + "name": "POKEMONTOWER3F_CHANNELER2", + "text": "TEXT_POKEMONTOWER3F_CHANNELER2", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 6 + }, + { + "name": "POKEMONTOWER3F_CHANNELER3", + "text": "TEXT_POKEMONTOWER3F_CHANNELER3", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 8 + }, + { + "item": "ESCAPE_ROPE", + "name": "POKEMONTOWER3F_ESCAPE_ROPE", + "text": "TEXT_POKEMONTOWER3F_ESCAPE_ROPE" + } + ], + "signTexts": [] + }, + "POKEMON_TOWER_4F": { + "blockLength": 90, + "label": "PokemonTower4F", + "objects": [ + { + "name": "POKEMONTOWER4F_CHANNELER1", + "text": "TEXT_POKEMONTOWER4F_CHANNELER1", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 9 + }, + { + "name": "POKEMONTOWER4F_CHANNELER2", + "text": "TEXT_POKEMONTOWER4F_CHANNELER2", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 10 + }, + { + "name": "POKEMONTOWER4F_CHANNELER3", + "text": "TEXT_POKEMONTOWER4F_CHANNELER3", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 12 + }, + { + "item": "ELIXER", + "name": "POKEMONTOWER4F_ELIXER", + "text": "TEXT_POKEMONTOWER4F_ELIXER" + }, + { + "item": "AWAKENING", + "name": "POKEMONTOWER4F_AWAKENING", + "text": "TEXT_POKEMONTOWER4F_AWAKENING" + }, + { + "item": "HP_UP", + "name": "POKEMONTOWER4F_HP_UP", + "text": "TEXT_POKEMONTOWER4F_HP_UP" + } + ], + "signTexts": [] + }, + "POKEMON_TOWER_5F": { + "blockLength": 90, + "label": "PokemonTower5F", + "objects": [ + { + "name": "POKEMONTOWER5F_CHANNELER1", + "text": "TEXT_POKEMONTOWER5F_CHANNELER1" + }, + { + "name": "POKEMONTOWER5F_CHANNELER2", + "text": "TEXT_POKEMONTOWER5F_CHANNELER2", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 14 + }, + { + "name": "POKEMONTOWER5F_CHANNELER3", + "text": "TEXT_POKEMONTOWER5F_CHANNELER3", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 16 + }, + { + "name": "POKEMONTOWER5F_CHANNELER4", + "text": "TEXT_POKEMONTOWER5F_CHANNELER4", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 17 + }, + { + "name": "POKEMONTOWER5F_CHANNELER5", + "text": "TEXT_POKEMONTOWER5F_CHANNELER5", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 18 + }, + { + "item": "NUGGET", + "name": "POKEMONTOWER5F_NUGGET", + "text": "TEXT_POKEMONTOWER5F_NUGGET" + } + ], + "signTexts": [] + }, + "POKEMON_TOWER_6F": { + "blockLength": 90, + "label": "PokemonTower6F", + "objects": [ + { + "name": "POKEMONTOWER6F_CHANNELER1", + "text": "TEXT_POKEMONTOWER6F_CHANNELER1", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 19 + }, + { + "name": "POKEMONTOWER6F_CHANNELER2", + "text": "TEXT_POKEMONTOWER6F_CHANNELER2", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 20 + }, + { + "name": "POKEMONTOWER6F_CHANNELER3", + "text": "TEXT_POKEMONTOWER6F_CHANNELER3", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 21 + }, + { + "item": "RARE_CANDY", + "name": "POKEMONTOWER6F_RARE_CANDY", + "text": "TEXT_POKEMONTOWER6F_RARE_CANDY" + }, + { + "item": "X_ACCURACY", + "name": "POKEMONTOWER6F_X_ACCURACY", + "text": "TEXT_POKEMONTOWER6F_X_ACCURACY" + } + ], + "signTexts": [] + }, + "POKEMON_TOWER_7F": { + "blockLength": 90, + "label": "PokemonTower7F", + "objects": [ + { + "hidden": true, + "name": "POKEMONTOWER7F_JESSIE", + "text": "TEXT_POKEMONTOWER7F_JESSIE" + }, + { + "hidden": true, + "name": "POKEMONTOWER7F_JAMES", + "text": "TEXT_POKEMONTOWER7F_JAMES" + }, + { + "name": "POKEMONTOWER7F_MR_FUJI", + "text": "TEXT_POKEMONTOWER7F_MR_FUJI" + } + ], + "signTexts": [] + }, + "POWER_PLANT": { + "blockLength": 360, + "label": "PowerPlant", + "objects": [ + { + "name": "POWERPLANT_VOLTORB1", + "pokemon": "VOLTORB", + "text": "TEXT_POWERPLANT_VOLTORB1" + }, + { + "name": "POWERPLANT_VOLTORB2", + "pokemon": "VOLTORB", + "text": "TEXT_POWERPLANT_VOLTORB2" + }, + { + "name": "POWERPLANT_VOLTORB3", + "pokemon": "VOLTORB", + "text": "TEXT_POWERPLANT_VOLTORB3" + }, + { + "name": "POWERPLANT_ELECTRODE1", + "pokemon": "ELECTRODE", + "text": "TEXT_POWERPLANT_ELECTRODE1" + }, + { + "name": "POWERPLANT_VOLTORB4", + "pokemon": "VOLTORB", + "text": "TEXT_POWERPLANT_VOLTORB4" + }, + { + "name": "POWERPLANT_VOLTORB5", + "pokemon": "VOLTORB", + "text": "TEXT_POWERPLANT_VOLTORB5" + }, + { + "name": "POWERPLANT_ELECTRODE2", + "pokemon": "ELECTRODE", + "text": "TEXT_POWERPLANT_ELECTRODE2" + }, + { + "name": "POWERPLANT_VOLTORB6", + "pokemon": "VOLTORB", + "text": "TEXT_POWERPLANT_VOLTORB6" + }, + { + "name": "POWERPLANT_ZAPDOS", + "pokemon": "ZAPDOS", + "text": "TEXT_POWERPLANT_ZAPDOS" + }, + { + "item": "CARBOS", + "name": "POWERPLANT_CARBOS", + "text": "TEXT_POWERPLANT_CARBOS" + }, + { + "item": "HP_UP", + "name": "POWERPLANT_HP_UP", + "text": "TEXT_POWERPLANT_HP_UP" + }, + { + "item": "RARE_CANDY", + "name": "POWERPLANT_RARE_CANDY", + "text": "TEXT_POWERPLANT_RARE_CANDY" + }, + { + "item": "TM_THUNDER", + "name": "POWERPLANT_TM_THUNDER", + "text": "TEXT_POWERPLANT_TM_THUNDER" + }, + { + "item": "TM_REFLECT", + "name": "POWERPLANT_TM_REFLECT", + "text": "TEXT_POWERPLANT_TM_REFLECT" + } + ], + "signTexts": [] + }, + "REDS_HOUSE_1F": { + "blockLength": 16, + "label": "RedsHouse1F", + "objects": [ + { + "name": "REDSHOUSE1F_MOM", + "text": "TEXT_REDSHOUSE1F_MOM" + } + ], + "signTexts": [ + "TEXT_REDSHOUSE1F_TV" + ] + }, + "REDS_HOUSE_2F": { + "blockLength": 16, + "label": "RedsHouse2F", + "objects": [], + "signTexts": [] + }, + "ROCKET_HIDEOUT_B1F": { + "blockLength": 210, + "label": "RocketHideoutB1F", + "objects": [ + { + "name": "ROCKETHIDEOUTB1F_ROCKET1", + "text": "TEXT_ROCKETHIDEOUTB1F_ROCKET1", + "trainerClass": "OPP_ROCKET", + "trainerParty": 8 + }, + { + "name": "ROCKETHIDEOUTB1F_ROCKET2", + "text": "TEXT_ROCKETHIDEOUTB1F_ROCKET2", + "trainerClass": "OPP_ROCKET", + "trainerParty": 9 + }, + { + "name": "ROCKETHIDEOUTB1F_ROCKET3", + "text": "TEXT_ROCKETHIDEOUTB1F_ROCKET3", + "trainerClass": "OPP_ROCKET", + "trainerParty": 10 + }, + { + "name": "ROCKETHIDEOUTB1F_ROCKET4", + "text": "TEXT_ROCKETHIDEOUTB1F_ROCKET4", + "trainerClass": "OPP_ROCKET", + "trainerParty": 11 + }, + { + "name": "ROCKETHIDEOUTB1F_ROCKET5", + "text": "TEXT_ROCKETHIDEOUTB1F_ROCKET5", + "trainerClass": "OPP_ROCKET", + "trainerParty": 12 + }, + { + "item": "ESCAPE_ROPE", + "name": "ROCKETHIDEOUTB1F_ESCAPE_ROPE", + "text": "TEXT_ROCKETHIDEOUTB1F_ESCAPE_ROPE" + }, + { + "item": "HYPER_POTION", + "name": "ROCKETHIDEOUTB1F_HYPER_POTION", + "text": "TEXT_ROCKETHIDEOUTB1F_HYPER_POTION" + } + ], + "signTexts": [] + }, + "ROCKET_HIDEOUT_B2F": { + "blockLength": 210, + "label": "RocketHideoutB2F", + "objects": [ + { + "name": "ROCKETHIDEOUTB2F_ROCKET", + "text": "TEXT_ROCKETHIDEOUTB2F_ROCKET", + "trainerClass": "OPP_ROCKET", + "trainerParty": 13 + }, + { + "item": "MOON_STONE", + "name": "ROCKETHIDEOUTB2F_MOON_STONE", + "text": "TEXT_ROCKETHIDEOUTB2F_MOON_STONE" + }, + { + "item": "NUGGET", + "name": "ROCKETHIDEOUTB2F_NUGGET", + "text": "TEXT_ROCKETHIDEOUTB2F_NUGGET" + }, + { + "item": "TM_HORN_DRILL", + "name": "ROCKETHIDEOUTB2F_TM_HORN_DRILL", + "text": "TEXT_ROCKETHIDEOUTB2F_TM_HORN_DRILL" + }, + { + "item": "SUPER_POTION", + "name": "ROCKETHIDEOUTB2F_SUPER_POTION", + "text": "TEXT_ROCKETHIDEOUTB2F_SUPER_POTION" + } + ], + "signTexts": [] + }, + "ROCKET_HIDEOUT_B3F": { + "blockLength": 210, + "label": "RocketHideoutB3F", + "objects": [ + { + "name": "ROCKETHIDEOUTB3F_ROCKET1", + "text": "TEXT_ROCKETHIDEOUTB3F_ROCKET1", + "trainerClass": "OPP_ROCKET", + "trainerParty": 14 + }, + { + "name": "ROCKETHIDEOUTB3F_ROCKET2", + "text": "TEXT_ROCKETHIDEOUTB3F_ROCKET2", + "trainerClass": "OPP_ROCKET", + "trainerParty": 15 + }, + { + "item": "TM_DOUBLE_EDGE", + "name": "ROCKETHIDEOUTB3F_TM_DOUBLE_EDGE", + "text": "TEXT_ROCKETHIDEOUTB3F_TM_DOUBLE_EDGE" + }, + { + "item": "RARE_CANDY", + "name": "ROCKETHIDEOUTB3F_RARE_CANDY", + "text": "TEXT_ROCKETHIDEOUTB3F_RARE_CANDY" + } + ], + "signTexts": [] + }, + "ROCKET_HIDEOUT_B4F": { + "blockLength": 180, + "label": "RocketHideoutB4F", + "objects": [ + { + "name": "ROCKETHIDEOUTB4F_GIOVANNI", + "text": "TEXT_ROCKETHIDEOUTB4F_GIOVANNI", + "trainerClass": "OPP_GIOVANNI", + "trainerParty": 1 + }, + { + "hidden": true, + "name": "ROCKETHIDEOUTB4F_JAMES", + "text": "TEXT_ROCKETHIDEOUTB4F_JAMES" + }, + { + "hidden": true, + "name": "ROCKETHIDEOUTB4F_JESSIE", + "text": "TEXT_ROCKETHIDEOUTB4F_JESSIE" + }, + { + "name": "ROCKETHIDEOUTB4F_ROCKET", + "text": "TEXT_ROCKETHIDEOUTB4F_ROCKET", + "trainerClass": "OPP_ROCKET", + "trainerParty": 18 + }, + { + "item": "HP_UP", + "name": "ROCKETHIDEOUTB4F_HP_UP", + "text": "TEXT_ROCKETHIDEOUTB4F_HP_UP" + }, + { + "item": "TM_RAZOR_WIND", + "name": "ROCKETHIDEOUTB4F_TM_RAZOR_WIND", + "text": "TEXT_ROCKETHIDEOUTB4F_TM_RAZOR_WIND" + }, + { + "item": "IRON", + "name": "ROCKETHIDEOUTB4F_IRON", + "text": "TEXT_ROCKETHIDEOUTB4F_IRON" + }, + { + "hidden": true, + "item": "SILPH_SCOPE", + "name": "ROCKETHIDEOUTB4F_SILPH_SCOPE", + "text": "TEXT_ROCKETHIDEOUTB4F_SILPH_SCOPE" + }, + { + "hidden": true, + "item": "LIFT_KEY", + "name": "ROCKETHIDEOUTB4F_LIFT_KEY", + "text": "TEXT_ROCKETHIDEOUTB4F_LIFT_KEY" + } + ], + "signTexts": [] + }, + "ROCKET_HIDEOUT_ELEVATOR": { + "blockLength": 12, + "label": "RocketHideoutElevator", + "objects": [], + "signTexts": [ + "TEXT_ROCKETHIDEOUTELEVATOR" + ] + }, + "ROCK_TUNNEL_1F": { + "blockLength": 360, + "label": "RockTunnel1F", + "objects": [ + { + "name": "ROCKTUNNEL1F_HIKER1", + "text": "TEXT_ROCKTUNNEL1F_HIKER1", + "trainerClass": "OPP_HIKER", + "trainerParty": 12 + }, + { + "name": "ROCKTUNNEL1F_HIKER2", + "text": "TEXT_ROCKTUNNEL1F_HIKER2", + "trainerClass": "OPP_HIKER", + "trainerParty": 13 + }, + { + "name": "ROCKTUNNEL1F_HIKER3", + "text": "TEXT_ROCKTUNNEL1F_HIKER3", + "trainerClass": "OPP_HIKER", + "trainerParty": 14 + }, + { + "name": "ROCKTUNNEL1F_SUPER_NERD", + "text": "TEXT_ROCKTUNNEL1F_SUPER_NERD", + "trainerClass": "OPP_POKEMANIAC", + "trainerParty": 7 + }, + { + "name": "ROCKTUNNEL1F_COOLTRAINER_F1", + "text": "TEXT_ROCKTUNNEL1F_COOLTRAINER_F1", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 17 + }, + { + "name": "ROCKTUNNEL1F_COOLTRAINER_F2", + "text": "TEXT_ROCKTUNNEL1F_COOLTRAINER_F2", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 18 + }, + { + "name": "ROCKTUNNEL1F_COOLTRAINER_F3", + "text": "TEXT_ROCKTUNNEL1F_COOLTRAINER_F3", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 19 + } + ], + "signTexts": [ + "TEXT_ROCKTUNNEL1F_SIGN" + ] + }, + "ROCK_TUNNEL_B1F": { + "blockLength": 360, + "label": "RockTunnelB1F", + "objects": [ + { + "name": "ROCKTUNNELB1F_COOLTRAINER_F1", + "text": "TEXT_ROCKTUNNELB1F_COOLTRAINER_F1", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 9 + }, + { + "name": "ROCKTUNNELB1F_HIKER1", + "text": "TEXT_ROCKTUNNELB1F_HIKER1", + "trainerClass": "OPP_HIKER", + "trainerParty": 9 + }, + { + "name": "ROCKTUNNELB1F_SUPER_NERD1", + "text": "TEXT_ROCKTUNNELB1F_SUPER_NERD1", + "trainerClass": "OPP_POKEMANIAC", + "trainerParty": 3 + }, + { + "name": "ROCKTUNNELB1F_SUPER_NERD2", + "text": "TEXT_ROCKTUNNELB1F_SUPER_NERD2", + "trainerClass": "OPP_POKEMANIAC", + "trainerParty": 4 + }, + { + "name": "ROCKTUNNELB1F_HIKER2", + "text": "TEXT_ROCKTUNNELB1F_HIKER2", + "trainerClass": "OPP_HIKER", + "trainerParty": 10 + }, + { + "name": "ROCKTUNNELB1F_COOLTRAINER_F2", + "text": "TEXT_ROCKTUNNELB1F_COOLTRAINER_F2", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 10 + }, + { + "name": "ROCKTUNNELB1F_HIKER3", + "text": "TEXT_ROCKTUNNELB1F_HIKER3", + "trainerClass": "OPP_HIKER", + "trainerParty": 11 + }, + { + "name": "ROCKTUNNELB1F_SUPER_NERD3", + "text": "TEXT_ROCKTUNNELB1F_SUPER_NERD3", + "trainerClass": "OPP_POKEMANIAC", + "trainerParty": 5 + } + ], + "signTexts": [] + }, + "ROCK_TUNNEL_POKECENTER": { + "blockLength": 28, + "label": "RockTunnelPokecenter", + "objects": [ + { + "name": "ROCKTUNNELPOKECENTER_NURSE", + "text": "TEXT_ROCKTUNNELPOKECENTER_NURSE" + }, + { + "name": "ROCKTUNNELPOKECENTER_GENTLEMAN", + "text": "TEXT_ROCKTUNNELPOKECENTER_GENTLEMAN" + }, + { + "name": "ROCKTUNNELPOKECENTER_FISHER", + "text": "TEXT_ROCKTUNNELPOKECENTER_FISHER" + }, + { + "name": "ROCKTUNNELPOKECENTER_LINK_RECEPTIONIST", + "text": "TEXT_ROCKTUNNELPOKECENTER_LINK_RECEPTIONIST" + }, + { + "name": "ROCKTUNNELPOKECENTER_CHANSEY", + "text": "TEXT_ROCKTUNNELPOKECENTER_CHANSEY" + } + ], + "signTexts": [] + }, + "ROUTE_1": { + "blockLength": 180, + "label": "Route1", + "objects": [ + { + "name": "ROUTE1_YOUNGSTER1", + "text": "TEXT_ROUTE1_YOUNGSTER1" + }, + { + "name": "ROUTE1_YOUNGSTER2", + "text": "TEXT_ROUTE1_YOUNGSTER2" + } + ], + "signTexts": [ + "TEXT_ROUTE1_SIGN" + ] + }, + "ROUTE_10": { + "blockLength": 360, + "label": "Route10", + "objects": [ + { + "name": "ROUTE10_SUPER_NERD1", + "text": "TEXT_ROUTE10_SUPER_NERD1", + "trainerClass": "OPP_POKEMANIAC", + "trainerParty": 1 + }, + { + "name": "ROUTE10_HIKER1", + "text": "TEXT_ROUTE10_HIKER1", + "trainerClass": "OPP_HIKER", + "trainerParty": 7 + }, + { + "name": "ROUTE10_SUPER_NERD2", + "text": "TEXT_ROUTE10_SUPER_NERD2", + "trainerClass": "OPP_POKEMANIAC", + "trainerParty": 2 + }, + { + "name": "ROUTE10_COOLTRAINER_F1", + "text": "TEXT_ROUTE10_COOLTRAINER_F1", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 7 + }, + { + "name": "ROUTE10_HIKER2", + "text": "TEXT_ROUTE10_HIKER2", + "trainerClass": "OPP_HIKER", + "trainerParty": 8 + }, + { + "name": "ROUTE10_COOLTRAINER_F2", + "text": "TEXT_ROUTE10_COOLTRAINER_F2", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 8 + } + ], + "signTexts": [ + "TEXT_ROUTE10_ROCKTUNNEL_NORTH_SIGN", + "TEXT_ROUTE10_POKECENTER_SIGN", + "TEXT_ROUTE10_ROCKTUNNEL_SOUTH_SIGN", + "TEXT_ROUTE10_POWERPLANT_SIGN" + ] + }, + "ROUTE_11": { + "blockLength": 270, + "label": "Route11", + "objects": [ + { + "name": "ROUTE11_GAMBLER1", + "text": "TEXT_ROUTE11_GAMBLER1", + "trainerClass": "OPP_GAMBLER", + "trainerParty": 1 + }, + { + "name": "ROUTE11_GAMBLER2", + "text": "TEXT_ROUTE11_GAMBLER2", + "trainerClass": "OPP_GAMBLER", + "trainerParty": 2 + }, + { + "name": "ROUTE11_YOUNGSTER1", + "text": "TEXT_ROUTE11_YOUNGSTER1", + "trainerClass": "OPP_YOUNGSTER", + "trainerParty": 9 + }, + { + "name": "ROUTE11_SUPER_NERD1", + "text": "TEXT_ROUTE11_SUPER_NERD1", + "trainerClass": "OPP_ENGINEER", + "trainerParty": 2 + }, + { + "name": "ROUTE11_YOUNGSTER2", + "text": "TEXT_ROUTE11_YOUNGSTER2", + "trainerClass": "OPP_YOUNGSTER", + "trainerParty": 10 + }, + { + "name": "ROUTE11_GAMBLER3", + "text": "TEXT_ROUTE11_GAMBLER3", + "trainerClass": "OPP_GAMBLER", + "trainerParty": 3 + }, + { + "name": "ROUTE11_GAMBLER4", + "text": "TEXT_ROUTE11_GAMBLER4", + "trainerClass": "OPP_GAMBLER", + "trainerParty": 4 + }, + { + "name": "ROUTE11_YOUNGSTER3", + "text": "TEXT_ROUTE11_YOUNGSTER3", + "trainerClass": "OPP_YOUNGSTER", + "trainerParty": 11 + }, + { + "name": "ROUTE11_SUPER_NERD2", + "text": "TEXT_ROUTE11_SUPER_NERD2", + "trainerClass": "OPP_ENGINEER", + "trainerParty": 3 + }, + { + "name": "ROUTE11_YOUNGSTER4", + "text": "TEXT_ROUTE11_YOUNGSTER4", + "trainerClass": "OPP_YOUNGSTER", + "trainerParty": 12 + } + ], + "signTexts": [ + "TEXT_ROUTE11_DIGLETTSCAVE_SIGN" + ] + }, + "ROUTE_11_GATE_1F": { + "blockLength": 20, + "label": "Route11Gate1F", + "objects": [ + { + "name": "ROUTE11GATE1F_GUARD", + "text": "TEXT_ROUTE11GATE1F_GUARD" + } + ], + "signTexts": [] + }, + "ROUTE_11_GATE_2F": { + "blockLength": 16, + "label": "Route11Gate2F", + "objects": [ + { + "name": "ROUTE11GATE2F_YOUNGSTER", + "text": "TEXT_ROUTE11GATE2F_YOUNGSTER" + }, + { + "name": "ROUTE11GATE2F_OAKS_AIDE", + "text": "TEXT_ROUTE11GATE2F_OAKS_AIDE" + } + ], + "signTexts": [ + "TEXT_ROUTE11GATE2F_LEFT_BINOCULARS", + "TEXT_ROUTE11GATE2F_RIGHT_BINOCULARS" + ] + }, + "ROUTE_12": { + "blockLength": 540, + "label": "Route12", + "objects": [ + { + "name": "ROUTE12_SNORLAX", + "text": "TEXT_ROUTE12_SNORLAX" + }, + { + "name": "ROUTE12_FISHER1", + "text": "TEXT_ROUTE12_FISHER1", + "trainerClass": "OPP_FISHER", + "trainerParty": 3 + }, + { + "name": "ROUTE12_FISHER2", + "text": "TEXT_ROUTE12_FISHER2", + "trainerClass": "OPP_FISHER", + "trainerParty": 4 + }, + { + "name": "ROUTE12_COOLTRAINER_M", + "text": "TEXT_ROUTE12_COOLTRAINER_M", + "trainerClass": "OPP_JR_TRAINER_M", + "trainerParty": 9 + }, + { + "name": "ROUTE12_SUPER_NERD", + "text": "TEXT_ROUTE12_SUPER_NERD", + "trainerClass": "OPP_ROCKER", + "trainerParty": 2 + }, + { + "name": "ROUTE12_FISHER3", + "text": "TEXT_ROUTE12_FISHER3", + "trainerClass": "OPP_FISHER", + "trainerParty": 5 + }, + { + "name": "ROUTE12_FISHER4", + "text": "TEXT_ROUTE12_FISHER4", + "trainerClass": "OPP_FISHER", + "trainerParty": 6 + }, + { + "name": "ROUTE12_FISHER5", + "text": "TEXT_ROUTE12_FISHER5", + "trainerClass": "OPP_FISHER", + "trainerParty": 11 + }, + { + "item": "TM_PAY_DAY", + "name": "ROUTE12_TM_PAY_DAY", + "text": "TEXT_ROUTE12_TM_PAY_DAY" + }, + { + "item": "IRON", + "name": "ROUTE12_IRON", + "text": "TEXT_ROUTE12_IRON" + } + ], + "signTexts": [ + "TEXT_ROUTE12_SIGN", + "TEXT_ROUTE12_SPORT_FISHING_SIGN" + ] + }, + "ROUTE_12_GATE_1F": { + "blockLength": 20, + "label": "Route12Gate1F", + "objects": [ + { + "name": "ROUTE12GATE1F_GUARD", + "text": "TEXT_ROUTE12GATE1F_GUARD" + } + ], + "signTexts": [] + }, + "ROUTE_12_GATE_2F": { + "blockLength": 16, + "label": "Route12Gate2F", + "objects": [ + { + "name": "ROUTE12GATE2F_BRUNETTE_GIRL", + "text": "TEXT_ROUTE12GATE2F_BRUNETTE_GIRL" + } + ], + "signTexts": [ + "TEXT_ROUTE12GATE2F_LEFT_BINOCULARS", + "TEXT_ROUTE12GATE2F_RIGHT_BINOCULARS" + ] + }, + "ROUTE_12_SUPER_ROD_HOUSE": { + "blockLength": 16, + "label": "Route12SuperRodHouse", + "objects": [ + { + "name": "ROUTE12SUPERRODHOUSE_FISHING_GURU", + "text": "TEXT_ROUTE12SUPERRODHOUSE_FISHING_GURU" + } + ], + "signTexts": [] + }, + "ROUTE_13": { + "blockLength": 270, + "label": "Route13", + "objects": [ + { + "name": "ROUTE13_COOLTRAINER_M1", + "text": "TEXT_ROUTE13_COOLTRAINER_M1", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 1 + }, + { + "name": "ROUTE13_COOLTRAINER_F1", + "text": "TEXT_ROUTE13_COOLTRAINER_F1", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 12 + }, + { + "name": "ROUTE13_COOLTRAINER_F2", + "text": "TEXT_ROUTE13_COOLTRAINER_F2", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 13 + }, + { + "name": "ROUTE13_COOLTRAINER_F3", + "text": "TEXT_ROUTE13_COOLTRAINER_F3", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 14 + }, + { + "name": "ROUTE13_COOLTRAINER_F4", + "text": "TEXT_ROUTE13_COOLTRAINER_F4", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 15 + }, + { + "name": "ROUTE13_COOLTRAINER_M2", + "text": "TEXT_ROUTE13_COOLTRAINER_M2", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 2 + }, + { + "name": "ROUTE13_BEAUTY1", + "text": "TEXT_ROUTE13_BEAUTY1", + "trainerClass": "OPP_BEAUTY", + "trainerParty": 4 + }, + { + "name": "ROUTE13_BEAUTY2", + "text": "TEXT_ROUTE13_BEAUTY2", + "trainerClass": "OPP_BEAUTY", + "trainerParty": 5 + }, + { + "name": "ROUTE13_BIKER", + "text": "TEXT_ROUTE13_BIKER", + "trainerClass": "OPP_BIKER", + "trainerParty": 1 + }, + { + "name": "ROUTE13_COOLTRAINER_M3", + "text": "TEXT_ROUTE13_COOLTRAINER_M3", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 3 + } + ], + "signTexts": [ + "TEXT_ROUTE13_TRAINER_TIPS1", + "TEXT_ROUTE13_TRAINER_TIPS2", + "TEXT_ROUTE13_SIGN" + ] + }, + "ROUTE_14": { + "blockLength": 270, + "label": "Route14", + "objects": [ + { + "name": "ROUTE14_COOLTRAINER_M1", + "text": "TEXT_ROUTE14_COOLTRAINER_M1", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 14 + }, + { + "name": "ROUTE14_COOLTRAINER_M2", + "text": "TEXT_ROUTE14_COOLTRAINER_M2", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 15 + }, + { + "name": "ROUTE14_COOLTRAINER_M3", + "text": "TEXT_ROUTE14_COOLTRAINER_M3", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 16 + }, + { + "name": "ROUTE14_COOLTRAINER_M4", + "text": "TEXT_ROUTE14_COOLTRAINER_M4", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 17 + }, + { + "name": "ROUTE14_COOLTRAINER_M5", + "text": "TEXT_ROUTE14_COOLTRAINER_M5", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 4 + }, + { + "name": "ROUTE14_COOLTRAINER_M6", + "text": "TEXT_ROUTE14_COOLTRAINER_M6", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 5 + }, + { + "name": "ROUTE14_BIKER1", + "text": "TEXT_ROUTE14_BIKER1", + "trainerClass": "OPP_BIKER", + "trainerParty": 13 + }, + { + "name": "ROUTE14_BIKER2", + "text": "TEXT_ROUTE14_BIKER2", + "trainerClass": "OPP_BIKER", + "trainerParty": 14 + }, + { + "name": "ROUTE14_BIKER3", + "text": "TEXT_ROUTE14_BIKER3", + "trainerClass": "OPP_BIKER", + "trainerParty": 15 + }, + { + "name": "ROUTE14_BIKER4", + "text": "TEXT_ROUTE14_BIKER4", + "trainerClass": "OPP_BIKER", + "trainerParty": 2 + } + ], + "signTexts": [ + "TEXT_ROUTE14_SIGN" + ] + }, + "ROUTE_15": { + "blockLength": 270, + "label": "Route15", + "objects": [ + { + "name": "ROUTE15_COOLTRAINER_F1", + "text": "TEXT_ROUTE15_COOLTRAINER_F1", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 20 + }, + { + "name": "ROUTE15_COOLTRAINER_F2", + "text": "TEXT_ROUTE15_COOLTRAINER_F2", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 21 + }, + { + "name": "ROUTE15_COOLTRAINER_M1", + "text": "TEXT_ROUTE15_COOLTRAINER_M1", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 6 + }, + { + "name": "ROUTE15_COOLTRAINER_M2", + "text": "TEXT_ROUTE15_COOLTRAINER_M2", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 7 + }, + { + "name": "ROUTE15_BEAUTY1", + "text": "TEXT_ROUTE15_BEAUTY1", + "trainerClass": "OPP_BEAUTY", + "trainerParty": 9 + }, + { + "name": "ROUTE15_BEAUTY2", + "text": "TEXT_ROUTE15_BEAUTY2", + "trainerClass": "OPP_BEAUTY", + "trainerParty": 10 + }, + { + "name": "ROUTE15_BIKER1", + "text": "TEXT_ROUTE15_BIKER1", + "trainerClass": "OPP_BIKER", + "trainerParty": 3 + }, + { + "name": "ROUTE15_BIKER2", + "text": "TEXT_ROUTE15_BIKER2", + "trainerClass": "OPP_BIKER", + "trainerParty": 4 + }, + { + "name": "ROUTE15_COOLTRAINER_F3", + "text": "TEXT_ROUTE15_COOLTRAINER_F3", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 22 + }, + { + "name": "ROUTE15_COOLTRAINER_F4", + "text": "TEXT_ROUTE15_COOLTRAINER_F4", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 23 + }, + { + "item": "TM_RAGE", + "name": "ROUTE15_TM_RAGE", + "text": "TEXT_ROUTE15_TM_RAGE" + } + ], + "signTexts": [ + "TEXT_ROUTE15_SIGN" + ] + }, + "ROUTE_15_GATE_1F": { + "blockLength": 20, + "label": "Route15Gate1F", + "objects": [ + { + "name": "ROUTE15GATE1F_GUARD", + "text": "TEXT_ROUTE15GATE1F_GUARD" + } + ], + "signTexts": [] + }, + "ROUTE_15_GATE_2F": { + "blockLength": 16, + "label": "Route15Gate2F", + "objects": [ + { + "name": "ROUTE15GATE2F_OAKS_AIDE", + "text": "TEXT_ROUTE15GATE2F_OAKS_AIDE" + } + ], + "signTexts": [ + "TEXT_ROUTE15GATE2F_BINOCULARS" + ] + }, + "ROUTE_16": { + "blockLength": 180, + "label": "Route16", + "objects": [ + { + "name": "ROUTE16_BIKER1", + "text": "TEXT_ROUTE16_BIKER1", + "trainerClass": "OPP_BIKER", + "trainerParty": 5 + }, + { + "name": "ROUTE16_BIKER2", + "text": "TEXT_ROUTE16_BIKER2", + "trainerClass": "OPP_CUE_BALL", + "trainerParty": 1 + }, + { + "name": "ROUTE16_BIKER3", + "text": "TEXT_ROUTE16_BIKER3", + "trainerClass": "OPP_CUE_BALL", + "trainerParty": 2 + }, + { + "name": "ROUTE16_BIKER4", + "text": "TEXT_ROUTE16_BIKER4", + "trainerClass": "OPP_BIKER", + "trainerParty": 6 + }, + { + "name": "ROUTE16_BIKER5", + "text": "TEXT_ROUTE16_BIKER5", + "trainerClass": "OPP_CUE_BALL", + "trainerParty": 3 + }, + { + "name": "ROUTE16_BIKER6", + "text": "TEXT_ROUTE16_BIKER6", + "trainerClass": "OPP_BIKER", + "trainerParty": 7 + }, + { + "name": "ROUTE16_SNORLAX", + "text": "TEXT_ROUTE16_SNORLAX" + } + ], + "signTexts": [ + "TEXT_ROUTE16_CYCLING_ROAD_SIGN", + "TEXT_ROUTE16_SIGN" + ] + }, + "ROUTE_16_FLY_HOUSE": { + "blockLength": 16, + "label": "Route16FlyHouse", + "objects": [ + { + "name": "ROUTE16FLYHOUSE_BRUNETTE_GIRL", + "text": "TEXT_ROUTE16FLYHOUSE_BRUNETTE_GIRL" + }, + { + "name": "ROUTE16FLYHOUSE_FEAROW", + "text": "TEXT_ROUTE16FLYHOUSE_FEAROW" + } + ], + "signTexts": [] + }, + "ROUTE_16_GATE_1F": { + "blockLength": 28, + "label": "Route16Gate1F", + "objects": [ + { + "name": "ROUTE16GATE1F_GUARD", + "text": "TEXT_ROUTE16GATE1F_GUARD" + }, + { + "name": "ROUTE16GATE1F_GAMBLER", + "text": "TEXT_ROUTE16GATE1F_GAMBLER" + } + ], + "signTexts": [] + }, + "ROUTE_16_GATE_2F": { + "blockLength": 16, + "label": "Route16Gate2F", + "objects": [ + { + "name": "ROUTE16GATE2F_LITTLE_BOY", + "text": "TEXT_ROUTE16GATE2F_LITTLE_BOY" + }, + { + "name": "ROUTE16GATE2F_LITTLE_GIRL", + "text": "TEXT_ROUTE16GATE2F_LITTLE_GIRL" + } + ], + "signTexts": [ + "TEXT_ROUTE16GATE2F_LEFT_BINOCULARS", + "TEXT_ROUTE16GATE2F_RIGHT_BINOCULARS" + ] + }, + "ROUTE_17": { + "blockLength": 720, + "label": "Route17", + "objects": [ + { + "name": "ROUTE17_BIKER1", + "text": "TEXT_ROUTE17_BIKER1", + "trainerClass": "OPP_CUE_BALL", + "trainerParty": 4 + }, + { + "name": "ROUTE17_BIKER2", + "text": "TEXT_ROUTE17_BIKER2", + "trainerClass": "OPP_CUE_BALL", + "trainerParty": 5 + }, + { + "name": "ROUTE17_BIKER3", + "text": "TEXT_ROUTE17_BIKER3", + "trainerClass": "OPP_BIKER", + "trainerParty": 8 + }, + { + "name": "ROUTE17_BIKER4", + "text": "TEXT_ROUTE17_BIKER4", + "trainerClass": "OPP_BIKER", + "trainerParty": 9 + }, + { + "name": "ROUTE17_BIKER5", + "text": "TEXT_ROUTE17_BIKER5", + "trainerClass": "OPP_BIKER", + "trainerParty": 10 + }, + { + "name": "ROUTE17_BIKER6", + "text": "TEXT_ROUTE17_BIKER6", + "trainerClass": "OPP_CUE_BALL", + "trainerParty": 6 + }, + { + "name": "ROUTE17_BIKER7", + "text": "TEXT_ROUTE17_BIKER7", + "trainerClass": "OPP_CUE_BALL", + "trainerParty": 7 + }, + { + "name": "ROUTE17_BIKER8", + "text": "TEXT_ROUTE17_BIKER8", + "trainerClass": "OPP_CUE_BALL", + "trainerParty": 8 + }, + { + "name": "ROUTE17_BIKER9", + "text": "TEXT_ROUTE17_BIKER9", + "trainerClass": "OPP_BIKER", + "trainerParty": 11 + }, + { + "name": "ROUTE17_BIKER10", + "text": "TEXT_ROUTE17_BIKER10", + "trainerClass": "OPP_BIKER", + "trainerParty": 12 + } + ], + "signTexts": [ + "TEXT_ROUTE17_NOTICE_SIGN1", + "TEXT_ROUTE17_TRAINER_TIPS1", + "TEXT_ROUTE17_TRAINER_TIPS2", + "TEXT_ROUTE17_SIGN", + "TEXT_ROUTE17_NOTICE_SIGN2", + "TEXT_ROUTE17_CYCLING_ROAD_ENDS_SIGN" + ] + }, + "ROUTE_18": { + "blockLength": 225, + "label": "Route18", + "objects": [ + { + "name": "ROUTE18_COOLTRAINER_M1", + "text": "TEXT_ROUTE18_COOLTRAINER_M1", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 8 + }, + { + "name": "ROUTE18_COOLTRAINER_M2", + "text": "TEXT_ROUTE18_COOLTRAINER_M2", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 9 + }, + { + "name": "ROUTE18_COOLTRAINER_M3", + "text": "TEXT_ROUTE18_COOLTRAINER_M3", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 10 + } + ], + "signTexts": [ + "TEXT_ROUTE18_SIGN", + "TEXT_ROUTE18_CYCLING_ROAD_SIGN" + ] + }, + "ROUTE_18_GATE_1F": { + "blockLength": 20, + "label": "Route18Gate1F", + "objects": [ + { + "name": "ROUTE18GATE1F_GUARD", + "text": "TEXT_ROUTE18GATE1F_GUARD" + } + ], + "signTexts": [] + }, + "ROUTE_18_GATE_2F": { + "blockLength": 16, + "label": "Route18Gate2F", + "objects": [ + { + "name": "ROUTE18GATE2F_COOK", + "text": "TEXT_ROUTE18GATE2F_COOK" + } + ], + "signTexts": [ + "TEXT_ROUTE18GATE2F_LEFT_BINOCULARS", + "TEXT_ROUTE18GATE2F_RIGHT_BINOCULARS" + ] + }, + "ROUTE_19": { + "blockLength": 270, + "label": "Route19", + "objects": [ + { + "name": "ROUTE19_COOLTRAINER_M1", + "text": "TEXT_ROUTE19_COOLTRAINER_M1", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 2 + }, + { + "name": "ROUTE19_COOLTRAINER_M2", + "text": "TEXT_ROUTE19_COOLTRAINER_M2", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 3 + }, + { + "name": "ROUTE19_SWIMMER1", + "text": "TEXT_ROUTE19_SWIMMER1", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 4 + }, + { + "name": "ROUTE19_SWIMMER2", + "text": "TEXT_ROUTE19_SWIMMER2", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 5 + }, + { + "name": "ROUTE19_SWIMMER3", + "text": "TEXT_ROUTE19_SWIMMER3", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 6 + }, + { + "name": "ROUTE19_SWIMMER4", + "text": "TEXT_ROUTE19_SWIMMER4", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 7 + }, + { + "name": "ROUTE19_SWIMMER5", + "text": "TEXT_ROUTE19_SWIMMER5", + "trainerClass": "OPP_BEAUTY", + "trainerParty": 12 + }, + { + "name": "ROUTE19_SWIMMER6", + "text": "TEXT_ROUTE19_SWIMMER6", + "trainerClass": "OPP_BEAUTY", + "trainerParty": 13 + }, + { + "name": "ROUTE19_SWIMMER7", + "text": "TEXT_ROUTE19_SWIMMER7", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 8 + }, + { + "name": "ROUTE19_SWIMMER8", + "text": "TEXT_ROUTE19_SWIMMER8", + "trainerClass": "OPP_BEAUTY", + "trainerParty": 14 + } + ], + "signTexts": [ + "TEXT_ROUTE19_SIGN" + ] + }, + "ROUTE_2": { + "blockLength": 360, + "label": "Route2", + "objects": [ + { + "item": "MOON_STONE", + "name": "ROUTE2_MOON_STONE", + "text": "TEXT_ROUTE2_MOON_STONE" + }, + { + "item": "HP_UP", + "name": "ROUTE2_HP_UP", + "text": "TEXT_ROUTE2_HP_UP" + } + ], + "signTexts": [ + "TEXT_ROUTE2_SIGN", + "TEXT_ROUTE2_DIGLETTS_CAVE_SIGN" + ] + }, + "ROUTE_20": { + "blockLength": 450, + "label": "Route20", + "objects": [ + { + "name": "ROUTE20_SWIMMER1", + "text": "TEXT_ROUTE20_SWIMMER1", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 9 + }, + { + "name": "ROUTE20_SWIMMER2", + "text": "TEXT_ROUTE20_SWIMMER2", + "trainerClass": "OPP_BEAUTY", + "trainerParty": 15 + }, + { + "name": "ROUTE20_SWIMMER3", + "text": "TEXT_ROUTE20_SWIMMER3", + "trainerClass": "OPP_BEAUTY", + "trainerParty": 6 + }, + { + "name": "ROUTE20_SWIMMER4", + "text": "TEXT_ROUTE20_SWIMMER4", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 24 + }, + { + "name": "ROUTE20_SWIMMER5", + "text": "TEXT_ROUTE20_SWIMMER5", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 10 + }, + { + "name": "ROUTE20_SWIMMER6", + "text": "TEXT_ROUTE20_SWIMMER6", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 11 + }, + { + "name": "ROUTE20_COOLTRAINER_M", + "text": "TEXT_ROUTE20_COOLTRAINER_M", + "trainerClass": "OPP_BIRD_KEEPER", + "trainerParty": 11 + }, + { + "name": "ROUTE20_SWIMMER7", + "text": "TEXT_ROUTE20_SWIMMER7", + "trainerClass": "OPP_BEAUTY", + "trainerParty": 7 + }, + { + "name": "ROUTE20_SWIMMER8", + "text": "TEXT_ROUTE20_SWIMMER8", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 16 + }, + { + "name": "ROUTE20_SWIMMER9", + "text": "TEXT_ROUTE20_SWIMMER9", + "trainerClass": "OPP_BEAUTY", + "trainerParty": 8 + } + ], + "signTexts": [ + "TEXT_ROUTE20_SEAFOAM_ISLANDS_WEST_SIGN", + "TEXT_ROUTE20_SEAFOAM_ISLANDS_EAST_SIGN" + ] + }, + "ROUTE_21": { + "blockLength": 450, + "label": "Route21", + "objects": [ + { + "name": "ROUTE21_FISHER1", + "text": "TEXT_ROUTE21_FISHER1", + "trainerClass": "OPP_FISHER", + "trainerParty": 7 + }, + { + "name": "ROUTE21_FISHER2", + "text": "TEXT_ROUTE21_FISHER2", + "trainerClass": "OPP_FISHER", + "trainerParty": 9 + }, + { + "name": "ROUTE21_SWIMMER1", + "text": "TEXT_ROUTE21_SWIMMER1", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 12 + }, + { + "name": "ROUTE21_SWIMMER2", + "text": "TEXT_ROUTE21_SWIMMER2", + "trainerClass": "OPP_CUE_BALL", + "trainerParty": 9 + }, + { + "name": "ROUTE21_SWIMMER3", + "text": "TEXT_ROUTE21_SWIMMER3", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 13 + }, + { + "name": "ROUTE21_SWIMMER4", + "text": "TEXT_ROUTE21_SWIMMER4", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 14 + }, + { + "name": "ROUTE21_SWIMMER5", + "text": "TEXT_ROUTE21_SWIMMER5", + "trainerClass": "OPP_SWIMMER", + "trainerParty": 15 + }, + { + "name": "ROUTE21_FISHER3", + "text": "TEXT_ROUTE21_FISHER3", + "trainerClass": "OPP_FISHER", + "trainerParty": 8 + }, + { + "name": "ROUTE21_FISHER4", + "text": "TEXT_ROUTE21_FISHER4", + "trainerClass": "OPP_FISHER", + "trainerParty": 10 + } + ], + "signTexts": [] + }, + "ROUTE_22": { + "blockLength": 180, + "label": "Route22", + "objects": [ + { + "hidden": true, + "name": "ROUTE22_RIVAL1", + "text": "TEXT_ROUTE22_RIVAL1" + }, + { + "hidden": true, + "name": "ROUTE22_RIVAL2", + "text": "TEXT_ROUTE22_RIVAL2" + } + ], + "signTexts": [ + "TEXT_ROUTE22_POKEMON_LEAGUE_SIGN" + ] + }, + "ROUTE_22_GATE": { + "blockLength": 20, + "label": "Route22Gate", + "objects": [ + { + "name": "ROUTE22GATE_GUARD", + "text": "TEXT_ROUTE22GATE_GUARD" + } + ], + "signTexts": [] + }, + "ROUTE_23": { + "blockLength": 720, + "label": "Route23", + "objects": [ + { + "name": "ROUTE23_GUARD1", + "text": "TEXT_ROUTE23_GUARD1" + }, + { + "name": "ROUTE23_GUARD2", + "text": "TEXT_ROUTE23_GUARD2" + }, + { + "name": "ROUTE23_SWIMMER1", + "text": "TEXT_ROUTE23_SWIMMER1" + }, + { + "name": "ROUTE23_SWIMMER2", + "text": "TEXT_ROUTE23_SWIMMER2" + }, + { + "name": "ROUTE23_GUARD3", + "text": "TEXT_ROUTE23_GUARD3" + }, + { + "name": "ROUTE23_GUARD4", + "text": "TEXT_ROUTE23_GUARD4" + }, + { + "name": "ROUTE23_GUARD5", + "text": "TEXT_ROUTE23_GUARD5" + } + ], + "signTexts": [ + "TEXT_ROUTE23_VICTORY_ROAD_GATE_SIGN" + ] + }, + "ROUTE_24": { + "blockLength": 180, + "label": "Route24", + "objects": [ + { + "name": "ROUTE24_COOLTRAINER_M1", + "text": "TEXT_ROUTE24_COOLTRAINER_M1", + "trainerClass": "OPP_ROCKET", + "trainerParty": 6 + }, + { + "name": "ROUTE24_COOLTRAINER_M2", + "text": "TEXT_ROUTE24_COOLTRAINER_M2", + "trainerClass": "OPP_JR_TRAINER_M", + "trainerParty": 2 + }, + { + "name": "ROUTE24_COOLTRAINER_M3", + "text": "TEXT_ROUTE24_COOLTRAINER_M3", + "trainerClass": "OPP_JR_TRAINER_M", + "trainerParty": 3 + }, + { + "name": "ROUTE24_COOLTRAINER_F1", + "text": "TEXT_ROUTE24_COOLTRAINER_F1", + "trainerClass": "OPP_LASS", + "trainerParty": 7 + }, + { + "name": "ROUTE24_YOUNGSTER1", + "text": "TEXT_ROUTE24_YOUNGSTER1", + "trainerClass": "OPP_YOUNGSTER", + "trainerParty": 4 + }, + { + "name": "ROUTE24_COOLTRAINER_F2", + "text": "TEXT_ROUTE24_COOLTRAINER_F2", + "trainerClass": "OPP_LASS", + "trainerParty": 8 + }, + { + "name": "ROUTE24_YOUNGSTER2", + "text": "TEXT_ROUTE24_YOUNGSTER2", + "trainerClass": "OPP_BUG_CATCHER", + "trainerParty": 9 + }, + { + "item": "TM_THUNDER_WAVE", + "name": "ROUTE24_TM_THUNDER_WAVE", + "text": "TEXT_ROUTE24_TM_THUNDER_WAVE" + }, + { + "name": "ROUTE24_COOLTRAINER_M4", + "text": "TEXT_ROUTE24_COOLTRAINER_M4" + } + ], + "signTexts": [] + }, + "ROUTE_25": { + "blockLength": 270, + "label": "Route25", + "objects": [ + { + "name": "ROUTE25_YOUNGSTER1", + "text": "TEXT_ROUTE25_YOUNGSTER1", + "trainerClass": "OPP_YOUNGSTER", + "trainerParty": 5 + }, + { + "name": "ROUTE25_YOUNGSTER2", + "text": "TEXT_ROUTE25_YOUNGSTER2", + "trainerClass": "OPP_YOUNGSTER", + "trainerParty": 6 + }, + { + "name": "ROUTE25_COOLTRAINER_M", + "text": "TEXT_ROUTE25_COOLTRAINER_M", + "trainerClass": "OPP_JR_TRAINER_M", + "trainerParty": 2 + }, + { + "name": "ROUTE25_COOLTRAINER_F1", + "text": "TEXT_ROUTE25_COOLTRAINER_F1", + "trainerClass": "OPP_LASS", + "trainerParty": 9 + }, + { + "name": "ROUTE25_YOUNGSTER3", + "text": "TEXT_ROUTE25_YOUNGSTER3", + "trainerClass": "OPP_YOUNGSTER", + "trainerParty": 7 + }, + { + "name": "ROUTE25_COOLTRAINER_F2", + "text": "TEXT_ROUTE25_COOLTRAINER_F2", + "trainerClass": "OPP_LASS", + "trainerParty": 10 + }, + { + "name": "ROUTE25_HIKER1", + "text": "TEXT_ROUTE25_HIKER1", + "trainerClass": "OPP_HIKER", + "trainerParty": 2 + }, + { + "name": "ROUTE25_HIKER2", + "text": "TEXT_ROUTE25_HIKER2", + "trainerClass": "OPP_HIKER", + "trainerParty": 3 + }, + { + "name": "ROUTE25_HIKER3", + "text": "TEXT_ROUTE25_HIKER3", + "trainerClass": "OPP_HIKER", + "trainerParty": 4 + }, + { + "item": "TM_SEISMIC_TOSS", + "name": "ROUTE25_TM_SEISMIC_TOSS", + "text": "TEXT_ROUTE25_TM_SEISMIC_TOSS" + } + ], + "signTexts": [ + "TEXT_ROUTE25_BILL_SIGN" + ] + }, + "ROUTE_2_GATE": { + "blockLength": 20, + "label": "Route2Gate", + "objects": [ + { + "name": "ROUTE2GATE_OAKS_AIDE", + "text": "TEXT_ROUTE2GATE_OAKS_AIDE" + }, + { + "name": "ROUTE2GATE_YOUNGSTER", + "text": "TEXT_ROUTE2GATE_YOUNGSTER" + } + ], + "signTexts": [] + }, + "ROUTE_2_TRADE_HOUSE": { + "blockLength": 16, + "label": "Route2TradeHouse", + "objects": [ + { + "name": "ROUTE2TRADEHOUSE_SCIENTIST", + "text": "TEXT_ROUTE2TRADEHOUSE_SCIENTIST" + }, + { + "name": "ROUTE2TRADEHOUSE_GAMEBOY_KID", + "text": "TEXT_ROUTE2TRADEHOUSE_GAMEBOY_KID" + } + ], + "signTexts": [] + }, + "ROUTE_3": { + "blockLength": 315, + "label": "Route3", + "objects": [ + { + "name": "ROUTE3_SUPER_NERD", + "text": "TEXT_ROUTE3_SUPER_NERD" + }, + { + "name": "ROUTE3_YOUNGSTER1", + "text": "TEXT_ROUTE3_YOUNGSTER1", + "trainerClass": "OPP_BUG_CATCHER", + "trainerParty": 4 + }, + { + "name": "ROUTE3_YOUNGSTER2", + "text": "TEXT_ROUTE3_YOUNGSTER2", + "trainerClass": "OPP_YOUNGSTER", + "trainerParty": 1 + }, + { + "name": "ROUTE3_COOLTRAINER_F1", + "text": "TEXT_ROUTE3_COOLTRAINER_F1", + "trainerClass": "OPP_LASS", + "trainerParty": 1 + }, + { + "name": "ROUTE3_YOUNGSTER3", + "text": "TEXT_ROUTE3_YOUNGSTER3", + "trainerClass": "OPP_BUG_CATCHER", + "trainerParty": 5 + }, + { + "name": "ROUTE3_COOLTRAINER_F2", + "text": "TEXT_ROUTE3_COOLTRAINER_F2", + "trainerClass": "OPP_LASS", + "trainerParty": 2 + }, + { + "name": "ROUTE3_YOUNGSTER4", + "text": "TEXT_ROUTE3_YOUNGSTER4", + "trainerClass": "OPP_YOUNGSTER", + "trainerParty": 2 + }, + { + "name": "ROUTE3_YOUNGSTER5", + "text": "TEXT_ROUTE3_YOUNGSTER5", + "trainerClass": "OPP_BUG_CATCHER", + "trainerParty": 6 + }, + { + "name": "ROUTE3_COOLTRAINER_F3", + "text": "TEXT_ROUTE3_COOLTRAINER_F3", + "trainerClass": "OPP_LASS", + "trainerParty": 3 + } + ], + "signTexts": [ + "TEXT_ROUTE3_SIGN" + ] + }, + "ROUTE_4": { + "blockLength": 405, + "label": "Route4", + "objects": [ + { + "name": "ROUTE4_COOLTRAINER_F1", + "text": "TEXT_ROUTE4_COOLTRAINER_F1" + }, + { + "name": "ROUTE4_COOLTRAINER_F2", + "text": "TEXT_ROUTE4_COOLTRAINER_F2", + "trainerClass": "OPP_LASS", + "trainerParty": 4 + }, + { + "item": "TM_WHIRLWIND", + "name": "ROUTE4_TM_WHIRLWIND", + "text": "TEXT_ROUTE4_TM_WHIRLWIND" + } + ], + "signTexts": [ + "TEXT_ROUTE4_POKECENTER_SIGN", + "TEXT_ROUTE4_MT_MOON_SIGN", + "TEXT_ROUTE4_SIGN" + ] + }, + "ROUTE_5": { + "blockLength": 180, + "label": "Route5", + "objects": [], + "signTexts": [ + "TEXT_ROUTE5_UNDERGROUND_PATH_SIGN" + ] + }, + "ROUTE_5_GATE": { + "blockLength": 12, + "label": "Route5Gate", + "objects": [ + { + "name": "ROUTE5GATE_GUARD", + "text": "TEXT_ROUTE5GATE_GUARD" + } + ], + "signTexts": [] + }, + "ROUTE_6": { + "blockLength": 180, + "label": "Route6", + "objects": [ + { + "name": "ROUTE6_COOLTRAINER_M1", + "text": "TEXT_ROUTE6_COOLTRAINER_M1", + "trainerClass": "OPP_JR_TRAINER_M", + "trainerParty": 10 + }, + { + "name": "ROUTE6_COOLTRAINER_F1", + "text": "TEXT_ROUTE6_COOLTRAINER_F1", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 25 + }, + { + "name": "ROUTE6_YOUNGSTER1", + "text": "TEXT_ROUTE6_YOUNGSTER1", + "trainerClass": "OPP_BUG_CATCHER", + "trainerParty": 10 + }, + { + "name": "ROUTE6_COOLTRAINER_M2", + "text": "TEXT_ROUTE6_COOLTRAINER_M2", + "trainerClass": "OPP_JR_TRAINER_M", + "trainerParty": 5 + }, + { + "name": "ROUTE6_COOLTRAINER_F2", + "text": "TEXT_ROUTE6_COOLTRAINER_F2", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 3 + }, + { + "name": "ROUTE6_YOUNGSTER2", + "text": "TEXT_ROUTE6_YOUNGSTER2", + "trainerClass": "OPP_BUG_CATCHER", + "trainerParty": 11 + } + ], + "signTexts": [ + "TEXT_ROUTE6_UNDERGROUND_PATH_SIGN" + ] + }, + "ROUTE_6_GATE": { + "blockLength": 12, + "label": "Route6Gate", + "objects": [ + { + "name": "ROUTE6GATE_GUARD", + "text": "TEXT_ROUTE6GATE_GUARD" + } + ], + "signTexts": [] + }, + "ROUTE_7": { + "blockLength": 90, + "label": "Route7", + "objects": [], + "signTexts": [ + "TEXT_ROUTE7_UNDERGROUND_PATH_SIGN" + ] + }, + "ROUTE_7_GATE": { + "blockLength": 12, + "label": "Route7Gate", + "objects": [ + { + "name": "ROUTE7GATE_GUARD", + "text": "TEXT_ROUTE7GATE_GUARD" + } + ], + "signTexts": [] + }, + "ROUTE_8": { + "blockLength": 270, + "label": "Route8", + "objects": [ + { + "name": "ROUTE8_SUPER_NERD1", + "text": "TEXT_ROUTE8_SUPER_NERD1", + "trainerClass": "OPP_SUPER_NERD", + "trainerParty": 3 + }, + { + "name": "ROUTE8_GAMBLER1", + "text": "TEXT_ROUTE8_GAMBLER1", + "trainerClass": "OPP_GAMBLER", + "trainerParty": 5 + }, + { + "name": "ROUTE8_SUPER_NERD2", + "text": "TEXT_ROUTE8_SUPER_NERD2", + "trainerClass": "OPP_SUPER_NERD", + "trainerParty": 4 + }, + { + "name": "ROUTE8_COOLTRAINER_F1", + "text": "TEXT_ROUTE8_COOLTRAINER_F1", + "trainerClass": "OPP_LASS", + "trainerParty": 13 + }, + { + "name": "ROUTE8_SUPER_NERD3", + "text": "TEXT_ROUTE8_SUPER_NERD3", + "trainerClass": "OPP_SUPER_NERD", + "trainerParty": 5 + }, + { + "name": "ROUTE8_COOLTRAINER_F2", + "text": "TEXT_ROUTE8_COOLTRAINER_F2", + "trainerClass": "OPP_LASS", + "trainerParty": 14 + }, + { + "name": "ROUTE8_COOLTRAINER_F3", + "text": "TEXT_ROUTE8_COOLTRAINER_F3", + "trainerClass": "OPP_LASS", + "trainerParty": 15 + }, + { + "name": "ROUTE8_GAMBLER2", + "text": "TEXT_ROUTE8_GAMBLER2", + "trainerClass": "OPP_GAMBLER", + "trainerParty": 7 + }, + { + "name": "ROUTE8_COOLTRAINER_F4", + "text": "TEXT_ROUTE8_COOLTRAINER_F4", + "trainerClass": "OPP_LASS", + "trainerParty": 16 + } + ], + "signTexts": [ + "TEXT_ROUTE8_UNDERGROUND_SIGN" + ] + }, + "ROUTE_8_GATE": { + "blockLength": 12, + "label": "Route8Gate", + "objects": [ + { + "name": "ROUTE8GATE_GUARD", + "text": "TEXT_ROUTE8GATE_GUARD" + } + ], + "signTexts": [] + }, + "ROUTE_9": { + "blockLength": 270, + "label": "Route9", + "objects": [ + { + "name": "ROUTE9_COOLTRAINER_F1", + "text": "TEXT_ROUTE9_COOLTRAINER_F1", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 5 + }, + { + "name": "ROUTE9_COOLTRAINER_M1", + "text": "TEXT_ROUTE9_COOLTRAINER_M1", + "trainerClass": "OPP_YOUNGSTER", + "trainerParty": 14 + }, + { + "name": "ROUTE9_COOLTRAINER_M2", + "text": "TEXT_ROUTE9_COOLTRAINER_M2", + "trainerClass": "OPP_JR_TRAINER_M", + "trainerParty": 8 + }, + { + "name": "ROUTE9_COOLTRAINER_F2", + "text": "TEXT_ROUTE9_COOLTRAINER_F2", + "trainerClass": "OPP_JR_TRAINER_F", + "trainerParty": 6 + }, + { + "name": "ROUTE9_HIKER1", + "text": "TEXT_ROUTE9_HIKER1", + "trainerClass": "OPP_HIKER", + "trainerParty": 11 + }, + { + "name": "ROUTE9_HIKER2", + "text": "TEXT_ROUTE9_HIKER2", + "trainerClass": "OPP_HIKER", + "trainerParty": 6 + }, + { + "name": "ROUTE9_YOUNGSTER1", + "text": "TEXT_ROUTE9_YOUNGSTER1", + "trainerClass": "OPP_BUG_CATCHER", + "trainerParty": 13 + }, + { + "name": "ROUTE9_HIKER3", + "text": "TEXT_ROUTE9_HIKER3", + "trainerClass": "OPP_HIKER", + "trainerParty": 5 + }, + { + "name": "ROUTE9_YOUNGSTER2", + "text": "TEXT_ROUTE9_YOUNGSTER2", + "trainerClass": "OPP_BUG_CATCHER", + "trainerParty": 14 + }, + { + "item": "TM_TELEPORT", + "name": "ROUTE9_TM_TELEPORT", + "text": "TEXT_ROUTE9_TM_TELEPORT" + } + ], + "signTexts": [ + "TEXT_ROUTE9_SIGN" + ] + }, + "SAFARI_ZONE_CENTER": { + "blockLength": 195, + "label": "SafariZoneCenter", + "objects": [ + { + "item": "NUGGET", + "name": "SAFARIZONECENTER_NUGGET", + "text": "TEXT_SAFARIZONECENTER_NUGGET" + } + ], + "signTexts": [ + "TEXT_SAFARIZONECENTER_REST_HOUSE_SIGN", + "TEXT_SAFARIZONECENTER_TRAINER_TIPS_SIGN" + ] + }, + "SAFARI_ZONE_CENTER_REST_HOUSE": { + "blockLength": 16, + "label": "SafariZoneCenterRestHouse", + "objects": [ + { + "name": "SAFARIZONECENTERRESTHOUSE_GIRL", + "text": "TEXT_SAFARIZONECENTERRESTHOUSE_GIRL" + }, + { + "name": "SAFARIZONECENTERRESTHOUSE_SCIENTIST", + "text": "TEXT_SAFARIZONECENTERRESTHOUSE_SCIENTIST" + } + ], + "signTexts": [] + }, + "SAFARI_ZONE_EAST": { + "blockLength": 195, + "label": "SafariZoneEast", + "objects": [ + { + "item": "FULL_RESTORE", + "name": "SAFARIZONEEAST_FULL_RESTORE", + "text": "TEXT_SAFARIZONEEAST_FULL_RESTORE" + }, + { + "item": "MAX_POTION", + "name": "SAFARIZONEEAST_MAX_RESTORE", + "text": "TEXT_SAFARIZONEEAST_MAX_RESTORE" + }, + { + "item": "CARBOS", + "name": "SAFARIZONEEAST_CARBOS", + "text": "TEXT_SAFARIZONEEAST_CARBOS" + }, + { + "item": "TM_EGG_BOMB", + "name": "SAFARIZONEEAST_TM_EGG_BOMB", + "text": "TEXT_SAFARIZONEEAST_TM_EGG_BOMB" + } + ], + "signTexts": [ + "TEXT_SAFARIZONEEAST_REST_HOUSE_SIGN", + "TEXT_SAFARIZONEEAST_TRAINER_TIPS", + "TEXT_SAFARIZONEEAST_SIGN" + ] + }, + "SAFARI_ZONE_EAST_REST_HOUSE": { + "blockLength": 16, + "label": "SafariZoneEastRestHouse", + "objects": [ + { + "name": "SAFARIZONEEASTRESTHOUSE_SCIENTIST", + "text": "TEXT_SAFARIZONEEASTRESTHOUSE_SCIENTIST" + }, + { + "name": "SAFARIZONEEASTRESTHOUSE_ROCKER", + "text": "TEXT_SAFARIZONEEASTRESTHOUSE_ROCKER" + }, + { + "name": "SAFARIZONEEASTRESTHOUSE_SILPH_WORKER_M", + "text": "TEXT_SAFARIZONEEASTRESTHOUSE_SILPH_WORKER_M" + } + ], + "signTexts": [] + }, + "SAFARI_ZONE_GATE": { + "blockLength": 12, + "label": "SafariZoneGate", + "objects": [ + { + "name": "SAFARIZONEGATE_SAFARI_ZONE_WORKER1", + "text": "TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1" + }, + { + "name": "SAFARIZONEGATE_SAFARI_ZONE_WORKER2", + "text": "TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER2" + } + ], + "signTexts": [] + }, + "SAFARI_ZONE_NORTH": { + "blockLength": 360, + "label": "SafariZoneNorth", + "objects": [ + { + "item": "PROTEIN", + "name": "SAFARIZONENORTH_PROTEIN", + "text": "TEXT_SAFARIZONENORTH_PROTEIN" + }, + { + "item": "TM_SKULL_BASH", + "name": "SAFARIZONENORTH_TM_SKULL_BASH", + "text": "TEXT_SAFARIZONENORTH_TM_SKULL_BASH" + } + ], + "signTexts": [ + "TEXT_SAFARIZONENORTH_REST_HOUSE_SIGN", + "TEXT_SAFARIZONENORTH_TRAINER_TIPS_1", + "TEXT_SAFARIZONENORTH_SIGN", + "TEXT_SAFARIZONENORTH_TRAINER_TIPS_2", + "TEXT_SAFARIZONENORTH_TRAINER_TIPS_3" + ] + }, + "SAFARI_ZONE_NORTH_REST_HOUSE": { + "blockLength": 16, + "label": "SafariZoneNorthRestHouse", + "objects": [ + { + "name": "SAFARIZONENORTHRESTHOUSE_SCIENTIST", + "text": "TEXT_SAFARIZONENORTHRESTHOUSE_SCIENTIST" + }, + { + "name": "SAFARIZONENORTHRESTHOUSE_SAFARI_ZONE_WORKER", + "text": "TEXT_SAFARIZONENORTHRESTHOUSE_SAFARI_ZONE_WORKER" + }, + { + "name": "SAFARIZONENORTHRESTHOUSE_GENTLEMAN", + "text": "TEXT_SAFARIZONENORTHRESTHOUSE_GENTLEMAN" + } + ], + "signTexts": [] + }, + "SAFARI_ZONE_SECRET_HOUSE": { + "blockLength": 16, + "label": "SafariZoneSecretHouse", + "objects": [ + { + "name": "SAFARIZONESECRETHOUSE_FISHING_GURU", + "text": "TEXT_SAFARIZONESECRETHOUSE_FISHING_GURU" + } + ], + "signTexts": [] + }, + "SAFARI_ZONE_WEST": { + "blockLength": 195, + "label": "SafariZoneWest", + "objects": [ + { + "item": "MAX_POTION", + "name": "SAFARIZONEWEST_MAX_POTION", + "text": "TEXT_SAFARIZONEWEST_MAX_POTION" + }, + { + "item": "TM_DOUBLE_TEAM", + "name": "SAFARIZONEWEST_TM_DOUBLE_TEAM", + "text": "TEXT_SAFARIZONEWEST_TM_DOUBLE_TEAM" + }, + { + "item": "MAX_REVIVE", + "name": "SAFARIZONEWEST_MAX_REVIVE", + "text": "TEXT_SAFARIZONEWEST_MAX_REVIVE" + }, + { + "item": "GOLD_TEETH", + "name": "SAFARIZONEWEST_GOLD_TEETH", + "text": "TEXT_SAFARIZONEWEST_GOLD_TEETH" + } + ], + "signTexts": [ + "TEXT_SAFARIZONEWEST_REST_HOUSE_SIGN", + "TEXT_SAFARIZONEWEST_FIND_WARDENS_TEETH_SIGN", + "TEXT_SAFARIZONEWEST_TRAINER_TIPS", + "TEXT_SAFARIZONEWEST_SIGN" + ] + }, + "SAFARI_ZONE_WEST_REST_HOUSE": { + "blockLength": 16, + "label": "SafariZoneWestRestHouse", + "objects": [ + { + "name": "SAFARIZONEWESTRESTHOUSE_SCIENTIST", + "text": "TEXT_SAFARIZONEWESTRESTHOUSE_SCIENTIST" + }, + { + "name": "SAFARIZONEWESTRESTHOUSE_COOLTRAINER_M", + "text": "TEXT_SAFARIZONEWESTRESTHOUSE_COOLTRAINER_M" + }, + { + "name": "SAFARIZONEWESTRESTHOUSE_SILPH_WORKER_F", + "text": "TEXT_SAFARIZONEWESTRESTHOUSE_SILPH_WORKER_F" + } + ], + "signTexts": [] + }, + "SAFFRON_CITY": { + "blockLength": 360, + "label": "SaffronCity", + "objects": [ + { + "name": "SAFFRONCITY_ROCKET1", + "text": "TEXT_SAFFRONCITY_ROCKET1" + }, + { + "name": "SAFFRONCITY_ROCKET2", + "text": "TEXT_SAFFRONCITY_ROCKET2" + }, + { + "name": "SAFFRONCITY_ROCKET3", + "text": "TEXT_SAFFRONCITY_ROCKET3" + }, + { + "name": "SAFFRONCITY_ROCKET4", + "text": "TEXT_SAFFRONCITY_ROCKET4" + }, + { + "name": "SAFFRONCITY_ROCKET5", + "text": "TEXT_SAFFRONCITY_ROCKET5" + }, + { + "name": "SAFFRONCITY_ROCKET6", + "text": "TEXT_SAFFRONCITY_ROCKET6" + }, + { + "name": "SAFFRONCITY_ROCKET7", + "text": "TEXT_SAFFRONCITY_ROCKET7" + }, + { + "hidden": true, + "name": "SAFFRONCITY_SCIENTIST", + "text": "TEXT_SAFFRONCITY_SCIENTIST" + }, + { + "hidden": true, + "name": "SAFFRONCITY_SILPH_WORKER_M", + "text": "TEXT_SAFFRONCITY_SILPH_WORKER_M" + }, + { + "hidden": true, + "name": "SAFFRONCITY_SILPH_WORKER_F", + "text": "TEXT_SAFFRONCITY_SILPH_WORKER_F" + }, + { + "hidden": true, + "name": "SAFFRONCITY_GENTLEMAN", + "text": "TEXT_SAFFRONCITY_GENTLEMAN" + }, + { + "hidden": true, + "name": "SAFFRONCITY_PIDGEOT", + "text": "TEXT_SAFFRONCITY_PIDGEOT" + }, + { + "hidden": true, + "name": "SAFFRONCITY_ROCKER", + "text": "TEXT_SAFFRONCITY_ROCKER" + }, + { + "name": "SAFFRONCITY_ROCKET8", + "text": "TEXT_SAFFRONCITY_ROCKET8" + } + ], + "signTexts": [ + "TEXT_SAFFRONCITY_SIGN", + "TEXT_SAFFRONCITY_FIGHTING_DOJO_SIGN", + "TEXT_SAFFRONCITY_GYM_SIGN", + "TEXT_SAFFRONCITY_MART_SIGN", + "TEXT_SAFFRONCITY_TRAINER_TIPS1", + "TEXT_SAFFRONCITY_TRAINER_TIPS2", + "TEXT_SAFFRONCITY_SILPH_CO_SIGN", + "TEXT_SAFFRONCITY_POKECENTER_SIGN", + "TEXT_SAFFRONCITY_MR_PSYCHICS_HOUSE_SIGN", + "TEXT_SAFFRONCITY_SILPH_CO_LATEST_PRODUCT_SIGN" + ] + }, + "SAFFRON_GYM": { + "blockLength": 90, + "label": "SaffronGym", + "objects": [ + { + "name": "SAFFRONGYM_SABRINA", + "text": "TEXT_SAFFRONGYM_SABRINA", + "trainerClass": "OPP_SABRINA", + "trainerParty": 1 + }, + { + "name": "SAFFRONGYM_CHANNELER1", + "text": "TEXT_SAFFRONGYM_CHANNELER1", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 22 + }, + { + "name": "SAFFRONGYM_YOUNGSTER1", + "text": "TEXT_SAFFRONGYM_YOUNGSTER1", + "trainerClass": "OPP_PSYCHIC_TR", + "trainerParty": 1 + }, + { + "name": "SAFFRONGYM_CHANNELER2", + "text": "TEXT_SAFFRONGYM_CHANNELER2", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 23 + }, + { + "name": "SAFFRONGYM_YOUNGSTER2", + "text": "TEXT_SAFFRONGYM_YOUNGSTER2", + "trainerClass": "OPP_PSYCHIC_TR", + "trainerParty": 2 + }, + { + "name": "SAFFRONGYM_CHANNELER3", + "text": "TEXT_SAFFRONGYM_CHANNELER3", + "trainerClass": "OPP_CHANNELER", + "trainerParty": 24 + }, + { + "name": "SAFFRONGYM_YOUNGSTER3", + "text": "TEXT_SAFFRONGYM_YOUNGSTER3", + "trainerClass": "OPP_PSYCHIC_TR", + "trainerParty": 3 + }, + { + "name": "SAFFRONGYM_YOUNGSTER4", + "text": "TEXT_SAFFRONGYM_YOUNGSTER4", + "trainerClass": "OPP_PSYCHIC_TR", + "trainerParty": 4 + }, + { + "name": "SAFFRONGYM_GYM_GUIDE", + "text": "TEXT_SAFFRONGYM_GYM_GUIDE" + } + ], + "signTexts": [] + }, + "SAFFRON_MART": { + "blockLength": 16, + "label": "SaffronMart", + "objects": [ + { + "name": "SAFFRONMART_CLERK", + "text": "TEXT_SAFFRONMART_CLERK" + }, + { + "name": "SAFFRONMART_SUPER_NERD", + "text": "TEXT_SAFFRONMART_SUPER_NERD" + }, + { + "name": "SAFFRONMART_COOLTRAINER_F", + "text": "TEXT_SAFFRONMART_COOLTRAINER_F" + } + ], + "signTexts": [] + }, + "SAFFRON_PIDGEY_HOUSE": { + "blockLength": 16, + "label": "SaffronPidgeyHouse", + "objects": [ + { + "name": "SAFFRONPIDGEYHOUSE_BRUNETTE_GIRL", + "text": "TEXT_SAFFRONPIDGEYHOUSE_BRUNETTE_GIRL" + }, + { + "name": "SAFFRONPIDGEYHOUSE_PIDGEY", + "text": "TEXT_SAFFRONPIDGEYHOUSE_PIDGEY" + }, + { + "name": "SAFFRONPIDGEYHOUSE_YOUNGSTER", + "text": "TEXT_SAFFRONPIDGEYHOUSE_YOUNGSTER" + }, + { + "name": "SAFFRONPIDGEYHOUSE_PAPER", + "text": "TEXT_SAFFRONPIDGEYHOUSE_PAPER" + } + ], + "signTexts": [] + }, + "SAFFRON_POKECENTER": { + "blockLength": 28, + "label": "SaffronPokecenter", + "objects": [ + { + "name": "SAFFRONPOKECENTER_NURSE", + "text": "TEXT_SAFFRONPOKECENTER_NURSE" + }, + { + "name": "SAFFRONPOKECENTER_BEAUTY", + "text": "TEXT_SAFFRONPOKECENTER_BEAUTY" + }, + { + "name": "SAFFRONPOKECENTER_GENTLEMAN", + "text": "TEXT_SAFFRONPOKECENTER_GENTLEMAN" + }, + { + "name": "SAFFRONPOKECENTER_LINK_RECEPTIONIST", + "text": "TEXT_SAFFRONPOKECENTER_LINK_RECEPTIONIST" + }, + { + "name": "SAFFRONPOKECENTER_CHANSEY", + "text": "TEXT_SAFFRONPOKECENTER_CHANSEY" + } + ], + "signTexts": [] + }, + "SEAFOAM_ISLANDS_1F": { + "blockLength": 135, + "label": "SeafoamIslands1F", + "objects": [ + { + "name": "SEAFOAMISLANDS1F_BOULDER1", + "text": "TEXT_SEAFOAMISLANDS1F_BOULDER1" + }, + { + "name": "SEAFOAMISLANDS1F_BOULDER2", + "text": "TEXT_SEAFOAMISLANDS1F_BOULDER2" + } + ], + "signTexts": [] + }, + "SEAFOAM_ISLANDS_B1F": { + "blockLength": 135, + "label": "SeafoamIslandsB1F", + "objects": [ + { + "hidden": true, + "name": "SEAFOAMISLANDSB1F_BOULDER1", + "text": "TEXT_SEAFOAMISLANDSB1F_BOULDER1" + }, + { + "hidden": true, + "name": "SEAFOAMISLANDSB1F_BOULDER2", + "text": "TEXT_SEAFOAMISLANDSB1F_BOULDER2" + } + ], + "signTexts": [] + }, + "SEAFOAM_ISLANDS_B2F": { + "blockLength": 135, + "label": "SeafoamIslandsB2F", + "objects": [ + { + "hidden": true, + "name": "SEAFOAMISLANDSB2F_BOULDER1", + "text": "TEXT_SEAFOAMISLANDSB2F_BOULDER1" + }, + { + "hidden": true, + "name": "SEAFOAMISLANDSB2F_BOULDER2", + "text": "TEXT_SEAFOAMISLANDSB2F_BOULDER2" + } + ], + "signTexts": [] + }, + "SEAFOAM_ISLANDS_B3F": { + "blockLength": 135, + "label": "SeafoamIslandsB3F", + "objects": [ + { + "name": "SEAFOAMISLANDSB3F_BOULDER1", + "text": "TEXT_SEAFOAMISLANDSB3F_BOULDER1" + }, + { + "name": "SEAFOAMISLANDSB3F_BOULDER2", + "text": "TEXT_SEAFOAMISLANDSB3F_BOULDER2" + }, + { + "name": "SEAFOAMISLANDSB3F_BOULDER3", + "text": "TEXT_SEAFOAMISLANDSB3F_BOULDER3" + }, + { + "name": "SEAFOAMISLANDSB3F_BOULDER4", + "text": "TEXT_SEAFOAMISLANDSB3F_BOULDER4" + }, + { + "hidden": true, + "name": "SEAFOAMISLANDSB3F_BOULDER5", + "text": "TEXT_SEAFOAMISLANDSB3F_BOULDER5" + }, + { + "hidden": true, + "name": "SEAFOAMISLANDSB3F_BOULDER6", + "text": "TEXT_SEAFOAMISLANDSB3F_BOULDER6" + } + ], + "signTexts": [] + }, + "SEAFOAM_ISLANDS_B4F": { + "blockLength": 135, + "label": "SeafoamIslandsB4F", + "objects": [ + { + "hidden": true, + "name": "SEAFOAMISLANDSB4F_BOULDER1", + "text": "TEXT_SEAFOAMISLANDSB4F_BOULDER1" + }, + { + "hidden": true, + "name": "SEAFOAMISLANDSB4F_BOULDER2", + "text": "TEXT_SEAFOAMISLANDSB4F_BOULDER2" + }, + { + "name": "SEAFOAMISLANDSB4F_ARTICUNO", + "pokemon": "ARTICUNO", + "text": "TEXT_SEAFOAMISLANDSB4F_ARTICUNO" + } + ], + "signTexts": [ + "TEXT_SEAFOAMISLANDSB4F_BOULDERS_SIGN", + "TEXT_SEAFOAMISLANDSB4F_DANGER_SIGN" + ] + }, + "SILPH_CO_10F": { + "blockLength": 72, + "label": "SilphCo10F", + "objects": [ + { + "name": "SILPHCO10F_ROCKET", + "text": "TEXT_SILPHCO10F_ROCKET", + "trainerClass": "OPP_ROCKET", + "trainerParty": 39 + }, + { + "name": "SILPHCO10F_SCIENTIST", + "text": "TEXT_SILPHCO10F_SCIENTIST", + "trainerClass": "OPP_SCIENTIST", + "trainerParty": 11 + }, + { + "name": "SILPHCO10F_SILPH_WORKER_F", + "text": "TEXT_SILPHCO10F_SILPH_WORKER_F" + }, + { + "item": "TM_EARTHQUAKE", + "name": "SILPHCO10F_TM_EARTHQUAKE", + "text": "TEXT_SILPHCO10F_TM_EARTHQUAKE" + }, + { + "item": "RARE_CANDY", + "name": "SILPHCO10F_RARE_CANDY", + "text": "TEXT_SILPHCO10F_RARE_CANDY" + }, + { + "item": "CARBOS", + "name": "SILPHCO10F_CARBOS", + "text": "TEXT_SILPHCO10F_CARBOS" + } + ], + "signTexts": [] + }, + "SILPH_CO_11F": { + "blockLength": 81, + "label": "SilphCo11F", + "objects": [ + { + "name": "SILPHCO11F_SILPH_PRESIDENT", + "text": "TEXT_SILPHCO11F_SILPH_PRESIDENT" + }, + { + "name": "SILPHCO11F_BEAUTY", + "text": "TEXT_SILPHCO11F_BEAUTY" + }, + { + "name": "SILPHCO11F_GIOVANNI", + "text": "TEXT_SILPHCO11F_GIOVANNI", + "trainerClass": "OPP_GIOVANNI", + "trainerParty": 2 + }, + { + "name": "SILPHCO11F_JAMES", + "text": "TEXT_SILPHCO11F_JAMES" + }, + { + "name": "SILPHCO11F_ROCKET", + "text": "TEXT_SILPHCO11F_ROCKET", + "trainerClass": "OPP_ROCKET", + "trainerParty": 40 + }, + { + "name": "SILPHCO11F_JESSIE", + "text": "TEXT_SILPHCO11F_JESSIE" + } + ], + "signTexts": [] + }, + "SILPH_CO_1F": { + "blockLength": 135, + "label": "SilphCo1F", + "objects": [ + { + "hidden": true, + "name": "SILPHCO1F_LINK_RECEPTIONIST", + "text": "TEXT_SILPHCO1F_LINK_RECEPTIONIST" + } + ], + "signTexts": [] + }, + "SILPH_CO_2F": { + "blockLength": 135, + "label": "SilphCo2F", + "objects": [ + { + "name": "SILPHCO2F_SILPH_WORKER_F", + "text": "TEXT_SILPHCO2F_SILPH_WORKER_F" + }, + { + "name": "SILPHCO2F_SCIENTIST1", + "text": "TEXT_SILPHCO2F_SCIENTIST1", + "trainerClass": "OPP_SCIENTIST", + "trainerParty": 2 + }, + { + "name": "SILPHCO2F_SCIENTIST2", + "text": "TEXT_SILPHCO2F_SCIENTIST2", + "trainerClass": "OPP_SCIENTIST", + "trainerParty": 3 + }, + { + "name": "SILPHCO2F_ROCKET1", + "text": "TEXT_SILPHCO2F_ROCKET1", + "trainerClass": "OPP_ROCKET", + "trainerParty": 23 + }, + { + "name": "SILPHCO2F_ROCKET2", + "text": "TEXT_SILPHCO2F_ROCKET2", + "trainerClass": "OPP_ROCKET", + "trainerParty": 24 + } + ], + "signTexts": [] + }, + "SILPH_CO_3F": { + "blockLength": 135, + "label": "SilphCo3F", + "objects": [ + { + "name": "SILPHCO3F_SILPH_WORKER_M", + "text": "TEXT_SILPHCO3F_SILPH_WORKER_M" + }, + { + "name": "SILPHCO3F_ROCKET", + "text": "TEXT_SILPHCO3F_ROCKET", + "trainerClass": "OPP_ROCKET", + "trainerParty": 25 + }, + { + "name": "SILPHCO3F_SCIENTIST", + "text": "TEXT_SILPHCO3F_SCIENTIST", + "trainerClass": "OPP_SCIENTIST", + "trainerParty": 4 + }, + { + "item": "HYPER_POTION", + "name": "SILPHCO3F_HYPER_POTION", + "text": "TEXT_SILPHCO3F_HYPER_POTION" + } + ], + "signTexts": [] + }, + "SILPH_CO_4F": { + "blockLength": 135, + "label": "SilphCo4F", + "objects": [ + { + "name": "SILPHCO4F_SILPH_WORKER_M", + "text": "TEXT_SILPHCO4F_SILPH_WORKER_M" + }, + { + "name": "SILPHCO4F_ROCKET1", + "text": "TEXT_SILPHCO4F_ROCKET1", + "trainerClass": "OPP_ROCKET", + "trainerParty": 26 + }, + { + "name": "SILPHCO4F_SCIENTIST", + "text": "TEXT_SILPHCO4F_SCIENTIST", + "trainerClass": "OPP_SCIENTIST", + "trainerParty": 5 + }, + { + "name": "SILPHCO4F_ROCKET2", + "text": "TEXT_SILPHCO4F_ROCKET2", + "trainerClass": "OPP_ROCKET", + "trainerParty": 27 + }, + { + "item": "FULL_HEAL", + "name": "SILPHCO4F_FULL_HEAL", + "text": "TEXT_SILPHCO4F_FULL_HEAL" + }, + { + "item": "MAX_REVIVE", + "name": "SILPHCO4F_MAX_REVIVE", + "text": "TEXT_SILPHCO4F_MAX_REVIVE" + }, + { + "item": "ESCAPE_ROPE", + "name": "SILPHCO4F_ESCAPE_ROPE", + "text": "TEXT_SILPHCO4F_ESCAPE_ROPE" + } + ], + "signTexts": [] + }, + "SILPH_CO_5F": { + "blockLength": 135, + "label": "SilphCo5F", + "objects": [ + { + "name": "SILPHCO5F_SILPH_WORKER_M", + "text": "TEXT_SILPHCO5F_SILPH_WORKER_M" + }, + { + "name": "SILPHCO5F_ROCKET1", + "text": "TEXT_SILPHCO5F_ROCKET1", + "trainerClass": "OPP_ROCKET", + "trainerParty": 28 + }, + { + "name": "SILPHCO5F_SCIENTIST", + "text": "TEXT_SILPHCO5F_SCIENTIST", + "trainerClass": "OPP_SCIENTIST", + "trainerParty": 6 + }, + { + "name": "SILPHCO5F_ROCKER", + "text": "TEXT_SILPHCO5F_ROCKER", + "trainerClass": "OPP_JUGGLER", + "trainerParty": 1 + }, + { + "name": "SILPHCO5F_ROCKET2", + "text": "TEXT_SILPHCO5F_ROCKET2", + "trainerClass": "OPP_ROCKET", + "trainerParty": 29 + }, + { + "item": "TM_TAKE_DOWN", + "name": "SILPHCO5F_TM_TAKE_DOWN", + "text": "TEXT_SILPHCO5F_TM_TAKE_DOWN" + }, + { + "item": "PROTEIN", + "name": "SILPHCO5F_PROTEIN", + "text": "TEXT_SILPHCO5F_PROTEIN" + }, + { + "item": "CARD_KEY", + "name": "SILPHCO5F_CARD_KEY", + "text": "TEXT_SILPHCO5F_CARD_KEY" + }, + { + "name": "SILPHCO5F_POKEMON_REPORT1", + "text": "TEXT_SILPHCO5F_POKEMON_REPORT1" + }, + { + "name": "SILPHCO5F_POKEMON_REPORT2", + "text": "TEXT_SILPHCO5F_POKEMON_REPORT2" + }, + { + "name": "SILPHCO5F_POKEMON_REPORT3", + "text": "TEXT_SILPHCO5F_POKEMON_REPORT3" + } + ], + "signTexts": [] + }, + "SILPH_CO_6F": { + "blockLength": 117, + "label": "SilphCo6F", + "objects": [ + { + "name": "SILPHCO6F_SILPH_WORKER_M1", + "text": "TEXT_SILPHCO6F_SILPH_WORKER_M1" + }, + { + "name": "SILPHCO6F_SILPH_WORKER_M2", + "text": "TEXT_SILPHCO6F_SILPH_WORKER_M2" + }, + { + "name": "SILPHCO6F_SILPH_WORKER_F1", + "text": "TEXT_SILPHCO6F_SILPH_WORKER_F1" + }, + { + "name": "SILPHCO6F_SILPH_WORKER_F2", + "text": "TEXT_SILPHCO6F_SILPH_WORKER_F2" + }, + { + "name": "SILPHCO6F_SILPH_WORKER_M3", + "text": "TEXT_SILPHCO6F_SILPH_WORKER_M3" + }, + { + "name": "SILPHCO6F_ROCKET1", + "text": "TEXT_SILPHCO6F_ROCKET1", + "trainerClass": "OPP_ROCKET", + "trainerParty": 30 + }, + { + "name": "SILPHCO6F_SCIENTIST", + "text": "TEXT_SILPHCO6F_SCIENTIST", + "trainerClass": "OPP_SCIENTIST", + "trainerParty": 7 + }, + { + "name": "SILPHCO6F_ROCKET2", + "text": "TEXT_SILPHCO6F_ROCKET2", + "trainerClass": "OPP_ROCKET", + "trainerParty": 31 + }, + { + "item": "HP_UP", + "name": "SILPHCO6F_HP_UP", + "text": "TEXT_SILPHCO6F_HP_UP" + }, + { + "item": "X_ACCURACY", + "name": "SILPHCO6F_X_ACCURACY", + "text": "TEXT_SILPHCO6F_X_ACCURACY" + } + ], + "signTexts": [] + }, + "SILPH_CO_7F": { + "blockLength": 117, + "label": "SilphCo7F", + "objects": [ + { + "name": "SILPHCO7F_SILPH_WORKER_M1", + "text": "TEXT_SILPHCO7F_SILPH_WORKER_M1" + }, + { + "name": "SILPHCO7F_SILPH_WORKER_M2", + "text": "TEXT_SILPHCO7F_SILPH_WORKER_M2" + }, + { + "name": "SILPHCO7F_SILPH_WORKER_M3", + "text": "TEXT_SILPHCO7F_SILPH_WORKER_M3" + }, + { + "name": "SILPHCO7F_SILPH_WORKER_M4", + "text": "TEXT_SILPHCO7F_SILPH_WORKER_M4" + }, + { + "name": "SILPHCO7F_ROCKET1", + "text": "TEXT_SILPHCO7F_ROCKET1", + "trainerClass": "OPP_ROCKET", + "trainerParty": 32 + }, + { + "name": "SILPHCO7F_SCIENTIST", + "text": "TEXT_SILPHCO7F_SCIENTIST", + "trainerClass": "OPP_SCIENTIST", + "trainerParty": 8 + }, + { + "name": "SILPHCO7F_ROCKET2", + "text": "TEXT_SILPHCO7F_ROCKET2", + "trainerClass": "OPP_ROCKET", + "trainerParty": 33 + }, + { + "name": "SILPHCO7F_ROCKET3", + "text": "TEXT_SILPHCO7F_ROCKET3", + "trainerClass": "OPP_ROCKET", + "trainerParty": 34 + }, + { + "name": "SILPHCO7F_RIVAL", + "text": "TEXT_SILPHCO7F_RIVAL" + }, + { + "item": "CALCIUM", + "name": "SILPHCO7F_CALCIUM", + "text": "TEXT_SILPHCO7F_CALCIUM" + }, + { + "item": "TM_SWORDS_DANCE", + "name": "SILPHCO7F_TM_SWORDS_DANCE", + "text": "TEXT_SILPHCO7F_TM_SWORDS_DANCE" + } + ], + "signTexts": [] + }, + "SILPH_CO_8F": { + "blockLength": 117, + "label": "SilphCo8F", + "objects": [ + { + "name": "SILPHCO8F_SILPH_WORKER_M", + "text": "TEXT_SILPHCO8F_SILPH_WORKER_M" + }, + { + "name": "SILPHCO8F_ROCKET1", + "text": "TEXT_SILPHCO8F_ROCKET1", + "trainerClass": "OPP_ROCKET", + "trainerParty": 35 + }, + { + "name": "SILPHCO8F_SCIENTIST", + "text": "TEXT_SILPHCO8F_SCIENTIST", + "trainerClass": "OPP_SCIENTIST", + "trainerParty": 9 + }, + { + "name": "SILPHCO8F_ROCKET2", + "text": "TEXT_SILPHCO8F_ROCKET2", + "trainerClass": "OPP_ROCKET", + "trainerParty": 36 + } + ], + "signTexts": [] + }, + "SILPH_CO_9F": { + "blockLength": 117, + "label": "SilphCo9F", + "objects": [ + { + "name": "SILPHCO9F_NURSE", + "text": "TEXT_SILPHCO9F_NURSE" + }, + { + "name": "SILPHCO9F_ROCKET1", + "text": "TEXT_SILPHCO9F_ROCKET1", + "trainerClass": "OPP_ROCKET", + "trainerParty": 37 + }, + { + "name": "SILPHCO9F_SCIENTIST", + "text": "TEXT_SILPHCO9F_SCIENTIST", + "trainerClass": "OPP_SCIENTIST", + "trainerParty": 10 + }, + { + "name": "SILPHCO9F_ROCKET2", + "text": "TEXT_SILPHCO9F_ROCKET2", + "trainerClass": "OPP_ROCKET", + "trainerParty": 38 + } + ], + "signTexts": [] + }, + "SILPH_CO_ELEVATOR": { + "blockLength": 4, + "label": "SilphCoElevator", + "objects": [], + "signTexts": [ + "TEXT_SILPHCOELEVATOR_ELEVATOR" + ] + }, + "SS_ANNE_1F": { + "blockLength": 180, + "label": "SSAnne1F", + "objects": [ + { + "name": "SSANNE1F_WAITER", + "text": "TEXT_SSANNE1F_WAITER" + }, + { + "name": "SSANNE1F_SAILOR", + "text": "TEXT_SSANNE1F_SAILOR" + } + ], + "signTexts": [] + }, + "SS_ANNE_1F_ROOMS": { + "blockLength": 96, + "label": "SSAnne1FRooms", + "objects": [ + { + "name": "SSANNE1FROOMS_GENTLEMAN1", + "text": "TEXT_SSANNE1FROOMS_GENTLEMAN1", + "trainerClass": "OPP_GENTLEMAN", + "trainerParty": 1 + }, + { + "name": "SSANNE1FROOMS_GENTLEMAN2", + "text": "TEXT_SSANNE1FROOMS_GENTLEMAN2", + "trainerClass": "OPP_GENTLEMAN", + "trainerParty": 2 + }, + { + "name": "SSANNE1FROOMS_YOUNGSTER", + "text": "TEXT_SSANNE1FROOMS_YOUNGSTER", + "trainerClass": "OPP_YOUNGSTER", + "trainerParty": 8 + }, + { + "name": "SSANNE1FROOMS_COOLTRAINER_F", + "text": "TEXT_SSANNE1FROOMS_COOLTRAINER_F", + "trainerClass": "OPP_LASS", + "trainerParty": 11 + }, + { + "name": "SSANNE1FROOMS_GIRL1", + "text": "TEXT_SSANNE1FROOMS_GIRL1" + }, + { + "name": "SSANNE1FROOMS_MIDDLE_AGED_MAN", + "text": "TEXT_SSANNE1FROOMS_MIDDLE_AGED_MAN" + }, + { + "name": "SSANNE1FROOMS_LITTLE_GIRL", + "text": "TEXT_SSANNE1FROOMS_LITTLE_GIRL" + }, + { + "name": "SSANNE1FROOMS_WIGGLYTUFF", + "text": "TEXT_SSANNE1FROOMS_WIGGLYTUFF" + }, + { + "name": "SSANNE1FROOMS_GIRL2", + "text": "TEXT_SSANNE1FROOMS_GIRL2" + }, + { + "item": "TM_BODY_SLAM", + "name": "SSANNE1FROOMS_TM_BODY_SLAM", + "text": "TEXT_SSANNE1FROOMS_TM_BODY_SLAM" + }, + { + "name": "SSANNE1FROOMS_GENTLEMAN3", + "text": "TEXT_SSANNE1FROOMS_GENTLEMAN3" + } + ], + "signTexts": [] + }, + "SS_ANNE_2F": { + "blockLength": 180, + "label": "SSAnne2F", + "objects": [ + { + "name": "SSANNE2F_WAITER", + "text": "TEXT_SSANNE2F_WAITER" + }, + { + "hidden": true, + "name": "SSANNE2F_RIVAL", + "text": "TEXT_SSANNE2F_RIVAL", + "trainerClass": "OPP_RIVAL1", + "trainerParty": 1 + } + ], + "signTexts": [] + }, + "SS_ANNE_2F_ROOMS": { + "blockLength": 96, + "label": "SSAnne2FRooms", + "objects": [ + { + "name": "SSANNE2FROOMS_GENTLEMAN1", + "text": "TEXT_SSANNE2FROOMS_GENTLEMAN1", + "trainerClass": "OPP_GENTLEMAN", + "trainerParty": 3 + }, + { + "name": "SSANNE2FROOMS_FISHER", + "text": "TEXT_SSANNE2FROOMS_FISHER", + "trainerClass": "OPP_FISHER", + "trainerParty": 1 + }, + { + "name": "SSANNE2FROOMS_GENTLEMAN2", + "text": "TEXT_SSANNE2FROOMS_GENTLEMAN2", + "trainerClass": "OPP_GENTLEMAN", + "trainerParty": 5 + }, + { + "name": "SSANNE2FROOMS_COOLTRAINER_F", + "text": "TEXT_SSANNE2FROOMS_COOLTRAINER_F", + "trainerClass": "OPP_LASS", + "trainerParty": 12 + }, + { + "name": "SSANNE2FROOMS_GENTLEMAN3", + "text": "TEXT_SSANNE2FROOMS_GENTLEMAN3" + }, + { + "item": "MAX_ETHER", + "name": "SSANNE2FROOMS_MAX_ETHER", + "text": "TEXT_SSANNE2FROOMS_MAX_ETHER" + }, + { + "name": "SSANNE2FROOMS_GENTLEMAN4", + "text": "TEXT_SSANNE2FROOMS_GENTLEMAN4" + }, + { + "name": "SSANNE2FROOMS_GRAMPS", + "text": "TEXT_SSANNE2FROOMS_GRAMPS" + }, + { + "item": "RARE_CANDY", + "name": "SSANNE2FROOMS_RARE_CANDY", + "text": "TEXT_SSANNE2FROOMS_RARE_CANDY" + }, + { + "name": "SSANNE2FROOMS_GENTLEMAN5", + "text": "TEXT_SSANNE2FROOMS_GENTLEMAN5" + }, + { + "name": "SSANNE2FROOMS_LITTLE_BOY", + "text": "TEXT_SSANNE2FROOMS_LITTLE_BOY" + }, + { + "name": "SSANNE2FROOMS_BRUNETTE_GIRL", + "text": "TEXT_SSANNE2FROOMS_BRUNETTE_GIRL" + }, + { + "name": "SSANNE2FROOMS_BEAUTY", + "text": "TEXT_SSANNE2FROOMS_BEAUTY" + } + ], + "signTexts": [] + }, + "SS_ANNE_3F": { + "blockLength": 30, + "label": "SSAnne3F", + "objects": [ + { + "name": "SSANNE3F_SAILOR", + "text": "TEXT_SSANNE3F_SAILOR" + } + ], + "signTexts": [] + }, + "SS_ANNE_B1F": { + "blockLength": 60, + "label": "SSAnneB1F", + "objects": [], + "signTexts": [] + }, + "SS_ANNE_B1F_ROOMS": { + "blockLength": 96, + "label": "SSAnneB1FRooms", + "objects": [ + { + "name": "SSANNEB1FROOMS_SAILOR1", + "text": "TEXT_SSANNEB1FROOMS_SAILOR1", + "trainerClass": "OPP_SAILOR", + "trainerParty": 3 + }, + { + "name": "SSANNEB1FROOMS_SAILOR2", + "text": "TEXT_SSANNEB1FROOMS_SAILOR2", + "trainerClass": "OPP_SAILOR", + "trainerParty": 4 + }, + { + "name": "SSANNEB1FROOMS_SAILOR3", + "text": "TEXT_SSANNEB1FROOMS_SAILOR3", + "trainerClass": "OPP_SAILOR", + "trainerParty": 5 + }, + { + "name": "SSANNEB1FROOMS_SAILOR4", + "text": "TEXT_SSANNEB1FROOMS_SAILOR4", + "trainerClass": "OPP_SAILOR", + "trainerParty": 6 + }, + { + "name": "SSANNEB1FROOMS_SAILOR5", + "text": "TEXT_SSANNEB1FROOMS_SAILOR5", + "trainerClass": "OPP_SAILOR", + "trainerParty": 7 + }, + { + "name": "SSANNEB1FROOMS_FISHER", + "text": "TEXT_SSANNEB1FROOMS_FISHER", + "trainerClass": "OPP_FISHER", + "trainerParty": 2 + }, + { + "name": "SSANNEB1FROOMS_SUPER_NERD", + "text": "TEXT_SSANNEB1FROOMS_SUPER_NERD" + }, + { + "name": "SSANNEB1FROOMS_MACHOKE", + "text": "TEXT_SSANNEB1FROOMS_MACHOKE" + }, + { + "item": "ETHER", + "name": "SSANNEB1FROOMS_ETHER", + "text": "TEXT_SSANNEB1FROOMS_ETHER" + }, + { + "item": "TM_REST", + "name": "SSANNEB1FROOMS_TM_REST", + "text": "TEXT_SSANNEB1FROOMS_TM_REST" + }, + { + "item": "MAX_POTION", + "name": "SSANNEB1FROOMS_MAX_POTION", + "text": "TEXT_SSANNEB1FROOMS_MAX_POTION" + } + ], + "signTexts": [] + }, + "SS_ANNE_BOW": { + "blockLength": 70, + "label": "SSAnneBow", + "objects": [ + { + "name": "SSANNEBOW_SUPER_NERD", + "text": "TEXT_SSANNEBOW_SUPER_NERD" + }, + { + "name": "SSANNEBOW_SAILOR1", + "text": "TEXT_SSANNEBOW_SAILOR1" + }, + { + "name": "SSANNEBOW_COOLTRAINER_M", + "text": "TEXT_SSANNEBOW_COOLTRAINER_M" + }, + { + "name": "SSANNEBOW_SAILOR2", + "text": "TEXT_SSANNEBOW_SAILOR2", + "trainerClass": "OPP_SAILOR", + "trainerParty": 1 + }, + { + "name": "SSANNEBOW_SAILOR3", + "text": "TEXT_SSANNEBOW_SAILOR3", + "trainerClass": "OPP_SAILOR", + "trainerParty": 2 + } + ], + "signTexts": [] + }, + "SS_ANNE_CAPTAINS_ROOM": { + "blockLength": 12, + "label": "SSAnneCaptainsRoom", + "objects": [ + { + "name": "SSANNECAPTAINSROOM_CAPTAIN", + "text": "TEXT_SSANNECAPTAINSROOM_CAPTAIN" + } + ], + "signTexts": [ + "TEXT_SSANNECAPTAINSROOM_TRASH", + "TEXT_SSANNECAPTAINSROOM_SEASICK_BOOK" + ] + }, + "SS_ANNE_KITCHEN": { + "blockLength": 56, + "label": "SSAnneKitchen", + "objects": [ + { + "name": "SSANNEKITCHEN_COOK1", + "text": "TEXT_SSANNEKITCHEN_COOK1" + }, + { + "name": "SSANNEKITCHEN_COOK2", + "text": "TEXT_SSANNEKITCHEN_COOK2" + }, + { + "name": "SSANNEKITCHEN_COOK3", + "text": "TEXT_SSANNEKITCHEN_COOK3" + }, + { + "name": "SSANNEKITCHEN_COOK4", + "text": "TEXT_SSANNEKITCHEN_COOK4" + }, + { + "name": "SSANNEKITCHEN_COOK5", + "text": "TEXT_SSANNEKITCHEN_COOK5" + }, + { + "name": "SSANNEKITCHEN_COOK6", + "text": "TEXT_SSANNEKITCHEN_COOK6" + }, + { + "name": "SSANNEKITCHEN_COOK7", + "text": "TEXT_SSANNEKITCHEN_COOK7" + } + ], + "signTexts": [] + }, + "SUMMER_BEACH_HOUSE": { + "blockLength": 28, + "label": "SummerBeachHouse", + "objects": [ + { + "name": "SUMMERBEACHHOUSE_SURFINDUDE", + "text": "TEXT_SUMMERBEACHHOUSE_SURFINDUDE" + }, + { + "name": "SUMMERBEACHHOUSE_PIKACHU", + "text": "TEXT_SUMMERBEACHHOUSE_PIKACHU" + } + ], + "signTexts": [ + "TEXT_SUMMERBEACHHOUSE_POSTER1", + "TEXT_SUMMERBEACHHOUSE_POSTER2", + "TEXT_SUMMERBEACHHOUSE_POSTER3", + "TEXT_SUMMERBEACHHOUSE_PRINTER" + ] + }, + "TRADE_CENTER": { + "blockLength": 20, + "label": "TradeCenter", + "objects": [ + { + "name": "TRADECENTER_OPPONENT", + "text": "TEXT_TRADECENTER_OPPONENT" + } + ], + "signTexts": [] + }, + "UNDERGROUND_PATH_NORTH_SOUTH": { + "blockLength": 92, + "label": "UndergroundPathNorthSouth", + "objects": [], + "signTexts": [] + }, + "UNDERGROUND_PATH_ROUTE_5": { + "blockLength": 16, + "label": "UndergroundPathRoute5", + "objects": [ + { + "name": "UNDERGROUNDPATHROUTE5_LITTLE_GIRL", + "text": "TEXT_UNDERGROUNDPATHROUTE5_LITTLE_GIRL" + } + ], + "signTexts": [] + }, + "UNDERGROUND_PATH_ROUTE_6": { + "blockLength": 16, + "label": "UndergroundPathRoute6", + "objects": [ + { + "name": "UNDERGROUNDPATHROUTE6_GIRL", + "text": "TEXT_UNDERGROUNDPATHROUTE6_GIRL" + } + ], + "signTexts": [] + }, + "UNDERGROUND_PATH_ROUTE_7": { + "blockLength": 16, + "label": "UndergroundPathRoute7", + "objects": [ + { + "name": "UNDERGROUNDPATHROUTE7_MIDDLE_AGED_MAN", + "text": "TEXT_UNDERGROUNDPATHROUTE7_MIDDLE_AGED_MAN" + } + ], + "signTexts": [] + }, + "UNDERGROUND_PATH_ROUTE_8": { + "blockLength": 16, + "label": "UndergroundPathRoute8", + "objects": [ + { + "name": "UNDERGROUNDPATHROUTE8_GIRL", + "text": "TEXT_UNDERGROUNDPATHROUTE8_GIRL" + } + ], + "signTexts": [] + }, + "UNDERGROUND_PATH_WEST_EAST": { + "blockLength": 100, + "label": "UndergroundPathWestEast", + "objects": [], + "signTexts": [] + }, + "VERMILION_CITY": { + "blockLength": 360, + "label": "VermilionCity", + "objects": [ + { + "name": "VERMILIONCITY_BEAUTY", + "text": "TEXT_VERMILIONCITY_BEAUTY" + }, + { + "name": "VERMILIONCITY_GAMBLER1", + "text": "TEXT_VERMILIONCITY_GAMBLER1" + }, + { + "name": "VERMILIONCITY_SAILOR1", + "text": "TEXT_VERMILIONCITY_SAILOR1" + }, + { + "name": "VERMILIONCITY_GAMBLER2", + "text": "TEXT_VERMILIONCITY_GAMBLER2" + }, + { + "name": "VERMILIONCITY_MACHOP", + "text": "TEXT_VERMILIONCITY_MACHOP" + }, + { + "name": "VERMILIONCITY_SAILOR2", + "text": "TEXT_VERMILIONCITY_SAILOR2" + }, + { + "name": "VERMILIONCITY_OFFICER_JENNY", + "text": "TEXT_VERMILIONCITY_OFFICER_JENNY" + } + ], + "signTexts": [ + "TEXT_VERMILIONCITY_SIGN", + "TEXT_VERMILIONCITY_NOTICE_SIGN", + "TEXT_VERMILIONCITY_MART_SIGN", + "TEXT_VERMILIONCITY_POKECENTER_SIGN", + "TEXT_VERMILIONCITY_POKEMON_FAN_CLUB_SIGN", + "TEXT_VERMILIONCITY_GYM_SIGN", + "TEXT_VERMILIONCITY_HARBOR_SIGN" + ] + }, + "VERMILION_DOCK": { + "blockLength": 84, + "label": "VermilionDock", + "objects": [], + "signTexts": [] + }, + "VERMILION_GYM": { + "blockLength": 45, + "label": "VermilionGym", + "objects": [ + { + "name": "VERMILIONGYM_LT_SURGE", + "text": "TEXT_VERMILIONGYM_LT_SURGE", + "trainerClass": "OPP_LT_SURGE", + "trainerParty": 1 + }, + { + "name": "VERMILIONGYM_GENTLEMAN", + "text": "TEXT_VERMILIONGYM_GENTLEMAN", + "trainerClass": "OPP_GENTLEMAN", + "trainerParty": 3 + }, + { + "name": "VERMILIONGYM_SUPER_NERD", + "text": "TEXT_VERMILIONGYM_SUPER_NERD", + "trainerClass": "OPP_ROCKER", + "trainerParty": 1 + }, + { + "name": "VERMILIONGYM_SAILOR", + "text": "TEXT_VERMILIONGYM_SAILOR", + "trainerClass": "OPP_SAILOR", + "trainerParty": 8 + }, + { + "name": "VERMILIONGYM_GYM_GUIDE", + "text": "TEXT_VERMILIONGYM_GYM_GUIDE" + } + ], + "signTexts": [] + }, + "VERMILION_MART": { + "blockLength": 16, + "label": "VermilionMart", + "objects": [ + { + "name": "VERMILIONMART_CLERK", + "text": "TEXT_VERMILIONMART_CLERK" + }, + { + "name": "VERMILIONMART_COOLTRAINER_M", + "text": "TEXT_VERMILIONMART_COOLTRAINER_M" + }, + { + "name": "VERMILIONMART_COOLTRAINER_F", + "text": "TEXT_VERMILIONMART_COOLTRAINER_F" + } + ], + "signTexts": [] + }, + "VERMILION_OLD_ROD_HOUSE": { + "blockLength": 16, + "label": "VermilionOldRodHouse", + "objects": [ + { + "name": "VERMILIONOLDRODHOUSE_FISHING_GURU", + "text": "TEXT_VERMILIONOLDRODHOUSE_FISHING_GURU" + } + ], + "signTexts": [] + }, + "VERMILION_PIDGEY_HOUSE": { + "blockLength": 16, + "label": "VermilionPidgeyHouse", + "objects": [ + { + "name": "VERMILIONPIDGEYHOUSE_YOUNGSTER", + "text": "TEXT_VERMILIONPIDGEYHOUSE_YOUNGSTER" + }, + { + "name": "VERMILIONPIDGEYHOUSE_PIDGEY", + "text": "TEXT_VERMILIONPIDGEYHOUSE_PIDGEY" + }, + { + "name": "VERMILIONPIDGEYHOUSE_LETTER", + "text": "TEXT_VERMILIONPIDGEYHOUSE_LETTER" + } + ], + "signTexts": [] + }, + "VERMILION_POKECENTER": { + "blockLength": 28, + "label": "VermilionPokecenter", + "objects": [ + { + "name": "VERMILIONPOKECENTER_NURSE", + "text": "TEXT_VERMILIONPOKECENTER_NURSE" + }, + { + "name": "VERMILIONPOKECENTER_FISHING_GURU", + "text": "TEXT_VERMILIONPOKECENTER_FISHING_GURU" + }, + { + "name": "VERMILIONPOKECENTER_SAILOR", + "text": "TEXT_VERMILIONPOKECENTER_SAILOR" + }, + { + "name": "VERMILIONPOKECENTER_LINK_RECEPTIONIST", + "text": "TEXT_VERMILIONPOKECENTER_LINK_RECEPTIONIST" + }, + { + "name": "VERMILIONPOKECENTER_CHANSEY", + "text": "TEXT_VERMILIONPOKECENTER_CHANSEY" + } + ], + "signTexts": [] + }, + "VERMILION_TRADE_HOUSE": { + "blockLength": 16, + "label": "VermilionTradeHouse", + "objects": [ + { + "name": "VERMILIONTRADEHOUSE_GENTLEMAN", + "text": "TEXT_VERMILIONTRADEHOUSE_GENTLEMAN" + } + ], + "signTexts": [] + }, + "VICTORY_ROAD_1F": { + "blockLength": 90, + "label": "VictoryRoad1F", + "objects": [ + { + "name": "VICTORYROAD1F_COOLTRAINER_F", + "text": "TEXT_VICTORYROAD1F_COOLTRAINER_F", + "trainerClass": "OPP_COOLTRAINER_F", + "trainerParty": 5 + }, + { + "name": "VICTORYROAD1F_COOLTRAINER_M", + "text": "TEXT_VICTORYROAD1F_COOLTRAINER_M", + "trainerClass": "OPP_COOLTRAINER_M", + "trainerParty": 5 + }, + { + "item": "TM_SKY_ATTACK", + "name": "VICTORYROAD1F_TM_SKY_ATTACK", + "text": "TEXT_VICTORYROAD1F_TM_SKY_ATTACK" + }, + { + "item": "RARE_CANDY", + "name": "VICTORYROAD1F_RARE_CANDY", + "text": "TEXT_VICTORYROAD1F_RARE_CANDY" + }, + { + "name": "VICTORYROAD1F_BOULDER1", + "text": "TEXT_VICTORYROAD1F_BOULDER1" + }, + { + "name": "VICTORYROAD1F_BOULDER2", + "text": "TEXT_VICTORYROAD1F_BOULDER2" + }, + { + "name": "VICTORYROAD1F_BOULDER3", + "text": "TEXT_VICTORYROAD1F_BOULDER3" + } + ], + "signTexts": [] + }, + "VICTORY_ROAD_2F": { + "blockLength": 135, + "label": "VictoryRoad2F", + "objects": [ + { + "name": "VICTORYROAD2F_HIKER", + "text": "TEXT_VICTORYROAD2F_HIKER", + "trainerClass": "OPP_BLACKBELT", + "trainerParty": 9 + }, + { + "name": "VICTORYROAD2F_SUPER_NERD1", + "text": "TEXT_VICTORYROAD2F_SUPER_NERD1", + "trainerClass": "OPP_JUGGLER", + "trainerParty": 2 + }, + { + "name": "VICTORYROAD2F_COOLTRAINER_M", + "text": "TEXT_VICTORYROAD2F_COOLTRAINER_M", + "trainerClass": "OPP_TAMER", + "trainerParty": 5 + }, + { + "name": "VICTORYROAD2F_SUPER_NERD2", + "text": "TEXT_VICTORYROAD2F_SUPER_NERD2", + "trainerClass": "OPP_POKEMANIAC", + "trainerParty": 6 + }, + { + "name": "VICTORYROAD2F_SUPER_NERD3", + "text": "TEXT_VICTORYROAD2F_SUPER_NERD3", + "trainerClass": "OPP_JUGGLER", + "trainerParty": 5 + }, + { + "name": "VICTORYROAD2F_MOLTRES", + "pokemon": "MOLTRES", + "text": "TEXT_VICTORYROAD2F_MOLTRES" + }, + { + "item": "TM_SUBMISSION", + "name": "VICTORYROAD2F_TM_SUBMISSION", + "text": "TEXT_VICTORYROAD2F_TM_SUBMISSION" + }, + { + "item": "FULL_HEAL", + "name": "VICTORYROAD2F_FULL_HEAL", + "text": "TEXT_VICTORYROAD2F_FULL_HEAL" + }, + { + "item": "TM_MEGA_KICK", + "name": "VICTORYROAD2F_TM_MEGA_KICK", + "text": "TEXT_VICTORYROAD2F_TM_MEGA_KICK" + }, + { + "item": "GUARD_SPEC", + "name": "VICTORYROAD2F_GUARD_SPEC", + "text": "TEXT_VICTORYROAD2F_GUARD_SPEC" + }, + { + "name": "VICTORYROAD2F_BOULDER1", + "text": "TEXT_VICTORYROAD2F_BOULDER1" + }, + { + "name": "VICTORYROAD2F_BOULDER2", + "text": "TEXT_VICTORYROAD2F_BOULDER2" + }, + { + "name": "VICTORYROAD2F_BOULDER3", + "text": "TEXT_VICTORYROAD2F_BOULDER3" + } + ], + "signTexts": [] + }, + "VICTORY_ROAD_3F": { + "blockLength": 135, + "label": "VictoryRoad3F", + "objects": [ + { + "name": "VICTORYROAD3F_COOLTRAINER_M1", + "text": "TEXT_VICTORYROAD3F_COOLTRAINER_M1", + "trainerClass": "OPP_COOLTRAINER_M", + "trainerParty": 2 + }, + { + "name": "VICTORYROAD3F_COOLTRAINER_F1", + "text": "TEXT_VICTORYROAD3F_COOLTRAINER_F1", + "trainerClass": "OPP_COOLTRAINER_F", + "trainerParty": 2 + }, + { + "name": "VICTORYROAD3F_COOLTRAINER_M2", + "text": "TEXT_VICTORYROAD3F_COOLTRAINER_M2", + "trainerClass": "OPP_COOLTRAINER_M", + "trainerParty": 3 + }, + { + "name": "VICTORYROAD3F_COOLTRAINER_F2", + "text": "TEXT_VICTORYROAD3F_COOLTRAINER_F2", + "trainerClass": "OPP_COOLTRAINER_F", + "trainerParty": 3 + }, + { + "item": "MAX_REVIVE", + "name": "VICTORYROAD3F_MAX_REVIVE", + "text": "TEXT_VICTORYROAD3F_MAX_REVIVE" + }, + { + "item": "TM_EXPLOSION", + "name": "VICTORYROAD3F_TM_EXPLOSION", + "text": "TEXT_VICTORYROAD3F_TM_EXPLOSION" + }, + { + "name": "VICTORYROAD3F_BOULDER1", + "text": "TEXT_VICTORYROAD3F_BOULDER1" + }, + { + "name": "VICTORYROAD3F_BOULDER2", + "text": "TEXT_VICTORYROAD3F_BOULDER2" + }, + { + "name": "VICTORYROAD3F_BOULDER3", + "text": "TEXT_VICTORYROAD3F_BOULDER3" + }, + { + "name": "VICTORYROAD3F_BOULDER4", + "text": "TEXT_VICTORYROAD3F_BOULDER4" + } + ], + "signTexts": [] + }, + "VIRIDIAN_CITY": { + "blockLength": 360, + "label": "ViridianCity", + "objects": [ + { + "name": "VIRIDIANCITY_YOUNGSTER1", + "text": "TEXT_VIRIDIANCITY_YOUNGSTER1" + }, + { + "name": "VIRIDIANCITY_GAMBLER1", + "text": "TEXT_VIRIDIANCITY_GAMBLER1" + }, + { + "name": "VIRIDIANCITY_YOUNGSTER2", + "text": "TEXT_VIRIDIANCITY_YOUNGSTER2" + }, + { + "name": "VIRIDIANCITY_GIRL", + "text": "TEXT_VIRIDIANCITY_GIRL" + }, + { + "name": "VIRIDIANCITY_OLD_MAN_SLEEPY", + "text": "TEXT_VIRIDIANCITY_OLD_MAN_SLEEPY" + }, + { + "name": "VIRIDIANCITY_FISHER", + "text": "TEXT_VIRIDIANCITY_FISHER" + }, + { + "hidden": true, + "name": "VIRIDIANCITY_OLD_MAN", + "text": "TEXT_VIRIDIANCITY_OLD_MAN" + }, + { + "hidden": true, + "name": "VIRIDIANCITY_OLD_MAN2", + "text": "TEXT_VIRIDIANCITY_OLD_MAN2" + } + ], + "signTexts": [ + "TEXT_VIRIDIANCITY_SIGN", + "TEXT_VIRIDIANCITY_TRAINER_TIPS1", + "TEXT_VIRIDIANCITY_TRAINER_TIPS2", + "TEXT_VIRIDIANCITY_MART_SIGN", + "TEXT_VIRIDIANCITY_POKECENTER_SIGN", + "TEXT_VIRIDIANCITY_GYM_SIGN" + ] + }, + "VIRIDIAN_FOREST": { + "blockLength": 408, + "label": "ViridianForest", + "objects": [ + { + "name": "VIRIDIANFOREST_YOUNGSTER1", + "text": "TEXT_VIRIDIANFOREST_YOUNGSTER1" + }, + { + "name": "VIRIDIANFOREST_YOUNGSTER2", + "text": "TEXT_VIRIDIANFOREST_YOUNGSTER2", + "trainerClass": "OPP_BUG_CATCHER", + "trainerParty": 1 + }, + { + "name": "VIRIDIANFOREST_YOUNGSTER3", + "text": "TEXT_VIRIDIANFOREST_YOUNGSTER3", + "trainerClass": "OPP_BUG_CATCHER", + "trainerParty": 2 + }, + { + "name": "VIRIDIANFOREST_YOUNGSTER4", + "text": "TEXT_VIRIDIANFOREST_YOUNGSTER4", + "trainerClass": "OPP_BUG_CATCHER", + "trainerParty": 3 + }, + { + "name": "VIRIDIANFOREST_COOLTRAINER_F", + "text": "TEXT_VIRIDIANFOREST_COOLTRAINER_F", + "trainerClass": "OPP_LASS", + "trainerParty": 19 + }, + { + "name": "VIRIDIANFOREST_YOUNGSTER5", + "text": "TEXT_VIRIDIANFOREST_YOUNGSTER5", + "trainerClass": "OPP_BUG_CATCHER", + "trainerParty": 15 + }, + { + "item": "POTION", + "name": "VIRIDIANFOREST_POTION1", + "text": "TEXT_VIRIDIANFOREST_POTION1" + }, + { + "item": "POTION", + "name": "VIRIDIANFOREST_POTION2", + "text": "TEXT_VIRIDIANFOREST_POTION2" + }, + { + "item": "POKE_BALL", + "name": "VIRIDIANFOREST_POKE_BALL", + "text": "TEXT_VIRIDIANFOREST_POKE_BALL" + }, + { + "name": "VIRIDIANFOREST_YOUNGSTER6", + "text": "TEXT_VIRIDIANFOREST_YOUNGSTER6" + } + ], + "signTexts": [ + "TEXT_VIRIDIANFOREST_TRAINER_TIPS1", + "TEXT_VIRIDIANFOREST_USE_ANTIDOTE_SIGN", + "TEXT_VIRIDIANFOREST_TRAINER_TIPS2", + "TEXT_VIRIDIANFOREST_TRAINER_TIPS3", + "TEXT_VIRIDIANFOREST_TRAINER_TIPS4", + "TEXT_VIRIDIANFOREST_LEAVING_SIGN" + ] + }, + "VIRIDIAN_FOREST_NORTH_GATE": { + "blockLength": 20, + "label": "ViridianForestNorthGate", + "objects": [ + { + "name": "VIRIDIANFORESTNORTHGATE_SUPER_NERD", + "text": "TEXT_VIRIDIANFORESTNORTHGATE_SUPER_NERD" + }, + { + "name": "VIRIDIANFORESTNORTHGATE_GRAMPS", + "text": "TEXT_VIRIDIANFORESTNORTHGATE_GRAMPS" + } + ], + "signTexts": [] + }, + "VIRIDIAN_FOREST_SOUTH_GATE": { + "blockLength": 20, + "label": "ViridianForestSouthGate", + "objects": [ + { + "name": "VIRIDIANFORESTSOUTHGATE_GIRL", + "text": "TEXT_VIRIDIANFORESTSOUTHGATE_GIRL" + }, + { + "name": "VIRIDIANFORESTSOUTHGATE_LITTLE_GIRL", + "text": "TEXT_VIRIDIANFORESTSOUTHGATE_LITTLE_GIRL" + } + ], + "signTexts": [] + }, + "VIRIDIAN_GYM": { + "blockLength": 90, + "label": "ViridianGym", + "objects": [ + { + "name": "VIRIDIANGYM_GIOVANNI", + "text": "TEXT_VIRIDIANGYM_GIOVANNI", + "trainerClass": "OPP_GIOVANNI", + "trainerParty": 3 + }, + { + "name": "VIRIDIANGYM_COOLTRAINER_M1", + "text": "TEXT_VIRIDIANGYM_COOLTRAINER_M1", + "trainerClass": "OPP_COOLTRAINER_M", + "trainerParty": 9 + }, + { + "name": "VIRIDIANGYM_HIKER1", + "text": "TEXT_VIRIDIANGYM_HIKER1", + "trainerClass": "OPP_BLACKBELT", + "trainerParty": 6 + }, + { + "name": "VIRIDIANGYM_ROCKER1", + "text": "TEXT_VIRIDIANGYM_ROCKER1", + "trainerClass": "OPP_TAMER", + "trainerParty": 3 + }, + { + "name": "VIRIDIANGYM_HIKER2", + "text": "TEXT_VIRIDIANGYM_HIKER2", + "trainerClass": "OPP_BLACKBELT", + "trainerParty": 7 + }, + { + "name": "VIRIDIANGYM_COOLTRAINER_M2", + "text": "TEXT_VIRIDIANGYM_COOLTRAINER_M2", + "trainerClass": "OPP_COOLTRAINER_M", + "trainerParty": 10 + }, + { + "name": "VIRIDIANGYM_HIKER3", + "text": "TEXT_VIRIDIANGYM_HIKER3", + "trainerClass": "OPP_BLACKBELT", + "trainerParty": 8 + }, + { + "name": "VIRIDIANGYM_ROCKER2", + "text": "TEXT_VIRIDIANGYM_ROCKER2", + "trainerClass": "OPP_TAMER", + "trainerParty": 4 + }, + { + "name": "VIRIDIANGYM_COOLTRAINER_M3", + "text": "TEXT_VIRIDIANGYM_COOLTRAINER_M3", + "trainerClass": "OPP_COOLTRAINER_M", + "trainerParty": 1 + }, + { + "name": "VIRIDIANGYM_GYM_GUIDE", + "text": "TEXT_VIRIDIANGYM_GYM_GUIDE" + }, + { + "item": "REVIVE", + "name": "VIRIDIANGYM_REVIVE", + "text": "TEXT_VIRIDIANGYM_REVIVE" + } + ], + "signTexts": [] + }, + "VIRIDIAN_MART": { + "blockLength": 16, + "label": "ViridianMart", + "objects": [ + { + "name": "VIRIDIANMART_CLERK", + "text": "TEXT_VIRIDIANMART_CLERK" + }, + { + "name": "VIRIDIANMART_YOUNGSTER", + "text": "TEXT_VIRIDIANMART_YOUNGSTER" + }, + { + "name": "VIRIDIANMART_COOLTRAINER_M", + "text": "TEXT_VIRIDIANMART_COOLTRAINER_M" + } + ], + "signTexts": [] + }, + "VIRIDIAN_NICKNAME_HOUSE": { + "blockLength": 16, + "label": "ViridianNicknameHouse", + "objects": [ + { + "name": "VIRIDIANNICKNAMEHOUSE_BALDING_GUY", + "text": "TEXT_VIRIDIANNICKNAMEHOUSE_BALDING_GUY" + }, + { + "name": "VIRIDIANNICKNAMEHOUSE_LITTLE_GIRL", + "text": "TEXT_VIRIDIANNICKNAMEHOUSE_LITTLE_GIRL" + }, + { + "name": "VIRIDIANNICKNAMEHOUSE_SPEAROW", + "text": "TEXT_VIRIDIANNICKNAMEHOUSE_SPEAROW" + }, + { + "name": "VIRIDIANNICKNAMEHOUSE_SPEARY_SIGN", + "text": "TEXT_VIRIDIANNICKNAMEHOUSE_SPEARY_SIGN" + } + ], + "signTexts": [] + }, + "VIRIDIAN_POKECENTER": { + "blockLength": 28, + "label": "ViridianPokecenter", + "objects": [ + { + "name": "VIRIDIANPOKECENTER_NURSE", + "text": "TEXT_VIRIDIANPOKECENTER_NURSE" + }, + { + "name": "VIRIDIANPOKECENTER_GENTLEMAN", + "text": "TEXT_VIRIDIANPOKECENTER_GENTLEMAN" + }, + { + "name": "VIRIDIANPOKECENTER_COOLTRAINER_M", + "text": "TEXT_VIRIDIANPOKECENTER_COOLTRAINER_M" + }, + { + "name": "VIRIDIANPOKECENTER_LINK_RECEPTIONIST", + "text": "TEXT_VIRIDIANPOKECENTER_LINK_RECEPTIONIST" + }, + { + "name": "VIRIDIANPOKECENTER_CHANSEY", + "text": "TEXT_VIRIDIANPOKECENTER_CHANSEY" + } + ], + "signTexts": [] + }, + "VIRIDIAN_SCHOOL_HOUSE": { + "blockLength": 16, + "label": "ViridianSchoolHouse", + "objects": [ + { + "name": "VIRIDIANSCHOOLHOUSE_BRUNETTE_GIRL", + "text": "TEXT_VIRIDIANSCHOOLHOUSE_BRUNETTE_GIRL" + }, + { + "name": "VIRIDIANSCHOOLHOUSE_COOLTRAINER_F", + "text": "TEXT_VIRIDIANSCHOOLHOUSE_COOLTRAINER_F" + }, + { + "name": "VIRIDIANSCHOOLHOUSE_LITTLE_GIRL", + "text": "TEXT_VIRIDIANSCHOOLHOUSE_LITTLE_GIRL" + } + ], + "signTexts": [] + }, + "WARDENS_HOUSE": { + "blockLength": 20, + "label": "WardensHouse", + "objects": [ + { + "name": "WARDENSHOUSE_WARDEN", + "text": "TEXT_WARDENSHOUSE_WARDEN" + }, + { + "item": "RARE_CANDY", + "name": "WARDENSHOUSE_RARE_CANDY", + "text": "TEXT_WARDENSHOUSE_RARE_CANDY" + }, + { + "name": "WARDENSHOUSE_BOULDER", + "text": "TEXT_WARDENSHOUSE_BOULDER" + } + ], + "signTexts": [ + "TEXT_WARDENSHOUSE_DISPLAY_LEFT", + "TEXT_WARDENSHOUSE_DISPLAY_RIGHT" + ] + } + }, + "moveEffects": [ + "NO_ADDITIONAL_EFFECT", + "EFFECT_01", + "POISON_SIDE_EFFECT1", + "DRAIN_HP_EFFECT", + "BURN_SIDE_EFFECT1", + "FREEZE_SIDE_EFFECT1", + "PARALYZE_SIDE_EFFECT1", + "EXPLODE_EFFECT", + "DREAM_EATER_EFFECT", + "MIRROR_MOVE_EFFECT", + "ATTACK_UP1_EFFECT", + "DEFENSE_UP1_EFFECT", + "SPEED_UP1_EFFECT", + "SPECIAL_UP1_EFFECT", + "ACCURACY_UP1_EFFECT", + "EVASION_UP1_EFFECT", + "PAY_DAY_EFFECT", + "SWIFT_EFFECT", + "ATTACK_DOWN1_EFFECT", + "DEFENSE_DOWN1_EFFECT", + "SPEED_DOWN1_EFFECT", + "SPECIAL_DOWN1_EFFECT", + "ACCURACY_DOWN1_EFFECT", + "EVASION_DOWN1_EFFECT", + "CONVERSION_EFFECT", + "HAZE_EFFECT", + "BIDE_EFFECT", + "THRASH_PETAL_DANCE_EFFECT", + "SWITCH_AND_TELEPORT_EFFECT", + "TWO_TO_FIVE_ATTACKS_EFFECT", + "EFFECT_1E", + "FLINCH_SIDE_EFFECT1", + "SLEEP_EFFECT", + "POISON_SIDE_EFFECT2", + "BURN_SIDE_EFFECT2", + "FREEZE_SIDE_EFFECT2", + "PARALYZE_SIDE_EFFECT2", + "FLINCH_SIDE_EFFECT2", + "OHKO_EFFECT", + "CHARGE_EFFECT", + "SUPER_FANG_EFFECT", + "SPECIAL_DAMAGE_EFFECT", + "TRAPPING_EFFECT", + "FLY_EFFECT", + "ATTACK_TWICE_EFFECT", + "JUMP_KICK_EFFECT", + "MIST_EFFECT", + "FOCUS_ENERGY_EFFECT", + "RECOIL_EFFECT", + "CONFUSION_EFFECT", + "ATTACK_UP2_EFFECT", + "DEFENSE_UP2_EFFECT", + "SPEED_UP2_EFFECT", + "SPECIAL_UP2_EFFECT", + "ACCURACY_UP2_EFFECT", + "EVASION_UP2_EFFECT", + "HEAL_EFFECT", + "TRANSFORM_EFFECT", + "ATTACK_DOWN2_EFFECT", + "DEFENSE_DOWN2_EFFECT", + "SPEED_DOWN2_EFFECT", + "SPECIAL_DOWN2_EFFECT", + "ACCURACY_DOWN2_EFFECT", + "EVASION_DOWN2_EFFECT", + "LIGHT_SCREEN_EFFECT", + "REFLECT_EFFECT", + "POISON_EFFECT", + "PARALYZE_EFFECT", + "ATTACK_DOWN_SIDE_EFFECT", + "DEFENSE_DOWN_SIDE_EFFECT", + "SPEED_DOWN_SIDE_EFFECT", + "SPECIAL_DOWN_SIDE_EFFECT", + "UNUSED", + "UNUSED", + "UNUSED", + "UNUSED", + "CONFUSION_SIDE_EFFECT", + "TWINEEDLE_EFFECT", + "UNUSED", + "SUBSTITUTE_EFFECT", + "HYPER_BEAM_EFFECT", + "RAGE_EFFECT", + "MIMIC_EFFECT", + "METRONOME_EFFECT", + "LEECH_SEED_EFFECT", + "SPLASH_EFFECT", + "DISABLE_EFFECT" + ], + "numItems": 83, + "paletteOrder": [ + "ROUTE", + "PALLET", + "VIRIDIAN", + "PEWTER", + "CERULEAN", + "LAVENDER", + "VERMILION", + "CELADON", + "FUCHSIA", + "CINNABAR", + "INDIGO", + "SAFFRON", + "TOWNMAP", + "LOGO1", + "LOGO2", + "0F", + "MEWMON", + "BLUEMON", + "REDMON", + "CYANMON", + "PURPLEMON", + "BROWNMON", + "GREENMON", + "PINKMON", + "YELLOWMON", + "GRAYMON", + "SLOTS1", + "SLOTS2", + "SLOTS3", + "SLOTS4", + "BLACK", + "GREENBAR", + "YELLOWBAR", + "REDBAR", + "BADGE", + "CAVE", + "GAMEFREAK", + "PIKACHUS_BEACH", + "PIKACHU_PORTRAIT", + "PIKACHUS_BEACH_TITLE" + ], + "pokemonAssets": { + "ABRA": { + "back": "abrab", + "backLabel": "AbraPicBack", + "front": "abra", + "frontLabel": "AbraPicFront" + }, + "AERODACTYL": { + "back": "aerodactylb", + "backLabel": "AerodactylPicBack", + "front": "aerodactyl", + "frontLabel": "AerodactylPicFront" + }, + "ALAKAZAM": { + "back": "alakazamb", + "backLabel": "AlakazamPicBack", + "front": "alakazam", + "frontLabel": "AlakazamPicFront" + }, + "ARBOK": { + "back": "arbokb", + "backLabel": "ArbokPicBack", + "front": "arbok", + "frontLabel": "ArbokPicFront" + }, + "ARCANINE": { + "back": "arcanineb", + "backLabel": "ArcaninePicBack", + "front": "arcanine", + "frontLabel": "ArcaninePicFront" + }, + "ARTICUNO": { + "back": "articunob", + "backLabel": "ArticunoPicBack", + "front": "articuno", + "frontLabel": "ArticunoPicFront" + }, + "BEEDRILL": { + "back": "beedrillb", + "backLabel": "BeedrillPicBack", + "front": "beedrill", + "frontLabel": "BeedrillPicFront" + }, + "BELLSPROUT": { + "back": "bellsproutb", + "backLabel": "BellsproutPicBack", + "front": "bellsprout", + "frontLabel": "BellsproutPicFront" + }, + "BLASTOISE": { + "back": "blastoiseb", + "backLabel": "BlastoisePicBack", + "front": "blastoise", + "frontLabel": "BlastoisePicFront" + }, + "BULBASAUR": { + "back": "bulbasaurb", + "backLabel": "BulbasaurPicBack", + "front": "bulbasaur", + "frontLabel": "BulbasaurPicFront" + }, + "BUTTERFREE": { + "back": "butterfreeb", + "backLabel": "ButterfreePicBack", + "front": "butterfree", + "frontLabel": "ButterfreePicFront" + }, + "CATERPIE": { + "back": "caterpieb", + "backLabel": "CaterpiePicBack", + "front": "caterpie", + "frontLabel": "CaterpiePicFront" + }, + "CHANSEY": { + "back": "chanseyb", + "backLabel": "ChanseyPicBack", + "front": "chansey", + "frontLabel": "ChanseyPicFront" + }, + "CHARIZARD": { + "back": "charizardb", + "backLabel": "CharizardPicBack", + "front": "charizard", + "frontLabel": "CharizardPicFront" + }, + "CHARMANDER": { + "back": "charmanderb", + "backLabel": "CharmanderPicBack", + "front": "charmander", + "frontLabel": "CharmanderPicFront" + }, + "CHARMELEON": { + "back": "charmeleonb", + "backLabel": "CharmeleonPicBack", + "front": "charmeleon", + "frontLabel": "CharmeleonPicFront" + }, + "CLEFABLE": { + "back": "clefableb", + "backLabel": "ClefablePicBack", + "front": "clefable", + "frontLabel": "ClefablePicFront" + }, + "CLEFAIRY": { + "back": "clefairyb", + "backLabel": "ClefairyPicBack", + "front": "clefairy", + "frontLabel": "ClefairyPicFront" + }, + "CLOYSTER": { + "back": "cloysterb", + "backLabel": "CloysterPicBack", + "front": "cloyster", + "frontLabel": "CloysterPicFront" + }, + "CUBONE": { + "back": "cuboneb", + "backLabel": "CubonePicBack", + "front": "cubone", + "frontLabel": "CubonePicFront" + }, + "DEWGONG": { + "back": "dewgongb", + "backLabel": "DewgongPicBack", + "front": "dewgong", + "frontLabel": "DewgongPicFront" + }, + "DIGLETT": { + "back": "diglettb", + "backLabel": "DiglettPicBack", + "front": "diglett", + "frontLabel": "DiglettPicFront" + }, + "DITTO": { + "back": "dittob", + "backLabel": "DittoPicBack", + "front": "ditto", + "frontLabel": "DittoPicFront" + }, + "DODRIO": { + "back": "dodriob", + "backLabel": "DodrioPicBack", + "front": "dodrio", + "frontLabel": "DodrioPicFront" + }, + "DODUO": { + "back": "doduob", + "backLabel": "DoduoPicBack", + "front": "doduo", + "frontLabel": "DoduoPicFront" + }, + "DRAGONAIR": { + "back": "dragonairb", + "backLabel": "DragonairPicBack", + "front": "dragonair", + "frontLabel": "DragonairPicFront" + }, + "DRAGONITE": { + "back": "dragoniteb", + "backLabel": "DragonitePicBack", + "front": "dragonite", + "frontLabel": "DragonitePicFront" + }, + "DRATINI": { + "back": "dratinib", + "backLabel": "DratiniPicBack", + "front": "dratini", + "frontLabel": "DratiniPicFront" + }, + "DROWZEE": { + "back": "drowzeeb", + "backLabel": "DrowzeePicBack", + "front": "drowzee", + "frontLabel": "DrowzeePicFront" + }, + "DUGTRIO": { + "back": "dugtriob", + "backLabel": "DugtrioPicBack", + "front": "dugtrio", + "frontLabel": "DugtrioPicFront" + }, + "EEVEE": { + "back": "eeveeb", + "backLabel": "EeveePicBack", + "front": "eevee", + "frontLabel": "EeveePicFront" + }, + "EKANS": { + "back": "ekansb", + "backLabel": "EkansPicBack", + "front": "ekans", + "frontLabel": "EkansPicFront" + }, + "ELECTABUZZ": { + "back": "electabuzzb", + "backLabel": "ElectabuzzPicBack", + "front": "electabuzz", + "frontLabel": "ElectabuzzPicFront" + }, + "ELECTRODE": { + "back": "electrodeb", + "backLabel": "ElectrodePicBack", + "front": "electrode", + "frontLabel": "ElectrodePicFront" + }, + "EXEGGCUTE": { + "back": "exeggcuteb", + "backLabel": "ExeggcutePicBack", + "front": "exeggcute", + "frontLabel": "ExeggcutePicFront" + }, + "EXEGGUTOR": { + "back": "exeggutorb", + "backLabel": "ExeggutorPicBack", + "front": "exeggutor", + "frontLabel": "ExeggutorPicFront" + }, + "FARFETCHD": { + "back": "farfetchdb", + "backLabel": "FarfetchdPicBack", + "front": "farfetchd", + "frontLabel": "FarfetchdPicFront" + }, + "FEAROW": { + "back": "fearowb", + "backLabel": "FearowPicBack", + "front": "fearow", + "frontLabel": "FearowPicFront" + }, + "FLAREON": { + "back": "flareonb", + "backLabel": "FlareonPicBack", + "front": "flareon", + "frontLabel": "FlareonPicFront" + }, + "GASTLY": { + "back": "gastlyb", + "backLabel": "GastlyPicBack", + "front": "gastly", + "frontLabel": "GastlyPicFront" + }, + "GENGAR": { + "back": "gengarb", + "backLabel": "GengarPicBack", + "front": "gengar", + "frontLabel": "GengarPicFront" + }, + "GEODUDE": { + "back": "geodudeb", + "backLabel": "GeodudePicBack", + "front": "geodude", + "frontLabel": "GeodudePicFront" + }, + "GLOOM": { + "back": "gloomb", + "backLabel": "GloomPicBack", + "front": "gloom", + "frontLabel": "GloomPicFront" + }, + "GOLBAT": { + "back": "golbatb", + "backLabel": "GolbatPicBack", + "front": "golbat", + "frontLabel": "GolbatPicFront" + }, + "GOLDEEN": { + "back": "goldeenb", + "backLabel": "GoldeenPicBack", + "front": "goldeen", + "frontLabel": "GoldeenPicFront" + }, + "GOLDUCK": { + "back": "golduckb", + "backLabel": "GolduckPicBack", + "front": "golduck", + "frontLabel": "GolduckPicFront" + }, + "GOLEM": { + "back": "golemb", + "backLabel": "GolemPicBack", + "front": "golem", + "frontLabel": "GolemPicFront" + }, + "GRAVELER": { + "back": "gravelerb", + "backLabel": "GravelerPicBack", + "front": "graveler", + "frontLabel": "GravelerPicFront" + }, + "GRIMER": { + "back": "grimerb", + "backLabel": "GrimerPicBack", + "front": "grimer", + "frontLabel": "GrimerPicFront" + }, + "GROWLITHE": { + "back": "growlitheb", + "backLabel": "GrowlithePicBack", + "front": "growlithe", + "frontLabel": "GrowlithePicFront" + }, + "GYARADOS": { + "back": "gyaradosb", + "backLabel": "GyaradosPicBack", + "front": "gyarados", + "frontLabel": "GyaradosPicFront" + }, + "HAUNTER": { + "back": "haunterb", + "backLabel": "HaunterPicBack", + "front": "haunter", + "frontLabel": "HaunterPicFront" + }, + "HITMONCHAN": { + "back": "hitmonchanb", + "backLabel": "HitmonchanPicBack", + "front": "hitmonchan", + "frontLabel": "HitmonchanPicFront" + }, + "HITMONLEE": { + "back": "hitmonleeb", + "backLabel": "HitmonleePicBack", + "front": "hitmonlee", + "frontLabel": "HitmonleePicFront" + }, + "HORSEA": { + "back": "horseab", + "backLabel": "HorseaPicBack", + "front": "horsea", + "frontLabel": "HorseaPicFront" + }, + "HYPNO": { + "back": "hypnob", + "backLabel": "HypnoPicBack", + "front": "hypno", + "frontLabel": "HypnoPicFront" + }, + "IVYSAUR": { + "back": "ivysaurb", + "backLabel": "IvysaurPicBack", + "front": "ivysaur", + "frontLabel": "IvysaurPicFront" + }, + "JIGGLYPUFF": { + "back": "jigglypuffb", + "backLabel": "JigglypuffPicBack", + "front": "jigglypuff", + "frontLabel": "JigglypuffPicFront" + }, + "JOLTEON": { + "back": "jolteonb", + "backLabel": "JolteonPicBack", + "front": "jolteon", + "frontLabel": "JolteonPicFront" + }, + "JYNX": { + "back": "jynxb", + "backLabel": "JynxPicBack", + "front": "jynx", + "frontLabel": "JynxPicFront" + }, + "KABUTO": { + "back": "kabutob", + "backLabel": "KabutoPicBack", + "front": "kabuto", + "frontLabel": "KabutoPicFront" + }, + "KABUTOPS": { + "back": "kabutopsb", + "backLabel": "KabutopsPicBack", + "front": "kabutops", + "frontLabel": "KabutopsPicFront" + }, + "KADABRA": { + "back": "kadabrab", + "backLabel": "KadabraPicBack", + "front": "kadabra", + "frontLabel": "KadabraPicFront" + }, + "KAKUNA": { + "back": "kakunab", + "backLabel": "KakunaPicBack", + "front": "kakuna", + "frontLabel": "KakunaPicFront" + }, + "KANGASKHAN": { + "back": "kangaskhanb", + "backLabel": "KangaskhanPicBack", + "front": "kangaskhan", + "frontLabel": "KangaskhanPicFront" + }, + "KINGLER": { + "back": "kinglerb", + "backLabel": "KinglerPicBack", + "front": "kingler", + "frontLabel": "KinglerPicFront" + }, + "KOFFING": { + "back": "koffingb", + "backLabel": "KoffingPicBack", + "front": "koffing", + "frontLabel": "KoffingPicFront" + }, + "KRABBY": { + "back": "krabbyb", + "backLabel": "KrabbyPicBack", + "front": "krabby", + "frontLabel": "KrabbyPicFront" + }, + "LAPRAS": { + "back": "laprasb", + "backLabel": "LaprasPicBack", + "front": "lapras", + "frontLabel": "LaprasPicFront" + }, + "LICKITUNG": { + "back": "lickitungb", + "backLabel": "LickitungPicBack", + "front": "lickitung", + "frontLabel": "LickitungPicFront" + }, + "MACHAMP": { + "back": "machampb", + "backLabel": "MachampPicBack", + "front": "machamp", + "frontLabel": "MachampPicFront" + }, + "MACHOKE": { + "back": "machokeb", + "backLabel": "MachokePicBack", + "front": "machoke", + "frontLabel": "MachokePicFront" + }, + "MACHOP": { + "back": "machopb", + "backLabel": "MachopPicBack", + "front": "machop", + "frontLabel": "MachopPicFront" + }, + "MAGIKARP": { + "back": "magikarpb", + "backLabel": "MagikarpPicBack", + "front": "magikarp", + "frontLabel": "MagikarpPicFront" + }, + "MAGMAR": { + "back": "magmarb", + "backLabel": "MagmarPicBack", + "front": "magmar", + "frontLabel": "MagmarPicFront" + }, + "MAGNEMITE": { + "back": "magnemiteb", + "backLabel": "MagnemitePicBack", + "front": "magnemite", + "frontLabel": "MagnemitePicFront" + }, + "MAGNETON": { + "back": "magnetonb", + "backLabel": "MagnetonPicBack", + "front": "magneton", + "frontLabel": "MagnetonPicFront" + }, + "MANKEY": { + "back": "mankeyb", + "backLabel": "MankeyPicBack", + "front": "mankey", + "frontLabel": "MankeyPicFront" + }, + "MAROWAK": { + "back": "marowakb", + "backLabel": "MarowakPicBack", + "front": "marowak", + "frontLabel": "MarowakPicFront" + }, + "MEOWTH": { + "back": "meowthb", + "backLabel": "MeowthPicBack", + "front": "meowth", + "frontLabel": "MeowthPicFront" + }, + "METAPOD": { + "back": "metapodb", + "backLabel": "MetapodPicBack", + "front": "metapod", + "frontLabel": "MetapodPicFront" + }, + "MEW": { + "back": "mewb", + "backLabel": "MewPicBack", + "front": "mew", + "frontLabel": "MewPicFront" + }, + "MEWTWO": { + "back": "mewtwob", + "backLabel": "MewtwoPicBack", + "front": "mewtwo", + "frontLabel": "MewtwoPicFront" + }, + "MOLTRES": { + "back": "moltresb", + "backLabel": "MoltresPicBack", + "front": "moltres", + "frontLabel": "MoltresPicFront" + }, + "MR_MIME": { + "back": "mr.mimeb", + "backLabel": "MrMimePicBack", + "front": "mr.mime", + "frontLabel": "MrMimePicFront" + }, + "MUK": { + "back": "mukb", + "backLabel": "MukPicBack", + "front": "muk", + "frontLabel": "MukPicFront" + }, + "NIDOKING": { + "back": "nidokingb", + "backLabel": "NidokingPicBack", + "front": "nidoking", + "frontLabel": "NidokingPicFront" + }, + "NIDOQUEEN": { + "back": "nidoqueenb", + "backLabel": "NidoqueenPicBack", + "front": "nidoqueen", + "frontLabel": "NidoqueenPicFront" + }, + "NIDORAN_F": { + "back": "nidoranfb", + "backLabel": "NidoranFPicBack", + "front": "nidoranf", + "frontLabel": "NidoranFPicFront" + }, + "NIDORAN_M": { + "back": "nidoranmb", + "backLabel": "NidoranMPicBack", + "front": "nidoranm", + "frontLabel": "NidoranMPicFront" + }, + "NIDORINA": { + "back": "nidorinab", + "backLabel": "NidorinaPicBack", + "front": "nidorina", + "frontLabel": "NidorinaPicFront" + }, + "NIDORINO": { + "back": "nidorinob", + "backLabel": "NidorinoPicBack", + "front": "nidorino", + "frontLabel": "NidorinoPicFront" + }, + "NINETALES": { + "back": "ninetalesb", + "backLabel": "NinetalesPicBack", + "front": "ninetales", + "frontLabel": "NinetalesPicFront" + }, + "ODDISH": { + "back": "oddishb", + "backLabel": "OddishPicBack", + "front": "oddish", + "frontLabel": "OddishPicFront" + }, + "OMANYTE": { + "back": "omanyteb", + "backLabel": "OmanytePicBack", + "front": "omanyte", + "frontLabel": "OmanytePicFront" + }, + "OMASTAR": { + "back": "omastarb", + "backLabel": "OmastarPicBack", + "front": "omastar", + "frontLabel": "OmastarPicFront" + }, + "ONIX": { + "back": "onixb", + "backLabel": "OnixPicBack", + "front": "onix", + "frontLabel": "OnixPicFront" + }, + "PARAS": { + "back": "parasb", + "backLabel": "ParasPicBack", + "front": "paras", + "frontLabel": "ParasPicFront" + }, + "PARASECT": { + "back": "parasectb", + "backLabel": "ParasectPicBack", + "front": "parasect", + "frontLabel": "ParasectPicFront" + }, + "PERSIAN": { + "back": "persianb", + "backLabel": "PersianPicBack", + "front": "persian", + "frontLabel": "PersianPicFront" + }, + "PIDGEOT": { + "back": "pidgeotb", + "backLabel": "PidgeotPicBack", + "front": "pidgeot", + "frontLabel": "PidgeotPicFront" + }, + "PIDGEOTTO": { + "back": "pidgeottob", + "backLabel": "PidgeottoPicBack", + "front": "pidgeotto", + "frontLabel": "PidgeottoPicFront" + }, + "PIDGEY": { + "back": "pidgeyb", + "backLabel": "PidgeyPicBack", + "front": "pidgey", + "frontLabel": "PidgeyPicFront" + }, + "PIKACHU": { + "back": "pikachub", + "backLabel": "PikachuPicBack", + "front": "pikachu", + "frontLabel": "PikachuPicFront" + }, + "PINSIR": { + "back": "pinsirb", + "backLabel": "PinsirPicBack", + "front": "pinsir", + "frontLabel": "PinsirPicFront" + }, + "POLIWAG": { + "back": "poliwagb", + "backLabel": "PoliwagPicBack", + "front": "poliwag", + "frontLabel": "PoliwagPicFront" + }, + "POLIWHIRL": { + "back": "poliwhirlb", + "backLabel": "PoliwhirlPicBack", + "front": "poliwhirl", + "frontLabel": "PoliwhirlPicFront" + }, + "POLIWRATH": { + "back": "poliwrathb", + "backLabel": "PoliwrathPicBack", + "front": "poliwrath", + "frontLabel": "PoliwrathPicFront" + }, + "PONYTA": { + "back": "ponytab", + "backLabel": "PonytaPicBack", + "front": "ponyta", + "frontLabel": "PonytaPicFront" + }, + "PORYGON": { + "back": "porygonb", + "backLabel": "PorygonPicBack", + "front": "porygon", + "frontLabel": "PorygonPicFront" + }, + "PRIMEAPE": { + "back": "primeapeb", + "backLabel": "PrimeapePicBack", + "front": "primeape", + "frontLabel": "PrimeapePicFront" + }, + "PSYDUCK": { + "back": "psyduckb", + "backLabel": "PsyduckPicBack", + "front": "psyduck", + "frontLabel": "PsyduckPicFront" + }, + "RAICHU": { + "back": "raichub", + "backLabel": "RaichuPicBack", + "front": "raichu", + "frontLabel": "RaichuPicFront" + }, + "RAPIDASH": { + "back": "rapidashb", + "backLabel": "RapidashPicBack", + "front": "rapidash", + "frontLabel": "RapidashPicFront" + }, + "RATICATE": { + "back": "raticateb", + "backLabel": "RaticatePicBack", + "front": "raticate", + "frontLabel": "RaticatePicFront" + }, + "RATTATA": { + "back": "rattatab", + "backLabel": "RattataPicBack", + "front": "rattata", + "frontLabel": "RattataPicFront" + }, + "RHYDON": { + "back": "rhydonb", + "backLabel": "RhydonPicBack", + "front": "rhydon", + "frontLabel": "RhydonPicFront" + }, + "RHYHORN": { + "back": "rhyhornb", + "backLabel": "RhyhornPicBack", + "front": "rhyhorn", + "frontLabel": "RhyhornPicFront" + }, + "SANDSHREW": { + "back": "sandshrewb", + "backLabel": "SandshrewPicBack", + "front": "sandshrew", + "frontLabel": "SandshrewPicFront" + }, + "SANDSLASH": { + "back": "sandslashb", + "backLabel": "SandslashPicBack", + "front": "sandslash", + "frontLabel": "SandslashPicFront" + }, + "SCYTHER": { + "back": "scytherb", + "backLabel": "ScytherPicBack", + "front": "scyther", + "frontLabel": "ScytherPicFront" + }, + "SEADRA": { + "back": "seadrab", + "backLabel": "SeadraPicBack", + "front": "seadra", + "frontLabel": "SeadraPicFront" + }, + "SEAKING": { + "back": "seakingb", + "backLabel": "SeakingPicBack", + "front": "seaking", + "frontLabel": "SeakingPicFront" + }, + "SEEL": { + "back": "seelb", + "backLabel": "SeelPicBack", + "front": "seel", + "frontLabel": "SeelPicFront" + }, + "SHELLDER": { + "back": "shellderb", + "backLabel": "ShellderPicBack", + "front": "shellder", + "frontLabel": "ShellderPicFront" + }, + "SLOWBRO": { + "back": "slowbrob", + "backLabel": "SlowbroPicBack", + "front": "slowbro", + "frontLabel": "SlowbroPicFront" + }, + "SLOWPOKE": { + "back": "slowpokeb", + "backLabel": "SlowpokePicBack", + "front": "slowpoke", + "frontLabel": "SlowpokePicFront" + }, + "SNORLAX": { + "back": "snorlaxb", + "backLabel": "SnorlaxPicBack", + "front": "snorlax", + "frontLabel": "SnorlaxPicFront" + }, + "SPEAROW": { + "back": "spearowb", + "backLabel": "SpearowPicBack", + "front": "spearow", + "frontLabel": "SpearowPicFront" + }, + "SQUIRTLE": { + "back": "squirtleb", + "backLabel": "SquirtlePicBack", + "front": "squirtle", + "frontLabel": "SquirtlePicFront" + }, + "STARMIE": { + "back": "starmieb", + "backLabel": "StarmiePicBack", + "front": "starmie", + "frontLabel": "StarmiePicFront" + }, + "STARYU": { + "back": "staryub", + "backLabel": "StaryuPicBack", + "front": "staryu", + "frontLabel": "StaryuPicFront" + }, + "TANGELA": { + "back": "tangelab", + "backLabel": "TangelaPicBack", + "front": "tangela", + "frontLabel": "TangelaPicFront" + }, + "TAUROS": { + "back": "taurosb", + "backLabel": "TaurosPicBack", + "front": "tauros", + "frontLabel": "TaurosPicFront" + }, + "TENTACOOL": { + "back": "tentacoolb", + "backLabel": "TentacoolPicBack", + "front": "tentacool", + "frontLabel": "TentacoolPicFront" + }, + "TENTACRUEL": { + "back": "tentacruelb", + "backLabel": "TentacruelPicBack", + "front": "tentacruel", + "frontLabel": "TentacruelPicFront" + }, + "VAPOREON": { + "back": "vaporeonb", + "backLabel": "VaporeonPicBack", + "front": "vaporeon", + "frontLabel": "VaporeonPicFront" + }, + "VENOMOTH": { + "back": "venomothb", + "backLabel": "VenomothPicBack", + "front": "venomoth", + "frontLabel": "VenomothPicFront" + }, + "VENONAT": { + "back": "venonatb", + "backLabel": "VenonatPicBack", + "front": "venonat", + "frontLabel": "VenonatPicFront" + }, + "VENUSAUR": { + "back": "venusaurb", + "backLabel": "VenusaurPicBack", + "front": "venusaur", + "frontLabel": "VenusaurPicFront" + }, + "VICTREEBEL": { + "back": "victreebelb", + "backLabel": "VictreebelPicBack", + "front": "victreebel", + "frontLabel": "VictreebelPicFront" + }, + "VILEPLUME": { + "back": "vileplumeb", + "backLabel": "VileplumePicBack", + "front": "vileplume", + "frontLabel": "VileplumePicFront" + }, + "VOLTORB": { + "back": "voltorbb", + "backLabel": "VoltorbPicBack", + "front": "voltorb", + "frontLabel": "VoltorbPicFront" + }, + "VULPIX": { + "back": "vulpixb", + "backLabel": "VulpixPicBack", + "front": "vulpix", + "frontLabel": "VulpixPicFront" + }, + "WARTORTLE": { + "back": "wartortleb", + "backLabel": "WartortlePicBack", + "front": "wartortle", + "frontLabel": "WartortlePicFront" + }, + "WEEDLE": { + "back": "weedleb", + "backLabel": "WeedlePicBack", + "front": "weedle", + "frontLabel": "WeedlePicFront" + }, + "WEEPINBELL": { + "back": "weepinbellb", + "backLabel": "WeepinbellPicBack", + "front": "weepinbell", + "frontLabel": "WeepinbellPicFront" + }, + "WEEZING": { + "back": "weezingb", + "backLabel": "WeezingPicBack", + "front": "weezing", + "frontLabel": "WeezingPicFront" + }, + "WIGGLYTUFF": { + "back": "wigglytuffb", + "backLabel": "WigglytuffPicBack", + "front": "wigglytuff", + "frontLabel": "WigglytuffPicFront" + }, + "ZAPDOS": { + "back": "zapdosb", + "backLabel": "ZapdosPicBack", + "front": "zapdos", + "frontLabel": "ZapdosPicFront" + }, + "ZUBAT": { + "back": "zubatb", + "backLabel": "ZubatPicBack", + "front": "zubat", + "frontLabel": "ZubatPicFront" + } + }, + "romSha1": "cc7d03262ebfaf2f06772c1a480c7d9d5f4a38e1", + "sfxKeys": { + "134": "Level_Up", + "145": "Ball_Toss", + "147": "Ball_Poof", + "149": "Faint_Thud", + "151": "Run", + "152": "Dex_Page_Added", + "154": "Caught_Mon", + "157": "Peck", + "158": "Faint_Fall", + "159": "Battle_09", + "160": "Pound", + "161": "Battle_0B", + "162": "Battle_0C", + "163": "Battle_0D", + "164": "Battle_0E", + "165": "Battle_0F", + "166": "Damage", + "167": "Not_Very_Effective", + "168": "Battle_12", + "169": "Battle_13", + "170": "Battle_14", + "171": "Vine_Whip", + "172": "Battle_16", + "173": "Battle_17", + "174": "Battle_18", + "175": "Battle_19", + "176": "Super_Effective", + "177": "Battle_1B", + "178": "Battle_1C", + "179": "Doubleslap", + "180": "Battle_1E", + "182": "Horn_Drill", + "183": "Battle_20", + "184": "Battle_21", + "185": "Battle_22", + "186": "Battle_23", + "187": "Battle_24", + "189": "Battle_25", + "190": "Battle_26", + "191": "Battle_27", + "194": "Battle_28", + "197": "Battle_29", + "199": "Battle_2A", + "202": "Battle_2B", + "204": "Battle_2C", + "207": "Psybeam", + "210": "Battle_2E", + "213": "Battle_2F", + "216": "Psychic_M", + "219": "Battle_31", + "221": "Battle_32", + "223": "Battle_33", + "225": "Battle_34", + "228": "Battle_35", + "230": "Battle_36", + "233": "Trainer_Appeared" + }, + "sprites": { + "bike": { + "imageBase": "red_bike", + "imageHeight": 96, + "imageWidth": 16, + "label": "RedBikeSprite" + }, + "order": [ + { + "id": "SPRITE_RED", + "imageBase": "red", + "imageHeight": 96, + "imageWidth": 16, + "label": "RedSprite" + }, + { + "id": "SPRITE_BLUE", + "imageBase": "blue", + "imageHeight": 96, + "imageWidth": 16, + "label": "BlueSprite" + }, + { + "id": "SPRITE_OAK", + "imageBase": "oak", + "imageHeight": 96, + "imageWidth": 16, + "label": "OakSprite" + }, + { + "id": "SPRITE_YOUNGSTER", + "imageBase": "youngster", + "imageHeight": 96, + "imageWidth": 16, + "label": "YoungsterSprite" + }, + { + "id": "SPRITE_MONSTER", + "imageBase": "monster", + "imageHeight": 96, + "imageWidth": 16, + "label": "MonsterSprite" + }, + { + "id": "SPRITE_COOLTRAINER_F", + "imageBase": "cooltrainer_f", + "imageHeight": 96, + "imageWidth": 16, + "label": "CooltrainerFSprite" + }, + { + "id": "SPRITE_COOLTRAINER_M", + "imageBase": "cooltrainer_m", + "imageHeight": 96, + "imageWidth": 16, + "label": "CooltrainerMSprite" + }, + { + "id": "SPRITE_LITTLE_GIRL", + "imageBase": "little_girl", + "imageHeight": 96, + "imageWidth": 16, + "label": "LittleGirlSprite" + }, + { + "id": "SPRITE_BIRD", + "imageBase": "bird", + "imageHeight": 96, + "imageWidth": 16, + "label": "BirdSprite" + }, + { + "id": "SPRITE_MIDDLE_AGED_MAN", + "imageBase": "middle_aged_man", + "imageHeight": 96, + "imageWidth": 16, + "label": "MiddleAgedManSprite" + }, + { + "id": "SPRITE_GAMBLER", + "imageBase": "gambler", + "imageHeight": 96, + "imageWidth": 16, + "label": "GamblerSprite" + }, + { + "id": "SPRITE_SUPER_NERD", + "imageBase": "super_nerd", + "imageHeight": 96, + "imageWidth": 16, + "label": "SuperNerdSprite" + }, + { + "id": "SPRITE_GIRL", + "imageBase": "girl", + "imageHeight": 96, + "imageWidth": 16, + "label": "GirlSprite" + }, + { + "id": "SPRITE_HIKER", + "imageBase": "hiker", + "imageHeight": 96, + "imageWidth": 16, + "label": "HikerSprite" + }, + { + "id": "SPRITE_BEAUTY", + "imageBase": "beauty", + "imageHeight": 96, + "imageWidth": 16, + "label": "BeautySprite" + }, + { + "id": "SPRITE_GENTLEMAN", + "imageBase": "gentleman", + "imageHeight": 96, + "imageWidth": 16, + "label": "GentlemanSprite" + }, + { + "id": "SPRITE_DAISY", + "imageBase": "daisy", + "imageHeight": 96, + "imageWidth": 16, + "label": "DaisySprite" + }, + { + "id": "SPRITE_BIKER", + "imageBase": "biker", + "imageHeight": 96, + "imageWidth": 16, + "label": "BikerSprite" + }, + { + "id": "SPRITE_SAILOR", + "imageBase": "sailor", + "imageHeight": 96, + "imageWidth": 16, + "label": "SailorSprite" + }, + { + "id": "SPRITE_COOK", + "imageBase": "cook", + "imageHeight": 96, + "imageWidth": 16, + "label": "CookSprite" + }, + { + "id": "SPRITE_BIKE_SHOP_CLERK", + "imageBase": "bike_shop_clerk", + "imageHeight": 48, + "imageWidth": 16, + "label": "BikeShopClerkSprite" + }, + { + "id": "SPRITE_MR_FUJI", + "imageBase": "mr_fuji", + "imageHeight": 96, + "imageWidth": 16, + "label": "MrFujiSprite" + }, + { + "id": "SPRITE_GIOVANNI", + "imageBase": "giovanni", + "imageHeight": 96, + "imageWidth": 16, + "label": "GiovanniSprite" + }, + { + "id": "SPRITE_ROCKET", + "imageBase": "rocket", + "imageHeight": 96, + "imageWidth": 16, + "label": "RocketSprite" + }, + { + "id": "SPRITE_CHANNELER", + "imageBase": "channeler", + "imageHeight": 96, + "imageWidth": 16, + "label": "ChannelerSprite" + }, + { + "id": "SPRITE_WAITER", + "imageBase": "waiter", + "imageHeight": 96, + "imageWidth": 16, + "label": "WaiterSprite" + }, + { + "id": "SPRITE_SILPH_WORKER_F", + "imageBase": "silph_worker_f", + "imageHeight": 96, + "imageWidth": 16, + "label": "SilphWorkerFSprite" + }, + { + "id": "SPRITE_MIDDLE_AGED_WOMAN", + "imageBase": "middle_aged_woman", + "imageHeight": 96, + "imageWidth": 16, + "label": "MiddleAgedWomanSprite" + }, + { + "id": "SPRITE_BRUNETTE_GIRL", + "imageBase": "brunette_girl", + "imageHeight": 96, + "imageWidth": 16, + "label": "BrunetteGirlSprite" + }, + { + "id": "SPRITE_LANCE", + "imageBase": "lance", + "imageHeight": 96, + "imageWidth": 16, + "label": "LanceSprite" + }, + { + "id": "SPRITE_UNUSED_RED_1", + "imageBase": "red", + "imageHeight": 96, + "imageWidth": 16, + "label": "RedSprite" + }, + { + "id": "SPRITE_SCIENTIST", + "imageBase": "scientist", + "imageHeight": 96, + "imageWidth": 16, + "label": "ScientistSprite" + }, + { + "id": "SPRITE_ROCKER", + "imageBase": "rocker", + "imageHeight": 96, + "imageWidth": 16, + "label": "RockerSprite" + }, + { + "id": "SPRITE_SWIMMER", + "imageBase": "swimmer", + "imageHeight": 96, + "imageWidth": 16, + "label": "SwimmerSprite" + }, + { + "id": "SPRITE_SAFARI_ZONE_WORKER", + "imageBase": "safari_zone_worker", + "imageHeight": 48, + "imageWidth": 16, + "label": "SafariZoneWorkerSprite" + }, + { + "id": "SPRITE_GYM_GUIDE", + "imageBase": "gym_guide", + "imageHeight": 48, + "imageWidth": 16, + "label": "GymGuideSprite" + }, + { + "id": "SPRITE_GRAMPS", + "imageBase": "gramps", + "imageHeight": 48, + "imageWidth": 16, + "label": "GrampsSprite" + }, + { + "id": "SPRITE_CLERK", + "imageBase": "clerk", + "imageHeight": 48, + "imageWidth": 16, + "label": "ClerkSprite" + }, + { + "id": "SPRITE_FISHING_GURU", + "imageBase": "fishing_guru", + "imageHeight": 48, + "imageWidth": 16, + "label": "FishingGuruSprite" + }, + { + "id": "SPRITE_GRANNY", + "imageBase": "granny", + "imageHeight": 48, + "imageWidth": 16, + "label": "GrannySprite" + }, + { + "id": "SPRITE_NURSE", + "imageBase": "nurse", + "imageHeight": 64, + "imageWidth": 16, + "label": "NurseSprite" + }, + { + "id": "SPRITE_LINK_RECEPTIONIST", + "imageBase": "link_receptionist", + "imageHeight": 48, + "imageWidth": 16, + "label": "LinkReceptionistSprite" + }, + { + "id": "SPRITE_SILPH_PRESIDENT", + "imageBase": "silph_president", + "imageHeight": 48, + "imageWidth": 16, + "label": "SilphPresidentSprite" + }, + { + "id": "SPRITE_SILPH_WORKER_M", + "imageBase": "silph_worker_m", + "imageHeight": 48, + "imageWidth": 16, + "label": "SilphWorkerMSprite" + }, + { + "id": "SPRITE_WARDEN", + "imageBase": "warden", + "imageHeight": 48, + "imageWidth": 16, + "label": "WardenSprite" + }, + { + "id": "SPRITE_CAPTAIN", + "imageBase": "captain", + "imageHeight": 48, + "imageWidth": 16, + "label": "CaptainSprite" + }, + { + "id": "SPRITE_FISHER", + "imageBase": "fisher", + "imageHeight": 96, + "imageWidth": 16, + "label": "FisherSprite" + }, + { + "id": "SPRITE_KOGA", + "imageBase": "koga", + "imageHeight": 96, + "imageWidth": 16, + "label": "KogaSprite" + }, + { + "id": "SPRITE_GUARD", + "imageBase": "guard", + "imageHeight": 48, + "imageWidth": 16, + "label": "GuardSprite" + }, + { + "id": "SPRITE_UNUSED_RED_2", + "imageBase": "red", + "imageHeight": 96, + "imageWidth": 16, + "label": "RedSprite" + }, + { + "id": "SPRITE_MOM", + "imageBase": "mom", + "imageHeight": 48, + "imageWidth": 16, + "label": "MomSprite" + }, + { + "id": "SPRITE_BALDING_GUY", + "imageBase": "balding_guy", + "imageHeight": 48, + "imageWidth": 16, + "label": "BaldingGuySprite" + }, + { + "id": "SPRITE_LITTLE_BOY", + "imageBase": "little_boy", + "imageHeight": 48, + "imageWidth": 16, + "label": "LittleBoySprite" + }, + { + "id": "SPRITE_UNUSED_RED_3", + "imageBase": "red", + "imageHeight": 96, + "imageWidth": 16, + "label": "RedSprite" + }, + { + "id": "SPRITE_GAMEBOY_KID", + "imageBase": "gameboy_kid", + "imageHeight": 48, + "imageWidth": 16, + "label": "GameboyKidSprite" + }, + { + "id": "SPRITE_FAIRY", + "imageBase": "fairy", + "imageHeight": 96, + "imageWidth": 16, + "label": "FairySprite" + }, + { + "id": "SPRITE_AGATHA", + "imageBase": "agatha", + "imageHeight": 96, + "imageWidth": 16, + "label": "AgathaSprite" + }, + { + "id": "SPRITE_BRUNO", + "imageBase": "bruno", + "imageHeight": 96, + "imageWidth": 16, + "label": "BrunoSprite" + }, + { + "id": "SPRITE_LORELEI", + "imageBase": "lorelei", + "imageHeight": 96, + "imageWidth": 16, + "label": "LoreleiSprite" + }, + { + "id": "SPRITE_SEEL", + "imageBase": "seel", + "imageHeight": 96, + "imageWidth": 16, + "label": "SeelSprite" + }, + { + "id": "SPRITE_PIKACHU", + "imageBase": "pikachu", + "imageHeight": 96, + "imageWidth": 16, + "label": "PikachuSprite" + }, + { + "id": "SPRITE_OFFICER_JENNY", + "imageBase": "officer_jenny", + "imageHeight": 96, + "imageWidth": 16, + "label": "OfficerJennySprite" + }, + { + "id": "SPRITE_SANDSHREW", + "imageBase": "sandshrew", + "imageHeight": 48, + "imageWidth": 16, + "label": "SandshrewSprite" + }, + { + "id": "SPRITE_ODDISH", + "imageBase": "oddish", + "imageHeight": 48, + "imageWidth": 16, + "label": "OddishSprite" + }, + { + "id": "SPRITE_BULBASAUR", + "imageBase": "bulbasaur", + "imageHeight": 48, + "imageWidth": 16, + "label": "BulbasaurSprite" + }, + { + "id": "SPRITE_JIGGLYPUFF", + "imageBase": "jigglypuff", + "imageHeight": 48, + "imageWidth": 16, + "label": "JigglypuffSprite" + }, + { + "id": "SPRITE_CLEFAIRY", + "imageBase": "clefairy", + "imageHeight": 48, + "imageWidth": 16, + "label": "ClefairySprite" + }, + { + "id": "SPRITE_CHANSEY", + "imageBase": "chansey", + "imageHeight": 48, + "imageWidth": 16, + "label": "ChanseySprite" + }, + { + "id": "SPRITE_JESSIE", + "imageBase": "jessie", + "imageHeight": 96, + "imageWidth": 16, + "label": "JessieSprite" + }, + { + "id": "SPRITE_JAMES", + "imageBase": "james", + "imageHeight": 96, + "imageWidth": 16, + "label": "JamesSprite" + }, + { + "id": "SPRITE_POKE_BALL", + "imageBase": "poke_ball", + "imageHeight": 16, + "imageWidth": 16, + "label": "PokeBallSprite" + }, + { + "id": "SPRITE_FOSSIL", + "imageBase": "fossil", + "imageHeight": 16, + "imageWidth": 16, + "label": "FossilSprite" + }, + { + "id": "SPRITE_BOULDER", + "imageBase": "boulder", + "imageHeight": 16, + "imageWidth": 16, + "label": "BoulderSprite" + }, + { + "id": "SPRITE_PAPER", + "imageBase": "paper", + "imageHeight": 16, + "imageWidth": 16, + "label": "PaperSprite" + }, + { + "id": "SPRITE_POKEDEX", + "imageBase": "pokedex", + "imageHeight": 16, + "imageWidth": 16, + "label": "PokedexSprite" + }, + { + "id": "SPRITE_CLIPBOARD", + "imageBase": "clipboard", + "imageHeight": 16, + "imageWidth": 16, + "label": "ClipboardSprite" + }, + { + "id": "SPRITE_SNORLAX", + "imageBase": "snorlax", + "imageHeight": 16, + "imageWidth": 16, + "label": "SnorlaxSprite" + }, + { + "id": "SPRITE_UNUSED_OLD_AMBER", + "imageBase": "old_amber", + "imageHeight": 16, + "imageWidth": 16, + "label": "OldAmberSprite" + }, + { + "id": "SPRITE_OLD_AMBER", + "imageBase": "old_amber", + "imageHeight": 16, + "imageWidth": 16, + "label": "OldAmberSprite" + }, + { + "id": "SPRITE_UNUSED_GAMBLER_ASLEEP_1", + "imageBase": "gambler_asleep", + "imageHeight": 16, + "imageWidth": 16, + "label": "GamblerAsleepSprite" + }, + { + "id": "SPRITE_UNUSED_GAMBLER_ASLEEP_2", + "imageBase": "gambler_asleep", + "imageHeight": 16, + "imageWidth": 16, + "label": "GamblerAsleepSprite" + }, + { + "id": "SPRITE_GAMBLER_ASLEEP", + "imageBase": "gambler_asleep", + "imageHeight": 16, + "imageWidth": 16, + "label": "GamblerAsleepSprite" + } + ] + }, + "symbols": { + "AbraPicBack": [ + 12, + 29605 + ], + "AbraPicFront": [ + 12, + 29340 + ], + "AerodactylPicBack": [ + 13, + 23607 + ], + "AerodactylPicFront": [ + 13, + 23142 + ], + "AgathaPic": [ + 19, + 31214 + ], + "AgathasRoomAgathaDontRunAwayText": [ + 29, + 23983 + ], + "AgathasRoomAgathaText": [ + 29, + 23958 + ], + "AgathasRoom_h": [ + 29, + 23713 + ], + "AlakazamPicBack": [ + 12, + 30261 + ], + "AlakazamPicFront": [ + 12, + 29744 + ], + "ArbokPicBack": [ + 10, + 22645 + ], + "ArbokPicFront": [ + 10, + 22170 + ], + "ArcaninePicBack": [ + 9, + 26939 + ], + "ArcaninePicFront": [ + 9, + 26421 + ], + "ArticunoPicBack": [ + 11, + 16960 + ], + "ArticunoPicFront": [ + 11, + 16384 + ], + "AttackAnimationPointers": [ + 30, + 25130 + ], + "BadgeNumbersTileGraphics": [ + 61, + 24100 + ], + "BaseStats": [ + 14, + 17374 + ], + "BattleHudTiles1": [ + 4, + 19456 + ], + "BattleHudTiles2": [ + 4, + 19480 + ], + "BattleHudTiles3": [ + 4, + 19504 + ], + "BattleTransitionTile": [ + 28, + 19139 + ], + "BeautyPic": [ + 19, + 21983 + ], + "BeedrillPicBack": [ + 11, + 31530 + ], + "BeedrillPicFront": [ + 11, + 31003 + ], + "BellsproutPicBack": [ + 13, + 28725 + ], + "BellsproutPicFront": [ + 13, + 28510 + ], + "BikeShopClerkText": [ + 7, + 20558 + ], + "BikeShopMiddleAgedWomanText": [ + 7, + 20801 + ], + "BikeShopYoungsterText": [ + 7, + 20816 + ], + "BikeShop_h": [ + 7, + 20536 + ], + "BikerPic": [ + 19, + 19134 + ], + "BillsHouseBillCheckOutMyRarePokemonText": [ + 7, + 25196 + ], + "BillsHouseBillDontLeaveText": [ + 7, + 25167 + ], + "BillsHouseBillPokemonText": [ + 7, + 25172 + ], + "BillsHouseBillSSTicketText": [ + 7, + 25184 + ], + "BillsHouse_h": [ + 7, + 24686 + ], + "BirdKeeperPic": [ + 19, + 23771 + ], + "BlackbeltPic": [ + 19, + 24182 + ], + "BlainePic": [ + 19, + 28987 + ], + "BlastoisePicBack": [ + 9, + 30731 + ], + "BlastoisePicFront": [ + 9, + 30202 + ], + "BluesHouseDaisySittingText": [ + 6, + 23643 + ], + "BluesHouseDaisyWalkingText": [ + 6, + 23746 + ], + "BluesHouseTownMapText": [ + 6, + 23751 + ], + "BluesHouse_h": [ + 6, + 23599 + ], + "BoltEmote": [ + 16, + 21285 + ], + "BoulderText": [ + 0, + 9184 + ], + "BrockPic": [ + 19, + 27417 + ], + "BrunoPic": [ + 19, + 26910 + ], + "BrunosRoomBrunoDontRunAwayText": [ + 29, + 23634 + ], + "BrunosRoomBrunoText": [ + 29, + 23609 + ], + "BrunosRoom_h": [ + 29, + 23370 + ], + "BugCatcherPic": [ + 19, + 16582 + ], + "BugIconFrame1": [ + 28, + 23046 + ], + "BugIconFrame2": [ + 28, + 23110 + ], + "BulbasaurPicBack": [ + 13, + 16612 + ], + "BulbasaurPicFront": [ + 13, + 16384 + ], + "BurglarPic": [ + 19, + 19601 + ], + "ButterfreePicBack": [ + 12, + 20276 + ], + "ButterfreePicFront": [ + 12, + 19805 + ], + "CGBBasePalettes": [ + 28, + 27385 + ], + "CaterpiePicBack": [ + 12, + 19432 + ], + "CaterpiePicFront": [ + 12, + 19205 + ], + "CeladonChiefHouseChiefText": [ + 18, + 20990 + ], + "CeladonChiefHouseRocketText": [ + 18, + 20995 + ], + "CeladonChiefHouseSailorText": [ + 18, + 21000 + ], + "CeladonChiefHouse_h": [ + 18, + 20968 + ], + "CeladonCityDeptStoreSignText": [ + 6, + 23319 + ], + "CeladonCityFisherText": [ + 6, + 23264 + ], + "CeladonCityGameCornerSignText": [ + 6, + 23334 + ], + "CeladonCityGirlText": [ + 6, + 23181 + ], + "CeladonCityGramps1Text": [ + 6, + 23176 + ], + "CeladonCityGramps2Text": [ + 6, + 23186 + ], + "CeladonCityGramps3Text": [ + 6, + 23191 + ], + "CeladonCityGymSignText": [ + 6, + 23309 + ], + "CeladonCityLittleGirlText": [ + 6, + 23171 + ], + "CeladonCityMansionSignText": [ + 6, + 23314 + ], + "CeladonCityPoliwrathText": [ + 6, + 23269 + ], + "CeladonCityPrizeExchangeSignText": [ + 6, + 23329 + ], + "CeladonCityRocket1Text": [ + 6, + 23282 + ], + "CeladonCityRocket2Text": [ + 6, + 23287 + ], + "CeladonCitySignText": [ + 6, + 23304 + ], + "CeladonCityTrainerTips1Text": [ + 6, + 23292 + ], + "CeladonCityTrainerTips2Text": [ + 6, + 23324 + ], + "CeladonCity_h": [ + 6, + 16384 + ], + "CeladonDinerCookText": [ + 18, + 20866 + ], + "CeladonDinerFisherText": [ + 18, + 20881 + ], + "CeladonDinerGymGuideText": [ + 18, + 20886 + ], + "CeladonDinerMiddleAgedManText": [ + 18, + 20876 + ], + "CeladonDinerMiddleAgedWomanText": [ + 18, + 20871 + ], + "CeladonDiner_h": [ + 18, + 20840 + ], + "CeladonGymBeauty1Text": [ + 18, + 19121 + ], + "CeladonGymBeauty2Text": [ + 18, + 19171 + ], + "CeladonGymBeauty3Text": [ + 18, + 19221 + ], + "CeladonGymCooltrainerF1Text": [ + 18, + 19096 + ], + "CeladonGymCooltrainerF2Text": [ + 18, + 19146 + ], + "CeladonGymCooltrainerF3Text": [ + 18, + 19196 + ], + "CeladonGymCooltrainerF4Text": [ + 18, + 19246 + ], + "CeladonGymErikaText": [ + 18, + 18984 + ], + "CeladonGymRainbowBadgeInfoText": [ + 18, + 19076 + ], + "CeladonGymReceivedTM21Text": [ + 18, + 19081 + ], + "CeladonGymTM21NoRoomText": [ + 18, + 19091 + ], + "CeladonGym_h": [ + 18, + 18709 + ], + "CeladonHotelBeautyText": [ + 18, + 21085 + ], + "CeladonHotelGrannyText": [ + 18, + 21080 + ], + "CeladonHotelSuperNerdText": [ + 18, + 21090 + ], + "CeladonHotel_h": [ + 18, + 21059 + ], + "CeladonMansion1FClefairyText": [ + 18, + 17884 + ], + "CeladonMansion1FGrannyText": [ + 18, + 17850 + ], + "CeladonMansion1FManagersSuiteSignText": [ + 18, + 17910 + ], + "CeladonMansion1FMeowthText": [ + 18, + 17837 + ], + "CeladonMansion1FNidoranFText": [ + 18, + 17897 + ], + "CeladonMansion1F_h": [ + 18, + 17811 + ], + "CeladonMansion2FMeetingRoomSignText": [ + 18, + 18028 + ], + "CeladonMansion2F_h": [ + 18, + 18010 + ], + "CeladonMansion3FDevRoomSignText": [ + 18, + 18421 + ], + "CeladonMansion3FGameDesignerText": [ + 18, + 18318 + ], + "CeladonMansion3FGameProgramPCText": [ + 18, + 18385 + ], + "CeladonMansion3FGameScriptPCText": [ + 18, + 18409 + ], + "CeladonMansion3FGraphicArtistText": [ + 18, + 18170 + ], + "CeladonMansion3FPlayingGamePCText": [ + 18, + 18397 + ], + "CeladonMansion3FProgrammerText": [ + 18, + 18140 + ], + "CeladonMansion3FWriterText": [ + 18, + 18288 + ], + "CeladonMansion3F_h": [ + 18, + 18096 + ], + "CeladonMansionRoofHouseEeveePokeballText": [ + 7, + 22095 + ], + "CeladonMansionRoofHouseHikerText": [ + 7, + 22090 + ], + "CeladonMansionRoofHouseSignText": [ + 18, + 18547 + ], + "CeladonMansionRoofHouse_h": [ + 7, + 22070 + ], + "CeladonMansionRoof_h": [ + 18, + 18529 + ], + "CeladonMart1FCurrentFloorSignText": [ + 17, + 17111 + ], + "CeladonMart1FDirectorySignText": [ + 17, + 17106 + ], + "CeladonMart1FReceptionistText": [ + 17, + 17101 + ], + "CeladonMart1F_h": [ + 17, + 17079 + ], + "CeladonMart2FClerk1Text": [ + 0, + 9073 + ], + "CeladonMart2FClerk2Text": [ + 0, + 9085 + ], + "CeladonMart2FCurrentFloorSignText": [ + 21, + 24828 + ], + "CeladonMart2FGirlText": [ + 21, + 24823 + ], + "CeladonMart2FMiddleAgedManText": [ + 21, + 24818 + ], + "CeladonMart2F_h": [ + 21, + 24793 + ], + "CeladonMart3FClerkText": [ + 18, + 16776 + ], + "CeladonMart3FCurrentFloorSignText": [ + 18, + 16833 + ], + "CeladonMart3FFightingGameText": [ + 18, + 16828 + ], + "CeladonMart3FGameBoyKid1Text": [ + 18, + 16788 + ], + "CeladonMart3FGameBoyKid2Text": [ + 18, + 16793 + ], + "CeladonMart3FGameBoyKid3Text": [ + 18, + 16798 + ], + "CeladonMart3FLittleBoyText": [ + 18, + 16803 + ], + "CeladonMart3FPokemonPosterText": [ + 18, + 16838 + ], + "CeladonMart3FPuzzleGameText": [ + 18, + 16823 + ], + "CeladonMart3FRPGText": [ + 18, + 16813 + ], + "CeladonMart3FSNESText": [ + 18, + 16808 + ], + "CeladonMart3FSportsGameText": [ + 18, + 16818 + ], + "CeladonMart3F_h": [ + 18, + 16727 + ], + "CeladonMart4FClerkText": [ + 0, + 9097 + ], + "CeladonMart4FCurrentFloorSignText": [ + 18, + 17010 + ], + "CeladonMart4FSuperNerdText": [ + 18, + 17000 + ], + "CeladonMart4FYoungsterText": [ + 18, + 17005 + ], + "CeladonMart4F_h": [ + 18, + 16977 + ], + "CeladonMart5FClerk1Text": [ + 0, + 9105 + ], + "CeladonMart5FClerk2Text": [ + 0, + 9115 + ], + "CeladonMart5FCurrentFloorSignText": [ + 18, + 20643 + ], + "CeladonMart5FGentlemanText": [ + 18, + 20633 + ], + "CeladonMart5FSailorText": [ + 18, + 20638 + ], + "CeladonMart5F_h": [ + 18, + 20607 + ], + "CeladonMartElevatorText": [ + 18, + 17769 + ], + "CeladonMartElevator_h": [ + 18, + 17663 + ], + "CeladonMartRoofCurrentFloorSignText": [ + 18, + 17582 + ], + "CeladonMartRoofLittleGirlText": [ + 18, + 17527 + ], + "CeladonMartRoofSuperNerdText": [ + 18, + 17522 + ], + "CeladonMartRoofVendingMachineText": [ + 18, + 17581 + ], + "CeladonMartRoof_h": [ + 18, + 17104 + ], + "CeladonPokecenterBeautyText": [ + 18, + 18642 + ], + "CeladonPokecenterChanseyText": [ + 18, + 18647 + ], + "CeladonPokecenterGentlemanText": [ + 18, + 18637 + ], + "CeladonPokecenterLinkReceptionistText": [ + 18, + 18635 + ], + "CeladonPokecenterNurseText": [ + 18, + 18636 + ], + "CeladonPokecenter_h": [ + 18, + 18607 + ], + "CeruleanBadgeHouseMiddleAgedManText": [ + 29, + 18011 + ], + "CeruleanBadgeHouse_h": [ + 29, + 17987 + ], + "CeruleanCave1F_h": [ + 29, + 17725 + ], + "CeruleanCave2F_h": [ + 17, + 24659 + ], + "CeruleanCaveB1FMewtwoText": [ + 17, + 24957 + ], + "CeruleanCaveB1F_h": [ + 17, + 24897 + ], + "CeruleanCityBikeShopSign": [ + 6, + 22583 + ], + "CeruleanCityCooltrainerF1Text": [ + 6, + 22444 + ], + "CeruleanCityCooltrainerF2Text": [ + 6, + 22563 + ], + "CeruleanCityCooltrainerMText": [ + 6, + 22424 + ], + "CeruleanCityElectrodeText": [ + 6, + 22495 + ], + "CeruleanCityGuardText": [ + 6, + 22439 + ], + "CeruleanCityGymSign": [ + 6, + 22588 + ], + "CeruleanCityRivalText": [ + 6, + 22255 + ], + "CeruleanCityRocketText": [ + 6, + 22300 + ], + "CeruleanCitySignText": [ + 6, + 22573 + ], + "CeruleanCitySuperNerd1Text": [ + 6, + 22429 + ], + "CeruleanCitySuperNerd2Text": [ + 6, + 22434 + ], + "CeruleanCitySuperNerd3Text": [ + 6, + 22568 + ], + "CeruleanCityTrainerTipsText": [ + 6, + 22578 + ], + "CeruleanCity_h": [ + 6, + 18260 + ], + "CeruleanGymCooltrainerFText": [ + 23, + 18093 + ], + "CeruleanGymGymGuideText": [ + 23, + 18143 + ], + "CeruleanGymMistyCascadeBadgeInfoText": [ + 23, + 18072 + ], + "CeruleanGymMistyReceivedTM11Text": [ + 23, + 18077 + ], + "CeruleanGymMistyTM11NoRoomText": [ + 23, + 18083 + ], + "CeruleanGymMistyText": [ + 23, + 17985 + ], + "CeruleanGymSwimmerText": [ + 23, + 18118 + ], + "CeruleanGym_h": [ + 23, + 17783 + ], + "CeruleanMartClerkText": [ + 0, + 9037 + ], + "CeruleanMartCooltrainerFText": [ + 23, + 18289 + ], + "CeruleanMartCooltrainerMText": [ + 23, + 18284 + ], + "CeruleanMart_h": [ + 23, + 18263 + ], + "CeruleanMelanieHouseBulbasaurText": [ + 7, + 20453 + ], + "CeruleanMelanieHouseMelanieText": [ + 7, + 20300 + ], + "CeruleanMelanieHouseOddishText": [ + 7, + 20466 + ], + "CeruleanMelanieHouseSandshrewText": [ + 7, + 20479 + ], + "CeruleanMelaniesHouse_h": [ + 7, + 20276 + ], + "CeruleanPokecenterChanseyText": [ + 23, + 17693 + ], + "CeruleanPokecenterGentlemanText": [ + 23, + 17688 + ], + "CeruleanPokecenterLinkReceptionistText": [ + 23, + 17681 + ], + "CeruleanPokecenterNurseText": [ + 23, + 17682 + ], + "CeruleanPokecenterSuperNerdText": [ + 23, + 17683 + ], + "CeruleanPokecenter_h": [ + 23, + 17653 + ], + "CeruleanTrashedHouseFishingGuruText": [ + 7, + 20185 + ], + "CeruleanTrashedHouseGirlText": [ + 7, + 20223 + ], + "CeruleanTrashedHouseWallHoleText": [ + 7, + 20228 + ], + "CeruleanTrashedHouse_h": [ + 7, + 20163 + ], + "ChampionsRoomOakComeWithMeText": [ + 29, + 22954 + ], + "ChampionsRoomOakCongratulatesPlayerText": [ + 29, + 22925 + ], + "ChampionsRoomOakDisappointedWithRivalText": [ + 29, + 22949 + ], + "ChampionsRoomOakText": [ + 29, + 22920 + ], + "ChampionsRoomRivalText": [ + 29, + 22880 + ], + "ChampionsRoom_h": [ + 29, + 22432 + ], + "ChannelerPic": [ + 19, + 30753 + ], + "ChanseyPicBack": [ + 10, + 20015 + ], + "ChanseyPicFront": [ + 10, + 19704 + ], + "CharizardPicBack": [ + 13, + 26368 + ], + "CharizardPicFront": [ + 13, + 25769 + ], + "CharmanderPicBack": [ + 13, + 24316 + ], + "CharmanderPicFront": [ + 13, + 24048 + ], + "CharmeleonPicBack": [ + 13, + 25125 + ], + "CharmeleonPicFront": [ + 13, + 24776 + ], + "CinnabarGymBlaineReceivedTM38Text": [ + 29, + 20790 + ], + "CinnabarGymBlaineTM38NoRoomText": [ + 29, + 20800 + ], + "CinnabarGymBlaineText": [ + 29, + 20715 + ], + "CinnabarGymBlaineVolcanoBadgeInfoText": [ + 29, + 20785 + ], + "CinnabarGymGymGuideText": [ + 29, + 21278 + ], + "CinnabarGymSuperNerd1": [ + 29, + 20805 + ], + "CinnabarGymSuperNerd2": [ + 29, + 20858 + ], + "CinnabarGymSuperNerd3": [ + 29, + 20928 + ], + "CinnabarGymSuperNerd4": [ + 29, + 20998 + ], + "CinnabarGymSuperNerd5": [ + 29, + 21068 + ], + "CinnabarGymSuperNerd6": [ + 29, + 21138 + ], + "CinnabarGymSuperNerd7": [ + 29, + 21208 + ], + "CinnabarGym_h": [ + 29, + 20198 + ], + "CinnabarIslandDoorIsLockedText": [ + 7, + 17210 + ], + "CinnabarIslandGamblerText": [ + 7, + 17220 + ], + "CinnabarIslandGirlText": [ + 7, + 17215 + ], + "CinnabarIslandGymSignText": [ + 7, + 17235 + ], + "CinnabarIslandPokemonLabSignText": [ + 7, + 17230 + ], + "CinnabarIslandSignText": [ + 7, + 17225 + ], + "CinnabarIsland_h": [ + 7, + 16384 + ], + "CinnabarLabFishingGuruText": [ + 29, + 21525 + ], + "CinnabarLabFossilRoomScientist1Text": [ + 29, + 21991 + ], + "CinnabarLabFossilRoomScientist2Text": [ + 29, + 22101 + ], + "CinnabarLabFossilRoom_h": [ + 29, + 21920 + ], + "CinnabarLabMeetingRoomSignText": [ + 29, + 21535 + ], + "CinnabarLabMetronomeRoomAmberPipeText": [ + 29, + 21858 + ], + "CinnabarLabMetronomeRoomPCText": [ + 29, + 21853 + ], + "CinnabarLabMetronomeRoomScientist1Text": [ + 29, + 21775 + ], + "CinnabarLabMetronomeRoomScientist2Text": [ + 29, + 21848 + ], + "CinnabarLabMetronomeRoom_h": [ + 29, + 21750 + ], + "CinnabarLabPhotoText": [ + 29, + 21530 + ], + "CinnabarLabRAndDSignText": [ + 29, + 21540 + ], + "CinnabarLabTestingRoomSignText": [ + 29, + 21545 + ], + "CinnabarLabTradeRoomBeautyText": [ + 29, + 21682 + ], + "CinnabarLabTradeRoomGrampsText": [ + 29, + 21674 + ], + "CinnabarLabTradeRoomSuperNerdText": [ + 29, + 21669 + ], + "CinnabarLabTradeRoom_h": [ + 29, + 21648 + ], + "CinnabarLab_h": [ + 29, + 21499 + ], + "CinnabarMartClerkText": [ + 0, + 9140 + ], + "CinnabarMartScientistText": [ + 29, + 22299 + ], + "CinnabarMartSilphWorkerFText": [ + 29, + 22294 + ], + "CinnabarMart_h": [ + 29, + 22273 + ], + "CinnabarPokecenterChanseyText": [ + 29, + 22211 + ], + "CinnabarPokecenterCooltrainerFText": [ + 29, + 22200 + ], + "CinnabarPokecenterGentlemanText": [ + 29, + 22205 + ], + "CinnabarPokecenterLinkReceptionistText": [ + 29, + 22210 + ], + "CinnabarPokecenterNurseText": [ + 29, + 22199 + ], + "CinnabarPokecenter_h": [ + 29, + 22171 + ], + "CircleTile": [ + 61, + 24084 + ], + "ClefablePicBack": [ + 12, + 27090 + ], + "ClefablePicFront": [ + 12, + 26725 + ], + "ClefairyPicBack": [ + 9, + 18407 + ], + "ClefairyPicFront": [ + 9, + 18172 + ], + "CloysterPicBack": [ + 12, + 26201 + ], + "CloysterPicFront": [ + 12, + 25666 + ], + "ColosseumOpponentText": [ + 19, + 32503 + ], + "Colosseum_h": [ + 19, + 32486 + ], + "CooltrainerFPic": [ + 19, + 26521 + ], + "CooltrainerMPic": [ + 19, + 26128 + ], + "CopycatsHouse1FChanseyText": [ + 29, + 22373 + ], + "CopycatsHouse1FMiddleAgedManText": [ + 29, + 22368 + ], + "CopycatsHouse1FMiddleAgedWomanText": [ + 29, + 22363 + ], + "CopycatsHouse1F_h": [ + 29, + 22342 + ], + "CopycatsHouse2FCopycatText": [ + 23, + 19320 + ], + "CopycatsHouse2FDoduoText": [ + 23, + 19434 + ], + "CopycatsHouse2FPCText": [ + 23, + 19449 + ], + "CopycatsHouse2FRareDollText": [ + 23, + 19439 + ], + "CopycatsHouse2FSNESText": [ + 23, + 19444 + ], + "CopycatsHouse2F_h": [ + 23, + 19291 + ], + "CryData": [ + 14, + 21602 + ], + "CubonePicBack": [ + 9, + 25079 + ], + "CubonePicFront": [ + 9, + 24796 + ], + "CueBallPic": [ + 19, + 21071 + ], + "DaycareGentlemanText": [ + 21, + 25156 + ], + "Daycare_h": [ + 21, + 25139 + ], + "DewgongPicBack": [ + 12, + 19102 + ], + "DewgongPicFront": [ + 12, + 18663 + ], + "DiglettPicBack": [ + 10, + 27866 + ], + "DiglettPicFront": [ + 10, + 27708 + ], + "DiglettsCaveRoute11GamblerText": [ + 7, + 24271 + ], + "DiglettsCaveRoute11_h": [ + 7, + 24248 + ], + "DiglettsCaveRoute2FishingGuruText": [ + 7, + 22468 + ], + "DiglettsCaveRoute2_h": [ + 7, + 22446 + ], + "DiglettsCave_h": [ + 24, + 24441 + ], + "DittoPicBack": [ + 11, + 17853 + ], + "DittoPicFront": [ + 11, + 17693 + ], + "DodrioPicBack": [ + 12, + 16855 + ], + "DodrioPicFront": [ + 12, + 16384 + ], + "DoduoPicBack": [ + 10, + 30481 + ], + "DoduoPicFront": [ + 10, + 30163 + ], + "DoorTileIDPointers": [ + 6, + 26536 + ], + "DragonairPicBack": [ + 11, + 21450 + ], + "DragonairPicFront": [ + 11, + 21123 + ], + "DragonitePicBack": [ + 10, + 29990 + ], + "DragonitePicFront": [ + 10, + 29448 + ], + "DratiniPicBack": [ + 11, + 21024 + ], + "DratiniPicFront": [ + 11, + 20799 + ], + "DrowzeePicBack": [ + 10, + 24033 + ], + "DrowzeePicFront": [ + 10, + 23698 + ], + "DugtrioPicBack": [ + 12, + 17962 + ], + "DugtrioPicFront": [ + 12, + 17610 + ], + "EeveePicBack": [ + 11, + 26243 + ], + "EeveePicFront": [ + 11, + 25966 + ], + "EkansPicBack": [ + 11, + 28987 + ], + "EkansPicFront": [ + 11, + 28730 + ], + "ElectabuzzPicBack": [ + 10, + 25712 + ], + "ElectabuzzPicFront": [ + 10, + 25258 + ], + "ElectrodePicBack": [ + 12, + 26624 + ], + "ElectrodePicFront": [ + 12, + 26382 + ], + "EngineerPic": [ + 19, + 19978 + ], + "ErikaPic": [ + 19, + 28325 + ], + "EvosMovesPointerTable": [ + 14, + 29157 + ], + "ExeggcutePicBack": [ + 9, + 22695 + ], + "ExeggcutePicFront": [ + 9, + 22201 + ], + "ExeggutorPicBack": [ + 9, + 21429 + ], + "ExeggutorPicFront": [ + 9, + 20978 + ], + "FallingStar": [ + 28, + 16822 + ], + "FarfetchdPicBack": [ + 10, + 28976 + ], + "FarfetchdPicFront": [ + 10, + 28569 + ], + "FearowPicBack": [ + 10, + 17783 + ], + "FearowPicFront": [ + 10, + 17286 + ], + "FightingDojoBlackbelt1Text": [ + 23, + 19864 + ], + "FightingDojoBlackbelt2Text": [ + 23, + 19889 + ], + "FightingDojoBlackbelt3Text": [ + 23, + 19914 + ], + "FightingDojoBlackbelt4Text": [ + 23, + 19939 + ], + "FightingDojoHitmonchanPokeBallText": [ + 23, + 20036 + ], + "FightingDojoHitmonleePokeBallText": [ + 23, + 19964 + ], + "FightingDojoKarateMasterText": [ + 23, + 19770 + ], + "FightingDojo_h": [ + 23, + 19527 + ], + "FishEmote": [ + 16, + 21413 + ], + "FisherPic": [ + 19, + 20359 + ], + "FlareonPicBack": [ + 11, + 26700 + ], + "FlareonPicFront": [ + 11, + 26347 + ], + "FlowerTile1": [ + 0, + 7381 + ], + "FlowerTile2": [ + 0, + 7397 + ], + "FlowerTile3": [ + 0, + 7413 + ], + "FontGraphics": [ + 4, + 17920 + ], + "FossilAerodactylPic": [ + 13, + 26529 + ], + "FossilKabutopsPic": [ + 11, + 31634 + ], + "FrameBlockBaseCoords": [ + 30, + 32301 + ], + "FrameBlockPointers": [ + 30, + 28956 + ], + "FuchsiaBillsGrandpasHouseBillsGrandpaText": [ + 29, + 18540 + ], + "FuchsiaBillsGrandpasHouseMiddleAgedWomanText": [ + 29, + 18535 + ], + "FuchsiaBillsGrandpasHouseYoungsterText": [ + 29, + 18545 + ], + "FuchsiaBillsGrandpasHouse_h": [ + 29, + 18513 + ], + "FuchsiaCityChanseySignText": [ + 6, + 23440 + ], + "FuchsiaCityErikText": [ + 6, + 23400 + ], + "FuchsiaCityFossilSignText": [ + 6, + 23540 + ], + "FuchsiaCityGamblerText": [ + 6, + 23395 + ], + "FuchsiaCityGymSignText": [ + 6, + 23435 + ], + "FuchsiaCityKangaskhanSignText": [ + 6, + 23480 + ], + "FuchsiaCityLaprasSignText": [ + 6, + 23520 + ], + "FuchsiaCityPokemonText": [ + 6, + 23410 + ], + "FuchsiaCitySafariGameSignText": [ + 6, + 23420 + ], + "FuchsiaCitySafariZoneSignText": [ + 6, + 23430 + ], + "FuchsiaCitySignText": [ + 6, + 23415 + ], + "FuchsiaCitySlowpokeSignText": [ + 6, + 23500 + ], + "FuchsiaCityVoltorbSignText": [ + 6, + 23460 + ], + "FuchsiaCityWardensHomeSignText": [ + 6, + 23425 + ], + "FuchsiaCityYoungster1Text": [ + 6, + 23390 + ], + "FuchsiaCityYoungster2Text": [ + 6, + 23405 + ], + "FuchsiaCity_h": [ + 6, + 19379 + ], + "FuchsiaGoodRodHouseFishingGuruText": [ + 21, + 24945 + ], + "FuchsiaGoodRodHouse_h": [ + 21, + 24928 + ], + "FuchsiaGymGymGuideText": [ + 29, + 19938 + ], + "FuchsiaGymKogaReceivedTM06Text": [ + 29, + 19773 + ], + "FuchsiaGymKogaSoulBadgeInfoText": [ + 29, + 19768 + ], + "FuchsiaGymKogaTM06NoRoomText": [ + 29, + 19783 + ], + "FuchsiaGymKogaText": [ + 29, + 19676 + ], + "FuchsiaGymRocker1Text": [ + 29, + 19788 + ], + "FuchsiaGymRocker2Text": [ + 29, + 19813 + ], + "FuchsiaGymRocker3Text": [ + 29, + 19838 + ], + "FuchsiaGymRocker4Text": [ + 29, + 19863 + ], + "FuchsiaGymRocker5Text": [ + 29, + 19888 + ], + "FuchsiaGymRocker6Text": [ + 29, + 19913 + ], + "FuchsiaGym_h": [ + 29, + 19417 + ], + "FuchsiaMartClerkText": [ + 0, + 9123 + ], + "FuchsiaMartCooltrainerFText": [ + 7, + 22176 + ], + "FuchsiaMartMiddleAgedManText": [ + 7, + 22171 + ], + "FuchsiaMart_h": [ + 7, + 22149 + ], + "FuchsiaMeetingRoomSafariZoneWorker1": [ + 29, + 20117 + ], + "FuchsiaMeetingRoomSafariZoneWorker2": [ + 29, + 20122 + ], + "FuchsiaMeetingRoomSafariZoneWorker3": [ + 29, + 20127 + ], + "FuchsiaMeetingRoom_h": [ + 29, + 20095 + ], + "FuchsiaPokecenterChanseyText": [ + 29, + 18628 + ], + "FuchsiaPokecenterCooltrainerFText": [ + 29, + 18622 + ], + "FuchsiaPokecenterLinkReceptionistText": [ + 29, + 18627 + ], + "FuchsiaPokecenterNurseText": [ + 29, + 18616 + ], + "FuchsiaPokecenterRockerText": [ + 29, + 18617 + ], + "FuchsiaPokecenter_h": [ + 29, + 18588 + ], + "GamblerPic": [ + 19, + 21537 + ], + "GameCornerBeauty1Text": [ + 18, + 19656 + ], + "GameCornerBeauty2Text": [ + 18, + 19817 + ], + "GameCornerClerkText": [ + 18, + 19661 + ], + "GameCornerFishingGuru1Text": [ + 18, + 19822 + ], + "GameCornerFishingGuru2Text": [ + 18, + 20063 + ], + "GameCornerGamblerText": [ + 18, + 19960 + ], + "GameCornerGymGuideText": [ + 18, + 19930 + ], + "GameCornerMiddleAgedMan1Text": [ + 18, + 19812 + ], + "GameCornerMiddleAgedMan2Text": [ + 18, + 19965 + ], + "GameCornerMiddleAgedWomanText": [ + 18, + 19925 + ], + "GameCornerPRizeRoomPrizeVendorText": [ + 18, + 20778 + ], + "GameCornerPosterText": [ + 18, + 20225 + ], + "GameCornerPrizeRoomBaldingGuyText": [ + 18, + 20768 + ], + "GameCornerPrizeRoomGamblerText": [ + 18, + 20773 + ], + "GameCornerPrizeRoom_h": [ + 18, + 20743 + ], + "GameCornerRocketAfterBattleText": [ + 18, + 20220 + ], + "GameCornerRocketText": [ + 18, + 20161 + ], + "GameCorner_h": [ + 18, + 19400 + ], + "GameFreakIntro": [ + 16, + 23206 + ], + "GameFreakLogoGraphics": [ + 4, + 19832 + ], + "GastlyPicBack": [ + 9, + 29055 + ], + "GastlyPicFront": [ + 9, + 28852 + ], + "GengarIntroTiles1": [ + 30, + 23785 + ], + "GengarIntroTiles2": [ + 30, + 23834 + ], + "GengarIntroTiles3": [ + 30, + 23883 + ], + "GengarPicBack": [ + 9, + 23647 + ], + "GengarPicFront": [ + 9, + 23326 + ], + "GentlemanPic": [ + 19, + 29627 + ], + "GeodudePicBack": [ + 13, + 22701 + ], + "GeodudePicFront": [ + 13, + 22404 + ], + "GhostPic": [ + 13, + 26912 + ], + "GiovanniPic": [ + 19, + 25497 + ], + "GloomPicBack": [ + 13, + 27920 + ], + "GloomPicFront": [ + 13, + 27630 + ], + "GolbatPicBack": [ + 12, + 22711 + ], + "GolbatPicFront": [ + 12, + 22321 + ], + "GoldeenPicBack": [ + 13, + 18432 + ], + "GoldeenPicFront": [ + 13, + 18085 + ], + "GolduckPicBack": [ + 12, + 21585 + ], + "GolduckPicFront": [ + 12, + 21092 + ], + "GolemPicBack": [ + 10, + 24549 + ], + "GolemPicFront": [ + 10, + 24144 + ], + "GravelerPicBack": [ + 10, + 19530 + ], + "GravelerPicFront": [ + 10, + 19095 + ], + "GrimerPicBack": [ + 9, + 23128 + ], + "GrimerPicFront": [ + 9, + 22826 + ], + "GrowlithePicBack": [ + 10, + 16679 + ], + "GrowlithePicFront": [ + 10, + 16384 + ], + "GyaradosPicBack": [ + 9, + 28034 + ], + "GyaradosPicFront": [ + 9, + 27451 + ], + "GymLeaderFaceAndBadgeTileGraphics": [ + 3, + 26907 + ], + "HallOfFameOakText": [ + 22, + 25863 + ], + "HallOfFame_h": [ + 22, + 25645 + ], + "HappyEmote": [ + 16, + 21093 + ], + "HaunterPicBack": [ + 12, + 29205 + ], + "HaunterPicFront": [ + 12, + 28831 + ], + "HeartEmote": [ + 16, + 21221 + ], + "HikerPic": [ + 19, + 18663 + ], + "HitmonchanPicBack": [ + 10, + 22057 + ], + "HitmonchanPicFront": [ + 10, + 21748 + ], + "HitmonleePicBack": [ + 10, + 21654 + ], + "HitmonleePicFront": [ + 10, + 21223 + ], + "HorseaPicBack": [ + 11, + 22680 + ], + "HorseaPicFront": [ + 11, + 22438 + ], + "HpBarAndStatusGraphics": [ + 4, + 18976 + ], + "HypnoPicBack": [ + 12, + 22179 + ], + "HypnoPicFront": [ + 12, + 21740 + ], + "IndigoPlateauLobbyChanseyText": [ + 6, + 23949 + ], + "IndigoPlateauLobbyClerkText": [ + 0, + 9159 + ], + "IndigoPlateauLobbyCooltrainerFText": [ + 6, + 23943 + ], + "IndigoPlateauLobbyGymGuideText": [ + 6, + 23938 + ], + "IndigoPlateauLobbyLinkReceptionistText": [ + 6, + 23948 + ], + "IndigoPlateauLobbyNurseText": [ + 6, + 23937 + ], + "IndigoPlateauLobby_h": [ + 6, + 23877 + ], + "IndigoPlateau_h": [ + 20, + 18724 + ], + "ItemNames": [ + 1, + 17847 + ], + "ItemPrices": [ + 1, + 17556 + ], + "IvysaurPicBack": [ + 9, + 20851 + ], + "IvysaurPicFront": [ + 9, + 20457 + ], + "JigglypuffPicBack": [ + 11, + 25410 + ], + "JigglypuffPicFront": [ + 11, + 25181 + ], + "JolteonPicBack": [ + 11, + 27300 + ], + "JolteonPicFront": [ + 11, + 26837 + ], + "JrTrainerFPic": [ + 19, + 17800 + ], + "JrTrainerMPic": [ + 19, + 17488 + ], + "JugglerPic": [ + 19, + 22909 + ], + "JynxPicBack": [ + 10, + 31324 + ], + "JynxPicFront": [ + 10, + 30883 + ], + "KabutoPicBack": [ + 11, + 21781 + ], + "KabutoPicFront": [ + 11, + 21589 + ], + "KabutopsPicBack": [ + 11, + 22305 + ], + "KabutopsPicFront": [ + 11, + 21871 + ], + "KadabraPicBack": [ + 10, + 18948 + ], + "KadabraPicFront": [ + 10, + 18524 + ], + "KakunaPicBack": [ + 11, + 30921 + ], + "KakunaPicFront": [ + 11, + 30727 + ], + "KangaskhanPicBack": [ + 9, + 17673 + ], + "KangaskhanPicFront": [ + 9, + 17074 + ], + "KeyItemFlags": [ + 3, + 26333 + ], + "KinglerPicBack": [ + 12, + 25505 + ], + "KinglerPicFront": [ + 12, + 24993 + ], + "KoffingPicBack": [ + 10, + 26682 + ], + "KoffingPicFront": [ + 10, + 26386 + ], + "KogaPic": [ + 19, + 28609 + ], + "KrabbyPicBack": [ + 11, + 18557 + ], + "KrabbyPicFront": [ + 11, + 18306 + ], + "LancePic": [ + 19, + 31519 + ], + "LancesRoomLanceText": [ + 22, + 25407 + ], + "LancesRoom_h": [ + 22, + 25149 + ], + "LaprasPicBack": [ + 9, + 26290 + ], + "LaprasPicFront": [ + 9, + 25833 + ], + "LassPic": [ + 19, + 16896 + ], + "LavenderCuboneHouseBrunetteGirlText": [ + 7, + 21195 + ], + "LavenderCuboneHouseCuboneText": [ + 7, + 21182 + ], + "LavenderCuboneHouse_h": [ + 7, + 21162 + ], + "LavenderMartBaldingGuyText": [ + 23, + 18455 + ], + "LavenderMartClerkText": [ + 0, + 9061 + ], + "LavenderMartCooltrainerMText": [ + 23, + 18460 + ], + "LavenderMart_h": [ + 23, + 18434 + ], + "LavenderPokecenterChanseyText": [ + 23, + 18372 + ], + "LavenderPokecenterGentlemanText": [ + 23, + 18362 + ], + "LavenderPokecenterLinkReceptionistText": [ + 23, + 18360 + ], + "LavenderPokecenterLittleGirlText": [ + 23, + 18367 + ], + "LavenderPokecenterNurseText": [ + 23, + 18361 + ], + "LavenderPokecenter_h": [ + 23, + 18332 + ], + "LavenderTownCooltrainerMText": [ + 17, + 16715 + ], + "LavenderTownLittleGirlText": [ + 17, + 16672 + ], + "LavenderTownPokemonHouseSignText": [ + 17, + 16735 + ], + "LavenderTownPokemonTowerSignText": [ + 17, + 16740 + ], + "LavenderTownSignText": [ + 17, + 16725 + ], + "LavenderTownSilphScopeSignText": [ + 17, + 16730 + ], + "LavenderTownSuperNerdText": [ + 17, + 16720 + ], + "LavenderTown_h": [ + 17, + 16384 + ], + "LedgeHoppingShadow": [ + 6, + 26771 + ], + "LickitungPicBack": [ + 9, + 22048 + ], + "LickitungPicFront": [ + 9, + 21604 + ], + "LoreleiPic": [ + 19, + 30454 + ], + "LoreleisRoomLoreleiDontRunAwayText": [ + 29, + 23291 + ], + "LoreleisRoomLoreleiText": [ + 29, + 23266 + ], + "LoreleisRoom_h": [ + 29, + 23023 + ], + "LtSurgePic": [ + 19, + 27936 + ], + "MachampPicBack": [ + 12, + 20968 + ], + "MachampPicFront": [ + 12, + 20409 + ], + "MachokePicBack": [ + 10, + 20540 + ], + "MachokePicFront": [ + 10, + 20115 + ], + "MachopPicBack": [ + 11, + 28316 + ], + "MachopPicFront": [ + 11, + 28033 + ], + "MagikarpPicBack": [ + 12, + 24312 + ], + "MagikarpPicFront": [ + 12, + 23942 + ], + "MagmarPicBack": [ + 10, + 25090 + ], + "MagmarPicFront": [ + 10, + 24660 + ], + "MagnemitePicBack": [ + 13, + 23969 + ], + "MagnemitePicFront": [ + 13, + 23762 + ], + "MagnetonPicBack": [ + 10, + 26255 + ], + "MagnetonPicFront": [ + 10, + 25865 + ], + "MankeyPicBack": [ + 10, + 27188 + ], + "MankeyPicFront": [ + 10, + 26839 + ], + "MarowakPicBack": [ + 12, + 28694 + ], + "MarowakPicFront": [ + 12, + 28322 + ], + "MartSignText": [ + 0, + 9189 + ], + "MelanieBulbasaurText": [ + 42, + 28911 + ], + "MelanieOddishText": [ + 42, + 28937 + ], + "MelanieSandshrewText": [ + 42, + 28957 + ], + "MelanieText1": [ + 42, + 28659 + ], + "MelanieText2": [ + 42, + 28778 + ], + "MelanieText3": [ + 42, + 28826 + ], + "MelanieText4": [ + 42, + 28859 + ], + "MelanieText5": [ + 42, + 28886 + ], + "MeowthPicBack": [ + 11, + 18218 + ], + "MeowthPicFront": [ + 11, + 17929 + ], + "MetapodPicBack": [ + 12, + 19694 + ], + "MetapodPicFront": [ + 12, + 19521 + ], + "MewBaseStats": [ + 14, + 21574 + ], + "MewPicBack": [ + 9, + 27365 + ], + "MewPicFront": [ + 9, + 27090 + ], + "MewtwoPicBack": [ + 12, + 23322 + ], + "MewtwoPicFront": [ + 12, + 22828 + ], + "MistyPic": [ + 19, + 27668 + ], + "MoltresPicBack": [ + 10, + 31909 + ], + "MoltresPicFront": [ + 10, + 31430 + ], + "MonPartyData": [ + 28, + 22970 + ], + "MonsterNames": [ + 58, + 16384 + ], + "MonsterPalettes": [ + 28, + 26913 + ], + "MoveAnimationTiles0": [ + 30, + 16951 + ], + "MoveAnimationTiles1": [ + 30, + 18215 + ], + "MoveAnimationTiles2": [ + 30, + 16951 + ], + "MoveAnimationTilesPointers": [ + 30, + 16939 + ], + "MoveNames": [ + 47, + 16384 + ], + "MoveSoundTable": [ + 30, + 23064 + ], + "Moves": [ + 14, + 16384 + ], + "MrFujisHouseLittleGirlText": [ + 7, + 20963 + ], + "MrFujisHouseMrFujiPokedexText": [ + 7, + 21101 + ], + "MrFujisHouseMrFujiText": [ + 7, + 21024 + ], + "MrFujisHouseNidorinoText": [ + 7, + 21011 + ], + "MrFujisHousePsyduckText": [ + 7, + 20998 + ], + "MrFujisHouseSuperNerdText": [ + 7, + 20928 + ], + "MrFujisHouse_h": [ + 7, + 20900 + ], + "MrMimePicBack": [ + 10, + 21103 + ], + "MrMimePicFront": [ + 10, + 20684 + ], + "MrPsychicsHouseMrPsychicText": [ + 7, + 22347 + ], + "MrPsychicsHouse_h": [ + 7, + 22330 + ], + "MtMoon1FBewareZubatSign": [ + 18, + 23168 + ], + "MtMoon1FCooltrainerF1Text": [ + 18, + 23029 + ], + "MtMoon1FCooltrainerF2Text": [ + 18, + 23041 + ], + "MtMoon1FHikerText": [ + 18, + 23017 + ], + "MtMoon1FSuperNerdText": [ + 18, + 23035 + ], + "MtMoon1FYoungster1Text": [ + 18, + 23023 + ], + "MtMoon1FYoungster2Text": [ + 18, + 23047 + ], + "MtMoon1FYoungster3Text": [ + 18, + 23053 + ], + "MtMoon1F_h": [ + 18, + 22867 + ], + "MtMoonB1FUnusedText": [ + 20, + 23178 + ], + "MtMoonB1F_h": [ + 20, + 23160 + ], + "MtMoonB2FDomeFossilText": [ + 18, + 24694 + ], + "MtMoonB2FHelixFossilText": [ + 18, + 24755 + ], + "MtMoonB2FJessieJamesText": [ + 18, + 24541 + ], + "MtMoonB2FRocket1Text": [ + 18, + 24672 + ], + "MtMoonB2FRocket2Text": [ + 18, + 24678 + ], + "MtMoonB2FRocket3Text": [ + 18, + 24684 + ], + "MtMoonB2FSuperNerdText": [ + 18, + 24603 + ], + "MtMoonB2FSuperNerdThenThisIsMineText": [ + 18, + 24864 + ], + "MtMoonB2FText12": [ + 18, + 24542 + ], + "MtMoonB2FText13": [ + 18, + 24580 + ], + "MtMoonB2FText14": [ + 18, + 24590 + ], + "MtMoonB2F_h": [ + 18, + 23678 + ], + "MtMoonPokecenterChanseyText": [ + 18, + 21222 + ], + "MtMoonPokecenterClipboardText": [ + 18, + 21216 + ], + "MtMoonPokecenterGentlemanText": [ + 18, + 21199 + ], + "MtMoonPokecenterLinkReceptionistText": [ + 18, + 21221 + ], + "MtMoonPokecenterMagikarpSalesmanText": [ + 18, + 21204 + ], + "MtMoonPokecenterNurseText": [ + 18, + 21193 + ], + "MtMoonPokecenterYoungsterText": [ + 18, + 21194 + ], + "MtMoonPokecenter_h": [ + 18, + 21161 + ], + "MukPicBack": [ + 12, + 24852 + ], + "MukPicFront": [ + 12, + 24459 + ], + "Museum1FGamblerText": [ + 23, + 16698 + ], + "Museum1FOldAmberText": [ + 23, + 16734 + ], + "Museum1FScientist1Text": [ + 23, + 16686 + ], + "Museum1FScientist2Text": [ + 23, + 16710 + ], + "Museum1FScientist3Text": [ + 23, + 16722 + ], + "Museum1F_h": [ + 23, + 16611 + ], + "Museum2FBrunetteGirlText": [ + 23, + 16865 + ], + "Museum2FGrampsText": [ + 23, + 16855 + ], + "Museum2FHikerText": [ + 23, + 16870 + ], + "Museum2FMoonStoneSignText": [ + 23, + 16930 + ], + "Museum2FScientistText": [ + 23, + 16860 + ], + "Museum2FSpaceShuttleSignText": [ + 23, + 16925 + ], + "Museum2FYoungsterText": [ + 23, + 16850 + ], + "Museum2F_h": [ + 23, + 16820 + ], + "NameRatersHouseNameRaterText": [ + 7, + 21342 + ], + "NameRatersHouse_h": [ + 7, + 21262 + ], + "NidokingPicBack": [ + 9, + 19614 + ], + "NidokingPicFront": [ + 9, + 19054 + ], + "NidoqueenPicBack": [ + 9, + 24611 + ], + "NidoqueenPicFront": [ + 9, + 24058 + ], + "NidoranFPicBack": [ + 9, + 23987 + ], + "NidoranFPicFront": [ + 9, + 23745 + ], + "NidoranMPicBack": [ + 9, + 18077 + ], + "NidoranMPicFront": [ + 9, + 17823 + ], + "NidorinaPicBack": [ + 13, + 22269 + ], + "NidorinaPicFront": [ + 13, + 21879 + ], + "NidorinoPicBack": [ + 13, + 21724 + ], + "NidorinoPicFront": [ + 13, + 21375 + ], + "NinetalesPicBack": [ + 11, + 19667 + ], + "NinetalesPicFront": [ + 11, + 19126 + ], + "NintendoCopyrightLogoGraphics": [ + 4, + 19528 + ], + "NothingWildMons": [ + 3, + 19849 + ], + "OaksLabEeveePokeBallText": [ + 7, + 18828 + ], + "OaksLabGirlText": [ + 7, + 19128 + ], + "OaksLabOak1Text": [ + 7, + 18882 + ], + "OaksLabOak2Text": [ + 7, + 19123 + ], + "OaksLabOakBePatientText": [ + 7, + 19188 + ], + "OaksLabOakChooseMonText": [ + 7, + 19158 + ], + "OaksLabOakDontGoAwayYetText": [ + 7, + 19344 + ], + "OaksLabOakGotPokedexText": [ + 7, + 19459 + ], + "OaksLabOakIHaveARequestText": [ + 7, + 19449 + ], + "OaksLabOakMyInventionPokedexText": [ + 7, + 19454 + ], + "OaksLabOakThatWasMyDreamText": [ + 7, + 19465 + ], + "OaksLabPikachuDislikesPokeballsText1": [ + 7, + 19399 + ], + "OaksLabPikachuDislikesPokeballsText2": [ + 7, + 19424 + ], + "OaksLabPlayerReceivedMonText": [ + 7, + 19263 + ], + "OaksLabPokedexText": [ + 7, + 19108 + ], + "OaksLabRivalFedUpWithWaitingText": [ + 7, + 19143 + ], + "OaksLabRivalGrampsText": [ + 7, + 19439 + ], + "OaksLabRivalIllTakeYouOnText": [ + 7, + 19359 + ], + "OaksLabRivalLeaveItAllToMeText": [ + 7, + 19470 + ], + "OaksLabRivalMyPokemonHasGrownStrongerText": [ + 7, + 19444 + ], + "OaksLabRivalReceivedMonText": [ + 7, + 19203 + ], + "OaksLabRivalSmellYouLaterText": [ + 7, + 19384 + ], + "OaksLabRivalText": [ + 7, + 18776 + ], + "OaksLabRivalWhatAboutMeText": [ + 7, + 19173 + ], + "OaksLabScientistText": [ + 7, + 19475 + ], + "OaksLab_h": [ + 7, + 17286 + ], + "OddishPicBack": [ + 13, + 27478 + ], + "OddishPicFront": [ + 13, + 27254 + ], + "OldManPicBack": [ + 61, + 17473 + ], + "OmanytePicBack": [ + 11, + 24517 + ], + "OmanytePicFront": [ + 11, + 24294 + ], + "OmastarPicBack": [ + 11, + 25017 + ], + "OmastarPicFront": [ + 11, + 24610 + ], + "OnixPicBack": [ + 10, + 17155 + ], + "OnixPicFront": [ + 10, + 16778 + ], + "PalletTownFisherText": [ + 6, + 20497 + ], + "PalletTownGirlText": [ + 6, + 20492 + ], + "PalletTownOakComeWithMe": [ + 6, + 20487 + ], + "PalletTownOakText": [ + 6, + 20410 + ], + "PalletTownOaksLabSignText": [ + 6, + 20502 + ], + "PalletTownPlayersHouseSignText": [ + 6, + 20512 + ], + "PalletTownRivalsHouseSignText": [ + 6, + 20517 + ], + "PalletTownSignText": [ + 6, + 20507 + ], + "PalletTown_h": [ + 6, + 17057 + ], + "ParasPicBack": [ + 11, + 29324 + ], + "ParasPicFront": [ + 11, + 29058 + ], + "ParasectPicBack": [ + 10, + 23198 + ], + "ParasectPicFront": [ + 10, + 22796 + ], + "PersianPicBack": [ + 12, + 28183 + ], + "PersianPicFront": [ + 12, + 27752 + ], + "PewterCityCooltrainerFText": [ + 6, + 21604 + ], + "PewterCityCooltrainerMText": [ + 6, + 21609 + ], + "PewterCityGymSignText": [ + 6, + 21811 + ], + "PewterCityMuseumSignText": [ + 6, + 21806 + ], + "PewterCityPoliceNoticeSignText": [ + 6, + 21801 + ], + "PewterCitySignText": [ + 6, + 21816 + ], + "PewterCitySuperNerd1ItsRightHereText": [ + 6, + 21693 + ], + "PewterCitySuperNerd1Text": [ + 6, + 21614 + ], + "PewterCitySuperNerd2Text": [ + 6, + 21698 + ], + "PewterCityTrainerTipsText": [ + 6, + 21796 + ], + "PewterCityYoungsterGoTakeOnBrockText": [ + 6, + 21791 + ], + "PewterCityYoungsterText": [ + 6, + 21747 + ], + "PewterCity_h": [ + 6, + 17754 + ], + "PewterGymBrockText": [ + 23, + 17195 + ], + "PewterGymBrockWaitTakeThisText": [ + 23, + 17285 + ], + "PewterGymCooltrainerMText": [ + 23, + 17315 + ], + "PewterGymGuideText": [ + 23, + 17340 + ], + "PewterGymReceivedTM34Text": [ + 23, + 17290 + ], + "PewterGymTM34NoRoomText": [ + 23, + 17300 + ], + "PewterGym_h": [ + 23, + 16983 + ], + "PewterMartClerkText": [ + 0, + 9027 + ], + "PewterMartSuperNerdText": [ + 29, + 17672 + ], + "PewterMartYoungsterText": [ + 29, + 17657 + ], + "PewterMart_h": [ + 29, + 17630 + ], + "PewterNidoranHouseLittleBoyText": [ + 7, + 20054 + ], + "PewterNidoranHouseMiddleAgedManText": [ + 7, + 20059 + ], + "PewterNidoranHouseNidoranText": [ + 7, + 20038 + ], + "PewterNidoranHouse_h": [ + 7, + 20016 + ], + "PewterPokecenterChanseyText": [ + 23, + 17585 + ], + "PewterPokecenterCooltrainerFText": [ + 23, + 17573 + ], + "PewterPokecenterGentlemanText": [ + 23, + 17555 + ], + "PewterPokecenterJigglypuffText": [ + 23, + 17560 + ], + "PewterPokecenterLinkReceptionistText": [ + 23, + 17572 + ], + "PewterPokecenterNurseText": [ + 23, + 17554 + ], + "PewterPokecenter_h": [ + 23, + 17518 + ], + "PewterSpeechHouseGamblerText": [ + 7, + 20121 + ], + "PewterSpeechHouseYoungsterText": [ + 7, + 20126 + ], + "PewterSpeechHouse_h": [ + 7, + 20102 + ], + "PickUpItemText": [ + 0, + 9199 + ], + "PidgeotPicBack": [ + 12, + 31441 + ], + "PidgeotPicFront": [ + 12, + 30866 + ], + "PidgeottoPicBack": [ + 12, + 30763 + ], + "PidgeottoPicFront": [ + 12, + 30406 + ], + "PidgeyPicBack": [ + 10, + 18150 + ], + "PidgeyPicFront": [ + 10, + 17909 + ], + "PikachuCriesPointerTable": [ + 60, + 16526 + ], + "PikachuPicBack": [ + 11, + 20041 + ], + "PikachuPicFront": [ + 11, + 19797 + ], + "PinsirPicBack": [ + 9, + 31407 + ], + "PinsirPicFront": [ + 9, + 30868 + ], + "PlantIconFrame1": [ + 28, + 23078 + ], + "PlantIconFrame2": [ + 28, + 23142 + ], + "PlayerCharacterTitleGraphics": [ + 4, + 21048 + ], + "PokeCenterFlashingMonitorAndHealBall": [ + 28, + 17675 + ], + "PokeCenterSignText": [ + 0, + 9194 + ], + "PokeballTileGraphics": [ + 14, + 27176 + ], + "PokedexEntryPointers": [ + 16, + 17675 + ], + "PokedexTileGraphics": [ + 4, + 20504 + ], + "PokemaniacPic": [ + 19, + 18121 + ], + "PokemonFanClubChairmanText": [ + 22, + 23357 + ], + "PokemonFanClubClefairyFanText": [ + 22, + 23199 + ], + "PokemonFanClubClefairyText": [ + 22, + 23311 + ], + "PokemonFanClubReceptionistText": [ + 22, + 23603 + ], + "PokemonFanClubSeelFanText": [ + 22, + 23255 + ], + "PokemonFanClubSeelText": [ + 22, + 23334 + ], + "PokemonFanClub_h": [ + 22, + 23040 + ], + "PokemonLogoCornerGraphics": [ + 61, + 20011 + ], + "PokemonLogoGraphics": [ + 61, + 18171 + ], + "PokemonMansion1FScientistText": [ + 17, + 17378 + ], + "PokemonMansion1FSwitchText": [ + 17, + 17403 + ], + "PokemonMansion1F_h": [ + 17, + 17220 + ], + "PokemonMansion2FDiary1Text": [ + 20, + 24742 + ], + "PokemonMansion2FDiary2Text": [ + 20, + 24747 + ], + "PokemonMansion2FSuperNerdText": [ + 20, + 24717 + ], + "PokemonMansion2FSwitchText": [ + 20, + 24752 + ], + "PokemonMansion2F_h": [ + 20, + 24565 + ], + "PokemonMansion3FDiaryText": [ + 20, + 25354 + ], + "PokemonMansion3FScientistText": [ + 20, + 25314 + ], + "PokemonMansion3FSuperNerdText": [ + 20, + 25304 + ], + "PokemonMansion3F_h": [ + 20, + 25099 + ], + "PokemonMansionB1FBurglarText": [ + 20, + 25738 + ], + "PokemonMansionB1FDiaryText": [ + 20, + 25788 + ], + "PokemonMansionB1FScientistText": [ + 20, + 25748 + ], + "PokemonMansionB1F_h": [ + 20, + 25558 + ], + "PokemonTower1FBaldingGuyText": [ + 24, + 17476 + ], + "PokemonTower1FChannelerText": [ + 24, + 17486 + ], + "PokemonTower1FGirlText": [ + 24, + 17481 + ], + "PokemonTower1FMiddleAgedWomanText": [ + 24, + 17471 + ], + "PokemonTower1FReceptionistText": [ + 24, + 17466 + ], + "PokemonTower1F_h": [ + 24, + 17440 + ], + "PokemonTower2FChannelerText": [ + 24, + 17968 + ], + "PokemonTower2FRivalText": [ + 24, + 17886 + ], + "PokemonTower2F_h": [ + 24, + 17639 + ], + "PokemonTower3FChanneler1Text": [ + 24, + 18177 + ], + "PokemonTower3FChanneler2Text": [ + 24, + 18187 + ], + "PokemonTower3FChanneler3Text": [ + 24, + 18197 + ], + "PokemonTower3F_h": [ + 24, + 18095 + ], + "PokemonTower4FChanneler1Text": [ + 24, + 18479 + ], + "PokemonTower4FChanneler2Text": [ + 24, + 18489 + ], + "PokemonTower4FChanneler3Text": [ + 24, + 18499 + ], + "PokemonTower4F_h": [ + 24, + 18393 + ], + "PokemonTower5FChanneler1Text": [ + 24, + 18889 + ], + "PokemonTower5FChanneler2Text": [ + 24, + 18894 + ], + "PokemonTower5FChanneler3Text": [ + 24, + 18919 + ], + "PokemonTower5FChanneler4Text": [ + 24, + 18944 + ], + "PokemonTower5FChanneler5Text": [ + 24, + 18969 + ], + "PokemonTower5FPurifiedZoneText": [ + 24, + 18994 + ], + "PokemonTower5F_h": [ + 24, + 18709 + ], + "PokemonTower6FBeGoneText": [ + 24, + 19525 + ], + "PokemonTower6FChanneler1Text": [ + 24, + 19411 + ], + "PokemonTower6FChanneler2Text": [ + 24, + 19421 + ], + "PokemonTower6FChanneler3Text": [ + 24, + 19431 + ], + "PokemonTower6FMarowakDepartedText": [ + 24, + 19441 + ], + "PokemonTower6F_h": [ + 24, + 19154 + ], + "PokemonTower7FJessieJamesText": [ + 24, + 20224 + ], + "PokemonTower7FMrFujiText": [ + 24, + 20286 + ], + "PokemonTower7FText4": [ + 24, + 20225 + ], + "PokemonTower7FText5": [ + 24, + 20263 + ], + "PokemonTower7FText6": [ + 24, + 20273 + ], + "PokemonTower7F_h": [ + 24, + 19688 + ], + "PoliwagPicBack": [ + 10, + 30812 + ], + "PoliwagPicFront": [ + 10, + 30585 + ], + "PoliwhirlPicBack": [ + 11, + 29798 + ], + "PoliwhirlPicFront": [ + 11, + 29442 + ], + "PoliwrathPicBack": [ + 11, + 30385 + ], + "PoliwrathPicFront": [ + 11, + 29897 + ], + "PonytaPicBack": [ + 13, + 20171 + ], + "PonytaPicFront": [ + 13, + 19228 + ], + "PorygonPicBack": [ + 13, + 23046 + ], + "PorygonPicFront": [ + 13, + 22792 + ], + "PowerPlantElectrode1Text": [ + 7, + 23696 + ], + "PowerPlantElectrode2Text": [ + 7, + 23714 + ], + "PowerPlantVoltorb1Text": [ + 7, + 23678 + ], + "PowerPlantVoltorb2Text": [ + 7, + 23684 + ], + "PowerPlantVoltorb3Text": [ + 7, + 23690 + ], + "PowerPlantVoltorb4Text": [ + 7, + 23702 + ], + "PowerPlantVoltorb5Text": [ + 7, + 23708 + ], + "PowerPlantVoltorb6Text": [ + 7, + 23720 + ], + "PowerPlantZapdosText": [ + 7, + 23726 + ], + "PowerPlant_h": [ + 7, + 23492 + ], + "PrimeapePicBack": [ + 12, + 17490 + ], + "PrimeapePicFront": [ + 12, + 17020 + ], + "ProfOakPic": [ + 19, + 24890 + ], + "PsychicPic": [ + 19, + 22312 + ], + "PsyduckPicBack": [ + 10, + 23591 + ], + "PsyduckPicFront": [ + 10, + 23324 + ], + "QuadrupedIconFrame1": [ + 28, + 23206 + ], + "QuadrupedIconFrame2": [ + 28, + 23270 + ], + "QuestionEmote": [ + 16, + 21029 + ], + "RaichuPicBack": [ + 11, + 20657 + ], + "RaichuPicFront": [ + 11, + 20161 + ], + "RapidashPicBack": [ + 13, + 20307 + ], + "RapidashPicFront": [ + 13, + 19612 + ], + "RaticatePicBack": [ + 13, + 21258 + ], + "RaticatePicFront": [ + 13, + 20785 + ], + "RattataPicBack": [ + 13, + 20728 + ], + "RattataPicFront": [ + 13, + 20483 + ], + "RedBikeSprite": [ + 5, + 17393 + ], + "RedFishingRodTiles": [ + 30, + 25082 + ], + "RedFishingTilesBack": [ + 30, + 25018 + ], + "RedFishingTilesFront": [ + 30, + 24986 + ], + "RedFishingTilesSide": [ + 30, + 25050 + ], + "RedPicBack": [ + 61, + 17329 + ], + "RedPicFront": [ + 4, + 23191 + ], + "RedsHouse1FMomText": [ + 18, + 16650 + ], + "RedsHouse1FTVText": [ + 18, + 16662 + ], + "RedsHouse1F_h": [ + 18, + 16630 + ], + "RedsHouse2F_h": [ + 23, + 16548 + ], + "RhydonPicBack": [ + 9, + 16922 + ], + "RhydonPicFront": [ + 9, + 16384 + ], + "RhyhornPicBack": [ + 9, + 25655 + ], + "RhyhornPicFront": [ + 9, + 25193 + ], + "Rival1Pic": [ + 19, + 24649 + ], + "Rival2Pic": [ + 19, + 29882 + ], + "Rival3Pic": [ + 19, + 30177 + ], + "RockTunnel1FCooltrainerF1Text": [ + 17, + 17939 + ], + "RockTunnel1FCooltrainerF2Text": [ + 17, + 17945 + ], + "RockTunnel1FCooltrainerF3Text": [ + 17, + 17951 + ], + "RockTunnel1FHiker1Text": [ + 17, + 17915 + ], + "RockTunnel1FHiker2Text": [ + 17, + 17921 + ], + "RockTunnel1FHiker3Text": [ + 17, + 17927 + ], + "RockTunnel1FSignText": [ + 17, + 18066 + ], + "RockTunnel1FSuperNerdText": [ + 17, + 17933 + ], + "RockTunnel1F_h": [ + 17, + 17777 + ], + "RockTunnelB1FCooltrainerF1Text": [ + 17, + 25316 + ], + "RockTunnelB1FCooltrainerF2Text": [ + 17, + 25366 + ], + "RockTunnelB1FHiker1Text": [ + 17, + 25326 + ], + "RockTunnelB1FHiker2Text": [ + 17, + 25356 + ], + "RockTunnelB1FHiker3Text": [ + 17, + 25376 + ], + "RockTunnelB1FSuperNerd1Text": [ + 17, + 25336 + ], + "RockTunnelB1FSuperNerd2Text": [ + 17, + 25346 + ], + "RockTunnelB1FSuperNerd3Text": [ + 17, + 25386 + ], + "RockTunnelB1F_h": [ + 17, + 25166 + ], + "RockTunnelPokecenterChanseyText": [ + 18, + 21336 + ], + "RockTunnelPokecenterFisherText": [ + 18, + 21330 + ], + "RockTunnelPokecenterGentlemanText": [ + 18, + 21325 + ], + "RockTunnelPokecenterLinkReceptionistText": [ + 18, + 21335 + ], + "RockTunnelPokecenterNurseText": [ + 18, + 21324 + ], + "RockTunnelPokecenter_h": [ + 18, + 21296 + ], + "RockerPic": [ + 19, + 22595 + ], + "RocketHideoutB1FRocket1Text": [ + 17, + 19711 + ], + "RocketHideoutB1FRocket2Text": [ + 17, + 19721 + ], + "RocketHideoutB1FRocket3Text": [ + 17, + 19731 + ], + "RocketHideoutB1FRocket4Text": [ + 17, + 19741 + ], + "RocketHideoutB1FRocket5Text": [ + 17, + 19751 + ], + "RocketHideoutB1F_h": [ + 17, + 19550 + ], + "RocketHideoutB2FRocketText": [ + 17, + 20862 + ], + "RocketHideoutB2F_h": [ + 17, + 20155 + ], + "RocketHideoutB3FRocket1Text": [ + 17, + 21435 + ], + "RocketHideoutB3FRocket2Text": [ + 17, + 21460 + ], + "RocketHideoutB3F_h": [ + 17, + 21177 + ], + "RocketHideoutB4FGiovanniHopeWeMeetAgainText": [ + 17, + 22542 + ], + "RocketHideoutB4FGiovanniText": [ + 17, + 22468 + ], + "RocketHideoutB4FJessieJamesText": [ + 17, + 22406 + ], + "RocketHideoutB4FRocketText": [ + 17, + 22547 + ], + "RocketHideoutB4FText11": [ + 17, + 22407 + ], + "RocketHideoutB4FText12": [ + 17, + 22445 + ], + "RocketHideoutB4FText13": [ + 17, + 22455 + ], + "RocketHideoutB4F_h": [ + 17, + 21745 + ], + "RocketHideoutElevatorText": [ + 17, + 22977 + ], + "RocketHideoutElevator_h": [ + 17, + 22872 + ], + "RocketPic": [ + 19, + 25722 + ], + "Route10CooltrainerF1Text": [ + 22, + 21139 + ], + "Route10CooltrainerF2Text": [ + 22, + 21189 + ], + "Route10Hiker1Text": [ + 22, + 21089 + ], + "Route10Hiker2Text": [ + 22, + 21164 + ], + "Route10PowerPlantSignText": [ + 22, + 21219 + ], + "Route10RockTunnelSignText": [ + 22, + 21214 + ], + "Route10SuperNerd1Text": [ + 22, + 21064 + ], + "Route10SuperNerd2Text": [ + 22, + 21114 + ], + "Route10_h": [ + 22, + 17108 + ], + "Route11DiglettsCaveSignText": [ + 22, + 21642 + ], + "Route11Gambler1Text": [ + 22, + 21392 + ], + "Route11Gambler2Text": [ + 22, + 21417 + ], + "Route11Gambler3Text": [ + 22, + 21517 + ], + "Route11Gambler4Text": [ + 22, + 21542 + ], + "Route11Gate1FGuardText": [ + 18, + 21415 + ], + "Route11Gate1F_h": [ + 18, + 21398 + ], + "Route11Gate2FLeftBinocularsText": [ + 18, + 21567 + ], + "Route11Gate2FOaksAideText": [ + 18, + 21507 + ], + "Route11Gate2FRightBinocularsText": [ + 18, + 21605 + ], + "Route11Gate2FYoungsterText": [ + 18, + 21493 + ], + "Route11Gate2F_h": [ + 18, + 21470 + ], + "Route11SuperNerd1Text": [ + 22, + 21467 + ], + "Route11SuperNerd2Text": [ + 22, + 21592 + ], + "Route11Youngster1Text": [ + 22, + 21442 + ], + "Route11Youngster2Text": [ + 22, + 21492 + ], + "Route11Youngster3Text": [ + 22, + 21567 + ], + "Route11Youngster4Text": [ + 22, + 21617 + ], + "Route11_h": [ + 22, + 17598 + ], + "Route12CooltrainerMText": [ + 22, + 21955 + ], + "Route12Fisher1Text": [ + 22, + 21905 + ], + "Route12Fisher2Text": [ + 22, + 21930 + ], + "Route12Fisher3Text": [ + 22, + 22005 + ], + "Route12Fisher4Text": [ + 22, + 22030 + ], + "Route12Fisher5Text": [ + 22, + 22055 + ], + "Route12Gate1FGuardText": [ + 18, + 21664 + ], + "Route12Gate1F_h": [ + 18, + 21647 + ], + "Route12Gate2FBrunetteGirlText": [ + 18, + 21760 + ], + "Route12Gate2FLeftBinocularsText": [ + 18, + 21832 + ], + "Route12Gate2FRightBinocularsText": [ + 18, + 21844 + ], + "Route12Gate2F_h": [ + 18, + 21739 + ], + "Route12SignText": [ + 22, + 22080 + ], + "Route12SnorlaxCalmedDownText": [ + 22, + 21900 + ], + "Route12SnorlaxText": [ + 22, + 21890 + ], + "Route12SnorlaxWokeUpText": [ + 22, + 21895 + ], + "Route12SportFishingSignText": [ + 22, + 22085 + ], + "Route12SuperNerdText": [ + 22, + 21980 + ], + "Route12SuperRodHouseFishingGuruText": [ + 21, + 25782 + ], + "Route12SuperRodHouse_h": [ + 21, + 25765 + ], + "Route12_h": [ + 22, + 18029 + ], + "Route13Beauty1Text": [ + 21, + 22900 + ], + "Route13Beauty2Text": [ + 21, + 22925 + ], + "Route13BikerText": [ + 21, + 22950 + ], + "Route13CooltrainerF1Text": [ + 21, + 22775 + ], + "Route13CooltrainerF2Text": [ + 21, + 22800 + ], + "Route13CooltrainerF3Text": [ + 21, + 22825 + ], + "Route13CooltrainerF4Text": [ + 21, + 22850 + ], + "Route13CooltrainerM1Text": [ + 21, + 22750 + ], + "Route13CooltrainerM2Text": [ + 21, + 22875 + ], + "Route13CooltrainerM3Text": [ + 21, + 22975 + ], + "Route13SignText": [ + 21, + 23010 + ], + "Route13TrainerTips1Text": [ + 21, + 23000 + ], + "Route13TrainerTips2Text": [ + 21, + 23005 + ], + "Route13_h": [ + 21, + 18452 + ], + "Route14Biker1Text": [ + 21, + 23333 + ], + "Route14Biker2Text": [ + 21, + 23358 + ], + "Route14Biker3Text": [ + 21, + 23383 + ], + "Route14Biker4Text": [ + 21, + 23408 + ], + "Route14CooltrainerM1Text": [ + 21, + 23183 + ], + "Route14CooltrainerM2Text": [ + 21, + 23208 + ], + "Route14CooltrainerM3Text": [ + 21, + 23233 + ], + "Route14CooltrainerM4Text": [ + 21, + 23258 + ], + "Route14CooltrainerM5Text": [ + 21, + 23283 + ], + "Route14CooltrainerM6Text": [ + 21, + 23308 + ], + "Route14SignText": [ + 21, + 23433 + ], + "Route14_h": [ + 21, + 18849 + ], + "Route15Beauty1Text": [ + 22, + 22284 + ], + "Route15Beauty2Text": [ + 22, + 22290 + ], + "Route15Biker1Text": [ + 22, + 22296 + ], + "Route15Biker2Text": [ + 22, + 22302 + ], + "Route15CooltrainerF1Text": [ + 22, + 22260 + ], + "Route15CooltrainerF2Text": [ + 22, + 22266 + ], + "Route15CooltrainerF3Text": [ + 22, + 22308 + ], + "Route15CooltrainerF4Text": [ + 22, + 22314 + ], + "Route15CooltrainerM1Text": [ + 22, + 22272 + ], + "Route15CooltrainerM2Text": [ + 22, + 22278 + ], + "Route15Gate1FGuardText": [ + 18, + 21918 + ], + "Route15Gate1F_h": [ + 18, + 21901 + ], + "Route15Gate2FBinocularsText": [ + 18, + 22056 + ], + "Route15Gate2FOaksAideText": [ + 18, + 21992 + ], + "Route15Gate2F_h": [ + 18, + 21973 + ], + "Route15SignText": [ + 22, + 22474 + ], + "Route15_h": [ + 22, + 18732 + ], + "Route16Biker1Text": [ + 22, + 22708 + ], + "Route16Biker2Text": [ + 22, + 22733 + ], + "Route16Biker3Text": [ + 22, + 22758 + ], + "Route16Biker4Text": [ + 22, + 22783 + ], + "Route16Biker5Text": [ + 22, + 22808 + ], + "Route16Biker6Text": [ + 22, + 22833 + ], + "Route16CyclingRoadSignText": [ + 22, + 22873 + ], + "Route16FlyHouseBrunetteGirlText": [ + 7, + 24329 + ], + "Route16FlyHouseFearowText": [ + 7, + 24394 + ], + "Route16FlyHouse_h": [ + 7, + 24310 + ], + "Route16Gate1FGamblerText": [ + 18, + 22301 + ], + "Route16Gate1FGuardText": [ + 18, + 22263 + ], + "Route16Gate1FGuardWaitUpText": [ + 18, + 22296 + ], + "Route16Gate1F_h": [ + 18, + 22089 + ], + "Route16Gate2FLeftBinocularsText": [ + 18, + 22475 + ], + "Route16Gate2FLittleBoyText": [ + 18, + 22445 + ], + "Route16Gate2FLittleGirlText": [ + 18, + 22460 + ], + "Route16Gate2FRightBinocularsText": [ + 18, + 22487 + ], + "Route16Gate2F_h": [ + 18, + 22422 + ], + "Route16SignText": [ + 22, + 22878 + ], + "Route16SnorlaxReturnedToMountainsText": [ + 22, + 22868 + ], + "Route16SnorlaxText": [ + 22, + 22858 + ], + "Route16SnorlaxWokeUpText": [ + 22, + 22863 + ], + "Route16_h": [ + 22, + 19162 + ], + "Route17Biker10Text": [ + 21, + 23841 + ], + "Route17Biker1Text": [ + 21, + 23616 + ], + "Route17Biker2Text": [ + 21, + 23641 + ], + "Route17Biker3Text": [ + 21, + 23666 + ], + "Route17Biker4Text": [ + 21, + 23691 + ], + "Route17Biker5Text": [ + 21, + 23716 + ], + "Route17Biker6Text": [ + 21, + 23741 + ], + "Route17Biker7Text": [ + 21, + 23766 + ], + "Route17Biker8Text": [ + 21, + 23791 + ], + "Route17Biker9Text": [ + 21, + 23816 + ], + "Route17CyclingRoadEndsSignText": [ + 21, + 23891 + ], + "Route17NoticeSign1Text": [ + 21, + 23866 + ], + "Route17NoticeSign2Text": [ + 21, + 23886 + ], + "Route17SignText": [ + 21, + 23881 + ], + "Route17TrainerTips1Text": [ + 21, + 23871 + ], + "Route17TrainerTips2Text": [ + 21, + 23876 + ], + "Route17_h": [ + 21, + 19240 + ], + "Route18CooltrainerM1Text": [ + 22, + 22955 + ], + "Route18CooltrainerM2Text": [ + 22, + 22980 + ], + "Route18CooltrainerM3Text": [ + 22, + 23005 + ], + "Route18CyclingRoadSignText": [ + 22, + 23035 + ], + "Route18Gate1FGuardExcuseMeText": [ + 18, + 22729 + ], + "Route18Gate1FGuardText": [ + 18, + 22696 + ], + "Route18Gate1F_h": [ + 18, + 22529 + ], + "Route18Gate2FCookText": [ + 18, + 22805 + ], + "Route18Gate2FLeftBinocularsText": [ + 18, + 22819 + ], + "Route18Gate2FRightBinocularsText": [ + 18, + 22831 + ], + "Route18Gate2F_h": [ + 18, + 22784 + ], + "Route18SignText": [ + 22, + 23030 + ], + "Route18_h": [ + 22, + 19512 + ], + "Route19CooltrainerM1Text": [ + 21, + 24064 + ], + "Route19CooltrainerM2Text": [ + 21, + 24070 + ], + "Route19SignText": [ + 21, + 24278 + ], + "Route19Swimmer1Text": [ + 21, + 24076 + ], + "Route19Swimmer2Text": [ + 21, + 24082 + ], + "Route19Swimmer3Text": [ + 21, + 24088 + ], + "Route19Swimmer4Text": [ + 21, + 24094 + ], + "Route19Swimmer5Text": [ + 21, + 24100 + ], + "Route19Swimmer6Text": [ + 21, + 24106 + ], + "Route19Swimmer7Text": [ + 21, + 24112 + ], + "Route19Swimmer8Text": [ + 21, + 24118 + ], + "Route19_h": [ + 21, + 20096 + ], + "Route1SignText": [ + 7, + 17274 + ], + "Route1Youngster1Text": [ + 7, + 17250 + ], + "Route1Youngster2Text": [ + 7, + 17262 + ], + "Route1_h": [ + 7, + 16579 + ], + "Route20CooltrainerMText": [ + 20, + 19951 + ], + "Route20SeafoamIslandsSignText": [ + 20, + 20141 + ], + "Route20Swimmer1Text": [ + 20, + 19891 + ], + "Route20Swimmer2Text": [ + 20, + 19901 + ], + "Route20Swimmer3Text": [ + 20, + 19911 + ], + "Route20Swimmer4Text": [ + 20, + 19921 + ], + "Route20Swimmer5Text": [ + 20, + 19931 + ], + "Route20Swimmer6Text": [ + 20, + 19941 + ], + "Route20Swimmer7Text": [ + 20, + 19961 + ], + "Route20Swimmer8Text": [ + 20, + 19971 + ], + "Route20Swimmer9Text": [ + 20, + 19981 + ], + "Route20_h": [ + 20, + 16625 + ], + "Route21Fisher1Text": [ + 21, + 24435 + ], + "Route21Fisher2Text": [ + 21, + 24445 + ], + "Route21Fisher3Text": [ + 21, + 24505 + ], + "Route21Fisher4Text": [ + 21, + 24515 + ], + "Route21Swimmer1Text": [ + 21, + 24455 + ], + "Route21Swimmer2Text": [ + 21, + 24465 + ], + "Route21Swimmer3Text": [ + 21, + 24475 + ], + "Route21Swimmer4Text": [ + 21, + 24485 + ], + "Route21Swimmer5Text": [ + 21, + 24495 + ], + "Route21_h": [ + 21, + 20495 + ], + "Route22GateGuardText": [ + 7, + 24561 + ], + "Route22Gate_h": [ + 7, + 24449 + ], + "Route22PokemonLeagueSignText": [ + 20, + 20871 + ], + "Route22Rival1Text": [ + 20, + 20847 + ], + "Route22Rival2Text": [ + 20, + 20859 + ], + "Route22_h": [ + 20, + 16384 + ], + "Route23Guard1Text": [ + 20, + 21184 + ], + "Route23Guard2Text": [ + 20, + 21193 + ], + "Route23Guard3Text": [ + 20, + 21220 + ], + "Route23Guard4Text": [ + 20, + 21229 + ], + "Route23Guard5Text": [ + 20, + 21238 + ], + "Route23Swimmer1Text": [ + 20, + 21202 + ], + "Route23Swimmer2Text": [ + 20, + 21211 + ], + "Route23VictoryRoadGateSignText": [ + 20, + 21345 + ], + "Route23_h": [ + 20, + 17215 + ], + "Route24CooltrainerF1Text": [ + 20, + 21764 + ], + "Route24CooltrainerF2Text": [ + 20, + 21784 + ], + "Route24CooltrainerM1Text": [ + 20, + 21599 + ], + "Route24CooltrainerM2Text": [ + 20, + 21744 + ], + "Route24CooltrainerM3Text": [ + 20, + 21754 + ], + "Route24CooltrainerM4Text": [ + 20, + 21894 + ], + "Route24Youngster1Text": [ + 20, + 21774 + ], + "Route24Youngster2Text": [ + 20, + 21794 + ], + "Route24_h": [ + 20, + 18050 + ], + "Route25BillSignText": [ + 20, + 22471 + ], + "Route25CooltrainerF1Text": [ + 20, + 22276 + ], + "Route25CooltrainerF2Text": [ + 20, + 22296 + ], + "Route25CooltrainerMText": [ + 20, + 22266 + ], + "Route25Hiker1Text": [ + 20, + 22306 + ], + "Route25Hiker2Text": [ + 20, + 22316 + ], + "Route25Hiker3Text": [ + 20, + 22326 + ], + "Route25Youngster1Text": [ + 20, + 22246 + ], + "Route25Youngster2Text": [ + 20, + 22256 + ], + "Route25Youngster3Text": [ + 20, + 22286 + ], + "Route25_h": [ + 20, + 18337 + ], + "Route2DiglettsCaveSignText": [ + 21, + 21767 + ], + "Route2GateOaksAideText": [ + 23, + 21733 + ], + "Route2GateYoungsterText": [ + 23, + 21797 + ], + "Route2Gate_h": [ + 23, + 21714 + ], + "Route2SignText": [ + 21, + 21762 + ], + "Route2TradeHouseGameboyKidText": [ + 7, + 22531 + ], + "Route2TradeHouseScientistText": [ + 7, + 22526 + ], + "Route2TradeHouse_h": [ + 7, + 22507 + ], + "Route2_h": [ + 21, + 16384 + ], + "Route3CooltrainerF1Text": [ + 21, + 21969 + ], + "Route3CooltrainerF2Text": [ + 21, + 22019 + ], + "Route3CooltrainerF3Text": [ + 21, + 22094 + ], + "Route3SignText": [ + 21, + 22119 + ], + "Route3SuperNerdText": [ + 21, + 21914 + ], + "Route3Youngster1Text": [ + 21, + 21919 + ], + "Route3Youngster2Text": [ + 21, + 21944 + ], + "Route3Youngster3Text": [ + 21, + 21994 + ], + "Route3Youngster4Text": [ + 21, + 22044 + ], + "Route3Youngster5Text": [ + 21, + 22069 + ], + "Route3_h": [ + 21, + 16878 + ], + "Route4CooltrainerF1Text": [ + 21, + 22174 + ], + "Route4CooltrainerF2Text": [ + 21, + 22179 + ], + "Route4MtMoonSignText": [ + 21, + 22204 + ], + "Route4SignText": [ + 21, + 22209 + ], + "Route4_h": [ + 21, + 17304 + ], + "Route5Gate_h": [ + 7, + 22577 + ], + "Route5UndergroundPathSignText": [ + 21, + 22219 + ], + "Route5_h": [ + 21, + 17801 + ], + "Route6CooltrainerF1Text": [ + 22, + 20432 + ], + "Route6CooltrainerF2Text": [ + 22, + 20507 + ], + "Route6CooltrainerM1Text": [ + 22, + 20407 + ], + "Route6CooltrainerM2Text": [ + 22, + 20482 + ], + "Route6Gate_h": [ + 7, + 22843 + ], + "Route6UndergroundPathSignText": [ + 22, + 20557 + ], + "Route6Youngster1Text": [ + 22, + 20457 + ], + "Route6Youngster2Text": [ + 22, + 20532 + ], + "Route6_h": [ + 22, + 16384 + ], + "Route7Gate_h": [ + 7, + 23038 + ], + "Route7UndergroundPathSignText": [ + 18, + 16625 + ], + "Route7_h": [ + 18, + 16384 + ], + "Route8CooltrainerF1Text": [ + 22, + 20791 + ], + "Route8CooltrainerF2Text": [ + 22, + 20841 + ], + "Route8CooltrainerF3Text": [ + 22, + 20866 + ], + "Route8CooltrainerF4Text": [ + 22, + 20916 + ], + "Route8Gambler1Text": [ + 22, + 20741 + ], + "Route8Gambler2Text": [ + 22, + 20891 + ], + "Route8Gate_h": [ + 7, + 23237 + ], + "Route8SuperNerd1Text": [ + 22, + 20716 + ], + "Route8SuperNerd2Text": [ + 22, + 20766 + ], + "Route8SuperNerd3Text": [ + 22, + 20816 + ], + "Route8UndergroundSignText": [ + 22, + 20941 + ], + "Route8_h": [ + 22, + 16685 + ], + "Route9AJText": [ + 21, + 22386 + ], + "Route9CooltrainerF1Text": [ + 21, + 22380 + ], + "Route9CooltrainerF2Text": [ + 21, + 22398 + ], + "Route9CooltrainerM2Text": [ + 21, + 22392 + ], + "Route9Hiker1Text": [ + 21, + 22404 + ], + "Route9Hiker2Text": [ + 21, + 22410 + ], + "Route9Hiker3Text": [ + 21, + 22422 + ], + "Route9SignText": [ + 21, + 22573 + ], + "Route9Youngster1Text": [ + 21, + 22416 + ], + "Route9Youngster2Text": [ + 21, + 22428 + ], + "Route9_h": [ + 21, + 18062 + ], + "SSAnne1FRoomsCooltrainerFText": [ + 24, + 23069 + ], + "SSAnne1FRoomsGentleman1Text": [ + 24, + 23039 + ], + "SSAnne1FRoomsGentleman2Text": [ + 24, + 23049 + ], + "SSAnne1FRoomsGentleman3Text": [ + 24, + 23172 + ], + "SSAnne1FRoomsGirl1Text": [ + 24, + 23152 + ], + "SSAnne1FRoomsGirl2Text": [ + 24, + 23167 + ], + "SSAnne1FRoomsLittleGirlText": [ + 24, + 23162 + ], + "SSAnne1FRoomsMiddleAgedManText": [ + 24, + 23157 + ], + "SSAnne1FRoomsWigglytuffText": [ + 24, + 23079 + ], + "SSAnne1FRoomsYoungsterText": [ + 24, + 23059 + ], + "SSAnne1FRooms_h": [ + 24, + 22931 + ], + "SSAnne1FSailorText": [ + 24, + 21181 + ], + "SSAnne1FWaiterText": [ + 24, + 21176 + ], + "SSAnne1F_h": [ + 24, + 21156 + ], + "SSAnne2FRivalCutMasterText": [ + 24, + 21821 + ], + "SSAnne2FRivalText": [ + 24, + 21780 + ], + "SSAnne2FRoomsBeautyText": [ + 24, + 23644 + ], + "SSAnne2FRoomsBrunetteGirlText": [ + 24, + 23632 + ], + "SSAnne2FRoomsCooltrainerFText": [ + 24, + 23542 + ], + "SSAnne2FRoomsFisherText": [ + 24, + 23522 + ], + "SSAnne2FRoomsGentleman1Text": [ + 24, + 23512 + ], + "SSAnne2FRoomsGentleman2Text": [ + 24, + 23532 + ], + "SSAnne2FRoomsGentleman3Text": [ + 24, + 23552 + ], + "SSAnne2FRoomsGentleman4Text": [ + 24, + 23578 + ], + "SSAnne2FRoomsGentleman5Text": [ + 24, + 23608 + ], + "SSAnne2FRoomsGrampsText": [ + 24, + 23593 + ], + "SSAnne2FRoomsLittleBoyText": [ + 24, + 23620 + ], + "SSAnne2FRooms_h": [ + 24, + 23400 + ], + "SSAnne2FWaiterText": [ + 24, + 21775 + ], + "SSAnne2F_h": [ + 24, + 21470 + ], + "SSAnne3FSailorText": [ + 17, + 18896 + ], + "SSAnne3F_h": [ + 17, + 18879 + ], + "SSAnneB1FRoomsFisherText": [ + 24, + 24086 + ], + "SSAnneB1FRoomsMachokeText": [ + 24, + 24096 + ], + "SSAnneB1FRoomsSailor1Text": [ + 24, + 24036 + ], + "SSAnneB1FRoomsSailor2Text": [ + 24, + 24046 + ], + "SSAnneB1FRoomsSailor3Text": [ + 24, + 24056 + ], + "SSAnneB1FRoomsSailor4Text": [ + 24, + 24066 + ], + "SSAnneB1FRoomsSailor5Text": [ + 24, + 24076 + ], + "SSAnneB1FRoomsSuperNerdText": [ + 24, + 24199 + ], + "SSAnneB1FRooms_h": [ + 24, + 23904 + ], + "SSAnneB1F_h": [ + 24, + 22096 + ], + "SSAnneBowCooltrainerMText": [ + 24, + 22306 + ], + "SSAnneBowSailor1Text": [ + 24, + 22301 + ], + "SSAnneBowSailor2Text": [ + 24, + 22311 + ], + "SSAnneBowSailor3Text": [ + 24, + 22336 + ], + "SSAnneBowSuperNerdText": [ + 24, + 22296 + ], + "SSAnneBow_h": [ + 24, + 22224 + ], + "SSAnneCaptainsRoomCaptainText": [ + 24, + 22747 + ], + "SSAnneCaptainsRoomSeasickBookText": [ + 24, + 22890 + ], + "SSAnneCaptainsRoomTrashText": [ + 24, + 22885 + ], + "SSAnneCaptainsRoom_h": [ + 24, + 22711 + ], + "SSAnneKitchenCook1Text": [ + 24, + 22515 + ], + "SSAnneKitchenCook2Text": [ + 24, + 22520 + ], + "SSAnneKitchenCook3Text": [ + 24, + 22525 + ], + "SSAnneKitchenCook4Text": [ + 24, + 22530 + ], + "SSAnneKitchenCook5Text": [ + 24, + 22535 + ], + "SSAnneKitchenCook6Text": [ + 24, + 22540 + ], + "SSAnneKitchenCook7Text": [ + 24, + 22545 + ], + "SSAnneKitchen_h": [ + 24, + 22485 + ], + "SSAnneSmokePuffTile": [ + 30, + 24970 + ], + "SabrinaPic": [ + 19, + 29245 + ], + "SafariZoneCenterRestHouseGirlText": [ + 17, + 24392 + ], + "SafariZoneCenterRestHouseScientistText": [ + 17, + 24397 + ], + "SafariZoneCenterRestHouseSignText": [ + 17, + 24079 + ], + "SafariZoneCenterRestHouse_h": [ + 17, + 24373 + ], + "SafariZoneCenterTrainerTipsSignText": [ + 17, + 24084 + ], + "SafariZoneCenter_h": [ + 17, + 24058 + ], + "SafariZoneEastRestHouseRockerText": [ + 17, + 24536 + ], + "SafariZoneEastRestHouseScientistText": [ + 17, + 24531 + ], + "SafariZoneEastRestHouseSignText": [ + 17, + 23248 + ], + "SafariZoneEastRestHouseSilphWorkerMText": [ + 17, + 24541 + ], + "SafariZoneEastRestHouse_h": [ + 17, + 24509 + ], + "SafariZoneEastSignText": [ + 17, + 23258 + ], + "SafariZoneEastTrainerTipsText": [ + 17, + 23253 + ], + "SafariZoneEast_h": [ + 17, + 23219 + ], + "SafariZoneGateSafariZoneWorker1GoodHaulComeAgainText": [ + 29, + 19400 + ], + "SafariZoneGateSafariZoneWorker1LeavingEarlyText": [ + 29, + 19314 + ], + "SafariZoneGateSafariZoneWorker1Text": [ + 29, + 19297 + ], + "SafariZoneGateSafariZoneWorker1WouldYouLikeToJoinText": [ + 29, + 19302 + ], + "SafariZoneGateSafariZoneWorker2Text": [ + 29, + 19405 + ], + "SafariZoneGate_h": [ + 29, + 18970 + ], + "SafariZoneNorthRestHouseGentlemanText": [ + 17, + 24616 + ], + "SafariZoneNorthRestHouseSafariZoneWorkerText": [ + 17, + 24611 + ], + "SafariZoneNorthRestHouseScientistText": [ + 17, + 24606 + ], + "SafariZoneNorthRestHouseSignText": [ + 17, + 23568 + ], + "SafariZoneNorthRestHouse_h": [ + 17, + 24584 + ], + "SafariZoneNorthSignText": [ + 17, + 23578 + ], + "SafariZoneNorthTrainerTips1Text": [ + 17, + 23573 + ], + "SafariZoneNorthTrainerTips2Text": [ + 17, + 23583 + ], + "SafariZoneNorthTrainerTips3Text": [ + 17, + 23588 + ], + "SafariZoneNorth_h": [ + 17, + 23539 + ], + "SafariZoneSecretHouseFishingGuruText": [ + 18, + 25805 + ], + "SafariZoneSecretHouse_h": [ + 18, + 25788 + ], + "SafariZoneWestFindWardensTeethSignText": [ + 18, + 25470 + ], + "SafariZoneWestRestHouseCooltrainerMText": [ + 17, + 24461 + ], + "SafariZoneWestRestHouseScientistText": [ + 17, + 24456 + ], + "SafariZoneWestRestHouseSignText": [ + 18, + 25465 + ], + "SafariZoneWestRestHouseSilphWorkerFText": [ + 17, + 24466 + ], + "SafariZoneWestRestHouse_h": [ + 17, + 24434 + ], + "SafariZoneWestSignText": [ + 18, + 25480 + ], + "SafariZoneWestTrainerTipsText": [ + 18, + 25475 + ], + "SafariZoneWest_h": [ + 18, + 25434 + ], + "SaffronCityFightingDojoSignText": [ + 20, + 19590 + ], + "SaffronCityGentlemanText": [ + 20, + 19559 + ], + "SaffronCityGymSignText": [ + 20, + 19595 + ], + "SaffronCityMrPsychicsHouseSignText": [ + 20, + 19615 + ], + "SaffronCityPidgeotText": [ + 20, + 19564 + ], + "SaffronCityRockerText": [ + 20, + 19570 + ], + "SaffronCityRocket1Text": [ + 20, + 19509 + ], + "SaffronCityRocket2Text": [ + 20, + 19514 + ], + "SaffronCityRocket3Text": [ + 20, + 19519 + ], + "SaffronCityRocket4Text": [ + 20, + 19524 + ], + "SaffronCityRocket5Text": [ + 20, + 19529 + ], + "SaffronCityRocket6Text": [ + 20, + 19534 + ], + "SaffronCityRocket7Text": [ + 20, + 19539 + ], + "SaffronCityRocket8Text": [ + 20, + 19575 + ], + "SaffronCityRocket9Text": [ + 20, + 19580 + ], + "SaffronCityScientistText": [ + 20, + 19544 + ], + "SaffronCitySignText": [ + 20, + 19585 + ], + "SaffronCitySilphCoLatestProductSignText": [ + 20, + 19620 + ], + "SaffronCitySilphCoSignText": [ + 20, + 19610 + ], + "SaffronCitySilphWorkerFText": [ + 20, + 19554 + ], + "SaffronCitySilphWorkerMText": [ + 20, + 19549 + ], + "SaffronCityTrainerTips1Text": [ + 20, + 19600 + ], + "SaffronCityTrainerTips2Text": [ + 20, + 19605 + ], + "SaffronCity_h": [ + 20, + 18858 + ], + "SaffronGateGuardGeeImThirstyText": [ + 7, + 22769 + ], + "SaffronGateGuardGiveDrinkText": [ + 7, + 22774 + ], + "SaffronGateGuardText": [ + 7, + 22708 + ], + "SaffronGymChanneler1Text": [ + 23, + 20605 + ], + "SaffronGymChanneler2Text": [ + 23, + 20625 + ], + "SaffronGymChanneler3Text": [ + 23, + 20645 + ], + "SaffronGymGymGuideText": [ + 23, + 20675 + ], + "SaffronGymSabrinaMarshBadgeInfoText": [ + 23, + 20585 + ], + "SaffronGymSabrinaReceivedTM46Text": [ + 23, + 20590 + ], + "SaffronGymSabrinaTM46NoRoomText": [ + 23, + 20600 + ], + "SaffronGymSabrinaText": [ + 23, + 20494 + ], + "SaffronGymYoungster1Text": [ + 23, + 20615 + ], + "SaffronGymYoungster2Text": [ + 23, + 20635 + ], + "SaffronGymYoungster3Text": [ + 23, + 20655 + ], + "SaffronGymYoungster4Text": [ + 23, + 20665 + ], + "SaffronGym_h": [ + 23, + 20215 + ], + "SaffronMartClerkText": [ + 0, + 9150 + ], + "SaffronMartCooltrainerFText": [ + 23, + 21261 + ], + "SaffronMartSuperNerdText": [ + 23, + 21256 + ], + "SaffronMart_h": [ + 23, + 21235 + ], + "SaffronPidgeyHouseBrunetteGirlText": [ + 7, + 22258 + ], + "SaffronPidgeyHousePaperText": [ + 7, + 22281 + ], + "SaffronPidgeyHousePidgeyText": [ + 7, + 22263 + ], + "SaffronPidgeyHouseYoungsterText": [ + 7, + 22276 + ], + "SaffronPidgeyHouse_h": [ + 7, + 22235 + ], + "SaffronPokecenterBeautyText": [ + 23, + 21564 + ], + "SaffronPokecenterChanseyText": [ + 23, + 21575 + ], + "SaffronPokecenterGentlemanText": [ + 23, + 21569 + ], + "SaffronPokecenterLinkReceptionistText": [ + 23, + 21574 + ], + "SaffronPokecenterNurseText": [ + 23, + 21563 + ], + "SaffronPokecenter_h": [ + 23, + 21535 + ], + "SailorPic": [ + 19, + 17115 + ], + "SandshrewPicBack": [ + 11, + 23594 + ], + "SandshrewPicFront": [ + 11, + 23301 + ], + "SandslashPicBack": [ + 11, + 24141 + ], + "SandslashPicFront": [ + 11, + 23726 + ], + "ScientistPic": [ + 19, + 25176 + ], + "ScytherPicBack": [ + 9, + 29717 + ], + "ScytherPicFront": [ + 9, + 29195 + ], + "SeadraPicBack": [ + 11, + 23143 + ], + "SeadraPicFront": [ + 11, + 22761 + ], + "SeafoamIslands1F_h": [ + 17, + 18558 + ], + "SeafoamIslandsB1F_h": [ + 17, + 25976 + ], + "SeafoamIslandsB2F_h": [ + 17, + 26292 + ], + "SeafoamIslandsB3F_h": [ + 17, + 26608 + ], + "SeafoamIslandsB4FArticunoText": [ + 17, + 27397 + ], + "SeafoamIslandsB4FBouldersSignText": [ + 17, + 27428 + ], + "SeafoamIslandsB4FDangerSignText": [ + 17, + 27433 + ], + "SeafoamIslandsB4F_h": [ + 17, + 27132 + ], + "SeakingPicBack": [ + 13, + 19054 + ], + "SeakingPicFront": [ + 13, + 18541 + ], + "SeelPicBack": [ + 10, + 27633 + ], + "SeelPicFront": [ + 10, + 27298 + ], + "ShellderPicBack": [ + 9, + 28385 + ], + "ShellderPicFront": [ + 9, + 28179 + ], + "ShockEmote": [ + 16, + 20965 + ], + "ShrinkPic1": [ + 4, + 23446 + ], + "ShrinkPic2": [ + 4, + 23536 + ], + "SilphCo10FRocketText": [ + 22, + 24902 + ], + "SilphCo10FScientistText": [ + 22, + 24912 + ], + "SilphCo10FSilphWorkerFText": [ + 22, + 24922 + ], + "SilphCo10F_h": [ + 22, + 24776 + ], + "SilphCo11FBeautyText": [ + 24, + 25886 + ], + "SilphCo11FGiovanniText": [ + 24, + 25891 + ], + "SilphCo11FGiovanniYouRuinedOurPlansText": [ + 24, + 25901 + ], + "SilphCo11FJessieJamesText": [ + 24, + 25751 + ], + "SilphCo11FRocketText": [ + 24, + 25906 + ], + "SilphCo11FSilphPresidentText": [ + 24, + 25812 + ], + "SilphCo11FText10": [ + 24, + 25799 + ], + "SilphCo11FText9": [ + 24, + 25789 + ], + "SilphCo11F_h": [ + 24, + 24837 + ], + "SilphCo1FLinkReceptionistText": [ + 23, + 21345 + ], + "SilphCo1F_h": [ + 23, + 21304 + ], + "SilphCo2FRocket1Text": [ + 22, + 23985 + ], + "SilphCo2FRocket2Text": [ + 22, + 23995 + ], + "SilphCo2FScientist1Text": [ + 22, + 23965 + ], + "SilphCo2FScientist2Text": [ + 22, + 23975 + ], + "SilphCo2FSilphWorkerFPleaseTakeThisText": [ + 38, + 25914 + ], + "SilphCo2FSilphWorkerFText": [ + 22, + 23900 + ], + "SilphCo2F_h": [ + 22, + 23680 + ], + "SilphCo3FRocketText": [ + 22, + 24478 + ], + "SilphCo3FScientistText": [ + 22, + 24503 + ], + "SilphCo3FSilphWorkerMText": [ + 22, + 24448 + ], + "SilphCo3F_h": [ + 22, + 24298 + ], + "SilphCo4FRocket1Text": [ + 6, + 24308 + ], + "SilphCo4FRocket2Text": [ + 6, + 24358 + ], + "SilphCo4FScientistText": [ + 6, + 24333 + ], + "SilphCo4FSilphWorkerMText": [ + 6, + 24285 + ], + "SilphCo4F_h": [ + 6, + 24073 + ], + "SilphCo5FPokemonReport1Text": [ + 6, + 24968 + ], + "SilphCo5FPokemonReport2Text": [ + 6, + 24973 + ], + "SilphCo5FPokemonReport3Text": [ + 6, + 24978 + ], + "SilphCo5FRockerText": [ + 6, + 24918 + ], + "SilphCo5FRocket1Text": [ + 6, + 24868 + ], + "SilphCo5FRocket2Text": [ + 6, + 24943 + ], + "SilphCo5FScientistText": [ + 6, + 24893 + ], + "SilphCo5FSilphWorkerMText": [ + 6, + 24845 + ], + "SilphCo5F_h": [ + 6, + 24629 + ], + "SilphCo6FRocket1Text": [ + 6, + 25530 + ], + "SilphCo6FRocket2Text": [ + 6, + 25580 + ], + "SilphCo6FScientistText": [ + 6, + 25555 + ], + "SilphCo6FSilphWorkerF1Text": [ + 6, + 25461 + ], + "SilphCo6FSilphWorkerF2Text": [ + 6, + 25484 + ], + "SilphCo6FSilphWorkerM1Text": [ + 6, + 25415 + ], + "SilphCo6FSilphWorkerM2Text": [ + 6, + 25438 + ], + "SilphCo6FSilphWorkerM3Text": [ + 6, + 25507 + ], + "SilphCo6F_h": [ + 6, + 25255 + ], + "SilphCo7FRivalDefeatedText": [ + 20, + 24305 + ], + "SilphCo7FRivalGoodLuckToYouText": [ + 20, + 24315 + ], + "SilphCo7FRivalText": [ + 20, + 24285 + ], + "SilphCo7FRivalWaitedHereText": [ + 20, + 24300 + ], + "SilphCo7FRocket1Text": [ + 20, + 24185 + ], + "SilphCo7FRocket2Text": [ + 20, + 24235 + ], + "SilphCo7FRocket3Text": [ + 20, + 24260 + ], + "SilphCo7FScientistText": [ + 20, + 24210 + ], + "SilphCo7FSilphWorkerM1Text": [ + 20, + 23991 + ], + "SilphCo7FSilphWorkerM2Text": [ + 20, + 24080 + ], + "SilphCo7FSilphWorkerM3Text": [ + 20, + 24115 + ], + "SilphCo7FSilphWorkerM4Text": [ + 20, + 24150 + ], + "SilphCo7F_h": [ + 20, + 23447 + ], + "SilphCo8FRocket1Text": [ + 21, + 26106 + ], + "SilphCo8FRocket2Text": [ + 21, + 26126 + ], + "SilphCo8FScientistText": [ + 21, + 26116 + ], + "SilphCo8FSilphWorkerMText": [ + 21, + 26076 + ], + "SilphCo8F_h": [ + 21, + 25898 + ], + "SilphCo9FNurseText": [ + 23, + 22467 + ], + "SilphCo9FNurseYouLookTiredText": [ + 38, + 30622 + ], + "SilphCo9FRocket1Text": [ + 23, + 22527 + ], + "SilphCo9FRocket2Text": [ + 23, + 22547 + ], + "SilphCo9FScientistText": [ + 23, + 22537 + ], + "SilphCo9F_h": [ + 23, + 22202 + ], + "SilphCoElevatorElevatorText": [ + 17, + 23177 + ], + "SilphCoElevator_h": [ + 17, + 23048 + ], + "SkullEmote": [ + 16, + 21157 + ], + "SlotMachineTiles1": [ + 13, + 31873 + ], + "SlotMachineTiles2": [ + 30, + 19479 + ], + "SlowbroPicBack": [ + 9, + 20293 + ], + "SlowbroPicFront": [ + 9, + 19784 + ], + "SlowpokePicBack": [ + 10, + 18414 + ], + "SlowpokePicFront": [ + 10, + 18219 + ], + "SnakeIconFrame1": [ + 28, + 23174 + ], + "SnakeIconFrame2": [ + 28, + 23238 + ], + "SnorlaxPicBack": [ + 12, + 23866 + ], + "SnorlaxPicFront": [ + 12, + 23470 + ], + "SpearowPicBack": [ + 9, + 18704 + ], + "SpearowPicFront": [ + 9, + 18497 + ], + "SpinnerArrowAnimTiles": [ + 17, + 20775 + ], + "SpriteSheetPointerTable": [ + 5, + 17065 + ], + "SquirtlePicBack": [ + 13, + 24651 + ], + "SquirtlePicFront": [ + 13, + 24408 + ], + "StarmiePicBack": [ + 12, + 31991 + ], + "StarmiePicFront": [ + 12, + 31604 + ], + "StaryuPicBack": [ + 9, + 30127 + ], + "StaryuPicFront": [ + 9, + 29881 + ], + "SubanimationPointers": [ + 30, + 26901 + ], + "SummerBeachHousePikachuText": [ + 60, + 25224 + ], + "SummerBeachHousePoster1Text": [ + 60, + 25247 + ], + "SummerBeachHousePoster2Text": [ + 60, + 25277 + ], + "SummerBeachHousePoster3Text": [ + 60, + 25307 + ], + "SummerBeachHousePrinterText": [ + 60, + 25337 + ], + "SummerBeachHouseSurfinDudeText": [ + 60, + 25130 + ], + "SummerBeachHouse_h": [ + 60, + 25102 + ], + "SuperNerdPic": [ + 19, + 18417 + ], + "SuperPalettes": [ + 28, + 27065 + ], + "SurfingPikachu1Graphics1": [ + 32, + 20244 + ], + "SurfingPikachu1Graphics2": [ + 32, + 21284 + ], + "SurfingPikachu1Graphics3": [ + 32, + 25380 + ], + "SwimmerPic": [ + 19, + 20787 + ], + "TamerPic": [ + 19, + 23374 + ], + "TangelaPicBack": [ + 9, + 31900 + ], + "TangelaPicFront": [ + 9, + 31550 + ], + "TaurosPicBack": [ + 10, + 28420 + ], + "TaurosPicFront": [ + 10, + 27976 + ], + "TeachingHMsText": [ + 43, + 24088 + ], + "TechnicalMachinePrices": [ + 61, + 26101 + ], + "TentacoolPicBack": [ + 9, + 28761 + ], + "TentacoolPicFront": [ + 9, + 28488 + ], + "TentacruelPicBack": [ + 13, + 17913 + ], + "TentacruelPicFront": [ + 13, + 17471 + ], + "TextBoxGraphics": [ + 4, + 19992 + ], + "TheEndGfx": [ + 60, + 22555 + ], + "Tilesets": [ + 3, + 17752 + ], + "TitlePikachuBGGraphics": [ + 61, + 20059 + ], + "TitlePikachuOBGraphics": [ + 61, + 21083 + ], + "TitleScreenPikaBubbleTilemap": [ + 61, + 18035 + ], + "TitleScreenPikachuTilemap": [ + 61, + 18063 + ], + "TitleScreenPokemonLogoTilemap": [ + 61, + 17913 + ], + "TownMapCursor": [ + 28, + 20420 + ], + "TradeCenterOpponentText": [ + 19, + 32451 + ], + "TradeCenter_h": [ + 19, + 32377 + ], + "TrainerAI": [ + 14, + 26034 + ], + "TrainerClassMoveChoiceModifications": [ + 14, + 22558 + ], + "TrainerDataPointers": [ + 14, + 24017 + ], + "TrainerInfoTextBoxTileGraphics": [ + 61, + 23588 + ], + "TrainerNames": [ + 14, + 22910 + ], + "TrainerPicAndMoneyPointers": [ + 14, + 22675 + ], + "TypeEffects": [ + 15, + 26106 + ], + "TypeNames.Bird": [ + 9, + 32233 + ], + "TypeNames.Bug": [ + 9, + 32238 + ], + "TypeNames.Dragon": [ + 9, + 32248 + ], + "TypeNames.Electric": [ + 9, + 32200 + ], + "TypeNames.Fighting": [ + 9, + 32160 + ], + "TypeNames.Fire": [ + 9, + 32183 + ], + "TypeNames.Flying": [ + 9, + 32169 + ], + "TypeNames.Ghost": [ + 9, + 32242 + ], + "TypeNames.Grass": [ + 9, + 32194 + ], + "TypeNames.Ground": [ + 9, + 32221 + ], + "TypeNames.Ice": [ + 9, + 32217 + ], + "TypeNames.Normal": [ + 9, + 32153 + ], + "TypeNames.Poison": [ + 9, + 32176 + ], + "TypeNames.Psychic": [ + 9, + 32209 + ], + "TypeNames.Rock": [ + 9, + 32228 + ], + "TypeNames.Water": [ + 9, + 32188 + ], + "UndergroundPathNorthSouth_h": [ + 24, + 24369 + ], + "UndergroundPathRoute5LittleGirlText": [ + 23, + 21949 + ], + "UndergroundPathRoute5_h": [ + 23, + 21928 + ], + "UndergroundPathRoute6GirlText": [ + 23, + 22020 + ], + "UndergroundPathRoute6_h": [ + 23, + 21998 + ], + "UndergroundPathRoute7CopyUnusedGirlText": [ + 23, + 22142 + ], + "UndergroundPathRoute7CopyUnusedMiddleAgedManText": [ + 23, + 22152 + ], + "UndergroundPathRoute7MiddleAgedManText": [ + 23, + 22081 + ], + "UndergroundPathRoute7_h": [ + 23, + 22059 + ], + "UndergroundPathRoute8GirlText": [ + 7, + 23453 + ], + "UndergroundPathRoute8_h": [ + 7, + 23431 + ], + "UndergroundPathWestEast_h": [ + 24, + 24405 + ], + "VaporeonPicBack": [ + 11, + 27876 + ], + "VaporeonPicFront": [ + 11, + 27464 + ], + "VenomothPicBack": [ + 12, + 18575 + ], + "VenomothPicFront": [ + 12, + 18089 + ], + "VenonatPicBack": [ + 10, + 29370 + ], + "VenonatPicFront": [ + 10, + 29121 + ], + "VenusaurPicBack": [ + 13, + 17281 + ], + "VenusaurPicFront": [ + 13, + 16737 + ], + "VermilionCityBeautyText": [ + 6, + 22855 + ], + "VermilionCityGambler1Text": [ + 6, + 22860 + ], + "VermilionCityGambler2Text": [ + 6, + 23003 + ], + "VermilionCityGymSignText": [ + 6, + 23071 + ], + "VermilionCityHarborSignText": [ + 6, + 23083 + ], + "VermilionCityMachopText": [ + 6, + 23008 + ], + "VermilionCityNoticeSignText": [ + 6, + 23047 + ], + "VermilionCityOfficerJennyText": [ + 6, + 23095 + ], + "VermilionCityPokemonFanClubSignText": [ + 6, + 23059 + ], + "VermilionCitySailor1Text": [ + 6, + 22895 + ], + "VermilionCitySailor2Text": [ + 6, + 23030 + ], + "VermilionCitySignText": [ + 6, + 23035 + ], + "VermilionCity_h": [ + 6, + 18846 + ], + "VermilionDockUnusedText": [ + 7, + 21961 + ], + "VermilionDock_h": [ + 7, + 21582 + ], + "VermilionGymGentlemanText": [ + 23, + 19078 + ], + "VermilionGymGymGuideText": [ + 23, + 19153 + ], + "VermilionGymLTSurgeReceivedTM24Text": [ + 23, + 19058 + ], + "VermilionGymLTSurgeTM24NoRoomText": [ + 23, + 19068 + ], + "VermilionGymLTSurgeText": [ + 23, + 18963 + ], + "VermilionGymLTSurgeThunderBadgeInfoText": [ + 23, + 19053 + ], + "VermilionGymSailorText": [ + 23, + 19128 + ], + "VermilionGymSuperNerdText": [ + 23, + 19103 + ], + "VermilionGym_h": [ + 23, + 18704 + ], + "VermilionMartClerkText": [ + 0, + 9052 + ], + "VermilionMartCooltrainerFText": [ + 23, + 18661 + ], + "VermilionMartCooltrainerMText": [ + 23, + 18656 + ], + "VermilionMart_h": [ + 23, + 18635 + ], + "VermilionOldRodHouseFishingGuruText": [ + 21, + 24677 + ], + "VermilionOldRodHouse_h": [ + 21, + 24660 + ], + "VermilionPidgeyHouseLetterText": [ + 7, + 21539 + ], + "VermilionPidgeyHousePidgeyText": [ + 7, + 21523 + ], + "VermilionPidgeyHouseYoungsterText": [ + 7, + 21518 + ], + "VermilionPidgeyHouse_h": [ + 7, + 21496 + ], + "VermilionPokecenterChanseyText": [ + 23, + 18573 + ], + "VermilionPokecenterFishingGuruText": [ + 23, + 18562 + ], + "VermilionPokecenterLinkReceptionistText": [ + 23, + 18572 + ], + "VermilionPokecenterNurseText": [ + 23, + 18561 + ], + "VermilionPokecenterSailorText": [ + 23, + 18567 + ], + "VermilionPokecenter_h": [ + 23, + 18533 + ], + "VermilionTradeHouseGentlemanText": [ + 6, + 23830 + ], + "VermilionTradeHouse_h": [ + 6, + 23813 + ], + "Version_GFX": [ + 26, + 16384 + ], + "VictoryRoad1FCooltrainerFText": [ + 23, + 22936 + ], + "VictoryRoad1FCooltrainerMText": [ + 23, + 22946 + ], + "VictoryRoad1F_h": [ + 23, + 22793 + ], + "VictoryRoad2FCooltrainerMText": [ + 20, + 22740 + ], + "VictoryRoad2FHikerText": [ + 20, + 22720 + ], + "VictoryRoad2FMoltresText": [ + 20, + 22770 + ], + "VictoryRoad2FSuperNerd1Text": [ + 20, + 22730 + ], + "VictoryRoad2FSuperNerd2Text": [ + 20, + 22750 + ], + "VictoryRoad2FSuperNerd3Text": [ + 20, + 22760 + ], + "VictoryRoad2F_h": [ + 20, + 22476 + ], + "VictoryRoad3FCooltrainerF1Text": [ + 17, + 19219 + ], + "VictoryRoad3FCooltrainerF2Text": [ + 17, + 19239 + ], + "VictoryRoad3FCooltrainerM1Text": [ + 17, + 19209 + ], + "VictoryRoad3FCooltrainerM2Text": [ + 17, + 19229 + ], + "VictoryRoad3F_h": [ + 17, + 18957 + ], + "VictreebelPicBack": [ + 13, + 29708 + ], + "VictreebelPicFront": [ + 13, + 29237 + ], + "VileplumePicBack": [ + 13, + 28384 + ], + "VileplumePicFront": [ + 13, + 28089 + ], + "ViridianCityFisherText": [ + 6, + 21103 + ], + "ViridianCityGambler1Text": [ + 6, + 21055 + ], + "ViridianCityGirlText": [ + 6, + 21079 + ], + "ViridianCityGymLockedText": [ + 6, + 21225 + ], + "ViridianCityGymSignText": [ + 6, + 21213 + ], + "ViridianCityOldMan2Text": [ + 6, + 21132 + ], + "ViridianCityOldManSleepyText": [ + 6, + 21091 + ], + "ViridianCityOldManText": [ + 6, + 21115 + ], + "ViridianCityOldManYouNeedToWeakenTheTargetText": [ + 6, + 21127 + ], + "ViridianCitySignText": [ + 6, + 21177 + ], + "ViridianCityTrainerTips1Text": [ + 6, + 21189 + ], + "ViridianCityTrainerTips2Text": [ + 6, + 21201 + ], + "ViridianCityYoungster1Text": [ + 6, + 21043 + ], + "ViridianCityYoungster2Text": [ + 6, + 21067 + ], + "ViridianCity_h": [ + 6, + 17239 + ], + "ViridianForestCooltrainerFText": [ + 24, + 20870 + ], + "ViridianForestLeavingSignText": [ + 24, + 21001 + ], + "ViridianForestNorthGateGrampsText": [ + 23, + 21661 + ], + "ViridianForestNorthGateSuperNerdText": [ + 23, + 21656 + ], + "ViridianForestNorthGate_h": [ + 23, + 21637 + ], + "ViridianForestSouthGateGirlText": [ + 23, + 21870 + ], + "ViridianForestSouthGateLittleGirlText": [ + 23, + 21875 + ], + "ViridianForestSouthGate_h": [ + 23, + 21850 + ], + "ViridianForestTrainerTips1Text": [ + 24, + 20966 + ], + "ViridianForestTrainerTips2Text": [ + 24, + 20980 + ], + "ViridianForestTrainerTips3Text": [ + 24, + 20987 + ], + "ViridianForestTrainerTips4Text": [ + 24, + 20994 + ], + "ViridianForestUseAntidoteSignText": [ + 24, + 20973 + ], + "ViridianForestYoungster1Text": [ + 24, + 20847 + ], + "ViridianForestYoungster2Text": [ + 24, + 20852 + ], + "ViridianForestYoungster3Text": [ + 24, + 20858 + ], + "ViridianForestYoungster4Text": [ + 24, + 20864 + ], + "ViridianForestYoungster5Text": [ + 24, + 20876 + ], + "ViridianForestYoungster6Text": [ + 24, + 20961 + ], + "ViridianForest_h": [ + 24, + 20717 + ], + "ViridianGymCooltrainerM1Text": [ + 29, + 17200 + ], + "ViridianGymCooltrainerM2Text": [ + 29, + 17300 + ], + "ViridianGymCooltrainerM3Text": [ + 29, + 17375 + ], + "ViridianGymGiovanniEarthBadgeInfoText": [ + 29, + 17180 + ], + "ViridianGymGiovanniReceivedTM27Text": [ + 29, + 17185 + ], + "ViridianGymGiovanniTM27NoRoomText": [ + 29, + 17195 + ], + "ViridianGymGiovanniText": [ + 29, + 17062 + ], + "ViridianGymGymGuideText": [ + 29, + 17400 + ], + "ViridianGymHiker1Text": [ + 29, + 17225 + ], + "ViridianGymHiker2Text": [ + 29, + 17275 + ], + "ViridianGymHiker3Text": [ + 29, + 17325 + ], + "ViridianGymRocker1Text": [ + 29, + 17250 + ], + "ViridianGymRocker2Text": [ + 29, + 17350 + ], + "ViridianGym_h": [ + 29, + 16596 + ], + "ViridianMartClerkParcelQuestText": [ + 7, + 19751 + ], + "ViridianMartClerkText": [ + 0, + 9019 + ], + "ViridianMartClerkYouCameFromPalletTownText": [ + 7, + 19746 + ], + "ViridianMartCooltrainerMText": [ + 7, + 19762 + ], + "ViridianMartYoungsterText": [ + 7, + 19757 + ], + "ViridianMart_h": [ + 7, + 19566 + ], + "ViridianNicknameHouseBaldingGuyText": [ + 7, + 19934 + ], + "ViridianNicknameHouseLittleGirlText": [ + 7, + 19939 + ], + "ViridianNicknameHouseSpearowText": [ + 7, + 19944 + ], + "ViridianNicknameHouseSpearySignText": [ + 7, + 19967 + ], + "ViridianNicknameHouse_h": [ + 7, + 19910 + ], + "ViridianPokeCenterChanseyText": [ + 17, + 17017 + ], + "ViridianPokecenterCooltrainerMText": [ + 17, + 17011 + ], + "ViridianPokecenterGentlemanText": [ + 17, + 17006 + ], + "ViridianPokecenterLinkReceptionistText": [ + 17, + 17016 + ], + "ViridianPokecenterNurseText": [ + 17, + 17005 + ], + "ViridianPokecenter_h": [ + 17, + 16977 + ], + "ViridianSchoolHouseBrunetteGirlText": [ + 7, + 19843 + ], + "ViridianSchoolHouseCooltrainerFText": [ + 7, + 19848 + ], + "ViridianSchoolHouseLittleGirlText": [ + 7, + 19860 + ], + "ViridianSchoolHouse_h": [ + 7, + 19821 + ], + "VoltorbPicBack": [ + 9, + 18960 + ], + "VoltorbPicFront": [ + 9, + 18783 + ], + "VulpixPicBack": [ + 11, + 19025 + ], + "VulpixPicFront": [ + 11, + 18673 + ], + "WardensHouseDisplayText": [ + 29, + 18876 + ], + "WardensHouseWardenText": [ + 29, + 18715 + ], + "WardensHouse_h": [ + 29, + 18690 + ], + "WarpTileIDPointers": [ + 3, + 16917 + ], + "WartortlePicBack": [ + 13, + 25620 + ], + "WartortlePicFront": [ + 13, + 25230 + ], + "WeedlePicBack": [ + 11, + 30644 + ], + "WeedlePicFront": [ + 11, + 30466 + ], + "WeepinbellPicBack": [ + 13, + 29114 + ], + "WeepinbellPicFront": [ + 13, + 28843 + ], + "WeezingPicBack": [ + 12, + 27584 + ], + "WeezingPicFront": [ + 12, + 27230 + ], + "WigglytuffPicBack": [ + 11, + 25852 + ], + "WigglytuffPicFront": [ + 11, + 25467 + ], + "WildDataPointers": [ + 3, + 19349 + ], + "WorldMapTileGraphics": [ + 4, + 20792 + ], + "YellowIntroCloudGFX": [ + 62, + 23596 + ], + "YellowIntroGraphics1": [ + 62, + 25434 + ], + "YellowIntroGraphics2": [ + 62, + 27482 + ], + "YoungsterPic": [ + 19, + 16384 + ], + "ZapdosPicBack": [ + 11, + 17549 + ], + "ZapdosPicFront": [ + 11, + 17061 + ], + "ZubatPicBack": [ + 11, + 28646 + ], + "ZubatPicFront": [ + 11, + 28422 + ], + "ZzzEmote": [ + 16, + 21349 + ], + "_AIBattleUseItemText": [ + 39, + 24178 + ], + "_AIBattleWithdrawText": [ + 39, + 24155 + ], + "_AbandonLearningText": [ + 44, + 30326 + ], + "_AbraDexEntry": [ + 46, + 22427 + ], + "_AccessedBillsPCText": [ + 40, + 17025 + ], + "_AccessedHoFPCText": [ + 40, + 17506 + ], + "_AccessedMyPCText": [ + 40, + 17128 + ], + "_AccessedOaksPCText": [ + 40, + 18241 + ], + "_AccessedSomeonesPCText": [ + 40, + 17075 + ], + "_ActorNameText": [ + 39, + 31018 + ], + "_AerodactylDexEntry": [ + 46, + 30190 + ], + "_AerodactylFossilText": [ + 39, + 28248 + ], + "_AfterTrade1Text": [ + 45, + 28624 + ], + "_AfterTrade2Text": [ + 45, + 28800 + ], + "_AfterTrade3Text": [ + 45, + 28983 + ], + "_AgathaAfterBattleText": [ + 39, + 23188 + ], + "_AgathaBeforeBattleText": [ + 39, + 22885 + ], + "_AgathaEndBattleText": [ + 39, + 23146 + ], + "_AgathasRoomAgathaDontRunAwayText": [ + 39, + 23289 + ], + "_AlakazamDexEntry": [ + 46, + 22619 + ], + "_AlreadyAsleepText": [ + 42, + 16426 + ], + "_AlreadyKnowsText": [ + 45, + 28406 + ], + "_AlreadyOutText": [ + 39, + 30517 + ], + "_AntidoteText": [ + 40, + 16825 + ], + "_ArbokDexEntry": [ + 46, + 18583 + ], + "_ArcanineDexEntry": [ + 46, + 22047 + ], + "_ArticunoDexEntry": [ + 46, + 30383 + ], + "_AttackContinuesText": [ + 39, + 30959 + ], + "_AttackMissedText": [ + 39, + 31072 + ], + "_AwakeningText": [ + 40, + 16918 + ], + "_BadlyPoisonedText": [ + 42, + 16463 + ], + "_BecameConfusedText": [ + 42, + 16765 + ], + "_BeedrillDexEntry": [ + 46, + 17713 + ], + "_BeganToNapText": [ + 39, + 31207 + ], + "_BellsproutDexEntry": [ + 46, + 23012 + ], + "_BetHowManySlotMachineText": [ + 39, + 24464 + ], + "_BikeShopBagFullText": [ + 42, + 30631 + ], + "_BikeShopCantAffordText": [ + 42, + 30402 + ], + "_BikeShopClerkDoYouLikeItText": [ + 42, + 30368 + ], + "_BikeShopClerkHowDoYouLikeYourBicycleText": [ + 42, + 30550 + ], + "_BikeShopClerkOhThatsAVoucherText": [ + 42, + 30430 + ], + "_BikeShopClerkWelcomeText": [ + 42, + 30302 + ], + "_BikeShopComeAgainText": [ + 42, + 30523 + ], + "_BikeShopExchangedVoucherText": [ + 42, + 30477 + ], + "_BikeShopMiddleAgedWomanText": [ + 42, + 30663 + ], + "_BikeShopYoungsterCoolBikeText": [ + 42, + 30796 + ], + "_BikeShopYoungsterTheseBikesAreExpensiveText": [ + 42, + 30747 + ], + "_BillsHouseBillCheckOutMyRarePokemonText": [ + 40, + 27537 + ], + "_BillsHouseBillDontLeaveText": [ + 40, + 26714 + ], + "_BillsHouseBillImNotAPokemonText": [ + 40, + 26745 + ], + "_BillsHouseBillNoYouGottaHelpText": [ + 40, + 27043 + ], + "_BillsHouseBillThankYouText": [ + 40, + 27143 + ], + "_BillsHouseBillUseSeparationSystemText": [ + 40, + 26967 + ], + "_BillsHouseBillWhyDontYouGoInsteadOfMeText": [ + 40, + 27362 + ], + "_BillsHouseInitiatedText": [ + 39, + 26796 + ], + "_BillsHouseMonitorText": [ + 39, + 26752 + ], + "_BillsHousePokemonListText1": [ + 39, + 26838 + ], + "_BillsHousePokemonListText2": [ + 39, + 26865 + ], + "_BlastoiseDexEntry": [ + 46, + 17142 + ], + "_BluesHouseDaisyBagFullText": [ + 42, + 17888 + ], + "_BluesHouseDaisyOfferMapText": [ + 42, + 17808 + ], + "_BluesHouseDaisyRivalAtLabText": [ + 42, + 17775 + ], + "_BluesHouseDaisyUseMapText": [ + 42, + 17923 + ], + "_BluesHouseDaisyWalkingText": [ + 42, + 17968 + ], + "_BluesHouseTownMapText": [ + 42, + 18031 + ], + "_BookcaseText": [ + 39, + 25746 + ], + "_BoostedText": [ + 39, + 31435 + ], + "_BootedUpHMText": [ + 45, + 27890 + ], + "_BootedUpTMText": [ + 45, + 27873 + ], + "_BoulderText": [ + 38, + 16561 + ], + "_BoxFullCannotThrowBallText": [ + 45, + 28203 + ], + "_BoxFullDebugText": [ + 39, + 24204 + ], + "_BoxFullText": [ + 40, + 17698 + ], + "_BoxIsFullText": [ + 45, + 16961 + ], + "_BoxWillBeClearedText": [ + 39, + 24222 + ], + "_BrunoAfterBattleText": [ + 39, + 22807 + ], + "_BrunoBeforeBattleText": [ + 39, + 22595 + ], + "_BrunoEndBattleText": [ + 39, + 22783 + ], + "_BrunosRoomBrunoDontRunAwayText": [ + 39, + 22853 + ], + "_BuildingRageText": [ + 39, + 31338 + ], + "_BulbasaurDexEntry": [ + 46, + 16384 + ], + "_BurnHealText": [ + 40, + 16875 + ], + "_BurnedText": [ + 42, + 16483 + ], + "_ButItFailedText": [ + 42, + 16858 + ], + "_ButterfreeDexEntry": [ + 46, + 17431 + ], + "_CableClubNPCAreaReservedFor2FriendsLinkedByCableText": [ + 44, + 30799 + ], + "_CableClubNPCLinkClosedBecauseOfInactivityText": [ + 45, + 16399 + ], + "_CableClubNPCMakingPreparationsText": [ + 45, + 16511 + ], + "_CableClubNPCPleaseApplyHereHaveToSaveText": [ + 44, + 30889 + ], + "_CableClubNPCPleaseComeAgainText": [ + 45, + 16491 + ], + "_CableClubNPCPleaseWaitText": [ + 45, + 16384 + ], + "_CableClubNPCWelcomeText": [ + 44, + 30861 + ], + "_CanMoveBouldersText": [ + 45, + 16787 + ], + "_CannotFlyHereText": [ + 45, + 16645 + ], + "_CannotGetOffHereText": [ + 45, + 16742 + ], + "_CannotUseItemsHereText": [ + 45, + 16716 + ], + "_CannotUseTeleportNowText": [ + 45, + 16617 + ], + "_CantCarryMoreText": [ + 40, + 17431 + ], + "_CantDepositLastMonText": [ + 40, + 17665 + ], + "_CantEscapeText": [ + 39, + 30395 + ], + "_CantMoveText": [ + 39, + 30981 + ], + "_CantTakeMonText": [ + 40, + 17792 + ], + "_CardKeyFailText": [ + 38, + 16425 + ], + "_CardKeySuccessText1": [ + 38, + 16384 + ], + "_CardKeySuccessText2": [ + 38, + 16393 + ], + "_CaterpieDexEntry": [ + 46, + 17234 + ], + "_CeladonChiefHouseChiefText": [ + 44, + 17139 + ], + "_CeladonChiefHouseRocketText": [ + 44, + 17192 + ], + "_CeladonChiefHouseSailorText": [ + 44, + 17242 + ], + "_CeladonCityDeptStoreSignText": [ + 45, + 24493 + ], + "_CeladonCityFisherText": [ + 45, + 24201 + ], + "_CeladonCityGameCornerSignText": [ + 45, + 24708 + ], + "_CeladonCityGirlText": [ + 45, + 23849 + ], + "_CeladonCityGramps1Text": [ + 45, + 23803 + ], + "_CeladonCityGramps2Text": [ + 45, + 23894 + ], + "_CeladonCityGramps3ReceivedTM41Text": [ + 45, + 24074 + ], + "_CeladonCityGramps3TM41ExplanationText": [ + 45, + 24094 + ], + "_CeladonCityGramps3TM41NoRoomText": [ + 45, + 24168 + ], + "_CeladonCityGramps3Text": [ + 45, + 23981 + ], + "_CeladonCityGymSignText": [ + 45, + 24411 + ], + "_CeladonCityHotelText": [ + 39, + 25709 + ], + "_CeladonCityLittleGirlText": [ + 45, + 23720 + ], + "_CeladonCityMansionSignText": [ + 45, + 24476 + ], + "_CeladonCityPokecenterGuyText": [ + 39, + 25338 + ], + "_CeladonCityPoliwrathText": [ + 45, + 24288 + ], + "_CeladonCityPrizeExchangeSignText": [ + 45, + 24664 + ], + "_CeladonCityRocket1Text": [ + 45, + 24313 + ], + "_CeladonCityRocket2Text": [ + 45, + 24339 + ], + "_CeladonCitySignText": [ + 45, + 24370 + ], + "_CeladonCityTrainerTips1Text": [ + 45, + 24757 + ], + "_CeladonCityTrainerTips2Text": [ + 45, + 24537 + ], + "_CeladonDinerCookText": [ + 44, + 16733 + ], + "_CeladonDinerFisherText": [ + 44, + 16871 + ], + "_CeladonDinerGymGuideCoinCaseNoRoomText": [ + 44, + 17070 + ], + "_CeladonDinerGymGuideImFlatOutBustedText": [ + 44, + 16929 + ], + "_CeladonDinerGymGuideReceivedCoinCaseText": [ + 44, + 17048 + ], + "_CeladonDinerGymGuideWinItBackText": [ + 44, + 17091 + ], + "_CeladonDinerMiddleAgedManText": [ + 44, + 16823 + ], + "_CeladonDinerMiddleAgedWomanText": [ + 44, + 16763 + ], + "_CeladonGymAfterBattleText2": [ + 43, + 29163 + ], + "_CeladonGymAfterBattleText3": [ + 43, + 29234 + ], + "_CeladonGymAfterBattleText4": [ + 43, + 29375 + ], + "_CeladonGymAfterBattleText5": [ + 43, + 29479 + ], + "_CeladonGymAfterBattleText6": [ + 43, + 29623 + ], + "_CeladonGymAfterBattleText7": [ + 43, + 29751 + ], + "_CeladonGymAfterBattleText8": [ + 43, + 29892 + ], + "_CeladonGymBattleText2": [ + 43, + 29110 + ], + "_CeladonGymBattleText3": [ + 43, + 29200 + ], + "_CeladonGymBattleText4": [ + 43, + 29333 + ], + "_CeladonGymBattleText5": [ + 43, + 29425 + ], + "_CeladonGymBattleText6": [ + 43, + 29570 + ], + "_CeladonGymBattleText7": [ + 43, + 29687 + ], + "_CeladonGymBattleText8": [ + 43, + 29813 + ], + "_CeladonGymEndBattleText2": [ + 43, + 29145 + ], + "_CeladonGymEndBattleText3": [ + 43, + 29222 + ], + "_CeladonGymEndBattleText4": [ + 43, + 29361 + ], + "_CeladonGymEndBattleText5": [ + 43, + 29474 + ], + "_CeladonGymEndBattleText6": [ + 43, + 29613 + ], + "_CeladonGymEndBattleText7": [ + 43, + 29736 + ], + "_CeladonGymEndBattleText8": [ + 43, + 29879 + ], + "_CeladonGymErikaPostBattleAdviceText": [ + 43, + 28728 + ], + "_CeladonGymErikaPreBattleText": [ + 43, + 28335 + ], + "_CeladonGymErikaReceivedRainbowBadgeText": [ + 43, + 28642 + ], + "_CeladonGymRainbowBadgeInfoText": [ + 43, + 28833 + ], + "_CeladonGymReceivedTM21Text": [ + 43, + 28972 + ], + "_CeladonGymTM21NoRoomText": [ + 43, + 29078 + ], + "_CeladonHotelBeautyText": [ + 44, + 17373 + ], + "_CeladonHotelGrannyText": [ + 44, + 17320 + ], + "_CeladonHotelSuperNerdText": [ + 44, + 17452 + ], + "_CeladonMansion1FClefairyText": [ + 43, + 26755 + ], + "_CeladonMansion1FManagersSuiteSignText": [ + 43, + 26802 + ], + "_CeladonMansion1FMeowthText": [ + 43, + 26739 + ], + "_CeladonMansion1FNidoranFText": [ + 43, + 26780 + ], + "_CeladonMansion1Text10": [ + 43, + 27072 + ], + "_CeladonMansion1Text11": [ + 43, + 27099 + ], + "_CeladonMansion1Text12": [ + 43, + 27135 + ], + "_CeladonMansion1Text2": [ + 43, + 26834 + ], + "_CeladonMansion1Text6": [ + 43, + 26896 + ], + "_CeladonMansion1Text7": [ + 43, + 26941 + ], + "_CeladonMansion1Text8": [ + 43, + 26984 + ], + "_CeladonMansion1Text9": [ + 43, + 27027 + ], + "_CeladonMansion2FMeetingRoomSignText": [ + 43, + 27192 + ], + "_CeladonMansion3FDevRoomSignText": [ + 43, + 28073 + ], + "_CeladonMansion3FGameDesignerCompletedDexText": [ + 43, + 27802 + ], + "_CeladonMansion3FGameDesignerCompletedDexText2": [ + 43, + 27866 + ], + "_CeladonMansion3FGameDesignerText": [ + 43, + 27687 + ], + "_CeladonMansion3FGameProgramPCText": [ + 43, + 27917 + ], + "_CeladonMansion3FGameScriptPCText": [ + 43, + 28025 + ], + "_CeladonMansion3FGraphicArtistText": [ + 43, + 27322 + ], + "_CeladonMansion3FGraphicArtistText2": [ + 43, + 27358 + ], + "_CeladonMansion3FGraphicArtistText3": [ + 43, + 27452 + ], + "_CeladonMansion3FGraphicArtistText4": [ + 43, + 27502 + ], + "_CeladonMansion3FGraphicArtistText5": [ + 43, + 27513 + ], + "_CeladonMansion3FPlayingGamePCText": [ + 43, + 27980 + ], + "_CeladonMansion3FProgrammerText": [ + 43, + 27217 + ], + "_CeladonMansion3FProgrammerText2": [ + 43, + 27241 + ], + "_CeladonMansion3FWriterText": [ + 43, + 27534 + ], + "_CeladonMansion3FWriterText2": [ + 43, + 27624 + ], + "_CeladonMansionRoofHouseHikerText": [ + 43, + 28122 + ], + "_CeladonMansionRoofHouseSignText": [ + 43, + 28102 + ], + "_CeladonMart1FCurrentFloorSignText": [ + 43, + 24777 + ], + "_CeladonMart1FDirectorySignText": [ + 43, + 24644 + ], + "_CeladonMart1FReceptionistText": [ + 43, + 24553 + ], + "_CeladonMart2FCurrentFloorSignText": [ + 43, + 24915 + ], + "_CeladonMart2FGirlText": [ + 43, + 24873 + ], + "_CeladonMart2FMiddleAgedManText": [ + 43, + 24802 + ], + "_CeladonMart3FClerkReceivedTM18Text": [ + 43, + 25566 + ], + "_CeladonMart3FClerkTM18ExplanationText": [ + 43, + 25586 + ], + "_CeladonMart3FClerkTM18NoRoomText": [ + 43, + 25646 + ], + "_CeladonMart3FClerkTM18PreReceiveText": [ + 43, + 25496 + ], + "_CeladonMart3FCurrentFloorSignText": [ + 43, + 25448 + ], + "_CeladonMart3FFightingGameText": [ + 43, + 25417 + ], + "_CeladonMart3FGameBoyKid1Text": [ + 43, + 24971 + ], + "_CeladonMart3FGameBoyKid2Text": [ + 43, + 25073 + ], + "_CeladonMart3FGameBoyKid3Text": [ + 43, + 25145 + ], + "_CeladonMart3FLittleBoyText": [ + 43, + 25241 + ], + "_CeladonMart3FPokemonPosterText": [ + 43, + 25466 + ], + "_CeladonMart3FPuzzleGameText": [ + 43, + 25384 + ], + "_CeladonMart3FRPGText": [ + 43, + 25317 + ], + "_CeladonMart3FSNESText": [ + 43, + 25303 + ], + "_CeladonMart3FSportsGameText": [ + 43, + 25351 + ], + "_CeladonMart4FCurrentFloorSignText": [ + 43, + 25854 + ], + "_CeladonMart4FSuperNerdText": [ + 43, + 25675 + ], + "_CeladonMart4FYoungsterText": [ + 43, + 25765 + ], + "_CeladonMart5FCurrentFloorSignText": [ + 44, + 16628 + ], + "_CeladonMart5FGentlemanText": [ + 44, + 16413 + ], + "_CeladonMart5FSailorText": [ + 44, + 16535 + ], + "_CeladonMartRoofCurrentFloorSignText": [ + 43, + 26581 + ], + "_CeladonMartRoofLittleGirlGiveHerADrinkText": [ + 43, + 26523 + ], + "_CeladonMartRoofLittleGirlGiveHerWhichDrinkText": [ + 43, + 25949 + ], + "_CeladonMartRoofLittleGirlImNotThirstyText": [ + 43, + 26354 + ], + "_CeladonMartRoofLittleGirlImThirstyText": [ + 43, + 26483 + ], + "_CeladonMartRoofLittleGirlNoRoomText": [ + 43, + 26322 + ], + "_CeladonMartRoofLittleGirlReceivedTM13Text": [ + 43, + 26030 + ], + "_CeladonMartRoofLittleGirlReceivedTM48Text": [ + 43, + 26169 + ], + "_CeladonMartRoofLittleGirlReceivedTM49Text": [ + 43, + 26274 + ], + "_CeladonMartRoofLittleGirlTM13ExplanationText": [ + 43, + 26050 + ], + "_CeladonMartRoofLittleGirlTM48ExplanationText": [ + 43, + 26189 + ], + "_CeladonMartRoofLittleGirlTM49ExplanationText": [ + 43, + 26293 + ], + "_CeladonMartRoofLittleGirlYayFreshWaterText": [ + 43, + 25972 + ], + "_CeladonMartRoofLittleGirlYayLemonadeText": [ + 43, + 26219 + ], + "_CeladonMartRoofLittleGirlYaySodaPopText": [ + 43, + 26114 + ], + "_CeladonMartRoofSuperNerdText": [ + 43, + 26396 + ], + "_CeladonPokecenterBeautyText": [ + 43, + 28290 + ], + "_CeladonPokecenterGentlemanText": [ + 43, + 28230 + ], + "_CeruleanBadgeHouseBoulderBadgeText": [ + 42, + 31213 + ], + "_CeruleanBadgeHouseCascadeBadgeText": [ + 42, + 31310 + ], + "_CeruleanBadgeHouseEarthBadgeText": [ + 43, + 16587 + ], + "_CeruleanBadgeHouseMarshBadgeText": [ + 43, + 16478 + ], + "_CeruleanBadgeHouseMiddleAgedManText": [ + 42, + 31011 + ], + "_CeruleanBadgeHouseMiddleAgedManVisitAnyTimeText": [ + 42, + 31178 + ], + "_CeruleanBadgeHouseMiddleAgedManWhichBadgeText": [ + 42, + 31124 + ], + "_CeruleanBadgeHouseRainbowBadgeText": [ + 42, + 31508 + ], + "_CeruleanBadgeHouseSoulBadgeText": [ + 43, + 16384 + ], + "_CeruleanBadgeHouseThunderBadgeText": [ + 42, + 31417 + ], + "_CeruleanBadgeHouseVolcanoBadgeText": [ + 43, + 16541 + ], + "_CeruleanCityBikeShopSign": [ + 45, + 21858 + ], + "_CeruleanCityCooltrainerF1ElectrodePunchText": [ + 45, + 21251 + ], + "_CeruleanCityCooltrainerF1ElectrodeUseSonicboomText": [ + 45, + 21187 + ], + "_CeruleanCityCooltrainerF1ElectrodeWithdrawText": [ + 45, + 21294 + ], + "_CeruleanCityCooltrainerF2Text": [ + 45, + 21534 + ], + "_CeruleanCityCooltrainerMText": [ + 45, + 20839 + ], + "_CeruleanCityElectrodeIgnoredOrdersText": [ + 45, + 21505 + ], + "_CeruleanCityElectrodeIsLoafingAroundText": [ + 45, + 21447 + ], + "_CeruleanCityElectrodeTookASnoozeText": [ + 45, + 21419 + ], + "_CeruleanCityElectrodeTurnedAwayText": [ + 45, + 21479 + ], + "_CeruleanCityGuardText": [ + 45, + 21037 + ], + "_CeruleanCityGymSign": [ + 45, + 21901 + ], + "_CeruleanCityRivalDefeatedText": [ + 45, + 20213 + ], + "_CeruleanCityRivalIWentToBillsText": [ + 45, + 20286 + ], + "_CeruleanCityRivalPreBattleText": [ + 45, + 20066 + ], + "_CeruleanCityRivalVictoryText": [ + 45, + 20250 + ], + "_CeruleanCityRocketIBetterGetMovingText": [ + 45, + 20685 + ], + "_CeruleanCityRocketIGiveUpText": [ + 45, + 20770 + ], + "_CeruleanCityRocketIllReturnTheTMText": [ + 45, + 20807 + ], + "_CeruleanCityRocketReceivedTM28Text": [ + 45, + 20665 + ], + "_CeruleanCityRocketTM28NoRoomText": [ + 45, + 20714 + ], + "_CeruleanCityRocketText": [ + 45, + 20574 + ], + "_CeruleanCitySignText": [ + 45, + 21730 + ], + "_CeruleanCitySuperNerd1Text": [ + 45, + 20901 + ], + "_CeruleanCitySuperNerd2Text": [ + 45, + 20977 + ], + "_CeruleanCitySuperNerd3Text": [ + 45, + 21607 + ], + "_CeruleanCityTrainerTipsText": [ + 45, + 21782 + ], + "_CeruleanGymAfterBattleText1": [ + 42, + 29863 + ], + "_CeruleanGymAfterBattleText2": [ + 42, + 29982 + ], + "_CeruleanGymBattleText1": [ + 42, + 29791 + ], + "_CeruleanGymBattleText2": [ + 42, + 29933 + ], + "_CeruleanGymEndBattleText1": [ + 42, + 29842 + ], + "_CeruleanGymEndBattleText2": [ + 42, + 29967 + ], + "_CeruleanGymGymGuideBeatMistyText": [ + 42, + 30218 + ], + "_CeruleanGymGymGuideChampInMakingText": [ + 42, + 30052 + ], + "_CeruleanGymMistyCascadeBadgeInfoText": [ + 42, + 29450 + ], + "_CeruleanGymMistyPreBattleText": [ + 42, + 29197 + ], + "_CeruleanGymMistyReceivedCascadeBadgeText": [ + 42, + 29705 + ], + "_CeruleanGymMistyReceivedTM11Text": [ + 42, + 29654 + ], + "_CeruleanGymMistyTM11ExplanationText": [ + 42, + 29397 + ], + "_CeruleanGymMistyTM11NoRoomText": [ + 42, + 29673 + ], + "_CeruleanMartCooltrainerFText": [ + 42, + 30937 + ], + "_CeruleanMartCooltrainerMText": [ + 42, + 30828 + ], + "_CeruleanPokecenterGentlemanText": [ + 42, + 29046 + ], + "_CeruleanPokecenterGuyText": [ + 39, + 24860 + ], + "_CeruleanPokecenterSuperNerdText": [ + 42, + 28977 + ], + "_CeruleanTrashedHouseFishingGuruTheyStoleATMText": [ + 42, + 28355 + ], + "_CeruleanTrashedHouseFishingGuruWhatsLostIsLostText": [ + 42, + 28489 + ], + "_CeruleanTrashedHouseGirlText": [ + 42, + 28571 + ], + "_CeruleanTrashedHouseWallHoleText": [ + 42, + 28630 + ], + "_ChampionsRoomOakComeWithMeText": [ + 39, + 22113 + ], + "_ChampionsRoomOakCongratulatesPlayerText": [ + 39, + 21700 + ], + "_ChampionsRoomOakDisappointedWithRivalText": [ + 39, + 21853 + ], + "_ChampionsRoomOakText": [ + 39, + 21691 + ], + "_ChampionsRoomRivalAfterBattleText": [ + 39, + 21545 + ], + "_ChampionsRoomRivalIntroText": [ + 39, + 20955 + ], + "_ChanseyDexEntry": [ + 46, + 27318 + ], + "_ChargeMoveEffectText": [ + 42, + 16657 + ], + "_CharizardDexEntry": [ + 46, + 16862 + ], + "_CharmanderDexEntry": [ + 46, + 16673 + ], + "_CharmeleonDexEntry": [ + 46, + 16772 + ], + "_ChooseABoxText": [ + 41, + 30429 + ], + "_CinnabarGymBlainePostBattleAdviceText": [ + 44, + 22241 + ], + "_CinnabarGymBlainePreBattleText": [ + 44, + 22056 + ], + "_CinnabarGymBlaineReceivedTM38Text": [ + 44, + 22412 + ], + "_CinnabarGymBlaineReceivedVolcanoBadgeText": [ + 44, + 22187 + ], + "_CinnabarGymBlaineTM38ExplanationText": [ + 44, + 22432 + ], + "_CinnabarGymBlaineTM38NoRoomText": [ + 44, + 22530 + ], + "_CinnabarGymBlaineVolcanoBadgeInfoText": [ + 44, + 22314 + ], + "_CinnabarGymGymGuideBeatBlaineText": [ + 44, + 23485 + ], + "_CinnabarGymGymGuideChampInMakingText": [ + 44, + 23358 + ], + "_CinnabarGymQuizCorrectText": [ + 39, + 26645 + ], + "_CinnabarGymQuizDummyIntroText": [ + 39, + 25984 + ], + "_CinnabarGymQuizIncorrectText": [ + 39, + 26688 + ], + "_CinnabarGymQuizIntroText": [ + 39, + 26166 + ], + "_CinnabarGymQuizShortIntroText": [ + 39, + 26368 + ], + "_CinnabarGymSuperNerd1AfterBattleText": [ + 44, + 22622 + ], + "_CinnabarGymSuperNerd1BattleText": [ + 44, + 22554 + ], + "_CinnabarGymSuperNerd1EndBattleText": [ + 44, + 22601 + ], + "_CinnabarGymSuperNerd2AfterBattleText": [ + 44, + 22758 + ], + "_CinnabarGymSuperNerd2BattleText": [ + 44, + 22692 + ], + "_CinnabarGymSuperNerd2EndBattleText": [ + 44, + 22744 + ], + "_CinnabarGymSuperNerd3AfterBattleText": [ + 44, + 22863 + ], + "_CinnabarGymSuperNerd3BattleText": [ + 44, + 22800 + ], + "_CinnabarGymSuperNerd3EndBattleText": [ + 44, + 22844 + ], + "_CinnabarGymSuperNerd4AfterBattleText": [ + 44, + 22955 + ], + "_CinnabarGymSuperNerd4BattleText": [ + 44, + 22905 + ], + "_CinnabarGymSuperNerd4EndBattleText": [ + 44, + 22935 + ], + "_CinnabarGymSuperNerd5AfterBattleText": [ + 44, + 23042 + ], + "_CinnabarGymSuperNerd5BattleText": [ + 44, + 23000 + ], + "_CinnabarGymSuperNerd5EndBattleText": [ + 44, + 23037 + ], + "_CinnabarGymSuperNerd6AfterBattleText": [ + 44, + 23222 + ], + "_CinnabarGymSuperNerd6BattleText": [ + 44, + 23156 + ], + "_CinnabarGymSuperNerd6EndBattleText": [ + 44, + 23205 + ], + "_CinnabarGymSuperNerd7AfterBattleText": [ + 44, + 23313 + ], + "_CinnabarGymSuperNerd7BattleText": [ + 44, + 23268 + ], + "_CinnabarGymSuperNerd7EndBattleText": [ + 44, + 23295 + ], + "_CinnabarGymText_1": [ + 44, + 23515 + ], + "_CinnabarGymText_2": [ + 44, + 23654 + ], + "_CinnabarGymText_3": [ + 44, + 23676 + ], + "_CinnabarGymText_4": [ + 44, + 23695 + ], + "_CinnabarGymText_5": [ + 44, + 23720 + ], + "_CinnabarGymText_6": [ + 44, + 23749 + ], + "_CinnabarGymText_7": [ + 44, + 23777 + ], + "_CinnabarIslandDoorIsLockedText": [ + 45, + 25727 + ], + "_CinnabarIslandGamblerText": [ + 45, + 25818 + ], + "_CinnabarIslandGirlText": [ + 45, + 25750 + ], + "_CinnabarIslandGymSignText": [ + 45, + 25938 + ], + "_CinnabarIslandPokemonLabSignText": [ + 45, + 25928 + ], + "_CinnabarIslandSignText": [ + 45, + 25878 + ], + "_CinnabarLabFishingGuruText": [ + 44, + 23808 + ], + "_CinnabarLabFossilRoomScientist1ComeAgainText": [ + 44, + 25039 + ], + "_CinnabarLabFossilRoomScientist1FossilIsBackToLifeText": [ + 44, + 24726 + ], + "_CinnabarLabFossilRoomScientist1GoForAWalkText": [ + 44, + 24671 + ], + "_CinnabarLabFossilRoomScientist1GoForAWalkText2": [ + 44, + 24984 + ], + "_CinnabarLabFossilRoomScientist1NoFossilsText": [ + 44, + 24654 + ], + "_CinnabarLabFossilRoomScientist1SeesFossilText": [ + 44, + 24799 + ], + "_CinnabarLabFossilRoomScientist1TakesFossilText": [ + 44, + 24930 + ], + "_CinnabarLabFossilRoomScientist1Text": [ + 44, + 24561 + ], + "_CinnabarLabMeetingRoomSignText": [ + 44, + 23929 + ], + "_CinnabarLabMetronomeRoomAmberPipeText": [ + 44, + 24545 + ], + "_CinnabarLabMetronomeRoomPCText": [ + 44, + 24345 + ], + "_CinnabarLabMetronomeRoomScientist1ReceivedTM35Text": [ + 44, + 24145 + ], + "_CinnabarLabMetronomeRoomScientist1TM35ExplanationText": [ + 44, + 24166 + ], + "_CinnabarLabMetronomeRoomScientist1TM35NoRoomText": [ + 44, + 24272 + ], + "_CinnabarLabMetronomeRoomScientist1Text": [ + 44, + 24082 + ], + "_CinnabarLabMetronomeRoomScientist2Text": [ + 44, + 24300 + ], + "_CinnabarLabPhotoText": [ + 44, + 23890 + ], + "_CinnabarLabRAndDSignText": [ + 44, + 23952 + ], + "_CinnabarLabTestingRoomSignText": [ + 44, + 23975 + ], + "_CinnabarLabTradeRoomSuperNerdText": [ + 44, + 23998 + ], + "_CinnabarMartScientistText": [ + 44, + 25300 + ], + "_CinnabarMartSilphWorkerFText": [ + 44, + 25252 + ], + "_CinnabarPokecenterCooltrainerFText": [ + 44, + 25063 + ], + "_CinnabarPokecenterGentlemanText": [ + 44, + 25159 + ], + "_CinnabarPokecenterGuyText": [ + 39, + 25464 + ], + "_CinnabarQuizQuestionsText1": [ + 39, + 26398 + ], + "_CinnabarQuizQuestionsText2": [ + 39, + 26433 + ], + "_CinnabarQuizQuestionsText3": [ + 39, + 26476 + ], + "_CinnabarQuizQuestionsText4": [ + 39, + 26502 + ], + "_CinnabarQuizQuestionsText5": [ + 39, + 26566 + ], + "_CinnabarQuizQuestionsText6": [ + 39, + 26618 + ], + "_ClearSaveDataText": [ + 40, + 16617 + ], + "_ClefableDexEntry": [ + 46, + 19745 + ], + "_ClefairyDexEntry": [ + 46, + 19641 + ], + "_ClosedOaksPCText": [ + 40, + 18210 + ], + "_CloysterDexEntry": [ + 46, + 25148 + ], + "_CoinCaseNumCoinsText": [ + 45, + 27650 + ], + "_CoinsScatteredText": [ + 42, + 17341 + ], + "_Colosseum3MonsText": [ + 40, + 18987 + ], + "_ColosseumCanceledText": [ + 40, + 19503 + ], + "_ColosseumDifferentMonsText": [ + 40, + 19039 + ], + "_ColosseumEvolvedText": [ + 40, + 19387 + ], + "_ColosseumHeightText": [ + 40, + 19335 + ], + "_ColosseumIneligibleText": [ + 40, + 19412 + ], + "_ColosseumMaxL20Text": [ + 40, + 19248 + ], + "_ColosseumMaxL30Text": [ + 40, + 19161 + ], + "_ColosseumMaxL55Text": [ + 40, + 19073 + ], + "_ColosseumMewText": [ + 40, + 19014 + ], + "_ColosseumMinL15Text": [ + 40, + 19273 + ], + "_ColosseumMinL25Text": [ + 40, + 19186 + ], + "_ColosseumMinL50Text": [ + 40, + 19098 + ], + "_ColosseumOpponentText": [ + 42, + 17417 + ], + "_ColosseumPleaseWaitText": [ + 40, + 19471 + ], + "_ColosseumTotalL155Text": [ + 40, + 19130 + ], + "_ColosseumTotalL50Text": [ + 40, + 19305 + ], + "_ColosseumTotalL80Text": [ + 40, + 19218 + ], + "_ColosseumVersionText": [ + 40, + 19527 + ], + "_ColosseumWeightText": [ + 40, + 19359 + ], + "_ColosseumWhereToText": [ + 40, + 19442 + ], + "_ComeBackText": [ + 40, + 16582 + ], + "_ConfusedNoMoreText": [ + 39, + 30874 + ], + "_ConnectCableText": [ + 45, + 28424 + ], + "_ContCharText": [ + 40, + 19571 + ], + "_ConvertedTypeText": [ + 42, + 17081 + ], + "_CopycatsHouse1FChanseyText": [ + 44, + 25759 + ], + "_CopycatsHouse1FMiddleAgedManText": [ + 44, + 25662 + ], + "_CopycatsHouse1FMiddleAgedWomanText": [ + 44, + 25600 + ], + "_CopycatsHouse2FCopycatDoYouLikePokemonText": [ + 44, + 25782 + ], + "_CopycatsHouse2FCopycatReceivedTM31Text": [ + 44, + 25982 + ], + "_CopycatsHouse2FCopycatTM31Explanation1Text": [ + 44, + 26002 + ], + "_CopycatsHouse2FCopycatTM31Explanation2Text": [ + 44, + 26062 + ], + "_CopycatsHouse2FCopycatTM31NoRoomText": [ + 44, + 26172 + ], + "_CopycatsHouse2FCopycatTM31PreReceiveText": [ + 44, + 25919 + ], + "_CopycatsHouse2FDoduoText": [ + 44, + 26194 + ], + "_CopycatsHouse2FPCCantSeeText": [ + 44, + 26443 + ], + "_CopycatsHouse2FPCMySecretsText": [ + 44, + 26360 + ], + "_CopycatsHouse2FRareDollText": [ + 44, + 26267 + ], + "_CopycatsHouse2FSNESText": [ + 44, + 26311 + ], + "_CriticalHitText": [ + 39, + 31155 + ], + "_CuboneDexEntry": [ + 46, + 26409 + ], + "_CurrentTooFastText": [ + 45, + 16811 + ], + "_CyclingIsFunText": [ + 45, + 16842 + ], + "_DaycareGentlemanAllRightThenText": [ + 40, + 21253 + ], + "_DaycareGentlemanCantAcceptMonWithHMText": [ + 40, + 21352 + ], + "_DaycareGentlemanComeAgainText": [ + 40, + 21272 + ], + "_DaycareGentlemanComeSeeMeInAWhileText": [ + 40, + 21029 + ], + "_DaycareGentlemanGotMonBackText": [ + 40, + 21178 + ], + "_DaycareGentlemanHeresYourMonText": [ + 40, + 21397 + ], + "_DaycareGentlemanIntroText": [ + 40, + 20897 + ], + "_DaycareGentlemanMonHasGrownText": [ + 40, + 21054 + ], + "_DaycareGentlemanMonNeedsMoreTimeText": [ + 40, + 21197 + ], + "_DaycareGentlemanNoRoomForMonText": [ + 40, + 21285 + ], + "_DaycareGentlemanNotEnoughMoneyText": [ + 40, + 21426 + ], + "_DaycareGentlemanOnlyHaveOneMonText": [ + 40, + 21318 + ], + "_DaycareGentlemanOweMoneyText": [ + 40, + 21129 + ], + "_DaycareGentlemanWhichMonText": [ + 40, + 20960 + ], + "_DaycareGentlemanWillLookAfterMonText": [ + 40, + 20988 + ], + "_DepositHowManyText": [ + 40, + 17251 + ], + "_DepositWhichMonText": [ + 40, + 17614 + ], + "_DewgongDexEntry": [ + 46, + 24774 + ], + "_DexCompletionText": [ + 42, + 21268 + ], + "_DexRatingText": [ + 39, + 24624 + ], + "_DexRatingText_Own0To9": [ + 42, + 21344 + ], + "_DexRatingText_Own100To109": [ + 42, + 21867 + ], + "_DexRatingText_Own10To19": [ + 42, + 21403 + ], + "_DexRatingText_Own110To119": [ + 42, + 21939 + ], + "_DexRatingText_Own120To129": [ + 42, + 21988 + ], + "_DexRatingText_Own130To139": [ + 42, + 22037 + ], + "_DexRatingText_Own140To149": [ + 42, + 22084 + ], + "_DexRatingText_Own150To151": [ + 42, + 22138 + ], + "_DexRatingText_Own20To29": [ + 42, + 21460 + ], + "_DexRatingText_Own30To39": [ + 42, + 21515 + ], + "_DexRatingText_Own40To49": [ + 42, + 21573 + ], + "_DexRatingText_Own50To59": [ + 42, + 21621 + ], + "_DexRatingText_Own60To69": [ + 42, + 21696 + ], + "_DexRatingText_Own70To79": [ + 42, + 21732 + ], + "_DexRatingText_Own80To89": [ + 42, + 21774 + ], + "_DexRatingText_Own90To99": [ + 42, + 21817 + ], + "_DexSeenOwnedText": [ + 39, + 24583 + ], + "_DidNotLearnText": [ + 44, + 30351 + ], + "_DidntAffectText": [ + 42, + 16876 + ], + "_DiglettDexEntry": [ + 46, + 21159 + ], + "_DiglettSculptureText": [ + 39, + 29878 + ], + "_DiglettsCaveRoute11GamblerText": [ + 40, + 23294 + ], + "_DiglettsCaveRoute2FishingGuruText": [ + 40, + 19600 + ], + "_DisabledNoMoreText": [ + 39, + 30802 + ], + "_DittoDexEntry": [ + 46, + 29199 + ], + "_DoItText": [ + 40, + 16500 + ], + "_DoYouWantToNicknameText": [ + 40, + 18842 + ], + "_DodrioDexEntry": [ + 46, + 24585 + ], + "_DoduoDexEntry": [ + 46, + 24486 + ], + "_DoesntAffectMonText": [ + 39, + 31134 + ], + "_DontHavePokemonText": [ + 45, + 28246 + ], + "_DragonairDexEntry": [ + 46, + 30756 + ], + "_DragoniteDexEntry": [ + 46, + 30853 + ], + "_DratiniDexEntry": [ + 46, + 30660 + ], + "_DreamWasEatenText": [ + 42, + 17393 + ], + "_DroppedHiddenCoinsText": [ + 39, + 29715 + ], + "_DrowzeeDexEntry": [ + 46, + 25632 + ], + "_DugAHoleText": [ + 42, + 16751 + ], + "_DugtrioDexEntry": [ + 46, + 21255 + ], + "_EeveeDexEntry": [ + 46, + 29293 + ], + "_EkansDexEntry": [ + 46, + 18479 + ], + "_ElectabuzzDexEntry": [ + 46, + 28499 + ], + "_ElectrodeDexEntry": [ + 46, + 26117 + ], + "_ElevatorText": [ + 39, + 29907 + ], + "_EndUsedMove1Text": [ + 39, + 31057 + ], + "_EndUsedMove2Text": [ + 39, + 31060 + ], + "_EndUsedMove3Text": [ + 39, + 31063 + ], + "_EndUsedMove4Text": [ + 39, + 31066 + ], + "_EndUsedMove5Text": [ + 39, + 31069 + ], + "_EnemiesOnEverySideText": [ + 39, + 28018 + ], + "_EnemyAppearedText": [ + 40, + 16384 + ], + "_EnemyMonFaintedText": [ + 39, + 30111 + ], + "_EnemyRanText": [ + 39, + 30031 + ], + "_EnemysWeakText": [ + 40, + 16519 + ], + "_EnoughText": [ + 40, + 16558 + ], + "_EvadedAttackText": [ + 42, + 17042 + ], + "_EvolvedText": [ + 41, + 30447 + ], + "_ExchangeCoinsForPrizesText": [ + 40, + 18000 + ], + "_ExclamationText": [ + 38, + 16531 + ], + "_ExeggcuteDexEntry": [ + 46, + 26217 + ], + "_ExeggutorDexEntry": [ + 46, + 26314 + ], + "_ExpPointsText": [ + 39, + 31448 + ], + "_ExpressionText": [ + 40, + 18295 + ], + "_FanClubPicture1Text": [ + 39, + 28338 + ], + "_FanClubPicture2Text": [ + 39, + 28357 + ], + "_FarfetchdDexEntry": [ + 46, + 24387 + ], + "_FastAsleepText": [ + 39, + 30699 + ], + "_FearowDexEntry": [ + 46, + 18387 + ], + "_FellAsleepBecameHealthyText": [ + 42, + 17181 + ], + "_FellAsleepText": [ + 42, + 16410 + ], + "_FellText": [ + 42, + 16590 + ], + "_FightingDojoBetterNotGetGreedyText": [ + 44, + 27299 + ], + "_FightingDojoBlackbelt1AfterBattleText": [ + 44, + 26828 + ], + "_FightingDojoBlackbelt1BattleText": [ + 44, + 26786 + ], + "_FightingDojoBlackbelt1EndBattleText": [ + 44, + 26816 + ], + "_FightingDojoBlackbelt2AfterBattleText": [ + 44, + 26940 + ], + "_FightingDojoBlackbelt2BattleText": [ + 44, + 26894 + ], + "_FightingDojoBlackbelt2EndBattleText": [ + 44, + 26923 + ], + "_FightingDojoBlackbelt3AfterBattleText": [ + 44, + 27053 + ], + "_FightingDojoBlackbelt3BattleText": [ + 44, + 26970 + ], + "_FightingDojoBlackbelt3EndBattleText": [ + 44, + 27030 + ], + "_FightingDojoBlackbelt4AfterBattleText": [ + 44, + 27171 + ], + "_FightingDojoBlackbelt4BattleText": [ + 44, + 27105 + ], + "_FightingDojoBlackbelt4EndBattleText": [ + 44, + 27154 + ], + "_FightingDojoHitmonchanPokeBallText": [ + 44, + 27257 + ], + "_FightingDojoHitmonleePokeBallText": [ + 44, + 27219 + ], + "_FightingDojoKarateMasterDefeatedText": [ + 44, + 26563 + ], + "_FightingDojoKarateMasterIWillGiveYouAPokemonText": [ + 44, + 26584 + ], + "_FightingDojoKarateMasterStayAndTrainWithUsText": [ + 44, + 26747 + ], + "_FightingDojoKarateMasterText": [ + 44, + 26459 + ], + "_FightingDojoText": [ + 39, + 28074 + ], + "_FileDataDestroyedText": [ + 41, + 30227 + ], + "_FireDefrostedText": [ + 42, + 16519 + ], + "_FlareonDexEntry": [ + 46, + 29596 + ], + "_FlashLightsAreaText": [ + 45, + 16551 + ], + "_FlewUpHighText": [ + 42, + 16735 + ], + "_FlinchedText": [ + 39, + 30771 + ], + "_FluteWokeUpText": [ + 45, + 27598 + ], + "_ForgotAndText": [ + 44, + 30517 + ], + "_FoundHiddenCoins2Text": [ + 39, + 29691 + ], + "_FoundHiddenCoinsText": [ + 39, + 29667 + ], + "_FoundHiddenItemText": [ + 39, + 29608 + ], + "_FoundItemText": [ + 38, + 16665 + ], + "_FrozenText": [ + 42, + 16498 + ], + "_FuchsiaBillsGrandpasHouseBillsGrandpaText": [ + 44, + 17681 + ], + "_FuchsiaBillsGrandpasHouseMiddleAgedWomanText": [ + 44, + 17601 + ], + "_FuchsiaBillsGrandpasHouseYoungsterText": [ + 44, + 17771 + ], + "_FuchsiaCityChanseySignText": [ + 45, + 25344 + ], + "_FuchsiaCityErikText": [ + 45, + 25069 + ], + "_FuchsiaCityFossilSignKabutoText": [ + 45, + 25665 + ], + "_FuchsiaCityFossilSignOmanyteText": [ + 45, + 25607 + ], + "_FuchsiaCityFossilSignUndeterminedText": [ + 45, + 25722 + ], + "_FuchsiaCityGamblerText": [ + 45, + 24973 + ], + "_FuchsiaCityGymSignText": [ + 45, + 25280 + ], + "_FuchsiaCityKangaskhanSignText": [ + 45, + 25436 + ], + "_FuchsiaCityLaprasSignText": [ + 45, + 25564 + ], + "_FuchsiaCityPokecenterGuyText": [ + 39, + 25384 + ], + "_FuchsiaCityPokemonText": [ + 45, + 25157 + ], + "_FuchsiaCitySafariGameSignText": [ + 45, + 25200 + ], + "_FuchsiaCitySafariZoneSignText": [ + 45, + 25253 + ], + "_FuchsiaCitySignText": [ + 45, + 25160 + ], + "_FuchsiaCitySlowpokeSignText": [ + 45, + 25517 + ], + "_FuchsiaCityVoltorbSignText": [ + 45, + 25393 + ], + "_FuchsiaCityWardensHomeSignText": [ + 45, + 25227 + ], + "_FuchsiaCityYoungster1Text": [ + 45, + 24907 + ], + "_FuchsiaCityYoungster2Text": [ + 45, + 25114 + ], + "_FuchsiaGoodRodHouseFishingGuruHowAreTheFishText": [ + 44, + 21820 + ], + "_FuchsiaGoodRodHouseFishingGuruNoRoomText": [ + 44, + 21862 + ], + "_FuchsiaGoodRodHouseFishingGuruReceivedGoodRodText": [ + 44, + 21708 + ], + "_FuchsiaGoodRodHouseFishingGuruText": [ + 44, + 21625 + ], + "_FuchsiaGoodRodHouseFishingGuruThatsSoDisappointingText": [ + 44, + 21787 + ], + "_FuchsiaGymGymGuideBeatKogaText": [ + 44, + 21336 + ], + "_FuchsiaGymGymGuideChampInMakingText": [ + 44, + 21174 + ], + "_FuchsiaGymKogaBeforeBattleText": [ + 44, + 19697 + ], + "_FuchsiaGymKogaPostBattleAdviceText": [ + 44, + 19940 + ], + "_FuchsiaGymKogaReceivedSoulBadgeText": [ + 44, + 19878 + ], + "_FuchsiaGymKogaReceivedTM06Text": [ + 44, + 20175 + ], + "_FuchsiaGymKogaSoulBadgeInfoText": [ + 44, + 20045 + ], + "_FuchsiaGymKogaTM06ExplanationText": [ + 44, + 20195 + ], + "_FuchsiaGymKogaTM06NoRoomText": [ + 44, + 20263 + ], + "_FuchsiaGymRocker1AfterBattleText": [ + 44, + 20412 + ], + "_FuchsiaGymRocker1BattleText": [ + 44, + 20292 + ], + "_FuchsiaGymRocker1EndBattleText": [ + 44, + 20390 + ], + "_FuchsiaGymRocker2AfterBattleText": [ + 44, + 20524 + ], + "_FuchsiaGymRocker2BattleText": [ + 44, + 20459 + ], + "_FuchsiaGymRocker2EndBattleText": [ + 44, + 20510 + ], + "_FuchsiaGymRocker3AfterBattleText": [ + 44, + 20640 + ], + "_FuchsiaGymRocker3BattleText": [ + 44, + 20578 + ], + "_FuchsiaGymRocker3EndBattleText": [ + 44, + 20620 + ], + "_FuchsiaGymRocker4AfterBattleText": [ + 44, + 20785 + ], + "_FuchsiaGymRocker4BattleText": [ + 44, + 20706 + ], + "_FuchsiaGymRocker4EndBattleText": [ + 44, + 20766 + ], + "_FuchsiaGymRocker5AfterBattleText": [ + 44, + 20973 + ], + "_FuchsiaGymRocker5BattleText": [ + 44, + 20869 + ], + "_FuchsiaGymRocker5EndBattleText": [ + 44, + 20966 + ], + "_FuchsiaGymRocker6AfterBattleText": [ + 44, + 21095 + ], + "_FuchsiaGymRocker6BattleText": [ + 44, + 21002 + ], + "_FuchsiaGymRocker6EndBattleText": [ + 44, + 21076 + ], + "_FuchsiaMartCooltrainerFText": [ + 44, + 17548 + ], + "_FuchsiaMartMiddleAgedManText": [ + 44, + 17484 + ], + "_FuchsiaMeetingRoomSafariZoneWorker1": [ + 44, + 21381 + ], + "_FuchsiaMeetingRoomSafariZoneWorker2": [ + 44, + 21450 + ], + "_FuchsiaMeetingRoomSafariZoneWorker3": [ + 44, + 21542 + ], + "_FuchsiaPokecenterCooltrainerFText": [ + 44, + 17916 + ], + "_FuchsiaPokecenterRockerText": [ + 44, + 17829 + ], + "_FullHealText": [ + 40, + 16932 + ], + "_FullyParalyzedText": [ + 39, + 30750 + ], + "_GainedText": [ + 39, + 31404 + ], + "_GameCornerBeauty1Text": [ + 43, + 29941 + ], + "_GameCornerBeauty2Text": [ + 43, + 30337 + ], + "_GameCornerClerkCantAffordTheCoinsText": [ + 43, + 30181 + ], + "_GameCornerClerkCoinCaseIsFullText": [ + 43, + 30209 + ], + "_GameCornerClerkDoYouNeedSomeGameCoinsText": [ + 43, + 30010 + ], + "_GameCornerClerkDontHaveCoinCaseText": [ + 43, + 30240 + ], + "_GameCornerClerkPleaseComePlaySometimeText": [ + 43, + 30149 + ], + "_GameCornerClerkThanksHereAre50CoinsText": [ + 43, + 30116 + ], + "_GameCornerCoinCaseText": [ + 39, + 27148 + ], + "_GameCornerFishingGuru1DontNeedMyCoinsText": [ + 43, + 30432 + ], + "_GameCornerFishingGuru1Received10CoinsText": [ + 43, + 30409 + ], + "_GameCornerFishingGuru1WantToPlayText": [ + 43, + 30382 + ], + "_GameCornerFishingGuru1WinsComeAndGoText": [ + 43, + 30457 + ], + "_GameCornerFishingGuru2CloselyWatchTheReelsText": [ + 43, + 31037 + ], + "_GameCornerFishingGuru2Received20CoinsText": [ + 43, + 30987 + ], + "_GameCornerFishingGuru2ThrowingMeOffText": [ + 43, + 30925 + ], + "_GameCornerFishingGuru2YouGotYourOwnCoinsText": [ + 43, + 31010 + ], + "_GameCornerGamblerText": [ + 43, + 30758 + ], + "_GameCornerGymGuideChampInMakingText": [ + 43, + 30513 + ], + "_GameCornerGymGuideTheyOfferRarePokemonText": [ + 43, + 30668 + ], + "_GameCornerMiddleAgedMan1Text": [ + 43, + 30268 + ], + "_GameCornerMiddleAgedMan2INeedMoreCoinsText": [ + 43, + 30879 + ], + "_GameCornerMiddleAgedMan2Received20CoinsText": [ + 43, + 30831 + ], + "_GameCornerMiddleAgedMan2WantSomeCoinsText": [ + 43, + 30803 + ], + "_GameCornerMiddleAgedMan2YouHaveLotsOfCoinsText": [ + 43, + 30854 + ], + "_GameCornerMiddleAgedWomanText": [ + 43, + 30484 + ], + "_GameCornerNoCoinsText": [ + 39, + 27174 + ], + "_GameCornerOopsForgotCoinCaseText": [ + 44, + 16384 + ], + "_GameCornerOutOfOrderText": [ + 39, + 27200 + ], + "_GameCornerOutToLunchText": [ + 39, + 27230 + ], + "_GameCornerPosterSwitchBehindPosterText": [ + 43, + 31184 + ], + "_GameCornerPrizeRoomBaldingGuyText": [ + 44, + 16644 + ], + "_GameCornerPrizeRoomGamblerText": [ + 44, + 16706 + ], + "_GameCornerRocketAfterBattleText": [ + 43, + 31130 + ], + "_GameCornerRocketBattleEndText": [ + 43, + 31123 + ], + "_GameCornerRocketImGuardingThisPosterText": [ + 43, + 31079 + ], + "_GameCornerSomeonesKeysText": [ + 39, + 27262 + ], + "_GameOverText": [ + 39, + 25953 + ], + "_GameSavedText": [ + 41, + 30301 + ], + "_GastlyDexEntry": [ + 46, + 25244 + ], + "_GengarDexEntry": [ + 46, + 25447 + ], + "_GeodudeDexEntry": [ + 46, + 23507 + ], + "_GetDexRatedText": [ + 40, + 18180 + ], + "_GetOutText": [ + 39, + 30669 + ], + "_GetmText": [ + 40, + 16510 + ], + "_GettingPumpedText": [ + 42, + 17140 + ], + "_GhostCantBeIDdText": [ + 40, + 16463 + ], + "_GloomDexEntry": [ + 46, + 20544 + ], + "_GoText": [ + 40, + 16493 + ], + "_GolbatDexEntry": [ + 46, + 20340 + ], + "_GoldeenDexEntry": [ + 46, + 27802 + ], + "_GolduckDexEntry": [ + 46, + 21661 + ], + "_GolemDexEntry": [ + 46, + 23699 + ], + "_GoodText": [ + 40, + 16574 + ], + "_GotAwayText": [ + 39, + 30455 + ], + "_GotMapText": [ + 42, + 17871 + ], + "_GotMonText": [ + 45, + 16875 + ], + "_GotOffBicycleText1": [ + 45, + 28306 + ], + "_GotOffBicycleText2": [ + 45, + 28318 + ], + "_GotOnBicycleText1": [ + 45, + 28285 + ], + "_GotOnBicycleText2": [ + 45, + 28300 + ], + "_GravelerDexEntry": [ + 46, + 23597 + ], + "_GreatlyFellText": [ + 42, + 16579 + ], + "_GreatlyRoseText": [ + 42, + 16549 + ], + "_GrewLevelText": [ + 39, + 31467 + ], + "_GrimerDexEntry": [ + 46, + 24875 + ], + "_GroundRoseText": [ + 38, + 16534 + ], + "_GrowlitheDexEntry": [ + 46, + 21948 + ], + "_GyaradosDexEntry": [ + 46, + 29001 + ], + "_GymStatueText1": [ + 39, + 24638 + ], + "_GymStatueText2": [ + 39, + 24686 + ], + "_HMCantDeleteText": [ + 44, + 30546 + ], + "_HallOfFameOakText": [ + 39, + 20654 + ], + "_HasSubstituteText": [ + 42, + 16974 + ], + "_HaunterDexEntry": [ + 46, + 25349 + ], + "_HereYouGoText": [ + 40, + 18062 + ], + "_HiddenItemBagFullText": [ + 39, + 29625 + ], + "_HisNameIsText": [ + 40, + 18911 + ], + "_HitWithRecoilText": [ + 42, + 17060 + ], + "_HitXTimesText": [ + 39, + 31385 + ], + "_HitmonchanDexEntry": [ + 46, + 26708 + ], + "_HitmonleeDexEntry": [ + 46, + 26609 + ], + "_HookedMonAttackedText": [ + 39, + 31611 + ], + "_HorseaDexEntry": [ + 46, + 27602 + ], + "_HurtByBurnText": [ + 39, + 30069 + ], + "_HurtByLeechSeedText": [ + 39, + 30091 + ], + "_HurtByPoisonText": [ + 39, + 30049 + ], + "_HurtItselfText": [ + 39, + 30840 + ], + "_HypnoDexEntry": [ + 46, + 25726 + ], + "_IceHealText": [ + 40, + 16898 + ], + "_IgnoredOrdersText": [ + 39, + 31260 + ], + "_IndigoPlateauHQText": [ + 39, + 28089 + ], + "_IndigoPlateauLobbyCooltrainerFText": [ + 44, + 25492 + ], + "_IndigoPlateauLobbyGymGuideText": [ + 44, + 25337 + ], + "_IndigoPlateauStatuesText1": [ + 39, + 29743 + ], + "_IndigoPlateauStatuesText2": [ + 39, + 29759 + ], + "_IndigoPlateauStatuesText3": [ + 39, + 29806 + ], + "_IntoText": [ + 41, + 30460 + ], + "_IntroducePlayerText": [ + 40, + 18606 + ], + "_IntroduceRivalText": [ + 40, + 18633 + ], + "_IsConfusedText": [ + 39, + 30824 + ], + "_IsEvolvingText": [ + 42, + 16384 + ], + "_IsFrozenText": [ + 39, + 30730 + ], + "_IsItOKToTossItemText": [ + 45, + 28349 + ], + "_IsUnaffectedText": [ + 42, + 16896 + ], + "_ItemUseBallText00": [ + 45, + 27097 + ], + "_ItemUseBallText01": [ + 45, + 27151 + ], + "_ItemUseBallText02": [ + 45, + 27173 + ], + "_ItemUseBallText03": [ + 45, + 27201 + ], + "_ItemUseBallText04": [ + 45, + 27234 + ], + "_ItemUseBallText05": [ + 45, + 27263 + ], + "_ItemUseBallText06": [ + 45, + 27365 + ], + "_ItemUseBallText07": [ + 45, + 27294 + ], + "_ItemUseBallText08": [ + 45, + 27328 + ], + "_ItemUseNoEffectText": [ + 45, + 28075 + ], + "_ItemUseNotTimeText": [ + 45, + 28008 + ], + "_ItemUseNotYoursToUseText": [ + 45, + 28050 + ], + "_ItemUseText001": [ + 45, + 28270 + ], + "_ItemUseText002": [ + 45, + 28279 + ], + "_ItemWasStoredText": [ + 40, + 17262 + ], + "_ItemfinderFoundItemText": [ + 45, + 27665 + ], + "_ItemfinderFoundNothingText": [ + 45, + 27715 + ], + "_ItemsCantBeUsedHereText": [ + 39, + 30491 + ], + "_ItsABiteText": [ + 38, + 16514 + ], + "_IvysaurDexEntry": [ + 46, + 16479 + ], + "_JigglypuffDexEntry": [ + 46, + 20031 + ], + "_JolteonDexEntry": [ + 46, + 29495 + ], + "_JustAMomentText": [ + 39, + 27294 + ], + "_JynxDexEntry": [ + 46, + 28402 + ], + "_KabutoDexEntry": [ + 46, + 29992 + ], + "_KabutopsDexEntry": [ + 46, + 30094 + ], + "_KabutopsFossilText": [ + 39, + 28294 + ], + "_KadabraDexEntry": [ + 46, + 22525 + ], + "_KakunaDexEntry": [ + 46, + 17616 + ], + "_KangaskhanDexEntry": [ + 46, + 27511 + ], + "_KeptGoingAndCrashedText": [ + 39, + 31091 + ], + "_KinglerDexEntry": [ + 46, + 25922 + ], + "_KoffingDexEntry": [ + 46, + 26918 + ], + "_KrabbyDexEntry": [ + 46, + 25824 + ], + "_LancesRoomLanceAfterBattleText": [ + 39, + 20375 + ], + "_LancesRoomLanceBeforeBattleText": [ + 39, + 20020 + ], + "_LancesRoomLanceEndBattleText": [ + 39, + 20317 + ], + "_LaprasDexEntry": [ + 46, + 29101 + ], + "_LavenderCuboneHouseBrunetteGirlGhostIsGoneText": [ + 43, + 20222 + ], + "_LavenderCuboneHouseBrunetteGirlPoorCubonesMotherText": [ + 43, + 20113 + ], + "_LavenderCuboneHouseCuboneText": [ + 43, + 20093 + ], + "_LavenderMartBaldingGuyText": [ + 43, + 19785 + ], + "_LavenderMartCooltrainerMNuggetText": [ + 43, + 20008 + ], + "_LavenderMartCooltrainerMReviveText": [ + 43, + 19961 + ], + "_LavenderPokecenterGentlemanText": [ + 43, + 16612 + ], + "_LavenderPokecenterGuyText": [ + 39, + 24911 + ], + "_LavenderPokecenterLittleGirlText": [ + 43, + 16664 + ], + "_LavenderTownCooltrainerMText": [ + 45, + 22094 + ], + "_LavenderTownLittleGirlDoYouBelieveInGhostsText": [ + 45, + 21962 + ], + "_LavenderTownLittleGirlHaHaGuessNotText": [ + 45, + 22024 + ], + "_LavenderTownLittleGirlSoThereAreBelieversText": [ + 45, + 21989 + ], + "_LavenderTownPokemonHouseSignText": [ + 45, + 22373 + ], + "_LavenderTownPokemonTowerSignText": [ + 45, + 22404 + ], + "_LavenderTownSignText": [ + 45, + 22275 + ], + "_LavenderTownSilphScopeSignText": [ + 45, + 22312 + ], + "_LavenderTownSuperNerdText": [ + 45, + 22183 + ], + "_LearnedMove1Text": [ + 44, + 30272 + ], + "_LickitungDexEntry": [ + 46, + 26814 + ], + "_LightScreenProtectedText": [ + 42, + 17263 + ], + "_LinedUpText": [ + 39, + 24527 + ], + "_LinkBattleLostText": [ + 39, + 30282 + ], + "_LinkCableHelpText1": [ + 39, + 28377 + ], + "_LinkCableHelpText2": [ + 39, + 28415 + ], + "_LinkCableInfoText1": [ + 39, + 28451 + ], + "_LinkCableInfoText2": [ + 39, + 28565 + ], + "_LinkCableInfoText3": [ + 39, + 28608 + ], + "_LoafingAroundText": [ + 39, + 31183 + ], + "_LooksContentText": [ + 44, + 30768 + ], + "_LoreleisRoomLoreleiAfterBattleText": [ + 39, + 22477 + ], + "_LoreleisRoomLoreleiBeforeBattleText": [ + 39, + 22249 + ], + "_LoreleisRoomLoreleiDontRunAwayText": [ + 39, + 22563 + ], + "_LoreleisRoomLoreleiEndBattleText": [ + 39, + 22462 + ], + "_LoweredItsHeadText": [ + 42, + 16701 + ], + "_MachampDexEntry": [ + 46, + 22919 + ], + "_MachokeDexEntry": [ + 46, + 22825 + ], + "_MachopDexEntry": [ + 46, + 22719 + ], + "_MadeWhirlwindText": [ + 42, + 16661 + ], + "_MagazinesText": [ + 39, + 26706 + ], + "_MagikarpDexEntry": [ + 46, + 28897 + ], + "_MagmarDexEntry": [ + 46, + 28601 + ], + "_MagnemiteDexEntry": [ + 46, + 24190 + ], + "_MagnetonDexEntry": [ + 46, + 24290 + ], + "_MankeyDexEntry": [ + 46, + 21759 + ], + "_MarowakDexEntry": [ + 46, + 26512 + ], + "_MartSignText": [ + 38, + 16594 + ], + "_MeowthDexEntry": [ + 46, + 21354 + ], + "_MetapodDexEntry": [ + 46, + 17331 + ], + "_MewDexEntry": [ + 46, + 31050 + ], + "_MewtwoBattleText": [ + 39, + 19818 + ], + "_MewtwoDexEntry": [ + 46, + 30955 + ], + "_MimicLearnedMoveText": [ + 42, + 16785 + ], + "_MirrorMoveFailedText": [ + 39, + 31360 + ], + "_MoltresDexEntry": [ + 46, + 30571 + ], + "_MonCannotLearnMachineMoveText": [ + 45, + 27952 + ], + "_MonIsTakenOutText": [ + 40, + 17731 + ], + "_MonWasReleasedText": [ + 40, + 17935 + ], + "_MonWasStoredText": [ + 40, + 17635 + ], + "_MoneyForWinningText": [ + 39, + 30133 + ], + "_MonsStatsFellText": [ + 42, + 16568 + ], + "_MonsStatsRoseText": [ + 42, + 16538 + ], + "_MoveDisabledText": [ + 39, + 30565 + ], + "_MoveIsDisabledText": [ + 39, + 30995 + ], + "_MoveNameText": [ + 39, + 31052 + ], + "_MoveNoPPText": [ + 39, + 30538 + ], + "_MoveWasDisabledText": [ + 42, + 16803 + ], + "_MrFujisHouseLittleGirlPokemonAreNiceToHugText": [ + 43, + 19344 + ], + "_MrFujisHouseLittleGirlThisIsMrFujisHouseText": [ + 43, + 19251 + ], + "_MrFujisHouseMrFujiHasMyFluteHelpedYouText": [ + 43, + 19660 + ], + "_MrFujisHouseMrFujiIThinkThisMayHelpYourQuestText": [ + 43, + 19420 + ], + "_MrFujisHouseMrFujiPokeFluteExplanationText": [ + 43, + 19542 + ], + "_MrFujisHouseMrFujiPokeFluteNoRoomText": [ + 43, + 19630 + ], + "_MrFujisHouseMrFujiPokedexText": [ + 43, + 19695 + ], + "_MrFujisHouseMrFujiReceivedPokeFluteText": [ + 43, + 19520 + ], + "_MrFujisHouseNidorinoText": [ + 43, + 19402 + ], + "_MrFujisHousePsyduckText": [ + 43, + 19383 + ], + "_MrFujisHouseSuperNerdMrFujiHadBeenPrayingText": [ + 43, + 19199 + ], + "_MrFujisHouseSuperNerdMrFujiIsntHereText": [ + 43, + 19154 + ], + "_MrMimeDexEntry": [ + 46, + 28201 + ], + "_MrPsychicsHouseMrPsychicReceivedTM29Text": [ + 44, + 29736 + ], + "_MrPsychicsHouseMrPsychicTM29ExplanationText": [ + 44, + 29756 + ], + "_MrPsychicsHouseMrPsychicTM29NoRoomText": [ + 44, + 29818 + ], + "_MrPsychicsHouseMrPsychicYouWantedThisText": [ + 44, + 29692 + ], + "_MtMoon1FBewareZubatSign": [ + 38, + 18986 + ], + "_MtMoon1FCooltrainerF1AfterBattleText": [ + 38, + 18552 + ], + "_MtMoon1FCooltrainerF1BattleText": [ + 38, + 18491 + ], + "_MtMoon1FCooltrainerF1EndBattleText": [ + 38, + 18536 + ], + "_MtMoon1FCooltrainerF2AfterBattleText": [ + 38, + 18717 + ], + "_MtMoon1FCooltrainerF2BattleText": [ + 38, + 18658 + ], + "_MtMoon1FCooltrainerF2EndBattleText": [ + 38, + 18708 + ], + "_MtMoon1FHikerAfterBattleText": [ + 38, + 18372 + ], + "_MtMoon1FHikerBattleText": [ + 38, + 18306 + ], + "_MtMoon1FHikerEndBattleText": [ + 38, + 18351 + ], + "_MtMoon1FSuperNerdAfterBattleText": [ + 38, + 18627 + ], + "_MtMoon1FSuperNerdBattleText": [ + 38, + 18581 + ], + "_MtMoon1FSuperNerdEndBattleText": [ + 38, + 18609 + ], + "_MtMoon1FYoungster1AfterBattleText": [ + 38, + 18451 + ], + "_MtMoon1FYoungster1BattleText": [ + 38, + 18405 + ], + "_MtMoon1FYoungster1EndBattleText": [ + 38, + 18435 + ], + "_MtMoon1FYoungster2AfterBattleText": [ + 38, + 18827 + ], + "_MtMoon1FYoungster2BattleText": [ + 38, + 18765 + ], + "_MtMoon1FYoungster2EndBattleText": [ + 38, + 18814 + ], + "_MtMoon1FYoungster3AfterBattleText": [ + 38, + 18929 + ], + "_MtMoon1FYoungster3BattleText": [ + 38, + 18873 + ], + "_MtMoon1FYoungster3EndBattleText": [ + 38, + 18920 + ], + "_MtMoonB1FUnusedText": [ + 38, + 19019 + ], + "_MtMoonB2FDomeFossilYouWantText": [ + 38, + 19173 + ], + "_MtMoonB2FHelixFossilYouWantText": [ + 38, + 19200 + ], + "_MtMoonB2FReceivedFossilText": [ + 38, + 19228 + ], + "_MtMoonB2FRocket2AfterBattleText": [ + 38, + 19564 + ], + "_MtMoonB2FRocket2BattleText": [ + 38, + 19514 + ], + "_MtMoonB2FRocket2EndBattleText": [ + 38, + 19552 + ], + "_MtMoonB2FRocket3AfterBattleText": [ + 38, + 19677 + ], + "_MtMoonB2FRocket3BattleText": [ + 38, + 19613 + ], + "_MtMoonB2FRocket3EndBattleText": [ + 38, + 19658 + ], + "_MtMoonB2FRocket4AfterBattleText": [ + 38, + 19781 + ], + "_MtMoonB2FRocket4BattleText": [ + 38, + 19725 + ], + "_MtMoonB2FRocket4EndBattleText": [ + 38, + 19768 + ], + "_MtMoonB2FSuperNerdOkIllShareText": [ + 38, + 19336 + ], + "_MtMoonB2FSuperNerdThenThisIsMineText": [ + 38, + 19482 + ], + "_MtMoonB2FSuperNerdTheresAPokemonLabText": [ + 38, + 19390 + ], + "_MtMoonB2FSuperNerdTheyreBothMineText": [ + 38, + 19283 + ], + "_MtMoonB2FYouHaveNoRoomText": [ + 38, + 19247 + ], + "_MtMoonB2fSuperNerdEachTakeOneText": [ + 38, + 19352 + ], + "_MtMoonJessieJamesText1": [ + 38, + 19021 + ], + "_MtMoonJessieJamesText2": [ + 38, + 19041 + ], + "_MtMoonJessieJamesText3": [ + 38, + 19108 + ], + "_MtMoonJessieJamesText4": [ + 38, + 19125 + ], + "_MtMoonPokecenterBenchGuyText": [ + 39, + 24971 + ], + "_MtMoonPokecenterClipboardText": [ + 40, + 20352 + ], + "_MtMoonPokecenterGentlemanText": [ + 40, + 20275 + ], + "_MtMoonPokecenterMagikarpSalesmanIGotADealText": [ + 40, + 20354 + ], + "_MtMoonPokecenterMagikarpSalesmanNoMoneyText": [ + 40, + 20515 + ], + "_MtMoonPokecenterMagikarpSalesmanNoRefundsText": [ + 40, + 20549 + ], + "_MtMoonPokecenterMagikarpSalesmanNoText": [ + 40, + 20472 + ], + "_MtMoonPokecenterYoungsterText": [ + 40, + 20213 + ], + "_MukDexEntry": [ + 46, + 24966 + ], + "_MultiHitText": [ + 39, + 30612 + ], + "_Museum1FGamblerText": [ + 42, + 25066 + ], + "_Museum1FOldAmberText": [ + 42, + 25467 + ], + "_Museum1FScientist1AmberIsFossilizedTreeSapText": [ + 42, + 24973 + ], + "_Museum1FScientist1ComeAgainText": [ + 42, + 24707 + ], + "_Museum1FScientist1DoYouKnowWhatAmberIsText": [ + 42, + 24830 + ], + "_Museum1FScientist1DontHaveEnoughMoneyText": [ + 42, + 24801 + ], + "_Museum1FScientist1GoToOtherSideText": [ + 42, + 25006 + ], + "_Museum1FScientist1TakePlentyOfTimeText": [ + 42, + 25036 + ], + "_Museum1FScientist1ThankYouText": [ + 42, + 24777 + ], + "_Museum1FScientist1TheresALabSomewhereText": [ + 42, + 24904 + ], + "_Museum1FScientist1WouldYouLikeToComeInText": [ + 42, + 24720 + ], + "_Museum1FScientist2GetTheOldAmberCheckText": [ + 42, + 25344 + ], + "_Museum1FScientist2ReceivedOldAmberText": [ + 42, + 25320 + ], + "_Museum1FScientist2TakeThisToAPokemonLabText": [ + 42, + 25099 + ], + "_Museum1FScientist2YouDontHaveSpaceText": [ + 42, + 25377 + ], + "_Museum1FScientist3Text": [ + 42, + 25408 + ], + "_Museum2FBrunetteGirlText": [ + 42, + 25639 + ], + "_Museum2FGrampsText": [ + 42, + 25537 + ], + "_Museum2FHikerText": [ + 42, + 25705 + ], + "_Museum2FMoonStoneSignText": [ + 42, + 25890 + ], + "_Museum2FPikachuText1": [ + 42, + 25739 + ], + "_Museum2FPikachuText2": [ + 42, + 25799 + ], + "_Museum2FScientistText": [ + 42, + 25609 + ], + "_Museum2FSpaceShuttleSignText": [ + 42, + 25866 + ], + "_Museum2FYoungsterText": [ + 42, + 25497 + ], + "_MustRechargeText": [ + 39, + 30784 + ], + "_NameRatersHouseNameRaterATrulyImpeccableNameText": [ + 43, + 20657 + ], + "_NameRatersHouseNameRaterComeAnyTimeYouLikeText": [ + 43, + 20625 + ], + "_NameRatersHouseNameRaterGiveItANiceNameText": [ + 43, + 20420 + ], + "_NameRatersHouseNameRaterPokemonHasBeenRenamedText": [ + 43, + 20553 + ], + "_NameRatersHouseNameRaterWantMeToRateText": [ + 43, + 20301 + ], + "_NameRatersHouseNameRaterWhatShouldWeNameItText": [ + 43, + 20522 + ], + "_NameRatersHouseNameRaterWhichPokemonText": [ + 43, + 20390 + ], + "_NeedYourPokemonText": [ + 44, + 30675 + ], + "_NewBadgeRequiredText": [ + 45, + 16686 + ], + "_NewBicycleText": [ + 39, + 25775 + ], + "_NidokingDexEntry": [ + 46, + 19541 + ], + "_NidoqueenDexEntry": [ + 46, + 19248 + ], + "_NidoranFDexEntry": [ + 46, + 19063 + ], + "_NidoranMDexEntry": [ + 46, + 19341 + ], + "_NidorinaDexEntry": [ + 46, + 19153 + ], + "_NidorinoDexEntry": [ + 46, + 19442 + ], + "_NinetalesDexEntry": [ + 46, + 19939 + ], + "_NoCyclingAllowedHereText": [ + 45, + 28150 + ], + "_NoEffectText": [ + 42, + 16846 + ], + "_NoMonText": [ + 40, + 17761 + ], + "_NoMoreRoomForItemText": [ + 38, + 16682 + ], + "_NoMovesLeftText": [ + 39, + 30588 + ], + "_NoNibbleText": [ + 38, + 16461 + ], + "_NoPokemonText": [ + 40, + 19575 + ], + "_NoRoomToStoreText": [ + 40, + 17316 + ], + "_NoRunningText": [ + 39, + 30409 + ], + "_NoSurfingHereText": [ + 45, + 28176 + ], + "_NoTrade1Text": [ + 45, + 28537 + ], + "_NoTrade2Text": [ + 45, + 28707 + ], + "_NoTrade3Text": [ + 45, + 28897 + ], + "_NoWillText": [ + 39, + 30369 + ], + "_NotEnoughCoinsSlotMachineText": [ + 39, + 24493 + ], + "_NotEnoughMemoryText": [ + 40, + 18327 + ], + "_NotHealthyEnoughText": [ + 45, + 16665 + ], + "_NotThisTimeText": [ + 39, + 24559 + ], + "_NotVeryEffectiveText": [ + 39, + 31517 + ], + "_NothingHappenedText": [ + 42, + 16827 + ], + "_NothingHereText": [ + 38, + 16481 + ], + "_NothingStoredText": [ + 40, + 17405 + ], + "_NothingToCutText": [ + 45, + 29030 + ], + "_NothingToDepositText": [ + 40, + 17286 + ], + "_NurseChanseyText": [ + 38, + 17181 + ], + "_OHKOText": [ + 39, + 31170 + ], + "_OKExclamationText": [ + 40, + 16568 + ], + "_OakLabEmailText": [ + 39, + 26897 + ], + "_OakSpeechText1": [ + 40, + 18362 + ], + "_OakSpeechText2A": [ + 40, + 18452 + ], + "_OakSpeechText2B": [ + 40, + 18504 + ], + "_OakSpeechText3": [ + 40, + 18732 + ], + "_OaksAideComeBackText": [ + 38, + 16976 + ], + "_OaksAideGotItemText": [ + 38, + 17113 + ], + "_OaksAideHereYouGoText": [ + 38, + 17036 + ], + "_OaksAideHiText": [ + 38, + 16707 + ], + "_OaksAideNoRoomText": [ + 38, + 17132 + ], + "_OaksAideUhOhText": [ + 38, + 16868 + ], + "_OaksLabGirlText": [ + 42, + 19274 + ], + "_OaksLabGivePokeballsExplanationText": [ + 42, + 18878 + ], + "_OaksLabOak1ComeSeeMeSometimesText": [ + 42, + 19069 + ], + "_OaksLabOak1DeliverParcelText": [ + 42, + 18434 + ], + "_OaksLabOak1GoAheadItsYours": [ + 42, + 18260 + ], + "_OaksLabOak1HowIsYourPokedexComingText": [ + 42, + 19144 + ], + "_OaksLabOak1ParcelThanksText": [ + 42, + 18600 + ], + "_OaksLabOak1PokemonAroundTheWorldText": [ + 42, + 18705 + ], + "_OaksLabOak1ReceivedPokeballsText": [ + 42, + 18745 + ], + "_OaksLabOak1YouShouldTalkToIt": [ + 42, + 18384 + ], + "_OaksLabOak1YourPokemonCanFightText": [ + 42, + 18287 + ], + "_OaksLabOak2Text": [ + 42, + 19271 + ], + "_OaksLabOakBePatientText": [ + 42, + 19650 + ], + "_OaksLabOakChooseMonText": [ + 42, + 19390 + ], + "_OaksLabOakDontGoAwayYetText": [ + 42, + 20051 + ], + "_OaksLabOakGivesText": [ + 42, + 19922 + ], + "_OaksLabOakGotPokedexText": [ + 42, + 20786 + ], + "_OaksLabOakIHaveARequestText": [ + 42, + 20578 + ], + "_OaksLabOakMyInventionPokedexText": [ + 42, + 20656 + ], + "_OaksLabOakThatWasMyDreamText": [ + 42, + 20844 + ], + "_OaksLabPikachuDislikesPokeballsText1": [ + 42, + 20298 + ], + "_OaksLabPikachuDislikesPokeballsText2": [ + 42, + 20310 + ], + "_OaksLabPokedexText": [ + 42, + 19221 + ], + "_OaksLabReceivedText": [ + 42, + 20029 + ], + "_OaksLabRivalAmIGreatOrWhatText": [ + 42, + 20189 + ], + "_OaksLabRivalFedUpWithWaitingText": [ + 42, + 19354 + ], + "_OaksLabRivalGrampsIsntAroundText": [ + 42, + 18063 + ], + "_OaksLabRivalGrampsText": [ + 42, + 20512 + ], + "_OaksLabRivalIPickedTheWrongPokemonText": [ + 42, + 20143 + ], + "_OaksLabRivalIllGetABetterPokemonThanYou": [ + 42, + 18139 + ], + "_OaksLabRivalIllTakeYouOnText": [ + 42, + 20080 + ], + "_OaksLabRivalLeaveItAllToMeText": [ + 42, + 21065 + ], + "_OaksLabRivalMyPokemonHasGrownStrongerText": [ + 42, + 20524 + ], + "_OaksLabRivalMyPokemonLooksStrongerText": [ + 42, + 18182 + ], + "_OaksLabRivalSmellYouLaterText": [ + 42, + 20219 + ], + "_OaksLabRivalTakesText1": [ + 42, + 19695 + ], + "_OaksLabRivalTakesText2": [ + 42, + 19728 + ], + "_OaksLabRivalTakesText3": [ + 42, + 19751 + ], + "_OaksLabRivalTakesText4": [ + 42, + 19780 + ], + "_OaksLabRivalTakesText5": [ + 42, + 19809 + ], + "_OaksLabRivalWhatAboutMeText": [ + 42, + 19618 + ], + "_OaksLabScientistText": [ + 42, + 21235 + ], + "_OaksLabThatsAPokeball": [ + 42, + 18221 + ], + "_OddishDexEntry": [ + 46, + 20440 + ], + "_OfficerJennyText1": [ + 45, + 23075 + ], + "_OfficerJennyText2": [ + 45, + 23192 + ], + "_OfficerJennyText3": [ + 45, + 23345 + ], + "_OfficerJennyText4": [ + 45, + 23380 + ], + "_OfficerJennyText5": [ + 45, + 23408 + ], + "_OhFineThenText": [ + 40, + 18163 + ], + "_OlderFileWillBeErasedText": [ + 41, + 30320 + ], + "_OmanyteDexEntry": [ + 46, + 29791 + ], + "_OmastarDexEntry": [ + 46, + 29896 + ], + "_OnceReleasedText": [ + 40, + 17892 + ], + "_OneMoreGoSlotMachineText": [ + 39, + 24512 + ], + "_OneTwoAndText": [ + 44, + 30494 + ], + "_OnixDexEntry": [ + 46, + 25537 + ], + "_OopsYouDontHaveEnoughRoomText": [ + 40, + 18128 + ], + "_OutOfCoinsSlotMachineText": [ + 39, + 24439 + ], + "_OutOfSafariBallsText": [ + 39, + 29969 + ], + "_PPIncreasedText": [ + 45, + 27835 + ], + "_PPMaxedOutText": [ + 45, + 27812 + ], + "_PPRestoredText": [ + 45, + 27855 + ], + "_PalletTownFisherText": [ + 45, + 17353 + ], + "_PalletTownGirlText": [ + 45, + 17288 + ], + "_PalletTownOakComeWithMe": [ + 45, + 17169 + ], + "_PalletTownOakHeyWaitDontGoOutText": [ + 45, + 17072 + ], + "_PalletTownOakThatWasCloseText": [ + 45, + 17103 + ], + "_PalletTownOakWhewText": [ + 45, + 17155 + ], + "_PalletTownOaksLabSignText": [ + 45, + 17440 + ], + "_PalletTownPlayersHouseSignText": [ + 45, + 17506 + ], + "_PalletTownRivalsHouseSignText": [ + 45, + 17517 + ], + "_PalletTownSignText": [ + 45, + 17463 + ], + "_ParalyzedMayNotAttackText": [ + 42, + 16914 + ], + "_ParasDexEntry": [ + 46, + 20744 + ], + "_ParasectDexEntry": [ + 46, + 20849 + ], + "_ParlyzHealText": [ + 40, + 16851 + ], + "_PartyMenuBattleText": [ + 40, + 16736 + ], + "_PartyMenuItemUseText": [ + 40, + 16711 + ], + "_PartyMenuNormalText": [ + 40, + 16695 + ], + "_PartyMenuSwapMonText": [ + 40, + 16781 + ], + "_PartyMenuUseTMText": [ + 40, + 16759 + ], + "_PersianDexEntry": [ + 46, + 21459 + ], + "_PewterCityCooltrainerFText": [ + 45, + 19126 + ], + "_PewterCityCooltrainerMText": [ + 45, + 19223 + ], + "_PewterCityGymSignText": [ + 45, + 19970 + ], + "_PewterCityMuseumSignText": [ + 45, + 19944 + ], + "_PewterCityPokecenterGuyText": [ + 39, + 24789 + ], + "_PewterCityPoliceNoticeSignText": [ + 45, + 19841 + ], + "_PewterCitySignText": [ + 45, + 20035 + ], + "_PewterCitySuperNerd1DidYouCheckOutMuseumText": [ + 45, + 19341 + ], + "_PewterCitySuperNerd1ItsRightHereText": [ + 45, + 19453 + ], + "_PewterCitySuperNerd1WerentThoseFossilsAmazingText": [ + 45, + 19372 + ], + "_PewterCitySuperNerd1YouHaveToGoText": [ + 45, + 19417 + ], + "_PewterCitySuperNerd2DoYouKnowWhatImDoingText": [ + 45, + 19531 + ], + "_PewterCitySuperNerd2ImSprayingRepelText": [ + 45, + 19596 + ], + "_PewterCitySuperNerd2ThatsRightText": [ + 45, + 19567 + ], + "_PewterCityTrainerTipsText": [ + 45, + 19765 + ], + "_PewterCityYoungsterGoTakeOnBrockText": [ + 45, + 19717 + ], + "_PewterCityYoungsterYoureATrainerFollowMeText": [ + 45, + 19646 + ], + "_PewterGymBrockBoulderBadgeInfoText": [ + 42, + 26778 + ], + "_PewterGymBrockPostBattleAdviceText": [ + 42, + 26127 + ], + "_PewterGymBrockPreBattleText": [ + 42, + 25937 + ], + "_PewterGymBrockReceivedBoulderBadgeText": [ + 42, + 26673 + ], + "_PewterGymBrockWaitTakeThisText": [ + 42, + 26362 + ], + "_PewterGymCooltrainerMAfterBattleText": [ + 42, + 27020 + ], + "_PewterGymCooltrainerMBattleText": [ + 42, + 26901 + ], + "_PewterGymCooltrainerMEndBattleText": [ + 42, + 26968 + ], + "_PewterGymGuideAdviceText": [ + 42, + 27235 + ], + "_PewterGymGuideBeginAdviceText": [ + 42, + 27203 + ], + "_PewterGymGuideFreeServiceText": [ + 42, + 27357 + ], + "_PewterGymGuidePostBattleText": [ + 42, + 27398 + ], + "_PewterGymGuidePreAdviceText": [ + 42, + 27064 + ], + "_PewterGymGuyText": [ + 42, + 27445 + ], + "_PewterGymReceivedTM34Text": [ + 42, + 26389 + ], + "_PewterGymTM34NoRoomText": [ + 42, + 26643 + ], + "_PewterMartSuperNerdText": [ + 42, + 27900 + ], + "_PewterMartYoungsterText": [ + 42, + 27805 + ], + "_PewterNidoranHouseLittleBoyText": [ + 42, + 27602 + ], + "_PewterNidoranHouseMiddleAgedManText": [ + 42, + 27616 + ], + "_PewterNidoranHouseNidoranText": [ + 42, + 27583 + ], + "_PewterPokecenterGentlemanText": [ + 42, + 28148 + ], + "_PewterPokecenterJigglypuffText": [ + 42, + 28331 + ], + "_PewterPokecenterText3": [ + 42, + 28212 + ], + "_PewterSpeechHouseGamblerText": [ + 42, + 27974 + ], + "_PewterSpeechHouseYoungsterText": [ + 42, + 28062 + ], + "_PickUpPayDayMoneyText": [ + 40, + 16595 + ], + "_PidgeotDexEntry": [ + 46, + 18009 + ], + "_PidgeottoDexEntry": [ + 46, + 17911 + ], + "_PidgeyDexEntry": [ + 46, + 17815 + ], + "_PikachuDexEntry": [ + 46, + 18677 + ], + "_PikachuUnhappyText": [ + 40, + 17842 + ], + "_PinsirDexEntry": [ + 46, + 28704 + ], + "_PlaySlotMachineText": [ + 39, + 24408 + ], + "_PlayedFluteHadEffectText": [ + 45, + 27626 + ], + "_PlayedFluteNoEffectText": [ + 45, + 27551 + ], + "_PlayerBlackedOutText": [ + 44, + 29898 + ], + "_PlayerBlackedOutText2": [ + 39, + 30240 + ], + "_PlayerMon1Text": [ + 40, + 16545 + ], + "_PlayerMon2Text": [ + 40, + 16551 + ], + "_PlayerMonFaintedText": [ + 39, + 30180 + ], + "_PoisonedText": [ + 42, + 16446 + ], + "_PokeCenterSignText": [ + 38, + 16636 + ], + "_PokemartAnythingElseText": [ + 44, + 30238 + ], + "_PokemartBoughtItemText": [ + 44, + 30014 + ], + "_PokemartBuyingGreetingText": [ + 44, + 29965 + ], + "_PokemartGreetingText": [ + 44, + 29857 + ], + "_PokemartItemBagEmptyText": [ + 44, + 30164 + ], + "_PokemartItemBagFullText": [ + 44, + 30069 + ], + "_PokemartNotEnoughMoneyText": [ + 44, + 30040 + ], + "_PokemartTellBuyPriceText": [ + 44, + 29982 + ], + "_PokemartTellSellPriceText": [ + 44, + 30131 + ], + "_PokemartThankYouText": [ + 44, + 30226 + ], + "_PokemartUnsellableItemText": [ + 44, + 30197 + ], + "_PokemonBooksText": [ + 39, + 29849 + ], + "_PokemonCenterFarewellText": [ + 44, + 30741 + ], + "_PokemonCenterWelcomeText": [ + 44, + 30578 + ], + "_PokemonFaintedText": [ + 44, + 29884 + ], + "_PokemonFanClubBagFullText": [ + 43, + 22049 + ], + "_PokemonFanClubChairFinalText": [ + 43, + 21984 + ], + "_PokemonFanClubChairmanIntroText": [ + 43, + 21295 + ], + "_PokemonFanClubChairmanStoryText": [ + 43, + 21454 + ], + "_PokemonFanClubClefairyFanBetterText": [ + 43, + 20965 + ], + "_PokemonFanClubClefairyFanNormalText": [ + 43, + 20920 + ], + "_PokemonFanClubClefairyFanText": [ + 43, + 21015 + ], + "_PokemonFanClubClefairyText": [ + 43, + 21262 + ], + "_PokemonFanClubExplainBikeVoucherText": [ + 43, + 21810 + ], + "_PokemonFanClubNoStoryText": [ + 43, + 21937 + ], + "_PokemonFanClubReceivedBikeVoucherText": [ + 43, + 21788 + ], + "_PokemonFanClubReceptionistText": [ + 43, + 22288 + ], + "_PokemonFanClubSeelFanBetterText": [ + 43, + 21156 + ], + "_PokemonFanClubSeelFanNormalText": [ + 43, + 21108 + ], + "_PokemonFanClubSeelFanText": [ + 43, + 21198 + ], + "_PokemonFanClubSeelText": [ + 43, + 21281 + ], + "_PokemonFightingFitText": [ + 44, + 30701 + ], + "_PokemonMansion1FScientistAfterBattleText": [ + 44, + 21952 + ], + "_PokemonMansion1FScientistBattleText": [ + 44, + 21900 + ], + "_PokemonMansion1FScientistEndBattleText": [ + 44, + 21945 + ], + "_PokemonMansion1FSwitchNotPressedText": [ + 44, + 22040 + ], + "_PokemonMansion1FSwitchPressedText": [ + 44, + 22026 + ], + "_PokemonMansion1FSwitchText": [ + 44, + 21998 + ], + "_PokemonMansion2FDiary1Text": [ + 39, + 17454 + ], + "_PokemonMansion2FDiary2Text": [ + 39, + 17537 + ], + "_PokemonMansion2FSuperNerdAfterBattleText": [ + 39, + 17402 + ], + "_PokemonMansion2FSuperNerdBattleText": [ + 39, + 17327 + ], + "_PokemonMansion2FSuperNerdEndBattleText": [ + 39, + 17378 + ], + "_PokemonMansion2FSwitchNotPressedText": [ + 39, + 17641 + ], + "_PokemonMansion2FSwitchPressedText": [ + 39, + 17627 + ], + "_PokemonMansion2FSwitchText": [ + 39, + 17599 + ], + "_PokemonMansion3FDiaryText": [ + 39, + 17819 + ], + "_PokemonMansion3FScientistAfterBattleText": [ + 39, + 17773 + ], + "_PokemonMansion3FScientistBattleText": [ + 39, + 17724 + ], + "_PokemonMansion3FScientistEndBattleText": [ + 39, + 17752 + ], + "_PokemonMansion3FSuperNerdAfterBattleText": [ + 39, + 17691 + ], + "_PokemonMansion3FSuperNerdBattleText": [ + 39, + 17657 + ], + "_PokemonMansion3FSuperNerdEndBattleText": [ + 39, + 17684 + ], + "_PokemonMansionB1FBurglarAfterBattleText": [ + 39, + 17911 + ], + "_PokemonMansionB1FBurglarBattleText": [ + 39, + 17879 + ], + "_PokemonMansionB1FBurglarEndBattleText": [ + 39, + 17903 + ], + "_PokemonMansionB1FDiaryText": [ + 39, + 18043 + ], + "_PokemonMansionB1FScientistAfterBattleText": [ + 39, + 17997 + ], + "_PokemonMansionB1FScientistBattleText": [ + 39, + 17945 + ], + "_PokemonMansionB1FScientistEndBattleText": [ + 39, + 17977 + ], + "_PokemonSellingGreetingText": [ + 44, + 30101 + ], + "_PokemonStuffText": [ + 39, + 29943 + ], + "_PokemonText": [ + 44, + 29850 + ], + "_PokemonTower1FBaldingGuyText": [ + 43, + 16828 + ], + "_PokemonTower1FChannelerText": [ + 43, + 16924 + ], + "_PokemonTower1FGirlText": [ + 43, + 16890 + ], + "_PokemonTower1FMiddleAgedWomanText": [ + 43, + 16786 + ], + "_PokemonTower1FReceptionistText": [ + 43, + 16725 + ], + "_PokemonTower2FChannelerText": [ + 43, + 17392 + ], + "_PokemonTower2FRivalDefeatedText": [ + 43, + 17083 + ], + "_PokemonTower2FRivalHowsYourDexText": [ + 43, + 17197 + ], + "_PokemonTower2FRivalVictoryText": [ + 43, + 17130 + ], + "_PokemonTower2FRivalWhatBringsYouHereText": [ + 43, + 16977 + ], + "_PokemonTower3FChanneler1AfterBattleText": [ + 43, + 17530 + ], + "_PokemonTower3FChanneler1BattleText": [ + 43, + 17484 + ], + "_PokemonTower3FChanneler1EndBattleText": [ + 43, + 17514 + ], + "_PokemonTower3FChanneler2AfterBattleText": [ + 43, + 17623 + ], + "_PokemonTower3FChanneler2BattleText": [ + 43, + 17580 + ], + "_PokemonTower3FChanneler2EndBattleText": [ + 43, + 17600 + ], + "_PokemonTower3FChanneler3AfterBattleText": [ + 43, + 17695 + ], + "_PokemonTower3FChanneler3BattleText": [ + 43, + 17648 + ], + "_PokemonTower3FChanneler3EndBattleText": [ + 43, + 17671 + ], + "_PokemonTower4FChanneler1AfterBattleText": [ + 43, + 17768 + ], + "_PokemonTower4FChanneler1BattleText": [ + 43, + 17727 + ], + "_PokemonTower4FChanneler1EndBattleText": [ + 43, + 17747 + ], + "_PokemonTower4FChanneler2AfterBattleText": [ + 43, + 17833 + ], + "_PokemonTower4FChanneler2BattleText": [ + 43, + 17798 + ], + "_PokemonTower4FChanneler2EndBattleText": [ + 43, + 17826 + ], + "_PokemonTower4FChanneler3AfterBattleText": [ + 43, + 17917 + ], + "_PokemonTower4FChanneler3BattleText": [ + 43, + 17876 + ], + "_PokemonTower4FChanneler3EndBattleText": [ + 43, + 17900 + ], + "_PokemonTower5FChanneler1Text": [ + 43, + 17966 + ], + "_PokemonTower5FChanneler2AfterBattleText": [ + 43, + 18073 + ], + "_PokemonTower5FChanneler2BattleText": [ + 43, + 18037 + ], + "_PokemonTower5FChanneler2EndBattleText": [ + 43, + 18066 + ], + "_PokemonTower5FChanneler3AfterBattleText": [ + 43, + 18146 + ], + "_PokemonTower5FChanneler3BattleText": [ + 43, + 18098 + ], + "_PokemonTower5FChanneler3EndBattleText": [ + 43, + 18127 + ], + "_PokemonTower5FChanneler4AfterBattleText": [ + 43, + 18179 + ], + "_PokemonTower5FChanneler4BattleText": [ + 43, + 18164 + ], + "_PokemonTower5FChanneler4EndBattleText": [ + 43, + 18174 + ], + "_PokemonTower5FChanneler5AfterBattleText": [ + 43, + 18228 + ], + "_PokemonTower5FChanneler5BattleText": [ + 43, + 18202 + ], + "_PokemonTower5FChanneler5EndBattleText": [ + 43, + 18221 + ], + "_PokemonTower5FPurifiedZoneText": [ + 43, + 18273 + ], + "_PokemonTower6FBeGoneText": [ + 43, + 18647 + ], + "_PokemonTower6FChanneler1AfterBattleText": [ + 43, + 18477 + ], + "_PokemonTower6FChanneler1BattleText": [ + 43, + 18446 + ], + "_PokemonTower6FChanneler1EndBattleText": [ + 43, + 18469 + ], + "_PokemonTower6FChanneler2AfterBattleText": [ + 43, + 18543 + ], + "_PokemonTower6FChanneler2BattleText": [ + 43, + 18504 + ], + "_PokemonTower6FChanneler2EndBattleText": [ + 43, + 18520 + ], + "_PokemonTower6FChanneler3AfterBattleText": [ + 43, + 18625 + ], + "_PokemonTower6FChanneler3BattleText": [ + 43, + 18588 + ], + "_PokemonTower6FChanneler3EndBattleText": [ + 43, + 18618 + ], + "_PokemonTower6FGhostWasCubonesMotherText": [ + 43, + 18334 + ], + "_PokemonTower6FSoulWasCalmedText": [ + 43, + 18386 + ], + "_PokemonTower7FMrFujiRescueText": [ + 43, + 18875 + ], + "_PokemonTowerJessieJamesText1": [ + 43, + 18672 + ], + "_PokemonTowerJessieJamesText2": [ + 43, + 18692 + ], + "_PokemonTowerJessieJamesText3": [ + 43, + 18806 + ], + "_PokemonTowerJessieJamesText4": [ + 43, + 18829 + ], + "_PoliwagDexEntry": [ + 46, + 22140 + ], + "_PoliwhirlDexEntry": [ + 46, + 22242 + ], + "_PoliwrathDexEntry": [ + 46, + 22334 + ], + "_PonytaDexEntry": [ + 46, + 23801 + ], + "_PoofText": [ + 44, + 30508 + ], + "_PorygonDexEntry": [ + 46, + 29698 + ], + "_PotionText": [ + 40, + 16799 + ], + "_PowerPlantVoltorbBattleText": [ + 40, + 22759 + ], + "_PowerPlantZapdosBattleText": [ + 40, + 22767 + ], + "_PrimeapeDexEntry": [ + 46, + 21854 + ], + "_PsyduckDexEntry": [ + 46, + 21561 + ], + "_PushStartText": [ + 39, + 25797 + ], + "_RaichuDexEntry": [ + 46, + 18779 + ], + "_RaisePPWhichTechniqueText": [ + 45, + 27750 + ], + "_RanAwayScaredText": [ + 42, + 16618 + ], + "_RanFromBattleText": [ + 42, + 16598 + ], + "_RapidashDexEntry": [ + 46, + 23902 + ], + "_RareCandyText": [ + 40, + 16976 + ], + "_RaticateDexEntry": [ + 46, + 18206 + ], + "_RattataDexEntry": [ + 46, + 18104 + ], + "_RedBedroomSNESText": [ + 39, + 28120 + ], + "_RedsHouse1FMomLookingGreatText": [ + 42, + 17607 + ], + "_RedsHouse1FMomWakeUpText": [ + 42, + 17420 + ], + "_RedsHouse1FMomYouShouldRestText": [ + 42, + 17521 + ], + "_RedsHouse1FTVStandByMeMovieText": [ + 42, + 17674 + ], + "_RedsHouse1FTVWrongSideText": [ + 42, + 17756 + ], + "_ReflectGainedArmorText": [ + 42, + 17302 + ], + "_RefusingText": [ + 45, + 27452 + ], + "_RegainedHealthText": [ + 42, + 17216 + ], + "_ReleaseWhichMonText": [ + 40, + 17871 + ], + "_RepelWoreOffText": [ + 44, + 29940 + ], + "_RequireCoinCaseText": [ + 40, + 17973 + ], + "_RestorePPWhichTechniqueText": [ + 45, + 27780 + ], + "_ReviveText": [ + 40, + 16955 + ], + "_RhydonDexEntry": [ + 46, + 27219 + ], + "_RhyhornDexEntry": [ + 46, + 27126 + ], + "_Rival1WinText": [ + 39, + 30210 + ], + "_RivalDefeatedText": [ + 39, + 21301 + ], + "_RivalVictoryText": [ + 39, + 21422 + ], + "_RockTunnel1FCooltrainerF1AfterBattleText": [ + 40, + 22539 + ], + "_RockTunnel1FCooltrainerF1BattleText": [ + 40, + 22478 + ], + "_RockTunnel1FCooltrainerF1EndBattleText": [ + 40, + 22521 + ], + "_RockTunnel1FCooltrainerF2AfterBattleText": [ + 40, + 22615 + ], + "_RockTunnel1FCooltrainerF2BattleText": [ + 40, + 22571 + ], + "_RockTunnel1FCooltrainerF2EndBattleText": [ + 40, + 22598 + ], + "_RockTunnel1FCooltrainerF3AfterBattleText": [ + 40, + 22690 + ], + "_RockTunnel1FCooltrainerF3BattleText": [ + 40, + 22646 + ], + "_RockTunnel1FCooltrainerF3EndBattleText": [ + 40, + 22674 + ], + "_RockTunnel1FHiker1AfterBattleText": [ + 40, + 22129 + ], + "_RockTunnel1FHiker1BattleText": [ + 40, + 22079 + ], + "_RockTunnel1FHiker1EndBattleText": [ + 40, + 22114 + ], + "_RockTunnel1FHiker2AfterBattleText": [ + 40, + 22253 + ], + "_RockTunnel1FHiker2BattleText": [ + 40, + 22177 + ], + "_RockTunnel1FHiker2EndBattleText": [ + 40, + 22208 + ], + "_RockTunnel1FHiker3AfterBattleText": [ + 40, + 22375 + ], + "_RockTunnel1FHiker3BattleText": [ + 40, + 22316 + ], + "_RockTunnel1FHiker3EndBattleText": [ + 40, + 22366 + ], + "_RockTunnel1FSignText": [ + 40, + 22716 + ], + "_RockTunnel1FSuperNerdAfterBattleText": [ + 40, + 22443 + ], + "_RockTunnel1FSuperNerdBattleText": [ + 40, + 22407 + ], + "_RockTunnel1FSuperNerdEndBattleText": [ + 40, + 22431 + ], + "_RockTunnelB1FCooltrainerF1AfterBattleText": [ + 39, + 23381 + ], + "_RockTunnelB1FCooltrainerF1BattleText": [ + 39, + 23321 + ], + "_RockTunnelB1FCooltrainerF1EndBattleText": [ + 39, + 23359 + ], + "_RockTunnelB1FCooltrainerF2AfterBattleText": [ + 39, + 23880 + ], + "_RockTunnelB1FCooltrainerF2BattleText": [ + 39, + 23820 + ], + "_RockTunnelB1FCooltrainerF2EndBattleText": [ + 39, + 23867 + ], + "_RockTunnelB1FHiker1AfterBattleText": [ + 39, + 23454 + ], + "_RockTunnelB1FHiker1BattleText": [ + 39, + 23402 + ], + "_RockTunnelB1FHiker1EndBattleText": [ + 39, + 23434 + ], + "_RockTunnelB1FHiker2AfterBattleText": [ + 39, + 23772 + ], + "_RockTunnelB1FHiker2BattleText": [ + 39, + 23693 + ], + "_RockTunnelB1FHiker2EndBattleText": [ + 39, + 23736 + ], + "_RockTunnelB1FHiker3AfterBattleText": [ + 39, + 23965 + ], + "_RockTunnelB1FHiker3BattleText": [ + 39, + 23923 + ], + "_RockTunnelB1FHiker3EndBattleText": [ + 39, + 23952 + ], + "_RockTunnelB1FSuperNerd1AfterBattleText": [ + 39, + 23552 + ], + "_RockTunnelB1FSuperNerd1BattleText": [ + 39, + 23495 + ], + "_RockTunnelB1FSuperNerd1EndBattleText": [ + 39, + 23529 + ], + "_RockTunnelB1FSuperNerd2AfterBattleText": [ + 39, + 23650 + ], + "_RockTunnelB1FSuperNerd2BattleText": [ + 39, + 23595 + ], + "_RockTunnelB1FSuperNerd2EndBattleText": [ + 39, + 23631 + ], + "_RockTunnelB1FSuperNerd3AfterBattleText": [ + 39, + 24052 + ], + "_RockTunnelB1FSuperNerd3BattleText": [ + 39, + 24004 + ], + "_RockTunnelB1FSuperNerd3EndBattleText": [ + 39, + 24031 + ], + "_RockTunnelPokecenterFisherText": [ + 40, + 22043 + ], + "_RockTunnelPokecenterGentlemanText": [ + 40, + 21957 + ], + "_RockTunnelPokecenterGuyText": [ + 39, + 25029 + ], + "_RocketHide3AfterBattleText3": [ + 38, + 25339 + ], + "_RocketHideout3BattleText": [ + 38, + 25271 + ], + "_RocketHideout3EndBattleText3": [ + 38, + 25320 + ], + "_RocketHideoutB1FRocket1AfterBattleText": [ + 38, + 24677 + ], + "_RocketHideoutB1FRocket1BattleText": [ + 38, + 24627 + ], + "_RocketHideoutB1FRocket1EndBattleText": [ + 38, + 24663 + ], + "_RocketHideoutB1FRocket2AfterBattleText": [ + 38, + 24746 + ], + "_RocketHideoutB1FRocket2BattleText": [ + 38, + 24707 + ], + "_RocketHideoutB1FRocket2EndBattleText": [ + 38, + 24738 + ], + "_RocketHideoutB1FRocket3AfterBattleText": [ + 38, + 24824 + ], + "_RocketHideoutB1FRocket3BattleText": [ + 38, + 24792 + ], + "_RocketHideoutB1FRocket3EndBattleText": [ + 38, + 24809 + ], + "_RocketHideoutB1FRocket4AfterBattleText": [ + 38, + 24902 + ], + "_RocketHideoutB1FRocket4BattleText": [ + 38, + 24863 + ], + "_RocketHideoutB1FRocket4EndBattleText": [ + 38, + 24887 + ], + "_RocketHideoutB1FRocket5AfterBattleText": [ + 38, + 24982 + ], + "_RocketHideoutB1FRocket5BattleText": [ + 38, + 24951 + ], + "_RocketHideoutB1FRocket5EndBattleText": [ + 38, + 24617 + ], + "_RocketHideoutB2FRocketAfterBattleText": [ + 38, + 25084 + ], + "_RocketHideoutB2FRocketBattleText": [ + 38, + 25018 + ], + "_RocketHideoutB2FRocketEndBattleText": [ + 38, + 25070 + ], + "_RocketHideoutB3FRocket1AfterBattleText": [ + 38, + 25209 + ], + "_RocketHideoutB3FRocket1BattleText": [ + 38, + 25151 + ], + "_RocketHideoutB3FRocket1EndBattleText": [ + 38, + 25191 + ], + "_RocketHideoutB4FGiovanniHopeWeMeetAgainText": [ + 38, + 25637 + ], + "_RocketHideoutB4FGiovanniImpressedYouGotHereText": [ + 38, + 25568 + ], + "_RocketHideoutB4FGiovanniWhatCannotBeText": [ + 38, + 25614 + ], + "_RocketHideoutB4FRocketAfterBattleText": [ + 38, + 25854 + ], + "_RocketHideoutB4FRocketBattleText": [ + 38, + 25800 + ], + "_RocketHideoutB4FRocketEndBattleText": [ + 38, + 25849 + ], + "_RocketHideoutElevatorAppearsToNeedKeyText": [ + 38, + 25886 + ], + "_RocketHideoutJessieJamesText1": [ + 38, + 25405 + ], + "_RocketHideoutJessieJamesText2": [ + 38, + 25431 + ], + "_RocketHideoutJessieJamesText3": [ + 38, + 25498 + ], + "_RocketHideoutJessieJamesText4": [ + 38, + 25522 + ], + "_RoseText": [ + 42, + 16560 + ], + "_Route10CooltrainerF1AfterBattleText": [ + 41, + 16876 + ], + "_Route10CooltrainerF1BattleText": [ + 41, + 16795 + ], + "_Route10CooltrainerF1EndBattleText": [ + 41, + 16855 + ], + "_Route10CooltrainerF2AfterBattleText": [ + 41, + 17075 + ], + "_Route10CooltrainerF2BattleText": [ + 41, + 17011 + ], + "_Route10CooltrainerF2EndBattleText": [ + 41, + 17057 + ], + "_Route10Hiker1AfterBattleText": [ + 41, + 16675 + ], + "_Route10Hiker1BattleText": [ + 41, + 16606 + ], + "_Route10Hiker1EndBattleText": [ + 41, + 16623 + ], + "_Route10Hiker2AfterBattleText": [ + 41, + 16978 + ], + "_Route10Hiker2BattleText": [ + 41, + 16918 + ], + "_Route10Hiker2EndBattleText": [ + 41, + 16955 + ], + "_Route10PowerPlantSignText": [ + 41, + 17168 + ], + "_Route10RockTunnelSignText": [ + 41, + 17155 + ], + "_Route10SuperNerd1AfterBattleText": [ + 41, + 16574 + ], + "_Route10SuperNerd1BattleText": [ + 41, + 16496 + ], + "_Route10SuperNerd1EndBattleText": [ + 41, + 16552 + ], + "_Route10SuperNerd2AfterBattleText": [ + 41, + 16762 + ], + "_Route10SuperNerd2BattleText": [ + 41, + 16714 + ], + "_Route10SuperNerd2EndBattleText": [ + 41, + 16745 + ], + "_Route11DiglettsCaveSignText": [ + 41, + 18119 + ], + "_Route11Gambler1AfterBattleText": [ + 41, + 17226 + ], + "_Route11Gambler1BattleText": [ + 41, + 17181 + ], + "_Route11Gambler1EndBattleText": [ + 41, + 17201 + ], + "_Route11Gambler2AfterBattleText": [ + 41, + 17317 + ], + "_Route11Gambler2BattleText": [ + 41, + 17267 + ], + "_Route11Gambler2EndBattleText": [ + 41, + 17300 + ], + "_Route11Gambler3AfterBattleText": [ + 41, + 17684 + ], + "_Route11Gambler3BattleText": [ + 41, + 17639 + ], + "_Route11Gambler3EndBattleText": [ + 41, + 17668 + ], + "_Route11Gambler4AfterBattleText": [ + 41, + 17764 + ], + "_Route11Gambler4BattleText": [ + 41, + 17714 + ], + "_Route11Gambler4EndBattleText": [ + 41, + 17742 + ], + "_Route11Gate1FGuardText": [ + 40, + 22776 + ], + "_Route11Gate2FLeftBinocularsNoSnorlaxText": [ + 40, + 23133 + ], + "_Route11Gate2FLeftBinocularsSnorlaxText": [ + 40, + 23072 + ], + "_Route11Gate2FOaksAideItemfinderDescriptionText": [ + 40, + 22926 + ], + "_Route11Gate2FRightBinocularsText": [ + 40, + 23184 + ], + "_Route11SuperNerd1AfterBattleText": [ + 41, + 17503 + ], + "_Route11SuperNerd1BattleText": [ + 41, + 17445 + ], + "_Route11SuperNerd1EndBattleText": [ + 41, + 17483 + ], + "_Route11SuperNerd2AfterBattleText": [ + 41, + 17999 + ], + "_Route11SuperNerd2BattleText": [ + 41, + 17949 + ], + "_Route11SuperNerd2EndBattleText": [ + 41, + 17976 + ], + "_Route11Youngster1AfterBattleText": [ + 41, + 17410 + ], + "_Route11Youngster1BattleText": [ + 41, + 17361 + ], + "_Route11Youngster1EndBattleText": [ + 41, + 17387 + ], + "_Route11Youngster2AfterBattleText5": [ + 41, + 17604 + ], + "_Route11Youngster2BattleText": [ + 41, + 17536 + ], + "_Route11Youngster2EndBattleText": [ + 41, + 17586 + ], + "_Route11Youngster3AfterBattleText": [ + 41, + 17864 + ], + "_Route11Youngster3BattleText": [ + 41, + 17798 + ], + "_Route11Youngster3EndBattleText": [ + 41, + 17824 + ], + "_Route11Youngster4AfterBattleText": [ + 41, + 18086 + ], + "_Route11Youngster4BattleText": [ + 41, + 18031 + ], + "_Route11Youngster4EndBattleText": [ + 41, + 18064 + ], + "_Route12CooltrainerMAfterBattleText": [ + 41, + 18506 + ], + "_Route12CooltrainerMBattleText": [ + 41, + 18470 + ], + "_Route12CooltrainerMEndBattleText": [ + 41, + 18500 + ], + "_Route12Fisher1AfterBattleText": [ + 41, + 18335 + ], + "_Route12Fisher1BattleText": [ + 41, + 18284 + ], + "_Route12Fisher1EndBattleText": [ + 41, + 18311 + ], + "_Route12Fisher2AfterBattleText": [ + 41, + 18423 + ], + "_Route12Fisher2BattleText": [ + 41, + 18363 + ], + "_Route12Fisher2EndBattleText": [ + 41, + 18403 + ], + "_Route12Fisher3AfterBattleText": [ + 41, + 18699 + ], + "_Route12Fisher3BattleText": [ + 41, + 18656 + ], + "_Route12Fisher3EndBattleText": [ + 41, + 18688 + ], + "_Route12Fisher4AfterBattleText": [ + 41, + 18785 + ], + "_Route12Fisher4BattleText": [ + 41, + 18745 + ], + "_Route12Fisher4EndBattleText": [ + 41, + 18768 + ], + "_Route12Fisher5AfterBattleText": [ + 41, + 18879 + ], + "_Route12Fisher5BattleText": [ + 41, + 18831 + ], + "_Route12Fisher5EndBattleText": [ + 41, + 18869 + ], + "_Route12Gate1FGuardText": [ + 40, + 23375 + ], + "_Route12Gate2FBrunetteGirlReceivedTM39Text": [ + 40, + 23498 + ], + "_Route12Gate2FBrunetteGirlTM39ExplanationText": [ + 40, + 23517 + ], + "_Route12Gate2FBrunetteGirlTM39NoRoomText": [ + 40, + 23616 + ], + "_Route12Gate2FBrunetteGirlYouCanHaveThisText": [ + 40, + 23408 + ], + "_Route12Gate2FLeftBinocularsText": [ + 40, + 23646 + ], + "_Route12Gate2FRightBinocularsText": [ + 40, + 23690 + ], + "_Route12SignText": [ + 41, + 18931 + ], + "_Route12SnorlaxCalmedDownText": [ + 41, + 18215 + ], + "_Route12SnorlaxText": [ + 41, + 18134 + ], + "_Route12SnorlaxWokeUpText": [ + 41, + 18167 + ], + "_Route12SportFishingSignText": [ + 41, + 18960 + ], + "_Route12SuperNerdAfterBattleText": [ + 41, + 18599 + ], + "_Route12SuperNerdBattleText": [ + 41, + 18557 + ], + "_Route12SuperNerdEndBattleText": [ + 41, + 18587 + ], + "_Route12SuperRodHouseFishingGuruDoYouLikeToFishText": [ + 40, + 23735 + ], + "_Route12SuperRodHouseFishingGuruFishingWayOfLifeText": [ + 40, + 23891 + ], + "_Route12SuperRodHouseFishingGuruNoRoomText": [ + 40, + 24124 + ], + "_Route12SuperRodHouseFishingGuruReceivedSuperRodText": [ + 40, + 23812 + ], + "_Route12SuperRodHouseFishingGuruThatsDisappointingText": [ + 40, + 23973 + ], + "_Route12SuperRodHouseFishingGuruTryFishingText": [ + 40, + 24006 + ], + "_Route13Beauty1AfterBattleText": [ + 41, + 19589 + ], + "_Route13Beauty1BattleText": [ + 41, + 19540 + ], + "_Route13Beauty1EndBattleText": [ + 41, + 19566 + ], + "_Route13Beauty2AfterBattleText": [ + 41, + 19688 + ], + "_Route13Beauty2BattleText": [ + 41, + 19639 + ], + "_Route13Beauty2EndBattleText": [ + 41, + 19669 + ], + "_Route13BikerAfterBattleText": [ + 41, + 19792 + ], + "_Route13BikerBattleText": [ + 41, + 19745 + ], + "_Route13BikerEndBattleText": [ + 41, + 19769 + ], + "_Route13CooltrainerF1AfterBattleText": [ + 41, + 19115 + ], + "_Route13CooltrainerF1BattleText": [ + 41, + 19073 + ], + "_Route13CooltrainerF1EndBattleText": [ + 41, + 19101 + ], + "_Route13CooltrainerF2AfterBattleText": [ + 41, + 19210 + ], + "_Route13CooltrainerF2BattleText": [ + 41, + 19165 + ], + "_Route13CooltrainerF2EndBattleText": [ + 41, + 19197 + ], + "_Route13CooltrainerF3AfterBattleText": [ + 41, + 19327 + ], + "_Route13CooltrainerF3BattleText": [ + 41, + 19258 + ], + "_Route13CooltrainerF3EndBattleText": [ + 41, + 19304 + ], + "_Route13CooltrainerF4AfterBattleText": [ + 41, + 19425 + ], + "_Route13CooltrainerF4BattleText": [ + 41, + 19376 + ], + "_Route13CooltrainerF4EndBattleText": [ + 41, + 19408 + ], + "_Route13CooltrainerM1AfterBattleText": [ + 41, + 19030 + ], + "_Route13CooltrainerM1BattleText": [ + 41, + 18980 + ], + "_Route13CooltrainerM1EndBattleText": [ + 41, + 19009 + ], + "_Route13CooltrainerM2AfterBattleText": [ + 41, + 19508 + ], + "_Route13CooltrainerM2BattleText": [ + 41, + 19463 + ], + "_Route13CooltrainerM2EndBattleText": [ + 41, + 19490 + ], + "_Route13CooltrainerM3AfterBattleText": [ + 41, + 19847 + ], + "_Route13CooltrainerM3BattleText": [ + 41, + 19803 + ], + "_Route13CooltrainerM3EndBattleText": [ + 41, + 19832 + ], + "_Route13SignText": [ + 41, + 20002 + ], + "_Route13TrainerTips1Text": [ + 41, + 19896 + ], + "_Route13TrainerTips2Text": [ + 41, + 19941 + ], + "_Route14Biker1AfterBattleText": [ + 41, + 20752 + ], + "_Route14Biker1BattleText": [ + 41, + 20689 + ], + "_Route14Biker1EndBattleText": [ + 41, + 20729 + ], + "_Route14Biker2AfterBattleText": [ + 41, + 20838 + ], + "_Route14Biker2BattleText": [ + 41, + 20789 + ], + "_Route14Biker2EndBattleText": [ + 41, + 20825 + ], + "_Route14Biker3AfterBattleText": [ + 41, + 20923 + ], + "_Route14Biker3BattleText": [ + 41, + 20868 + ], + "_Route14Biker3EndBattleText": [ + 41, + 20912 + ], + "_Route14Biker4AfterBattleText": [ + 41, + 21036 + ], + "_Route14Biker4BattleText": [ + 41, + 20996 + ], + "_Route14Biker4EndBattleText": [ + 41, + 21023 + ], + "_Route14CooltrainerM1AfterBattleText": [ + 41, + 20104 + ], + "_Route14CooltrainerM1BattleText": [ + 41, + 20036 + ], + "_Route14CooltrainerM1EndBattleText": [ + 41, + 20086 + ], + "_Route14CooltrainerM2AfterBattleText": [ + 41, + 20224 + ], + "_Route14CooltrainerM2BattleText": [ + 41, + 20166 + ], + "_Route14CooltrainerM2EndBattleText": [ + 41, + 20208 + ], + "_Route14CooltrainerM3AfterBattleText": [ + 41, + 20334 + ], + "_Route14CooltrainerM3BattleText": [ + 41, + 20258 + ], + "_Route14CooltrainerM3EndBattleText": [ + 41, + 20320 + ], + "_Route14CooltrainerM4AfterBattleText": [ + 41, + 20459 + ], + "_Route14CooltrainerM4BattleText": [ + 41, + 20393 + ], + "_Route14CooltrainerM4EndBattleText": [ + 41, + 20437 + ], + "_Route14CooltrainerM5AfterBattleText": [ + 41, + 20546 + ], + "_Route14CooltrainerM5BattleText": [ + 41, + 20488 + ], + "_Route14CooltrainerM5EndBattleText": [ + 41, + 20527 + ], + "_Route14CooltrainerM6AfterBattleText": [ + 41, + 20637 + ], + "_Route14CooltrainerM6BattleText": [ + 41, + 20591 + ], + "_Route14CooltrainerM6EndBattleText": [ + 41, + 20625 + ], + "_Route14SignText": [ + 41, + 21079 + ], + "_Route15Beauty1AfterBattleText": [ + 41, + 21663 + ], + "_Route15Beauty1BattleText": [ + 41, + 21611 + ], + "_Route15Beauty1EndBattleText": [ + 41, + 21638 + ], + "_Route15Beauty2AfterBattleText": [ + 41, + 21753 + ], + "_Route15Beauty2BattleText": [ + 41, + 21694 + ], + "_Route15Beauty2EndBattleText": [ + 41, + 21730 + ], + "_Route15Biker1AfterBattleText": [ + 41, + 21841 + ], + "_Route15Biker1BattleText": [ + 41, + 21797 + ], + "_Route15Biker1EndBattleText": [ + 41, + 21831 + ], + "_Route15Biker2AfterBattleText": [ + 41, + 21976 + ], + "_Route15Biker2BattleText": [ + 41, + 21905 + ], + "_Route15Biker2EndBattleText": [ + 41, + 21956 + ], + "_Route15CooltrainerF1AfterBattleText": [ + 41, + 21176 + ], + "_Route15CooltrainerF1BattleText": [ + 41, + 21110 + ], + "_Route15CooltrainerF1EndBattleText": [ + 41, + 21158 + ], + "_Route15CooltrainerF2AfterBattleText": [ + 41, + 21326 + ], + "_Route15CooltrainerF2BattleText": [ + 41, + 21269 + ], + "_Route15CooltrainerF2EndBattleText": [ + 41, + 21314 + ], + "_Route15CooltrainerF3AfterBattleText": [ + 41, + 22054 + ], + "_Route15CooltrainerF3BattleText": [ + 41, + 22012 + ], + "_Route15CooltrainerF3EndBattleText": [ + 41, + 22039 + ], + "_Route15CooltrainerF4AfterBattleText": [ + 41, + 22135 + ], + "_Route15CooltrainerF4BattleText": [ + 41, + 22085 + ], + "_Route15CooltrainerF4EndBattleText": [ + 41, + 22113 + ], + "_Route15CooltrainerM1AfterBattleText": [ + 41, + 21436 + ], + "_Route15CooltrainerM1BattleText": [ + 41, + 21376 + ], + "_Route15CooltrainerM1EndBattleText": [ + 41, + 21417 + ], + "_Route15CooltrainerM2AfterBattleText": [ + 41, + 21544 + ], + "_Route15CooltrainerM2BattleText": [ + 41, + 21471 + ], + "_Route15CooltrainerM2EndBattleText": [ + 41, + 21524 + ], + "_Route15Gate1FGuardText": [ + 40, + 24183 + ], + "_Route15Gate2FBinocularsText": [ + 40, + 24425 + ], + "_Route15Gate2FOaksAideExpAllText": [ + 40, + 24240 + ], + "_Route15SignText": [ + 41, + 22170 + ], + "_Route15UpstairsBinocularsText": [ + 39, + 28169 + ], + "_Route16Biker1AfterBattleText": [ + 41, + 22242 + ], + "_Route16Biker1BattleText": [ + 41, + 22201 + ], + "_Route16Biker1EndBattleText": [ + 41, + 22220 + ], + "_Route16Biker2AfterBattleText": [ + 41, + 22326 + ], + "_Route16Biker2BattleText": [ + 41, + 22287 + ], + "_Route16Biker2EndBattleText": [ + 41, + 22313 + ], + "_Route16Biker3AfterBattleText": [ + 41, + 22410 + ], + "_Route16Biker3BattleText": [ + 41, + 22359 + ], + "_Route16Biker3EndBattleText": [ + 41, + 22393 + ], + "_Route16Biker4AfterBattleText": [ + 41, + 22479 + ], + "_Route16Biker4EndBattleText": [ + 41, + 22470 + ], + "_Route16Biker5AfterBattleText": [ + 41, + 22590 + ], + "_Route16Biker5BattleText": [ + 41, + 22545 + ], + "_Route16Biker5EndBattleText": [ + 41, + 22574 + ], + "_Route16Biker6AfterBattleText": [ + 41, + 22673 + ], + "_Route16Biker6BattleText": [ + 41, + 22639 + ], + "_Route16Biker6EndBattleText": [ + 41, + 22654 + ], + "_Route16CyclingRoadSignText": [ + 41, + 22854 + ], + "_Route16FlyHouseBrunetteGirlHM02ExplanationText": [ + 40, + 24957 + ], + "_Route16FlyHouseBrunetteGirlHM02NoRoomText": [ + 40, + 25026 + ], + "_Route16FlyHouseBrunetteGirlReceivedHM02Text": [ + 40, + 24938 + ], + "_Route16FlyHouseBrunetteGirlText": [ + 40, + 24838 + ], + "_Route16FlyHouseFearowText": [ + 40, + 25060 + ], + "_Route16Gate1FGamblerText": [ + 40, + 24622 + ], + "_Route16Gate1FGuardCyclingRoadExplanationText": [ + 40, + 24529 + ], + "_Route16Gate1FGuardNoPedestriansAllowedText": [ + 40, + 24484 + ], + "_Route16Gate1FGuardWaitUpText": [ + 40, + 24594 + ], + "_Route16Gate2FLeftBinocularsText": [ + 40, + 24724 + ], + "_Route16Gate2FLittleBoyText": [ + 40, + 24653 + ], + "_Route16Gate2FLittleGirlText": [ + 40, + 24695 + ], + "_Route16Gate2FRightBinocularsText": [ + 40, + 24778 + ], + "_Route16SignText": [ + 41, + 22885 + ], + "_Route16SnorlaxReturnedToMountainsText": [ + 41, + 22801 + ], + "_Route16SnorlaxWokeUpText": [ + 41, + 22753 + ], + "_Route16Text7": [ + 41, + 22720 + ], + "_Route16biker4BattleText": [ + 41, + 22444 + ], + "_Route17Biker10AfterBattleText": [ + 41, + 23656 + ], + "_Route17Biker10BattleText": [ + 41, + 23609 + ], + "_Route17Biker10EndBattleText": [ + 41, + 23636 + ], + "_Route17Biker1AfterBattleText": [ + 41, + 22971 + ], + "_Route17Biker1BattleText": [ + 41, + 22923 + ], + "_Route17Biker1EndBattleText": [ + 41, + 22958 + ], + "_Route17Biker2AfterBattleText": [ + 41, + 23049 + ], + "_Route17Biker2BattleText": [ + 41, + 23016 + ], + "_Route17Biker2EndBattleText": [ + 41, + 23042 + ], + "_Route17Biker3AfterBattleText": [ + 41, + 23128 + ], + "_Route17Biker3BattleText": [ + 41, + 23086 + ], + "_Route17Biker3EndBattleText": [ + 41, + 23111 + ], + "_Route17Biker4AfterBattleText": [ + 41, + 23191 + ], + "_Route17Biker4BattleText": [ + 41, + 23153 + ], + "_Route17Biker4EndBattleText": [ + 41, + 23182 + ], + "_Route17Biker5AfterBattleText": [ + 41, + 23266 + ], + "_Route17Biker5BattleText": [ + 41, + 23223 + ], + "_Route17Biker5EndBattleText": [ + 41, + 23251 + ], + "_Route17Biker6AfterBattleText": [ + 41, + 23352 + ], + "_Route17Biker6BattleText": [ + 41, + 23314 + ], + "_Route17Biker6EndBattleText": [ + 41, + 23341 + ], + "_Route17Biker7AfterBattleText": [ + 41, + 23448 + ], + "_Route17Biker7BattleText": [ + 41, + 23400 + ], + "_Route17Biker7EndBattleText": [ + 41, + 23427 + ], + "_Route17Biker8AfterBattleText": [ + 41, + 23501 + ], + "_Route17Biker8BattleText": [ + 41, + 23478 + ], + "_Route17Biker8EndBattleText": [ + 41, + 23491 + ], + "_Route17Biker9AfterBattleText": [ + 41, + 23574 + ], + "_Route17Biker9BattleText": [ + 41, + 23538 + ], + "_Route17Biker9EndBattleText": [ + 41, + 23566 + ], + "_Route17CyclingRoadEndsSignText": [ + 41, + 23996 + ], + "_Route17NoticeSign1Text": [ + 41, + 23683 + ], + "_Route17NoticeSign2Text": [ + 41, + 23937 + ], + "_Route17SignText": [ + 41, + 23899 + ], + "_Route17TrainerTips1Text": [ + 41, + 23729 + ], + "_Route17TrainerTips2Text": [ + 41, + 23826 + ], + "_Route18CooltrainerM1AfterBattleText": [ + 41, + 24081 + ], + "_Route18CooltrainerM1BattleText": [ + 41, + 24027 + ], + "_Route18CooltrainerM1EndBattleText": [ + 41, + 24075 + ], + "_Route18CooltrainerM2AfterBattleText": [ + 41, + 24163 + ], + "_Route18CooltrainerM2BattleText": [ + 41, + 24103 + ], + "_Route18CooltrainerM2EndBattleText": [ + 41, + 24144 + ], + "_Route18CooltrainerM3AfterBattleText": [ + 41, + 24243 + ], + "_Route18CooltrainerM3BattleText": [ + 41, + 24201 + ], + "_Route18CooltrainerM3EndBattleText": [ + 41, + 24236 + ], + "_Route18CyclingRoadSignText": [ + 41, + 24317 + ], + "_Route18Gate1FGuardCyclingRoadUphillText": [ + 40, + 25115 + ], + "_Route18Gate1FGuardExcuseMeText": [ + 40, + 25154 + ], + "_Route18Gate1FGuardYouNeedABicycleText": [ + 40, + 25077 + ], + "_Route18Gate2FLeftBinocularsText": [ + 40, + 25166 + ], + "_Route18Gate2FRightBinocularsText": [ + 40, + 25223 + ], + "_Route18SignText": [ + 41, + 24279 + ], + "_Route19CooltrainerM1AfterBattleText": [ + 41, + 24406 + ], + "_Route19CooltrainerM1BattleText": [ + 41, + 24357 + ], + "_Route19CooltrainerM1EndBattleText": [ + 41, + 24390 + ], + "_Route19CooltrainerM2AfterBattleText": [ + 41, + 24495 + ], + "_Route19CooltrainerM2BattleText": [ + 41, + 24441 + ], + "_Route19CooltrainerM2EndBattleText": [ + 41, + 24475 + ], + "_Route19SignText": [ + 41, + 25206 + ], + "_Route19Swimmer1AfterBattleText": [ + 41, + 24568 + ], + "_Route19Swimmer1BattleText": [ + 41, + 24521 + ], + "_Route19Swimmer1EndBattleText": [ + 41, + 24555 + ], + "_Route19Swimmer2AfterBattleText": [ + 41, + 24632 + ], + "_Route19Swimmer2BattleText": [ + 41, + 24598 + ], + "_Route19Swimmer2EndBattleText": [ + 41, + 24625 + ], + "_Route19Swimmer3AfterBattleText": [ + 41, + 24713 + ], + "_Route19Swimmer3BattleText": [ + 41, + 24660 + ], + "_Route19Swimmer3EndBattleText": [ + 41, + 24706 + ], + "_Route19Swimmer4AfterBattleText": [ + 41, + 24792 + ], + "_Route19Swimmer4BattleText": [ + 41, + 24745 + ], + "_Route19Swimmer4EndBattleText": [ + 41, + 24775 + ], + "_Route19Swimmer5AfterBattleText": [ + 41, + 24891 + ], + "_Route19Swimmer5BattleText": [ + 41, + 24826 + ], + "_Route19Swimmer5EndBattleText": [ + 41, + 24878 + ], + "_Route19Swimmer6AfterBattleText": [ + 41, + 24983 + ], + "_Route19Swimmer6BattleText": [ + 41, + 24939 + ], + "_Route19Swimmer6EndBattleText": [ + 41, + 24973 + ], + "_Route19Swimmer7AfterBattleText": [ + 41, + 25081 + ], + "_Route19Swimmer7BattleText": [ + 41, + 25033 + ], + "_Route19Swimmer7EndBattleText": [ + 41, + 25064 + ], + "_Route19Swimmer8AfterBattleText": [ + 41, + 25156 + ], + "_Route19Swimmer8BattleText": [ + 41, + 25111 + ], + "_Route19Swimmer8EndBattleText": [ + 41, + 25139 + ], + "_Route1SignText": [ + 40, + 27954 + ], + "_Route1Youngster1AlsoGotPokeballsText": [ + 40, + 27748 + ], + "_Route1Youngster1GotPotionText": [ + 40, + 27733 + ], + "_Route1Youngster1MartSampleText": [ + 40, + 27601 + ], + "_Route1Youngster1NoRoomText": [ + 40, + 27790 + ], + "_Route1Youngster2Text": [ + 40, + 27825 + ], + "_Route20CooltrainerMAfterBattleText": [ + 41, + 25754 + ], + "_Route20CooltrainerMBattleText": [ + 41, + 25719 + ], + "_Route20CooltrainerMEndBattleText": [ + 41, + 25746 + ], + "_Route20SeafoamIslandsSignText": [ + 41, + 26081 + ], + "_Route20Swimmer1AfterBattleText": [ + 41, + 25288 + ], + "_Route20Swimmer1BattleText": [ + 41, + 25251 + ], + "_Route20Swimmer1EndBattleText": [ + 41, + 25279 + ], + "_Route20Swimmer2AfterBattleText": [ + 41, + 25357 + ], + "_Route20Swimmer2BattleText": [ + 41, + 25318 + ], + "_Route20Swimmer2EndBattleText": [ + 41, + 25347 + ], + "_Route20Swimmer3AfterBattleText": [ + 41, + 25445 + ], + "_Route20Swimmer3BattleText": [ + 41, + 25403 + ], + "_Route20Swimmer3EndBattleText": [ + 41, + 25437 + ], + "_Route20Swimmer4AfterBattleText": [ + 41, + 25513 + ], + "_Route20Swimmer4BattleText": [ + 41, + 25469 + ], + "_Route20Swimmer4EndBattleText": [ + 41, + 25495 + ], + "_Route20Swimmer5AfterBattleText": [ + 41, + 25582 + ], + "_Route20Swimmer5BattleText": [ + 41, + 25545 + ], + "_Route20Swimmer5EndBattleText": [ + 41, + 25574 + ], + "_Route20Swimmer6AfterBattleText": [ + 41, + 25688 + ], + "_Route20Swimmer6BattleText": [ + 41, + 25627 + ], + "_Route20Swimmer6EndBattleText": [ + 41, + 25670 + ], + "_Route20Swimmer7AfterBattleText": [ + 41, + 25840 + ], + "_Route20Swimmer7BattleText": [ + 41, + 25782 + ], + "_Route20Swimmer7EndBattleText": [ + 41, + 25817 + ], + "_Route20Swimmer8AfterBattleText": [ + 41, + 25941 + ], + "_Route20Swimmer8BattleText": [ + 41, + 25885 + ], + "_Route20Swimmer8EndBattleText": [ + 41, + 25920 + ], + "_Route20Swimmer9AfterBattleText": [ + 41, + 26048 + ], + "_Route20Swimmer9BattleText": [ + 41, + 25997 + ], + "_Route20Swimmer9EndBattleText": [ + 41, + 26041 + ], + "_Route21Fisher1AfterBattleText": [ + 41, + 26147 + ], + "_Route21Fisher1BattleText": [ + 41, + 26098 + ], + "_Route21Fisher1EndBattleText": [ + 41, + 26140 + ], + "_Route21Fisher2AfterBattleText": [ + 41, + 26228 + ], + "_Route21Fisher2BattleText": [ + 41, + 26176 + ], + "_Route21Fisher2EndBattleText": [ + 41, + 26212 + ], + "_Route21Fisher3AfterBattleText": [ + 41, + 26750 + ], + "_Route21Fisher3BattleText": [ + 41, + 26693 + ], + "_Route21Fisher3EndBattleText": [ + 41, + 26725 + ], + "_Route21Fisher4AfterBattleText": [ + 41, + 26857 + ], + "_Route21Fisher4BattleText": [ + 41, + 26799 + ], + "_Route21Fisher4EndBattleText": [ + 41, + 26833 + ], + "_Route21Swimmer1AfterBattleText": [ + 41, + 26303 + ], + "_Route21Swimmer1BattleText": [ + 41, + 26260 + ], + "_Route21Swimmer1EndBattleText": [ + 41, + 26296 + ], + "_Route21Swimmer2AfterBattleText": [ + 41, + 26374 + ], + "_Route21Swimmer2BattleText": [ + 41, + 26330 + ], + "_Route21Swimmer2EndBattleText": [ + 41, + 26361 + ], + "_Route21Swimmer3AfterBattleText": [ + 41, + 26471 + ], + "_Route21Swimmer3BattleText": [ + 41, + 26425 + ], + "_Route21Swimmer3EndBattleText": [ + 41, + 26455 + ], + "_Route21Swimmer4AfterBattleText": [ + 41, + 26560 + ], + "_Route21Swimmer4BattleText": [ + 41, + 26500 + ], + "_Route21Swimmer4EndBattleText": [ + 41, + 26536 + ], + "_Route21Swimmer5AfterBattleText": [ + 41, + 26668 + ], + "_Route21Swimmer5BattleText": [ + 41, + 26621 + ], + "_Route21Swimmer5EndBattleText": [ + 41, + 26654 + ], + "_Route22GateGuardGoRightAheadText": [ + 40, + 26161 + ], + "_Route22GateGuardICantLetYouPassText": [ + 40, + 26117 + ], + "_Route22GateGuardNoBoulderbadgeText": [ + 40, + 26030 + ], + "_Route22PokemonLeagueSignText": [ + 41, + 27713 + ], + "_Route22Rival1DefeatedText": [ + 41, + 26887 + ], + "_Route22Rival1VictoryText": [ + 41, + 26915 + ], + "_Route22Rival2DefeatedText": [ + 41, + 26979 + ], + "_Route22Rival2VictoryText": [ + 41, + 27008 + ], + "_Route22RivalAfterBattleText1": [ + 41, + 27272 + ], + "_Route22RivalAfterBattleText2": [ + 41, + 27588 + ], + "_Route22RivalBeforeBattleText1": [ + 41, + 27110 + ], + "_Route22RivalBeforeBattleText2": [ + 41, + 27405 + ], + "_Route23GoRightAheadText": [ + 41, + 27928 + ], + "_Route23OhThatIsTheBadgeText": [ + 41, + 27857 + ], + "_Route23VictoryRoadGateSignText": [ + 41, + 27963 + ], + "_Route23YouDontHaveTheBadgeYetText": [ + 41, + 27737 + ], + "_Route24CooltrainerF1AfterBattleText": [ + 41, + 28666 + ], + "_Route24CooltrainerF1BattleText": [ + 41, + 28627 + ], + "_Route24CooltrainerF1EndBattleText": [ + 41, + 28653 + ], + "_Route24CooltrainerF2AfterBattleText": [ + 41, + 28833 + ], + "_Route24CooltrainerF2BattleText": [ + 41, + 28785 + ], + "_Route24CooltrainerF2EndBattleText": [ + 41, + 28814 + ], + "_Route24CooltrainerM1DefeatedText": [ + 41, + 28357 + ], + "_Route24CooltrainerM1JoinTeamRocketText": [ + 41, + 28131 + ], + "_Route24CooltrainerM1NoRoomText": [ + 41, + 28106 + ], + "_Route24CooltrainerM1ReceivedNuggetText": [ + 41, + 28084 + ], + "_Route24CooltrainerM1YouBeatOurContestText": [ + 41, + 27996 + ], + "_Route24CooltrainerM1YouCouldBecomeATopLeaderText": [ + 41, + 28379 + ], + "_Route24CooltrainerM1YouJustEarnedAPrizeText": [ + 41, + 28048 + ], + "_Route24CooltrainerM2AfterBattleText": [ + 41, + 28494 + ], + "_Route24CooltrainerM2BattleText": [ + 41, + 28445 + ], + "_Route24CooltrainerM2EndBattleText": [ + 41, + 28478 + ], + "_Route24CooltrainerM3AfterBattleText": [ + 41, + 28592 + ], + "_Route24CooltrainerM3BattleText": [ + 41, + 28545 + ], + "_Route24CooltrainerM3EndBattleText": [ + 41, + 28575 + ], + "_Route24DamianText1": [ + 41, + 29020 + ], + "_Route24DamianText2": [ + 41, + 29164 + ], + "_Route24DamianText3": [ + 41, + 29199 + ], + "_Route24DamianText4": [ + 41, + 29233 + ], + "_Route24Youngster1AfterBattleText": [ + 41, + 28750 + ], + "_Route24Youngster1BattleText": [ + 41, + 28701 + ], + "_Route24Youngster1EndBattleText": [ + 41, + 28731 + ], + "_Route24Youngster2AfterBattleText": [ + 41, + 28985 + ], + "_Route24Youngster2BattleText": [ + 41, + 28868 + ], + "_Route24Youngster2EndBattleText": [ + 41, + 28966 + ], + "_Route25BillSignText": [ + 41, + 30197 + ], + "_Route25CooltrainerF1AfterBattleText": [ + 41, + 29632 + ], + "_Route25CooltrainerF1BattleText": [ + 41, + 29588 + ], + "_Route25CooltrainerF1EndBattleText": [ + 41, + 29616 + ], + "_Route25CooltrainerF2AfterBattleText": [ + 41, + 29835 + ], + "_Route25CooltrainerF2BattleText": [ + 41, + 29772 + ], + "_Route25CooltrainerF2EndBattleText": [ + 41, + 29815 + ], + "_Route25CooltrainerMAfterBattleText": [ + 41, + 29552 + ], + "_Route25CooltrainerMBattleText": [ + 41, + 29499 + ], + "_Route25CooltrainerMEndBattleText": [ + 41, + 29538 + ], + "_Route25Hiker1AfterBattleText": [ + 41, + 29946 + ], + "_Route25Hiker1BattleText": [ + 41, + 29883 + ], + "_Route25Hiker1EndBattleText": [ + 41, + 29928 + ], + "_Route25Hiker2AfterBattleText": [ + 41, + 30041 + ], + "_Route25Hiker2BattleText": [ + 41, + 29983 + ], + "_Route25Hiker2EndBattleText": [ + 41, + 30028 + ], + "_Route25Hiker3AfterBattleText": [ + 41, + 30148 + ], + "_Route25Hiker3BattleText": [ + 41, + 30085 + ], + "_Route25Hiker3EndBattleText": [ + 41, + 30130 + ], + "_Route25Youngster1AfterBattleText": [ + 41, + 29311 + ], + "_Route25Youngster1BattleText": [ + 41, + 29257 + ], + "_Route25Youngster1EndBattleText": [ + 41, + 29296 + ], + "_Route25Youngster2AfterBattleText": [ + 41, + 29447 + ], + "_Route25Youngster2BattleText": [ + 41, + 29373 + ], + "_Route25Youngster2EndBattleText": [ + 41, + 29434 + ], + "_Route25Youngster3AfterBattleText": [ + 41, + 29716 + ], + "_Route25Youngster3BattleText": [ + 41, + 29667 + ], + "_Route25Youngster3EndBattleText": [ + 41, + 29695 + ], + "_Route2DiglettsCaveSignText": [ + 40, + 28028 + ], + "_Route2GateOaksAideFlashExplanationText": [ + 40, + 19941 + ], + "_Route2GateYoungsterText": [ + 40, + 19989 + ], + "_Route2SignText": [ + 40, + 27991 + ], + "_Route2TradeHouseScientistText": [ + 40, + 19873 + ], + "_Route3CooltrainerF1AfterBattleText": [ + 40, + 28429 + ], + "_Route3CooltrainerF1BattleText": [ + 40, + 28386 + ], + "_Route3CooltrainerF1EndBattleText": [ + 40, + 28416 + ], + "_Route3CooltrainerF2AfterBattleText": [ + 40, + 28654 + ], + "_Route3CooltrainerF2BattleText": [ + 40, + 28601 + ], + "_Route3CooltrainerF2EndBattleText": [ + 40, + 28644 + ], + "_Route3CooltrainerF3AfterBattleText": [ + 40, + 28918 + ], + "_Route3CooltrainerF3BattleText": [ + 40, + 28883 + ], + "_Route3CooltrainerF3EndBattleText": [ + 40, + 28907 + ], + "_Route3SignText": [ + 40, + 28954 + ], + "_Route3Text1": [ + 40, + 28043 + ], + "_Route3Youngster1AfterBattleText": [ + 40, + 28191 + ], + "_Route3Youngster1BattleText": [ + 40, + 28135 + ], + "_Route3Youngster1EndBattleText": [ + 40, + 28171 + ], + "_Route3Youngster2AfterBattleText": [ + 40, + 28325 + ], + "_Route3Youngster2BattleText": [ + 40, + 28254 + ], + "_Route3Youngster2EndBattleText": [ + 40, + 28305 + ], + "_Route3Youngster3AfterBattleText": [ + 40, + 28537 + ], + "_Route3Youngster3BattleText": [ + 40, + 28470 + ], + "_Route3Youngster3EndBattleText": [ + 40, + 28502 + ], + "_Route3Youngster4AfterBattleText": [ + 40, + 28750 + ], + "_Route3Youngster4BattleText": [ + 40, + 28699 + ], + "_Route3Youngster4EndBattleText": [ + 40, + 28731 + ], + "_Route3Youngster5AfterBattleText": [ + 40, + 28836 + ], + "_Route3Youngster5BattleText": [ + 40, + 28789 + ], + "_Route3Youngster5EndBattleText": [ + 40, + 28817 + ], + "_Route4CooltrainerF1Text": [ + 40, + 28977 + ], + "_Route4CooltrainerF2AfterBattleText": [ + 40, + 29083 + ], + "_Route4CooltrainerF2BattleText": [ + 40, + 29022 + ], + "_Route4CooltrainerF2EndBattleText": [ + 40, + 29055 + ], + "_Route4MtMoonSignText": [ + 40, + 29152 + ], + "_Route4SignText": [ + 40, + 29177 + ], + "_Route5UndergroundPathSignText": [ + 40, + 29210 + ], + "_Route6CooltrainerF1AfterBattleText": [ + 40, + 29423 + ], + "_Route6CooltrainerF1BattleText": [ + 40, + 29359 + ], + "_Route6CooltrainerF1EndBattleText": [ + 40, + 29401 + ], + "_Route6CooltrainerF2AfterBattleText": [ + 40, + 29720 + ], + "_Route6CooltrainerF2BattleText": [ + 40, + 29677 + ], + "_Route6CooltrainerF2EndBattleText": [ + 40, + 29702 + ], + "_Route6CooltrainerM1AfterBattleText": [ + 40, + 29324 + ], + "_Route6CooltrainerM1BattleText": [ + 40, + 29259 + ], + "_Route6CooltrainerM1EndBattleText": [ + 40, + 29303 + ], + "_Route6CooltrainerM2AfterBattleText": [ + 40, + 29631 + ], + "_Route6CooltrainerM2BattleText": [ + 40, + 29582 + ], + "_Route6CooltrainerM2EndBattleText": [ + 40, + 29612 + ], + "_Route6UndergroundPathSignText": [ + 40, + 29863 + ], + "_Route6Youngster1AfterBattleText": [ + 40, + 29531 + ], + "_Route6Youngster1BattleText": [ + 40, + 29478 + ], + "_Route6Youngster1EndBattleText": [ + 40, + 29511 + ], + "_Route6Youngster2AfterBattleText": [ + 40, + 29825 + ], + "_Route6Youngster2BattleText": [ + 40, + 29764 + ], + "_Route6Youngster2EndBattleText": [ + 40, + 29806 + ], + "_Route7UndergroundPathSignText": [ + 40, + 29912 + ], + "_Route8CooltrainerF1AfterBattleText": [ + 40, + 30286 + ], + "_Route8CooltrainerF1BattleText": [ + 40, + 30238 + ], + "_Route8CooltrainerF1EndBattleText": [ + 40, + 30274 + ], + "_Route8CooltrainerF2AfterBattleText": [ + 40, + 30493 + ], + "_Route8CooltrainerF2BattleText": [ + 40, + 30448 + ], + "_Route8CooltrainerF2EndBattleText": [ + 40, + 30486 + ], + "_Route8CooltrainerF3AfterBattleText": [ + 40, + 30600 + ], + "_Route8CooltrainerF3BattleText": [ + 40, + 30535 + ], + "_Route8CooltrainerF3EndBattleText": [ + 40, + 30580 + ], + "_Route8CooltrainerF4AfterBattleText": [ + 40, + 30848 + ], + "_Route8CooltrainerF4BattleText": [ + 40, + 30771 + ], + "_Route8CooltrainerF4EndBattleText": [ + 40, + 30809 + ], + "_Route8Gambler1AfterBattleText": [ + 40, + 30106 + ], + "_Route8Gambler1BattleText": [ + 40, + 30052 + ], + "_Route8Gambler1EndBattleText": [ + 40, + 30084 + ], + "_Route8Gambler2AfterBattleText": [ + 40, + 30711 + ], + "_Route8Gambler2BattleText": [ + 40, + 30657 + ], + "_Route8Gambler2EndBattleText": [ + 40, + 30688 + ], + "_Route8SuperNerd1AfterBattleText": [ + 40, + 30018 + ], + "_Route8SuperNerd1BattleText": [ + 40, + 29959 + ], + "_Route8SuperNerd1EndBattleText": [ + 40, + 30003 + ], + "_Route8SuperNerd2AfterBattleText": [ + 40, + 30190 + ], + "_Route8SuperNerd2BattleText": [ + 40, + 30137 + ], + "_Route8SuperNerd2EndBattleText": [ + 40, + 30172 + ], + "_Route8SuperNerd3AfterBattleText": [ + 40, + 30398 + ], + "_Route8SuperNerd3BattleText": [ + 40, + 30342 + ], + "_Route8SuperNerd3EndBattleText": [ + 40, + 30375 + ], + "_Route8UndergroundSignText": [ + 40, + 30913 + ], + "_Route9AJAfterBattleText": [ + 40, + 31125 + ], + "_Route9AJBattleText": [ + 40, + 31070 + ], + "_Route9AJEndBattleText": [ + 40, + 31105 + ], + "_Route9CooltrainerF1AfterBattleText": [ + 40, + 31015 + ], + "_Route9CooltrainerF1BattleText": [ + 40, + 30960 + ], + "_Route9CooltrainerF1EndBattleText": [ + 40, + 30997 + ], + "_Route9CooltrainerF2AfterBattleText": [ + 40, + 31318 + ], + "_Route9CooltrainerF2BattleText": [ + 40, + 31267 + ], + "_Route9CooltrainerF2EndBattleText": [ + 40, + 31297 + ], + "_Route9CooltrainerM2AfterBattleText": [ + 40, + 31234 + ], + "_Route9CooltrainerM2BattleText": [ + 40, + 31172 + ], + "_Route9CooltrainerM2EndBattleText": [ + 40, + 31216 + ], + "_Route9Hiker1AfterBattleText": [ + 40, + 31443 + ], + "_Route9Hiker1BattleText": [ + 40, + 31363 + ], + "_Route9Hiker1EndBattleText": [ + 40, + 31397 + ], + "_Route9Hiker2AfterBattleText": [ + 40, + 31541 + ], + "_Route9Hiker2BattleText": [ + 40, + 31491 + ], + "_Route9Hiker2EndBattleText": [ + 40, + 31528 + ], + "_Route9Hiker3AfterBattleText": [ + 40, + 31772 + ], + "_Route9Hiker3BattleText": [ + 40, + 31717 + ], + "_Route9Hiker3EndBattleText": [ + 40, + 31743 + ], + "_Route9SignText": [ + 41, + 16460 + ], + "_Route9Youngster1AfterBattleText": [ + 40, + 31664 + ], + "_Route9Youngster1BattleText": [ + 40, + 31572 + ], + "_Route9Youngster1EndBattleText": [ + 40, + 31629 + ], + "_Route9Youngster2AfterBattleText": [ + 41, + 16420 + ], + "_Route9Youngster2BattleText": [ + 41, + 16384 + ], + "_Route9Youngster2EndBattleText": [ + 41, + 16408 + ], + "_RunAwayText": [ + 39, + 30473 + ], + "_SSAnne1FRoomsCooltrainerFAfterBattleText": [ + 38, + 22391 + ], + "_SSAnne1FRoomsCooltrainerFBattleText": [ + 38, + 22297 + ], + "_SSAnne1FRoomsCooltrainerFEndBattleText": [ + 38, + 22348 + ], + "_SSAnne1FRoomsGentleman1AfterBattleText": [ + 38, + 22079 + ], + "_SSAnne1FRoomsGentleman1BattleText": [ + 38, + 21999 + ], + "_SSAnne1FRoomsGentleman1EndBattleText": [ + 38, + 22060 + ], + "_SSAnne1FRoomsGentleman2AfterBattleText": [ + 38, + 22168 + ], + "_SSAnne1FRoomsGentleman2BattleText": [ + 38, + 22111 + ], + "_SSAnne1FRoomsGentleman2EndBattleText": [ + 38, + 22144 + ], + "_SSAnne1FRoomsGentleman3Text": [ + 38, + 22615 + ], + "_SSAnne1FRoomsGirl1Text": [ + 38, + 22469 + ], + "_SSAnne1FRoomsGirl2Text": [ + 38, + 22580 + ], + "_SSAnne1FRoomsLittleGirlText": [ + 38, + 22546 + ], + "_SSAnne1FRoomsMiddleAgedManText": [ + 38, + 22512 + ], + "_SSAnne1FRoomsWigglytuffText": [ + 38, + 21973 + ], + "_SSAnne1FRoomsYoungsterAfterBattleText": [ + 38, + 22245 + ], + "_SSAnne1FRoomsYoungsterBattleText": [ + 38, + 22203 + ], + "_SSAnne1FRoomsYoungsterEndBattleText": [ + 38, + 22225 + ], + "_SSAnne1FSailorText": [ + 38, + 19941 + ], + "_SSAnne1FWaiterText": [ + 38, + 19823 + ], + "_SSAnne2FRivalCutMasterText": [ + 38, + 20405 + ], + "_SSAnne2FRivalDefeatedText": [ + 38, + 20310 + ], + "_SSAnne2FRivalText": [ + 38, + 20121 + ], + "_SSAnne2FRivalVictoryText": [ + 38, + 20352 + ], + "_SSAnne2FRoomsBeautyText": [ + 38, + 23432 + ], + "_SSAnne2FRoomsBrunetteGirlText": [ + 38, + 23390 + ], + "_SSAnne2FRoomsCooltrainerFAfterBattleText": [ + 38, + 23224 + ], + "_SSAnne2FRoomsCooltrainerFBattleText": [ + 38, + 23178 + ], + "_SSAnne2FRoomsCooltrainerFEndBattleText": [ + 38, + 23209 + ], + "_SSAnne2FRoomsFisherAfterBattleText": [ + 38, + 23027 + ], + "_SSAnne2FRoomsFisherBattleText": [ + 38, + 22985 + ], + "_SSAnne2FRoomsFisherEndBattleText": [ + 38, + 23014 + ], + "_SSAnne2FRoomsGentleman1AfterBattleText": [ + 38, + 22952 + ], + "_SSAnne2FRoomsGentleman1BattleText": [ + 38, + 22867 + ], + "_SSAnne2FRoomsGentleman1EndBattleText": [ + 38, + 22915 + ], + "_SSAnne2FRoomsGentleman2AfterBattleText": [ + 38, + 23146 + ], + "_SSAnne2FRoomsGentleman2BattleText": [ + 38, + 23081 + ], + "_SSAnne2FRoomsGentleman2EndBattleText": [ + 38, + 23126 + ], + "_SSAnne2FRoomsGentleman3Text": [ + 38, + 22679 + ], + "_SSAnne2FRoomsGentleman4Text": [ + 38, + 22772 + ], + "_SSAnne2FRoomsGentleman5Text": [ + 38, + 23255 + ], + "_SSAnne2FRoomsGrampsText": [ + 38, + 22834 + ], + "_SSAnne2FRoomsLittleBoyText": [ + 38, + 23339 + ], + "_SSAnne2FWaiterText": [ + 38, + 20019 + ], + "_SSAnne3FSailorText": [ + 38, + 20554 + ], + "_SSAnneB1FRoomsFisherAfterBattleText": [ + 38, + 24096 + ], + "_SSAnneB1FRoomsFisherBattleText": [ + 38, + 24002 + ], + "_SSAnneB1FRoomsFisherEndBattleText": [ + 38, + 24064 + ], + "_SSAnneB1FRoomsMachokeText": [ + 38, + 23465 + ], + "_SSAnneB1FRoomsSailor1AfterBattleText": [ + 38, + 23568 + ], + "_SSAnneB1FRoomsSailor1BattleText": [ + 38, + 23490 + ], + "_SSAnneB1FRoomsSailor1EndBattleText": [ + 38, + 23542 + ], + "_SSAnneB1FRoomsSailor2AfterBattleText": [ + 38, + 23655 + ], + "_SSAnneB1FRoomsSailor2BattleText": [ + 38, + 23602 + ], + "_SSAnneB1FRoomsSailor2EndBattleText": [ + 38, + 23633 + ], + "_SSAnneB1FRoomsSailor3AfterBattleText": [ + 38, + 23752 + ], + "_SSAnneB1FRoomsSailor3BattleText": [ + 38, + 23704 + ], + "_SSAnneB1FRoomsSailor3EndBattleText": [ + 38, + 23731 + ], + "_SSAnneB1FRoomsSailor4AfterBattleText": [ + 38, + 23841 + ], + "_SSAnneB1FRoomsSailor4BattleText": [ + 38, + 23794 + ], + "_SSAnneB1FRoomsSailor4EndBattleText": [ + 38, + 23825 + ], + "_SSAnneB1FRoomsSailor5AfterBattleText": [ + 38, + 23958 + ], + "_SSAnneB1FRoomsSailor5BattleText": [ + 38, + 23889 + ], + "_SSAnneB1FRoomsSailor5EndBattleText": [ + 38, + 23934 + ], + "_SSAnneB1FRoomsSuperNerdText": [ + 38, + 24139 + ], + "_SSAnneBowCooltrainerMText": [ + 38, + 20697 + ], + "_SSAnneBowSailor1Text": [ + 38, + 20666 + ], + "_SSAnneBowSailor2AfterBattleText": [ + 38, + 20799 + ], + "_SSAnneBowSailor2BattleText": [ + 38, + 20746 + ], + "_SSAnneBowSailor2EndBattleText": [ + 38, + 20780 + ], + "_SSAnneBowSailor3AfterBattleText": [ + 38, + 20899 + ], + "_SSAnneBowSailor3BattleText": [ + 38, + 20847 + ], + "_SSAnneBowSailor3EndBattleText": [ + 38, + 20877 + ], + "_SSAnneBowSuperNerdText": [ + 38, + 20615 + ], + "_SSAnneCaptainsRoomCaptainHM01NoRoomText": [ + 38, + 21851 + ], + "_SSAnneCaptainsRoomCaptainIFeelMuchBetterText": [ + 38, + 21575 + ], + "_SSAnneCaptainsRoomCaptainNotSickAnymoreText": [ + 38, + 21787 + ], + "_SSAnneCaptainsRoomCaptainReceivedHM01Text": [ + 38, + 21772 + ], + "_SSAnneCaptainsRoomRubCaptainsBackText": [ + 38, + 21469 + ], + "_SSAnneCaptainsRoomSeasickBookText": [ + 38, + 21915 + ], + "_SSAnneCaptainsRoomTrashText": [ + 38, + 21886 + ], + "_SSAnneKitchenCook1Text": [ + 38, + 20964 + ], + "_SSAnneKitchenCook2Text": [ + 38, + 21013 + ], + "_SSAnneKitchenCook3Text": [ + 38, + 21046 + ], + "_SSAnneKitchenCook4Text": [ + 38, + 21076 + ], + "_SSAnneKitchenCook5Text": [ + 38, + 21133 + ], + "_SSAnneKitchenCook6Text": [ + 38, + 21192 + ], + "_SSAnneKitchenCook7MainCourseIsText": [ + 38, + 21250 + ], + "_SSTicketNoRoomText": [ + 40, + 27330 + ], + "_SSTicketReceivedText": [ + 40, + 27307 + ], + "_SafariZoneAngryText": [ + 39, + 31567 + ], + "_SafariZoneCenterRestHouseGirlText": [ + 39, + 18761 + ], + "_SafariZoneCenterRestHouseScientistText": [ + 39, + 18803 + ], + "_SafariZoneCenterRestHouseSignText": [ + 39, + 18687 + ], + "_SafariZoneCenterTrainerTipsSignText": [ + 39, + 18699 + ], + "_SafariZoneEastRestHouseRockerText": [ + 39, + 19459 + ], + "_SafariZoneEastRestHouseScientistText": [ + 39, + 19409 + ], + "_SafariZoneEastRestHouseSignText": [ + 39, + 18136 + ], + "_SafariZoneEastRestHouseSilphWorkerMText": [ + 39, + 19512 + ], + "_SafariZoneEastSignText": [ + 39, + 18211 + ], + "_SafariZoneEastTrainerTipsText": [ + 39, + 18148 + ], + "_SafariZoneEatingText": [ + 39, + 31544 + ], + "_SafariZoneGateSafariZoneWorker1CallYouOnThePAText": [ + 44, + 18995 + ], + "_SafariZoneGateSafariZoneWorker1GoodHaulComeAgainText": [ + 44, + 18766 + ], + "_SafariZoneGateSafariZoneWorker1GoodLuckText": [ + 44, + 18754 + ], + "_SafariZoneGateSafariZoneWorker1LeavingEarlyText": [ + 44, + 18690 + ], + "_SafariZoneGateSafariZoneWorker1NotEnoughMoneyText": [ + 44, + 19087 + ], + "_SafariZoneGateSafariZoneWorker1PleaseComeAgainText": [ + 44, + 19063 + ], + "_SafariZoneGateSafariZoneWorker1ReturnSafariBallsText": [ + 44, + 18707 + ], + "_SafariZoneGateSafariZoneWorker1Text": [ + 44, + 18661 + ], + "_SafariZoneGateSafariZoneWorker1ThatllBe500PleaseText": [ + 44, + 18903 + ], + "_SafariZoneGateSafariZoneWorker1WouldYouLikeToJoinText": [ + 44, + 18804 + ], + "_SafariZoneGateSafariZoneWorker2FirstTimeHereText": [ + 44, + 19112 + ], + "_SafariZoneGateSafariZoneWorker2SafariZoneExplanationText": [ + 44, + 19145 + ], + "_SafariZoneGateSafariZoneWorker2YoureARegularHereText": [ + 44, + 19381 + ], + "_SafariZoneLowCostText1": [ + 44, + 19411 + ], + "_SafariZoneLowCostText2": [ + 44, + 19450 + ], + "_SafariZoneLowCostText3": [ + 44, + 19486 + ], + "_SafariZoneLowCostText4": [ + 44, + 19566 + ], + "_SafariZoneLowCostText5": [ + 44, + 19568 + ], + "_SafariZoneLowCostText6": [ + 44, + 19609 + ], + "_SafariZoneLowCostText7": [ + 44, + 19641 + ], + "_SafariZoneLowCostText8": [ + 44, + 19670 + ], + "_SafariZoneNorthRestHouseGentlemanText": [ + 39, + 19727 + ], + "_SafariZoneNorthRestHouseSafariZoneWorkerText": [ + 39, + 19661 + ], + "_SafariZoneNorthRestHouseScientistText": [ + 39, + 19546 + ], + "_SafariZoneNorthRestHouseSignText": [ + 39, + 18238 + ], + "_SafariZoneNorthSignText": [ + 39, + 18297 + ], + "_SafariZoneNorthTrainerTips1Text": [ + 39, + 18250 + ], + "_SafariZoneNorthTrainerTips2Text": [ + 39, + 18305 + ], + "_SafariZoneNorthTrainerTips3Text": [ + 39, + 18391 + ], + "_SafariZoneSecretHouseFishingGuruHM03ExplanationText": [ + 39, + 19023 + ], + "_SafariZoneSecretHouseFishingGuruHM03NoRoomText": [ + 39, + 19194 + ], + "_SafariZoneSecretHouseFishingGuruReceivedHM03Text": [ + 39, + 19003 + ], + "_SafariZoneSecretHouseFishingGuruYouHaveWonText": [ + 39, + 18844 + ], + "_SafariZoneWestFindWardensTeethSignText": [ + 39, + 18461 + ], + "_SafariZoneWestRestHouseCooltrainerMText": [ + 39, + 19314 + ], + "_SafariZoneWestRestHouseScientistText": [ + 39, + 19239 + ], + "_SafariZoneWestRestHouseSignText": [ + 39, + 18449 + ], + "_SafariZoneWestRestHouseSilphWorkerFText": [ + 39, + 19358 + ], + "_SafariZoneWestSignText": [ + 39, + 18661 + ], + "_SafariZoneWestTrainerTipsText": [ + 39, + 18587 + ], + "_SaffronCityFightingDojoSignText": [ + 45, + 26710 + ], + "_SaffronCityGentlemanText": [ + 45, + 26405 + ], + "_SaffronCityGymSignText": [ + 45, + 26725 + ], + "_SaffronCityMrPsychicsHouseSignText": [ + 45, + 27026 + ], + "_SaffronCityPidgeotText": [ + 45, + 26502 + ], + "_SaffronCityPokecenterGuyText1": [ + 39, + 25578 + ], + "_SaffronCityPokecenterGuyText2": [ + 39, + 25645 + ], + "_SaffronCityRockerText": [ + 45, + 26523 + ], + "_SaffronCityRocket1Text": [ + 45, + 26007 + ], + "_SaffronCityRocket2Text": [ + 45, + 26036 + ], + "_SaffronCityRocket3Text": [ + 45, + 26068 + ], + "_SaffronCityRocket4Text": [ + 45, + 26089 + ], + "_SaffronCityRocket5Text": [ + 45, + 26122 + ], + "_SaffronCityRocket6Text": [ + 45, + 26158 + ], + "_SaffronCityRocket7Text": [ + 45, + 26190 + ], + "_SaffronCityRocket8Text": [ + 45, + 26568 + ], + "_SaffronCityRocket9Text": [ + 45, + 26623 + ], + "_SaffronCityScientistText": [ + 45, + 26255 + ], + "_SaffronCitySignText": [ + 45, + 26663 + ], + "_SaffronCitySilphCoLatestProductSignText": [ + 45, + 27045 + ], + "_SaffronCitySilphCoSignText": [ + 45, + 26999 + ], + "_SaffronCitySilphWorkerFText": [ + 45, + 26357 + ], + "_SaffronCitySilphWorkerMText": [ + 45, + 26303 + ], + "_SaffronCityTrainerTips1Text": [ + 45, + 26792 + ], + "_SaffronCityTrainerTips2Text": [ + 45, + 26903 + ], + "_SaffronGateGuardGeeImThirstyText": [ + 40, + 20582 + ], + "_SaffronGateGuardImParchedText": [ + 40, + 20660 + ], + "_SaffronGateGuardThanksForTheDrinkText": [ + 40, + 20864 + ], + "_SaffronGateGuardYouCanGoOnThroughText": [ + 40, + 20730 + ], + "_SaffronGymChanneler1AfterBattleText": [ + 44, + 28285 + ], + "_SaffronGymChanneler1BattleText": [ + 44, + 28220 + ], + "_SaffronGymChanneler1EndBattleText": [ + 44, + 28267 + ], + "_SaffronGymChanneler2AfterBattleText": [ + 44, + 28571 + ], + "_SaffronGymChanneler2BattleText": [ + 44, + 28480 + ], + "_SaffronGymChanneler2EndBattleText": [ + 44, + 28559 + ], + "_SaffronGymChanneler3AfterBattleText": [ + 44, + 28783 + ], + "_SaffronGymChanneler3BattleText": [ + 44, + 28730 + ], + "_SaffronGymChanneler3EndBattleText": [ + 44, + 28764 + ], + "_SaffronGymGuideBeatSabrinaText": [ + 44, + 28153 + ], + "_SaffronGymGuideChampInMakingText": [ + 44, + 27985 + ], + "_SaffronGymSabrinaMarshBadgeInfoText": [ + 44, + 27679 + ], + "_SaffronGymSabrinaPostBattleAdviceText": [ + 44, + 27621 + ], + "_SaffronGymSabrinaReceivedMarshBadgeText": [ + 44, + 27516 + ], + "_SaffronGymSabrinaReceivedTM46Text": [ + 44, + 27862 + ], + "_SaffronGymSabrinaTM46NoRoomText": [ + 44, + 27950 + ], + "_SaffronGymSabrinaText": [ + 44, + 27325 + ], + "_SaffronGymYoungster1AfterBattleText": [ + 44, + 28450 + ], + "_SaffronGymYoungster1BattleText": [ + 44, + 28393 + ], + "_SaffronGymYoungster1EndBattleText": [ + 44, + 28427 + ], + "_SaffronGymYoungster2AfterBattleText": [ + 44, + 28677 + ], + "_SaffronGymYoungster2BattleText": [ + 44, + 28615 + ], + "_SaffronGymYoungster2EndBattleText": [ + 44, + 28655 + ], + "_SaffronGymYoungster3AfterBattleText": [ + 44, + 28924 + ], + "_SaffronGymYoungster3BattleText": [ + 44, + 28826 + ], + "_SaffronGymYoungster3EndBattleText": [ + 44, + 28898 + ], + "_SaffronGymYoungster4AfterBattleText": [ + 44, + 29137 + ], + "_SaffronGymYoungster4BattleText": [ + 44, + 29045 + ], + "_SaffronGymYoungster4EndBattleText": [ + 44, + 29128 + ], + "_SaffronMartCooltrainerFText": [ + 44, + 29480 + ], + "_SaffronMartSuperNerdText": [ + 44, + 29409 + ], + "_SaffronPidgeyHouseBrunetteGirlText": [ + 44, + 29187 + ], + "_SaffronPidgeyHousePaperText": [ + 44, + 29331 + ], + "_SaffronPidgeyHousePidgeyText": [ + 44, + 29264 + ], + "_SaffronPidgeyHouseYoungsterText": [ + 44, + 29284 + ], + "_SaffronPokecenterBeautyText": [ + 44, + 29580 + ], + "_SaffronPokecenterGentlemanText": [ + 44, + 29629 + ], + "_SandshrewDexEntry": [ + 46, + 18870 + ], + "_SandslashDexEntry": [ + 46, + 18967 + ], + "_SaveOptionText": [ + 39, + 25827 + ], + "_SavingEnergyText": [ + 39, + 30896 + ], + "_SavingText": [ + 41, + 30290 + ], + "_ScaredText": [ + 39, + 30641 + ], + "_ScytherDexEntry": [ + 46, + 28300 + ], + "_SeadraDexEntry": [ + 46, + 27700 + ], + "_SeafoamIslandsB4FArticunoBattleText": [ + 39, + 24082 + ], + "_SeafoamIslandsB4FBouldersSignText": [ + 39, + 24091 + ], + "_SeafoamIslandsB4FDangerSignText": [ + 39, + 24133 + ], + "_SeakingDexEntry": [ + 46, + 27904 + ], + "_SeelDexEntry": [ + 46, + 24678 + ], + "_SentToBoxText": [ + 45, + 16890 + ], + "_ShallWeHealYourPokemonText": [ + 44, + 30649 + ], + "_ShellderDexEntry": [ + 46, + 25057 + ], + "_ShroudedInMistText": [ + 42, + 17319 + ], + "_SilphCo10FGiovanniILostAgainText": [ + 39, + 17023 + ], + "_SilphCo10FRocketAfterBattleText": [ + 38, + 31125 + ], + "_SilphCo10FRocketBattleText": [ + 38, + 31064 + ], + "_SilphCo10FRocketEndBattleText": [ + 38, + 31112 + ], + "_SilphCo10FScientistAfterBattleText": [ + 38, + 31225 + ], + "_SilphCo10FScientistBattleText": [ + 38, + 31176 + ], + "_SilphCo10FScientistEndBattleText": [ + 38, + 31205 + ], + "_SilphCo10FSilphWorkerFImScaredText": [ + 38, + 31008 + ], + "_SilphCo10FSilphWorkerFQuietAboutMyCryingText": [ + 38, + 31028 + ], + "_SilphCo11FBeautyText": [ + 39, + 16788 + ], + "_SilphCo11FGiovanniText": [ + 39, + 16858 + ], + "_SilphCo11FGiovanniYouRuinedOurPlansText": [ + 39, + 17047 + ], + "_SilphCo11FRocket2AfterBattleText": [ + 39, + 17279 + ], + "_SilphCo11FRocket2BattleText": [ + 39, + 17212 + ], + "_SilphCo11FRocket2EndBattleText": [ + 39, + 17260 + ], + "_SilphCo11FSilphPresidentMasterBallDescriptionText": [ + 39, + 16601 + ], + "_SilphCo11FSilphPresidentNoRoomText": [ + 39, + 16760 + ], + "_SilphCo11FSilphPresidentReceivedMasterBallText": [ + 39, + 16584 + ], + "_SilphCo11FSilphPresidentText": [ + 39, + 16384 + ], + "_SilphCo1FLinkReceptionistText": [ + 44, + 29528 + ], + "_SilphCo2FRocket1AfterBattleText": [ + 38, + 26365 + ], + "_SilphCo2FRocket1BattleText": [ + 38, + 26327 + ], + "_SilphCo2FRocket1EndBattleText": [ + 38, + 26357 + ], + "_SilphCo2FRocket2AfterBattleText": [ + 38, + 26483 + ], + "_SilphCo2FRocket2BattleText": [ + 38, + 26437 + ], + "_SilphCo2FRocket2EndBattleText": [ + 38, + 26472 + ], + "_SilphCo2FScientist1AfterBattleText": [ + 38, + 26210 + ], + "_SilphCo2FScientist1BattleText": [ + 38, + 26148 + ], + "_SilphCo2FScientist1EndBattleText": [ + 38, + 26176 + ], + "_SilphCo2FScientist2AfterBattleText": [ + 38, + 26294 + ], + "_SilphCo2FScientist2BattleText": [ + 38, + 26250 + ], + "_SilphCo2FScientist2EndBattleText": [ + 38, + 26281 + ], + "_SilphCo2FSilphWorkerFReceivedTM36Text": [ + 38, + 26016 + ], + "_SilphCo2FSilphWorkerFTM36ExplanationText": [ + 38, + 26031 + ], + "_SilphCo2FSilphWorkerFTM36NoRoomText": [ + 38, + 26114 + ], + "_SilphCo3FRocketAfterBattleText": [ + 38, + 26636 + ], + "_SilphCo3FRocketBattleText": [ + 38, + 26596 + ], + "_SilphCo3FRocketEndBattleText": [ + 38, + 26624 + ], + "_SilphCo3FScientistAfterBattleText": [ + 38, + 26751 + ], + "_SilphCo3FScientistBattleText": [ + 38, + 26681 + ], + "_SilphCo3FScientistEndBattleText": [ + 38, + 26731 + ], + "_SilphCo3FSilphWorkerMWhatShouldIDoText": [ + 38, + 26527 + ], + "_SilphCo3FSilphWorkerMYouSavedUsText": [ + 38, + 26564 + ], + "_SilphCo4FRocket1AfterBattleText": [ + 38, + 26937 + ], + "_SilphCo4FRocket1BattleText": [ + 38, + 26884 + ], + "_SilphCo4FRocket1EndBattleText": [ + 38, + 26929 + ], + "_SilphCo4FRocket2AfterBattleText": [ + 38, + 27132 + ], + "_SilphCo4FRocket2BattleText": [ + 38, + 27099 + ], + "_SilphCo4FRocket2EndBattleText": [ + 38, + 27118 + ], + "_SilphCo4FScientistAfterBattleText": [ + 38, + 27038 + ], + "_SilphCo4FScientistBattleText": [ + 38, + 26984 + ], + "_SilphCo4FScientistEndBattleText": [ + 38, + 27016 + ], + "_SilphCo4FSilphWorkerMImHidingText": [ + 38, + 26826 + ], + "_SilphCo4FSilphWorkerMTeamRocketIsGoneText": [ + 38, + 26857 + ], + "_SilphCo5FPokemonReport1Text": [ + 38, + 27705 + ], + "_SilphCo5FPokemonReport2Text": [ + 38, + 27783 + ], + "_SilphCo5FPokemonReport3Text": [ + 38, + 27849 + ], + "_SilphCo5FRockerAfterBattleText": [ + 38, + 27555 + ], + "_SilphCo5FRockerBattleText": [ + 38, + 27495 + ], + "_SilphCo5FRockerEndBattleText": [ + 38, + 27541 + ], + "_SilphCo5FRocket1AfterBattleText": [ + 38, + 27324 + ], + "_SilphCo5FRocket1BattleText": [ + 38, + 27280 + ], + "_SilphCo5FRocket1EndBattleText": [ + 38, + 27317 + ], + "_SilphCo5FRocket2AfterBattleText": [ + 38, + 27656 + ], + "_SilphCo5FRocket2BattleText": [ + 38, + 27601 + ], + "_SilphCo5FRocket2EndBattleText": [ + 38, + 27637 + ], + "_SilphCo5FScientistAfterBattleText": [ + 38, + 27433 + ], + "_SilphCo5FScientistBattleText": [ + 38, + 27373 + ], + "_SilphCo5FScientistEndBattleText": [ + 38, + 27416 + ], + "_SilphCo5FSilphWorkerMThatsYouRightText": [ + 38, + 27164 + ], + "_SilphCo5FSilphWorkerMYoureOurHeroText": [ + 38, + 27230 + ], + "_SilphCo6FRocket1AfterBattleText": [ + 38, + 28363 + ], + "_SilphCo6FRocket1BattleText": [ + 38, + 28315 + ], + "_SilphCo6FRocket1EndBattleText": [ + 38, + 28351 + ], + "_SilphCo6FRocket2AfterBattleText": [ + 38, + 28569 + ], + "_SilphCo6FRocket2BattleText": [ + 38, + 28525 + ], + "_SilphCo6FRocket2EndBattleText": [ + 38, + 28555 + ], + "_SilphCo6FScientistAfterBattleText": [ + 38, + 28481 + ], + "_SilphCo6FScientistBattleText": [ + 38, + 28403 + ], + "_SilphCo6FScientistEndBattleText": [ + 38, + 28473 + ], + "_SilphCo6FSilphWorkerF1HaveToMarryHimText": [ + 38, + 28085 + ], + "_SilphCo6FSilphWorkerF1SuchACowardText": [ + 38, + 28052 + ], + "_SilphCo6FSilphWorkerF2TeamRocketConquerWorldText": [ + 38, + 28132 + ], + "_SilphCo6FSilphWorkerF2TeamRocketRanText": [ + 38, + 28187 + ], + "_SilphCo6FSilphWorkerM1BackToWorkText": [ + 38, + 27961 + ], + "_SilphCo6FSilphWorkerM1TookOverTheBuildingText": [ + 38, + 27915 + ], + "_SilphCo6FSilphWorkerM3TargetedSilphText": [ + 38, + 28220 + ], + "_SilphCo6FSilphWorkerM3WorkForSilphText": [ + 38, + 28274 + ], + "_SilphCo6FSilphWorkerMHelpMePleaseText": [ + 38, + 27993 + ], + "_SilphCo6FSilphWorkerMWeGotEngagedText": [ + 38, + 28028 + ], + "_SilphCo7FRivalDefeatedText": [ + 38, + 29917 + ], + "_SilphCo7FRivalGoodLuckToYouText": [ + 38, + 30032 + ], + "_SilphCo7FRivalText": [ + 38, + 29728 + ], + "_SilphCo7FRivalVictoryText": [ + 38, + 29960 + ], + "_SilphCo7FRivalWaitedHereText": [ + 38, + 29749 + ], + "_SilphCo7FRocket1AfterBattleText": [ + 38, + 29373 + ], + "_SilphCo7FRocket1BattleText": [ + 38, + 29332 + ], + "_SilphCo7FRocket1EndBattleText": [ + 38, + 29360 + ], + "_SilphCo7FRocket2AfterBattleText": [ + 38, + 29582 + ], + "_SilphCo7FRocket2BattleText": [ + 38, + 29521 + ], + "_SilphCo7FRocket2EndBattleText": [ + 38, + 29557 + ], + "_SilphCo7FRocket3AfterBattleText": [ + 38, + 29684 + ], + "_SilphCo7FRocket3BattleText": [ + 38, + 29632 + ], + "_SilphCo7FRocket3EndBattleText": [ + 38, + 29669 + ], + "_SilphCo7FScientistAfterBattleText": [ + 38, + 29475 + ], + "_SilphCo7FScientistBattleText": [ + 38, + 29422 + ], + "_SilphCo7FScientistEndBattleText": [ + 38, + 29465 + ], + "_SilphCo7FSilphWorkerM1HaveThisPokemonText": [ + 38, + 28613 + ], + "_SilphCo7FSilphWorkerM1IsOurPresidentOkText": [ + 38, + 28911 + ], + "_SilphCo7FSilphWorkerM1LaprasDescriptionText": [ + 38, + 28723 + ], + "_SilphCo7FSilphWorkerM1SavedText": [ + 38, + 28974 + ], + "_SilphCo7FSilphWorkerM2AfterTheMasterBallText": [ + 38, + 29001 + ], + "_SilphCo7FSilphWorkerM2CancelledMasterBallText": [ + 38, + 29067 + ], + "_SilphCo7FSilphWorkerM3ItWouldBeBadText": [ + 38, + 29128 + ], + "_SilphCo7FSilphWorkerM3YouChasedOffTeamRocketText": [ + 38, + 29189 + ], + "_SilphCo7FSilphWorkerM4ItsReallyDangerousHereText": [ + 38, + 29239 + ], + "_SilphCo7FSilphWorkerM4SafeAtLastText": [ + 38, + 29303 + ], + "_SilphCo8FRocket1AfterBattleText": [ + 38, + 30397 + ], + "_SilphCo8FRocket1BattleText": [ + 38, + 30352 + ], + "_SilphCo8FRocket1EndBattleText": [ + 38, + 30379 + ], + "_SilphCo8FRocket2AfterBattleText": [ + 38, + 30588 + ], + "_SilphCo8FRocket2BattleText": [ + 38, + 30532 + ], + "_SilphCo8FRocket2EndBattleText": [ + 38, + 30568 + ], + "_SilphCo8FScientistAfterBattleText": [ + 38, + 30484 + ], + "_SilphCo8FScientistBattleText": [ + 38, + 30442 + ], + "_SilphCo8FScientistEndBattleText": [ + 38, + 30470 + ], + "_SilphCo8FSilphWorkerMSilphIsFinishedText": [ + 38, + 30295 + ], + "_SilphCo8FSilphWorkerMThanksForSavingUsText": [ + 38, + 30329 + ], + "_SilphCo9FRocket1AfterBattleText": [ + 38, + 30747 + ], + "_SilphCo9FRocket1BattleText": [ + 38, + 30703 + ], + "_SilphCo9FRocket1EndBattleText": [ + 38, + 30738 + ], + "_SilphCo9FRocket2AfterBattleText": [ + 38, + 30979 + ], + "_SilphCo9FRocket2BattleText": [ + 38, + 30918 + ], + "_SilphCo9FRocket2EndBattleText": [ + 38, + 30954 + ], + "_SilphCo9FScientistAfterBattleText": [ + 38, + 30857 + ], + "_SilphCo9FScientistBattleText": [ + 38, + 30793 + ], + "_SilphCo9FScientistEndBattleText": [ + 38, + 30839 + ], + "_SilphCoJessieJamesText1": [ + 38, + 31278 + ], + "_SilphCoJessieJamesText2": [ + 38, + 31307 + ], + "_SilphCoJessieJamesText3": [ + 38, + 31362 + ], + "_SilphCoJessieJamesText4": [ + 38, + 31378 + ], + "_SkyAttackGlowingText": [ + 42, + 16721 + ], + "_SleepingPikachuText1": [ + 40, + 16667 + ], + "_SleepingPikachuText2": [ + 40, + 17567 + ], + "_SlowbroDexEntry": [ + 46, + 24096 + ], + "_SlowpokeDexEntry": [ + 46, + 23998 + ], + "_SnorlaxDexEntry": [ + 46, + 30284 + ], + "_SoYouWantPrizeText": [ + 40, + 18077 + ], + "_SorryNeedMoreCoinsText": [ + 40, + 18098 + ], + "_SpearowDexEntry": [ + 46, + 18299 + ], + "_SquirtleDexEntry": [ + 46, + 16964 + ], + "_StarmieDexEntry": [ + 46, + 28102 + ], + "_StartSlotMachineText": [ + 39, + 24485 + ], + "_StartedSleepingEffect": [ + 42, + 17160 + ], + "_StaryuDexEntry": [ + 46, + 28004 + ], + "_StatusChangesEliminatedText": [ + 42, + 17104 + ], + "_StoppedEvolvingText": [ + 41, + 30474 + ], + "_StrengthsAndWeaknessesText": [ + 39, + 25867 + ], + "_SubstituteBrokeText": [ + 39, + 31316 + ], + "_SubstituteText": [ + 42, + 16948 + ], + "_SubstituteTookDamageText": [ + 39, + 31281 + ], + "_SuckedHealthText": [ + 42, + 17370 + ], + "_SummerBeachHousePikachuText": [ + 40, + 25486 + ], + "_SummerBeachHousePoster1Text1": [ + 40, + 25502 + ], + "_SummerBeachHousePoster1Text2": [ + 40, + 25579 + ], + "_SummerBeachHousePoster2Text1": [ + 40, + 25612 + ], + "_SummerBeachHousePoster2Text2": [ + 40, + 25690 + ], + "_SummerBeachHousePoster3Text1": [ + 40, + 25724 + ], + "_SummerBeachHousePoster3Text2": [ + 40, + 25780 + ], + "_SummerBeachHousePrinterText1": [ + 40, + 25812 + ], + "_SummerBeachHousePrinterText2": [ + 40, + 25844 + ], + "_SummerBeachHousePrinterText3": [ + 40, + 25883 + ], + "_SummerBeachHousePrinterText4": [ + 40, + 25921 + ], + "_SummerBeachHousePrinterText5": [ + 40, + 25996 + ], + "_SummerBeachHousePrinterText6": [ + 40, + 26015 + ], + "_SummerBeachHouseSurfinDudeText1": [ + 40, + 25279 + ], + "_SummerBeachHouseSurfinDudeText2": [ + 40, + 25403 + ], + "_SummerBeachHouseSurfinDudeText3": [ + 40, + 25434 + ], + "_SummerBeachHouseSurfinDudeText4": [ + 40, + 25450 + ], + "_SuperEffectiveText": [ + 39, + 31495 + ], + "_SurfingGotOnText": [ + 45, + 27406 + ], + "_SurfingNoPlaceToGetOffText": [ + 45, + 27423 + ], + "_SwitchOnText": [ + 40, + 17595 + ], + "_TM21ExplanationText": [ + 43, + 28992 + ], + "_TM24ExplanationText": [ + 43, + 23037 + ], + "_TM34ExplanationText": [ + 42, + 26408 + ], + "_TM46ExplanationText": [ + 44, + 27881 + ], + "_TangelaDexEntry": [ + 46, + 27411 + ], + "_TaurosDexEntry": [ + 46, + 28808 + ], + "_TeachMachineMoveText": [ + 45, + 27908 + ], + "_TentacoolDexEntry": [ + 46, + 23303 + ], + "_TentacruelDexEntry": [ + 46, + 23407 + ], + "_TextIDErrorText": [ + 40, + 19558 + ], + "_Thanks1Text": [ + 45, + 28611 + ], + "_Thanks2Text": [ + 45, + 28791 + ], + "_Thanks3Text": [ + 45, + 28969 + ], + "_ThrashingAboutText": [ + 39, + 30938 + ], + "_ThrewAwayItemText": [ + 45, + 28330 + ], + "_ThrewBaitText": [ + 45, + 27514 + ], + "_ThrewRockText": [ + 45, + 27534 + ], + "_ThrowBallAtTrainerMonText1": [ + 45, + 28101 + ], + "_ThrowBallAtTrainerMonText2": [ + 45, + 28132 + ], + "_TimesUpText": [ + 39, + 25927 + ], + "_TooImportantToTossText": [ + 45, + 28374 + ], + "_TooWeakSubstituteText": [ + 42, + 16995 + ], + "_TookInSunlightText": [ + 42, + 16681 + ], + "_TossHowManyText": [ + 40, + 17495 + ], + "_TownMapText": [ + 39, + 29929 + ], + "_TradeCenterOpponentText": [ + 42, + 17414 + ], + "_TradeForText": [ + 39, + 24268 + ], + "_TradeSendsText": [ + 39, + 24283 + ], + "_TradeTakeCareText": [ + 39, + 24345 + ], + "_TradeTransferredText": [ + 39, + 24324 + ], + "_TradeWavesFarewellText": [ + 39, + 24301 + ], + "_TradeWentToText": [ + 39, + 24248 + ], + "_TradeWillTradeText": [ + 39, + 24371 + ], + "_TradedForText": [ + 45, + 28458 + ], + "_TradeforText": [ + 39, + 24393 + ], + "_TrainerAboutToUseText": [ + 39, + 30300 + ], + "_TrainerDefeatedText": [ + 39, + 30161 + ], + "_TrainerNameText": [ + 38, + 16453 + ], + "_TrainerSentOutText": [ + 39, + 30348 + ], + "_TrainerWantsToFightText": [ + 40, + 16399 + ], + "_TransformedText": [ + 42, + 17236 + ], + "_TryingToLearnText": [ + 44, + 30377 + ], + "_TurnPageText": [ + 39, + 27424 + ], + "_TurnedAwayText": [ + 39, + 31242 + ], + "_TurnedOnPC1Text": [ + 40, + 17004 + ], + "_TurnedOnPC2Text": [ + 40, + 17175 + ], + "_UnaffectedText": [ + 39, + 31118 + ], + "_UndergroundPathRoute6GirlText": [ + 40, + 21456 + ], + "_UndergroundPathRoute7CopyUnusedGirlText": [ + 40, + 21559 + ], + "_UndergroundPathRoute7CopyUnusedGoesUnderSaffronText": [ + 40, + 21774 + ], + "_UndergroundPathRoute7CopyUnusedMiddleAgedManText": [ + 40, + 21709 + ], + "_UndergroundPathRoute7CopyUnusedTeamRocketHadAHideoutText": [ + 40, + 21658 + ], + "_UndergroundPathRoute7MiddleAgedManText": [ + 40, + 21508 + ], + "_UndergroundPathRoute8GirlText": [ + 40, + 21906 + ], + "_UnleashedEnergyText": [ + 39, + 30917 + ], + "_UnusedBenchGuyText1": [ + 39, + 25071 + ], + "_UnusedBenchGuyText2": [ + 39, + 25099 + ], + "_UnusedBenchGuyText3": [ + 39, + 25129 + ], + "_UnveiledGhostText": [ + 40, + 16420 + ], + "_UseNextMonText": [ + 39, + 30194 + ], + "_UsedCutText": [ + 45, + 29059 + ], + "_UsedInsteadText": [ + 39, + 31040 + ], + "_UsedMove1Text": [ + 39, + 31022 + ], + "_UsedMove2Text": [ + 39, + 31031 + ], + "_UsedStrengthText": [ + 45, + 16766 + ], + "_VaporeonDexEntry": [ + 46, + 29393 + ], + "_VendingMachineText1": [ + 43, + 26615 + ], + "_VendingMachineText4": [ + 43, + 26651 + ], + "_VendingMachineText5": [ + 43, + 26676 + ], + "_VendingMachineText6": [ + 43, + 26693 + ], + "_VendingMachineText7": [ + 43, + 26725 + ], + "_VenomothDexEntry": [ + 46, + 21054 + ], + "_VenonatDexEntry": [ + 46, + 20950 + ], + "_VenusaurDexEntry": [ + 46, + 16575 + ], + "_VermilionCityBeautyText": [ + 45, + 22448 + ], + "_VermilionCityGambler1DidYouSeeText": [ + 45, + 22525 + ], + "_VermilionCityGambler1SSAnneDepartedText": [ + 45, + 22570 + ], + "_VermilionCityGambler2Text": [ + 45, + 22861 + ], + "_VermilionCityGymSignText": [ + 45, + 23635 + ], + "_VermilionCityHarborSignText": [ + 45, + 23702 + ], + "_VermilionCityMachopStompingTheLandFlatText": [ + 45, + 22963 + ], + "_VermilionCityMachopText": [ + 45, + 22938 + ], + "_VermilionCityNoticeSignText": [ + 45, + 23478 + ], + "_VermilionCityPokemonFanClubSignText": [ + 45, + 23597 + ], + "_VermilionCitySailor1DoYouHaveATicketText": [ + 45, + 22652 + ], + "_VermilionCitySailor1FlashedTicketText": [ + 45, + 22708 + ], + "_VermilionCitySailor1ShipSetSailText": [ + 45, + 22841 + ], + "_VermilionCitySailor1WelcomeToSSAnneText": [ + 45, + 22629 + ], + "_VermilionCitySailor1YouNeedATicketText": [ + 45, + 22763 + ], + "_VermilionCitySailor2Text": [ + 45, + 23001 + ], + "_VermilionCitySignText": [ + 45, + 23432 + ], + "_VermilionDockUnusedText": [ + 43, + 24086 + ], + "_VermilionGymGentlemanAfterBattleText": [ + 43, + 23272 + ], + "_VermilionGymGentlemanBattleText": [ + 43, + 23196 + ], + "_VermilionGymGentlemanEndBattleText": [ + 43, + 23248 + ], + "_VermilionGymGymGuideBeatLTSurgeText": [ + 43, + 23857 + ], + "_VermilionGymGymGuideChampInMakingText": [ + 43, + 23603 + ], + "_VermilionGymLTSurgePostBattleAdviceText": [ + 43, + 22791 + ], + "_VermilionGymLTSurgePreBattleText": [ + 43, + 22556 + ], + "_VermilionGymLTSurgeReceivedTM24Text": [ + 43, + 23016 + ], + "_VermilionGymLTSurgeReceivedThunderBadgeText": [ + 43, + 23129 + ], + "_VermilionGymLTSurgeTM24NoRoomText": [ + 43, + 23096 + ], + "_VermilionGymLTSurgeThunderBadgeInfoText": [ + 43, + 22896 + ], + "_VermilionGymSailorAfterBattleText": [ + 43, + 23496 + ], + "_VermilionGymSailorBattleText": [ + 43, + 23448 + ], + "_VermilionGymSailorEndBattleText": [ + 43, + 23476 + ], + "_VermilionGymSuperNerdAfterBattleText": [ + 43, + 23380 + ], + "_VermilionGymSuperNerdBattleText": [ + 43, + 23323 + ], + "_VermilionGymSuperNerdEndBattleText": [ + 43, + 23372 + ], + "_VermilionGymTrashFailText": [ + 39, + 29540 + ], + "_VermilionGymTrashSuccessText1": [ + 39, + 29342 + ], + "_VermilionGymTrashSuccessText2": [ + 39, + 29424 + ], + "_VermilionGymTrashSuccessText3": [ + 39, + 29481 + ], + "_VermilionGymTrashText": [ + 39, + 29311 + ], + "_VermilionMartCooltrainerFText": [ + 43, + 22494 + ], + "_VermilionMartCooltrainerMText": [ + 43, + 22328 + ], + "_VermilionOldRodHouseFishingGuruDoYouLikeToFishText": [ + 43, + 24199 + ], + "_VermilionOldRodHouseFishingGuruFishingIsAWayOfLifeText": [ + 43, + 24347 + ], + "_VermilionOldRodHouseFishingGuruHowAreTheFishBitingText": [ + 43, + 24473 + ], + "_VermilionOldRodHouseFishingGuruNoRoomText": [ + 43, + 24515 + ], + "_VermilionOldRodHouseFishingGuruTakeThisText": [ + 43, + 24267 + ], + "_VermilionOldRodHouseFishingGuruThatsSoDisappointingText": [ + 43, + 24440 + ], + "_VermilionPidgeyHouseLetterText": [ + 43, + 23972 + ], + "_VermilionPidgeyHousePidgeyText": [ + 43, + 23952 + ], + "_VermilionPidgeyHouseYoungsterText": [ + 43, + 23889 + ], + "_VermilionPokecenterFishingGuruText": [ + 43, + 20728 + ], + "_VermilionPokecenterGuyText": [ + 39, + 25175 + ], + "_VermilionPokecenterSailorText": [ + 43, + 20863 + ], + "_VictoryRoad1FCooltrainerFAfterBattleText": [ + 39, + 19879 + ], + "_VictoryRoad1FCooltrainerFBattleText": [ + 39, + 19825 + ], + "_VictoryRoad1FCooltrainerFEndBattleText": [ + 39, + 19866 + ], + "_VictoryRoad1FCooltrainerMAfterBattleText": [ + 39, + 19986 + ], + "_VictoryRoad1FCooltrainerMBattleText": [ + 39, + 19915 + ], + "_VictoryRoad1FCooltrainerMEndBattleText": [ + 39, + 19967 + ], + "_VictoryRoad2FCooltrainerMAfterBattleText": [ + 40, + 26450 + ], + "_VictoryRoad2FCooltrainerMBattleText": [ + 40, + 26410 + ], + "_VictoryRoad2FCooltrainerMEndBattleText": [ + 40, + 26434 + ], + "_VictoryRoad2FHikerAfterBattleText": [ + 40, + 26272 + ], + "_VictoryRoad2FHikerBattleText": [ + 40, + 26218 + ], + "_VictoryRoad2FHikerEndBattleText": [ + 40, + 26264 + ], + "_VictoryRoad2FMoltresBattleText": [ + 40, + 26209 + ], + "_VictoryRoad2FSuperNerd1AfterBattleText": [ + 40, + 26383 + ], + "_VictoryRoad2FSuperNerd1BattleText": [ + 40, + 26324 + ], + "_VictoryRoad2FSuperNerd1EndBattleText": [ + 40, + 26370 + ], + "_VictoryRoad2FSuperNerd2AfterBattleText": [ + 40, + 26576 + ], + "_VictoryRoad2FSuperNerd2BattleText": [ + 40, + 26495 + ], + "_VictoryRoad2FSuperNerd2EndBattleText": [ + 40, + 26557 + ], + "_VictoryRoad2FSuperNerd3AfterBattleText": [ + 40, + 26671 + ], + "_VictoryRoad2FSuperNerd3BattleText": [ + 40, + 26631 + ], + "_VictoryRoad2FSuperNerd3EndBattleText": [ + 40, + 26659 + ], + "_VictoryRoad3FCooltrainerF1AfterBattleText": [ + 38, + 24362 + ], + "_VictoryRoad3FCooltrainerF1BattleText": [ + 38, + 24312 + ], + "_VictoryRoad3FCooltrainerF1EndBattleText": [ + 38, + 24349 + ], + "_VictoryRoad3FCooltrainerF2AfterBattleText": [ + 38, + 24571 + ], + "_VictoryRoad3FCooltrainerF2BattleText": [ + 38, + 24512 + ], + "_VictoryRoad3FCooltrainerF2EndBattleText": [ + 38, + 24555 + ], + "_VictoryRoad3FCooltrainerM1AfterBattleText": [ + 38, + 24277 + ], + "_VictoryRoad3FCooltrainerM1BattleText": [ + 38, + 24218 + ], + "_VictoryRoad3FCooltrainerM1EndBattleText": [ + 38, + 24254 + ], + "_VictoryRoad3FCooltrainerM2AfterBattleText": [ + 38, + 24450 + ], + "_VictoryRoad3FCooltrainerM2BattleText": [ + 38, + 24398 + ], + "_VictoryRoad3FCooltrainerM2EndBattleText": [ + 38, + 24430 + ], + "_VictreebelDexEntry": [ + 46, + 23199 + ], + "_VileplumeDexEntry": [ + 46, + 20647 + ], + "_ViridianBlackboardBurnText": [ + 39, + 29069 + ], + "_ViridianBlackboardFrozenText": [ + 39, + 29191 + ], + "_ViridianBlackboardPoisonText": [ + 39, + 28854 + ], + "_ViridianBlackboardPrlzText": [ + 39, + 28963 + ], + "_ViridianBlackboardSleepText": [ + 39, + 28746 + ], + "_ViridianCityFisherReceivedTM42Text": [ + 45, + 18572 + ], + "_ViridianCityFisherTM42ExplanationText": [ + 45, + 18591 + ], + "_ViridianCityFisherTM42NoRoomText": [ + 45, + 18633 + ], + "_ViridianCityGambler1GymAlwaysClosedText": [ + 45, + 17961 + ], + "_ViridianCityGambler1GymLeaderReturnedText": [ + 45, + 18022 + ], + "_ViridianCityGirlHasntHadHisCoffeeYetText": [ + 45, + 18199 + ], + "_ViridianCityGirlWhenIGoShopText": [ + 45, + 18258 + ], + "_ViridianCityGymLockedText": [ + 45, + 19096 + ], + "_ViridianCityGymSignText": [ + 45, + 19072 + ], + "_ViridianCityOldManHadMyCoffeeNowText": [ + 45, + 17572 + ], + "_ViridianCityOldManLosingMyTouchText": [ + 45, + 17747 + ], + "_ViridianCityOldManNotGoodEnoughForYouText": [ + 45, + 18759 + ], + "_ViridianCityOldManSleepyPrivatePropertyText": [ + 45, + 18343 + ], + "_ViridianCityOldManWantMeToShowYouAgainText": [ + 45, + 18667 + ], + "_ViridianCityOldManWatchCloselyText": [ + 45, + 18722 + ], + "_ViridianCityOldManYouNeedToWeakenTheTargetText": [ + 45, + 17528 + ], + "_ViridianCityPokecenterGuyText": [ + 39, + 24736 + ], + "_ViridianCitySignText": [ + 45, + 18794 + ], + "_ViridianCityTrainerTips1Text": [ + 45, + 18839 + ], + "_ViridianCityTrainerTips2Text": [ + 45, + 18938 + ], + "_ViridianCityYoungster1Text": [ + 45, + 17853 + ], + "_ViridianCityYoungster2YouWantToKnowAboutText": [ + 45, + 18054 + ], + "_ViridianForestCooltrainerFAfterBattleText": [ + 38, + 17674 + ], + "_ViridianForestCooltrainerFBattleText": [ + 38, + 17630 + ], + "_ViridianForestCooltrainerFEndBattleText": [ + 38, + 17658 + ], + "_ViridianForestLeavingSignText": [ + 38, + 18263 + ], + "_ViridianForestNorthGateGrampsText": [ + 40, + 19782 + ], + "_ViridianForestNorthGateSuperNerdText": [ + 40, + 19686 + ], + "_ViridianForestSouthGateGirlText": [ + 40, + 20049 + ], + "_ViridianForestSouthGateLittleGirlText": [ + 40, + 20116 + ], + "_ViridianForestTrainerTips1Text": [ + 38, + 17914 + ], + "_ViridianForestTrainerTips2Text": [ + 38, + 18036 + ], + "_ViridianForestTrainerTips3Text": [ + 38, + 18102 + ], + "_ViridianForestTrainerTips4Text": [ + 38, + 18179 + ], + "_ViridianForestUseAntidoteSignText": [ + 38, + 17987 + ], + "_ViridianForestYoungster1Text": [ + 38, + 17203 + ], + "_ViridianForestYoungster2AfterBattleText": [ + 38, + 17337 + ], + "_ViridianForestYoungster2BattleText": [ + 38, + 17263 + ], + "_ViridianForestYoungster2EndBattleText": [ + 38, + 17310 + ], + "_ViridianForestYoungster3AfterBattleText": [ + 38, + 17442 + ], + "_ViridianForestYoungster3BattleText": [ + 38, + 17370 + ], + "_ViridianForestYoungster3EndBattleText": [ + 38, + 17417 + ], + "_ViridianForestYoungster4AfterBattleText": [ + 38, + 17548 + ], + "_ViridianForestYoungster4BattleText": [ + 38, + 17487 + ], + "_ViridianForestYoungster4EndBattleText": [ + 38, + 17519 + ], + "_ViridianForestYoungster5AfterBattleText": [ + 38, + 17793 + ], + "_ViridianForestYoungster5BattleText": [ + 38, + 17727 + ], + "_ViridianForestYoungster5EndBattleText": [ + 38, + 17773 + ], + "_ViridianForestYoungster6Text": [ + 38, + 17847 + ], + "_ViridianGymCooltrainerM1AfterBattleText": [ + 42, + 23741 + ], + "_ViridianGymCooltrainerM1BattleText": [ + 42, + 23675 + ], + "_ViridianGymCooltrainerM1EndBattleText": [ + 42, + 23722 + ], + "_ViridianGymCooltrainerM2AfterBattleText": [ + 42, + 24131 + ], + "_ViridianGymCooltrainerM2BattleText": [ + 42, + 24078 + ], + "_ViridianGymCooltrainerM2EndBattleText": [ + 42, + 24114 + ], + "_ViridianGymCooltrainerM3AfterBattleText": [ + 42, + 24424 + ], + "_ViridianGymCooltrainerM3BattleText": [ + 42, + 24339 + ], + "_ViridianGymCooltrainerM3EndBattleText": [ + 42, + 24409 + ], + "_ViridianGymGiovanniEarthBadgeInfoText": [ + 42, + 23330 + ], + "_ViridianGymGiovanniPostBattleAdviceText": [ + 42, + 23170 + ], + "_ViridianGymGiovanniPreBattleText": [ + 42, + 22880 + ], + "_ViridianGymGiovanniReceivedEarthBadgeText": [ + 42, + 23084 + ], + "_ViridianGymGiovanniReceivedTM27Text": [ + 42, + 23512 + ], + "_ViridianGymGiovanniTM27ExplanationText": [ + 42, + 23531 + ], + "_ViridianGymGiovanniTM27NoRoomText": [ + 42, + 23642 + ], + "_ViridianGymGuidePostBattleText": [ + 42, + 24658 + ], + "_ViridianGymGuidePreBattleText": [ + 42, + 24488 + ], + "_ViridianGymHiker1AfterBattleText": [ + 42, + 23838 + ], + "_ViridianGymHiker1BattleText": [ + 42, + 23789 + ], + "_ViridianGymHiker1EndBattleText": [ + 42, + 23830 + ], + "_ViridianGymHiker2AfterBattleText": [ + 42, + 24035 + ], + "_ViridianGymHiker2BattleText": [ + 42, + 23981 + ], + "_ViridianGymHiker2EndBattleText": [ + 42, + 24027 + ], + "_ViridianGymHiker3AfterBattleText": [ + 42, + 24211 + ], + "_ViridianGymHiker3BattleText": [ + 42, + 24158 + ], + "_ViridianGymHiker3EndBattleText": [ + 42, + 24204 + ], + "_ViridianGymRocker1AfterBattleText": [ + 42, + 23936 + ], + "_ViridianGymRocker1BattleText": [ + 42, + 23860 + ], + "_ViridianGymRocker1EndBattleText": [ + 42, + 23907 + ], + "_ViridianGymRocker2AfterBattleText": [ + 42, + 24311 + ], + "_ViridianGymRocker2BattleText": [ + 42, + 24246 + ], + "_ViridianGymRocker2EndBattleText": [ + 42, + 24293 + ], + "_ViridianMartClerkParcelQuestText": [ + 42, + 22401 + ], + "_ViridianMartClerkSayHiToOakText": [ + 42, + 22334 + ], + "_ViridianMartClerkYouCameFromPalletTownText": [ + 42, + 22368 + ], + "_ViridianMartCooltrainerMText": [ + 42, + 22533 + ], + "_ViridianMartYoungsterText": [ + 42, + 22493 + ], + "_ViridianNicknameHouseBaldingGuyText": [ + 42, + 22728 + ], + "_ViridianNicknameHouseLittleGirlText": [ + 42, + 22814 + ], + "_ViridianNicknameHouseSpearowText": [ + 42, + 22840 + ], + "_ViridianNicknameHouseSpearySignText": [ + 42, + 22858 + ], + "_ViridianPokecenterCooltrainerMText": [ + 42, + 22256 + ], + "_ViridianPokecenterGentlemanText": [ + 42, + 22185 + ], + "_ViridianSchoolBlackboardText1": [ + 39, + 28648 + ], + "_ViridianSchoolBlackboardText2": [ + 39, + 28710 + ], + "_ViridianSchoolHouseBrunetteGirlText": [ + 42, + 22578 + ], + "_ViridianSchoolHouseCooltrainerFText": [ + 42, + 22679 + ], + "_ViridianSchoolHouseLittleGirlText": [ + 42, + 22621 + ], + "_ViridianSchoolNotebookText1": [ + 39, + 27476 + ], + "_ViridianSchoolNotebookText2": [ + 39, + 27639 + ], + "_ViridianSchoolNotebookText3": [ + 39, + 27758 + ], + "_ViridianSchoolNotebookText4": [ + 39, + 27869 + ], + "_ViridianSchoolNotebookText5": [ + 39, + 27440 + ], + "_VitaminNoEffectText": [ + 45, + 27488 + ], + "_VitaminStatRoseText": [ + 45, + 27470 + ], + "_VoltorbDexEntry": [ + 46, + 26022 + ], + "_VulpixDexEntry": [ + 46, + 19846 + ], + "_WannaTrade1Text": [ + 45, + 28486 + ], + "_WannaTrade2Text": [ + 45, + 28650 + ], + "_WannaTrade3Text": [ + 45, + 28845 + ], + "_WardensHouseDisplayMerchandiseText": [ + 44, + 18638 + ], + "_WardensHouseDisplayPhotosAndFossilsText": [ + 44, + 18612 + ], + "_WardensHouseWardenGaveTheGoldTeethText": [ + 44, + 18160 + ], + "_WardensHouseWardenGibberish1Text": [ + 44, + 18018 + ], + "_WardensHouseWardenGibberish2Text": [ + 44, + 18089 + ], + "_WardensHouseWardenGibberish3Text": [ + 44, + 18126 + ], + "_WardensHouseWardenHM04ExplanationText": [ + 44, + 18388 + ], + "_WardensHouseWardenHM04NoRoomText": [ + 44, + 18584 + ], + "_WardensHouseWardenReceivedHM04Text": [ + 44, + 18368 + ], + "_WardensHouseWardenTeethPoppedInHisTeethText": [ + 44, + 18199 + ], + "_WardensHouseWardenThanksText": [ + 44, + 18233 + ], + "_WarpToLastPokemonCenterText": [ + 45, + 16586 + ], + "_WartortleDexEntry": [ + 46, + 17047 + ], + "_WasBlownAwayText": [ + 42, + 16638 + ], + "_WasSeededText": [ + 42, + 17027 + ], + "_WeedleDexEntry": [ + 46, + 17523 + ], + "_WeepinbellDexEntry": [ + 46, + 23101 + ], + "_WeezingDexEntry": [ + 46, + 27017 + ], + "_WhatDoYouWantText": [ + 40, + 17196 + ], + "_WhatGoesAroundComesAroundText": [ + 39, + 28042 + ], + "_WhatText": [ + 40, + 17607 + ], + "_WhatToDepositText": [ + 40, + 17221 + ], + "_WhatToTossText": [ + 40, + 17463 + ], + "_WhatToWithdrawText": [ + 40, + 17346 + ], + "_WhenYouChangeBoxText": [ + 41, + 30366 + ], + "_WhichFloorText": [ + 40, + 16640 + ], + "_WhichMoveToForgetText": [ + 44, + 30293 + ], + "_WhichPrizeText": [ + 40, + 18036 + ], + "_WigglytuffDexEntry": [ + 46, + 20138 + ], + "_WildMonAppearedText": [ + 39, + 31589 + ], + "_WildRanText": [ + 39, + 30014 + ], + "_WillBeTradedText": [ + 40, + 18956 + ], + "_WithExpAllText": [ + 39, + 31418 + ], + "_WithdrawHowManyText": [ + 40, + 17377 + ], + "_WithdrewItemText": [ + 40, + 17388 + ], + "_WokeUpText": [ + 39, + 30718 + ], + "_WontObeyText": [ + 39, + 31226 + ], + "_WouldYouLikeToSaveText": [ + 41, + 30256 + ], + "_WrongMon1Text": [ + 45, + 28555 + ], + "_WrongMon2Text": [ + 45, + 28737 + ], + "_WrongMon3Text": [ + 45, + 28913 + ], + "_YeahText": [ + 39, + 24575 + ], + "_YourNameIsText": [ + 40, + 18884 + ], + "_ZapdosDexEntry": [ + 46, + 30475 + ], + "_ZubatDexEntry": [ + 46, + 20240 + ] + }, + "text": { + "dynamic": { + "_AIBattleUseItemText": [ + [ + 1, + "{RAM:wTrainerName}" + ], + [ + 1, + "{RAM:wNameBuffer}" + ], + [ + 1, + "{RAM:wEnemyMonNick}" + ] + ], + "_AIBattleWithdrawText": [ + [ + 1, + "{RAM:wTrainerName}" + ], + [ + 1, + "{RAM:wEnemyMonNick}" + ] + ], + "_AbandonLearningText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_AfterTrade1Text": [ + [ + 1, + "{RAM:wInGameTradeReceiveMonName}" + ] + ], + "_AfterTrade2Text": [ + [ + 1, + "{RAM:wInGameTradeGiveMonName}" + ] + ], + "_AfterTrade3Text": [ + [ + 1, + "{RAM:wInGameTradeReceiveMonName}" + ], + [ + 1, + "{RAM:wInGameTradeGiveMonName}" + ] + ], + "_AlreadyKnowsText": [ + [ + 1, + "{RAM:wNameBuffer}" + ], + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_AlreadyOutText": [ + [ + 1, + "{RAM:wBattleMonNick}" + ] + ], + "_AntidoteText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_AwakeningText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_BeganToNapText": [ + [ + 1, + "{RAM:wBattleMonNick}" + ] + ], + "_BurnHealText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_CanMoveBouldersText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_CannotFlyHereText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_CannotUseTeleportNowText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_CeladonCityGramps3ReceivedTM41Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_CeladonDinerGymGuideReceivedCoinCaseText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_CeladonGymReceivedTM21Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_CeladonMart3FClerkReceivedTM18Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_CeladonMartRoofLittleGirlReceivedTM13Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_CeladonMartRoofLittleGirlReceivedTM48Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_CeladonMartRoofLittleGirlTM13ExplanationText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_CeladonMartRoofLittleGirlTM48ExplanationText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_ChampionsRoomOakCongratulatesPlayerText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_CinnabarGymBlaineReceivedTM38Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_CinnabarLabFossilRoomScientist1FossilIsBackToLifeText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_CinnabarLabFossilRoomScientist1SeesFossilText": [ + [ + 1, + "{RAM:wNameBuffer}" + ], + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_CinnabarLabFossilRoomScientist1TakesFossilText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_CinnabarLabMetronomeRoomScientist1ReceivedTM35Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_CoinCaseNumCoinsText": [ + [ + 2, + "{NUM:wPlayerCoins, 2 | LEADING_ZEROES | LEFT_ALIGN}" + ] + ], + "_ColosseumEvolvedText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_ColosseumHeightText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_ColosseumWeightText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_CopycatsHouse2FCopycatReceivedTM31Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_DaycareGentlemanGotMonBackText": [ + [ + 1, + "{RAM:wDayCareMonName}" + ] + ], + "_DaycareGentlemanMonHasGrownText": [ + [ + 1, + "{RAM:wNameBuffer}" + ], + [ + 9, + "{NUM:wDayCareNumLevelsGrown, 1, 3}" + ] + ], + "_DaycareGentlemanMonNeedsMoreTimeText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_DaycareGentlemanOweMoneyText": [ + [ + 2, + "{NUM:wDayCareTotalCost, 2 | LEADING_ZEROES | LEFT_ALIGN}" + ] + ], + "_DaycareGentlemanWillLookAfterMonText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_DexCompletionText": [ + [ + 9, + "{NUM:hDexRatingNumMonsSeen, 1, 3}" + ], + [ + 9, + "{NUM:hDexRatingNumMonsOwned, 1, 3}" + ] + ], + "_DexSeenOwnedText": [ + [ + 9, + "{NUM:wDexRatingNumMonsSeen, 1, 3}" + ], + [ + 9, + "{NUM:wDexRatingNumMonsOwned, 1, 3}" + ] + ], + "_DidNotLearnText": [ + [ + 1, + "{RAM:wLearnMoveMonName}" + ], + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_DoYouWantToNicknameText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_EnemyAppearedText": [ + [ + 1, + "{RAM:wEnemyMonNick}" + ] + ], + "_EnemyMonFaintedText": [ + [ + 1, + "{RAM:wEnemyMonNick}" + ] + ], + "_EnemyRanText": [ + [ + 1, + "{RAM:wEnemyMonNick}" + ] + ], + "_EvolvedText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_ExpPointsText": [ + [ + 9, + "{NUM:wExpAmountGained, 2, 4}" + ] + ], + "_ExpressionText": [ + [ + 9, + "{NUM:wExpressionNumber, 1, 2}" + ] + ], + "_ForgotAndText": [ + [ + 1, + "{RAM:wLearnMoveMonName}" + ], + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_FoundHiddenCoins2Text": [ + [ + 2, + "{NUM:hCoins, 2 | LEADING_ZEROES | LEFT_ALIGN}" + ] + ], + "_FoundHiddenCoinsText": [ + [ + 2, + "{NUM:hCoins, 2 | LEADING_ZEROES | LEFT_ALIGN}" + ] + ], + "_FoundHiddenItemText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_FoundItemText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_FuchsiaGoodRodHouseFishingGuruReceivedGoodRodText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_FuchsiaGymKogaReceivedTM06Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_FullHealText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_GainedText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_GotMapText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_GotMonText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_GotOffBicycleText2": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_GotOnBicycleText2": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_GrewLevelText": [ + [ + 1, + "{RAM:wNameBuffer}" + ], + [ + 9, + "{NUM:wCurEnemyLevel, 1, 3}" + ] + ], + "_GymStatueText1": [ + [ + 1, + "{RAM:wGymCityName}" + ], + [ + 1, + "{RAM:wGymLeaderName}" + ] + ], + "_GymStatueText2": [ + [ + 1, + "{RAM:wGymCityName}" + ], + [ + 1, + "{RAM:wGymLeaderName}" + ] + ], + "_HitXTimesText": [ + [ + 9, + "{NUM:wEnemyNumHits, 1, 1}" + ] + ], + "_HookedMonAttackedText": [ + [ + 1, + "{RAM:wEnemyMonNick}" + ] + ], + "_IceHealText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_IgnoredOrdersText": [ + [ + 1, + "{RAM:wBattleMonNick}" + ] + ], + "_IntoText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_IsEvolvingText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_IsItOKToTossItemText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_ItemUseBallText05": [ + [ + 1, + "{RAM:wEnemyMonNick}" + ] + ], + "_ItemUseBallText06": [ + [ + 1, + "{RAM:wEnemyMonNick}" + ] + ], + "_ItemUseBallText07": [ + [ + 1, + "{RAM:wBoxMonNicks}" + ] + ], + "_ItemUseBallText08": [ + [ + 1, + "{RAM:wBoxMonNicks}" + ] + ], + "_ItemUseText002": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_ItemWasStoredText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_LearnedMove1Text": [ + [ + 1, + "{RAM:wLearnMoveMonName}" + ], + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_LinedUpText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_LinkBattleLostText": [ + [ + 1, + "{RAM:wTrainerName}" + ] + ], + "_LoafingAroundText": [ + [ + 1, + "{RAM:wBattleMonNick}" + ] + ], + "_MimicLearnedMoveText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_MonCannotLearnMachineMoveText": [ + [ + 1, + "{RAM:wNameBuffer}" + ], + [ + 1, + "{RAM:wStringBuffer}" + ], + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_MonIsTakenOutText": [ + [ + 1, + "{RAM:wStringBuffer}" + ], + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_MonWasReleasedText": [ + [ + 1, + "{RAM:wStringBuffer}" + ], + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_MonWasStoredText": [ + [ + 1, + "{RAM:wStringBuffer}" + ], + [ + 1, + "{RAM:wBoxNumString}" + ] + ], + "_MoneyForWinningText": [ + [ + 2, + "{NUM:wAmountMoneyWon, 3 | LEADING_ZEROES | LEFT_ALIGN}" + ] + ], + "_MonsStatsFellText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_MonsStatsRoseText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_MoveIsDisabledText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_MoveNameText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_MoveWasDisabledText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_MrFujisHouseMrFujiReceivedPokeFluteText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_MrPsychicsHouseMrPsychicReceivedTM29Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_MtMoonB2FReceivedFossilText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_MultiHitText": [ + [ + 9, + "{NUM:wPlayerNumHits, 1, 1}" + ] + ], + "_NameRatersHouseNameRaterATrulyImpeccableNameText": [ + [ + 1, + "{RAM:wNameBuffer}" + ], + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_NameRatersHouseNameRaterGiveItANiceNameText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_NameRatersHouseNameRaterPokemonHasBeenRenamedText": [ + [ + 1, + "{RAM:wBuffer}" + ] + ], + "_NoMovesLeftText": [ + [ + 1, + "{RAM:wBattleMonNick}" + ] + ], + "_NoSurfingHereText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_OaksAideComeBackText": [ + [ + 9, + "{NUM:hOaksAideRequirement, 1, 3}" + ], + [ + 1, + "{RAM:wOaksAideRewardItemName}" + ] + ], + "_OaksAideGotItemText": [ + [ + 1, + "{RAM:wOaksAideRewardItemName}" + ] + ], + "_OaksAideHereYouGoText": [ + [ + 9, + "{NUM:hOaksAideNumMonsOwned, 1, 3}" + ] + ], + "_OaksAideHiText": [ + [ + 9, + "{NUM:hOaksAideRequirement, 1, 3}" + ], + [ + 1, + "{RAM:wOaksAideRewardItemName}" + ], + [ + 9, + "{NUM:hOaksAideRequirement, 1, 3}" + ] + ], + "_OaksAideNoRoomText": [ + [ + 1, + "{RAM:wOaksAideRewardItemName}" + ] + ], + "_OaksAideUhOhText": [ + [ + 9, + "{NUM:hOaksAideNumMonsOwned, 1, 3}" + ], + [ + 9, + "{NUM:hOaksAideRequirement, 1, 3}" + ], + [ + 1, + "{RAM:wOaksAideRewardItemName}" + ] + ], + "_OaksLabReceivedText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_OnceReleasedText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_PPIncreasedText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_PPMaxedOutText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_ParlyzHealText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_PickUpPayDayMoneyText": [ + [ + 2, + "{NUM:wTotalPayDayMoney, 3 | LEADING_ZEROES | LEFT_ALIGN}" + ] + ], + "_PikachuUnhappyText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_PlayerMon1Text": [ + [ + 1, + "{RAM:wBattleMonNick}" + ] + ], + "_PlayerMon2Text": [ + [ + 1, + "{RAM:wBattleMonNick}" + ] + ], + "_PlayerMonFaintedText": [ + [ + 1, + "{RAM:wBattleMonNick}" + ] + ], + "_PokemartTellBuyPriceText": [ + [ + 1, + "{RAM:wStringBuffer}" + ], + [ + 2, + "{NUM:hMoney, 3 | LEADING_ZEROES | LEFT_ALIGN}" + ] + ], + "_PokemartTellSellPriceText": [ + [ + 2, + "{NUM:hMoney, 3 | LEADING_ZEROES | LEFT_ALIGN}" + ] + ], + "_PokemonFaintedText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_PokemonFanClubReceivedBikeVoucherText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_PotionText": [ + [ + 1, + "{RAM:wNameBuffer}" + ], + [ + 9, + "{NUM:wHPBarHPDifference, 2, 3}" + ] + ], + "_RareCandyText": [ + [ + 1, + "{RAM:wNameBuffer}" + ], + [ + 9, + "{NUM:wCurEnemyLevel, 1, 3}" + ] + ], + "_RefusingText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_ReviveText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_Route12SuperRodHouseFishingGuruReceivedSuperRodText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_Route1Youngster1GotPotionText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_Route23OhThatIsTheBadgeText": [ + [ + 1, + "{RAM:wNameBuffer}" + ], + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_Route23YouDontHaveTheBadgeYetText": [ + [ + 1, + "{RAM:wNameBuffer}" + ], + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_Route24CooltrainerM1ReceivedNuggetText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_SSAnneCaptainsRoomCaptainReceivedHM01Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_SSTicketReceivedText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_SafariZoneAngryText": [ + [ + 1, + "{RAM:wEnemyMonNick}" + ] + ], + "_SafariZoneEatingText": [ + [ + 1, + "{RAM:wEnemyMonNick}" + ] + ], + "_SafariZoneGateSafariZoneWorker1ThatllBe500PleaseText": [ + [ + 2, + "{NUM:wPriceTemp, $c3}" + ] + ], + "_SafariZoneSecretHouseFishingGuruReceivedHM03Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_ScaredText": [ + [ + 1, + "{RAM:wBattleMonNick}" + ] + ], + "_SentToBoxText": [ + [ + 1, + "{RAM:wBoxMonNicks}" + ], + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_SilphCo11FSilphPresidentReceivedMasterBallText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_SilphCo2FSilphWorkerFReceivedTM36Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_SoYouWantPrizeText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_StoppedEvolvingText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_SurfingGotOnText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_TeachMachineMoveText": [ + [ + 1, + "{RAM:wStringBuffer}" + ], + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_TextIDErrorText": [ + [ + 9, + "{NUM:hTextID, 1, 2}" + ] + ], + "_ThrewAwayItemText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_TradeForText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_TradeSendsText": [ + [ + 1, + "{RAM:wLinkEnemyTrainerName}" + ], + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_TradeTakeCareText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_TradeTransferredText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_TradeWavesFarewellText": [ + [ + 1, + "{RAM:wLinkEnemyTrainerName}" + ] + ], + "_TradeWentToText": [ + [ + 1, + "{RAM:wStringBuffer}" + ], + [ + 1, + "{RAM:wLinkEnemyTrainerName}" + ] + ], + "_TradeWillTradeText": [ + [ + 1, + "{RAM:wLinkEnemyTrainerName}" + ], + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_TradedForText": [ + [ + 1, + "{RAM:wInGameTradeGiveMonName}" + ], + [ + 1, + "{RAM:wInGameTradeReceiveMonName}" + ] + ], + "_TradeforText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_TrainerAboutToUseText": [ + [ + 1, + "{RAM:wTrainerName}" + ], + [ + 1, + "{RAM:wEnemyMonNick}" + ] + ], + "_TrainerDefeatedText": [ + [ + 1, + "{RAM:wTrainerName}" + ] + ], + "_TrainerNameText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_TrainerSentOutText": [ + [ + 1, + "{RAM:wTrainerName}" + ], + [ + 1, + "{RAM:wEnemyMonNick}" + ] + ], + "_TrainerWantsToFightText": [ + [ + 1, + "{RAM:wTrainerName}" + ] + ], + "_TransformedText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_TryingToLearnText": [ + [ + 1, + "{RAM:wLearnMoveMonName}" + ], + [ + 1, + "{RAM:wStringBuffer}" + ], + [ + 1, + "{RAM:wLearnMoveMonName}" + ], + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_TurnedAwayText": [ + [ + 1, + "{RAM:wBattleMonNick}" + ] + ], + "_UsedCutText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_UsedStrengthText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_VendingMachineText5": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_VermilionGymLTSurgeReceivedTM24Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_VermilionOldRodHouseFishingGuruTakeThisText": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_VitaminStatRoseText": [ + [ + 1, + "{RAM:wNameBuffer}" + ], + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_WannaTrade1Text": [ + [ + 1, + "{RAM:wInGameTradeGiveMonName}" + ], + [ + 1, + "{RAM:wInGameTradeReceiveMonName}" + ] + ], + "_WannaTrade2Text": [ + [ + 1, + "{RAM:wInGameTradeGiveMonName}" + ], + [ + 1, + "{RAM:wInGameTradeReceiveMonName}" + ] + ], + "_WannaTrade3Text": [ + [ + 1, + "{RAM:wInGameTradeGiveMonName}" + ], + [ + 1, + "{RAM:wInGameTradeReceiveMonName}" + ] + ], + "_WardensHouseWardenReceivedHM04Text": [ + [ + 1, + "{RAM:wStringBuffer}" + ] + ], + "_WildMonAppearedText": [ + [ + 1, + "{RAM:wEnemyMonNick}" + ] + ], + "_WildRanText": [ + [ + 1, + "{RAM:wEnemyMonNick}" + ] + ], + "_WillBeTradedText": [ + [ + 1, + "{RAM:wNameOfPlayerMonToBeTraded}" + ], + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_WithdrewItemText": [ + [ + 1, + "{RAM:wNameBuffer}" + ] + ], + "_WontObeyText": [ + [ + 1, + "{RAM:wBattleMonNick}" + ] + ], + "_WrongMon1Text": [ + [ + 1, + "{RAM:wInGameTradeGiveMonName}" + ] + ], + "_WrongMon2Text": [ + [ + 1, + "{RAM:wInGameTradeGiveMonName}" + ] + ], + "_WrongMon3Text": [ + [ + 1, + "{RAM:wInGameTradeGiveMonName}" + ] + ] + }, + "labels": [ + "_AIBattleUseItemText", + "_AIBattleWithdrawText", + "_AbandonLearningText", + "_AbraDexEntry", + "_AccessedBillsPCText", + "_AccessedHoFPCText", + "_AccessedMyPCText", + "_AccessedOaksPCText", + "_AccessedSomeonesPCText", + "_ActorNameText", + "_AerodactylDexEntry", + "_AerodactylFossilText", + "_AfterTrade1Text", + "_AfterTrade2Text", + "_AfterTrade3Text", + "_AgathaAfterBattleText", + "_AgathaBeforeBattleText", + "_AgathaEndBattleText", + "_AgathasRoomAgathaDontRunAwayText", + "_AlakazamDexEntry", + "_AlreadyAsleepText", + "_AlreadyKnowsText", + "_AlreadyOutText", + "_AntidoteText", + "_ArbokDexEntry", + "_ArcanineDexEntry", + "_ArticunoDexEntry", + "_AttackContinuesText", + "_AttackMissedText", + "_AwakeningText", + "_BadlyPoisonedText", + "_BecameConfusedText", + "_BeedrillDexEntry", + "_BeganToNapText", + "_BellsproutDexEntry", + "_BetHowManySlotMachineText", + "_BikeShopBagFullText", + "_BikeShopCantAffordText", + "_BikeShopClerkDoYouLikeItText", + "_BikeShopClerkHowDoYouLikeYourBicycleText", + "_BikeShopClerkOhThatsAVoucherText", + "_BikeShopClerkWelcomeText", + "_BikeShopComeAgainText", + "_BikeShopExchangedVoucherText", + "_BikeShopMiddleAgedWomanText", + "_BikeShopYoungsterCoolBikeText", + "_BikeShopYoungsterTheseBikesAreExpensiveText", + "_BillsHouseBillCheckOutMyRarePokemonText", + "_BillsHouseBillDontLeaveText", + "_BillsHouseBillImNotAPokemonText", + "_BillsHouseBillNoYouGottaHelpText", + "_BillsHouseBillThankYouText", + "_BillsHouseBillUseSeparationSystemText", + "_BillsHouseBillWhyDontYouGoInsteadOfMeText", + "_BillsHouseInitiatedText", + "_BillsHouseMonitorText", + "_BillsHousePokemonListText1", + "_BillsHousePokemonListText2", + "_BlastoiseDexEntry", + "_BluesHouseDaisyBagFullText", + "_BluesHouseDaisyOfferMapText", + "_BluesHouseDaisyRivalAtLabText", + "_BluesHouseDaisyUseMapText", + "_BluesHouseDaisyWalkingText", + "_BluesHouseTownMapText", + "_BookcaseText", + "_BoostedText", + "_BootedUpHMText", + "_BootedUpTMText", + "_BoulderText", + "_BoxFullCannotThrowBallText", + "_BoxFullDebugText", + "_BoxFullText", + "_BoxIsFullText", + "_BoxWillBeClearedText", + "_BrunoAfterBattleText", + "_BrunoBeforeBattleText", + "_BrunoEndBattleText", + "_BrunosRoomBrunoDontRunAwayText", + "_BuildingRageText", + "_BulbasaurDexEntry", + "_BurnHealText", + "_BurnedText", + "_ButItFailedText", + "_ButterfreeDexEntry", + "_CableClubNPCAreaReservedFor2FriendsLinkedByCableText", + "_CableClubNPCLinkClosedBecauseOfInactivityText", + "_CableClubNPCMakingPreparationsText", + "_CableClubNPCPleaseApplyHereHaveToSaveText", + "_CableClubNPCPleaseComeAgainText", + "_CableClubNPCPleaseWaitText", + "_CableClubNPCWelcomeText", + "_CanMoveBouldersText", + "_CannotFlyHereText", + "_CannotGetOffHereText", + "_CannotUseItemsHereText", + "_CannotUseTeleportNowText", + "_CantCarryMoreText", + "_CantDepositLastMonText", + "_CantEscapeText", + "_CantMoveText", + "_CantTakeMonText", + "_CardKeyFailText", + "_CardKeySuccessText1", + "_CardKeySuccessText2", + "_CaterpieDexEntry", + "_CeladonChiefHouseChiefText", + "_CeladonChiefHouseRocketText", + "_CeladonChiefHouseSailorText", + "_CeladonCityDeptStoreSignText", + "_CeladonCityFisherText", + "_CeladonCityGameCornerSignText", + "_CeladonCityGirlText", + "_CeladonCityGramps1Text", + "_CeladonCityGramps2Text", + "_CeladonCityGramps3ReceivedTM41Text", + "_CeladonCityGramps3TM41ExplanationText", + "_CeladonCityGramps3TM41NoRoomText", + "_CeladonCityGramps3Text", + "_CeladonCityGymSignText", + "_CeladonCityHotelText", + "_CeladonCityLittleGirlText", + "_CeladonCityMansionSignText", + "_CeladonCityPokecenterGuyText", + "_CeladonCityPoliwrathText", + "_CeladonCityPrizeExchangeSignText", + "_CeladonCityRocket1Text", + "_CeladonCityRocket2Text", + "_CeladonCitySignText", + "_CeladonCityTrainerTips1Text", + "_CeladonCityTrainerTips2Text", + "_CeladonDinerCookText", + "_CeladonDinerFisherText", + "_CeladonDinerGymGuideCoinCaseNoRoomText", + "_CeladonDinerGymGuideImFlatOutBustedText", + "_CeladonDinerGymGuideReceivedCoinCaseText", + "_CeladonDinerGymGuideWinItBackText", + "_CeladonDinerMiddleAgedManText", + "_CeladonDinerMiddleAgedWomanText", + "_CeladonGymAfterBattleText2", + "_CeladonGymAfterBattleText3", + "_CeladonGymAfterBattleText4", + "_CeladonGymAfterBattleText5", + "_CeladonGymAfterBattleText6", + "_CeladonGymAfterBattleText7", + "_CeladonGymAfterBattleText8", + "_CeladonGymBattleText2", + "_CeladonGymBattleText3", + "_CeladonGymBattleText4", + "_CeladonGymBattleText5", + "_CeladonGymBattleText6", + "_CeladonGymBattleText7", + "_CeladonGymBattleText8", + "_CeladonGymEndBattleText2", + "_CeladonGymEndBattleText3", + "_CeladonGymEndBattleText4", + "_CeladonGymEndBattleText5", + "_CeladonGymEndBattleText6", + "_CeladonGymEndBattleText7", + "_CeladonGymEndBattleText8", + "_CeladonGymErikaPostBattleAdviceText", + "_CeladonGymErikaPreBattleText", + "_CeladonGymErikaReceivedRainbowBadgeText", + "_CeladonGymRainbowBadgeInfoText", + "_CeladonGymReceivedTM21Text", + "_CeladonGymTM21NoRoomText", + "_CeladonHotelBeautyText", + "_CeladonHotelGrannyText", + "_CeladonHotelSuperNerdText", + "_CeladonMansion1FClefairyText", + "_CeladonMansion1FManagersSuiteSignText", + "_CeladonMansion1FMeowthText", + "_CeladonMansion1FNidoranFText", + "_CeladonMansion1Text10", + "_CeladonMansion1Text11", + "_CeladonMansion1Text12", + "_CeladonMansion1Text2", + "_CeladonMansion1Text6", + "_CeladonMansion1Text7", + "_CeladonMansion1Text8", + "_CeladonMansion1Text9", + "_CeladonMansion2FMeetingRoomSignText", + "_CeladonMansion3FDevRoomSignText", + "_CeladonMansion3FGameDesignerCompletedDexText", + "_CeladonMansion3FGameDesignerCompletedDexText2", + "_CeladonMansion3FGameDesignerText", + "_CeladonMansion3FGameProgramPCText", + "_CeladonMansion3FGameScriptPCText", + "_CeladonMansion3FGraphicArtistText", + "_CeladonMansion3FGraphicArtistText2", + "_CeladonMansion3FGraphicArtistText3", + "_CeladonMansion3FGraphicArtistText4", + "_CeladonMansion3FGraphicArtistText5", + "_CeladonMansion3FPlayingGamePCText", + "_CeladonMansion3FProgrammerText", + "_CeladonMansion3FProgrammerText2", + "_CeladonMansion3FWriterText", + "_CeladonMansion3FWriterText2", + "_CeladonMansionRoofHouseHikerText", + "_CeladonMansionRoofHouseSignText", + "_CeladonMart1FCurrentFloorSignText", + "_CeladonMart1FDirectorySignText", + "_CeladonMart1FReceptionistText", + "_CeladonMart2FCurrentFloorSignText", + "_CeladonMart2FGirlText", + "_CeladonMart2FMiddleAgedManText", + "_CeladonMart3FClerkReceivedTM18Text", + "_CeladonMart3FClerkTM18ExplanationText", + "_CeladonMart3FClerkTM18NoRoomText", + "_CeladonMart3FClerkTM18PreReceiveText", + "_CeladonMart3FCurrentFloorSignText", + "_CeladonMart3FFightingGameText", + "_CeladonMart3FGameBoyKid1Text", + "_CeladonMart3FGameBoyKid2Text", + "_CeladonMart3FGameBoyKid3Text", + "_CeladonMart3FLittleBoyText", + "_CeladonMart3FPokemonPosterText", + "_CeladonMart3FPuzzleGameText", + "_CeladonMart3FRPGText", + "_CeladonMart3FSNESText", + "_CeladonMart3FSportsGameText", + "_CeladonMart4FCurrentFloorSignText", + "_CeladonMart4FSuperNerdText", + "_CeladonMart4FYoungsterText", + "_CeladonMart5FCurrentFloorSignText", + "_CeladonMart5FGentlemanText", + "_CeladonMart5FSailorText", + "_CeladonMartRoofCurrentFloorSignText", + "_CeladonMartRoofLittleGirlGiveHerADrinkText", + "_CeladonMartRoofLittleGirlGiveHerWhichDrinkText", + "_CeladonMartRoofLittleGirlImNotThirstyText", + "_CeladonMartRoofLittleGirlImThirstyText", + "_CeladonMartRoofLittleGirlNoRoomText", + "_CeladonMartRoofLittleGirlReceivedTM13Text", + "_CeladonMartRoofLittleGirlReceivedTM48Text", + "_CeladonMartRoofLittleGirlReceivedTM49Text", + "_CeladonMartRoofLittleGirlTM13ExplanationText", + "_CeladonMartRoofLittleGirlTM48ExplanationText", + "_CeladonMartRoofLittleGirlTM49ExplanationText", + "_CeladonMartRoofLittleGirlYayFreshWaterText", + "_CeladonMartRoofLittleGirlYayLemonadeText", + "_CeladonMartRoofLittleGirlYaySodaPopText", + "_CeladonMartRoofSuperNerdText", + "_CeladonPokecenterBeautyText", + "_CeladonPokecenterGentlemanText", + "_CeruleanBadgeHouseBoulderBadgeText", + "_CeruleanBadgeHouseCascadeBadgeText", + "_CeruleanBadgeHouseEarthBadgeText", + "_CeruleanBadgeHouseMarshBadgeText", + "_CeruleanBadgeHouseMiddleAgedManText", + "_CeruleanBadgeHouseMiddleAgedManVisitAnyTimeText", + "_CeruleanBadgeHouseMiddleAgedManWhichBadgeText", + "_CeruleanBadgeHouseRainbowBadgeText", + "_CeruleanBadgeHouseSoulBadgeText", + "_CeruleanBadgeHouseThunderBadgeText", + "_CeruleanBadgeHouseVolcanoBadgeText", + "_CeruleanCityBikeShopSign", + "_CeruleanCityCooltrainerF1ElectrodePunchText", + "_CeruleanCityCooltrainerF1ElectrodeUseSonicboomText", + "_CeruleanCityCooltrainerF1ElectrodeWithdrawText", + "_CeruleanCityCooltrainerF2Text", + "_CeruleanCityCooltrainerMText", + "_CeruleanCityElectrodeIgnoredOrdersText", + "_CeruleanCityElectrodeIsLoafingAroundText", + "_CeruleanCityElectrodeTookASnoozeText", + "_CeruleanCityElectrodeTurnedAwayText", + "_CeruleanCityGuardText", + "_CeruleanCityGymSign", + "_CeruleanCityRivalDefeatedText", + "_CeruleanCityRivalIWentToBillsText", + "_CeruleanCityRivalPreBattleText", + "_CeruleanCityRivalVictoryText", + "_CeruleanCityRocketIBetterGetMovingText", + "_CeruleanCityRocketIGiveUpText", + "_CeruleanCityRocketIllReturnTheTMText", + "_CeruleanCityRocketReceivedTM28Text", + "_CeruleanCityRocketTM28NoRoomText", + "_CeruleanCityRocketText", + "_CeruleanCitySignText", + "_CeruleanCitySuperNerd1Text", + "_CeruleanCitySuperNerd2Text", + "_CeruleanCitySuperNerd3Text", + "_CeruleanCityTrainerTipsText", + "_CeruleanGymAfterBattleText1", + "_CeruleanGymAfterBattleText2", + "_CeruleanGymBattleText1", + "_CeruleanGymBattleText2", + "_CeruleanGymEndBattleText1", + "_CeruleanGymEndBattleText2", + "_CeruleanGymGymGuideBeatMistyText", + "_CeruleanGymGymGuideChampInMakingText", + "_CeruleanGymMistyCascadeBadgeInfoText", + "_CeruleanGymMistyPreBattleText", + "_CeruleanGymMistyReceivedCascadeBadgeText", + "_CeruleanGymMistyReceivedTM11Text", + "_CeruleanGymMistyTM11ExplanationText", + "_CeruleanGymMistyTM11NoRoomText", + "_CeruleanMartCooltrainerFText", + "_CeruleanMartCooltrainerMText", + "_CeruleanPokecenterGentlemanText", + "_CeruleanPokecenterGuyText", + "_CeruleanPokecenterSuperNerdText", + "_CeruleanTrashedHouseFishingGuruTheyStoleATMText", + "_CeruleanTrashedHouseFishingGuruWhatsLostIsLostText", + "_CeruleanTrashedHouseGirlText", + "_CeruleanTrashedHouseWallHoleText", + "_ChampionsRoomOakComeWithMeText", + "_ChampionsRoomOakCongratulatesPlayerText", + "_ChampionsRoomOakDisappointedWithRivalText", + "_ChampionsRoomOakText", + "_ChampionsRoomRivalAfterBattleText", + "_ChampionsRoomRivalIntroText", + "_ChanseyDexEntry", + "_ChargeMoveEffectText", + "_CharizardDexEntry", + "_CharmanderDexEntry", + "_CharmeleonDexEntry", + "_ChooseABoxText", + "_CinnabarGymBlainePostBattleAdviceText", + "_CinnabarGymBlainePreBattleText", + "_CinnabarGymBlaineReceivedTM38Text", + "_CinnabarGymBlaineReceivedVolcanoBadgeText", + "_CinnabarGymBlaineTM38ExplanationText", + "_CinnabarGymBlaineTM38NoRoomText", + "_CinnabarGymBlaineVolcanoBadgeInfoText", + "_CinnabarGymGymGuideBeatBlaineText", + "_CinnabarGymGymGuideChampInMakingText", + "_CinnabarGymQuizCorrectText", + "_CinnabarGymQuizDummyIntroText", + "_CinnabarGymQuizIncorrectText", + "_CinnabarGymQuizIntroText", + "_CinnabarGymQuizShortIntroText", + "_CinnabarGymSuperNerd1AfterBattleText", + "_CinnabarGymSuperNerd1BattleText", + "_CinnabarGymSuperNerd1EndBattleText", + "_CinnabarGymSuperNerd2AfterBattleText", + "_CinnabarGymSuperNerd2BattleText", + "_CinnabarGymSuperNerd2EndBattleText", + "_CinnabarGymSuperNerd3AfterBattleText", + "_CinnabarGymSuperNerd3BattleText", + "_CinnabarGymSuperNerd3EndBattleText", + "_CinnabarGymSuperNerd4AfterBattleText", + "_CinnabarGymSuperNerd4BattleText", + "_CinnabarGymSuperNerd4EndBattleText", + "_CinnabarGymSuperNerd5AfterBattleText", + "_CinnabarGymSuperNerd5BattleText", + "_CinnabarGymSuperNerd5EndBattleText", + "_CinnabarGymSuperNerd6AfterBattleText", + "_CinnabarGymSuperNerd6BattleText", + "_CinnabarGymSuperNerd6EndBattleText", + "_CinnabarGymSuperNerd7AfterBattleText", + "_CinnabarGymSuperNerd7BattleText", + "_CinnabarGymSuperNerd7EndBattleText", + "_CinnabarGymText_1", + "_CinnabarGymText_2", + "_CinnabarGymText_3", + "_CinnabarGymText_4", + "_CinnabarGymText_5", + "_CinnabarGymText_6", + "_CinnabarGymText_7", + "_CinnabarIslandDoorIsLockedText", + "_CinnabarIslandGamblerText", + "_CinnabarIslandGirlText", + "_CinnabarIslandGymSignText", + "_CinnabarIslandPokemonLabSignText", + "_CinnabarIslandSignText", + "_CinnabarLabFishingGuruText", + "_CinnabarLabFossilRoomScientist1ComeAgainText", + "_CinnabarLabFossilRoomScientist1FossilIsBackToLifeText", + "_CinnabarLabFossilRoomScientist1GoForAWalkText", + "_CinnabarLabFossilRoomScientist1GoForAWalkText2", + "_CinnabarLabFossilRoomScientist1NoFossilsText", + "_CinnabarLabFossilRoomScientist1SeesFossilText", + "_CinnabarLabFossilRoomScientist1TakesFossilText", + "_CinnabarLabFossilRoomScientist1Text", + "_CinnabarLabMeetingRoomSignText", + "_CinnabarLabMetronomeRoomAmberPipeText", + "_CinnabarLabMetronomeRoomPCText", + "_CinnabarLabMetronomeRoomScientist1ReceivedTM35Text", + "_CinnabarLabMetronomeRoomScientist1TM35ExplanationText", + "_CinnabarLabMetronomeRoomScientist1TM35NoRoomText", + "_CinnabarLabMetronomeRoomScientist1Text", + "_CinnabarLabMetronomeRoomScientist2Text", + "_CinnabarLabPhotoText", + "_CinnabarLabRAndDSignText", + "_CinnabarLabTestingRoomSignText", + "_CinnabarLabTradeRoomSuperNerdText", + "_CinnabarMartScientistText", + "_CinnabarMartSilphWorkerFText", + "_CinnabarPokecenterCooltrainerFText", + "_CinnabarPokecenterGentlemanText", + "_CinnabarPokecenterGuyText", + "_CinnabarQuizQuestionsText1", + "_CinnabarQuizQuestionsText2", + "_CinnabarQuizQuestionsText3", + "_CinnabarQuizQuestionsText4", + "_CinnabarQuizQuestionsText5", + "_CinnabarQuizQuestionsText6", + "_ClearSaveDataText", + "_ClefableDexEntry", + "_ClefairyDexEntry", + "_ClosedOaksPCText", + "_CloysterDexEntry", + "_CoinCaseNumCoinsText", + "_CoinsScatteredText", + "_Colosseum3MonsText", + "_ColosseumCanceledText", + "_ColosseumDifferentMonsText", + "_ColosseumEvolvedText", + "_ColosseumHeightText", + "_ColosseumIneligibleText", + "_ColosseumMaxL20Text", + "_ColosseumMaxL30Text", + "_ColosseumMaxL55Text", + "_ColosseumMewText", + "_ColosseumMinL15Text", + "_ColosseumMinL25Text", + "_ColosseumMinL50Text", + "_ColosseumOpponentText", + "_ColosseumPleaseWaitText", + "_ColosseumTotalL155Text", + "_ColosseumTotalL50Text", + "_ColosseumTotalL80Text", + "_ColosseumVersionText", + "_ColosseumWeightText", + "_ColosseumWhereToText", + "_ComeBackText", + "_ConfusedNoMoreText", + "_ConnectCableText", + "_ContCharText", + "_ConvertedTypeText", + "_CopycatsHouse1FChanseyText", + "_CopycatsHouse1FMiddleAgedManText", + "_CopycatsHouse1FMiddleAgedWomanText", + "_CopycatsHouse2FCopycatDoYouLikePokemonText", + "_CopycatsHouse2FCopycatReceivedTM31Text", + "_CopycatsHouse2FCopycatTM31Explanation1Text", + "_CopycatsHouse2FCopycatTM31Explanation2Text", + "_CopycatsHouse2FCopycatTM31NoRoomText", + "_CopycatsHouse2FCopycatTM31PreReceiveText", + "_CopycatsHouse2FDoduoText", + "_CopycatsHouse2FPCCantSeeText", + "_CopycatsHouse2FPCMySecretsText", + "_CopycatsHouse2FRareDollText", + "_CopycatsHouse2FSNESText", + "_CriticalHitText", + "_CuboneDexEntry", + "_CurrentTooFastText", + "_CyclingIsFunText", + "_DaycareGentlemanAllRightThenText", + "_DaycareGentlemanCantAcceptMonWithHMText", + "_DaycareGentlemanComeAgainText", + "_DaycareGentlemanComeSeeMeInAWhileText", + "_DaycareGentlemanGotMonBackText", + "_DaycareGentlemanHeresYourMonText", + "_DaycareGentlemanIntroText", + "_DaycareGentlemanMonHasGrownText", + "_DaycareGentlemanMonNeedsMoreTimeText", + "_DaycareGentlemanNoRoomForMonText", + "_DaycareGentlemanNotEnoughMoneyText", + "_DaycareGentlemanOnlyHaveOneMonText", + "_DaycareGentlemanOweMoneyText", + "_DaycareGentlemanWhichMonText", + "_DaycareGentlemanWillLookAfterMonText", + "_DepositHowManyText", + "_DepositWhichMonText", + "_DewgongDexEntry", + "_DexCompletionText", + "_DexRatingText", + "_DexRatingText_Own0To9", + "_DexRatingText_Own100To109", + "_DexRatingText_Own10To19", + "_DexRatingText_Own110To119", + "_DexRatingText_Own120To129", + "_DexRatingText_Own130To139", + "_DexRatingText_Own140To149", + "_DexRatingText_Own150To151", + "_DexRatingText_Own20To29", + "_DexRatingText_Own30To39", + "_DexRatingText_Own40To49", + "_DexRatingText_Own50To59", + "_DexRatingText_Own60To69", + "_DexRatingText_Own70To79", + "_DexRatingText_Own80To89", + "_DexRatingText_Own90To99", + "_DexSeenOwnedText", + "_DidNotLearnText", + "_DidntAffectText", + "_DiglettDexEntry", + "_DiglettSculptureText", + "_DiglettsCaveRoute11GamblerText", + "_DiglettsCaveRoute2FishingGuruText", + "_DisabledNoMoreText", + "_DittoDexEntry", + "_DoItText", + "_DoYouWantToNicknameText", + "_DodrioDexEntry", + "_DoduoDexEntry", + "_DoesntAffectMonText", + "_DontHavePokemonText", + "_DragonairDexEntry", + "_DragoniteDexEntry", + "_DratiniDexEntry", + "_DreamWasEatenText", + "_DroppedHiddenCoinsText", + "_DrowzeeDexEntry", + "_DugAHoleText", + "_DugtrioDexEntry", + "_EeveeDexEntry", + "_EkansDexEntry", + "_ElectabuzzDexEntry", + "_ElectrodeDexEntry", + "_ElevatorText", + "_EndUsedMove1Text", + "_EndUsedMove2Text", + "_EndUsedMove3Text", + "_EndUsedMove4Text", + "_EndUsedMove5Text", + "_EnemiesOnEverySideText", + "_EnemyAppearedText", + "_EnemyMonFaintedText", + "_EnemyRanText", + "_EnemysWeakText", + "_EnoughText", + "_EvadedAttackText", + "_EvolvedText", + "_ExchangeCoinsForPrizesText", + "_ExclamationText", + "_ExeggcuteDexEntry", + "_ExeggutorDexEntry", + "_ExpPointsText", + "_ExpressionText", + "_FanClubPicture1Text", + "_FanClubPicture2Text", + "_FarfetchdDexEntry", + "_FastAsleepText", + "_FearowDexEntry", + "_FellAsleepBecameHealthyText", + "_FellAsleepText", + "_FellText", + "_FightingDojoBetterNotGetGreedyText", + "_FightingDojoBlackbelt1AfterBattleText", + "_FightingDojoBlackbelt1BattleText", + "_FightingDojoBlackbelt1EndBattleText", + "_FightingDojoBlackbelt2AfterBattleText", + "_FightingDojoBlackbelt2BattleText", + "_FightingDojoBlackbelt2EndBattleText", + "_FightingDojoBlackbelt3AfterBattleText", + "_FightingDojoBlackbelt3BattleText", + "_FightingDojoBlackbelt3EndBattleText", + "_FightingDojoBlackbelt4AfterBattleText", + "_FightingDojoBlackbelt4BattleText", + "_FightingDojoBlackbelt4EndBattleText", + "_FightingDojoHitmonchanPokeBallText", + "_FightingDojoHitmonleePokeBallText", + "_FightingDojoKarateMasterDefeatedText", + "_FightingDojoKarateMasterIWillGiveYouAPokemonText", + "_FightingDojoKarateMasterStayAndTrainWithUsText", + "_FightingDojoKarateMasterText", + "_FightingDojoText", + "_FileDataDestroyedText", + "_FireDefrostedText", + "_FlareonDexEntry", + "_FlashLightsAreaText", + "_FlewUpHighText", + "_FlinchedText", + "_FluteWokeUpText", + "_ForgotAndText", + "_FoundHiddenCoins2Text", + "_FoundHiddenCoinsText", + "_FoundHiddenItemText", + "_FoundItemText", + "_FrozenText", + "_FuchsiaBillsGrandpasHouseBillsGrandpaText", + "_FuchsiaBillsGrandpasHouseMiddleAgedWomanText", + "_FuchsiaBillsGrandpasHouseYoungsterText", + "_FuchsiaCityChanseySignText", + "_FuchsiaCityErikText", + "_FuchsiaCityFossilSignKabutoText", + "_FuchsiaCityFossilSignOmanyteText", + "_FuchsiaCityFossilSignUndeterminedText", + "_FuchsiaCityGamblerText", + "_FuchsiaCityGymSignText", + "_FuchsiaCityKangaskhanSignText", + "_FuchsiaCityLaprasSignText", + "_FuchsiaCityPokecenterGuyText", + "_FuchsiaCityPokemonText", + "_FuchsiaCitySafariGameSignText", + "_FuchsiaCitySafariZoneSignText", + "_FuchsiaCitySignText", + "_FuchsiaCitySlowpokeSignText", + "_FuchsiaCityVoltorbSignText", + "_FuchsiaCityWardensHomeSignText", + "_FuchsiaCityYoungster1Text", + "_FuchsiaCityYoungster2Text", + "_FuchsiaGoodRodHouseFishingGuruHowAreTheFishText", + "_FuchsiaGoodRodHouseFishingGuruNoRoomText", + "_FuchsiaGoodRodHouseFishingGuruReceivedGoodRodText", + "_FuchsiaGoodRodHouseFishingGuruText", + "_FuchsiaGoodRodHouseFishingGuruThatsSoDisappointingText", + "_FuchsiaGymGymGuideBeatKogaText", + "_FuchsiaGymGymGuideChampInMakingText", + "_FuchsiaGymKogaBeforeBattleText", + "_FuchsiaGymKogaPostBattleAdviceText", + "_FuchsiaGymKogaReceivedSoulBadgeText", + "_FuchsiaGymKogaReceivedTM06Text", + "_FuchsiaGymKogaSoulBadgeInfoText", + "_FuchsiaGymKogaTM06ExplanationText", + "_FuchsiaGymKogaTM06NoRoomText", + "_FuchsiaGymRocker1AfterBattleText", + "_FuchsiaGymRocker1BattleText", + "_FuchsiaGymRocker1EndBattleText", + "_FuchsiaGymRocker2AfterBattleText", + "_FuchsiaGymRocker2BattleText", + "_FuchsiaGymRocker2EndBattleText", + "_FuchsiaGymRocker3AfterBattleText", + "_FuchsiaGymRocker3BattleText", + "_FuchsiaGymRocker3EndBattleText", + "_FuchsiaGymRocker4AfterBattleText", + "_FuchsiaGymRocker4BattleText", + "_FuchsiaGymRocker4EndBattleText", + "_FuchsiaGymRocker5AfterBattleText", + "_FuchsiaGymRocker5BattleText", + "_FuchsiaGymRocker5EndBattleText", + "_FuchsiaGymRocker6AfterBattleText", + "_FuchsiaGymRocker6BattleText", + "_FuchsiaGymRocker6EndBattleText", + "_FuchsiaMartCooltrainerFText", + "_FuchsiaMartMiddleAgedManText", + "_FuchsiaMeetingRoomSafariZoneWorker1", + "_FuchsiaMeetingRoomSafariZoneWorker2", + "_FuchsiaMeetingRoomSafariZoneWorker3", + "_FuchsiaPokecenterCooltrainerFText", + "_FuchsiaPokecenterRockerText", + "_FullHealText", + "_FullyParalyzedText", + "_GainedText", + "_GameCornerBeauty1Text", + "_GameCornerBeauty2Text", + "_GameCornerClerkCantAffordTheCoinsText", + "_GameCornerClerkCoinCaseIsFullText", + "_GameCornerClerkDoYouNeedSomeGameCoinsText", + "_GameCornerClerkDontHaveCoinCaseText", + "_GameCornerClerkPleaseComePlaySometimeText", + "_GameCornerClerkThanksHereAre50CoinsText", + "_GameCornerCoinCaseText", + "_GameCornerFishingGuru1DontNeedMyCoinsText", + "_GameCornerFishingGuru1Received10CoinsText", + "_GameCornerFishingGuru1WantToPlayText", + "_GameCornerFishingGuru1WinsComeAndGoText", + "_GameCornerFishingGuru2CloselyWatchTheReelsText", + "_GameCornerFishingGuru2Received20CoinsText", + "_GameCornerFishingGuru2ThrowingMeOffText", + "_GameCornerFishingGuru2YouGotYourOwnCoinsText", + "_GameCornerGamblerText", + "_GameCornerGymGuideChampInMakingText", + "_GameCornerGymGuideTheyOfferRarePokemonText", + "_GameCornerMiddleAgedMan1Text", + "_GameCornerMiddleAgedMan2INeedMoreCoinsText", + "_GameCornerMiddleAgedMan2Received20CoinsText", + "_GameCornerMiddleAgedMan2WantSomeCoinsText", + "_GameCornerMiddleAgedMan2YouHaveLotsOfCoinsText", + "_GameCornerMiddleAgedWomanText", + "_GameCornerNoCoinsText", + "_GameCornerOopsForgotCoinCaseText", + "_GameCornerOutOfOrderText", + "_GameCornerOutToLunchText", + "_GameCornerPosterSwitchBehindPosterText", + "_GameCornerPrizeRoomBaldingGuyText", + "_GameCornerPrizeRoomGamblerText", + "_GameCornerRocketAfterBattleText", + "_GameCornerRocketBattleEndText", + "_GameCornerRocketImGuardingThisPosterText", + "_GameCornerSomeonesKeysText", + "_GameOverText", + "_GameSavedText", + "_GastlyDexEntry", + "_GengarDexEntry", + "_GeodudeDexEntry", + "_GetDexRatedText", + "_GetOutText", + "_GetmText", + "_GettingPumpedText", + "_GhostCantBeIDdText", + "_GloomDexEntry", + "_GoText", + "_GolbatDexEntry", + "_GoldeenDexEntry", + "_GolduckDexEntry", + "_GolemDexEntry", + "_GoodText", + "_GotAwayText", + "_GotMapText", + "_GotMonText", + "_GotOffBicycleText1", + "_GotOffBicycleText2", + "_GotOnBicycleText1", + "_GotOnBicycleText2", + "_GravelerDexEntry", + "_GreatlyFellText", + "_GreatlyRoseText", + "_GrewLevelText", + "_GrimerDexEntry", + "_GroundRoseText", + "_GrowlitheDexEntry", + "_GyaradosDexEntry", + "_GymStatueText1", + "_GymStatueText2", + "_HMCantDeleteText", + "_HallOfFameOakText", + "_HasSubstituteText", + "_HaunterDexEntry", + "_HereYouGoText", + "_HiddenItemBagFullText", + "_HisNameIsText", + "_HitWithRecoilText", + "_HitXTimesText", + "_HitmonchanDexEntry", + "_HitmonleeDexEntry", + "_HookedMonAttackedText", + "_HorseaDexEntry", + "_HurtByBurnText", + "_HurtByLeechSeedText", + "_HurtByPoisonText", + "_HurtItselfText", + "_HypnoDexEntry", + "_IceHealText", + "_IgnoredOrdersText", + "_IndigoPlateauHQText", + "_IndigoPlateauLobbyCooltrainerFText", + "_IndigoPlateauLobbyGymGuideText", + "_IndigoPlateauStatuesText1", + "_IndigoPlateauStatuesText2", + "_IndigoPlateauStatuesText3", + "_IntoText", + "_IntroducePlayerText", + "_IntroduceRivalText", + "_IsConfusedText", + "_IsEvolvingText", + "_IsFrozenText", + "_IsItOKToTossItemText", + "_IsUnaffectedText", + "_ItemUseBallText00", + "_ItemUseBallText01", + "_ItemUseBallText02", + "_ItemUseBallText03", + "_ItemUseBallText04", + "_ItemUseBallText05", + "_ItemUseBallText06", + "_ItemUseBallText07", + "_ItemUseBallText08", + "_ItemUseNoEffectText", + "_ItemUseNotTimeText", + "_ItemUseNotYoursToUseText", + "_ItemUseText001", + "_ItemUseText002", + "_ItemWasStoredText", + "_ItemfinderFoundItemText", + "_ItemfinderFoundNothingText", + "_ItemsCantBeUsedHereText", + "_ItsABiteText", + "_IvysaurDexEntry", + "_JigglypuffDexEntry", + "_JolteonDexEntry", + "_JustAMomentText", + "_JynxDexEntry", + "_KabutoDexEntry", + "_KabutopsDexEntry", + "_KabutopsFossilText", + "_KadabraDexEntry", + "_KakunaDexEntry", + "_KangaskhanDexEntry", + "_KeptGoingAndCrashedText", + "_KinglerDexEntry", + "_KoffingDexEntry", + "_KrabbyDexEntry", + "_LancesRoomLanceAfterBattleText", + "_LancesRoomLanceBeforeBattleText", + "_LancesRoomLanceEndBattleText", + "_LaprasDexEntry", + "_LavenderCuboneHouseBrunetteGirlGhostIsGoneText", + "_LavenderCuboneHouseBrunetteGirlPoorCubonesMotherText", + "_LavenderCuboneHouseCuboneText", + "_LavenderMartBaldingGuyText", + "_LavenderMartCooltrainerMNuggetText", + "_LavenderMartCooltrainerMReviveText", + "_LavenderPokecenterGentlemanText", + "_LavenderPokecenterGuyText", + "_LavenderPokecenterLittleGirlText", + "_LavenderTownCooltrainerMText", + "_LavenderTownLittleGirlDoYouBelieveInGhostsText", + "_LavenderTownLittleGirlHaHaGuessNotText", + "_LavenderTownLittleGirlSoThereAreBelieversText", + "_LavenderTownPokemonHouseSignText", + "_LavenderTownPokemonTowerSignText", + "_LavenderTownSignText", + "_LavenderTownSilphScopeSignText", + "_LavenderTownSuperNerdText", + "_LearnedMove1Text", + "_LickitungDexEntry", + "_LightScreenProtectedText", + "_LinedUpText", + "_LinkBattleLostText", + "_LinkCableHelpText1", + "_LinkCableHelpText2", + "_LinkCableInfoText1", + "_LinkCableInfoText2", + "_LinkCableInfoText3", + "_LoafingAroundText", + "_LooksContentText", + "_LoreleisRoomLoreleiAfterBattleText", + "_LoreleisRoomLoreleiBeforeBattleText", + "_LoreleisRoomLoreleiDontRunAwayText", + "_LoreleisRoomLoreleiEndBattleText", + "_LoweredItsHeadText", + "_MachampDexEntry", + "_MachokeDexEntry", + "_MachopDexEntry", + "_MadeWhirlwindText", + "_MagazinesText", + "_MagikarpDexEntry", + "_MagmarDexEntry", + "_MagnemiteDexEntry", + "_MagnetonDexEntry", + "_MankeyDexEntry", + "_MarowakDexEntry", + "_MartSignText", + "_MeowthDexEntry", + "_MetapodDexEntry", + "_MewDexEntry", + "_MewtwoBattleText", + "_MewtwoDexEntry", + "_MimicLearnedMoveText", + "_MirrorMoveFailedText", + "_MoltresDexEntry", + "_MonCannotLearnMachineMoveText", + "_MonIsTakenOutText", + "_MonWasReleasedText", + "_MonWasStoredText", + "_MoneyForWinningText", + "_MonsStatsFellText", + "_MonsStatsRoseText", + "_MoveDisabledText", + "_MoveIsDisabledText", + "_MoveNameText", + "_MoveNoPPText", + "_MoveWasDisabledText", + "_MrFujisHouseLittleGirlPokemonAreNiceToHugText", + "_MrFujisHouseLittleGirlThisIsMrFujisHouseText", + "_MrFujisHouseMrFujiHasMyFluteHelpedYouText", + "_MrFujisHouseMrFujiIThinkThisMayHelpYourQuestText", + "_MrFujisHouseMrFujiPokeFluteExplanationText", + "_MrFujisHouseMrFujiPokeFluteNoRoomText", + "_MrFujisHouseMrFujiPokedexText", + "_MrFujisHouseMrFujiReceivedPokeFluteText", + "_MrFujisHouseNidorinoText", + "_MrFujisHousePsyduckText", + "_MrFujisHouseSuperNerdMrFujiHadBeenPrayingText", + "_MrFujisHouseSuperNerdMrFujiIsntHereText", + "_MrMimeDexEntry", + "_MrPsychicsHouseMrPsychicReceivedTM29Text", + "_MrPsychicsHouseMrPsychicTM29ExplanationText", + "_MrPsychicsHouseMrPsychicTM29NoRoomText", + "_MrPsychicsHouseMrPsychicYouWantedThisText", + "_MtMoon1FBewareZubatSign", + "_MtMoon1FCooltrainerF1AfterBattleText", + "_MtMoon1FCooltrainerF1BattleText", + "_MtMoon1FCooltrainerF1EndBattleText", + "_MtMoon1FCooltrainerF2AfterBattleText", + "_MtMoon1FCooltrainerF2BattleText", + "_MtMoon1FCooltrainerF2EndBattleText", + "_MtMoon1FHikerAfterBattleText", + "_MtMoon1FHikerBattleText", + "_MtMoon1FHikerEndBattleText", + "_MtMoon1FSuperNerdAfterBattleText", + "_MtMoon1FSuperNerdBattleText", + "_MtMoon1FSuperNerdEndBattleText", + "_MtMoon1FYoungster1AfterBattleText", + "_MtMoon1FYoungster1BattleText", + "_MtMoon1FYoungster1EndBattleText", + "_MtMoon1FYoungster2AfterBattleText", + "_MtMoon1FYoungster2BattleText", + "_MtMoon1FYoungster2EndBattleText", + "_MtMoon1FYoungster3AfterBattleText", + "_MtMoon1FYoungster3BattleText", + "_MtMoon1FYoungster3EndBattleText", + "_MtMoonB1FUnusedText", + "_MtMoonB2FDomeFossilYouWantText", + "_MtMoonB2FHelixFossilYouWantText", + "_MtMoonB2FReceivedFossilText", + "_MtMoonB2FRocket2AfterBattleText", + "_MtMoonB2FRocket2BattleText", + "_MtMoonB2FRocket2EndBattleText", + "_MtMoonB2FRocket3AfterBattleText", + "_MtMoonB2FRocket3BattleText", + "_MtMoonB2FRocket3EndBattleText", + "_MtMoonB2FRocket4AfterBattleText", + "_MtMoonB2FRocket4BattleText", + "_MtMoonB2FRocket4EndBattleText", + "_MtMoonB2FSuperNerdOkIllShareText", + "_MtMoonB2FSuperNerdThenThisIsMineText", + "_MtMoonB2FSuperNerdTheresAPokemonLabText", + "_MtMoonB2FSuperNerdTheyreBothMineText", + "_MtMoonB2FYouHaveNoRoomText", + "_MtMoonB2fSuperNerdEachTakeOneText", + "_MtMoonJessieJamesText1", + "_MtMoonJessieJamesText2", + "_MtMoonJessieJamesText3", + "_MtMoonJessieJamesText4", + "_MtMoonPokecenterBenchGuyText", + "_MtMoonPokecenterClipboardText", + "_MtMoonPokecenterGentlemanText", + "_MtMoonPokecenterMagikarpSalesmanIGotADealText", + "_MtMoonPokecenterMagikarpSalesmanNoMoneyText", + "_MtMoonPokecenterMagikarpSalesmanNoRefundsText", + "_MtMoonPokecenterMagikarpSalesmanNoText", + "_MtMoonPokecenterYoungsterText", + "_MukDexEntry", + "_MultiHitText", + "_Museum1FGamblerText", + "_Museum1FOldAmberText", + "_Museum1FScientist1AmberIsFossilizedTreeSapText", + "_Museum1FScientist1ComeAgainText", + "_Museum1FScientist1DoYouKnowWhatAmberIsText", + "_Museum1FScientist1DontHaveEnoughMoneyText", + "_Museum1FScientist1GoToOtherSideText", + "_Museum1FScientist1TakePlentyOfTimeText", + "_Museum1FScientist1ThankYouText", + "_Museum1FScientist1TheresALabSomewhereText", + "_Museum1FScientist1WouldYouLikeToComeInText", + "_Museum1FScientist2GetTheOldAmberCheckText", + "_Museum1FScientist2ReceivedOldAmberText", + "_Museum1FScientist2TakeThisToAPokemonLabText", + "_Museum1FScientist2YouDontHaveSpaceText", + "_Museum1FScientist3Text", + "_Museum2FBrunetteGirlText", + "_Museum2FGrampsText", + "_Museum2FHikerText", + "_Museum2FMoonStoneSignText", + "_Museum2FPikachuText1", + "_Museum2FPikachuText2", + "_Museum2FScientistText", + "_Museum2FSpaceShuttleSignText", + "_Museum2FYoungsterText", + "_MustRechargeText", + "_NameRatersHouseNameRaterATrulyImpeccableNameText", + "_NameRatersHouseNameRaterComeAnyTimeYouLikeText", + "_NameRatersHouseNameRaterGiveItANiceNameText", + "_NameRatersHouseNameRaterPokemonHasBeenRenamedText", + "_NameRatersHouseNameRaterWantMeToRateText", + "_NameRatersHouseNameRaterWhatShouldWeNameItText", + "_NameRatersHouseNameRaterWhichPokemonText", + "_NeedYourPokemonText", + "_NewBadgeRequiredText", + "_NewBicycleText", + "_NidokingDexEntry", + "_NidoqueenDexEntry", + "_NidoranFDexEntry", + "_NidoranMDexEntry", + "_NidorinaDexEntry", + "_NidorinoDexEntry", + "_NinetalesDexEntry", + "_NoCyclingAllowedHereText", + "_NoEffectText", + "_NoMonText", + "_NoMoreRoomForItemText", + "_NoMovesLeftText", + "_NoNibbleText", + "_NoPokemonText", + "_NoRoomToStoreText", + "_NoRunningText", + "_NoSurfingHereText", + "_NoTrade1Text", + "_NoTrade2Text", + "_NoTrade3Text", + "_NoWillText", + "_NotEnoughCoinsSlotMachineText", + "_NotEnoughMemoryText", + "_NotHealthyEnoughText", + "_NotThisTimeText", + "_NotVeryEffectiveText", + "_NothingHappenedText", + "_NothingHereText", + "_NothingStoredText", + "_NothingToCutText", + "_NothingToDepositText", + "_NurseChanseyText", + "_OHKOText", + "_OKExclamationText", + "_OakLabEmailText", + "_OakSpeechText1", + "_OakSpeechText2A", + "_OakSpeechText2B", + "_OakSpeechText3", + "_OaksAideComeBackText", + "_OaksAideGotItemText", + "_OaksAideHereYouGoText", + "_OaksAideHiText", + "_OaksAideNoRoomText", + "_OaksAideUhOhText", + "_OaksLabGirlText", + "_OaksLabGivePokeballsExplanationText", + "_OaksLabOak1ComeSeeMeSometimesText", + "_OaksLabOak1DeliverParcelText", + "_OaksLabOak1GoAheadItsYours", + "_OaksLabOak1HowIsYourPokedexComingText", + "_OaksLabOak1ParcelThanksText", + "_OaksLabOak1PokemonAroundTheWorldText", + "_OaksLabOak1ReceivedPokeballsText", + "_OaksLabOak1YouShouldTalkToIt", + "_OaksLabOak1YourPokemonCanFightText", + "_OaksLabOak2Text", + "_OaksLabOakBePatientText", + "_OaksLabOakChooseMonText", + "_OaksLabOakDontGoAwayYetText", + "_OaksLabOakGivesText", + "_OaksLabOakGotPokedexText", + "_OaksLabOakIHaveARequestText", + "_OaksLabOakMyInventionPokedexText", + "_OaksLabOakThatWasMyDreamText", + "_OaksLabPikachuDislikesPokeballsText1", + "_OaksLabPikachuDislikesPokeballsText2", + "_OaksLabPokedexText", + "_OaksLabReceivedText", + "_OaksLabRivalAmIGreatOrWhatText", + "_OaksLabRivalFedUpWithWaitingText", + "_OaksLabRivalGrampsIsntAroundText", + "_OaksLabRivalGrampsText", + "_OaksLabRivalIPickedTheWrongPokemonText", + "_OaksLabRivalIllGetABetterPokemonThanYou", + "_OaksLabRivalIllTakeYouOnText", + "_OaksLabRivalLeaveItAllToMeText", + "_OaksLabRivalMyPokemonHasGrownStrongerText", + "_OaksLabRivalMyPokemonLooksStrongerText", + "_OaksLabRivalSmellYouLaterText", + "_OaksLabRivalTakesText1", + "_OaksLabRivalTakesText2", + "_OaksLabRivalTakesText3", + "_OaksLabRivalTakesText4", + "_OaksLabRivalTakesText5", + "_OaksLabRivalWhatAboutMeText", + "_OaksLabScientistText", + "_OaksLabThatsAPokeball", + "_OddishDexEntry", + "_OfficerJennyText1", + "_OfficerJennyText2", + "_OfficerJennyText3", + "_OfficerJennyText4", + "_OfficerJennyText5", + "_OhFineThenText", + "_OlderFileWillBeErasedText", + "_OmanyteDexEntry", + "_OmastarDexEntry", + "_OnceReleasedText", + "_OneMoreGoSlotMachineText", + "_OneTwoAndText", + "_OnixDexEntry", + "_OopsYouDontHaveEnoughRoomText", + "_OutOfCoinsSlotMachineText", + "_OutOfSafariBallsText", + "_PPIncreasedText", + "_PPMaxedOutText", + "_PPRestoredText", + "_PalletTownFisherText", + "_PalletTownGirlText", + "_PalletTownOakComeWithMe", + "_PalletTownOakHeyWaitDontGoOutText", + "_PalletTownOakThatWasCloseText", + "_PalletTownOakWhewText", + "_PalletTownOaksLabSignText", + "_PalletTownPlayersHouseSignText", + "_PalletTownRivalsHouseSignText", + "_PalletTownSignText", + "_ParalyzedMayNotAttackText", + "_ParasDexEntry", + "_ParasectDexEntry", + "_ParlyzHealText", + "_PartyMenuBattleText", + "_PartyMenuItemUseText", + "_PartyMenuNormalText", + "_PartyMenuSwapMonText", + "_PartyMenuUseTMText", + "_PersianDexEntry", + "_PewterCityCooltrainerFText", + "_PewterCityCooltrainerMText", + "_PewterCityGymSignText", + "_PewterCityMuseumSignText", + "_PewterCityPokecenterGuyText", + "_PewterCityPoliceNoticeSignText", + "_PewterCitySignText", + "_PewterCitySuperNerd1DidYouCheckOutMuseumText", + "_PewterCitySuperNerd1ItsRightHereText", + "_PewterCitySuperNerd1WerentThoseFossilsAmazingText", + "_PewterCitySuperNerd1YouHaveToGoText", + "_PewterCitySuperNerd2DoYouKnowWhatImDoingText", + "_PewterCitySuperNerd2ImSprayingRepelText", + "_PewterCitySuperNerd2ThatsRightText", + "_PewterCityTrainerTipsText", + "_PewterCityYoungsterGoTakeOnBrockText", + "_PewterCityYoungsterYoureATrainerFollowMeText", + "_PewterGymBrockBoulderBadgeInfoText", + "_PewterGymBrockPostBattleAdviceText", + "_PewterGymBrockPreBattleText", + "_PewterGymBrockReceivedBoulderBadgeText", + "_PewterGymBrockWaitTakeThisText", + "_PewterGymCooltrainerMAfterBattleText", + "_PewterGymCooltrainerMBattleText", + "_PewterGymCooltrainerMEndBattleText", + "_PewterGymGuideAdviceText", + "_PewterGymGuideBeginAdviceText", + "_PewterGymGuideFreeServiceText", + "_PewterGymGuidePostBattleText", + "_PewterGymGuidePreAdviceText", + "_PewterGymGuyText", + "_PewterGymReceivedTM34Text", + "_PewterGymTM34NoRoomText", + "_PewterMartSuperNerdText", + "_PewterMartYoungsterText", + "_PewterNidoranHouseLittleBoyText", + "_PewterNidoranHouseMiddleAgedManText", + "_PewterNidoranHouseNidoranText", + "_PewterPokecenterGentlemanText", + "_PewterPokecenterJigglypuffText", + "_PewterPokecenterText3", + "_PewterSpeechHouseGamblerText", + "_PewterSpeechHouseYoungsterText", + "_PickUpPayDayMoneyText", + "_PidgeotDexEntry", + "_PidgeottoDexEntry", + "_PidgeyDexEntry", + "_PikachuDexEntry", + "_PikachuUnhappyText", + "_PinsirDexEntry", + "_PlaySlotMachineText", + "_PlayedFluteHadEffectText", + "_PlayedFluteNoEffectText", + "_PlayerBlackedOutText", + "_PlayerBlackedOutText2", + "_PlayerMon1Text", + "_PlayerMon2Text", + "_PlayerMonFaintedText", + "_PoisonedText", + "_PokeCenterSignText", + "_PokemartAnythingElseText", + "_PokemartBoughtItemText", + "_PokemartBuyingGreetingText", + "_PokemartGreetingText", + "_PokemartItemBagEmptyText", + "_PokemartItemBagFullText", + "_PokemartNotEnoughMoneyText", + "_PokemartTellBuyPriceText", + "_PokemartTellSellPriceText", + "_PokemartThankYouText", + "_PokemartUnsellableItemText", + "_PokemonBooksText", + "_PokemonCenterFarewellText", + "_PokemonCenterWelcomeText", + "_PokemonFaintedText", + "_PokemonFanClubBagFullText", + "_PokemonFanClubChairFinalText", + "_PokemonFanClubChairmanIntroText", + "_PokemonFanClubChairmanStoryText", + "_PokemonFanClubClefairyFanBetterText", + "_PokemonFanClubClefairyFanNormalText", + "_PokemonFanClubClefairyFanText", + "_PokemonFanClubClefairyText", + "_PokemonFanClubExplainBikeVoucherText", + "_PokemonFanClubNoStoryText", + "_PokemonFanClubReceivedBikeVoucherText", + "_PokemonFanClubReceptionistText", + "_PokemonFanClubSeelFanBetterText", + "_PokemonFanClubSeelFanNormalText", + "_PokemonFanClubSeelFanText", + "_PokemonFanClubSeelText", + "_PokemonFightingFitText", + "_PokemonMansion1FScientistAfterBattleText", + "_PokemonMansion1FScientistBattleText", + "_PokemonMansion1FScientistEndBattleText", + "_PokemonMansion1FSwitchNotPressedText", + "_PokemonMansion1FSwitchPressedText", + "_PokemonMansion1FSwitchText", + "_PokemonMansion2FDiary1Text", + "_PokemonMansion2FDiary2Text", + "_PokemonMansion2FSuperNerdAfterBattleText", + "_PokemonMansion2FSuperNerdBattleText", + "_PokemonMansion2FSuperNerdEndBattleText", + "_PokemonMansion2FSwitchNotPressedText", + "_PokemonMansion2FSwitchPressedText", + "_PokemonMansion2FSwitchText", + "_PokemonMansion3FDiaryText", + "_PokemonMansion3FScientistAfterBattleText", + "_PokemonMansion3FScientistBattleText", + "_PokemonMansion3FScientistEndBattleText", + "_PokemonMansion3FSuperNerdAfterBattleText", + "_PokemonMansion3FSuperNerdBattleText", + "_PokemonMansion3FSuperNerdEndBattleText", + "_PokemonMansionB1FBurglarAfterBattleText", + "_PokemonMansionB1FBurglarBattleText", + "_PokemonMansionB1FBurglarEndBattleText", + "_PokemonMansionB1FDiaryText", + "_PokemonMansionB1FScientistAfterBattleText", + "_PokemonMansionB1FScientistBattleText", + "_PokemonMansionB1FScientistEndBattleText", + "_PokemonSellingGreetingText", + "_PokemonStuffText", + "_PokemonText", + "_PokemonTower1FBaldingGuyText", + "_PokemonTower1FChannelerText", + "_PokemonTower1FGirlText", + "_PokemonTower1FMiddleAgedWomanText", + "_PokemonTower1FReceptionistText", + "_PokemonTower2FChannelerText", + "_PokemonTower2FRivalDefeatedText", + "_PokemonTower2FRivalHowsYourDexText", + "_PokemonTower2FRivalVictoryText", + "_PokemonTower2FRivalWhatBringsYouHereText", + "_PokemonTower3FChanneler1AfterBattleText", + "_PokemonTower3FChanneler1BattleText", + "_PokemonTower3FChanneler1EndBattleText", + "_PokemonTower3FChanneler2AfterBattleText", + "_PokemonTower3FChanneler2BattleText", + "_PokemonTower3FChanneler2EndBattleText", + "_PokemonTower3FChanneler3AfterBattleText", + "_PokemonTower3FChanneler3BattleText", + "_PokemonTower3FChanneler3EndBattleText", + "_PokemonTower4FChanneler1AfterBattleText", + "_PokemonTower4FChanneler1BattleText", + "_PokemonTower4FChanneler1EndBattleText", + "_PokemonTower4FChanneler2AfterBattleText", + "_PokemonTower4FChanneler2BattleText", + "_PokemonTower4FChanneler2EndBattleText", + "_PokemonTower4FChanneler3AfterBattleText", + "_PokemonTower4FChanneler3BattleText", + "_PokemonTower4FChanneler3EndBattleText", + "_PokemonTower5FChanneler1Text", + "_PokemonTower5FChanneler2AfterBattleText", + "_PokemonTower5FChanneler2BattleText", + "_PokemonTower5FChanneler2EndBattleText", + "_PokemonTower5FChanneler3AfterBattleText", + "_PokemonTower5FChanneler3BattleText", + "_PokemonTower5FChanneler3EndBattleText", + "_PokemonTower5FChanneler4AfterBattleText", + "_PokemonTower5FChanneler4BattleText", + "_PokemonTower5FChanneler4EndBattleText", + "_PokemonTower5FChanneler5AfterBattleText", + "_PokemonTower5FChanneler5BattleText", + "_PokemonTower5FChanneler5EndBattleText", + "_PokemonTower5FPurifiedZoneText", + "_PokemonTower6FBeGoneText", + "_PokemonTower6FChanneler1AfterBattleText", + "_PokemonTower6FChanneler1BattleText", + "_PokemonTower6FChanneler1EndBattleText", + "_PokemonTower6FChanneler2AfterBattleText", + "_PokemonTower6FChanneler2BattleText", + "_PokemonTower6FChanneler2EndBattleText", + "_PokemonTower6FChanneler3AfterBattleText", + "_PokemonTower6FChanneler3BattleText", + "_PokemonTower6FChanneler3EndBattleText", + "_PokemonTower6FGhostWasCubonesMotherText", + "_PokemonTower6FSoulWasCalmedText", + "_PokemonTower7FMrFujiRescueText", + "_PokemonTowerJessieJamesText1", + "_PokemonTowerJessieJamesText2", + "_PokemonTowerJessieJamesText3", + "_PokemonTowerJessieJamesText4", + "_PoliwagDexEntry", + "_PoliwhirlDexEntry", + "_PoliwrathDexEntry", + "_PonytaDexEntry", + "_PoofText", + "_PorygonDexEntry", + "_PotionText", + "_PowerPlantVoltorbBattleText", + "_PowerPlantZapdosBattleText", + "_PrimeapeDexEntry", + "_PsyduckDexEntry", + "_PushStartText", + "_RaichuDexEntry", + "_RaisePPWhichTechniqueText", + "_RanAwayScaredText", + "_RanFromBattleText", + "_RapidashDexEntry", + "_RareCandyText", + "_RaticateDexEntry", + "_RattataDexEntry", + "_RedBedroomSNESText", + "_RedsHouse1FMomLookingGreatText", + "_RedsHouse1FMomWakeUpText", + "_RedsHouse1FMomYouShouldRestText", + "_RedsHouse1FTVStandByMeMovieText", + "_RedsHouse1FTVWrongSideText", + "_ReflectGainedArmorText", + "_RefusingText", + "_RegainedHealthText", + "_ReleaseWhichMonText", + "_RepelWoreOffText", + "_RequireCoinCaseText", + "_RestorePPWhichTechniqueText", + "_ReviveText", + "_RhydonDexEntry", + "_RhyhornDexEntry", + "_Rival1WinText", + "_RivalDefeatedText", + "_RivalVictoryText", + "_RockTunnel1FCooltrainerF1AfterBattleText", + "_RockTunnel1FCooltrainerF1BattleText", + "_RockTunnel1FCooltrainerF1EndBattleText", + "_RockTunnel1FCooltrainerF2AfterBattleText", + "_RockTunnel1FCooltrainerF2BattleText", + "_RockTunnel1FCooltrainerF2EndBattleText", + "_RockTunnel1FCooltrainerF3AfterBattleText", + "_RockTunnel1FCooltrainerF3BattleText", + "_RockTunnel1FCooltrainerF3EndBattleText", + "_RockTunnel1FHiker1AfterBattleText", + "_RockTunnel1FHiker1BattleText", + "_RockTunnel1FHiker1EndBattleText", + "_RockTunnel1FHiker2AfterBattleText", + "_RockTunnel1FHiker2BattleText", + "_RockTunnel1FHiker2EndBattleText", + "_RockTunnel1FHiker3AfterBattleText", + "_RockTunnel1FHiker3BattleText", + "_RockTunnel1FHiker3EndBattleText", + "_RockTunnel1FSignText", + "_RockTunnel1FSuperNerdAfterBattleText", + "_RockTunnel1FSuperNerdBattleText", + "_RockTunnel1FSuperNerdEndBattleText", + "_RockTunnelB1FCooltrainerF1AfterBattleText", + "_RockTunnelB1FCooltrainerF1BattleText", + "_RockTunnelB1FCooltrainerF1EndBattleText", + "_RockTunnelB1FCooltrainerF2AfterBattleText", + "_RockTunnelB1FCooltrainerF2BattleText", + "_RockTunnelB1FCooltrainerF2EndBattleText", + "_RockTunnelB1FHiker1AfterBattleText", + "_RockTunnelB1FHiker1BattleText", + "_RockTunnelB1FHiker1EndBattleText", + "_RockTunnelB1FHiker2AfterBattleText", + "_RockTunnelB1FHiker2BattleText", + "_RockTunnelB1FHiker2EndBattleText", + "_RockTunnelB1FHiker3AfterBattleText", + "_RockTunnelB1FHiker3BattleText", + "_RockTunnelB1FHiker3EndBattleText", + "_RockTunnelB1FSuperNerd1AfterBattleText", + "_RockTunnelB1FSuperNerd1BattleText", + "_RockTunnelB1FSuperNerd1EndBattleText", + "_RockTunnelB1FSuperNerd2AfterBattleText", + "_RockTunnelB1FSuperNerd2BattleText", + "_RockTunnelB1FSuperNerd2EndBattleText", + "_RockTunnelB1FSuperNerd3AfterBattleText", + "_RockTunnelB1FSuperNerd3BattleText", + "_RockTunnelB1FSuperNerd3EndBattleText", + "_RockTunnelPokecenterFisherText", + "_RockTunnelPokecenterGentlemanText", + "_RockTunnelPokecenterGuyText", + "_RocketHide3AfterBattleText3", + "_RocketHideout3BattleText", + "_RocketHideout3EndBattleText3", + "_RocketHideoutB1FRocket1AfterBattleText", + "_RocketHideoutB1FRocket1BattleText", + "_RocketHideoutB1FRocket1EndBattleText", + "_RocketHideoutB1FRocket2AfterBattleText", + "_RocketHideoutB1FRocket2BattleText", + "_RocketHideoutB1FRocket2EndBattleText", + "_RocketHideoutB1FRocket3AfterBattleText", + "_RocketHideoutB1FRocket3BattleText", + "_RocketHideoutB1FRocket3EndBattleText", + "_RocketHideoutB1FRocket4AfterBattleText", + "_RocketHideoutB1FRocket4BattleText", + "_RocketHideoutB1FRocket4EndBattleText", + "_RocketHideoutB1FRocket5AfterBattleText", + "_RocketHideoutB1FRocket5BattleText", + "_RocketHideoutB1FRocket5EndBattleText", + "_RocketHideoutB2FRocketAfterBattleText", + "_RocketHideoutB2FRocketBattleText", + "_RocketHideoutB2FRocketEndBattleText", + "_RocketHideoutB3FRocket1AfterBattleText", + "_RocketHideoutB3FRocket1BattleText", + "_RocketHideoutB3FRocket1EndBattleText", + "_RocketHideoutB4FGiovanniHopeWeMeetAgainText", + "_RocketHideoutB4FGiovanniImpressedYouGotHereText", + "_RocketHideoutB4FGiovanniWhatCannotBeText", + "_RocketHideoutB4FRocketAfterBattleText", + "_RocketHideoutB4FRocketBattleText", + "_RocketHideoutB4FRocketEndBattleText", + "_RocketHideoutElevatorAppearsToNeedKeyText", + "_RocketHideoutJessieJamesText1", + "_RocketHideoutJessieJamesText2", + "_RocketHideoutJessieJamesText3", + "_RocketHideoutJessieJamesText4", + "_RoseText", + "_Route10CooltrainerF1AfterBattleText", + "_Route10CooltrainerF1BattleText", + "_Route10CooltrainerF1EndBattleText", + "_Route10CooltrainerF2AfterBattleText", + "_Route10CooltrainerF2BattleText", + "_Route10CooltrainerF2EndBattleText", + "_Route10Hiker1AfterBattleText", + "_Route10Hiker1BattleText", + "_Route10Hiker1EndBattleText", + "_Route10Hiker2AfterBattleText", + "_Route10Hiker2BattleText", + "_Route10Hiker2EndBattleText", + "_Route10PowerPlantSignText", + "_Route10RockTunnelSignText", + "_Route10SuperNerd1AfterBattleText", + "_Route10SuperNerd1BattleText", + "_Route10SuperNerd1EndBattleText", + "_Route10SuperNerd2AfterBattleText", + "_Route10SuperNerd2BattleText", + "_Route10SuperNerd2EndBattleText", + "_Route11DiglettsCaveSignText", + "_Route11Gambler1AfterBattleText", + "_Route11Gambler1BattleText", + "_Route11Gambler1EndBattleText", + "_Route11Gambler2AfterBattleText", + "_Route11Gambler2BattleText", + "_Route11Gambler2EndBattleText", + "_Route11Gambler3AfterBattleText", + "_Route11Gambler3BattleText", + "_Route11Gambler3EndBattleText", + "_Route11Gambler4AfterBattleText", + "_Route11Gambler4BattleText", + "_Route11Gambler4EndBattleText", + "_Route11Gate1FGuardText", + "_Route11Gate2FLeftBinocularsNoSnorlaxText", + "_Route11Gate2FLeftBinocularsSnorlaxText", + "_Route11Gate2FOaksAideItemfinderDescriptionText", + "_Route11Gate2FRightBinocularsText", + "_Route11SuperNerd1AfterBattleText", + "_Route11SuperNerd1BattleText", + "_Route11SuperNerd1EndBattleText", + "_Route11SuperNerd2AfterBattleText", + "_Route11SuperNerd2BattleText", + "_Route11SuperNerd2EndBattleText", + "_Route11Youngster1AfterBattleText", + "_Route11Youngster1BattleText", + "_Route11Youngster1EndBattleText", + "_Route11Youngster2AfterBattleText5", + "_Route11Youngster2BattleText", + "_Route11Youngster2EndBattleText", + "_Route11Youngster3AfterBattleText", + "_Route11Youngster3BattleText", + "_Route11Youngster3EndBattleText", + "_Route11Youngster4AfterBattleText", + "_Route11Youngster4BattleText", + "_Route11Youngster4EndBattleText", + "_Route12CooltrainerMAfterBattleText", + "_Route12CooltrainerMBattleText", + "_Route12CooltrainerMEndBattleText", + "_Route12Fisher1AfterBattleText", + "_Route12Fisher1BattleText", + "_Route12Fisher1EndBattleText", + "_Route12Fisher2AfterBattleText", + "_Route12Fisher2BattleText", + "_Route12Fisher2EndBattleText", + "_Route12Fisher3AfterBattleText", + "_Route12Fisher3BattleText", + "_Route12Fisher3EndBattleText", + "_Route12Fisher4AfterBattleText", + "_Route12Fisher4BattleText", + "_Route12Fisher4EndBattleText", + "_Route12Fisher5AfterBattleText", + "_Route12Fisher5BattleText", + "_Route12Fisher5EndBattleText", + "_Route12Gate1FGuardText", + "_Route12Gate2FBrunetteGirlReceivedTM39Text", + "_Route12Gate2FBrunetteGirlTM39ExplanationText", + "_Route12Gate2FBrunetteGirlTM39NoRoomText", + "_Route12Gate2FBrunetteGirlYouCanHaveThisText", + "_Route12Gate2FLeftBinocularsText", + "_Route12Gate2FRightBinocularsText", + "_Route12SignText", + "_Route12SnorlaxCalmedDownText", + "_Route12SnorlaxText", + "_Route12SnorlaxWokeUpText", + "_Route12SportFishingSignText", + "_Route12SuperNerdAfterBattleText", + "_Route12SuperNerdBattleText", + "_Route12SuperNerdEndBattleText", + "_Route12SuperRodHouseFishingGuruDoYouLikeToFishText", + "_Route12SuperRodHouseFishingGuruFishingWayOfLifeText", + "_Route12SuperRodHouseFishingGuruNoRoomText", + "_Route12SuperRodHouseFishingGuruReceivedSuperRodText", + "_Route12SuperRodHouseFishingGuruThatsDisappointingText", + "_Route12SuperRodHouseFishingGuruTryFishingText", + "_Route13Beauty1AfterBattleText", + "_Route13Beauty1BattleText", + "_Route13Beauty1EndBattleText", + "_Route13Beauty2AfterBattleText", + "_Route13Beauty2BattleText", + "_Route13Beauty2EndBattleText", + "_Route13BikerAfterBattleText", + "_Route13BikerBattleText", + "_Route13BikerEndBattleText", + "_Route13CooltrainerF1AfterBattleText", + "_Route13CooltrainerF1BattleText", + "_Route13CooltrainerF1EndBattleText", + "_Route13CooltrainerF2AfterBattleText", + "_Route13CooltrainerF2BattleText", + "_Route13CooltrainerF2EndBattleText", + "_Route13CooltrainerF3AfterBattleText", + "_Route13CooltrainerF3BattleText", + "_Route13CooltrainerF3EndBattleText", + "_Route13CooltrainerF4AfterBattleText", + "_Route13CooltrainerF4BattleText", + "_Route13CooltrainerF4EndBattleText", + "_Route13CooltrainerM1AfterBattleText", + "_Route13CooltrainerM1BattleText", + "_Route13CooltrainerM1EndBattleText", + "_Route13CooltrainerM2AfterBattleText", + "_Route13CooltrainerM2BattleText", + "_Route13CooltrainerM2EndBattleText", + "_Route13CooltrainerM3AfterBattleText", + "_Route13CooltrainerM3BattleText", + "_Route13CooltrainerM3EndBattleText", + "_Route13SignText", + "_Route13TrainerTips1Text", + "_Route13TrainerTips2Text", + "_Route14Biker1AfterBattleText", + "_Route14Biker1BattleText", + "_Route14Biker1EndBattleText", + "_Route14Biker2AfterBattleText", + "_Route14Biker2BattleText", + "_Route14Biker2EndBattleText", + "_Route14Biker3AfterBattleText", + "_Route14Biker3BattleText", + "_Route14Biker3EndBattleText", + "_Route14Biker4AfterBattleText", + "_Route14Biker4BattleText", + "_Route14Biker4EndBattleText", + "_Route14CooltrainerM1AfterBattleText", + "_Route14CooltrainerM1BattleText", + "_Route14CooltrainerM1EndBattleText", + "_Route14CooltrainerM2AfterBattleText", + "_Route14CooltrainerM2BattleText", + "_Route14CooltrainerM2EndBattleText", + "_Route14CooltrainerM3AfterBattleText", + "_Route14CooltrainerM3BattleText", + "_Route14CooltrainerM3EndBattleText", + "_Route14CooltrainerM4AfterBattleText", + "_Route14CooltrainerM4BattleText", + "_Route14CooltrainerM4EndBattleText", + "_Route14CooltrainerM5AfterBattleText", + "_Route14CooltrainerM5BattleText", + "_Route14CooltrainerM5EndBattleText", + "_Route14CooltrainerM6AfterBattleText", + "_Route14CooltrainerM6BattleText", + "_Route14CooltrainerM6EndBattleText", + "_Route14SignText", + "_Route15Beauty1AfterBattleText", + "_Route15Beauty1BattleText", + "_Route15Beauty1EndBattleText", + "_Route15Beauty2AfterBattleText", + "_Route15Beauty2BattleText", + "_Route15Beauty2EndBattleText", + "_Route15Biker1AfterBattleText", + "_Route15Biker1BattleText", + "_Route15Biker1EndBattleText", + "_Route15Biker2AfterBattleText", + "_Route15Biker2BattleText", + "_Route15Biker2EndBattleText", + "_Route15CooltrainerF1AfterBattleText", + "_Route15CooltrainerF1BattleText", + "_Route15CooltrainerF1EndBattleText", + "_Route15CooltrainerF2AfterBattleText", + "_Route15CooltrainerF2BattleText", + "_Route15CooltrainerF2EndBattleText", + "_Route15CooltrainerF3AfterBattleText", + "_Route15CooltrainerF3BattleText", + "_Route15CooltrainerF3EndBattleText", + "_Route15CooltrainerF4AfterBattleText", + "_Route15CooltrainerF4BattleText", + "_Route15CooltrainerF4EndBattleText", + "_Route15CooltrainerM1AfterBattleText", + "_Route15CooltrainerM1BattleText", + "_Route15CooltrainerM1EndBattleText", + "_Route15CooltrainerM2AfterBattleText", + "_Route15CooltrainerM2BattleText", + "_Route15CooltrainerM2EndBattleText", + "_Route15Gate1FGuardText", + "_Route15Gate2FBinocularsText", + "_Route15Gate2FOaksAideExpAllText", + "_Route15SignText", + "_Route15UpstairsBinocularsText", + "_Route16Biker1AfterBattleText", + "_Route16Biker1BattleText", + "_Route16Biker1EndBattleText", + "_Route16Biker2AfterBattleText", + "_Route16Biker2BattleText", + "_Route16Biker2EndBattleText", + "_Route16Biker3AfterBattleText", + "_Route16Biker3BattleText", + "_Route16Biker3EndBattleText", + "_Route16Biker4AfterBattleText", + "_Route16Biker4EndBattleText", + "_Route16Biker5AfterBattleText", + "_Route16Biker5BattleText", + "_Route16Biker5EndBattleText", + "_Route16Biker6AfterBattleText", + "_Route16Biker6BattleText", + "_Route16Biker6EndBattleText", + "_Route16CyclingRoadSignText", + "_Route16FlyHouseBrunetteGirlHM02ExplanationText", + "_Route16FlyHouseBrunetteGirlHM02NoRoomText", + "_Route16FlyHouseBrunetteGirlReceivedHM02Text", + "_Route16FlyHouseBrunetteGirlText", + "_Route16FlyHouseFearowText", + "_Route16Gate1FGamblerText", + "_Route16Gate1FGuardCyclingRoadExplanationText", + "_Route16Gate1FGuardNoPedestriansAllowedText", + "_Route16Gate1FGuardWaitUpText", + "_Route16Gate2FLeftBinocularsText", + "_Route16Gate2FLittleBoyText", + "_Route16Gate2FLittleGirlText", + "_Route16Gate2FRightBinocularsText", + "_Route16SignText", + "_Route16SnorlaxReturnedToMountainsText", + "_Route16SnorlaxWokeUpText", + "_Route16Text7", + "_Route16biker4BattleText", + "_Route17Biker10AfterBattleText", + "_Route17Biker10BattleText", + "_Route17Biker10EndBattleText", + "_Route17Biker1AfterBattleText", + "_Route17Biker1BattleText", + "_Route17Biker1EndBattleText", + "_Route17Biker2AfterBattleText", + "_Route17Biker2BattleText", + "_Route17Biker2EndBattleText", + "_Route17Biker3AfterBattleText", + "_Route17Biker3BattleText", + "_Route17Biker3EndBattleText", + "_Route17Biker4AfterBattleText", + "_Route17Biker4BattleText", + "_Route17Biker4EndBattleText", + "_Route17Biker5AfterBattleText", + "_Route17Biker5BattleText", + "_Route17Biker5EndBattleText", + "_Route17Biker6AfterBattleText", + "_Route17Biker6BattleText", + "_Route17Biker6EndBattleText", + "_Route17Biker7AfterBattleText", + "_Route17Biker7BattleText", + "_Route17Biker7EndBattleText", + "_Route17Biker8AfterBattleText", + "_Route17Biker8BattleText", + "_Route17Biker8EndBattleText", + "_Route17Biker9AfterBattleText", + "_Route17Biker9BattleText", + "_Route17Biker9EndBattleText", + "_Route17CyclingRoadEndsSignText", + "_Route17NoticeSign1Text", + "_Route17NoticeSign2Text", + "_Route17SignText", + "_Route17TrainerTips1Text", + "_Route17TrainerTips2Text", + "_Route18CooltrainerM1AfterBattleText", + "_Route18CooltrainerM1BattleText", + "_Route18CooltrainerM1EndBattleText", + "_Route18CooltrainerM2AfterBattleText", + "_Route18CooltrainerM2BattleText", + "_Route18CooltrainerM2EndBattleText", + "_Route18CooltrainerM3AfterBattleText", + "_Route18CooltrainerM3BattleText", + "_Route18CooltrainerM3EndBattleText", + "_Route18CyclingRoadSignText", + "_Route18Gate1FGuardCyclingRoadUphillText", + "_Route18Gate1FGuardExcuseMeText", + "_Route18Gate1FGuardYouNeedABicycleText", + "_Route18Gate2FLeftBinocularsText", + "_Route18Gate2FRightBinocularsText", + "_Route18SignText", + "_Route19CooltrainerM1AfterBattleText", + "_Route19CooltrainerM1BattleText", + "_Route19CooltrainerM1EndBattleText", + "_Route19CooltrainerM2AfterBattleText", + "_Route19CooltrainerM2BattleText", + "_Route19CooltrainerM2EndBattleText", + "_Route19SignText", + "_Route19Swimmer1AfterBattleText", + "_Route19Swimmer1BattleText", + "_Route19Swimmer1EndBattleText", + "_Route19Swimmer2AfterBattleText", + "_Route19Swimmer2BattleText", + "_Route19Swimmer2EndBattleText", + "_Route19Swimmer3AfterBattleText", + "_Route19Swimmer3BattleText", + "_Route19Swimmer3EndBattleText", + "_Route19Swimmer4AfterBattleText", + "_Route19Swimmer4BattleText", + "_Route19Swimmer4EndBattleText", + "_Route19Swimmer5AfterBattleText", + "_Route19Swimmer5BattleText", + "_Route19Swimmer5EndBattleText", + "_Route19Swimmer6AfterBattleText", + "_Route19Swimmer6BattleText", + "_Route19Swimmer6EndBattleText", + "_Route19Swimmer7AfterBattleText", + "_Route19Swimmer7BattleText", + "_Route19Swimmer7EndBattleText", + "_Route19Swimmer8AfterBattleText", + "_Route19Swimmer8BattleText", + "_Route19Swimmer8EndBattleText", + "_Route1SignText", + "_Route1Youngster1AlsoGotPokeballsText", + "_Route1Youngster1GotPotionText", + "_Route1Youngster1MartSampleText", + "_Route1Youngster1NoRoomText", + "_Route1Youngster2Text", + "_Route20CooltrainerMAfterBattleText", + "_Route20CooltrainerMBattleText", + "_Route20CooltrainerMEndBattleText", + "_Route20SeafoamIslandsSignText", + "_Route20Swimmer1AfterBattleText", + "_Route20Swimmer1BattleText", + "_Route20Swimmer1EndBattleText", + "_Route20Swimmer2AfterBattleText", + "_Route20Swimmer2BattleText", + "_Route20Swimmer2EndBattleText", + "_Route20Swimmer3AfterBattleText", + "_Route20Swimmer3BattleText", + "_Route20Swimmer3EndBattleText", + "_Route20Swimmer4AfterBattleText", + "_Route20Swimmer4BattleText", + "_Route20Swimmer4EndBattleText", + "_Route20Swimmer5AfterBattleText", + "_Route20Swimmer5BattleText", + "_Route20Swimmer5EndBattleText", + "_Route20Swimmer6AfterBattleText", + "_Route20Swimmer6BattleText", + "_Route20Swimmer6EndBattleText", + "_Route20Swimmer7AfterBattleText", + "_Route20Swimmer7BattleText", + "_Route20Swimmer7EndBattleText", + "_Route20Swimmer8AfterBattleText", + "_Route20Swimmer8BattleText", + "_Route20Swimmer8EndBattleText", + "_Route20Swimmer9AfterBattleText", + "_Route20Swimmer9BattleText", + "_Route20Swimmer9EndBattleText", + "_Route21Fisher1AfterBattleText", + "_Route21Fisher1BattleText", + "_Route21Fisher1EndBattleText", + "_Route21Fisher2AfterBattleText", + "_Route21Fisher2BattleText", + "_Route21Fisher2EndBattleText", + "_Route21Fisher3AfterBattleText", + "_Route21Fisher3BattleText", + "_Route21Fisher3EndBattleText", + "_Route21Fisher4AfterBattleText", + "_Route21Fisher4BattleText", + "_Route21Fisher4EndBattleText", + "_Route21Swimmer1AfterBattleText", + "_Route21Swimmer1BattleText", + "_Route21Swimmer1EndBattleText", + "_Route21Swimmer2AfterBattleText", + "_Route21Swimmer2BattleText", + "_Route21Swimmer2EndBattleText", + "_Route21Swimmer3AfterBattleText", + "_Route21Swimmer3BattleText", + "_Route21Swimmer3EndBattleText", + "_Route21Swimmer4AfterBattleText", + "_Route21Swimmer4BattleText", + "_Route21Swimmer4EndBattleText", + "_Route21Swimmer5AfterBattleText", + "_Route21Swimmer5BattleText", + "_Route21Swimmer5EndBattleText", + "_Route22GateGuardGoRightAheadText", + "_Route22GateGuardICantLetYouPassText", + "_Route22GateGuardNoBoulderbadgeText", + "_Route22PokemonLeagueSignText", + "_Route22Rival1DefeatedText", + "_Route22Rival1VictoryText", + "_Route22Rival2DefeatedText", + "_Route22Rival2VictoryText", + "_Route22RivalAfterBattleText1", + "_Route22RivalAfterBattleText2", + "_Route22RivalBeforeBattleText1", + "_Route22RivalBeforeBattleText2", + "_Route23GoRightAheadText", + "_Route23OhThatIsTheBadgeText", + "_Route23VictoryRoadGateSignText", + "_Route23YouDontHaveTheBadgeYetText", + "_Route24CooltrainerF1AfterBattleText", + "_Route24CooltrainerF1BattleText", + "_Route24CooltrainerF1EndBattleText", + "_Route24CooltrainerF2AfterBattleText", + "_Route24CooltrainerF2BattleText", + "_Route24CooltrainerF2EndBattleText", + "_Route24CooltrainerM1DefeatedText", + "_Route24CooltrainerM1JoinTeamRocketText", + "_Route24CooltrainerM1NoRoomText", + "_Route24CooltrainerM1ReceivedNuggetText", + "_Route24CooltrainerM1YouBeatOurContestText", + "_Route24CooltrainerM1YouCouldBecomeATopLeaderText", + "_Route24CooltrainerM1YouJustEarnedAPrizeText", + "_Route24CooltrainerM2AfterBattleText", + "_Route24CooltrainerM2BattleText", + "_Route24CooltrainerM2EndBattleText", + "_Route24CooltrainerM3AfterBattleText", + "_Route24CooltrainerM3BattleText", + "_Route24CooltrainerM3EndBattleText", + "_Route24DamianText1", + "_Route24DamianText2", + "_Route24DamianText3", + "_Route24DamianText4", + "_Route24Youngster1AfterBattleText", + "_Route24Youngster1BattleText", + "_Route24Youngster1EndBattleText", + "_Route24Youngster2AfterBattleText", + "_Route24Youngster2BattleText", + "_Route24Youngster2EndBattleText", + "_Route25BillSignText", + "_Route25CooltrainerF1AfterBattleText", + "_Route25CooltrainerF1BattleText", + "_Route25CooltrainerF1EndBattleText", + "_Route25CooltrainerF2AfterBattleText", + "_Route25CooltrainerF2BattleText", + "_Route25CooltrainerF2EndBattleText", + "_Route25CooltrainerMAfterBattleText", + "_Route25CooltrainerMBattleText", + "_Route25CooltrainerMEndBattleText", + "_Route25Hiker1AfterBattleText", + "_Route25Hiker1BattleText", + "_Route25Hiker1EndBattleText", + "_Route25Hiker2AfterBattleText", + "_Route25Hiker2BattleText", + "_Route25Hiker2EndBattleText", + "_Route25Hiker3AfterBattleText", + "_Route25Hiker3BattleText", + "_Route25Hiker3EndBattleText", + "_Route25Youngster1AfterBattleText", + "_Route25Youngster1BattleText", + "_Route25Youngster1EndBattleText", + "_Route25Youngster2AfterBattleText", + "_Route25Youngster2BattleText", + "_Route25Youngster2EndBattleText", + "_Route25Youngster3AfterBattleText", + "_Route25Youngster3BattleText", + "_Route25Youngster3EndBattleText", + "_Route2DiglettsCaveSignText", + "_Route2GateOaksAideFlashExplanationText", + "_Route2GateYoungsterText", + "_Route2SignText", + "_Route2TradeHouseScientistText", + "_Route3CooltrainerF1AfterBattleText", + "_Route3CooltrainerF1BattleText", + "_Route3CooltrainerF1EndBattleText", + "_Route3CooltrainerF2AfterBattleText", + "_Route3CooltrainerF2BattleText", + "_Route3CooltrainerF2EndBattleText", + "_Route3CooltrainerF3AfterBattleText", + "_Route3CooltrainerF3BattleText", + "_Route3CooltrainerF3EndBattleText", + "_Route3SignText", + "_Route3Text1", + "_Route3Youngster1AfterBattleText", + "_Route3Youngster1BattleText", + "_Route3Youngster1EndBattleText", + "_Route3Youngster2AfterBattleText", + "_Route3Youngster2BattleText", + "_Route3Youngster2EndBattleText", + "_Route3Youngster3AfterBattleText", + "_Route3Youngster3BattleText", + "_Route3Youngster3EndBattleText", + "_Route3Youngster4AfterBattleText", + "_Route3Youngster4BattleText", + "_Route3Youngster4EndBattleText", + "_Route3Youngster5AfterBattleText", + "_Route3Youngster5BattleText", + "_Route3Youngster5EndBattleText", + "_Route4CooltrainerF1Text", + "_Route4CooltrainerF2AfterBattleText", + "_Route4CooltrainerF2BattleText", + "_Route4CooltrainerF2EndBattleText", + "_Route4MtMoonSignText", + "_Route4SignText", + "_Route5UndergroundPathSignText", + "_Route6CooltrainerF1AfterBattleText", + "_Route6CooltrainerF1BattleText", + "_Route6CooltrainerF1EndBattleText", + "_Route6CooltrainerF2AfterBattleText", + "_Route6CooltrainerF2BattleText", + "_Route6CooltrainerF2EndBattleText", + "_Route6CooltrainerM1AfterBattleText", + "_Route6CooltrainerM1BattleText", + "_Route6CooltrainerM1EndBattleText", + "_Route6CooltrainerM2AfterBattleText", + "_Route6CooltrainerM2BattleText", + "_Route6CooltrainerM2EndBattleText", + "_Route6UndergroundPathSignText", + "_Route6Youngster1AfterBattleText", + "_Route6Youngster1BattleText", + "_Route6Youngster1EndBattleText", + "_Route6Youngster2AfterBattleText", + "_Route6Youngster2BattleText", + "_Route6Youngster2EndBattleText", + "_Route7UndergroundPathSignText", + "_Route8CooltrainerF1AfterBattleText", + "_Route8CooltrainerF1BattleText", + "_Route8CooltrainerF1EndBattleText", + "_Route8CooltrainerF2AfterBattleText", + "_Route8CooltrainerF2BattleText", + "_Route8CooltrainerF2EndBattleText", + "_Route8CooltrainerF3AfterBattleText", + "_Route8CooltrainerF3BattleText", + "_Route8CooltrainerF3EndBattleText", + "_Route8CooltrainerF4AfterBattleText", + "_Route8CooltrainerF4BattleText", + "_Route8CooltrainerF4EndBattleText", + "_Route8Gambler1AfterBattleText", + "_Route8Gambler1BattleText", + "_Route8Gambler1EndBattleText", + "_Route8Gambler2AfterBattleText", + "_Route8Gambler2BattleText", + "_Route8Gambler2EndBattleText", + "_Route8SuperNerd1AfterBattleText", + "_Route8SuperNerd1BattleText", + "_Route8SuperNerd1EndBattleText", + "_Route8SuperNerd2AfterBattleText", + "_Route8SuperNerd2BattleText", + "_Route8SuperNerd2EndBattleText", + "_Route8SuperNerd3AfterBattleText", + "_Route8SuperNerd3BattleText", + "_Route8SuperNerd3EndBattleText", + "_Route8UndergroundSignText", + "_Route9AJAfterBattleText", + "_Route9AJBattleText", + "_Route9AJEndBattleText", + "_Route9CooltrainerF1AfterBattleText", + "_Route9CooltrainerF1BattleText", + "_Route9CooltrainerF1EndBattleText", + "_Route9CooltrainerF2AfterBattleText", + "_Route9CooltrainerF2BattleText", + "_Route9CooltrainerF2EndBattleText", + "_Route9CooltrainerM2AfterBattleText", + "_Route9CooltrainerM2BattleText", + "_Route9CooltrainerM2EndBattleText", + "_Route9Hiker1AfterBattleText", + "_Route9Hiker1BattleText", + "_Route9Hiker1EndBattleText", + "_Route9Hiker2AfterBattleText", + "_Route9Hiker2BattleText", + "_Route9Hiker2EndBattleText", + "_Route9Hiker3AfterBattleText", + "_Route9Hiker3BattleText", + "_Route9Hiker3EndBattleText", + "_Route9SignText", + "_Route9Youngster1AfterBattleText", + "_Route9Youngster1BattleText", + "_Route9Youngster1EndBattleText", + "_Route9Youngster2AfterBattleText", + "_Route9Youngster2BattleText", + "_Route9Youngster2EndBattleText", + "_RunAwayText", + "_SSAnne1FRoomsCooltrainerFAfterBattleText", + "_SSAnne1FRoomsCooltrainerFBattleText", + "_SSAnne1FRoomsCooltrainerFEndBattleText", + "_SSAnne1FRoomsGentleman1AfterBattleText", + "_SSAnne1FRoomsGentleman1BattleText", + "_SSAnne1FRoomsGentleman1EndBattleText", + "_SSAnne1FRoomsGentleman2AfterBattleText", + "_SSAnne1FRoomsGentleman2BattleText", + "_SSAnne1FRoomsGentleman2EndBattleText", + "_SSAnne1FRoomsGentleman3Text", + "_SSAnne1FRoomsGirl1Text", + "_SSAnne1FRoomsGirl2Text", + "_SSAnne1FRoomsLittleGirlText", + "_SSAnne1FRoomsMiddleAgedManText", + "_SSAnne1FRoomsWigglytuffText", + "_SSAnne1FRoomsYoungsterAfterBattleText", + "_SSAnne1FRoomsYoungsterBattleText", + "_SSAnne1FRoomsYoungsterEndBattleText", + "_SSAnne1FSailorText", + "_SSAnne1FWaiterText", + "_SSAnne2FRivalCutMasterText", + "_SSAnne2FRivalDefeatedText", + "_SSAnne2FRivalText", + "_SSAnne2FRivalVictoryText", + "_SSAnne2FRoomsBeautyText", + "_SSAnne2FRoomsBrunetteGirlText", + "_SSAnne2FRoomsCooltrainerFAfterBattleText", + "_SSAnne2FRoomsCooltrainerFBattleText", + "_SSAnne2FRoomsCooltrainerFEndBattleText", + "_SSAnne2FRoomsFisherAfterBattleText", + "_SSAnne2FRoomsFisherBattleText", + "_SSAnne2FRoomsFisherEndBattleText", + "_SSAnne2FRoomsGentleman1AfterBattleText", + "_SSAnne2FRoomsGentleman1BattleText", + "_SSAnne2FRoomsGentleman1EndBattleText", + "_SSAnne2FRoomsGentleman2AfterBattleText", + "_SSAnne2FRoomsGentleman2BattleText", + "_SSAnne2FRoomsGentleman2EndBattleText", + "_SSAnne2FRoomsGentleman3Text", + "_SSAnne2FRoomsGentleman4Text", + "_SSAnne2FRoomsGentleman5Text", + "_SSAnne2FRoomsGrampsText", + "_SSAnne2FRoomsLittleBoyText", + "_SSAnne2FWaiterText", + "_SSAnne3FSailorText", + "_SSAnneB1FRoomsFisherAfterBattleText", + "_SSAnneB1FRoomsFisherBattleText", + "_SSAnneB1FRoomsFisherEndBattleText", + "_SSAnneB1FRoomsMachokeText", + "_SSAnneB1FRoomsSailor1AfterBattleText", + "_SSAnneB1FRoomsSailor1BattleText", + "_SSAnneB1FRoomsSailor1EndBattleText", + "_SSAnneB1FRoomsSailor2AfterBattleText", + "_SSAnneB1FRoomsSailor2BattleText", + "_SSAnneB1FRoomsSailor2EndBattleText", + "_SSAnneB1FRoomsSailor3AfterBattleText", + "_SSAnneB1FRoomsSailor3BattleText", + "_SSAnneB1FRoomsSailor3EndBattleText", + "_SSAnneB1FRoomsSailor4AfterBattleText", + "_SSAnneB1FRoomsSailor4BattleText", + "_SSAnneB1FRoomsSailor4EndBattleText", + "_SSAnneB1FRoomsSailor5AfterBattleText", + "_SSAnneB1FRoomsSailor5BattleText", + "_SSAnneB1FRoomsSailor5EndBattleText", + "_SSAnneB1FRoomsSuperNerdText", + "_SSAnneBowCooltrainerMText", + "_SSAnneBowSailor1Text", + "_SSAnneBowSailor2AfterBattleText", + "_SSAnneBowSailor2BattleText", + "_SSAnneBowSailor2EndBattleText", + "_SSAnneBowSailor3AfterBattleText", + "_SSAnneBowSailor3BattleText", + "_SSAnneBowSailor3EndBattleText", + "_SSAnneBowSuperNerdText", + "_SSAnneCaptainsRoomCaptainHM01NoRoomText", + "_SSAnneCaptainsRoomCaptainIFeelMuchBetterText", + "_SSAnneCaptainsRoomCaptainNotSickAnymoreText", + "_SSAnneCaptainsRoomCaptainReceivedHM01Text", + "_SSAnneCaptainsRoomRubCaptainsBackText", + "_SSAnneCaptainsRoomSeasickBookText", + "_SSAnneCaptainsRoomTrashText", + "_SSAnneKitchenCook1Text", + "_SSAnneKitchenCook2Text", + "_SSAnneKitchenCook3Text", + "_SSAnneKitchenCook4Text", + "_SSAnneKitchenCook5Text", + "_SSAnneKitchenCook6Text", + "_SSAnneKitchenCook7MainCourseIsText", + "_SSTicketNoRoomText", + "_SSTicketReceivedText", + "_SafariZoneAngryText", + "_SafariZoneCenterRestHouseGirlText", + "_SafariZoneCenterRestHouseScientistText", + "_SafariZoneCenterRestHouseSignText", + "_SafariZoneCenterTrainerTipsSignText", + "_SafariZoneEastRestHouseRockerText", + "_SafariZoneEastRestHouseScientistText", + "_SafariZoneEastRestHouseSignText", + "_SafariZoneEastRestHouseSilphWorkerMText", + "_SafariZoneEastSignText", + "_SafariZoneEastTrainerTipsText", + "_SafariZoneEatingText", + "_SafariZoneGateSafariZoneWorker1CallYouOnThePAText", + "_SafariZoneGateSafariZoneWorker1GoodHaulComeAgainText", + "_SafariZoneGateSafariZoneWorker1GoodLuckText", + "_SafariZoneGateSafariZoneWorker1LeavingEarlyText", + "_SafariZoneGateSafariZoneWorker1NotEnoughMoneyText", + "_SafariZoneGateSafariZoneWorker1PleaseComeAgainText", + "_SafariZoneGateSafariZoneWorker1ReturnSafariBallsText", + "_SafariZoneGateSafariZoneWorker1Text", + "_SafariZoneGateSafariZoneWorker1ThatllBe500PleaseText", + "_SafariZoneGateSafariZoneWorker1WouldYouLikeToJoinText", + "_SafariZoneGateSafariZoneWorker2FirstTimeHereText", + "_SafariZoneGateSafariZoneWorker2SafariZoneExplanationText", + "_SafariZoneGateSafariZoneWorker2YoureARegularHereText", + "_SafariZoneLowCostText1", + "_SafariZoneLowCostText2", + "_SafariZoneLowCostText3", + "_SafariZoneLowCostText4", + "_SafariZoneLowCostText5", + "_SafariZoneLowCostText6", + "_SafariZoneLowCostText7", + "_SafariZoneLowCostText8", + "_SafariZoneNorthRestHouseGentlemanText", + "_SafariZoneNorthRestHouseSafariZoneWorkerText", + "_SafariZoneNorthRestHouseScientistText", + "_SafariZoneNorthRestHouseSignText", + "_SafariZoneNorthSignText", + "_SafariZoneNorthTrainerTips1Text", + "_SafariZoneNorthTrainerTips2Text", + "_SafariZoneNorthTrainerTips3Text", + "_SafariZoneSecretHouseFishingGuruHM03ExplanationText", + "_SafariZoneSecretHouseFishingGuruHM03NoRoomText", + "_SafariZoneSecretHouseFishingGuruReceivedHM03Text", + "_SafariZoneSecretHouseFishingGuruYouHaveWonText", + "_SafariZoneWestFindWardensTeethSignText", + "_SafariZoneWestRestHouseCooltrainerMText", + "_SafariZoneWestRestHouseScientistText", + "_SafariZoneWestRestHouseSignText", + "_SafariZoneWestRestHouseSilphWorkerFText", + "_SafariZoneWestSignText", + "_SafariZoneWestTrainerTipsText", + "_SaffronCityFightingDojoSignText", + "_SaffronCityGentlemanText", + "_SaffronCityGymSignText", + "_SaffronCityMrPsychicsHouseSignText", + "_SaffronCityPidgeotText", + "_SaffronCityPokecenterGuyText1", + "_SaffronCityPokecenterGuyText2", + "_SaffronCityRockerText", + "_SaffronCityRocket1Text", + "_SaffronCityRocket2Text", + "_SaffronCityRocket3Text", + "_SaffronCityRocket4Text", + "_SaffronCityRocket5Text", + "_SaffronCityRocket6Text", + "_SaffronCityRocket7Text", + "_SaffronCityRocket8Text", + "_SaffronCityRocket9Text", + "_SaffronCityScientistText", + "_SaffronCitySignText", + "_SaffronCitySilphCoLatestProductSignText", + "_SaffronCitySilphCoSignText", + "_SaffronCitySilphWorkerFText", + "_SaffronCitySilphWorkerMText", + "_SaffronCityTrainerTips1Text", + "_SaffronCityTrainerTips2Text", + "_SaffronGateGuardGeeImThirstyText", + "_SaffronGateGuardImParchedText", + "_SaffronGateGuardThanksForTheDrinkText", + "_SaffronGateGuardYouCanGoOnThroughText", + "_SaffronGymChanneler1AfterBattleText", + "_SaffronGymChanneler1BattleText", + "_SaffronGymChanneler1EndBattleText", + "_SaffronGymChanneler2AfterBattleText", + "_SaffronGymChanneler2BattleText", + "_SaffronGymChanneler2EndBattleText", + "_SaffronGymChanneler3AfterBattleText", + "_SaffronGymChanneler3BattleText", + "_SaffronGymChanneler3EndBattleText", + "_SaffronGymGuideBeatSabrinaText", + "_SaffronGymGuideChampInMakingText", + "_SaffronGymSabrinaMarshBadgeInfoText", + "_SaffronGymSabrinaPostBattleAdviceText", + "_SaffronGymSabrinaReceivedMarshBadgeText", + "_SaffronGymSabrinaReceivedTM46Text", + "_SaffronGymSabrinaTM46NoRoomText", + "_SaffronGymSabrinaText", + "_SaffronGymYoungster1AfterBattleText", + "_SaffronGymYoungster1BattleText", + "_SaffronGymYoungster1EndBattleText", + "_SaffronGymYoungster2AfterBattleText", + "_SaffronGymYoungster2BattleText", + "_SaffronGymYoungster2EndBattleText", + "_SaffronGymYoungster3AfterBattleText", + "_SaffronGymYoungster3BattleText", + "_SaffronGymYoungster3EndBattleText", + "_SaffronGymYoungster4AfterBattleText", + "_SaffronGymYoungster4BattleText", + "_SaffronGymYoungster4EndBattleText", + "_SaffronMartCooltrainerFText", + "_SaffronMartSuperNerdText", + "_SaffronPidgeyHouseBrunetteGirlText", + "_SaffronPidgeyHousePaperText", + "_SaffronPidgeyHousePidgeyText", + "_SaffronPidgeyHouseYoungsterText", + "_SaffronPokecenterBeautyText", + "_SaffronPokecenterGentlemanText", + "_SandshrewDexEntry", + "_SandslashDexEntry", + "_SaveOptionText", + "_SavingEnergyText", + "_SavingText", + "_ScaredText", + "_ScytherDexEntry", + "_SeadraDexEntry", + "_SeafoamIslandsB4FArticunoBattleText", + "_SeafoamIslandsB4FBouldersSignText", + "_SeafoamIslandsB4FDangerSignText", + "_SeakingDexEntry", + "_SeelDexEntry", + "_SentToBoxText", + "_ShallWeHealYourPokemonText", + "_ShellderDexEntry", + "_ShroudedInMistText", + "_SilphCo10FGiovanniILostAgainText", + "_SilphCo10FRocketAfterBattleText", + "_SilphCo10FRocketBattleText", + "_SilphCo10FRocketEndBattleText", + "_SilphCo10FScientistAfterBattleText", + "_SilphCo10FScientistBattleText", + "_SilphCo10FScientistEndBattleText", + "_SilphCo10FSilphWorkerFImScaredText", + "_SilphCo10FSilphWorkerFQuietAboutMyCryingText", + "_SilphCo11FBeautyText", + "_SilphCo11FGiovanniText", + "_SilphCo11FGiovanniYouRuinedOurPlansText", + "_SilphCo11FRocket2AfterBattleText", + "_SilphCo11FRocket2BattleText", + "_SilphCo11FRocket2EndBattleText", + "_SilphCo11FSilphPresidentMasterBallDescriptionText", + "_SilphCo11FSilphPresidentNoRoomText", + "_SilphCo11FSilphPresidentReceivedMasterBallText", + "_SilphCo11FSilphPresidentText", + "_SilphCo1FLinkReceptionistText", + "_SilphCo2FRocket1AfterBattleText", + "_SilphCo2FRocket1BattleText", + "_SilphCo2FRocket1EndBattleText", + "_SilphCo2FRocket2AfterBattleText", + "_SilphCo2FRocket2BattleText", + "_SilphCo2FRocket2EndBattleText", + "_SilphCo2FScientist1AfterBattleText", + "_SilphCo2FScientist1BattleText", + "_SilphCo2FScientist1EndBattleText", + "_SilphCo2FScientist2AfterBattleText", + "_SilphCo2FScientist2BattleText", + "_SilphCo2FScientist2EndBattleText", + "_SilphCo2FSilphWorkerFReceivedTM36Text", + "_SilphCo2FSilphWorkerFTM36ExplanationText", + "_SilphCo2FSilphWorkerFTM36NoRoomText", + "_SilphCo3FRocketAfterBattleText", + "_SilphCo3FRocketBattleText", + "_SilphCo3FRocketEndBattleText", + "_SilphCo3FScientistAfterBattleText", + "_SilphCo3FScientistBattleText", + "_SilphCo3FScientistEndBattleText", + "_SilphCo3FSilphWorkerMWhatShouldIDoText", + "_SilphCo3FSilphWorkerMYouSavedUsText", + "_SilphCo4FRocket1AfterBattleText", + "_SilphCo4FRocket1BattleText", + "_SilphCo4FRocket1EndBattleText", + "_SilphCo4FRocket2AfterBattleText", + "_SilphCo4FRocket2BattleText", + "_SilphCo4FRocket2EndBattleText", + "_SilphCo4FScientistAfterBattleText", + "_SilphCo4FScientistBattleText", + "_SilphCo4FScientistEndBattleText", + "_SilphCo4FSilphWorkerMImHidingText", + "_SilphCo4FSilphWorkerMTeamRocketIsGoneText", + "_SilphCo5FPokemonReport1Text", + "_SilphCo5FPokemonReport2Text", + "_SilphCo5FPokemonReport3Text", + "_SilphCo5FRockerAfterBattleText", + "_SilphCo5FRockerBattleText", + "_SilphCo5FRockerEndBattleText", + "_SilphCo5FRocket1AfterBattleText", + "_SilphCo5FRocket1BattleText", + "_SilphCo5FRocket1EndBattleText", + "_SilphCo5FRocket2AfterBattleText", + "_SilphCo5FRocket2BattleText", + "_SilphCo5FRocket2EndBattleText", + "_SilphCo5FScientistAfterBattleText", + "_SilphCo5FScientistBattleText", + "_SilphCo5FScientistEndBattleText", + "_SilphCo5FSilphWorkerMThatsYouRightText", + "_SilphCo5FSilphWorkerMYoureOurHeroText", + "_SilphCo6FRocket1AfterBattleText", + "_SilphCo6FRocket1BattleText", + "_SilphCo6FRocket1EndBattleText", + "_SilphCo6FRocket2AfterBattleText", + "_SilphCo6FRocket2BattleText", + "_SilphCo6FRocket2EndBattleText", + "_SilphCo6FScientistAfterBattleText", + "_SilphCo6FScientistBattleText", + "_SilphCo6FScientistEndBattleText", + "_SilphCo6FSilphWorkerF1HaveToMarryHimText", + "_SilphCo6FSilphWorkerF1SuchACowardText", + "_SilphCo6FSilphWorkerF2TeamRocketConquerWorldText", + "_SilphCo6FSilphWorkerF2TeamRocketRanText", + "_SilphCo6FSilphWorkerM1BackToWorkText", + "_SilphCo6FSilphWorkerM1TookOverTheBuildingText", + "_SilphCo6FSilphWorkerM3TargetedSilphText", + "_SilphCo6FSilphWorkerM3WorkForSilphText", + "_SilphCo6FSilphWorkerMHelpMePleaseText", + "_SilphCo6FSilphWorkerMWeGotEngagedText", + "_SilphCo7FRivalDefeatedText", + "_SilphCo7FRivalGoodLuckToYouText", + "_SilphCo7FRivalText", + "_SilphCo7FRivalVictoryText", + "_SilphCo7FRivalWaitedHereText", + "_SilphCo7FRocket1AfterBattleText", + "_SilphCo7FRocket1BattleText", + "_SilphCo7FRocket1EndBattleText", + "_SilphCo7FRocket2AfterBattleText", + "_SilphCo7FRocket2BattleText", + "_SilphCo7FRocket2EndBattleText", + "_SilphCo7FRocket3AfterBattleText", + "_SilphCo7FRocket3BattleText", + "_SilphCo7FRocket3EndBattleText", + "_SilphCo7FScientistAfterBattleText", + "_SilphCo7FScientistBattleText", + "_SilphCo7FScientistEndBattleText", + "_SilphCo7FSilphWorkerM1HaveThisPokemonText", + "_SilphCo7FSilphWorkerM1IsOurPresidentOkText", + "_SilphCo7FSilphWorkerM1LaprasDescriptionText", + "_SilphCo7FSilphWorkerM1SavedText", + "_SilphCo7FSilphWorkerM2AfterTheMasterBallText", + "_SilphCo7FSilphWorkerM2CancelledMasterBallText", + "_SilphCo7FSilphWorkerM3ItWouldBeBadText", + "_SilphCo7FSilphWorkerM3YouChasedOffTeamRocketText", + "_SilphCo7FSilphWorkerM4ItsReallyDangerousHereText", + "_SilphCo7FSilphWorkerM4SafeAtLastText", + "_SilphCo8FRocket1AfterBattleText", + "_SilphCo8FRocket1BattleText", + "_SilphCo8FRocket1EndBattleText", + "_SilphCo8FRocket2AfterBattleText", + "_SilphCo8FRocket2BattleText", + "_SilphCo8FRocket2EndBattleText", + "_SilphCo8FScientistAfterBattleText", + "_SilphCo8FScientistBattleText", + "_SilphCo8FScientistEndBattleText", + "_SilphCo8FSilphWorkerMSilphIsFinishedText", + "_SilphCo8FSilphWorkerMThanksForSavingUsText", + "_SilphCo9FRocket1AfterBattleText", + "_SilphCo9FRocket1BattleText", + "_SilphCo9FRocket1EndBattleText", + "_SilphCo9FRocket2AfterBattleText", + "_SilphCo9FRocket2BattleText", + "_SilphCo9FRocket2EndBattleText", + "_SilphCo9FScientistAfterBattleText", + "_SilphCo9FScientistBattleText", + "_SilphCo9FScientistEndBattleText", + "_SilphCoJessieJamesText1", + "_SilphCoJessieJamesText2", + "_SilphCoJessieJamesText3", + "_SilphCoJessieJamesText4", + "_SkyAttackGlowingText", + "_SleepingPikachuText1", + "_SleepingPikachuText2", + "_SlowbroDexEntry", + "_SlowpokeDexEntry", + "_SnorlaxDexEntry", + "_SoYouWantPrizeText", + "_SorryNeedMoreCoinsText", + "_SpearowDexEntry", + "_SquirtleDexEntry", + "_StarmieDexEntry", + "_StartSlotMachineText", + "_StartedSleepingEffect", + "_StaryuDexEntry", + "_StatusChangesEliminatedText", + "_StoppedEvolvingText", + "_StrengthsAndWeaknessesText", + "_SubstituteBrokeText", + "_SubstituteText", + "_SubstituteTookDamageText", + "_SuckedHealthText", + "_SummerBeachHousePikachuText", + "_SummerBeachHousePoster1Text1", + "_SummerBeachHousePoster1Text2", + "_SummerBeachHousePoster2Text1", + "_SummerBeachHousePoster2Text2", + "_SummerBeachHousePoster3Text1", + "_SummerBeachHousePoster3Text2", + "_SummerBeachHousePrinterText1", + "_SummerBeachHousePrinterText2", + "_SummerBeachHousePrinterText3", + "_SummerBeachHousePrinterText4", + "_SummerBeachHousePrinterText5", + "_SummerBeachHousePrinterText6", + "_SummerBeachHouseSurfinDudeText1", + "_SummerBeachHouseSurfinDudeText2", + "_SummerBeachHouseSurfinDudeText3", + "_SummerBeachHouseSurfinDudeText4", + "_SuperEffectiveText", + "_SurfingGotOnText", + "_SurfingNoPlaceToGetOffText", + "_SwitchOnText", + "_TM21ExplanationText", + "_TM24ExplanationText", + "_TM34ExplanationText", + "_TM46ExplanationText", + "_TangelaDexEntry", + "_TaurosDexEntry", + "_TeachMachineMoveText", + "_TentacoolDexEntry", + "_TentacruelDexEntry", + "_TextIDErrorText", + "_Thanks1Text", + "_Thanks2Text", + "_Thanks3Text", + "_ThrashingAboutText", + "_ThrewAwayItemText", + "_ThrewBaitText", + "_ThrewRockText", + "_ThrowBallAtTrainerMonText1", + "_ThrowBallAtTrainerMonText2", + "_TimesUpText", + "_TooImportantToTossText", + "_TooWeakSubstituteText", + "_TookInSunlightText", + "_TossHowManyText", + "_TownMapText", + "_TradeCenterOpponentText", + "_TradeForText", + "_TradeSendsText", + "_TradeTakeCareText", + "_TradeTransferredText", + "_TradeWavesFarewellText", + "_TradeWentToText", + "_TradeWillTradeText", + "_TradedForText", + "_TradeforText", + "_TrainerAboutToUseText", + "_TrainerDefeatedText", + "_TrainerNameText", + "_TrainerSentOutText", + "_TrainerWantsToFightText", + "_TransformedText", + "_TryingToLearnText", + "_TurnPageText", + "_TurnedAwayText", + "_TurnedOnPC1Text", + "_TurnedOnPC2Text", + "_UnaffectedText", + "_UndergroundPathRoute6GirlText", + "_UndergroundPathRoute7CopyUnusedGirlText", + "_UndergroundPathRoute7CopyUnusedGoesUnderSaffronText", + "_UndergroundPathRoute7CopyUnusedMiddleAgedManText", + "_UndergroundPathRoute7CopyUnusedTeamRocketHadAHideoutText", + "_UndergroundPathRoute7MiddleAgedManText", + "_UndergroundPathRoute8GirlText", + "_UnleashedEnergyText", + "_UnusedBenchGuyText1", + "_UnusedBenchGuyText2", + "_UnusedBenchGuyText3", + "_UnveiledGhostText", + "_UseNextMonText", + "_UsedCutText", + "_UsedInsteadText", + "_UsedMove1Text", + "_UsedMove2Text", + "_UsedStrengthText", + "_VaporeonDexEntry", + "_VendingMachineText1", + "_VendingMachineText4", + "_VendingMachineText5", + "_VendingMachineText6", + "_VendingMachineText7", + "_VenomothDexEntry", + "_VenonatDexEntry", + "_VenusaurDexEntry", + "_VermilionCityBeautyText", + "_VermilionCityGambler1DidYouSeeText", + "_VermilionCityGambler1SSAnneDepartedText", + "_VermilionCityGambler2Text", + "_VermilionCityGymSignText", + "_VermilionCityHarborSignText", + "_VermilionCityMachopStompingTheLandFlatText", + "_VermilionCityMachopText", + "_VermilionCityNoticeSignText", + "_VermilionCityPokemonFanClubSignText", + "_VermilionCitySailor1DoYouHaveATicketText", + "_VermilionCitySailor1FlashedTicketText", + "_VermilionCitySailor1ShipSetSailText", + "_VermilionCitySailor1WelcomeToSSAnneText", + "_VermilionCitySailor1YouNeedATicketText", + "_VermilionCitySailor2Text", + "_VermilionCitySignText", + "_VermilionDockUnusedText", + "_VermilionGymGentlemanAfterBattleText", + "_VermilionGymGentlemanBattleText", + "_VermilionGymGentlemanEndBattleText", + "_VermilionGymGymGuideBeatLTSurgeText", + "_VermilionGymGymGuideChampInMakingText", + "_VermilionGymLTSurgePostBattleAdviceText", + "_VermilionGymLTSurgePreBattleText", + "_VermilionGymLTSurgeReceivedTM24Text", + "_VermilionGymLTSurgeReceivedThunderBadgeText", + "_VermilionGymLTSurgeTM24NoRoomText", + "_VermilionGymLTSurgeThunderBadgeInfoText", + "_VermilionGymSailorAfterBattleText", + "_VermilionGymSailorBattleText", + "_VermilionGymSailorEndBattleText", + "_VermilionGymSuperNerdAfterBattleText", + "_VermilionGymSuperNerdBattleText", + "_VermilionGymSuperNerdEndBattleText", + "_VermilionGymTrashFailText", + "_VermilionGymTrashSuccessText1", + "_VermilionGymTrashSuccessText2", + "_VermilionGymTrashSuccessText3", + "_VermilionGymTrashText", + "_VermilionMartCooltrainerFText", + "_VermilionMartCooltrainerMText", + "_VermilionOldRodHouseFishingGuruDoYouLikeToFishText", + "_VermilionOldRodHouseFishingGuruFishingIsAWayOfLifeText", + "_VermilionOldRodHouseFishingGuruHowAreTheFishBitingText", + "_VermilionOldRodHouseFishingGuruNoRoomText", + "_VermilionOldRodHouseFishingGuruTakeThisText", + "_VermilionOldRodHouseFishingGuruThatsSoDisappointingText", + "_VermilionPidgeyHouseLetterText", + "_VermilionPidgeyHousePidgeyText", + "_VermilionPidgeyHouseYoungsterText", + "_VermilionPokecenterFishingGuruText", + "_VermilionPokecenterGuyText", + "_VermilionPokecenterSailorText", + "_VictoryRoad1FCooltrainerFAfterBattleText", + "_VictoryRoad1FCooltrainerFBattleText", + "_VictoryRoad1FCooltrainerFEndBattleText", + "_VictoryRoad1FCooltrainerMAfterBattleText", + "_VictoryRoad1FCooltrainerMBattleText", + "_VictoryRoad1FCooltrainerMEndBattleText", + "_VictoryRoad2FCooltrainerMAfterBattleText", + "_VictoryRoad2FCooltrainerMBattleText", + "_VictoryRoad2FCooltrainerMEndBattleText", + "_VictoryRoad2FHikerAfterBattleText", + "_VictoryRoad2FHikerBattleText", + "_VictoryRoad2FHikerEndBattleText", + "_VictoryRoad2FMoltresBattleText", + "_VictoryRoad2FSuperNerd1AfterBattleText", + "_VictoryRoad2FSuperNerd1BattleText", + "_VictoryRoad2FSuperNerd1EndBattleText", + "_VictoryRoad2FSuperNerd2AfterBattleText", + "_VictoryRoad2FSuperNerd2BattleText", + "_VictoryRoad2FSuperNerd2EndBattleText", + "_VictoryRoad2FSuperNerd3AfterBattleText", + "_VictoryRoad2FSuperNerd3BattleText", + "_VictoryRoad2FSuperNerd3EndBattleText", + "_VictoryRoad3FCooltrainerF1AfterBattleText", + "_VictoryRoad3FCooltrainerF1BattleText", + "_VictoryRoad3FCooltrainerF1EndBattleText", + "_VictoryRoad3FCooltrainerF2AfterBattleText", + "_VictoryRoad3FCooltrainerF2BattleText", + "_VictoryRoad3FCooltrainerF2EndBattleText", + "_VictoryRoad3FCooltrainerM1AfterBattleText", + "_VictoryRoad3FCooltrainerM1BattleText", + "_VictoryRoad3FCooltrainerM1EndBattleText", + "_VictoryRoad3FCooltrainerM2AfterBattleText", + "_VictoryRoad3FCooltrainerM2BattleText", + "_VictoryRoad3FCooltrainerM2EndBattleText", + "_VictreebelDexEntry", + "_VileplumeDexEntry", + "_ViridianBlackboardBurnText", + "_ViridianBlackboardFrozenText", + "_ViridianBlackboardPoisonText", + "_ViridianBlackboardPrlzText", + "_ViridianBlackboardSleepText", + "_ViridianCityFisherReceivedTM42Text", + "_ViridianCityFisherTM42ExplanationText", + "_ViridianCityFisherTM42NoRoomText", + "_ViridianCityGambler1GymAlwaysClosedText", + "_ViridianCityGambler1GymLeaderReturnedText", + "_ViridianCityGirlHasntHadHisCoffeeYetText", + "_ViridianCityGirlWhenIGoShopText", + "_ViridianCityGymLockedText", + "_ViridianCityGymSignText", + "_ViridianCityOldManHadMyCoffeeNowText", + "_ViridianCityOldManLosingMyTouchText", + "_ViridianCityOldManNotGoodEnoughForYouText", + "_ViridianCityOldManSleepyPrivatePropertyText", + "_ViridianCityOldManWantMeToShowYouAgainText", + "_ViridianCityOldManWatchCloselyText", + "_ViridianCityOldManYouNeedToWeakenTheTargetText", + "_ViridianCityPokecenterGuyText", + "_ViridianCitySignText", + "_ViridianCityTrainerTips1Text", + "_ViridianCityTrainerTips2Text", + "_ViridianCityYoungster1Text", + "_ViridianCityYoungster2YouWantToKnowAboutText", + "_ViridianForestCooltrainerFAfterBattleText", + "_ViridianForestCooltrainerFBattleText", + "_ViridianForestCooltrainerFEndBattleText", + "_ViridianForestLeavingSignText", + "_ViridianForestNorthGateGrampsText", + "_ViridianForestNorthGateSuperNerdText", + "_ViridianForestSouthGateGirlText", + "_ViridianForestSouthGateLittleGirlText", + "_ViridianForestTrainerTips1Text", + "_ViridianForestTrainerTips2Text", + "_ViridianForestTrainerTips3Text", + "_ViridianForestTrainerTips4Text", + "_ViridianForestUseAntidoteSignText", + "_ViridianForestYoungster1Text", + "_ViridianForestYoungster2AfterBattleText", + "_ViridianForestYoungster2BattleText", + "_ViridianForestYoungster2EndBattleText", + "_ViridianForestYoungster3AfterBattleText", + "_ViridianForestYoungster3BattleText", + "_ViridianForestYoungster3EndBattleText", + "_ViridianForestYoungster4AfterBattleText", + "_ViridianForestYoungster4BattleText", + "_ViridianForestYoungster4EndBattleText", + "_ViridianForestYoungster5AfterBattleText", + "_ViridianForestYoungster5BattleText", + "_ViridianForestYoungster5EndBattleText", + "_ViridianForestYoungster6Text", + "_ViridianGymCooltrainerM1AfterBattleText", + "_ViridianGymCooltrainerM1BattleText", + "_ViridianGymCooltrainerM1EndBattleText", + "_ViridianGymCooltrainerM2AfterBattleText", + "_ViridianGymCooltrainerM2BattleText", + "_ViridianGymCooltrainerM2EndBattleText", + "_ViridianGymCooltrainerM3AfterBattleText", + "_ViridianGymCooltrainerM3BattleText", + "_ViridianGymCooltrainerM3EndBattleText", + "_ViridianGymGiovanniEarthBadgeInfoText", + "_ViridianGymGiovanniPostBattleAdviceText", + "_ViridianGymGiovanniPreBattleText", + "_ViridianGymGiovanniReceivedEarthBadgeText", + "_ViridianGymGiovanniReceivedTM27Text", + "_ViridianGymGiovanniTM27ExplanationText", + "_ViridianGymGiovanniTM27NoRoomText", + "_ViridianGymGuidePostBattleText", + "_ViridianGymGuidePreBattleText", + "_ViridianGymHiker1AfterBattleText", + "_ViridianGymHiker1BattleText", + "_ViridianGymHiker1EndBattleText", + "_ViridianGymHiker2AfterBattleText", + "_ViridianGymHiker2BattleText", + "_ViridianGymHiker2EndBattleText", + "_ViridianGymHiker3AfterBattleText", + "_ViridianGymHiker3BattleText", + "_ViridianGymHiker3EndBattleText", + "_ViridianGymRocker1AfterBattleText", + "_ViridianGymRocker1BattleText", + "_ViridianGymRocker1EndBattleText", + "_ViridianGymRocker2AfterBattleText", + "_ViridianGymRocker2BattleText", + "_ViridianGymRocker2EndBattleText", + "_ViridianMartClerkParcelQuestText", + "_ViridianMartClerkSayHiToOakText", + "_ViridianMartClerkYouCameFromPalletTownText", + "_ViridianMartCooltrainerMText", + "_ViridianMartYoungsterText", + "_ViridianNicknameHouseBaldingGuyText", + "_ViridianNicknameHouseLittleGirlText", + "_ViridianNicknameHouseSpearowText", + "_ViridianNicknameHouseSpearySignText", + "_ViridianPokecenterCooltrainerMText", + "_ViridianPokecenterGentlemanText", + "_ViridianSchoolBlackboardText1", + "_ViridianSchoolBlackboardText2", + "_ViridianSchoolHouseBrunetteGirlText", + "_ViridianSchoolHouseCooltrainerFText", + "_ViridianSchoolHouseLittleGirlText", + "_ViridianSchoolNotebookText1", + "_ViridianSchoolNotebookText2", + "_ViridianSchoolNotebookText3", + "_ViridianSchoolNotebookText4", + "_ViridianSchoolNotebookText5", + "_VitaminNoEffectText", + "_VitaminStatRoseText", + "_VoltorbDexEntry", + "_VulpixDexEntry", + "_WannaTrade1Text", + "_WannaTrade2Text", + "_WannaTrade3Text", + "_WardensHouseDisplayMerchandiseText", + "_WardensHouseDisplayPhotosAndFossilsText", + "_WardensHouseWardenGaveTheGoldTeethText", + "_WardensHouseWardenGibberish1Text", + "_WardensHouseWardenGibberish2Text", + "_WardensHouseWardenGibberish3Text", + "_WardensHouseWardenHM04ExplanationText", + "_WardensHouseWardenHM04NoRoomText", + "_WardensHouseWardenReceivedHM04Text", + "_WardensHouseWardenTeethPoppedInHisTeethText", + "_WardensHouseWardenThanksText", + "_WarpToLastPokemonCenterText", + "_WartortleDexEntry", + "_WasBlownAwayText", + "_WasSeededText", + "_WeedleDexEntry", + "_WeepinbellDexEntry", + "_WeezingDexEntry", + "_WhatDoYouWantText", + "_WhatGoesAroundComesAroundText", + "_WhatText", + "_WhatToDepositText", + "_WhatToTossText", + "_WhatToWithdrawText", + "_WhenYouChangeBoxText", + "_WhichFloorText", + "_WhichMoveToForgetText", + "_WhichPrizeText", + "_WigglytuffDexEntry", + "_WildMonAppearedText", + "_WildRanText", + "_WillBeTradedText", + "_WithExpAllText", + "_WithdrawHowManyText", + "_WithdrewItemText", + "_WokeUpText", + "_WontObeyText", + "_WouldYouLikeToSaveText", + "_WrongMon1Text", + "_WrongMon2Text", + "_WrongMon3Text", + "_YeahText", + "_YourNameIsText", + "_ZapdosDexEntry", + "_ZubatDexEntry", + "MelanieText1", + "MelanieText2", + "MelanieText3", + "MelanieText4", + "MelanieText5", + "MelanieBulbasaurText", + "MelanieOddishText", + "MelanieSandshrewText" + ], + "pointers": { + "AgathasRoom": { + "TEXT_AGATHASROOM_AGATHA": { + "asm": true, + "label": "AgathasRoomAgathaText" + }, + "TEXT_AGATHASROOM_AGATHA_DONT_RUN_AWAY": { + "label": "AgathasRoomAgathaDontRunAwayText", + "text": "_AgathasRoomAgathaDontRunAwayText" + } + }, + "BikeShop": { + "TEXT_BIKESHOP_CLERK": { + "asm": true, + "label": "BikeShopClerkText" + }, + "TEXT_BIKESHOP_MIDDLE_AGED_WOMAN": { + "asm": true, + "label": "BikeShopMiddleAgedWomanText", + "text": "_BikeShopMiddleAgedWomanText" + }, + "TEXT_BIKESHOP_YOUNGSTER": { + "asm": true, + "label": "BikeShopYoungsterText", + "text": "_BikeShopYoungsterTheseBikesAreExpensiveText" + } + }, + "BillsHouse": { + "TEXT_BILLSHOUSE_BILL_CHECK_OUT_MY_RARE_POKEMON": { + "asm": true, + "label": "BillsHouseBillCheckOutMyRarePokemonText" + }, + "TEXT_BILLSHOUSE_BILL_DONT_LEAVE": { + "label": "BillsHouseBillDontLeaveText", + "text": "_BillsHouseBillDontLeaveText" + }, + "TEXT_BILLSHOUSE_BILL_POKEMON": { + "asm": true, + "label": "BillsHouseBillPokemonText" + }, + "TEXT_BILLSHOUSE_BILL_SS_TICKET": { + "asm": true, + "label": "BillsHouseBillSSTicketText" + } + }, + "BluesHouse": { + "TEXT_BLUESHOUSE_DAISY_SITTING": { + "asm": true, + "label": "BluesHouseDaisySittingText" + }, + "TEXT_BLUESHOUSE_DAISY_WALKING": { + "label": "BluesHouseDaisyWalkingText", + "text": "_BluesHouseDaisyWalkingText" + }, + "TEXT_BLUESHOUSE_TOWN_MAP": { + "label": "BluesHouseTownMapText", + "text": "_BluesHouseTownMapText" + } + }, + "BrunosRoom": { + "TEXT_BRUNOSROOM_BRUNO": { + "asm": true, + "label": "BrunosRoomBrunoText" + }, + "TEXT_BRUNOSROOM_BRUNO_DONT_RUN_AWAY": { + "label": "BrunosRoomBrunoDontRunAwayText", + "text": "_BrunosRoomBrunoDontRunAwayText" + } + }, + "CeladonChiefHouse": { + "TEXT_CELADONCHIEFHOUSE_CHIEF": { + "label": "CeladonChiefHouseChiefText", + "text": "_CeladonChiefHouseChiefText" + }, + "TEXT_CELADONCHIEFHOUSE_ROCKET": { + "label": "CeladonChiefHouseRocketText", + "text": "_CeladonChiefHouseRocketText" + }, + "TEXT_CELADONCHIEFHOUSE_SAILOR": { + "label": "CeladonChiefHouseSailorText", + "text": "_CeladonChiefHouseSailorText" + } + }, + "CeladonCity": { + "TEXT_CELADONCITY_DEPTSTORE_SIGN": { + "label": "CeladonCityDeptStoreSignText", + "text": "_CeladonCityDeptStoreSignText" + }, + "TEXT_CELADONCITY_FISHER": { + "label": "CeladonCityFisherText", + "text": "_CeladonCityFisherText" + }, + "TEXT_CELADONCITY_GAMECORNER_SIGN": { + "label": "CeladonCityGameCornerSignText", + "text": "_CeladonCityGameCornerSignText" + }, + "TEXT_CELADONCITY_GIRL": { + "label": "CeladonCityGirlText", + "text": "_CeladonCityGirlText" + }, + "TEXT_CELADONCITY_GRAMPS1": { + "label": "CeladonCityGramps1Text", + "text": "_CeladonCityGramps1Text" + }, + "TEXT_CELADONCITY_GRAMPS2": { + "label": "CeladonCityGramps2Text", + "text": "_CeladonCityGramps2Text" + }, + "TEXT_CELADONCITY_GRAMPS3": { + "asm": true, + "label": "CeladonCityGramps3Text", + "text": "_CeladonCityGramps3Text" + }, + "TEXT_CELADONCITY_GYM_SIGN": { + "label": "CeladonCityGymSignText", + "text": "_CeladonCityGymSignText" + }, + "TEXT_CELADONCITY_LITTLE_GIRL": { + "label": "CeladonCityLittleGirlText", + "text": "_CeladonCityLittleGirlText" + }, + "TEXT_CELADONCITY_MANSION_SIGN": { + "label": "CeladonCityMansionSignText", + "text": "_CeladonCityMansionSignText" + }, + "TEXT_CELADONCITY_POKECENTER_SIGN": { + "asm": true, + "label": "PokeCenterSignText" + }, + "TEXT_CELADONCITY_POLIWRATH": { + "asm": true, + "label": "CeladonCityPoliwrathText", + "text": "_CeladonCityPoliwrathText" + }, + "TEXT_CELADONCITY_PRIZEEXCHANGE_SIGN": { + "label": "CeladonCityPrizeExchangeSignText", + "text": "_CeladonCityPrizeExchangeSignText" + }, + "TEXT_CELADONCITY_ROCKET1": { + "label": "CeladonCityRocket1Text", + "text": "_CeladonCityRocket1Text" + }, + "TEXT_CELADONCITY_ROCKET2": { + "label": "CeladonCityRocket2Text", + "text": "_CeladonCityRocket2Text" + }, + "TEXT_CELADONCITY_SIGN": { + "label": "CeladonCitySignText", + "text": "_CeladonCitySignText" + }, + "TEXT_CELADONCITY_TRAINER_TIPS1": { + "asm": true, + "label": "CeladonCityTrainerTips1Text" + }, + "TEXT_CELADONCITY_TRAINER_TIPS2": { + "label": "CeladonCityTrainerTips2Text", + "text": "_CeladonCityTrainerTips2Text" + } + }, + "CeladonDiner": { + "TEXT_CELADONDINER_COOK": { + "label": "CeladonDinerCookText", + "text": "_CeladonDinerCookText" + }, + "TEXT_CELADONDINER_FISHER": { + "label": "CeladonDinerFisherText", + "text": "_CeladonDinerFisherText" + }, + "TEXT_CELADONDINER_GYM_GUIDE": { + "asm": true, + "label": "CeladonDinerGymGuideText" + }, + "TEXT_CELADONDINER_MIDDLE_AGED_MAN": { + "label": "CeladonDinerMiddleAgedManText", + "text": "_CeladonDinerMiddleAgedManText" + }, + "TEXT_CELADONDINER_MIDDLE_AGED_WOMAN": { + "label": "CeladonDinerMiddleAgedWomanText", + "text": "_CeladonDinerMiddleAgedWomanText" + } + }, + "CeladonGym": { + "TEXT_CELADONGYM_BEAUTY1": { + "asm": true, + "label": "CeladonGymBeauty1Text" + }, + "TEXT_CELADONGYM_BEAUTY2": { + "asm": true, + "label": "CeladonGymBeauty2Text" + }, + "TEXT_CELADONGYM_BEAUTY3": { + "asm": true, + "label": "CeladonGymBeauty3Text" + }, + "TEXT_CELADONGYM_COOLTRAINER_F1": { + "asm": true, + "label": "CeladonGymCooltrainerF1Text" + }, + "TEXT_CELADONGYM_COOLTRAINER_F2": { + "asm": true, + "label": "CeladonGymCooltrainerF2Text" + }, + "TEXT_CELADONGYM_COOLTRAINER_F3": { + "asm": true, + "label": "CeladonGymCooltrainerF3Text" + }, + "TEXT_CELADONGYM_COOLTRAINER_F4": { + "asm": true, + "label": "CeladonGymCooltrainerF4Text" + }, + "TEXT_CELADONGYM_ERIKA": { + "asm": true, + "label": "CeladonGymErikaText", + "text": "_CeladonGymErikaPreBattleText" + }, + "TEXT_CELADONGYM_RAINBOWBADGE_INFO": { + "label": "CeladonGymRainbowBadgeInfoText", + "text": "_CeladonGymRainbowBadgeInfoText" + }, + "TEXT_CELADONGYM_RECEIVED_TM21": { + "label": "CeladonGymReceivedTM21Text", + "text": "_CeladonGymReceivedTM21Text" + }, + "TEXT_CELADONGYM_TM21_NO_ROOM": { + "label": "CeladonGymTM21NoRoomText", + "text": "_CeladonGymTM21NoRoomText" + } + }, + "CeladonHotel": { + "TEXT_CELADONHOTEL_BEAUTY": { + "label": "CeladonHotelBeautyText", + "text": "_CeladonHotelBeautyText" + }, + "TEXT_CELADONHOTEL_GRANNY": { + "label": "CeladonHotelGrannyText", + "text": "_CeladonHotelGrannyText" + }, + "TEXT_CELADONHOTEL_SUPER_NERD": { + "label": "CeladonHotelSuperNerdText", + "text": "_CeladonHotelSuperNerdText" + } + }, + "CeladonMansion1F": { + "TEXT_CELADONMANSION1F_CLEFAIRY": { + "asm": true, + "label": "CeladonMansion1FClefairyText", + "text": "_CeladonMansion1FClefairyText" + }, + "TEXT_CELADONMANSION1F_GRANNY": { + "asm": true, + "label": "CeladonMansion1FGrannyText" + }, + "TEXT_CELADONMANSION1F_MANAGERS_SUITE_SIGN": { + "label": "CeladonMansion1FManagersSuiteSignText", + "text": "_CeladonMansion1FManagersSuiteSignText" + }, + "TEXT_CELADONMANSION1F_MEOWTH": { + "asm": true, + "label": "CeladonMansion1FMeowthText", + "text": "_CeladonMansion1FMeowthText" + }, + "TEXT_CELADONMANSION1F_NIDORANF": { + "asm": true, + "label": "CeladonMansion1FNidoranFText", + "text": "_CeladonMansion1FNidoranFText" + } + }, + "CeladonMansion2F": { + "TEXT_CELADONMANSION2F_MEETING_ROOM_SIGN": { + "label": "CeladonMansion2FMeetingRoomSignText", + "text": "_CeladonMansion2FMeetingRoomSignText" + } + }, + "CeladonMansion3F": { + "TEXT_CELADONMANSION3F_DEV_ROOM_SIGN": { + "asm": true, + "label": "CeladonMansion3FDevRoomSignText" + }, + "TEXT_CELADONMANSION3F_GAME_DESIGNER": { + "asm": true, + "label": "CeladonMansion3FGameDesignerText", + "text": "_CeladonMansion3FGameDesignerText" + }, + "TEXT_CELADONMANSION3F_GAME_PROGRAM_PC": { + "asm": true, + "label": "CeladonMansion3FGameProgramPCText" + }, + "TEXT_CELADONMANSION3F_GAME_SCRIPT_PC": { + "asm": true, + "label": "CeladonMansion3FGameScriptPCText" + }, + "TEXT_CELADONMANSION3F_GRAPHIC_ARTIST": { + "asm": true, + "label": "CeladonMansion3FGraphicArtistText", + "text": "_CeladonMansion3FGraphicArtistText" + }, + "TEXT_CELADONMANSION3F_PLAYING_GAME_PC": { + "asm": true, + "label": "CeladonMansion3FPlayingGamePCText" + }, + "TEXT_CELADONMANSION3F_PROGRAMMER": { + "asm": true, + "label": "CeladonMansion3FProgrammerText" + }, + "TEXT_CELADONMANSION3F_WRITER": { + "asm": true, + "label": "CeladonMansion3FWriterText", + "text": "_CeladonMansion3FWriterText" + } + }, + "CeladonMansionRoof": { + "TEXT_CELADONMANSIONROOF_HOUSE_SIGN": { + "label": "CeladonMansionRoofHouseSignText", + "text": "_CeladonMansionRoofHouseSignText" + } + }, + "CeladonMansionRoofHouse": { + "TEXT_CELADONMANSION_ROOF_HOUSE_EEVEE_POKEBALL": { + "asm": true, + "label": "CeladonMansionRoofHouseEeveePokeballText" + }, + "TEXT_CELADONMANSION_ROOF_HOUSE_HIKER": { + "label": "CeladonMansionRoofHouseHikerText", + "text": "_CeladonMansionRoofHouseHikerText" + } + }, + "CeladonMart1F": { + "TEXT_CELADONMART1F_CURRENT_FLOOR_SIGN": { + "label": "CeladonMart1FCurrentFloorSignText", + "text": "_CeladonMart1FCurrentFloorSignText" + }, + "TEXT_CELADONMART1F_DIRECTORY_SIGN": { + "label": "CeladonMart1FDirectorySignText", + "text": "_CeladonMart1FDirectorySignText" + }, + "TEXT_CELADONMART1F_RECEPTIONIST": { + "label": "CeladonMart1FReceptionistText", + "text": "_CeladonMart1FReceptionistText" + } + }, + "CeladonMart2F": { + "TEXT_CELADONMART2F_CLERK1": { + "label": "CeladonMart2FClerk1Text", + "mart": [ + "GREAT_BALL", + "SUPER_POTION", + "REVIVE", + "SUPER_REPEL", + "ANTIDOTE", + "BURN_HEAL", + "ICE_HEAL", + "AWAKENING", + "PARLYZ_HEAL" + ] + }, + "TEXT_CELADONMART2F_CLERK2": { + "label": "CeladonMart2FClerk2Text", + "mart": [ + "TM_DOUBLE_TEAM", + "TM_REFLECT", + "TM_RAZOR_WIND", + "TM_HORN_DRILL", + "TM_EGG_BOMB", + "TM_MEGA_PUNCH", + "TM_MEGA_KICK", + "TM_TAKE_DOWN", + "TM_SUBMISSION" + ] + }, + "TEXT_CELADONMART2F_CURRENT_FLOOR_SIGN": { + "label": "CeladonMart2FCurrentFloorSignText", + "text": "_CeladonMart2FCurrentFloorSignText" + }, + "TEXT_CELADONMART2F_GIRL": { + "label": "CeladonMart2FGirlText", + "text": "_CeladonMart2FGirlText" + }, + "TEXT_CELADONMART2F_MIDDLE_AGED_MAN": { + "label": "CeladonMart2FMiddleAgedManText", + "text": "_CeladonMart2FMiddleAgedManText" + } + }, + "CeladonMart3F": { + "TEXT_CELADONMART3F_CLERK": { + "asm": true, + "label": "CeladonMart3FClerkText" + }, + "TEXT_CELADONMART3F_CURRENT_FLOOR_SIGN": { + "label": "CeladonMart3FCurrentFloorSignText", + "text": "_CeladonMart3FCurrentFloorSignText" + }, + "TEXT_CELADONMART3F_FIGHTING_GAME": { + "label": "CeladonMart3FFightingGameText", + "text": "_CeladonMart3FFightingGameText" + }, + "TEXT_CELADONMART3F_GAMEBOY_KID1": { + "label": "CeladonMart3FGameBoyKid1Text", + "text": "_CeladonMart3FGameBoyKid1Text" + }, + "TEXT_CELADONMART3F_GAMEBOY_KID2": { + "label": "CeladonMart3FGameBoyKid2Text", + "text": "_CeladonMart3FGameBoyKid2Text" + }, + "TEXT_CELADONMART3F_GAMEBOY_KID3": { + "label": "CeladonMart3FGameBoyKid3Text", + "text": "_CeladonMart3FGameBoyKid3Text" + }, + "TEXT_CELADONMART3F_LITTLE_BOY": { + "label": "CeladonMart3FLittleBoyText", + "text": "_CeladonMart3FLittleBoyText" + }, + "TEXT_CELADONMART3F_POKEMON_POSTER1": { + "label": "CeladonMart3FPokemonPosterText", + "text": "_CeladonMart3FPokemonPosterText" + }, + "TEXT_CELADONMART3F_POKEMON_POSTER2": { + "label": "CeladonMart3FPokemonPosterText", + "text": "_CeladonMart3FPokemonPosterText" + }, + "TEXT_CELADONMART3F_POKEMON_POSTER3": { + "label": "CeladonMart3FPokemonPosterText", + "text": "_CeladonMart3FPokemonPosterText" + }, + "TEXT_CELADONMART3F_PUZZLE_GAME": { + "label": "CeladonMart3FPuzzleGameText", + "text": "_CeladonMart3FPuzzleGameText" + }, + "TEXT_CELADONMART3F_RPG": { + "label": "CeladonMart3FRPGText", + "text": "_CeladonMart3FRPGText" + }, + "TEXT_CELADONMART3F_SNES1": { + "label": "CeladonMart3FSNESText", + "text": "_CeladonMart3FSNESText" + }, + "TEXT_CELADONMART3F_SNES2": { + "label": "CeladonMart3FSNESText", + "text": "_CeladonMart3FSNESText" + }, + "TEXT_CELADONMART3F_SNES3": { + "label": "CeladonMart3FSNESText", + "text": "_CeladonMart3FSNESText" + }, + "TEXT_CELADONMART3F_SNES4": { + "label": "CeladonMart3FSNESText", + "text": "_CeladonMart3FSNESText" + }, + "TEXT_CELADONMART3F_SPORTS_GAME": { + "label": "CeladonMart3FSportsGameText", + "text": "_CeladonMart3FSportsGameText" + } + }, + "CeladonMart4F": { + "TEXT_CELADONMART4F_CLERK": { + "label": "CeladonMart4FClerkText", + "mart": [ + "POKE_DOLL", + "FIRE_STONE", + "THUNDER_STONE", + "WATER_STONE", + "LEAF_STONE" + ] + }, + "TEXT_CELADONMART4F_CURRENT_FLOOR_SIGN": { + "label": "CeladonMart4FCurrentFloorSignText", + "text": "_CeladonMart4FCurrentFloorSignText" + }, + "TEXT_CELADONMART4F_SUPER_NERD": { + "label": "CeladonMart4FSuperNerdText", + "text": "_CeladonMart4FSuperNerdText" + }, + "TEXT_CELADONMART4F_YOUNGSTER": { + "label": "CeladonMart4FYoungsterText", + "text": "_CeladonMart4FYoungsterText" + } + }, + "CeladonMart5F": { + "TEXT_CELADONMART5F_CLERK1": { + "label": "CeladonMart5FClerk1Text", + "mart": [ + "X_ACCURACY", + "GUARD_SPEC", + "DIRE_HIT", + "X_ATTACK", + "X_DEFEND", + "X_SPEED", + "X_SPECIAL" + ] + }, + "TEXT_CELADONMART5F_CLERK2": { + "label": "CeladonMart5FClerk2Text", + "mart": [ + "HP_UP", + "PROTEIN", + "IRON", + "CARBOS", + "CALCIUM" + ] + }, + "TEXT_CELADONMART5F_CURRENT_FLOOR_SIGN": { + "label": "CeladonMart5FCurrentFloorSignText", + "text": "_CeladonMart5FCurrentFloorSignText" + }, + "TEXT_CELADONMART5F_GENTLEMAN": { + "label": "CeladonMart5FGentlemanText", + "text": "_CeladonMart5FGentlemanText" + }, + "TEXT_CELADONMART5F_SAILOR": { + "label": "CeladonMart5FSailorText", + "text": "_CeladonMart5FSailorText" + } + }, + "CeladonMartElevator": { + "TEXT_CELADONMARTELEVATOR": { + "asm": true, + "label": "CeladonMartElevatorText" + } + }, + "CeladonMartRoof": { + "TEXT_CELADONMARTROOF_CURRENT_FLOOR_SIGN": { + "label": "CeladonMartRoofCurrentFloorSignText", + "text": "_CeladonMartRoofCurrentFloorSignText" + }, + "TEXT_CELADONMARTROOF_LITTLE_GIRL": { + "asm": true, + "label": "CeladonMartRoofLittleGirlText", + "text": "_CeladonMartRoofLittleGirlImThirstyText" + }, + "TEXT_CELADONMARTROOF_SUPER_NERD": { + "label": "CeladonMartRoofSuperNerdText", + "text": "_CeladonMartRoofSuperNerdText" + }, + "TEXT_CELADONMARTROOF_VENDING_MACHINE1": { + "label": "CeladonMartRoofVendingMachineText" + }, + "TEXT_CELADONMARTROOF_VENDING_MACHINE2": { + "label": "CeladonMartRoofVendingMachineText" + }, + "TEXT_CELADONMARTROOF_VENDING_MACHINE3": { + "label": "CeladonMartRoofVendingMachineText" + } + }, + "CeladonPokecenter": { + "TEXT_CELADONPOKECENTER_BEAUTY": { + "label": "CeladonPokecenterBeautyText", + "text": "_CeladonPokecenterBeautyText" + }, + "TEXT_CELADONPOKECENTER_CHANSEY": { + "asm": true, + "label": "CeladonPokecenterChanseyText" + }, + "TEXT_CELADONPOKECENTER_GENTLEMAN": { + "label": "CeladonPokecenterGentlemanText", + "text": "_CeladonPokecenterGentlemanText" + }, + "TEXT_CELADONPOKECENTER_LINK_RECEPTIONIST": { + "cableClub": true, + "label": "CeladonPokecenterLinkReceptionistText" + }, + "TEXT_CELADONPOKECENTER_NURSE": { + "label": "CeladonPokecenterNurseText", + "nurse": true + } + }, + "CeruleanBadgeHouse": { + "TEXT_CERULEANBADGEHOUSE_MIDDLE_AGED_MAN": { + "asm": true, + "label": "CeruleanBadgeHouseMiddleAgedManText", + "text": "_CeruleanBadgeHouseMiddleAgedManText" + } + }, + "CeruleanCave1F": { + "TEXT_CERULEANCAVE1F_MAX_ELIXER": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_CERULEANCAVE1F_MAX_REVIVE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_CERULEANCAVE1F_RARE_CANDY": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_CERULEANCAVE1F_ULTRA_BALL": { + "asm": true, + "label": "PickUpItemText" + } + }, + "CeruleanCave2F": { + "TEXT_CERULEANCAVE2F_FULL_RESTORE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_CERULEANCAVE2F_MAX_REVIVE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_CERULEANCAVE2F_RARE_CANDY": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_CERULEANCAVE2F_ULTRA_BALL": { + "asm": true, + "label": "PickUpItemText" + } + }, + "CeruleanCaveB1F": { + "TEXT_CERULEANCAVEB1F_MAX_ELIXER": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_CERULEANCAVEB1F_MAX_REVIVE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_CERULEANCAVEB1F_MEWTWO": { + "asm": true, + "label": "CeruleanCaveB1FMewtwoText" + }, + "TEXT_CERULEANCAVEB1F_ULTRA_BALL1": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_CERULEANCAVEB1F_ULTRA_BALL2": { + "asm": true, + "label": "PickUpItemText" + } + }, + "CeruleanCity": { + "TEXT_CERULEANCITY_BIKESHOP_SIGN": { + "label": "CeruleanCityBikeShopSign", + "text": "_CeruleanCityBikeShopSign" + }, + "TEXT_CERULEANCITY_COOLTRAINER_F1": { + "asm": true, + "label": "CeruleanCityCooltrainerF1Text", + "text": "_CeruleanCityCooltrainerF1ElectrodeUseSonicboomText" + }, + "TEXT_CERULEANCITY_COOLTRAINER_F2": { + "label": "CeruleanCityCooltrainerF2Text", + "text": "_CeruleanCityCooltrainerF2Text" + }, + "TEXT_CERULEANCITY_COOLTRAINER_M": { + "label": "CeruleanCityCooltrainerMText", + "text": "_CeruleanCityCooltrainerMText" + }, + "TEXT_CERULEANCITY_ELECTRODE": { + "asm": true, + "label": "CeruleanCityElectrodeText", + "text": "_CeruleanCityElectrodeTookASnoozeText" + }, + "TEXT_CERULEANCITY_GUARD1": { + "label": "CeruleanCityGuardText", + "text": "_CeruleanCityGuardText" + }, + "TEXT_CERULEANCITY_GUARD2": { + "label": "CeruleanCityGuardText", + "text": "_CeruleanCityGuardText" + }, + "TEXT_CERULEANCITY_GYM_SIGN": { + "label": "CeruleanCityGymSign", + "text": "_CeruleanCityGymSign" + }, + "TEXT_CERULEANCITY_MART_SIGN": { + "asm": true, + "label": "MartSignText" + }, + "TEXT_CERULEANCITY_POKECENTER_SIGN": { + "asm": true, + "label": "PokeCenterSignText" + }, + "TEXT_CERULEANCITY_RIVAL": { + "asm": true, + "label": "CeruleanCityRivalText", + "text": "_CeruleanCityRivalPreBattleText" + }, + "TEXT_CERULEANCITY_ROCKET": { + "asm": true, + "label": "CeruleanCityRocketText", + "text": "_CeruleanCityRocketText" + }, + "TEXT_CERULEANCITY_SIGN": { + "label": "CeruleanCitySignText", + "text": "_CeruleanCitySignText" + }, + "TEXT_CERULEANCITY_SUPER_NERD1": { + "label": "CeruleanCitySuperNerd1Text", + "text": "_CeruleanCitySuperNerd1Text" + }, + "TEXT_CERULEANCITY_SUPER_NERD2": { + "label": "CeruleanCitySuperNerd2Text", + "text": "_CeruleanCitySuperNerd2Text" + }, + "TEXT_CERULEANCITY_SUPER_NERD3": { + "label": "CeruleanCitySuperNerd3Text", + "text": "_CeruleanCitySuperNerd3Text" + }, + "TEXT_CERULEANCITY_TRAINER_TIPS": { + "label": "CeruleanCityTrainerTipsText", + "text": "_CeruleanCityTrainerTipsText" + } + }, + "CeruleanGym": { + "TEXT_CERULEANGYM_COOLTRAINER_F": { + "asm": true, + "label": "CeruleanGymCooltrainerFText" + }, + "TEXT_CERULEANGYM_GYM_GUIDE": { + "asm": true, + "label": "CeruleanGymGymGuideText", + "text": "_CeruleanGymGymGuideChampInMakingText" + }, + "TEXT_CERULEANGYM_MISTY": { + "asm": true, + "label": "CeruleanGymMistyText", + "text": "_CeruleanGymMistyPreBattleText" + }, + "TEXT_CERULEANGYM_MISTY_CASCADE_BADGE_INFO": { + "label": "CeruleanGymMistyCascadeBadgeInfoText", + "text": "_CeruleanGymMistyCascadeBadgeInfoText" + }, + "TEXT_CERULEANGYM_MISTY_RECEIVED_TM11": { + "label": "CeruleanGymMistyReceivedTM11Text", + "text": "_CeruleanGymMistyReceivedTM11Text" + }, + "TEXT_CERULEANGYM_MISTY_TM11_NO_ROOM": { + "label": "CeruleanGymMistyTM11NoRoomText", + "text": "_CeruleanGymMistyTM11NoRoomText" + }, + "TEXT_CERULEANGYM_SWIMMER": { + "asm": true, + "label": "CeruleanGymSwimmerText" + } + }, + "CeruleanMart": { + "TEXT_CERULEANMART_CLERK": { + "label": "CeruleanMartClerkText", + "mart": [ + "POKE_BALL", + "POTION", + "ESCAPE_ROPE", + "REPEL", + "ANTIDOTE", + "BURN_HEAL", + "AWAKENING", + "PARLYZ_HEAL" + ] + }, + "TEXT_CERULEANMART_COOLTRAINER_F": { + "label": "CeruleanMartCooltrainerFText", + "text": "_CeruleanMartCooltrainerFText" + }, + "TEXT_CERULEANMART_COOLTRAINER_M": { + "label": "CeruleanMartCooltrainerMText", + "text": "_CeruleanMartCooltrainerMText" + } + }, + "CeruleanMelaniesHouse": { + "TEXT_CERULEANMELANIESHOUSE_BULBASAUR": { + "asm": true, + "label": "CeruleanMelanieHouseBulbasaurText", + "text": "MelanieBulbasaurText" + }, + "TEXT_CERULEANMELANIESHOUSE_MELANIE": { + "asm": true, + "label": "CeruleanMelanieHouseMelanieText" + }, + "TEXT_CERULEANMELANIESHOUSE_ODDISH": { + "asm": true, + "label": "CeruleanMelanieHouseOddishText", + "text": "MelanieOddishText" + }, + "TEXT_CERULEANMELANIESHOUSE_SANDSHREW": { + "asm": true, + "label": "CeruleanMelanieHouseSandshrewText", + "text": "MelanieSandshrewText" + } + }, + "CeruleanPokecenter": { + "TEXT_CERULEANPOKECENTER_CHANSEY": { + "asm": true, + "label": "CeruleanPokecenterChanseyText" + }, + "TEXT_CERULEANPOKECENTER_GENTLEMAN": { + "label": "CeruleanPokecenterGentlemanText", + "text": "_CeruleanPokecenterGentlemanText" + }, + "TEXT_CERULEANPOKECENTER_LINK_RECEPTIONIST": { + "cableClub": true, + "label": "CeruleanPokecenterLinkReceptionistText" + }, + "TEXT_CERULEANPOKECENTER_NURSE": { + "label": "CeruleanPokecenterNurseText", + "nurse": true + }, + "TEXT_CERULEANPOKECENTER_SUPER_NERD": { + "label": "CeruleanPokecenterSuperNerdText", + "text": "_CeruleanPokecenterSuperNerdText" + } + }, + "CeruleanTrashedHouse": { + "TEXT_CERULEANTRASHEDHOUSE_FISHING_GURU": { + "asm": true, + "label": "CeruleanTrashedHouseFishingGuruText", + "text": "_CeruleanTrashedHouseFishingGuruTheyStoleATMText" + }, + "TEXT_CERULEANTRASHEDHOUSE_GIRL": { + "label": "CeruleanTrashedHouseGirlText", + "text": "_CeruleanTrashedHouseGirlText" + }, + "TEXT_CERULEANTRASHEDHOUSE_WALL_HOLE": { + "label": "CeruleanTrashedHouseWallHoleText", + "text": "_CeruleanTrashedHouseWallHoleText" + } + }, + "ChampionsRoom": { + "TEXT_CHAMPIONSROOM_OAK": { + "label": "ChampionsRoomOakText", + "text": "_ChampionsRoomOakText" + }, + "TEXT_CHAMPIONSROOM_OAK_COME_WITH_ME": { + "label": "ChampionsRoomOakComeWithMeText", + "text": "_ChampionsRoomOakComeWithMeText" + }, + "TEXT_CHAMPIONSROOM_OAK_CONGRATULATES_PLAYER": { + "asm": true, + "label": "ChampionsRoomOakCongratulatesPlayerText", + "text": "_ChampionsRoomOakCongratulatesPlayerText" + }, + "TEXT_CHAMPIONSROOM_OAK_DISAPPOINTED_WITH_RIVAL": { + "label": "ChampionsRoomOakDisappointedWithRivalText", + "text": "_ChampionsRoomOakDisappointedWithRivalText" + }, + "TEXT_CHAMPIONSROOM_RIVAL": { + "asm": true, + "label": "ChampionsRoomRivalText", + "text": "_ChampionsRoomRivalIntroText" + } + }, + "CinnabarGym": { + "TEXT_CINNABARGYM_BLAINE": { + "asm": true, + "label": "CinnabarGymBlaineText", + "text": "_CinnabarGymBlainePreBattleText" + }, + "TEXT_CINNABARGYM_BLAINE_RECEIVED_TM38": { + "label": "CinnabarGymBlaineReceivedTM38Text", + "text": "_CinnabarGymBlaineReceivedTM38Text" + }, + "TEXT_CINNABARGYM_BLAINE_TM38_NO_ROOM": { + "label": "CinnabarGymBlaineTM38NoRoomText", + "text": "_CinnabarGymBlaineTM38NoRoomText" + }, + "TEXT_CINNABARGYM_BLAINE_VOLCANO_BADGE_INFO": { + "label": "CinnabarGymBlaineVolcanoBadgeInfoText", + "text": "_CinnabarGymBlaineVolcanoBadgeInfoText" + }, + "TEXT_CINNABARGYM_GYM_GUIDE": { + "asm": true, + "label": "CinnabarGymGymGuideText" + }, + "TEXT_CINNABARGYM_SUPER_NERD1": { + "asm": true, + "label": "CinnabarGymSuperNerd1", + "text": "_CinnabarGymSuperNerd1BattleText" + }, + "TEXT_CINNABARGYM_SUPER_NERD2": { + "asm": true, + "label": "CinnabarGymSuperNerd2", + "text": "_CinnabarGymSuperNerd2BattleText" + }, + "TEXT_CINNABARGYM_SUPER_NERD3": { + "asm": true, + "label": "CinnabarGymSuperNerd3", + "text": "_CinnabarGymSuperNerd3BattleText" + }, + "TEXT_CINNABARGYM_SUPER_NERD4": { + "asm": true, + "label": "CinnabarGymSuperNerd4", + "text": "_CinnabarGymSuperNerd4BattleText" + }, + "TEXT_CINNABARGYM_SUPER_NERD5": { + "asm": true, + "label": "CinnabarGymSuperNerd5", + "text": "_CinnabarGymSuperNerd5BattleText" + }, + "TEXT_CINNABARGYM_SUPER_NERD6": { + "asm": true, + "label": "CinnabarGymSuperNerd6", + "text": "_CinnabarGymSuperNerd6BattleText" + }, + "TEXT_CINNABARGYM_SUPER_NERD7": { + "asm": true, + "label": "CinnabarGymSuperNerd7", + "text": "_CinnabarGymSuperNerd7BattleText" + } + }, + "CinnabarIsland": { + "TEXT_CINNABARISLAND_DOOR_IS_LOCKED": { + "label": "CinnabarIslandDoorIsLockedText", + "text": "_CinnabarIslandDoorIsLockedText" + }, + "TEXT_CINNABARISLAND_GAMBLER": { + "label": "CinnabarIslandGamblerText", + "text": "_CinnabarIslandGamblerText" + }, + "TEXT_CINNABARISLAND_GIRL": { + "label": "CinnabarIslandGirlText", + "text": "_CinnabarIslandGirlText" + }, + "TEXT_CINNABARISLAND_GYM_SIGN": { + "label": "CinnabarIslandGymSignText", + "text": "_CinnabarIslandGymSignText" + }, + "TEXT_CINNABARISLAND_MART_SIGN": { + "asm": true, + "label": "MartSignText" + }, + "TEXT_CINNABARISLAND_POKECENTER_SIGN": { + "asm": true, + "label": "PokeCenterSignText" + }, + "TEXT_CINNABARISLAND_POKEMONLAB_SIGN": { + "label": "CinnabarIslandPokemonLabSignText", + "text": "_CinnabarIslandPokemonLabSignText" + }, + "TEXT_CINNABARISLAND_SIGN": { + "label": "CinnabarIslandSignText", + "text": "_CinnabarIslandSignText" + } + }, + "CinnabarLab": { + "TEXT_CINNABARLAB_FISHING_GURU": { + "label": "CinnabarLabFishingGuruText", + "text": "_CinnabarLabFishingGuruText" + }, + "TEXT_CINNABARLAB_MEETING_ROOM_SIGN": { + "label": "CinnabarLabMeetingRoomSignText", + "text": "_CinnabarLabMeetingRoomSignText" + }, + "TEXT_CINNABARLAB_PHOTO": { + "label": "CinnabarLabPhotoText", + "text": "_CinnabarLabPhotoText" + }, + "TEXT_CINNABARLAB_R_AND_D_SIGN": { + "label": "CinnabarLabRAndDSignText", + "text": "_CinnabarLabRAndDSignText" + }, + "TEXT_CINNABARLAB_TESTING_ROOM_SIGN": { + "label": "CinnabarLabTestingRoomSignText", + "text": "_CinnabarLabTestingRoomSignText" + } + }, + "CinnabarLabFossilRoom": { + "TEXT_CINNABARLABFOSSILROOM_SCIENTIST1": { + "asm": true, + "label": "CinnabarLabFossilRoomScientist1Text", + "text": "_CinnabarLabFossilRoomScientist1Text" + }, + "TEXT_CINNABARLABFOSSILROOM_SCIENTIST2": { + "asm": true, + "label": "CinnabarLabFossilRoomScientist2Text" + } + }, + "CinnabarLabMetronomeRoom": { + "TEXT_CINNABARLABMETRONOMEROOM_AMBER_PIPE": { + "label": "CinnabarLabMetronomeRoomAmberPipeText", + "text": "_CinnabarLabMetronomeRoomAmberPipeText" + }, + "TEXT_CINNABARLABMETRONOMEROOM_PC_KEYBOARD": { + "label": "CinnabarLabMetronomeRoomPCText", + "text": "_CinnabarLabMetronomeRoomPCText" + }, + "TEXT_CINNABARLABMETRONOMEROOM_PC_MONITOR": { + "label": "CinnabarLabMetronomeRoomPCText", + "text": "_CinnabarLabMetronomeRoomPCText" + }, + "TEXT_CINNABARLABMETRONOMEROOM_SCIENTIST1": { + "asm": true, + "label": "CinnabarLabMetronomeRoomScientist1Text", + "text": "_CinnabarLabMetronomeRoomScientist1Text" + }, + "TEXT_CINNABARLABMETRONOMEROOM_SCIENTIST2": { + "label": "CinnabarLabMetronomeRoomScientist2Text", + "text": "_CinnabarLabMetronomeRoomScientist2Text" + } + }, + "CinnabarLabTradeRoom": { + "TEXT_CINNABARLABTRADEROOM_BEAUTY": { + "asm": true, + "label": "CinnabarLabTradeRoomBeautyText" + }, + "TEXT_CINNABARLABTRADEROOM_GRAMPS": { + "asm": true, + "label": "CinnabarLabTradeRoomGrampsText" + }, + "TEXT_CINNABARLABTRADEROOM_SUPER_NERD": { + "label": "CinnabarLabTradeRoomSuperNerdText", + "text": "_CinnabarLabTradeRoomSuperNerdText" + } + }, + "CinnabarMart": { + "TEXT_CINNABARMART_CLERK": { + "label": "CinnabarMartClerkText", + "mart": [ + "ULTRA_BALL", + "GREAT_BALL", + "HYPER_POTION", + "MAX_REPEL", + "ESCAPE_ROPE", + "FULL_HEAL", + "REVIVE" + ] + }, + "TEXT_CINNABARMART_SCIENTIST": { + "label": "CinnabarMartScientistText", + "text": "_CinnabarMartScientistText" + }, + "TEXT_CINNABARMART_SILPH_WORKER_F": { + "label": "CinnabarMartSilphWorkerFText", + "text": "_CinnabarMartSilphWorkerFText" + } + }, + "CinnabarPokecenter": { + "TEXT_CINNABARPOKECENTER_CHANSEY": { + "asm": true, + "label": "CinnabarPokecenterChanseyText" + }, + "TEXT_CINNABARPOKECENTER_COOLTRAINER_F": { + "label": "CinnabarPokecenterCooltrainerFText", + "text": "_CinnabarPokecenterCooltrainerFText" + }, + "TEXT_CINNABARPOKECENTER_GENTLEMAN": { + "label": "CinnabarPokecenterGentlemanText", + "text": "_CinnabarPokecenterGentlemanText" + }, + "TEXT_CINNABARPOKECENTER_LINK_RECEPTIONIST": { + "cableClub": true, + "label": "CinnabarPokecenterLinkReceptionistText" + }, + "TEXT_CINNABARPOKECENTER_NURSE": { + "label": "CinnabarPokecenterNurseText", + "nurse": true + } + }, + "Colosseum": { + "TEXT_COLOSSEUM_OPPONENT": { + "label": "ColosseumOpponentText", + "text": "_ColosseumOpponentText" + } + }, + "CopycatsHouse1F": { + "TEXT_COPYCATSHOUSE1F_CHANSEY": { + "asm": true, + "label": "CopycatsHouse1FChanseyText", + "text": "_CopycatsHouse1FChanseyText" + }, + "TEXT_COPYCATSHOUSE1F_MIDDLE_AGED_MAN": { + "label": "CopycatsHouse1FMiddleAgedManText", + "text": "_CopycatsHouse1FMiddleAgedManText" + }, + "TEXT_COPYCATSHOUSE1F_MIDDLE_AGED_WOMAN": { + "label": "CopycatsHouse1FMiddleAgedWomanText", + "text": "_CopycatsHouse1FMiddleAgedWomanText" + } + }, + "CopycatsHouse2F": { + "TEXT_COPYCATSHOUSE2F_BIRD": { + "label": "CopycatsHouse2FRareDollText", + "text": "_CopycatsHouse2FRareDollText" + }, + "TEXT_COPYCATSHOUSE2F_COPYCAT": { + "asm": true, + "label": "CopycatsHouse2FCopycatText", + "text": "_CopycatsHouse2FCopycatDoYouLikePokemonText" + }, + "TEXT_COPYCATSHOUSE2F_DODUO": { + "label": "CopycatsHouse2FDoduoText", + "text": "_CopycatsHouse2FDoduoText" + }, + "TEXT_COPYCATSHOUSE2F_FAIRY": { + "label": "CopycatsHouse2FRareDollText", + "text": "_CopycatsHouse2FRareDollText" + }, + "TEXT_COPYCATSHOUSE2F_MONSTER": { + "label": "CopycatsHouse2FRareDollText", + "text": "_CopycatsHouse2FRareDollText" + }, + "TEXT_COPYCATSHOUSE2F_PC": { + "asm": true, + "label": "CopycatsHouse2FPCText", + "text": "_CopycatsHouse2FPCMySecretsText" + }, + "TEXT_COPYCATSHOUSE2F_SNES": { + "label": "CopycatsHouse2FSNESText", + "text": "_CopycatsHouse2FSNESText" + } + }, + "Daycare": { + "TEXT_DAYCARE_GENTLEMAN": { + "asm": true, + "label": "DaycareGentlemanText", + "text": "_DaycareGentlemanIntroText" + } + }, + "DiglettsCaveRoute11": { + "TEXT_DIGLETTSCAVEROUTE11_GAMBLER": { + "label": "DiglettsCaveRoute11GamblerText", + "text": "_DiglettsCaveRoute11GamblerText" + } + }, + "DiglettsCaveRoute2": { + "TEXT_DIGLETTSCAVEROUTE2_FISHING_GURU": { + "label": "DiglettsCaveRoute2FishingGuruText", + "text": "_DiglettsCaveRoute2FishingGuruText" + } + }, + "FightingDojo": { + "TEXT_FIGHTINGDOJO_BLACKBELT1": { + "asm": true, + "label": "FightingDojoBlackbelt1Text" + }, + "TEXT_FIGHTINGDOJO_BLACKBELT2": { + "asm": true, + "label": "FightingDojoBlackbelt2Text" + }, + "TEXT_FIGHTINGDOJO_BLACKBELT3": { + "asm": true, + "label": "FightingDojoBlackbelt3Text" + }, + "TEXT_FIGHTINGDOJO_BLACKBELT4": { + "asm": true, + "label": "FightingDojoBlackbelt4Text" + }, + "TEXT_FIGHTINGDOJO_HITMONCHAN_POKE_BALL": { + "asm": true, + "label": "FightingDojoHitmonchanPokeBallText", + "text": "_FightingDojoHitmonchanPokeBallText" + }, + "TEXT_FIGHTINGDOJO_HITMONLEE_POKE_BALL": { + "asm": true, + "label": "FightingDojoHitmonleePokeBallText", + "text": "_FightingDojoHitmonleePokeBallText" + }, + "TEXT_FIGHTINGDOJO_KARATE_MASTER": { + "asm": true, + "label": "FightingDojoKarateMasterText", + "text": "_FightingDojoKarateMasterText" + } + }, + "FuchsiaBillsGrandpasHouse": { + "TEXT_FUCHSIABILLSGRANDPASHOUSE_BILLS_GRANDPA": { + "label": "FuchsiaBillsGrandpasHouseBillsGrandpaText", + "text": "_FuchsiaBillsGrandpasHouseBillsGrandpaText" + }, + "TEXT_FUCHSIABILLSGRANDPASHOUSE_MIDDLE_AGED_WOMAN": { + "label": "FuchsiaBillsGrandpasHouseMiddleAgedWomanText", + "text": "_FuchsiaBillsGrandpasHouseMiddleAgedWomanText" + }, + "TEXT_FUCHSIABILLSGRANDPASHOUSE_YOUNGSTER": { + "label": "FuchsiaBillsGrandpasHouseYoungsterText", + "text": "_FuchsiaBillsGrandpasHouseYoungsterText" + } + }, + "FuchsiaCity": { + "TEXT_FUCHSIACITY_CHANSEY": { + "label": "FuchsiaCityPokemonText", + "text": "_FuchsiaCityPokemonText" + }, + "TEXT_FUCHSIACITY_CHANSEY_SIGN": { + "asm": true, + "label": "FuchsiaCityChanseySignText", + "text": "_FuchsiaCityChanseySignText" + }, + "TEXT_FUCHSIACITY_ERIK": { + "label": "FuchsiaCityErikText", + "text": "_FuchsiaCityErikText" + }, + "TEXT_FUCHSIACITY_FOSSIL": { + "label": "FuchsiaCityPokemonText", + "text": "_FuchsiaCityPokemonText" + }, + "TEXT_FUCHSIACITY_FOSSIL_SIGN": { + "asm": true, + "label": "FuchsiaCityFossilSignText", + "text": "_FuchsiaCityFossilSignOmanyteText" + }, + "TEXT_FUCHSIACITY_GAMBLER": { + "label": "FuchsiaCityGamblerText", + "text": "_FuchsiaCityGamblerText" + }, + "TEXT_FUCHSIACITY_GYM_SIGN": { + "label": "FuchsiaCityGymSignText", + "text": "_FuchsiaCityGymSignText" + }, + "TEXT_FUCHSIACITY_KANGASKHAN": { + "label": "FuchsiaCityPokemonText", + "text": "_FuchsiaCityPokemonText" + }, + "TEXT_FUCHSIACITY_KANGASKHAN_SIGN": { + "asm": true, + "label": "FuchsiaCityKangaskhanSignText", + "text": "_FuchsiaCityKangaskhanSignText" + }, + "TEXT_FUCHSIACITY_LAPRAS": { + "label": "FuchsiaCityPokemonText", + "text": "_FuchsiaCityPokemonText" + }, + "TEXT_FUCHSIACITY_LAPRAS_SIGN": { + "asm": true, + "label": "FuchsiaCityLaprasSignText", + "text": "_FuchsiaCityLaprasSignText" + }, + "TEXT_FUCHSIACITY_MART_SIGN": { + "asm": true, + "label": "MartSignText" + }, + "TEXT_FUCHSIACITY_POKECENTER_SIGN": { + "asm": true, + "label": "PokeCenterSignText" + }, + "TEXT_FUCHSIACITY_SAFARI_GAME_SIGN": { + "label": "FuchsiaCitySafariGameSignText", + "text": "_FuchsiaCitySafariGameSignText" + }, + "TEXT_FUCHSIACITY_SAFARI_ZONE_SIGN": { + "label": "FuchsiaCitySafariZoneSignText", + "text": "_FuchsiaCitySafariZoneSignText" + }, + "TEXT_FUCHSIACITY_SIGN1": { + "label": "FuchsiaCitySignText", + "text": "_FuchsiaCitySignText" + }, + "TEXT_FUCHSIACITY_SIGN2": { + "label": "FuchsiaCitySignText", + "text": "_FuchsiaCitySignText" + }, + "TEXT_FUCHSIACITY_SLOWPOKE": { + "label": "FuchsiaCityPokemonText", + "text": "_FuchsiaCityPokemonText" + }, + "TEXT_FUCHSIACITY_SLOWPOKE_SIGN": { + "asm": true, + "label": "FuchsiaCitySlowpokeSignText", + "text": "_FuchsiaCitySlowpokeSignText" + }, + "TEXT_FUCHSIACITY_VOLTORB": { + "label": "FuchsiaCityPokemonText", + "text": "_FuchsiaCityPokemonText" + }, + "TEXT_FUCHSIACITY_VOLTORB_SIGN": { + "asm": true, + "label": "FuchsiaCityVoltorbSignText", + "text": "_FuchsiaCityVoltorbSignText" + }, + "TEXT_FUCHSIACITY_WARDENS_HOME_SIGN": { + "label": "FuchsiaCityWardensHomeSignText", + "text": "_FuchsiaCityWardensHomeSignText" + }, + "TEXT_FUCHSIACITY_YOUNGSTER1": { + "label": "FuchsiaCityYoungster1Text", + "text": "_FuchsiaCityYoungster1Text" + }, + "TEXT_FUCHSIACITY_YOUNGSTER2": { + "label": "FuchsiaCityYoungster2Text", + "text": "_FuchsiaCityYoungster2Text" + } + }, + "FuchsiaGoodRodHouse": { + "TEXT_FUCHSIAGOODRODHOUSE_FISHING_GURU": { + "asm": true, + "label": "FuchsiaGoodRodHouseFishingGuruText", + "text": "_FuchsiaGoodRodHouseFishingGuruText" + } + }, + "FuchsiaGym": { + "TEXT_FUCHSIAGYM_GYM_GUIDE": { + "asm": true, + "label": "FuchsiaGymGymGuideText", + "text": "_FuchsiaGymGymGuideChampInMakingText" + }, + "TEXT_FUCHSIAGYM_KOGA": { + "asm": true, + "label": "FuchsiaGymKogaText", + "text": "_FuchsiaGymKogaBeforeBattleText" + }, + "TEXT_FUCHSIAGYM_KOGA_RECEIVED_TM06": { + "label": "FuchsiaGymKogaReceivedTM06Text", + "text": "_FuchsiaGymKogaReceivedTM06Text" + }, + "TEXT_FUCHSIAGYM_KOGA_SOUL_BADGE_INFO": { + "label": "FuchsiaGymKogaSoulBadgeInfoText", + "text": "_FuchsiaGymKogaSoulBadgeInfoText" + }, + "TEXT_FUCHSIAGYM_KOGA_TM06_NO_ROOM": { + "label": "FuchsiaGymKogaTM06NoRoomText", + "text": "_FuchsiaGymKogaTM06NoRoomText" + }, + "TEXT_FUCHSIAGYM_ROCKER1": { + "asm": true, + "label": "FuchsiaGymRocker1Text" + }, + "TEXT_FUCHSIAGYM_ROCKER2": { + "asm": true, + "label": "FuchsiaGymRocker2Text" + }, + "TEXT_FUCHSIAGYM_ROCKER3": { + "asm": true, + "label": "FuchsiaGymRocker3Text" + }, + "TEXT_FUCHSIAGYM_ROCKER4": { + "asm": true, + "label": "FuchsiaGymRocker4Text" + }, + "TEXT_FUCHSIAGYM_ROCKER5": { + "asm": true, + "label": "FuchsiaGymRocker5Text" + }, + "TEXT_FUCHSIAGYM_ROCKER6": { + "asm": true, + "label": "FuchsiaGymRocker6Text" + } + }, + "FuchsiaMart": { + "TEXT_FUCHSIAMART_CLERK": { + "label": "FuchsiaMartClerkText", + "mart": [ + "ULTRA_BALL", + "GREAT_BALL", + "HYPER_POTION", + "REVIVE", + "FULL_HEAL", + "SUPER_REPEL" + ] + }, + "TEXT_FUCHSIAMART_COOLTRAINER_F": { + "label": "FuchsiaMartCooltrainerFText", + "text": "_FuchsiaMartCooltrainerFText" + }, + "TEXT_FUCHSIAMART_MIDDLE_AGED_MAN": { + "label": "FuchsiaMartMiddleAgedManText", + "text": "_FuchsiaMartMiddleAgedManText" + } + }, + "FuchsiaMeetingRoom": { + "TEXT_FUCHSIAMEETINGROOM_SAFARI_ZONE_WORKER1": { + "label": "FuchsiaMeetingRoomSafariZoneWorker1", + "text": "_FuchsiaMeetingRoomSafariZoneWorker1" + }, + "TEXT_FUCHSIAMEETINGROOM_SAFARI_ZONE_WORKER2": { + "label": "FuchsiaMeetingRoomSafariZoneWorker2", + "text": "_FuchsiaMeetingRoomSafariZoneWorker2" + }, + "TEXT_FUCHSIAMEETINGROOM_SAFARI_ZONE_WORKER3": { + "label": "FuchsiaMeetingRoomSafariZoneWorker3", + "text": "_FuchsiaMeetingRoomSafariZoneWorker3" + } + }, + "FuchsiaPokecenter": { + "TEXT_FUCHSIAPOKECENTER_CHANSEY": { + "asm": true, + "label": "FuchsiaPokecenterChanseyText" + }, + "TEXT_FUCHSIAPOKECENTER_COOLTRAINER_F": { + "label": "FuchsiaPokecenterCooltrainerFText", + "text": "_FuchsiaPokecenterCooltrainerFText" + }, + "TEXT_FUCHSIAPOKECENTER_LINK_RECEPTIONIST": { + "cableClub": true, + "label": "FuchsiaPokecenterLinkReceptionistText" + }, + "TEXT_FUCHSIAPOKECENTER_NURSE": { + "label": "FuchsiaPokecenterNurseText", + "nurse": true + }, + "TEXT_FUCHSIAPOKECENTER_ROCKER": { + "label": "FuchsiaPokecenterRockerText", + "text": "_FuchsiaPokecenterRockerText" + } + }, + "GameCorner": { + "TEXT_GAMECORNER_BEAUTY1": { + "label": "GameCornerBeauty1Text", + "text": "_GameCornerBeauty1Text" + }, + "TEXT_GAMECORNER_BEAUTY2": { + "label": "GameCornerBeauty2Text", + "text": "_GameCornerBeauty2Text" + }, + "TEXT_GAMECORNER_CLERK": { + "asm": true, + "label": "GameCornerClerkText", + "text": "_GameCornerClerkDoYouNeedSomeGameCoinsText" + }, + "TEXT_GAMECORNER_FISHING_GURU1": { + "asm": true, + "label": "GameCornerFishingGuru1Text", + "text": "_GameCornerFishingGuru1WantToPlayText" + }, + "TEXT_GAMECORNER_FISHING_GURU2": { + "asm": true, + "label": "GameCornerFishingGuru2Text", + "text": "_GameCornerFishingGuru2ThrowingMeOffText" + }, + "TEXT_GAMECORNER_GAMBLER": { + "label": "GameCornerGamblerText", + "text": "_GameCornerGamblerText" + }, + "TEXT_GAMECORNER_GYM_GUIDE": { + "asm": true, + "label": "GameCornerGymGuideText" + }, + "TEXT_GAMECORNER_MIDDLE_AGED_MAN1": { + "label": "GameCornerMiddleAgedMan1Text", + "text": "_GameCornerMiddleAgedMan1Text" + }, + "TEXT_GAMECORNER_MIDDLE_AGED_MAN2": { + "asm": true, + "label": "GameCornerMiddleAgedMan2Text", + "text": "_GameCornerMiddleAgedMan2WantSomeCoinsText" + }, + "TEXT_GAMECORNER_MIDDLE_AGED_WOMAN": { + "label": "GameCornerMiddleAgedWomanText", + "text": "_GameCornerMiddleAgedWomanText" + }, + "TEXT_GAMECORNER_POSTER": { + "asm": true, + "label": "GameCornerPosterText", + "text": "_GameCornerPosterSwitchBehindPosterText" + }, + "TEXT_GAMECORNER_ROCKET": { + "asm": true, + "label": "GameCornerRocketText", + "text": "_GameCornerRocketImGuardingThisPosterText" + }, + "TEXT_GAMECORNER_ROCKET_AFTER_BATTLE": { + "label": "GameCornerRocketAfterBattleText", + "text": "_GameCornerRocketAfterBattleText" + } + }, + "GameCornerPrizeRoom": { + "TEXT_GAMECORNERPRIZEROOM_BALDING_GUY": { + "label": "GameCornerPrizeRoomBaldingGuyText", + "text": "_GameCornerPrizeRoomBaldingGuyText" + }, + "TEXT_GAMECORNERPRIZEROOM_GAMBLER": { + "label": "GameCornerPrizeRoomGamblerText", + "text": "_GameCornerPrizeRoomGamblerText" + }, + "TEXT_GAMECORNERPRIZEROOM_PRIZE_VENDOR_1": { + "label": "GameCornerPRizeRoomPrizeVendorText" + }, + "TEXT_GAMECORNERPRIZEROOM_PRIZE_VENDOR_2": { + "label": "GameCornerPRizeRoomPrizeVendorText" + }, + "TEXT_GAMECORNERPRIZEROOM_PRIZE_VENDOR_3": { + "label": "GameCornerPRizeRoomPrizeVendorText" + } + }, + "HallOfFame": { + "TEXT_HALLOFFAME_OAK": { + "label": "HallOfFameOakText", + "text": "_HallOfFameOakText" + } + }, + "IndigoPlateauLobby": { + "TEXT_INDIGOPLATEAULOBBY_CHANSEY": { + "asm": true, + "label": "IndigoPlateauLobbyChanseyText" + }, + "TEXT_INDIGOPLATEAULOBBY_CLERK": { + "label": "IndigoPlateauLobbyClerkText", + "mart": [ + "ULTRA_BALL", + "GREAT_BALL", + "FULL_RESTORE", + "MAX_POTION", + "FULL_HEAL", + "REVIVE", + "MAX_REPEL" + ] + }, + "TEXT_INDIGOPLATEAULOBBY_COOLTRAINER_F": { + "label": "IndigoPlateauLobbyCooltrainerFText", + "text": "_IndigoPlateauLobbyCooltrainerFText" + }, + "TEXT_INDIGOPLATEAULOBBY_GYM_GUIDE": { + "label": "IndigoPlateauLobbyGymGuideText", + "text": "_IndigoPlateauLobbyGymGuideText" + }, + "TEXT_INDIGOPLATEAULOBBY_LINK_RECEPTIONIST": { + "cableClub": true, + "label": "IndigoPlateauLobbyLinkReceptionistText" + }, + "TEXT_INDIGOPLATEAULOBBY_NURSE": { + "label": "IndigoPlateauLobbyNurseText", + "nurse": true + } + }, + "LancesRoom": { + "TEXT_LANCESROOM_LANCE": { + "asm": true, + "label": "LancesRoomLanceText" + } + }, + "LavenderCuboneHouse": { + "TEXT_LAVENDERCUBONEHOUSE_BRUNETTE_GIRL": { + "asm": true, + "label": "LavenderCuboneHouseBrunetteGirlText", + "text": "_LavenderCuboneHouseBrunetteGirlPoorCubonesMotherText" + }, + "TEXT_LAVENDERCUBONEHOUSE_CUBONE": { + "asm": true, + "label": "LavenderCuboneHouseCuboneText", + "text": "_LavenderCuboneHouseCuboneText" + } + }, + "LavenderMart": { + "TEXT_LAVENDERMART_BALDING_GUY": { + "label": "LavenderMartBaldingGuyText", + "text": "_LavenderMartBaldingGuyText" + }, + "TEXT_LAVENDERMART_CLERK": { + "label": "LavenderMartClerkText", + "mart": [ + "GREAT_BALL", + "SUPER_POTION", + "REVIVE", + "ESCAPE_ROPE", + "SUPER_REPEL", + "ANTIDOTE", + "BURN_HEAL", + "ICE_HEAL", + "PARLYZ_HEAL" + ] + }, + "TEXT_LAVENDERMART_COOLTRAINER_M": { + "asm": true, + "label": "LavenderMartCooltrainerMText", + "text": "_LavenderMartCooltrainerMReviveText" + } + }, + "LavenderPokecenter": { + "TEXT_LAVENDERPOKECENTER_CHANSEY": { + "asm": true, + "label": "LavenderPokecenterChanseyText" + }, + "TEXT_LAVENDERPOKECENTER_GENTLEMAN": { + "label": "LavenderPokecenterGentlemanText", + "text": "_LavenderPokecenterGentlemanText" + }, + "TEXT_LAVENDERPOKECENTER_LINK_RECEPTIONIST": { + "cableClub": true, + "label": "LavenderPokecenterLinkReceptionistText" + }, + "TEXT_LAVENDERPOKECENTER_LITTLE_GIRL": { + "label": "LavenderPokecenterLittleGirlText", + "text": "_LavenderPokecenterLittleGirlText" + }, + "TEXT_LAVENDERPOKECENTER_NURSE": { + "label": "LavenderPokecenterNurseText", + "nurse": true + } + }, + "LavenderTown": { + "TEXT_LAVENDERTOWN_COOLTRAINER_M": { + "label": "LavenderTownCooltrainerMText", + "text": "_LavenderTownCooltrainerMText" + }, + "TEXT_LAVENDERTOWN_LITTLE_GIRL": { + "asm": true, + "label": "LavenderTownLittleGirlText", + "text": "_LavenderTownLittleGirlDoYouBelieveInGhostsText" + }, + "TEXT_LAVENDERTOWN_MART_SIGN": { + "asm": true, + "label": "MartSignText" + }, + "TEXT_LAVENDERTOWN_POKECENTER_SIGN": { + "asm": true, + "label": "PokeCenterSignText" + }, + "TEXT_LAVENDERTOWN_POKEMON_HOUSE_SIGN": { + "label": "LavenderTownPokemonHouseSignText", + "text": "_LavenderTownPokemonHouseSignText" + }, + "TEXT_LAVENDERTOWN_POKEMON_TOWER_SIGN": { + "label": "LavenderTownPokemonTowerSignText", + "text": "_LavenderTownPokemonTowerSignText" + }, + "TEXT_LAVENDERTOWN_SIGN": { + "label": "LavenderTownSignText", + "text": "_LavenderTownSignText" + }, + "TEXT_LAVENDERTOWN_SILPH_SCOPE_SIGN": { + "label": "LavenderTownSilphScopeSignText", + "text": "_LavenderTownSilphScopeSignText" + }, + "TEXT_LAVENDERTOWN_SUPER_NERD": { + "label": "LavenderTownSuperNerdText", + "text": "_LavenderTownSuperNerdText" + } + }, + "LoreleisRoom": { + "TEXT_LORELEISROOM_DONT_RUN_AWAY": { + "label": "LoreleisRoomLoreleiDontRunAwayText", + "text": "_LoreleisRoomLoreleiDontRunAwayText" + }, + "TEXT_LORELEISROOM_LORELEI": { + "asm": true, + "label": "LoreleisRoomLoreleiText" + } + }, + "MrFujisHouse": { + "TEXT_MRFUJISHOUSE_LITTLE_GIRL": { + "asm": true, + "label": "MrFujisHouseLittleGirlText", + "text": "_MrFujisHouseLittleGirlThisIsMrFujisHouseText" + }, + "TEXT_MRFUJISHOUSE_MR_FUJI": { + "asm": true, + "label": "MrFujisHouseMrFujiText", + "text": "_MrFujisHouseMrFujiIThinkThisMayHelpYourQuestText" + }, + "TEXT_MRFUJISHOUSE_NIDORINO": { + "asm": true, + "label": "MrFujisHouseNidorinoText", + "text": "_MrFujisHouseNidorinoText" + }, + "TEXT_MRFUJISHOUSE_POKEDEX": { + "label": "MrFujisHouseMrFujiPokedexText", + "text": "_MrFujisHouseMrFujiPokedexText" + }, + "TEXT_MRFUJISHOUSE_PSYDUCK": { + "asm": true, + "label": "MrFujisHousePsyduckText", + "text": "_MrFujisHousePsyduckText" + }, + "TEXT_MRFUJISHOUSE_SUPER_NERD": { + "asm": true, + "label": "MrFujisHouseSuperNerdText", + "text": "_MrFujisHouseSuperNerdMrFujiIsntHereText" + } + }, + "MrPsychicsHouse": { + "TEXT_MRPSYCHICSHOUSE_MR_PSYCHIC": { + "asm": true, + "label": "MrPsychicsHouseMrPsychicText", + "text": "_MrPsychicsHouseMrPsychicYouWantedThisText" + } + }, + "MtMoon1F": { + "TEXT_MTMOON1F_BEWARE_ZUBAT_SIGN": { + "label": "MtMoon1FBewareZubatSign", + "text": "_MtMoon1FBewareZubatSign" + }, + "TEXT_MTMOON1F_COOLTRAINER_F1": { + "asm": true, + "label": "MtMoon1FCooltrainerF1Text" + }, + "TEXT_MTMOON1F_COOLTRAINER_F2": { + "asm": true, + "label": "MtMoon1FCooltrainerF2Text" + }, + "TEXT_MTMOON1F_ESCAPE_ROPE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_MTMOON1F_HIKER": { + "asm": true, + "label": "MtMoon1FHikerText" + }, + "TEXT_MTMOON1F_MOON_STONE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_MTMOON1F_POTION1": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_MTMOON1F_POTION2": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_MTMOON1F_RARE_CANDY": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_MTMOON1F_SUPER_NERD": { + "asm": true, + "label": "MtMoon1FSuperNerdText" + }, + "TEXT_MTMOON1F_TM_WATER_GUN": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_MTMOON1F_YOUNGSTER1": { + "asm": true, + "label": "MtMoon1FYoungster1Text" + }, + "TEXT_MTMOON1F_YOUNGSTER2": { + "asm": true, + "label": "MtMoon1FYoungster2Text" + }, + "TEXT_MTMOON1F_YOUNGSTER3": { + "asm": true, + "label": "MtMoon1FYoungster3Text" + } + }, + "MtMoonB1F": { + "TEXT_MTMOONB1F_UNUSED": { + "label": "MtMoonB1FUnusedText", + "text": "_MtMoonB1FUnusedText" + } + }, + "MtMoonB2F": { + "TEXT_MTMOONB2F_DOME_FOSSIL": { + "asm": true, + "label": "MtMoonB2FDomeFossilText", + "text": "_MtMoonB2FDomeFossilYouWantText" + }, + "TEXT_MTMOONB2F_HELIX_FOSSIL": { + "asm": true, + "label": "MtMoonB2FHelixFossilText", + "text": "_MtMoonB2FHelixFossilYouWantText" + }, + "TEXT_MTMOONB2F_HP_UP": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_MTMOONB2F_JAMES": { + "label": "MtMoonB2FJessieJamesText" + }, + "TEXT_MTMOONB2F_JESSIE": { + "label": "MtMoonB2FJessieJamesText" + }, + "TEXT_MTMOONB2F_ROCKET1": { + "asm": true, + "label": "MtMoonB2FRocket1Text" + }, + "TEXT_MTMOONB2F_ROCKET2": { + "asm": true, + "label": "MtMoonB2FRocket2Text" + }, + "TEXT_MTMOONB2F_ROCKET3": { + "asm": true, + "label": "MtMoonB2FRocket3Text" + }, + "TEXT_MTMOONB2F_SUPER_NERD": { + "asm": true, + "label": "MtMoonB2FSuperNerdText" + }, + "TEXT_MTMOONB2F_SUPER_NERD_THEN_THIS_IS_MINE": { + "label": "MtMoonB2FSuperNerdThenThisIsMineText", + "text": "_MtMoonB2FSuperNerdThenThisIsMineText" + }, + "TEXT_MTMOONB2F_TEXT12": { + "asm": true, + "label": "MtMoonB2FText12", + "text": "_MtMoonJessieJamesText1" + }, + "TEXT_MTMOONB2F_TEXT13": { + "label": "MtMoonB2FText13", + "text": "_MtMoonJessieJamesText2" + }, + "TEXT_MTMOONB2F_TEXT14": { + "asm": true, + "label": "MtMoonB2FText14", + "text": "_MtMoonJessieJamesText4" + }, + "TEXT_MTMOONB2F_TM_MEGA_PUNCH": { + "asm": true, + "label": "PickUpItemText" + } + }, + "MtMoonPokecenter": { + "TEXT_MTMOONPOKECENTER_CHANSEY": { + "asm": true, + "label": "MtMoonPokecenterChanseyText" + }, + "TEXT_MTMOONPOKECENTER_CLIPBOARD": { + "label": "MtMoonPokecenterClipboardText", + "text": "_MtMoonPokecenterClipboardText" + }, + "TEXT_MTMOONPOKECENTER_GENTLEMAN": { + "label": "MtMoonPokecenterGentlemanText", + "text": "_MtMoonPokecenterGentlemanText" + }, + "TEXT_MTMOONPOKECENTER_LINK_RECEPTIONIST": { + "cableClub": true, + "label": "MtMoonPokecenterLinkReceptionistText" + }, + "TEXT_MTMOONPOKECENTER_MAGIKARP_SALESMAN": { + "asm": true, + "label": "MtMoonPokecenterMagikarpSalesmanText" + }, + "TEXT_MTMOONPOKECENTER_NURSE": { + "label": "MtMoonPokecenterNurseText", + "nurse": true + }, + "TEXT_MTMOONPOKECENTER_YOUNGSTER": { + "label": "MtMoonPokecenterYoungsterText", + "text": "_MtMoonPokecenterYoungsterText" + } + }, + "Museum1F": { + "TEXT_MUSEUM1F_GAMBLER": { + "asm": true, + "label": "Museum1FGamblerText" + }, + "TEXT_MUSEUM1F_OLD_AMBER": { + "asm": true, + "label": "Museum1FOldAmberText" + }, + "TEXT_MUSEUM1F_SCIENTIST1": { + "asm": true, + "label": "Museum1FScientist1Text" + }, + "TEXT_MUSEUM1F_SCIENTIST2": { + "asm": true, + "label": "Museum1FScientist2Text" + }, + "TEXT_MUSEUM1F_SCIENTIST3": { + "asm": true, + "label": "Museum1FScientist3Text" + } + }, + "Museum2F": { + "TEXT_MUSEUM2F_BRUNETTE_GIRL": { + "label": "Museum2FBrunetteGirlText", + "text": "_Museum2FBrunetteGirlText" + }, + "TEXT_MUSEUM2F_GRAMPS": { + "label": "Museum2FGrampsText", + "text": "_Museum2FGrampsText" + }, + "TEXT_MUSEUM2F_HIKER": { + "asm": true, + "label": "Museum2FHikerText" + }, + "TEXT_MUSEUM2F_MOON_STONE_SIGN": { + "label": "Museum2FMoonStoneSignText", + "text": "_Museum2FMoonStoneSignText" + }, + "TEXT_MUSEUM2F_SCIENTIST": { + "label": "Museum2FScientistText", + "text": "_Museum2FScientistText" + }, + "TEXT_MUSEUM2F_SPACE_SHUTTLE_SIGN": { + "label": "Museum2FSpaceShuttleSignText", + "text": "_Museum2FSpaceShuttleSignText" + }, + "TEXT_MUSEUM2F_YOUNGSTER": { + "label": "Museum2FYoungsterText", + "text": "_Museum2FYoungsterText" + } + }, + "NameRatersHouse": { + "TEXT_NAMERATERSHOUSE_NAME_RATER": { + "asm": true, + "label": "NameRatersHouseNameRaterText", + "text": "_NameRatersHouseNameRaterWantMeToRateText" + } + }, + "OaksLab": { + "TEXT_OAKSLAB_EEVEE_POKE_BALL": { + "asm": true, + "label": "OaksLabEeveePokeBallText", + "text": "_OaksLabThatsAPokeball" + }, + "TEXT_OAKSLAB_GIRL": { + "asm": true, + "label": "OaksLabGirlText", + "text": "_OaksLabGirlText" + }, + "TEXT_OAKSLAB_OAK1": { + "asm": true, + "label": "OaksLabOak1Text", + "text": "_OaksLabOak1GoAheadItsYours" + }, + "TEXT_OAKSLAB_OAK2": { + "label": "OaksLabOak2Text", + "text": "_OaksLabOak2Text" + }, + "TEXT_OAKSLAB_OAK_BE_PATIENT": { + "asm": true, + "label": "OaksLabOakBePatientText", + "text": "_OaksLabOakBePatientText" + }, + "TEXT_OAKSLAB_OAK_CHOOSE_MON": { + "asm": true, + "label": "OaksLabOakChooseMonText", + "text": "_OaksLabOakChooseMonText" + }, + "TEXT_OAKSLAB_OAK_DONT_GO_AWAY_YET": { + "asm": true, + "label": "OaksLabOakDontGoAwayYetText", + "text": "_OaksLabOakDontGoAwayYetText" + }, + "TEXT_OAKSLAB_OAK_GOT_POKEDEX": { + "label": "OaksLabOakGotPokedexText", + "text": "_OaksLabOakGotPokedexText" + }, + "TEXT_OAKSLAB_OAK_I_HAVE_A_REQUEST": { + "label": "OaksLabOakIHaveARequestText", + "text": "_OaksLabOakIHaveARequestText" + }, + "TEXT_OAKSLAB_OAK_MY_INVENTION_POKEDEX": { + "label": "OaksLabOakMyInventionPokedexText", + "text": "_OaksLabOakMyInventionPokedexText" + }, + "TEXT_OAKSLAB_OAK_THAT_WAS_MY_DREAM": { + "label": "OaksLabOakThatWasMyDreamText", + "text": "_OaksLabOakThatWasMyDreamText" + }, + "TEXT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS1": { + "asm": true, + "label": "OaksLabPikachuDislikesPokeballsText1", + "text": "_OaksLabPikachuDislikesPokeballsText1" + }, + "TEXT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS2": { + "asm": true, + "label": "OaksLabPikachuDislikesPokeballsText2", + "text": "_OaksLabPikachuDislikesPokeballsText2" + }, + "TEXT_OAKSLAB_PLAYER_RECEIVED_MON": { + "asm": true, + "label": "OaksLabPlayerReceivedMonText" + }, + "TEXT_OAKSLAB_POKEDEX1": { + "asm": true, + "label": "OaksLabPokedexText", + "text": "_OaksLabPokedexText" + }, + "TEXT_OAKSLAB_POKEDEX2": { + "asm": true, + "label": "OaksLabPokedexText", + "text": "_OaksLabPokedexText" + }, + "TEXT_OAKSLAB_RIVAL": { + "asm": true, + "label": "OaksLabRivalText", + "text": "_OaksLabRivalGrampsIsntAroundText" + }, + "TEXT_OAKSLAB_RIVAL_FED_UP_WITH_WAITING": { + "asm": true, + "label": "OaksLabRivalFedUpWithWaitingText", + "text": "_OaksLabRivalFedUpWithWaitingText" + }, + "TEXT_OAKSLAB_RIVAL_GRAMPS": { + "label": "OaksLabRivalGrampsText", + "text": "_OaksLabRivalGrampsText" + }, + "TEXT_OAKSLAB_RIVAL_ILL_TAKE_YOU_ON": { + "asm": true, + "label": "OaksLabRivalIllTakeYouOnText", + "text": "_OaksLabRivalIllTakeYouOnText" + }, + "TEXT_OAKSLAB_RIVAL_LEAVE_IT_ALL_TO_ME": { + "label": "OaksLabRivalLeaveItAllToMeText", + "text": "_OaksLabRivalLeaveItAllToMeText" + }, + "TEXT_OAKSLAB_RIVAL_MY_POKEMON_HAS_GROWN_STRONGER": { + "label": "OaksLabRivalMyPokemonHasGrownStrongerText", + "text": "_OaksLabRivalMyPokemonHasGrownStrongerText" + }, + "TEXT_OAKSLAB_RIVAL_RECEIVED_MON": { + "asm": true, + "label": "OaksLabRivalReceivedMonText" + }, + "TEXT_OAKSLAB_RIVAL_SMELL_YOU_LATER": { + "asm": true, + "label": "OaksLabRivalSmellYouLaterText", + "text": "_OaksLabRivalSmellYouLaterText" + }, + "TEXT_OAKSLAB_RIVAL_WHAT_ABOUT_ME": { + "asm": true, + "label": "OaksLabRivalWhatAboutMeText", + "text": "_OaksLabRivalWhatAboutMeText" + }, + "TEXT_OAKSLAB_SCIENTIST1": { + "asm": true, + "label": "OaksLabScientistText", + "text": "_OaksLabScientistText" + }, + "TEXT_OAKSLAB_SCIENTIST2": { + "asm": true, + "label": "OaksLabScientistText", + "text": "_OaksLabScientistText" + } + }, + "PalletTown": { + "TEXT_PALLETTOWN_FISHER": { + "label": "PalletTownFisherText", + "text": "_PalletTownFisherText" + }, + "TEXT_PALLETTOWN_GIRL": { + "label": "PalletTownGirlText", + "text": "_PalletTownGirlText" + }, + "TEXT_PALLETTOWN_OAK": { + "asm": true, + "label": "PalletTownOakText", + "text": "_PalletTownOakHeyWaitDontGoOutText" + }, + "TEXT_PALLETTOWN_OAKSLAB_SIGN": { + "label": "PalletTownOaksLabSignText", + "text": "_PalletTownOaksLabSignText" + }, + "TEXT_PALLETTOWN_OAK_COME_WITH_ME": { + "label": "PalletTownOakComeWithMe", + "text": "_PalletTownOakComeWithMe" + }, + "TEXT_PALLETTOWN_PLAYERSHOUSE_SIGN": { + "label": "PalletTownPlayersHouseSignText", + "text": "_PalletTownPlayersHouseSignText" + }, + "TEXT_PALLETTOWN_RIVALSHOUSE_SIGN": { + "label": "PalletTownRivalsHouseSignText", + "text": "_PalletTownRivalsHouseSignText" + }, + "TEXT_PALLETTOWN_SIGN": { + "label": "PalletTownSignText", + "text": "_PalletTownSignText" + } + }, + "PewterCity": { + "TEXT_PEWTERCITY_COOLTRAINER_F": { + "label": "PewterCityCooltrainerFText", + "text": "_PewterCityCooltrainerFText" + }, + "TEXT_PEWTERCITY_COOLTRAINER_M": { + "label": "PewterCityCooltrainerMText", + "text": "_PewterCityCooltrainerMText" + }, + "TEXT_PEWTERCITY_GYM_SIGN": { + "label": "PewterCityGymSignText", + "text": "_PewterCityGymSignText" + }, + "TEXT_PEWTERCITY_MART_SIGN": { + "asm": true, + "label": "MartSignText" + }, + "TEXT_PEWTERCITY_MUSEUM_SIGN": { + "label": "PewterCityMuseumSignText", + "text": "_PewterCityMuseumSignText" + }, + "TEXT_PEWTERCITY_POKECENTER_SIGN": { + "asm": true, + "label": "PokeCenterSignText" + }, + "TEXT_PEWTERCITY_POLICE_NOTICE_SIGN": { + "label": "PewterCityPoliceNoticeSignText", + "text": "_PewterCityPoliceNoticeSignText" + }, + "TEXT_PEWTERCITY_SIGN": { + "label": "PewterCitySignText", + "text": "_PewterCitySignText" + }, + "TEXT_PEWTERCITY_SUPER_NERD1": { + "asm": true, + "label": "PewterCitySuperNerd1Text", + "text": "_PewterCitySuperNerd1DidYouCheckOutMuseumText" + }, + "TEXT_PEWTERCITY_SUPER_NERD1_ITS_RIGHT_HERE": { + "label": "PewterCitySuperNerd1ItsRightHereText", + "text": "_PewterCitySuperNerd1ItsRightHereText" + }, + "TEXT_PEWTERCITY_SUPER_NERD2": { + "asm": true, + "label": "PewterCitySuperNerd2Text", + "text": "_PewterCitySuperNerd2DoYouKnowWhatImDoingText" + }, + "TEXT_PEWTERCITY_TRAINER_TIPS": { + "label": "PewterCityTrainerTipsText", + "text": "_PewterCityTrainerTipsText" + }, + "TEXT_PEWTERCITY_YOUNGSTER": { + "asm": true, + "label": "PewterCityYoungsterText", + "text": "_PewterCityYoungsterYoureATrainerFollowMeText" + }, + "TEXT_PEWTERCITY_YOUNGSTER_GO_TAKE_ON_BROCK": { + "label": "PewterCityYoungsterGoTakeOnBrockText", + "text": "_PewterCityYoungsterGoTakeOnBrockText" + } + }, + "PewterGym": { + "TEXT_PEWTERGYM_BROCK": { + "asm": true, + "label": "PewterGymBrockText", + "text": "_PewterGymBrockPreBattleText" + }, + "TEXT_PEWTERGYM_BROCK_WAIT_TAKE_THIS": { + "label": "PewterGymBrockWaitTakeThisText", + "text": "_PewterGymBrockWaitTakeThisText" + }, + "TEXT_PEWTERGYM_COOLTRAINER_M": { + "asm": true, + "label": "PewterGymCooltrainerMText" + }, + "TEXT_PEWTERGYM_GYM_GUIDE": { + "asm": true, + "label": "PewterGymGuideText" + }, + "TEXT_PEWTERGYM_RECEIVED_TM34": { + "label": "PewterGymReceivedTM34Text", + "text": "_PewterGymReceivedTM34Text" + }, + "TEXT_PEWTERGYM_TM34_NO_ROOM": { + "label": "PewterGymTM34NoRoomText", + "text": "_PewterGymTM34NoRoomText" + } + }, + "PewterMart": { + "TEXT_PEWTERMART_CLERK": { + "label": "PewterMartClerkText", + "mart": [ + "POKE_BALL", + "POTION", + "ESCAPE_ROPE", + "ANTIDOTE", + "BURN_HEAL", + "AWAKENING", + "PARLYZ_HEAL" + ] + }, + "TEXT_PEWTERMART_SUPER_NERD": { + "asm": true, + "label": "PewterMartSuperNerdText", + "text": "_PewterMartSuperNerdText" + }, + "TEXT_PEWTERMART_YOUNGSTER": { + "asm": true, + "label": "PewterMartYoungsterText", + "text": "_PewterMartYoungsterText" + } + }, + "PewterNidoranHouse": { + "TEXT_PEWTERNIDORANHOUSE_LITTLE_BOY": { + "label": "PewterNidoranHouseLittleBoyText", + "text": "_PewterNidoranHouseLittleBoyText" + }, + "TEXT_PEWTERNIDORANHOUSE_MIDDLE_AGED_MAN": { + "label": "PewterNidoranHouseMiddleAgedManText", + "text": "_PewterNidoranHouseMiddleAgedManText" + }, + "TEXT_PEWTERNIDORANHOUSE_NIDORAN": { + "asm": true, + "label": "PewterNidoranHouseNidoranText", + "text": "_PewterNidoranHouseNidoranText" + } + }, + "PewterPokecenter": { + "TEXT_PEWTERPOKECENTER_CHANSEY": { + "asm": true, + "label": "PewterPokecenterChanseyText" + }, + "TEXT_PEWTERPOKECENTER_COOLTRAINER_F": { + "asm": true, + "label": "PewterPokecenterCooltrainerFText" + }, + "TEXT_PEWTERPOKECENTER_GENTLEMAN": { + "label": "PewterPokecenterGentlemanText", + "text": "_PewterPokecenterGentlemanText" + }, + "TEXT_PEWTERPOKECENTER_JIGGLYPUFF": { + "asm": true, + "label": "PewterPokecenterJigglypuffText" + }, + "TEXT_PEWTERPOKECENTER_LINK_RECEPTIONIST": { + "cableClub": true, + "label": "PewterPokecenterLinkReceptionistText" + }, + "TEXT_PEWTERPOKECENTER_NURSE": { + "label": "PewterPokecenterNurseText", + "nurse": true + } + }, + "PewterSpeechHouse": { + "TEXT_PEWTERSPEECHHOUSE_GAMBLER": { + "label": "PewterSpeechHouseGamblerText", + "text": "_PewterSpeechHouseGamblerText" + }, + "TEXT_PEWTERSPEECHHOUSE_YOUNGSTER": { + "label": "PewterSpeechHouseYoungsterText", + "text": "_PewterSpeechHouseYoungsterText" + } + }, + "PokemonFanClub": { + "TEXT_POKEMONFANCLUB_CHAIRMAN": { + "asm": true, + "label": "PokemonFanClubChairmanText", + "text": "_PokemonFanClubChairmanIntroText" + }, + "TEXT_POKEMONFANCLUB_CLEFAIRY": { + "asm": true, + "label": "PokemonFanClubClefairyText", + "text": "_PokemonFanClubClefairyText" + }, + "TEXT_POKEMONFANCLUB_CLEFAIRY_FAN": { + "asm": true, + "label": "PokemonFanClubClefairyFanText", + "text": "_PokemonFanClubClefairyFanNormalText" + }, + "TEXT_POKEMONFANCLUB_RECEPTIONIST": { + "label": "PokemonFanClubReceptionistText", + "text": "_PokemonFanClubReceptionistText" + }, + "TEXT_POKEMONFANCLUB_SEEL": { + "asm": true, + "label": "PokemonFanClubSeelText", + "text": "_PokemonFanClubSeelText" + }, + "TEXT_POKEMONFANCLUB_SEEL_FAN": { + "asm": true, + "label": "PokemonFanClubSeelFanText", + "text": "_PokemonFanClubSeelFanNormalText" + } + }, + "PokemonMansion1F": { + "TEXT_POKEMONMANSION1F_CARBOS": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POKEMONMANSION1F_ESCAPE_ROPE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POKEMONMANSION1F_SCIENTIST": { + "asm": true, + "label": "PokemonMansion1FScientistText" + }, + "TEXT_POKEMONMANSION1F_SWITCH": { + "asm": true, + "label": "PokemonMansion1FSwitchText", + "text": "_PokemonMansion1FSwitchText" + } + }, + "PokemonMansion2F": { + "TEXT_POKEMONMANSION2F_CALCIUM": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POKEMONMANSION2F_DIARY1": { + "label": "PokemonMansion2FDiary1Text", + "text": "_PokemonMansion2FDiary1Text" + }, + "TEXT_POKEMONMANSION2F_DIARY2": { + "label": "PokemonMansion2FDiary2Text", + "text": "_PokemonMansion2FDiary2Text" + }, + "TEXT_POKEMONMANSION2F_SUPER_NERD": { + "asm": true, + "label": "PokemonMansion2FSuperNerdText" + }, + "TEXT_POKEMONMANSION2F_SWITCH": { + "asm": true, + "label": "PokemonMansion2FSwitchText", + "text": "_PokemonMansion2FSwitchText" + } + }, + "PokemonMansion3F": { + "TEXT_POKEMONMANSION3F_DIARY": { + "label": "PokemonMansion3FDiaryText", + "text": "_PokemonMansion3FDiaryText" + }, + "TEXT_POKEMONMANSION3F_IRON": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POKEMONMANSION3F_MAX_POTION": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POKEMONMANSION3F_SCIENTIST": { + "asm": true, + "label": "PokemonMansion3FScientistText" + }, + "TEXT_POKEMONMANSION3F_SUPER_NERD": { + "asm": true, + "label": "PokemonMansion3FSuperNerdText" + }, + "TEXT_POKEMONMANSION3F_SWITCH": { + "asm": true, + "label": "PokemonMansion2FSwitchText" + } + }, + "PokemonMansionB1F": { + "TEXT_POKEMONMANSIONB1F_BURGLAR": { + "asm": true, + "label": "PokemonMansionB1FBurglarText" + }, + "TEXT_POKEMONMANSIONB1F_DIARY": { + "label": "PokemonMansionB1FDiaryText", + "text": "_PokemonMansionB1FDiaryText" + }, + "TEXT_POKEMONMANSIONB1F_FULL_RESTORE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POKEMONMANSIONB1F_RARE_CANDY": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POKEMONMANSIONB1F_SCIENTIST": { + "asm": true, + "label": "PokemonMansionB1FScientistText" + }, + "TEXT_POKEMONMANSIONB1F_SECRET_KEY": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POKEMONMANSIONB1F_SWITCH": { + "asm": true, + "label": "PokemonMansion2FSwitchText" + }, + "TEXT_POKEMONMANSIONB1F_TM_BLIZZARD": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POKEMONMANSIONB1F_TM_SOLARBEAM": { + "asm": true, + "label": "PickUpItemText" + } + }, + "PokemonTower1F": { + "TEXT_POKEMONTOWER1F_BALDING_GUY": { + "label": "PokemonTower1FBaldingGuyText", + "text": "_PokemonTower1FBaldingGuyText" + }, + "TEXT_POKEMONTOWER1F_CHANNELER": { + "label": "PokemonTower1FChannelerText", + "text": "_PokemonTower1FChannelerText" + }, + "TEXT_POKEMONTOWER1F_GIRL": { + "label": "PokemonTower1FGirlText", + "text": "_PokemonTower1FGirlText" + }, + "TEXT_POKEMONTOWER1F_MIDDLE_AGED_WOMAN": { + "label": "PokemonTower1FMiddleAgedWomanText", + "text": "_PokemonTower1FMiddleAgedWomanText" + }, + "TEXT_POKEMONTOWER1F_RECEPTIONIST": { + "label": "PokemonTower1FReceptionistText", + "text": "_PokemonTower1FReceptionistText" + } + }, + "PokemonTower2F": { + "TEXT_POKEMONTOWER2F_CHANNELER": { + "label": "PokemonTower2FChannelerText", + "text": "_PokemonTower2FChannelerText" + }, + "TEXT_POKEMONTOWER2F_RIVAL": { + "asm": true, + "label": "PokemonTower2FRivalText", + "text": "_PokemonTower2FRivalWhatBringsYouHereText" + } + }, + "PokemonTower3F": { + "TEXT_POKEMONTOWER3F_CHANNELER1": { + "asm": true, + "label": "PokemonTower3FChanneler1Text" + }, + "TEXT_POKEMONTOWER3F_CHANNELER2": { + "asm": true, + "label": "PokemonTower3FChanneler2Text" + }, + "TEXT_POKEMONTOWER3F_CHANNELER3": { + "asm": true, + "label": "PokemonTower3FChanneler3Text" + }, + "TEXT_POKEMONTOWER3F_ESCAPE_ROPE": { + "asm": true, + "label": "PickUpItemText" + } + }, + "PokemonTower4F": { + "TEXT_POKEMONTOWER4F_AWAKENING": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POKEMONTOWER4F_CHANNELER1": { + "asm": true, + "label": "PokemonTower4FChanneler1Text" + }, + "TEXT_POKEMONTOWER4F_CHANNELER2": { + "asm": true, + "label": "PokemonTower4FChanneler2Text" + }, + "TEXT_POKEMONTOWER4F_CHANNELER3": { + "asm": true, + "label": "PokemonTower4FChanneler3Text" + }, + "TEXT_POKEMONTOWER4F_ELIXER": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POKEMONTOWER4F_HP_UP": { + "asm": true, + "label": "PickUpItemText" + } + }, + "PokemonTower5F": { + "TEXT_POKEMONTOWER5F_CHANNELER1": { + "label": "PokemonTower5FChanneler1Text", + "text": "_PokemonTower5FChanneler1Text" + }, + "TEXT_POKEMONTOWER5F_CHANNELER2": { + "asm": true, + "label": "PokemonTower5FChanneler2Text" + }, + "TEXT_POKEMONTOWER5F_CHANNELER3": { + "asm": true, + "label": "PokemonTower5FChanneler3Text" + }, + "TEXT_POKEMONTOWER5F_CHANNELER4": { + "asm": true, + "label": "PokemonTower5FChanneler4Text" + }, + "TEXT_POKEMONTOWER5F_CHANNELER5": { + "asm": true, + "label": "PokemonTower5FChanneler5Text" + }, + "TEXT_POKEMONTOWER5F_NUGGET": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POKEMONTOWER5F_PURIFIEDZONE": { + "label": "PokemonTower5FPurifiedZoneText", + "text": "_PokemonTower5FPurifiedZoneText" + } + }, + "PokemonTower6F": { + "TEXT_POKEMONTOWER6F_BEGONE": { + "label": "PokemonTower6FBeGoneText", + "text": "_PokemonTower6FBeGoneText" + }, + "TEXT_POKEMONTOWER6F_CHANNELER1": { + "asm": true, + "label": "PokemonTower6FChanneler1Text" + }, + "TEXT_POKEMONTOWER6F_CHANNELER2": { + "asm": true, + "label": "PokemonTower6FChanneler2Text" + }, + "TEXT_POKEMONTOWER6F_CHANNELER3": { + "asm": true, + "label": "PokemonTower6FChanneler3Text" + }, + "TEXT_POKEMONTOWER6F_MAROWAK_DEPARTED": { + "asm": true, + "label": "PokemonTower6FMarowakDepartedText" + }, + "TEXT_POKEMONTOWER6F_RARE_CANDY": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POKEMONTOWER6F_X_ACCURACY": { + "asm": true, + "label": "PickUpItemText" + } + }, + "PokemonTower7F": { + "TEXT_POKEMONTOWER7F_JAMES": { + "label": "PokemonTower7FJessieJamesText" + }, + "TEXT_POKEMONTOWER7F_JESSIE": { + "label": "PokemonTower7FJessieJamesText" + }, + "TEXT_POKEMONTOWER7F_MR_FUJI": { + "asm": true, + "label": "PokemonTower7FMrFujiText", + "text": "_PokemonTower7FMrFujiRescueText" + }, + "TEXT_POKEMONTOWER7F_TEXT4": { + "asm": true, + "label": "PokemonTower7FText4", + "text": "_PokemonTowerJessieJamesText1" + }, + "TEXT_POKEMONTOWER7F_TEXT5": { + "label": "PokemonTower7FText5", + "text": "_PokemonTowerJessieJamesText2" + }, + "TEXT_POKEMONTOWER7F_TEXT6": { + "asm": true, + "label": "PokemonTower7FText6", + "text": "_PokemonTowerJessieJamesText4" + } + }, + "PowerPlant": { + "TEXT_POWERPLANT_CARBOS": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POWERPLANT_ELECTRODE1": { + "asm": true, + "label": "PowerPlantElectrode1Text" + }, + "TEXT_POWERPLANT_ELECTRODE2": { + "asm": true, + "label": "PowerPlantElectrode2Text" + }, + "TEXT_POWERPLANT_HP_UP": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POWERPLANT_RARE_CANDY": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POWERPLANT_TM_REFLECT": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POWERPLANT_TM_THUNDER": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_POWERPLANT_VOLTORB1": { + "asm": true, + "label": "PowerPlantVoltorb1Text" + }, + "TEXT_POWERPLANT_VOLTORB2": { + "asm": true, + "label": "PowerPlantVoltorb2Text" + }, + "TEXT_POWERPLANT_VOLTORB3": { + "asm": true, + "label": "PowerPlantVoltorb3Text" + }, + "TEXT_POWERPLANT_VOLTORB4": { + "asm": true, + "label": "PowerPlantVoltorb4Text" + }, + "TEXT_POWERPLANT_VOLTORB5": { + "asm": true, + "label": "PowerPlantVoltorb5Text" + }, + "TEXT_POWERPLANT_VOLTORB6": { + "asm": true, + "label": "PowerPlantVoltorb6Text" + }, + "TEXT_POWERPLANT_ZAPDOS": { + "asm": true, + "label": "PowerPlantZapdosText" + } + }, + "RedsHouse1F": { + "TEXT_REDSHOUSE1F_MOM": { + "asm": true, + "label": "RedsHouse1FMomText" + }, + "TEXT_REDSHOUSE1F_TV": { + "asm": true, + "label": "RedsHouse1FTVText" + } + }, + "RockTunnel1F": { + "TEXT_ROCKTUNNEL1F_COOLTRAINER_F1": { + "asm": true, + "label": "RockTunnel1FCooltrainerF1Text" + }, + "TEXT_ROCKTUNNEL1F_COOLTRAINER_F2": { + "asm": true, + "label": "RockTunnel1FCooltrainerF2Text" + }, + "TEXT_ROCKTUNNEL1F_COOLTRAINER_F3": { + "asm": true, + "label": "RockTunnel1FCooltrainerF3Text" + }, + "TEXT_ROCKTUNNEL1F_HIKER1": { + "asm": true, + "label": "RockTunnel1FHiker1Text" + }, + "TEXT_ROCKTUNNEL1F_HIKER2": { + "asm": true, + "label": "RockTunnel1FHiker2Text" + }, + "TEXT_ROCKTUNNEL1F_HIKER3": { + "asm": true, + "label": "RockTunnel1FHiker3Text" + }, + "TEXT_ROCKTUNNEL1F_SIGN": { + "label": "RockTunnel1FSignText", + "text": "_RockTunnel1FSignText" + }, + "TEXT_ROCKTUNNEL1F_SUPER_NERD": { + "asm": true, + "label": "RockTunnel1FSuperNerdText" + } + }, + "RockTunnelB1F": { + "TEXT_ROCKTUNNELB1F_COOLTRAINER_F1": { + "asm": true, + "label": "RockTunnelB1FCooltrainerF1Text" + }, + "TEXT_ROCKTUNNELB1F_COOLTRAINER_F2": { + "asm": true, + "label": "RockTunnelB1FCooltrainerF2Text" + }, + "TEXT_ROCKTUNNELB1F_HIKER1": { + "asm": true, + "label": "RockTunnelB1FHiker1Text" + }, + "TEXT_ROCKTUNNELB1F_HIKER2": { + "asm": true, + "label": "RockTunnelB1FHiker2Text" + }, + "TEXT_ROCKTUNNELB1F_HIKER3": { + "asm": true, + "label": "RockTunnelB1FHiker3Text" + }, + "TEXT_ROCKTUNNELB1F_SUPER_NERD1": { + "asm": true, + "label": "RockTunnelB1FSuperNerd1Text" + }, + "TEXT_ROCKTUNNELB1F_SUPER_NERD2": { + "asm": true, + "label": "RockTunnelB1FSuperNerd2Text" + }, + "TEXT_ROCKTUNNELB1F_SUPER_NERD3": { + "asm": true, + "label": "RockTunnelB1FSuperNerd3Text" + } + }, + "RockTunnelPokecenter": { + "TEXT_ROCKTUNNELPOKECENTER_CHANSEY": { + "asm": true, + "label": "RockTunnelPokecenterChanseyText" + }, + "TEXT_ROCKTUNNELPOKECENTER_FISHER": { + "label": "RockTunnelPokecenterFisherText", + "text": "_RockTunnelPokecenterFisherText" + }, + "TEXT_ROCKTUNNELPOKECENTER_GENTLEMAN": { + "label": "RockTunnelPokecenterGentlemanText", + "text": "_RockTunnelPokecenterGentlemanText" + }, + "TEXT_ROCKTUNNELPOKECENTER_LINK_RECEPTIONIST": { + "cableClub": true, + "label": "RockTunnelPokecenterLinkReceptionistText" + }, + "TEXT_ROCKTUNNELPOKECENTER_NURSE": { + "label": "RockTunnelPokecenterNurseText", + "nurse": true + } + }, + "RocketHideoutB1F": { + "TEXT_ROCKETHIDEOUTB1F_ESCAPE_ROPE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROCKETHIDEOUTB1F_HYPER_POTION": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROCKETHIDEOUTB1F_ROCKET1": { + "asm": true, + "label": "RocketHideoutB1FRocket1Text" + }, + "TEXT_ROCKETHIDEOUTB1F_ROCKET2": { + "asm": true, + "label": "RocketHideoutB1FRocket2Text" + }, + "TEXT_ROCKETHIDEOUTB1F_ROCKET3": { + "asm": true, + "label": "RocketHideoutB1FRocket3Text" + }, + "TEXT_ROCKETHIDEOUTB1F_ROCKET4": { + "asm": true, + "label": "RocketHideoutB1FRocket4Text" + }, + "TEXT_ROCKETHIDEOUTB1F_ROCKET5": { + "asm": true, + "label": "RocketHideoutB1FRocket5Text" + } + }, + "RocketHideoutB2F": { + "TEXT_ROCKETHIDEOUTB2F_MOON_STONE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROCKETHIDEOUTB2F_NUGGET": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROCKETHIDEOUTB2F_ROCKET": { + "asm": true, + "label": "RocketHideoutB2FRocketText" + }, + "TEXT_ROCKETHIDEOUTB2F_SUPER_POTION": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROCKETHIDEOUTB2F_TM_HORN_DRILL": { + "asm": true, + "label": "PickUpItemText" + } + }, + "RocketHideoutB3F": { + "TEXT_ROCKETHIDEOUTB3F_RARE_CANDY": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROCKETHIDEOUTB3F_ROCKET1": { + "asm": true, + "label": "RocketHideoutB3FRocket1Text" + }, + "TEXT_ROCKETHIDEOUTB3F_ROCKET2": { + "asm": true, + "label": "RocketHideoutB3FRocket2Text" + }, + "TEXT_ROCKETHIDEOUTB3F_TM_DOUBLE_EDGE": { + "asm": true, + "label": "PickUpItemText" + } + }, + "RocketHideoutB4F": { + "TEXT_ROCKETHIDEOUTB4F_GIOVANNI": { + "asm": true, + "label": "RocketHideoutB4FGiovanniText", + "text": "_RocketHideoutB4FGiovanniImpressedYouGotHereText" + }, + "TEXT_ROCKETHIDEOUTB4F_GIOVANNI_HOPE_WE_MEET_AGAIN": { + "label": "RocketHideoutB4FGiovanniHopeWeMeetAgainText", + "text": "_RocketHideoutB4FGiovanniHopeWeMeetAgainText" + }, + "TEXT_ROCKETHIDEOUTB4F_HP_UP": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROCKETHIDEOUTB4F_IRON": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROCKETHIDEOUTB4F_JAMES": { + "label": "RocketHideoutB4FJessieJamesText" + }, + "TEXT_ROCKETHIDEOUTB4F_JESSIE": { + "label": "RocketHideoutB4FJessieJamesText" + }, + "TEXT_ROCKETHIDEOUTB4F_LIFT_KEY": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROCKETHIDEOUTB4F_ROCKET": { + "asm": true, + "label": "RocketHideoutB4FRocketText" + }, + "TEXT_ROCKETHIDEOUTB4F_SILPH_SCOPE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROCKETHIDEOUTB4F_TEXT11": { + "asm": true, + "label": "RocketHideoutB4FText11", + "text": "_RocketHideoutJessieJamesText1" + }, + "TEXT_ROCKETHIDEOUTB4F_TEXT12": { + "label": "RocketHideoutB4FText12", + "text": "_RocketHideoutJessieJamesText2" + }, + "TEXT_ROCKETHIDEOUTB4F_TEXT13": { + "asm": true, + "label": "RocketHideoutB4FText13", + "text": "_RocketHideoutJessieJamesText4" + }, + "TEXT_ROCKETHIDEOUTB4F_TM_RAZOR_WIND": { + "asm": true, + "label": "PickUpItemText" + } + }, + "RocketHideoutElevator": { + "TEXT_ROCKETHIDEOUTELEVATOR": { + "asm": true, + "label": "RocketHideoutElevatorText", + "text": "_RocketHideoutElevatorAppearsToNeedKeyText" + } + }, + "Route1": { + "TEXT_ROUTE1_SIGN": { + "asm": true, + "label": "Route1SignText" + }, + "TEXT_ROUTE1_YOUNGSTER1": { + "asm": true, + "label": "Route1Youngster1Text" + }, + "TEXT_ROUTE1_YOUNGSTER2": { + "asm": true, + "label": "Route1Youngster2Text" + } + }, + "Route10": { + "TEXT_ROUTE10_COOLTRAINER_F1": { + "asm": true, + "label": "Route10CooltrainerF1Text" + }, + "TEXT_ROUTE10_COOLTRAINER_F2": { + "asm": true, + "label": "Route10CooltrainerF2Text" + }, + "TEXT_ROUTE10_HIKER1": { + "asm": true, + "label": "Route10Hiker1Text" + }, + "TEXT_ROUTE10_HIKER2": { + "asm": true, + "label": "Route10Hiker2Text" + }, + "TEXT_ROUTE10_POKECENTER_SIGN": { + "asm": true, + "label": "PokeCenterSignText" + }, + "TEXT_ROUTE10_POWERPLANT_SIGN": { + "label": "Route10PowerPlantSignText", + "text": "_Route10PowerPlantSignText" + }, + "TEXT_ROUTE10_ROCKTUNNEL_NORTH_SIGN": { + "label": "Route10RockTunnelSignText", + "text": "_Route10RockTunnelSignText" + }, + "TEXT_ROUTE10_ROCKTUNNEL_SOUTH_SIGN": { + "label": "Route10RockTunnelSignText", + "text": "_Route10RockTunnelSignText" + }, + "TEXT_ROUTE10_SUPER_NERD1": { + "asm": true, + "label": "Route10SuperNerd1Text" + }, + "TEXT_ROUTE10_SUPER_NERD2": { + "asm": true, + "label": "Route10SuperNerd2Text" + } + }, + "Route11": { + "TEXT_ROUTE11_DIGLETTSCAVE_SIGN": { + "label": "Route11DiglettsCaveSignText", + "text": "_Route11DiglettsCaveSignText" + }, + "TEXT_ROUTE11_GAMBLER1": { + "asm": true, + "label": "Route11Gambler1Text" + }, + "TEXT_ROUTE11_GAMBLER2": { + "asm": true, + "label": "Route11Gambler2Text" + }, + "TEXT_ROUTE11_GAMBLER3": { + "asm": true, + "label": "Route11Gambler3Text" + }, + "TEXT_ROUTE11_GAMBLER4": { + "asm": true, + "label": "Route11Gambler4Text" + }, + "TEXT_ROUTE11_SUPER_NERD1": { + "asm": true, + "label": "Route11SuperNerd1Text" + }, + "TEXT_ROUTE11_SUPER_NERD2": { + "asm": true, + "label": "Route11SuperNerd2Text" + }, + "TEXT_ROUTE11_YOUNGSTER1": { + "asm": true, + "label": "Route11Youngster1Text" + }, + "TEXT_ROUTE11_YOUNGSTER2": { + "asm": true, + "label": "Route11Youngster2Text" + }, + "TEXT_ROUTE11_YOUNGSTER3": { + "asm": true, + "label": "Route11Youngster3Text" + }, + "TEXT_ROUTE11_YOUNGSTER4": { + "asm": true, + "label": "Route11Youngster4Text" + } + }, + "Route11Gate1F": { + "TEXT_ROUTE11GATE1F_GUARD": { + "label": "Route11Gate1FGuardText", + "text": "_Route11Gate1FGuardText" + } + }, + "Route11Gate2F": { + "TEXT_ROUTE11GATE2F_LEFT_BINOCULARS": { + "asm": true, + "label": "Route11Gate2FLeftBinocularsText", + "text": "_Route11Gate2FLeftBinocularsSnorlaxText" + }, + "TEXT_ROUTE11GATE2F_OAKS_AIDE": { + "asm": true, + "label": "Route11Gate2FOaksAideText", + "text": "_Route11Gate2FOaksAideItemfinderDescriptionText" + }, + "TEXT_ROUTE11GATE2F_RIGHT_BINOCULARS": { + "asm": true, + "label": "Route11Gate2FRightBinocularsText", + "text": "_Route11Gate2FRightBinocularsText" + }, + "TEXT_ROUTE11GATE2F_YOUNGSTER": { + "asm": true, + "label": "Route11Gate2FYoungsterText" + } + }, + "Route12": { + "TEXT_ROUTE12_COOLTRAINER_M": { + "asm": true, + "label": "Route12CooltrainerMText" + }, + "TEXT_ROUTE12_FISHER1": { + "asm": true, + "label": "Route12Fisher1Text" + }, + "TEXT_ROUTE12_FISHER2": { + "asm": true, + "label": "Route12Fisher2Text" + }, + "TEXT_ROUTE12_FISHER3": { + "asm": true, + "label": "Route12Fisher3Text" + }, + "TEXT_ROUTE12_FISHER4": { + "asm": true, + "label": "Route12Fisher4Text" + }, + "TEXT_ROUTE12_FISHER5": { + "asm": true, + "label": "Route12Fisher5Text" + }, + "TEXT_ROUTE12_IRON": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROUTE12_SIGN": { + "label": "Route12SignText", + "text": "_Route12SignText" + }, + "TEXT_ROUTE12_SNORLAX": { + "label": "Route12SnorlaxText", + "text": "_Route12SnorlaxText" + }, + "TEXT_ROUTE12_SNORLAX_CALMED_DOWN": { + "label": "Route12SnorlaxCalmedDownText", + "text": "_Route12SnorlaxCalmedDownText" + }, + "TEXT_ROUTE12_SNORLAX_WOKE_UP": { + "label": "Route12SnorlaxWokeUpText", + "text": "_Route12SnorlaxWokeUpText" + }, + "TEXT_ROUTE12_SPORT_FISHING_SIGN": { + "label": "Route12SportFishingSignText", + "text": "_Route12SportFishingSignText" + }, + "TEXT_ROUTE12_SUPER_NERD": { + "asm": true, + "label": "Route12SuperNerdText" + }, + "TEXT_ROUTE12_TM_PAY_DAY": { + "asm": true, + "label": "PickUpItemText" + } + }, + "Route12Gate1F": { + "TEXT_ROUTE12GATE1F_GUARD": { + "label": "Route12Gate1FGuardText", + "text": "_Route12Gate1FGuardText" + } + }, + "Route12Gate2F": { + "TEXT_ROUTE12GATE2F_BRUNETTE_GIRL": { + "asm": true, + "label": "Route12Gate2FBrunetteGirlText", + "text": "_Route12Gate2FBrunetteGirlYouCanHaveThisText" + }, + "TEXT_ROUTE12GATE2F_LEFT_BINOCULARS": { + "asm": true, + "label": "Route12Gate2FLeftBinocularsText", + "text": "_Route12Gate2FLeftBinocularsText" + }, + "TEXT_ROUTE12GATE2F_RIGHT_BINOCULARS": { + "asm": true, + "label": "Route12Gate2FRightBinocularsText", + "text": "_Route12Gate2FRightBinocularsText" + } + }, + "Route12SuperRodHouse": { + "TEXT_ROUTE12SUPERRODHOUSE_FISHING_GURU": { + "asm": true, + "label": "Route12SuperRodHouseFishingGuruText", + "text": "_Route12SuperRodHouseFishingGuruDoYouLikeToFishText" + } + }, + "Route13": { + "TEXT_ROUTE13_BEAUTY1": { + "asm": true, + "label": "Route13Beauty1Text" + }, + "TEXT_ROUTE13_BEAUTY2": { + "asm": true, + "label": "Route13Beauty2Text" + }, + "TEXT_ROUTE13_BIKER": { + "asm": true, + "label": "Route13BikerText" + }, + "TEXT_ROUTE13_COOLTRAINER_F1": { + "asm": true, + "label": "Route13CooltrainerF1Text" + }, + "TEXT_ROUTE13_COOLTRAINER_F2": { + "asm": true, + "label": "Route13CooltrainerF2Text" + }, + "TEXT_ROUTE13_COOLTRAINER_F3": { + "asm": true, + "label": "Route13CooltrainerF3Text" + }, + "TEXT_ROUTE13_COOLTRAINER_F4": { + "asm": true, + "label": "Route13CooltrainerF4Text" + }, + "TEXT_ROUTE13_COOLTRAINER_M1": { + "asm": true, + "label": "Route13CooltrainerM1Text" + }, + "TEXT_ROUTE13_COOLTRAINER_M2": { + "asm": true, + "label": "Route13CooltrainerM2Text" + }, + "TEXT_ROUTE13_COOLTRAINER_M3": { + "asm": true, + "label": "Route13CooltrainerM3Text" + }, + "TEXT_ROUTE13_SIGN": { + "label": "Route13SignText", + "text": "_Route13SignText" + }, + "TEXT_ROUTE13_TRAINER_TIPS1": { + "label": "Route13TrainerTips1Text", + "text": "_Route13TrainerTips1Text" + }, + "TEXT_ROUTE13_TRAINER_TIPS2": { + "label": "Route13TrainerTips2Text", + "text": "_Route13TrainerTips2Text" + } + }, + "Route14": { + "TEXT_ROUTE14_BIKER1": { + "asm": true, + "label": "Route14Biker1Text" + }, + "TEXT_ROUTE14_BIKER2": { + "asm": true, + "label": "Route14Biker2Text" + }, + "TEXT_ROUTE14_BIKER3": { + "asm": true, + "label": "Route14Biker3Text" + }, + "TEXT_ROUTE14_BIKER4": { + "asm": true, + "label": "Route14Biker4Text" + }, + "TEXT_ROUTE14_COOLTRAINER_M1": { + "asm": true, + "label": "Route14CooltrainerM1Text" + }, + "TEXT_ROUTE14_COOLTRAINER_M2": { + "asm": true, + "label": "Route14CooltrainerM2Text" + }, + "TEXT_ROUTE14_COOLTRAINER_M3": { + "asm": true, + "label": "Route14CooltrainerM3Text" + }, + "TEXT_ROUTE14_COOLTRAINER_M4": { + "asm": true, + "label": "Route14CooltrainerM4Text" + }, + "TEXT_ROUTE14_COOLTRAINER_M5": { + "asm": true, + "label": "Route14CooltrainerM5Text" + }, + "TEXT_ROUTE14_COOLTRAINER_M6": { + "asm": true, + "label": "Route14CooltrainerM6Text" + }, + "TEXT_ROUTE14_SIGN": { + "label": "Route14SignText", + "text": "_Route14SignText" + } + }, + "Route15": { + "TEXT_ROUTE15_BEAUTY1": { + "asm": true, + "label": "Route15Beauty1Text" + }, + "TEXT_ROUTE15_BEAUTY2": { + "asm": true, + "label": "Route15Beauty2Text" + }, + "TEXT_ROUTE15_BIKER1": { + "asm": true, + "label": "Route15Biker1Text" + }, + "TEXT_ROUTE15_BIKER2": { + "asm": true, + "label": "Route15Biker2Text" + }, + "TEXT_ROUTE15_COOLTRAINER_F1": { + "asm": true, + "label": "Route15CooltrainerF1Text" + }, + "TEXT_ROUTE15_COOLTRAINER_F2": { + "asm": true, + "label": "Route15CooltrainerF2Text" + }, + "TEXT_ROUTE15_COOLTRAINER_F3": { + "asm": true, + "label": "Route15CooltrainerF3Text" + }, + "TEXT_ROUTE15_COOLTRAINER_F4": { + "asm": true, + "label": "Route15CooltrainerF4Text" + }, + "TEXT_ROUTE15_COOLTRAINER_M1": { + "asm": true, + "label": "Route15CooltrainerM1Text" + }, + "TEXT_ROUTE15_COOLTRAINER_M2": { + "asm": true, + "label": "Route15CooltrainerM2Text" + }, + "TEXT_ROUTE15_SIGN": { + "label": "Route15SignText", + "text": "_Route15SignText" + }, + "TEXT_ROUTE15_TM_RAGE": { + "asm": true, + "label": "PickUpItemText" + } + }, + "Route15Gate1F": { + "TEXT_ROUTE15GATE1F_GUARD": { + "label": "Route15Gate1FGuardText", + "text": "_Route15Gate1FGuardText" + } + }, + "Route15Gate2F": { + "TEXT_ROUTE15GATE2F_BINOCULARS": { + "asm": true, + "label": "Route15Gate2FBinocularsText", + "text": "_Route15Gate2FBinocularsText" + }, + "TEXT_ROUTE15GATE2F_OAKS_AIDE": { + "asm": true, + "label": "Route15Gate2FOaksAideText", + "text": "_Route15Gate2FOaksAideExpAllText" + } + }, + "Route16": { + "TEXT_ROUTE16_BIKER1": { + "asm": true, + "label": "Route16Biker1Text" + }, + "TEXT_ROUTE16_BIKER2": { + "asm": true, + "label": "Route16Biker2Text" + }, + "TEXT_ROUTE16_BIKER3": { + "asm": true, + "label": "Route16Biker3Text" + }, + "TEXT_ROUTE16_BIKER4": { + "asm": true, + "label": "Route16Biker4Text" + }, + "TEXT_ROUTE16_BIKER5": { + "asm": true, + "label": "Route16Biker5Text" + }, + "TEXT_ROUTE16_BIKER6": { + "asm": true, + "label": "Route16Biker6Text" + }, + "TEXT_ROUTE16_CYCLING_ROAD_SIGN": { + "label": "Route16CyclingRoadSignText", + "text": "_Route16CyclingRoadSignText" + }, + "TEXT_ROUTE16_SIGN": { + "label": "Route16SignText", + "text": "_Route16SignText" + }, + "TEXT_ROUTE16_SNORLAX": { + "label": "Route16SnorlaxText", + "text": "_Route16Text7" + }, + "TEXT_ROUTE16_SNORLAX_RETURNED_TO_MOUNTAINS": { + "label": "Route16SnorlaxReturnedToMountainsText", + "text": "_Route16SnorlaxReturnedToMountainsText" + }, + "TEXT_ROUTE16_SNORLAX_WOKE_UP": { + "label": "Route16SnorlaxWokeUpText", + "text": "_Route16SnorlaxWokeUpText" + } + }, + "Route16FlyHouse": { + "TEXT_ROUTE16FLYHOUSE_BRUNETTE_GIRL": { + "asm": true, + "label": "Route16FlyHouseBrunetteGirlText", + "text": "_Route16FlyHouseBrunetteGirlText" + }, + "TEXT_ROUTE16FLYHOUSE_FEAROW": { + "asm": true, + "label": "Route16FlyHouseFearowText", + "text": "_Route16FlyHouseFearowText" + } + }, + "Route16Gate1F": { + "TEXT_ROUTE16GATE1F_GAMBLER": { + "label": "Route16Gate1FGamblerText", + "text": "_Route16Gate1FGamblerText" + }, + "TEXT_ROUTE16GATE1F_GUARD": { + "asm": true, + "label": "Route16Gate1FGuardText", + "text": "_Route16Gate1FGuardNoPedestriansAllowedText" + }, + "TEXT_ROUTE16GATE1F_GUARD_WAIT_UP": { + "label": "Route16Gate1FGuardWaitUpText", + "text": "_Route16Gate1FGuardWaitUpText" + } + }, + "Route16Gate2F": { + "TEXT_ROUTE16GATE2F_LEFT_BINOCULARS": { + "asm": true, + "label": "Route16Gate2FLeftBinocularsText", + "text": "_Route16Gate2FLeftBinocularsText" + }, + "TEXT_ROUTE16GATE2F_LITTLE_BOY": { + "asm": true, + "label": "Route16Gate2FLittleBoyText", + "text": "_Route16Gate2FLittleBoyText" + }, + "TEXT_ROUTE16GATE2F_LITTLE_GIRL": { + "asm": true, + "label": "Route16Gate2FLittleGirlText", + "text": "_Route16Gate2FLittleGirlText" + }, + "TEXT_ROUTE16GATE2F_RIGHT_BINOCULARS": { + "asm": true, + "label": "Route16Gate2FRightBinocularsText", + "text": "_Route16Gate2FRightBinocularsText" + } + }, + "Route17": { + "TEXT_ROUTE17_BIKER1": { + "asm": true, + "label": "Route17Biker1Text" + }, + "TEXT_ROUTE17_BIKER10": { + "asm": true, + "label": "Route17Biker10Text" + }, + "TEXT_ROUTE17_BIKER2": { + "asm": true, + "label": "Route17Biker2Text" + }, + "TEXT_ROUTE17_BIKER3": { + "asm": true, + "label": "Route17Biker3Text" + }, + "TEXT_ROUTE17_BIKER4": { + "asm": true, + "label": "Route17Biker4Text" + }, + "TEXT_ROUTE17_BIKER5": { + "asm": true, + "label": "Route17Biker5Text" + }, + "TEXT_ROUTE17_BIKER6": { + "asm": true, + "label": "Route17Biker6Text" + }, + "TEXT_ROUTE17_BIKER7": { + "asm": true, + "label": "Route17Biker7Text" + }, + "TEXT_ROUTE17_BIKER8": { + "asm": true, + "label": "Route17Biker8Text" + }, + "TEXT_ROUTE17_BIKER9": { + "asm": true, + "label": "Route17Biker9Text" + }, + "TEXT_ROUTE17_CYCLING_ROAD_ENDS_SIGN": { + "label": "Route17CyclingRoadEndsSignText", + "text": "_Route17CyclingRoadEndsSignText" + }, + "TEXT_ROUTE17_NOTICE_SIGN1": { + "label": "Route17NoticeSign1Text", + "text": "_Route17NoticeSign1Text" + }, + "TEXT_ROUTE17_NOTICE_SIGN2": { + "label": "Route17NoticeSign2Text", + "text": "_Route17NoticeSign2Text" + }, + "TEXT_ROUTE17_SIGN": { + "label": "Route17SignText", + "text": "_Route17SignText" + }, + "TEXT_ROUTE17_TRAINER_TIPS1": { + "label": "Route17TrainerTips1Text", + "text": "_Route17TrainerTips1Text" + }, + "TEXT_ROUTE17_TRAINER_TIPS2": { + "label": "Route17TrainerTips2Text", + "text": "_Route17TrainerTips2Text" + } + }, + "Route18": { + "TEXT_ROUTE18_COOLTRAINER_M1": { + "asm": true, + "label": "Route18CooltrainerM1Text" + }, + "TEXT_ROUTE18_COOLTRAINER_M2": { + "asm": true, + "label": "Route18CooltrainerM2Text" + }, + "TEXT_ROUTE18_COOLTRAINER_M3": { + "asm": true, + "label": "Route18CooltrainerM3Text" + }, + "TEXT_ROUTE18_CYCLING_ROAD_SIGN": { + "label": "Route18CyclingRoadSignText", + "text": "_Route18CyclingRoadSignText" + }, + "TEXT_ROUTE18_SIGN": { + "label": "Route18SignText", + "text": "_Route18SignText" + } + }, + "Route18Gate1F": { + "TEXT_ROUTE18GATE1F_GUARD": { + "asm": true, + "label": "Route18Gate1FGuardText", + "text": "_Route18Gate1FGuardYouNeedABicycleText" + }, + "TEXT_ROUTE18GATE1F_GUARD_EXCUSE_ME": { + "label": "Route18Gate1FGuardExcuseMeText", + "text": "_Route18Gate1FGuardExcuseMeText" + } + }, + "Route18Gate2F": { + "TEXT_ROUTE18GATE2F_COOK": { + "asm": true, + "label": "Route18Gate2FCookText" + }, + "TEXT_ROUTE18GATE2F_LEFT_BINOCULARS": { + "asm": true, + "label": "Route18Gate2FLeftBinocularsText", + "text": "_Route18Gate2FLeftBinocularsText" + }, + "TEXT_ROUTE18GATE2F_RIGHT_BINOCULARS": { + "asm": true, + "label": "Route18Gate2FRightBinocularsText", + "text": "_Route18Gate2FRightBinocularsText" + } + }, + "Route19": { + "TEXT_ROUTE19_COOLTRAINER_M1": { + "asm": true, + "label": "Route19CooltrainerM1Text" + }, + "TEXT_ROUTE19_COOLTRAINER_M2": { + "asm": true, + "label": "Route19CooltrainerM2Text" + }, + "TEXT_ROUTE19_SIGN": { + "label": "Route19SignText", + "text": "_Route19SignText" + }, + "TEXT_ROUTE19_SWIMMER1": { + "asm": true, + "label": "Route19Swimmer1Text" + }, + "TEXT_ROUTE19_SWIMMER2": { + "asm": true, + "label": "Route19Swimmer2Text" + }, + "TEXT_ROUTE19_SWIMMER3": { + "asm": true, + "label": "Route19Swimmer3Text" + }, + "TEXT_ROUTE19_SWIMMER4": { + "asm": true, + "label": "Route19Swimmer4Text" + }, + "TEXT_ROUTE19_SWIMMER5": { + "asm": true, + "label": "Route19Swimmer5Text" + }, + "TEXT_ROUTE19_SWIMMER6": { + "asm": true, + "label": "Route19Swimmer6Text" + }, + "TEXT_ROUTE19_SWIMMER7": { + "asm": true, + "label": "Route19Swimmer7Text" + }, + "TEXT_ROUTE19_SWIMMER8": { + "asm": true, + "label": "Route19Swimmer8Text" + } + }, + "Route2": { + "TEXT_ROUTE2_DIGLETTS_CAVE_SIGN": { + "label": "Route2DiglettsCaveSignText", + "text": "_Route2DiglettsCaveSignText" + }, + "TEXT_ROUTE2_HP_UP": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROUTE2_MOON_STONE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROUTE2_SIGN": { + "label": "Route2SignText", + "text": "_Route2SignText" + } + }, + "Route20": { + "TEXT_ROUTE20_COOLTRAINER_M": { + "asm": true, + "label": "Route20CooltrainerMText" + }, + "TEXT_ROUTE20_SEAFOAM_ISLANDS_EAST_SIGN": { + "label": "Route20SeafoamIslandsSignText", + "text": "_Route20SeafoamIslandsSignText" + }, + "TEXT_ROUTE20_SEAFOAM_ISLANDS_WEST_SIGN": { + "label": "Route20SeafoamIslandsSignText", + "text": "_Route20SeafoamIslandsSignText" + }, + "TEXT_ROUTE20_SWIMMER1": { + "asm": true, + "label": "Route20Swimmer1Text" + }, + "TEXT_ROUTE20_SWIMMER2": { + "asm": true, + "label": "Route20Swimmer2Text" + }, + "TEXT_ROUTE20_SWIMMER3": { + "asm": true, + "label": "Route20Swimmer3Text" + }, + "TEXT_ROUTE20_SWIMMER4": { + "asm": true, + "label": "Route20Swimmer4Text" + }, + "TEXT_ROUTE20_SWIMMER5": { + "asm": true, + "label": "Route20Swimmer5Text" + }, + "TEXT_ROUTE20_SWIMMER6": { + "asm": true, + "label": "Route20Swimmer6Text" + }, + "TEXT_ROUTE20_SWIMMER7": { + "asm": true, + "label": "Route20Swimmer7Text" + }, + "TEXT_ROUTE20_SWIMMER8": { + "asm": true, + "label": "Route20Swimmer8Text" + }, + "TEXT_ROUTE20_SWIMMER9": { + "asm": true, + "label": "Route20Swimmer9Text" + } + }, + "Route21": { + "TEXT_ROUTE21_FISHER1": { + "asm": true, + "label": "Route21Fisher1Text" + }, + "TEXT_ROUTE21_FISHER2": { + "asm": true, + "label": "Route21Fisher2Text" + }, + "TEXT_ROUTE21_FISHER3": { + "asm": true, + "label": "Route21Fisher3Text" + }, + "TEXT_ROUTE21_FISHER4": { + "asm": true, + "label": "Route21Fisher4Text" + }, + "TEXT_ROUTE21_SWIMMER1": { + "asm": true, + "label": "Route21Swimmer1Text" + }, + "TEXT_ROUTE21_SWIMMER2": { + "asm": true, + "label": "Route21Swimmer2Text" + }, + "TEXT_ROUTE21_SWIMMER3": { + "asm": true, + "label": "Route21Swimmer3Text" + }, + "TEXT_ROUTE21_SWIMMER4": { + "asm": true, + "label": "Route21Swimmer4Text" + }, + "TEXT_ROUTE21_SWIMMER5": { + "asm": true, + "label": "Route21Swimmer5Text" + } + }, + "Route22": { + "TEXT_ROUTE22_POKEMON_LEAGUE_SIGN": { + "asm": true, + "label": "Route22PokemonLeagueSignText" + }, + "TEXT_ROUTE22_RIVAL1": { + "asm": true, + "label": "Route22Rival1Text" + }, + "TEXT_ROUTE22_RIVAL2": { + "asm": true, + "label": "Route22Rival2Text" + } + }, + "Route22Gate": { + "TEXT_ROUTE22GATE_GUARD": { + "asm": true, + "label": "Route22GateGuardText" + } + }, + "Route23": { + "TEXT_ROUTE23_GUARD1": { + "asm": true, + "label": "Route23Guard1Text" + }, + "TEXT_ROUTE23_GUARD2": { + "asm": true, + "label": "Route23Guard2Text" + }, + "TEXT_ROUTE23_GUARD3": { + "asm": true, + "label": "Route23Guard3Text" + }, + "TEXT_ROUTE23_GUARD4": { + "asm": true, + "label": "Route23Guard4Text" + }, + "TEXT_ROUTE23_GUARD5": { + "asm": true, + "label": "Route23Guard5Text" + }, + "TEXT_ROUTE23_SWIMMER1": { + "asm": true, + "label": "Route23Swimmer1Text" + }, + "TEXT_ROUTE23_SWIMMER2": { + "asm": true, + "label": "Route23Swimmer2Text" + }, + "TEXT_ROUTE23_VICTORY_ROAD_GATE_SIGN": { + "label": "Route23VictoryRoadGateSignText", + "text": "_Route23VictoryRoadGateSignText" + } + }, + "Route24": { + "TEXT_ROUTE24_COOLTRAINER_F1": { + "asm": true, + "label": "Route24CooltrainerF1Text" + }, + "TEXT_ROUTE24_COOLTRAINER_F2": { + "asm": true, + "label": "Route24CooltrainerF2Text" + }, + "TEXT_ROUTE24_COOLTRAINER_M1": { + "asm": true, + "label": "Route24CooltrainerM1Text", + "text": "_Route24CooltrainerM1YouBeatOurContestText" + }, + "TEXT_ROUTE24_COOLTRAINER_M2": { + "asm": true, + "label": "Route24CooltrainerM2Text" + }, + "TEXT_ROUTE24_COOLTRAINER_M3": { + "asm": true, + "label": "Route24CooltrainerM3Text" + }, + "TEXT_ROUTE24_COOLTRAINER_M4": { + "asm": true, + "label": "Route24CooltrainerM4Text" + }, + "TEXT_ROUTE24_TM_THUNDER_WAVE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROUTE24_YOUNGSTER1": { + "asm": true, + "label": "Route24Youngster1Text" + }, + "TEXT_ROUTE24_YOUNGSTER2": { + "asm": true, + "label": "Route24Youngster2Text" + } + }, + "Route25": { + "TEXT_ROUTE25_BILL_SIGN": { + "label": "Route25BillSignText", + "text": "_Route25BillSignText" + }, + "TEXT_ROUTE25_COOLTRAINER_F1": { + "asm": true, + "label": "Route25CooltrainerF1Text" + }, + "TEXT_ROUTE25_COOLTRAINER_F2": { + "asm": true, + "label": "Route25CooltrainerF2Text" + }, + "TEXT_ROUTE25_COOLTRAINER_M": { + "asm": true, + "label": "Route25CooltrainerMText" + }, + "TEXT_ROUTE25_HIKER1": { + "asm": true, + "label": "Route25Hiker1Text" + }, + "TEXT_ROUTE25_HIKER2": { + "asm": true, + "label": "Route25Hiker2Text" + }, + "TEXT_ROUTE25_HIKER3": { + "asm": true, + "label": "Route25Hiker3Text" + }, + "TEXT_ROUTE25_TM_SEISMIC_TOSS": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROUTE25_YOUNGSTER1": { + "asm": true, + "label": "Route25Youngster1Text" + }, + "TEXT_ROUTE25_YOUNGSTER2": { + "asm": true, + "label": "Route25Youngster2Text" + }, + "TEXT_ROUTE25_YOUNGSTER3": { + "asm": true, + "label": "Route25Youngster3Text" + } + }, + "Route2Gate": { + "TEXT_ROUTE2GATE_OAKS_AIDE": { + "asm": true, + "label": "Route2GateOaksAideText", + "text": "_Route2GateOaksAideFlashExplanationText" + }, + "TEXT_ROUTE2GATE_YOUNGSTER": { + "label": "Route2GateYoungsterText", + "text": "_Route2GateYoungsterText" + } + }, + "Route2TradeHouse": { + "TEXT_ROUTE2TRADEHOUSE_GAMEBOY_KID": { + "asm": true, + "label": "Route2TradeHouseGameboyKidText" + }, + "TEXT_ROUTE2TRADEHOUSE_SCIENTIST": { + "label": "Route2TradeHouseScientistText", + "text": "_Route2TradeHouseScientistText" + } + }, + "Route3": { + "TEXT_ROUTE3_COOLTRAINER_F1": { + "asm": true, + "label": "Route3CooltrainerF1Text" + }, + "TEXT_ROUTE3_COOLTRAINER_F2": { + "asm": true, + "label": "Route3CooltrainerF2Text" + }, + "TEXT_ROUTE3_COOLTRAINER_F3": { + "asm": true, + "label": "Route3CooltrainerF3Text" + }, + "TEXT_ROUTE3_SIGN": { + "label": "Route3SignText", + "text": "_Route3SignText" + }, + "TEXT_ROUTE3_SUPER_NERD": { + "label": "Route3SuperNerdText", + "text": "_Route3Text1" + }, + "TEXT_ROUTE3_YOUNGSTER1": { + "asm": true, + "label": "Route3Youngster1Text" + }, + "TEXT_ROUTE3_YOUNGSTER2": { + "asm": true, + "label": "Route3Youngster2Text" + }, + "TEXT_ROUTE3_YOUNGSTER3": { + "asm": true, + "label": "Route3Youngster3Text" + }, + "TEXT_ROUTE3_YOUNGSTER4": { + "asm": true, + "label": "Route3Youngster4Text" + }, + "TEXT_ROUTE3_YOUNGSTER5": { + "asm": true, + "label": "Route3Youngster5Text" + } + }, + "Route4": { + "TEXT_ROUTE4_COOLTRAINER_F1": { + "label": "Route4CooltrainerF1Text", + "text": "_Route4CooltrainerF1Text" + }, + "TEXT_ROUTE4_COOLTRAINER_F2": { + "asm": true, + "label": "Route4CooltrainerF2Text" + }, + "TEXT_ROUTE4_MT_MOON_SIGN": { + "label": "Route4MtMoonSignText", + "text": "_Route4MtMoonSignText" + }, + "TEXT_ROUTE4_POKECENTER_SIGN": { + "asm": true, + "label": "PokeCenterSignText" + }, + "TEXT_ROUTE4_SIGN": { + "label": "Route4SignText", + "text": "_Route4SignText" + }, + "TEXT_ROUTE4_TM_WHIRLWIND": { + "asm": true, + "label": "PickUpItemText" + } + }, + "Route5": { + "TEXT_ROUTE5_UNDERGROUND_PATH_SIGN": { + "label": "Route5UndergroundPathSignText", + "text": "_Route5UndergroundPathSignText" + } + }, + "Route5Gate": { + "TEXT_ROUTE5GATE_GUARD": { + "asm": true, + "label": "SaffronGateGuardText" + }, + "TEXT_ROUTE5GATE_GUARD_GEE_IM_THIRSTY": { + "label": "SaffronGateGuardGeeImThirstyText", + "text": "_SaffronGateGuardGeeImThirstyText" + }, + "TEXT_ROUTE5GATE_GUARD_GIVE_DRINK": { + "label": "SaffronGateGuardGiveDrinkText", + "text": "_SaffronGateGuardImParchedText" + } + }, + "Route6": { + "TEXT_ROUTE6_COOLTRAINER_F1": { + "asm": true, + "label": "Route6CooltrainerF1Text" + }, + "TEXT_ROUTE6_COOLTRAINER_F2": { + "asm": true, + "label": "Route6CooltrainerF2Text" + }, + "TEXT_ROUTE6_COOLTRAINER_M1": { + "asm": true, + "label": "Route6CooltrainerM1Text" + }, + "TEXT_ROUTE6_COOLTRAINER_M2": { + "asm": true, + "label": "Route6CooltrainerM2Text" + }, + "TEXT_ROUTE6_UNDERGROUND_PATH_SIGN": { + "label": "Route6UndergroundPathSignText", + "text": "_Route6UndergroundPathSignText" + }, + "TEXT_ROUTE6_YOUNGSTER1": { + "asm": true, + "label": "Route6Youngster1Text" + }, + "TEXT_ROUTE6_YOUNGSTER2": { + "asm": true, + "label": "Route6Youngster2Text" + } + }, + "Route6Gate": { + "TEXT_ROUTE6GATE_GUARD": { + "asm": true, + "label": "SaffronGateGuardText" + }, + "TEXT_ROUTE6GATE_GUARD_GEE_IM_THIRSTY": { + "asm": true, + "label": "SaffronGateGuardGeeImThirstyText" + }, + "TEXT_ROUTE6GATE_GUARD_GIVE_DRINK": { + "asm": true, + "label": "SaffronGateGuardGiveDrinkText" + } + }, + "Route7": { + "TEXT_ROUTE7_UNDERGROUND_PATH_SIGN": { + "label": "Route7UndergroundPathSignText", + "text": "_Route7UndergroundPathSignText" + } + }, + "Route7Gate": { + "TEXT_ROUTE7GATE_GUARD": { + "asm": true, + "label": "SaffronGateGuardText" + }, + "TEXT_ROUTE7GATE_GUARD_GEE_IM_THIRSTY": { + "asm": true, + "label": "SaffronGateGuardGeeImThirstyText" + }, + "TEXT_ROUTE7GATE_GUARD_GIVE_DRINK": { + "asm": true, + "label": "SaffronGateGuardGiveDrinkText" + } + }, + "Route8": { + "TEXT_ROUTE8_COOLTRAINER_F1": { + "asm": true, + "label": "Route8CooltrainerF1Text" + }, + "TEXT_ROUTE8_COOLTRAINER_F2": { + "asm": true, + "label": "Route8CooltrainerF2Text" + }, + "TEXT_ROUTE8_COOLTRAINER_F3": { + "asm": true, + "label": "Route8CooltrainerF3Text" + }, + "TEXT_ROUTE8_COOLTRAINER_F4": { + "asm": true, + "label": "Route8CooltrainerF4Text" + }, + "TEXT_ROUTE8_GAMBLER1": { + "asm": true, + "label": "Route8Gambler1Text" + }, + "TEXT_ROUTE8_GAMBLER2": { + "asm": true, + "label": "Route8Gambler2Text" + }, + "TEXT_ROUTE8_SUPER_NERD1": { + "asm": true, + "label": "Route8SuperNerd1Text" + }, + "TEXT_ROUTE8_SUPER_NERD2": { + "asm": true, + "label": "Route8SuperNerd2Text" + }, + "TEXT_ROUTE8_SUPER_NERD3": { + "asm": true, + "label": "Route8SuperNerd3Text" + }, + "TEXT_ROUTE8_UNDERGROUND_SIGN": { + "label": "Route8UndergroundSignText", + "text": "_Route8UndergroundSignText" + } + }, + "Route8Gate": { + "TEXT_ROUTE8GATE_GUARD": { + "asm": true, + "label": "SaffronGateGuardText" + }, + "TEXT_ROUTE8GATE_GUARD_GEE_IM_THIRSTY": { + "asm": true, + "label": "SaffronGateGuardGeeImThirstyText" + }, + "TEXT_ROUTE8GATE_GUARD_GIVE_DRINK": { + "asm": true, + "label": "SaffronGateGuardGiveDrinkText" + } + }, + "Route9": { + "TEXT_ROUTE9_COOLTRAINER_F1": { + "asm": true, + "label": "Route9CooltrainerF1Text" + }, + "TEXT_ROUTE9_COOLTRAINER_F2": { + "asm": true, + "label": "Route9CooltrainerF2Text" + }, + "TEXT_ROUTE9_COOLTRAINER_M1": { + "asm": true, + "label": "Route9AJText" + }, + "TEXT_ROUTE9_COOLTRAINER_M2": { + "asm": true, + "label": "Route9CooltrainerM2Text" + }, + "TEXT_ROUTE9_HIKER1": { + "asm": true, + "label": "Route9Hiker1Text" + }, + "TEXT_ROUTE9_HIKER2": { + "asm": true, + "label": "Route9Hiker2Text" + }, + "TEXT_ROUTE9_HIKER3": { + "asm": true, + "label": "Route9Hiker3Text" + }, + "TEXT_ROUTE9_SIGN": { + "label": "Route9SignText", + "text": "_Route9SignText" + }, + "TEXT_ROUTE9_TM_TELEPORT": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_ROUTE9_YOUNGSTER1": { + "asm": true, + "label": "Route9Youngster1Text" + }, + "TEXT_ROUTE9_YOUNGSTER2": { + "asm": true, + "label": "Route9Youngster2Text" + } + }, + "SSAnne1F": { + "TEXT_SSANNE1F_SAILOR": { + "label": "SSAnne1FSailorText", + "text": "_SSAnne1FSailorText" + }, + "TEXT_SSANNE1F_WAITER": { + "label": "SSAnne1FWaiterText", + "text": "_SSAnne1FWaiterText" + } + }, + "SSAnne1FRooms": { + "TEXT_SSANNE1FROOMS_COOLTRAINER_F": { + "asm": true, + "label": "SSAnne1FRoomsCooltrainerFText" + }, + "TEXT_SSANNE1FROOMS_GENTLEMAN1": { + "asm": true, + "label": "SSAnne1FRoomsGentleman1Text" + }, + "TEXT_SSANNE1FROOMS_GENTLEMAN2": { + "asm": true, + "label": "SSAnne1FRoomsGentleman2Text" + }, + "TEXT_SSANNE1FROOMS_GENTLEMAN3": { + "label": "SSAnne1FRoomsGentleman3Text", + "text": "_SSAnne1FRoomsGentleman3Text" + }, + "TEXT_SSANNE1FROOMS_GIRL1": { + "label": "SSAnne1FRoomsGirl1Text", + "text": "_SSAnne1FRoomsGirl1Text" + }, + "TEXT_SSANNE1FROOMS_GIRL2": { + "label": "SSAnne1FRoomsGirl2Text", + "text": "_SSAnne1FRoomsGirl2Text" + }, + "TEXT_SSANNE1FROOMS_LITTLE_GIRL": { + "label": "SSAnne1FRoomsLittleGirlText", + "text": "_SSAnne1FRoomsLittleGirlText" + }, + "TEXT_SSANNE1FROOMS_MIDDLE_AGED_MAN": { + "label": "SSAnne1FRoomsMiddleAgedManText", + "text": "_SSAnne1FRoomsMiddleAgedManText" + }, + "TEXT_SSANNE1FROOMS_TM_BODY_SLAM": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SSANNE1FROOMS_WIGGLYTUFF": { + "asm": true, + "label": "SSAnne1FRoomsWigglytuffText", + "text": "_SSAnne1FRoomsWigglytuffText" + }, + "TEXT_SSANNE1FROOMS_YOUNGSTER": { + "asm": true, + "label": "SSAnne1FRoomsYoungsterText" + } + }, + "SSAnne2F": { + "TEXT_SSANNE2F_RIVAL": { + "asm": true, + "label": "SSAnne2FRivalText", + "text": "_SSAnne2FRivalText" + }, + "TEXT_SSANNE2F_RIVAL_CUT_MASTER": { + "label": "SSAnne2FRivalCutMasterText", + "text": "_SSAnne2FRivalCutMasterText" + }, + "TEXT_SSANNE2F_WAITER": { + "label": "SSAnne2FWaiterText", + "text": "_SSAnne2FWaiterText" + } + }, + "SSAnne2FRooms": { + "TEXT_SSANNE2FROOMS_BEAUTY": { + "asm": true, + "label": "SSAnne2FRoomsBeautyText" + }, + "TEXT_SSANNE2FROOMS_BRUNETTE_GIRL": { + "asm": true, + "label": "SSAnne2FRoomsBrunetteGirlText" + }, + "TEXT_SSANNE2FROOMS_COOLTRAINER_F": { + "asm": true, + "label": "SSAnne2FRoomsCooltrainerFText" + }, + "TEXT_SSANNE2FROOMS_FISHER": { + "asm": true, + "label": "SSAnne2FRoomsFisherText" + }, + "TEXT_SSANNE2FROOMS_GENTLEMAN1": { + "asm": true, + "label": "SSAnne2FRoomsGentleman1Text" + }, + "TEXT_SSANNE2FROOMS_GENTLEMAN2": { + "asm": true, + "label": "SSAnne2FRoomsGentleman2Text" + }, + "TEXT_SSANNE2FROOMS_GENTLEMAN3": { + "asm": true, + "label": "SSAnne2FRoomsGentleman3Text", + "text": "_SSAnne2FRoomsGentleman3Text" + }, + "TEXT_SSANNE2FROOMS_GENTLEMAN4": { + "asm": true, + "label": "SSAnne2FRoomsGentleman4Text", + "text": "_SSAnne2FRoomsGentleman4Text" + }, + "TEXT_SSANNE2FROOMS_GENTLEMAN5": { + "asm": true, + "label": "SSAnne2FRoomsGentleman5Text" + }, + "TEXT_SSANNE2FROOMS_GRAMPS": { + "asm": true, + "label": "SSAnne2FRoomsGrampsText", + "text": "_SSAnne2FRoomsGrampsText" + }, + "TEXT_SSANNE2FROOMS_LITTLE_BOY": { + "asm": true, + "label": "SSAnne2FRoomsLittleBoyText" + }, + "TEXT_SSANNE2FROOMS_MAX_ETHER": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SSANNE2FROOMS_RARE_CANDY": { + "asm": true, + "label": "PickUpItemText" + } + }, + "SSAnne3F": { + "TEXT_SSANNE3F_SAILOR": { + "label": "SSAnne3FSailorText", + "text": "_SSAnne3FSailorText" + } + }, + "SSAnneB1FRooms": { + "TEXT_SSANNEB1FROOMS_ETHER": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SSANNEB1FROOMS_FISHER": { + "asm": true, + "label": "SSAnneB1FRoomsFisherText" + }, + "TEXT_SSANNEB1FROOMS_MACHOKE": { + "asm": true, + "label": "SSAnneB1FRoomsMachokeText", + "text": "_SSAnneB1FRoomsMachokeText" + }, + "TEXT_SSANNEB1FROOMS_MAX_POTION": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SSANNEB1FROOMS_SAILOR1": { + "asm": true, + "label": "SSAnneB1FRoomsSailor1Text" + }, + "TEXT_SSANNEB1FROOMS_SAILOR2": { + "asm": true, + "label": "SSAnneB1FRoomsSailor2Text" + }, + "TEXT_SSANNEB1FROOMS_SAILOR3": { + "asm": true, + "label": "SSAnneB1FRoomsSailor3Text" + }, + "TEXT_SSANNEB1FROOMS_SAILOR4": { + "asm": true, + "label": "SSAnneB1FRoomsSailor4Text" + }, + "TEXT_SSANNEB1FROOMS_SAILOR5": { + "asm": true, + "label": "SSAnneB1FRoomsSailor5Text" + }, + "TEXT_SSANNEB1FROOMS_SUPER_NERD": { + "label": "SSAnneB1FRoomsSuperNerdText", + "text": "_SSAnneB1FRoomsSuperNerdText" + }, + "TEXT_SSANNEB1FROOMS_TM_REST": { + "asm": true, + "label": "PickUpItemText" + } + }, + "SSAnneBow": { + "TEXT_SSANNEBOW_COOLTRAINER_M": { + "label": "SSAnneBowCooltrainerMText", + "text": "_SSAnneBowCooltrainerMText" + }, + "TEXT_SSANNEBOW_SAILOR1": { + "label": "SSAnneBowSailor1Text", + "text": "_SSAnneBowSailor1Text" + }, + "TEXT_SSANNEBOW_SAILOR2": { + "asm": true, + "label": "SSAnneBowSailor2Text" + }, + "TEXT_SSANNEBOW_SAILOR3": { + "asm": true, + "label": "SSAnneBowSailor3Text" + }, + "TEXT_SSANNEBOW_SUPER_NERD": { + "label": "SSAnneBowSuperNerdText", + "text": "_SSAnneBowSuperNerdText" + } + }, + "SSAnneCaptainsRoom": { + "TEXT_SSANNECAPTAINSROOM_CAPTAIN": { + "asm": true, + "label": "SSAnneCaptainsRoomCaptainText" + }, + "TEXT_SSANNECAPTAINSROOM_SEASICK_BOOK": { + "label": "SSAnneCaptainsRoomSeasickBookText", + "text": "_SSAnneCaptainsRoomSeasickBookText" + }, + "TEXT_SSANNECAPTAINSROOM_TRASH": { + "label": "SSAnneCaptainsRoomTrashText", + "text": "_SSAnneCaptainsRoomTrashText" + } + }, + "SSAnneKitchen": { + "TEXT_SSANNEKITCHEN_COOK1": { + "label": "SSAnneKitchenCook1Text", + "text": "_SSAnneKitchenCook1Text" + }, + "TEXT_SSANNEKITCHEN_COOK2": { + "label": "SSAnneKitchenCook2Text", + "text": "_SSAnneKitchenCook2Text" + }, + "TEXT_SSANNEKITCHEN_COOK3": { + "label": "SSAnneKitchenCook3Text", + "text": "_SSAnneKitchenCook3Text" + }, + "TEXT_SSANNEKITCHEN_COOK4": { + "label": "SSAnneKitchenCook4Text", + "text": "_SSAnneKitchenCook4Text" + }, + "TEXT_SSANNEKITCHEN_COOK5": { + "label": "SSAnneKitchenCook5Text", + "text": "_SSAnneKitchenCook5Text" + }, + "TEXT_SSANNEKITCHEN_COOK6": { + "label": "SSAnneKitchenCook6Text", + "text": "_SSAnneKitchenCook6Text" + }, + "TEXT_SSANNEKITCHEN_COOK7": { + "asm": true, + "label": "SSAnneKitchenCook7Text", + "text": "_SSAnneKitchenCook7MainCourseIsText" + } + }, + "SafariZoneCenter": { + "TEXT_SAFARIZONECENTER_NUGGET": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SAFARIZONECENTER_REST_HOUSE_SIGN": { + "label": "SafariZoneCenterRestHouseSignText", + "text": "_SafariZoneCenterRestHouseSignText" + }, + "TEXT_SAFARIZONECENTER_TRAINER_TIPS_SIGN": { + "label": "SafariZoneCenterTrainerTipsSignText", + "text": "_SafariZoneCenterTrainerTipsSignText" + } + }, + "SafariZoneCenterRestHouse": { + "TEXT_SAFARIZONECENTERRESTHOUSE_GIRL": { + "label": "SafariZoneCenterRestHouseGirlText", + "text": "_SafariZoneCenterRestHouseGirlText" + }, + "TEXT_SAFARIZONECENTERRESTHOUSE_SCIENTIST": { + "label": "SafariZoneCenterRestHouseScientistText", + "text": "_SafariZoneCenterRestHouseScientistText" + } + }, + "SafariZoneEast": { + "TEXT_SAFARIZONEEAST_CARBOS": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SAFARIZONEEAST_FULL_RESTORE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SAFARIZONEEAST_MAX_RESTORE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SAFARIZONEEAST_REST_HOUSE_SIGN": { + "label": "SafariZoneEastRestHouseSignText", + "text": "_SafariZoneEastRestHouseSignText" + }, + "TEXT_SAFARIZONEEAST_SIGN": { + "label": "SafariZoneEastSignText", + "text": "_SafariZoneEastSignText" + }, + "TEXT_SAFARIZONEEAST_TM_EGG_BOMB": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SAFARIZONEEAST_TRAINER_TIPS": { + "label": "SafariZoneEastTrainerTipsText", + "text": "_SafariZoneEastTrainerTipsText" + } + }, + "SafariZoneEastRestHouse": { + "TEXT_SAFARIZONEEASTRESTHOUSE_ROCKER": { + "label": "SafariZoneEastRestHouseRockerText", + "text": "_SafariZoneEastRestHouseRockerText" + }, + "TEXT_SAFARIZONEEASTRESTHOUSE_SCIENTIST": { + "label": "SafariZoneEastRestHouseScientistText", + "text": "_SafariZoneEastRestHouseScientistText" + }, + "TEXT_SAFARIZONEEASTRESTHOUSE_SILPH_WORKER_M": { + "label": "SafariZoneEastRestHouseSilphWorkerMText", + "text": "_SafariZoneEastRestHouseSilphWorkerMText" + } + }, + "SafariZoneGate": { + "TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1": { + "label": "SafariZoneGateSafariZoneWorker1Text", + "text": "_SafariZoneGateSafariZoneWorker1Text" + }, + "TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_1": { + "label": "SafariZoneGateSafariZoneWorker1Text", + "text": "_SafariZoneGateSafariZoneWorker1Text" + }, + "TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_GOOD_HAUL_COME_AGAIN": { + "label": "SafariZoneGateSafariZoneWorker1GoodHaulComeAgainText", + "text": "_SafariZoneGateSafariZoneWorker1GoodHaulComeAgainText" + }, + "TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_LEAVING_EARLY": { + "asm": true, + "label": "SafariZoneGateSafariZoneWorker1LeavingEarlyText", + "text": "_SafariZoneGateSafariZoneWorker1LeavingEarlyText" + }, + "TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_WOULD_YOU_LIKE_TO_JOIN": { + "asm": true, + "label": "SafariZoneGateSafariZoneWorker1WouldYouLikeToJoinText" + }, + "TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER2": { + "asm": true, + "label": "SafariZoneGateSafariZoneWorker2Text" + } + }, + "SafariZoneNorth": { + "TEXT_SAFARIZONENORTH_PROTEIN": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SAFARIZONENORTH_REST_HOUSE_SIGN": { + "label": "SafariZoneNorthRestHouseSignText", + "text": "_SafariZoneNorthRestHouseSignText" + }, + "TEXT_SAFARIZONENORTH_SIGN": { + "label": "SafariZoneNorthSignText", + "text": "_SafariZoneNorthSignText" + }, + "TEXT_SAFARIZONENORTH_TM_SKULL_BASH": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SAFARIZONENORTH_TRAINER_TIPS_1": { + "label": "SafariZoneNorthTrainerTips1Text", + "text": "_SafariZoneNorthTrainerTips1Text" + }, + "TEXT_SAFARIZONENORTH_TRAINER_TIPS_2": { + "label": "SafariZoneNorthTrainerTips2Text", + "text": "_SafariZoneNorthTrainerTips2Text" + }, + "TEXT_SAFARIZONENORTH_TRAINER_TIPS_3": { + "label": "SafariZoneNorthTrainerTips3Text", + "text": "_SafariZoneNorthTrainerTips3Text" + } + }, + "SafariZoneNorthRestHouse": { + "TEXT_SAFARIZONENORTHRESTHOUSE_GENTLEMAN": { + "label": "SafariZoneNorthRestHouseGentlemanText", + "text": "_SafariZoneNorthRestHouseGentlemanText" + }, + "TEXT_SAFARIZONENORTHRESTHOUSE_SAFARI_ZONE_WORKER": { + "label": "SafariZoneNorthRestHouseSafariZoneWorkerText", + "text": "_SafariZoneNorthRestHouseSafariZoneWorkerText" + }, + "TEXT_SAFARIZONENORTHRESTHOUSE_SCIENTIST": { + "label": "SafariZoneNorthRestHouseScientistText", + "text": "_SafariZoneNorthRestHouseScientistText" + } + }, + "SafariZoneSecretHouse": { + "TEXT_SAFARIZONESECRETHOUSE_FISHING_GURU": { + "asm": true, + "label": "SafariZoneSecretHouseFishingGuruText", + "text": "_SafariZoneSecretHouseFishingGuruYouHaveWonText" + } + }, + "SafariZoneWest": { + "TEXT_SAFARIZONEWEST_FIND_WARDENS_TEETH_SIGN": { + "label": "SafariZoneWestFindWardensTeethSignText", + "text": "_SafariZoneWestFindWardensTeethSignText" + }, + "TEXT_SAFARIZONEWEST_GOLD_TEETH": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SAFARIZONEWEST_MAX_POTION": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SAFARIZONEWEST_MAX_REVIVE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SAFARIZONEWEST_REST_HOUSE_SIGN": { + "label": "SafariZoneWestRestHouseSignText", + "text": "_SafariZoneWestRestHouseSignText" + }, + "TEXT_SAFARIZONEWEST_SIGN": { + "label": "SafariZoneWestSignText", + "text": "_SafariZoneWestSignText" + }, + "TEXT_SAFARIZONEWEST_TM_DOUBLE_TEAM": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SAFARIZONEWEST_TRAINER_TIPS": { + "label": "SafariZoneWestTrainerTipsText", + "text": "_SafariZoneWestTrainerTipsText" + } + }, + "SafariZoneWestRestHouse": { + "TEXT_SAFARIZONEWESTRESTHOUSE_COOLTRAINER_M": { + "label": "SafariZoneWestRestHouseCooltrainerMText", + "text": "_SafariZoneWestRestHouseCooltrainerMText" + }, + "TEXT_SAFARIZONEWESTRESTHOUSE_SCIENTIST": { + "label": "SafariZoneWestRestHouseScientistText", + "text": "_SafariZoneWestRestHouseScientistText" + }, + "TEXT_SAFARIZONEWESTRESTHOUSE_SILPH_WORKER_F": { + "label": "SafariZoneWestRestHouseSilphWorkerFText", + "text": "_SafariZoneWestRestHouseSilphWorkerFText" + } + }, + "SaffronCity": { + "TEXT_SAFFRONCITY_FIGHTING_DOJO_SIGN": { + "label": "SaffronCityFightingDojoSignText", + "text": "_SaffronCityFightingDojoSignText" + }, + "TEXT_SAFFRONCITY_GENTLEMAN": { + "label": "SaffronCityGentlemanText", + "text": "_SaffronCityGentlemanText" + }, + "TEXT_SAFFRONCITY_GYM_SIGN": { + "label": "SaffronCityGymSignText", + "text": "_SaffronCityGymSignText" + }, + "TEXT_SAFFRONCITY_MART_SIGN": { + "asm": true, + "label": "MartSignText" + }, + "TEXT_SAFFRONCITY_MR_PSYCHICS_HOUSE_SIGN": { + "label": "SaffronCityMrPsychicsHouseSignText", + "text": "_SaffronCityMrPsychicsHouseSignText" + }, + "TEXT_SAFFRONCITY_PIDGEOT": { + "label": "SaffronCityPidgeotText", + "text": "_SaffronCityPidgeotText" + }, + "TEXT_SAFFRONCITY_POKECENTER_SIGN": { + "asm": true, + "label": "PokeCenterSignText" + }, + "TEXT_SAFFRONCITY_ROCKER": { + "label": "SaffronCityRockerText", + "text": "_SaffronCityRockerText" + }, + "TEXT_SAFFRONCITY_ROCKET1": { + "label": "SaffronCityRocket1Text", + "text": "_SaffronCityRocket1Text" + }, + "TEXT_SAFFRONCITY_ROCKET2": { + "label": "SaffronCityRocket2Text", + "text": "_SaffronCityRocket2Text" + }, + "TEXT_SAFFRONCITY_ROCKET3": { + "label": "SaffronCityRocket3Text", + "text": "_SaffronCityRocket3Text" + }, + "TEXT_SAFFRONCITY_ROCKET4": { + "label": "SaffronCityRocket4Text", + "text": "_SaffronCityRocket4Text" + }, + "TEXT_SAFFRONCITY_ROCKET5": { + "label": "SaffronCityRocket5Text", + "text": "_SaffronCityRocket5Text" + }, + "TEXT_SAFFRONCITY_ROCKET6": { + "label": "SaffronCityRocket6Text", + "text": "_SaffronCityRocket6Text" + }, + "TEXT_SAFFRONCITY_ROCKET7": { + "label": "SaffronCityRocket7Text", + "text": "_SaffronCityRocket7Text" + }, + "TEXT_SAFFRONCITY_ROCKET8": { + "label": "SaffronCityRocket8Text", + "text": "_SaffronCityRocket8Text" + }, + "TEXT_SAFFRONCITY_ROCKET9": { + "label": "SaffronCityRocket9Text", + "text": "_SaffronCityRocket9Text" + }, + "TEXT_SAFFRONCITY_SCIENTIST": { + "label": "SaffronCityScientistText", + "text": "_SaffronCityScientistText" + }, + "TEXT_SAFFRONCITY_SIGN": { + "label": "SaffronCitySignText", + "text": "_SaffronCitySignText" + }, + "TEXT_SAFFRONCITY_SILPH_CO_LATEST_PRODUCT_SIGN": { + "label": "SaffronCitySilphCoLatestProductSignText", + "text": "_SaffronCitySilphCoLatestProductSignText" + }, + "TEXT_SAFFRONCITY_SILPH_CO_SIGN": { + "label": "SaffronCitySilphCoSignText", + "text": "_SaffronCitySilphCoSignText" + }, + "TEXT_SAFFRONCITY_SILPH_WORKER_F": { + "label": "SaffronCitySilphWorkerFText", + "text": "_SaffronCitySilphWorkerFText" + }, + "TEXT_SAFFRONCITY_SILPH_WORKER_M": { + "label": "SaffronCitySilphWorkerMText", + "text": "_SaffronCitySilphWorkerMText" + }, + "TEXT_SAFFRONCITY_TRAINER_TIPS1": { + "label": "SaffronCityTrainerTips1Text", + "text": "_SaffronCityTrainerTips1Text" + }, + "TEXT_SAFFRONCITY_TRAINER_TIPS2": { + "label": "SaffronCityTrainerTips2Text", + "text": "_SaffronCityTrainerTips2Text" + } + }, + "SaffronGym": { + "TEXT_SAFFRONGYM_CHANNELER1": { + "asm": true, + "label": "SaffronGymChanneler1Text" + }, + "TEXT_SAFFRONGYM_CHANNELER2": { + "asm": true, + "label": "SaffronGymChanneler2Text" + }, + "TEXT_SAFFRONGYM_CHANNELER3": { + "asm": true, + "label": "SaffronGymChanneler3Text" + }, + "TEXT_SAFFRONGYM_GYM_GUIDE": { + "asm": true, + "label": "SaffronGymGymGuideText", + "text": "_SaffronGymGuideChampInMakingText" + }, + "TEXT_SAFFRONGYM_SABRINA": { + "asm": true, + "label": "SaffronGymSabrinaText", + "text": "_SaffronGymSabrinaText" + }, + "TEXT_SAFFRONGYM_SABRINA_MARSH_BADGE_INFO": { + "label": "SaffronGymSabrinaMarshBadgeInfoText", + "text": "_SaffronGymSabrinaMarshBadgeInfoText" + }, + "TEXT_SAFFRONGYM_SABRINA_RECEIVED_TM46": { + "label": "SaffronGymSabrinaReceivedTM46Text", + "text": "_SaffronGymSabrinaReceivedTM46Text" + }, + "TEXT_SAFFRONGYM_SABRINA_TM46_NO_ROOM": { + "label": "SaffronGymSabrinaTM46NoRoomText", + "text": "_SaffronGymSabrinaTM46NoRoomText" + }, + "TEXT_SAFFRONGYM_YOUNGSTER1": { + "asm": true, + "label": "SaffronGymYoungster1Text" + }, + "TEXT_SAFFRONGYM_YOUNGSTER2": { + "asm": true, + "label": "SaffronGymYoungster2Text" + }, + "TEXT_SAFFRONGYM_YOUNGSTER3": { + "asm": true, + "label": "SaffronGymYoungster3Text" + }, + "TEXT_SAFFRONGYM_YOUNGSTER4": { + "asm": true, + "label": "SaffronGymYoungster4Text" + } + }, + "SaffronMart": { + "TEXT_SAFFRONMART_CLERK": { + "label": "SaffronMartClerkText", + "mart": [ + "GREAT_BALL", + "HYPER_POTION", + "MAX_REPEL", + "ESCAPE_ROPE", + "FULL_HEAL", + "REVIVE" + ] + }, + "TEXT_SAFFRONMART_COOLTRAINER_F": { + "label": "SaffronMartCooltrainerFText", + "text": "_SaffronMartCooltrainerFText" + }, + "TEXT_SAFFRONMART_SUPER_NERD": { + "label": "SaffronMartSuperNerdText", + "text": "_SaffronMartSuperNerdText" + } + }, + "SaffronPidgeyHouse": { + "TEXT_SAFFRONPIDGEYHOUSE_BRUNETTE_GIRL": { + "label": "SaffronPidgeyHouseBrunetteGirlText", + "text": "_SaffronPidgeyHouseBrunetteGirlText" + }, + "TEXT_SAFFRONPIDGEYHOUSE_PAPER": { + "label": "SaffronPidgeyHousePaperText", + "text": "_SaffronPidgeyHousePaperText" + }, + "TEXT_SAFFRONPIDGEYHOUSE_PIDGEY": { + "asm": true, + "label": "SaffronPidgeyHousePidgeyText", + "text": "_SaffronPidgeyHousePidgeyText" + }, + "TEXT_SAFFRONPIDGEYHOUSE_YOUNGSTER": { + "label": "SaffronPidgeyHouseYoungsterText", + "text": "_SaffronPidgeyHouseYoungsterText" + } + }, + "SaffronPokecenter": { + "TEXT_SAFFRONPOKECENTER_BEAUTY": { + "label": "SaffronPokecenterBeautyText", + "text": "_SaffronPokecenterBeautyText" + }, + "TEXT_SAFFRONPOKECENTER_CHANSEY": { + "asm": true, + "label": "SaffronPokecenterChanseyText" + }, + "TEXT_SAFFRONPOKECENTER_GENTLEMAN": { + "label": "SaffronPokecenterGentlemanText", + "text": "_SaffronPokecenterGentlemanText" + }, + "TEXT_SAFFRONPOKECENTER_LINK_RECEPTIONIST": { + "cableClub": true, + "label": "SaffronPokecenterLinkReceptionistText" + }, + "TEXT_SAFFRONPOKECENTER_NURSE": { + "label": "SaffronPokecenterNurseText", + "nurse": true + } + }, + "SeafoamIslands1F": { + "TEXT_SEAFOAMISLANDS1F_BOULDER1": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_SEAFOAMISLANDS1F_BOULDER2": { + "asm": true, + "label": "BoulderText" + } + }, + "SeafoamIslandsB1F": { + "TEXT_SEAFOAMISLANDSB1F_BOULDER1": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_SEAFOAMISLANDSB1F_BOULDER2": { + "asm": true, + "label": "BoulderText" + } + }, + "SeafoamIslandsB2F": { + "TEXT_SEAFOAMISLANDSB2F_BOULDER1": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_SEAFOAMISLANDSB2F_BOULDER2": { + "asm": true, + "label": "BoulderText" + } + }, + "SeafoamIslandsB3F": { + "TEXT_SEAFOAMISLANDSB3F_BOULDER1": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_SEAFOAMISLANDSB3F_BOULDER2": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_SEAFOAMISLANDSB3F_BOULDER3": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_SEAFOAMISLANDSB3F_BOULDER4": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_SEAFOAMISLANDSB3F_BOULDER5": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_SEAFOAMISLANDSB3F_BOULDER6": { + "asm": true, + "label": "BoulderText" + } + }, + "SeafoamIslandsB4F": { + "TEXT_SEAFOAMISLANDSB4F_ARTICUNO": { + "asm": true, + "label": "SeafoamIslandsB4FArticunoText" + }, + "TEXT_SEAFOAMISLANDSB4F_BOULDER1": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_SEAFOAMISLANDSB4F_BOULDER2": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_SEAFOAMISLANDSB4F_BOULDERS_SIGN": { + "label": "SeafoamIslandsB4FBouldersSignText", + "text": "_SeafoamIslandsB4FBouldersSignText" + }, + "TEXT_SEAFOAMISLANDSB4F_DANGER_SIGN": { + "label": "SeafoamIslandsB4FDangerSignText", + "text": "_SeafoamIslandsB4FDangerSignText" + } + }, + "SilphCo10F": { + "TEXT_SILPHCO10F_CARBOS": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SILPHCO10F_RARE_CANDY": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SILPHCO10F_ROCKET": { + "asm": true, + "label": "SilphCo10FRocketText" + }, + "TEXT_SILPHCO10F_SCIENTIST": { + "asm": true, + "label": "SilphCo10FScientistText" + }, + "TEXT_SILPHCO10F_SILPH_WORKER_F": { + "asm": true, + "label": "SilphCo10FSilphWorkerFText", + "text": "_SilphCo10FSilphWorkerFImScaredText" + }, + "TEXT_SILPHCO10F_TM_EARTHQUAKE": { + "asm": true, + "label": "PickUpItemText" + } + }, + "SilphCo11F": { + "TEXT_SILPHCO11F_BEAUTY": { + "label": "SilphCo11FBeautyText", + "text": "_SilphCo11FBeautyText" + }, + "TEXT_SILPHCO11F_GIOVANNI": { + "label": "SilphCo11FGiovanniText", + "text": "_SilphCo11FGiovanniText" + }, + "TEXT_SILPHCO11F_GIOVANNI_YOU_RUINED_OUR_PLANS": { + "label": "SilphCo11FGiovanniYouRuinedOurPlansText", + "text": "_SilphCo11FGiovanniYouRuinedOurPlansText" + }, + "TEXT_SILPHCO11F_JAMES": { + "asm": true, + "label": "SilphCo11FJessieJamesText", + "text": "_SilphCoJessieJamesText1" + }, + "TEXT_SILPHCO11F_JESSIE": { + "asm": true, + "label": "SilphCo11FJessieJamesText", + "text": "_SilphCoJessieJamesText1" + }, + "TEXT_SILPHCO11F_ROCKET": { + "asm": true, + "label": "SilphCo11FRocketText" + }, + "TEXT_SILPHCO11F_SILPH_PRESIDENT": { + "asm": true, + "label": "SilphCo11FSilphPresidentText", + "text": "_SilphCo11FSilphPresidentText" + }, + "TEXT_SILPHCO11F_TEXT10": { + "asm": true, + "label": "SilphCo11FText10", + "text": "_SilphCoJessieJamesText4" + }, + "TEXT_SILPHCO11F_TEXT8": { + "asm": true, + "label": "SilphCo11FJessieJamesText", + "text": "_SilphCoJessieJamesText1" + }, + "TEXT_SILPHCO11F_TEXT9": { + "label": "SilphCo11FText9", + "text": "_SilphCoJessieJamesText2" + } + }, + "SilphCo1F": { + "TEXT_SILPHCO1F_LINK_RECEPTIONIST": { + "label": "SilphCo1FLinkReceptionistText", + "text": "_SilphCo1FLinkReceptionistText" + } + }, + "SilphCo2F": { + "TEXT_SILPHCO2F_ROCKET1": { + "asm": true, + "label": "SilphCo2FRocket1Text" + }, + "TEXT_SILPHCO2F_ROCKET2": { + "asm": true, + "label": "SilphCo2FRocket2Text" + }, + "TEXT_SILPHCO2F_SCIENTIST1": { + "asm": true, + "label": "SilphCo2FScientist1Text" + }, + "TEXT_SILPHCO2F_SCIENTIST2": { + "asm": true, + "label": "SilphCo2FScientist2Text" + }, + "TEXT_SILPHCO2F_SILPH_WORKER_F": { + "asm": true, + "label": "SilphCo2FSilphWorkerFText", + "text": "SilphCo2FSilphWorkerFPleaseTakeThisText" + } + }, + "SilphCo3F": { + "TEXT_SILPHCO3F_HYPER_POTION": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SILPHCO3F_ROCKET": { + "asm": true, + "label": "SilphCo3FRocketText" + }, + "TEXT_SILPHCO3F_SCIENTIST": { + "asm": true, + "label": "SilphCo3FScientistText" + }, + "TEXT_SILPHCO3F_SILPH_WORKER_M": { + "asm": true, + "label": "SilphCo3FSilphWorkerMText", + "text": "_SilphCo3FSilphWorkerMWhatShouldIDoText" + } + }, + "SilphCo4F": { + "TEXT_SILPHCO4F_ESCAPE_ROPE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SILPHCO4F_FULL_HEAL": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SILPHCO4F_MAX_REVIVE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SILPHCO4F_ROCKET1": { + "asm": true, + "label": "SilphCo4FRocket1Text" + }, + "TEXT_SILPHCO4F_ROCKET2": { + "asm": true, + "label": "SilphCo4FRocket2Text" + }, + "TEXT_SILPHCO4F_SCIENTIST": { + "asm": true, + "label": "SilphCo4FScientistText" + }, + "TEXT_SILPHCO4F_SILPH_WORKER_M": { + "asm": true, + "label": "SilphCo4FSilphWorkerMText", + "text": "_SilphCo4FSilphWorkerMImHidingText" + } + }, + "SilphCo5F": { + "TEXT_SILPHCO5F_CARD_KEY": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SILPHCO5F_POKEMON_REPORT1": { + "label": "SilphCo5FPokemonReport1Text", + "text": "_SilphCo5FPokemonReport1Text" + }, + "TEXT_SILPHCO5F_POKEMON_REPORT2": { + "label": "SilphCo5FPokemonReport2Text", + "text": "_SilphCo5FPokemonReport2Text" + }, + "TEXT_SILPHCO5F_POKEMON_REPORT3": { + "label": "SilphCo5FPokemonReport3Text", + "text": "_SilphCo5FPokemonReport3Text" + }, + "TEXT_SILPHCO5F_PROTEIN": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SILPHCO5F_ROCKER": { + "asm": true, + "label": "SilphCo5FRockerText" + }, + "TEXT_SILPHCO5F_ROCKET1": { + "asm": true, + "label": "SilphCo5FRocket1Text" + }, + "TEXT_SILPHCO5F_ROCKET2": { + "asm": true, + "label": "SilphCo5FRocket2Text" + }, + "TEXT_SILPHCO5F_SCIENTIST": { + "asm": true, + "label": "SilphCo5FScientistText" + }, + "TEXT_SILPHCO5F_SILPH_WORKER_M": { + "asm": true, + "label": "SilphCo5FSilphWorkerMText", + "text": "_SilphCo5FSilphWorkerMThatsYouRightText" + }, + "TEXT_SILPHCO5F_TM_TAKE_DOWN": { + "asm": true, + "label": "PickUpItemText" + } + }, + "SilphCo6F": { + "TEXT_SILPHCO6F_HP_UP": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SILPHCO6F_ROCKET1": { + "asm": true, + "label": "SilphCo6FRocket1Text" + }, + "TEXT_SILPHCO6F_ROCKET2": { + "asm": true, + "label": "SilphCo6FRocket2Text" + }, + "TEXT_SILPHCO6F_SCIENTIST": { + "asm": true, + "label": "SilphCo6FScientistText" + }, + "TEXT_SILPHCO6F_SILPH_WORKER_F1": { + "asm": true, + "label": "SilphCo6FSilphWorkerF1Text", + "text": "_SilphCo6FSilphWorkerF1SuchACowardText" + }, + "TEXT_SILPHCO6F_SILPH_WORKER_F2": { + "asm": true, + "label": "SilphCo6FSilphWorkerF2Text", + "text": "_SilphCo6FSilphWorkerF2TeamRocketConquerWorldText" + }, + "TEXT_SILPHCO6F_SILPH_WORKER_M1": { + "asm": true, + "label": "SilphCo6FSilphWorkerM1Text", + "text": "_SilphCo6FSilphWorkerM1TookOverTheBuildingText" + }, + "TEXT_SILPHCO6F_SILPH_WORKER_M2": { + "asm": true, + "label": "SilphCo6FSilphWorkerM2Text", + "text": "_SilphCo6FSilphWorkerMHelpMePleaseText" + }, + "TEXT_SILPHCO6F_SILPH_WORKER_M3": { + "asm": true, + "label": "SilphCo6FSilphWorkerM3Text", + "text": "_SilphCo6FSilphWorkerM3TargetedSilphText" + }, + "TEXT_SILPHCO6F_X_ACCURACY": { + "asm": true, + "label": "PickUpItemText" + } + }, + "SilphCo7F": { + "TEXT_SILPHCO7F_CALCIUM": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SILPHCO7F_RIVAL": { + "asm": true, + "label": "SilphCo7FRivalText", + "text": "_SilphCo7FRivalText" + }, + "TEXT_SILPHCO7F_RIVAL_DEFEATED": { + "label": "SilphCo7FRivalDefeatedText", + "text": "_SilphCo7FRivalDefeatedText" + }, + "TEXT_SILPHCO7F_RIVAL_GOOD_LUCK_TO_YOU": { + "label": "SilphCo7FRivalGoodLuckToYouText", + "text": "_SilphCo7FRivalGoodLuckToYouText" + }, + "TEXT_SILPHCO7F_RIVAL_WAITED_HERE": { + "label": "SilphCo7FRivalWaitedHereText", + "text": "_SilphCo7FRivalWaitedHereText" + }, + "TEXT_SILPHCO7F_ROCKET1": { + "asm": true, + "label": "SilphCo7FRocket1Text" + }, + "TEXT_SILPHCO7F_ROCKET2": { + "asm": true, + "label": "SilphCo7FRocket2Text" + }, + "TEXT_SILPHCO7F_ROCKET3": { + "asm": true, + "label": "SilphCo7FRocket3Text" + }, + "TEXT_SILPHCO7F_SCIENTIST": { + "asm": true, + "label": "SilphCo7FScientistText" + }, + "TEXT_SILPHCO7F_SILPH_WORKER_M1": { + "asm": true, + "label": "SilphCo7FSilphWorkerM1Text", + "text": "_SilphCo7FSilphWorkerM1HaveThisPokemonText" + }, + "TEXT_SILPHCO7F_SILPH_WORKER_M2": { + "asm": true, + "label": "SilphCo7FSilphWorkerM2Text", + "text": "_SilphCo7FSilphWorkerM2AfterTheMasterBallText" + }, + "TEXT_SILPHCO7F_SILPH_WORKER_M3": { + "asm": true, + "label": "SilphCo7FSilphWorkerM3Text", + "text": "_SilphCo7FSilphWorkerM3ItWouldBeBadText" + }, + "TEXT_SILPHCO7F_SILPH_WORKER_M4": { + "asm": true, + "label": "SilphCo7FSilphWorkerM4Text", + "text": "_SilphCo7FSilphWorkerM4ItsReallyDangerousHereText" + }, + "TEXT_SILPHCO7F_TM_SWORDS_DANCE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_SILPHCO7F_UNREFERENCED_ITEM": { + "asm": true, + "label": "PickUpItemText" + } + }, + "SilphCo8F": { + "TEXT_SILPHCO8F_ROCKET1": { + "asm": true, + "label": "SilphCo8FRocket1Text" + }, + "TEXT_SILPHCO8F_ROCKET2": { + "asm": true, + "label": "SilphCo8FRocket2Text" + }, + "TEXT_SILPHCO8F_SCIENTIST": { + "asm": true, + "label": "SilphCo8FScientistText" + }, + "TEXT_SILPHCO8F_SILPH_WORKER_M": { + "asm": true, + "label": "SilphCo8FSilphWorkerMText", + "text": "_SilphCo8FSilphWorkerMSilphIsFinishedText" + } + }, + "SilphCo9F": { + "TEXT_SILPHCO9F_NURSE": { + "asm": true, + "label": "SilphCo9FNurseText", + "text": "SilphCo9FNurseYouLookTiredText" + }, + "TEXT_SILPHCO9F_ROCKET1": { + "asm": true, + "label": "SilphCo9FRocket1Text" + }, + "TEXT_SILPHCO9F_ROCKET2": { + "asm": true, + "label": "SilphCo9FRocket2Text" + }, + "TEXT_SILPHCO9F_SCIENTIST": { + "asm": true, + "label": "SilphCo9FScientistText" + } + }, + "SilphCoElevator": { + "TEXT_SILPHCOELEVATOR_ELEVATOR": { + "asm": true, + "label": "SilphCoElevatorElevatorText" + } + }, + "SummerBeachHouse": { + "TEXT_SUMMERBEACHHOUSE_PIKACHU": { + "asm": true, + "label": "SummerBeachHousePikachuText", + "text": "_SummerBeachHousePikachuText" + }, + "TEXT_SUMMERBEACHHOUSE_POSTER1": { + "asm": true, + "label": "SummerBeachHousePoster1Text", + "text": "_SummerBeachHousePoster1Text1" + }, + "TEXT_SUMMERBEACHHOUSE_POSTER2": { + "asm": true, + "label": "SummerBeachHousePoster2Text", + "text": "_SummerBeachHousePoster2Text1" + }, + "TEXT_SUMMERBEACHHOUSE_POSTER3": { + "asm": true, + "label": "SummerBeachHousePoster3Text", + "text": "_SummerBeachHousePoster3Text1" + }, + "TEXT_SUMMERBEACHHOUSE_PRINTER": { + "asm": true, + "label": "SummerBeachHousePrinterText", + "text": "_SummerBeachHousePrinterText1" + }, + "TEXT_SUMMERBEACHHOUSE_SURFINDUDE": { + "asm": true, + "label": "SummerBeachHouseSurfinDudeText", + "text": "_SummerBeachHouseSurfinDudeText1" + } + }, + "TradeCenter": { + "TEXT_TRADECENTER_OPPONENT": { + "label": "TradeCenterOpponentText", + "text": "_TradeCenterOpponentText" + } + }, + "UndergroundPathRoute5": { + "TEXT_UNDERGROUNDPATHROUTE5_LITTLE_GIRL": { + "asm": true, + "label": "UndergroundPathRoute5LittleGirlText" + } + }, + "UndergroundPathRoute6": { + "TEXT_UNDERGROUNDPATHROUTE6_GIRL": { + "label": "UndergroundPathRoute6GirlText", + "text": "_UndergroundPathRoute6GirlText" + } + }, + "UndergroundPathRoute7": { + "TEXT_UNDERGROUNDPATHROUTE7_MIDDLE_AGED_MAN": { + "label": "UndergroundPathRoute7MiddleAgedManText", + "text": "_UndergroundPathRoute7MiddleAgedManText" + } + }, + "UndergroundPathRoute7Copy": { + "TEXT_UNDERGROUNDPATHROUTE7COPY_UNUSED_GIRL": { + "label": "UndergroundPathRoute7CopyUnusedGirlText", + "text": "_UndergroundPathRoute7CopyUnusedGirlText" + }, + "TEXT_UNDERGROUNDPATHROUTE7COPY_UNUSED_MIDDLE_AGED_MAN": { + "label": "UndergroundPathRoute7CopyUnusedMiddleAgedManText", + "text": "_UndergroundPathRoute7CopyUnusedMiddleAgedManText" + } + }, + "UndergroundPathRoute8": { + "TEXT_UNDERGROUNDPATHROUTE8_GIRL": { + "label": "UndergroundPathRoute8GirlText", + "text": "_UndergroundPathRoute8GirlText" + } + }, + "VermilionCity": { + "TEXT_VERMILIONCITY_BEAUTY": { + "label": "VermilionCityBeautyText", + "text": "_VermilionCityBeautyText" + }, + "TEXT_VERMILIONCITY_GAMBLER1": { + "asm": true, + "label": "VermilionCityGambler1Text", + "text": "_VermilionCityGambler1DidYouSeeText" + }, + "TEXT_VERMILIONCITY_GAMBLER2": { + "label": "VermilionCityGambler2Text", + "text": "_VermilionCityGambler2Text" + }, + "TEXT_VERMILIONCITY_GYM_SIGN": { + "asm": true, + "label": "VermilionCityGymSignText" + }, + "TEXT_VERMILIONCITY_HARBOR_SIGN": { + "asm": true, + "label": "VermilionCityHarborSignText" + }, + "TEXT_VERMILIONCITY_MACHOP": { + "asm": true, + "label": "VermilionCityMachopText", + "text": "_VermilionCityMachopText" + }, + "TEXT_VERMILIONCITY_MART_SIGN": { + "asm": true, + "label": "MartSignText" + }, + "TEXT_VERMILIONCITY_NOTICE_SIGN": { + "asm": true, + "label": "VermilionCityNoticeSignText" + }, + "TEXT_VERMILIONCITY_OFFICER_JENNY": { + "asm": true, + "label": "VermilionCityOfficerJennyText" + }, + "TEXT_VERMILIONCITY_POKECENTER_SIGN": { + "asm": true, + "label": "PokeCenterSignText" + }, + "TEXT_VERMILIONCITY_POKEMON_FAN_CLUB_SIGN": { + "asm": true, + "label": "VermilionCityPokemonFanClubSignText" + }, + "TEXT_VERMILIONCITY_SAILOR1": { + "asm": true, + "label": "VermilionCitySailor1Text", + "text": "_VermilionCitySailor1WelcomeToSSAnneText" + }, + "TEXT_VERMILIONCITY_SAILOR2": { + "label": "VermilionCitySailor2Text", + "text": "_VermilionCitySailor2Text" + }, + "TEXT_VERMILIONCITY_SIGN": { + "asm": true, + "label": "VermilionCitySignText" + } + }, + "VermilionDock": { + "TEXT_VERMILIONDOCK_UNUSED": { + "label": "VermilionDockUnusedText", + "text": "_VermilionDockUnusedText" + } + }, + "VermilionGym": { + "TEXT_VERMILIONGYM_GENTLEMAN": { + "asm": true, + "label": "VermilionGymGentlemanText" + }, + "TEXT_VERMILIONGYM_GYM_GUIDE": { + "asm": true, + "label": "VermilionGymGymGuideText", + "text": "_VermilionGymGymGuideChampInMakingText" + }, + "TEXT_VERMILIONGYM_LT_SURGE": { + "asm": true, + "label": "VermilionGymLTSurgeText", + "text": "_VermilionGymLTSurgePreBattleText" + }, + "TEXT_VERMILIONGYM_LT_SURGE_RECEIVED_TM24": { + "label": "VermilionGymLTSurgeReceivedTM24Text", + "text": "_VermilionGymLTSurgeReceivedTM24Text" + }, + "TEXT_VERMILIONGYM_LT_SURGE_THUNDER_BADGE_INFO": { + "label": "VermilionGymLTSurgeThunderBadgeInfoText", + "text": "_VermilionGymLTSurgeThunderBadgeInfoText" + }, + "TEXT_VERMILIONGYM_LT_SURGE_TM24_NO_ROOM": { + "label": "VermilionGymLTSurgeTM24NoRoomText", + "text": "_VermilionGymLTSurgeTM24NoRoomText" + }, + "TEXT_VERMILIONGYM_SAILOR": { + "asm": true, + "label": "VermilionGymSailorText" + }, + "TEXT_VERMILIONGYM_SUPER_NERD": { + "asm": true, + "label": "VermilionGymSuperNerdText" + } + }, + "VermilionMart": { + "TEXT_VERMILIONMART_CLERK": { + "label": "VermilionMartClerkText", + "mart": [ + "POKE_BALL", + "SUPER_POTION", + "ICE_HEAL", + "AWAKENING", + "PARLYZ_HEAL", + "REPEL" + ] + }, + "TEXT_VERMILIONMART_COOLTRAINER_F": { + "label": "VermilionMartCooltrainerFText", + "text": "_VermilionMartCooltrainerFText" + }, + "TEXT_VERMILIONMART_COOLTRAINER_M": { + "label": "VermilionMartCooltrainerMText", + "text": "_VermilionMartCooltrainerMText" + } + }, + "VermilionOldRodHouse": { + "TEXT_VERMILIONOLDRODHOUSE_FISHING_GURU": { + "asm": true, + "label": "VermilionOldRodHouseFishingGuruText", + "text": "_VermilionOldRodHouseFishingGuruDoYouLikeToFishText" + } + }, + "VermilionPidgeyHouse": { + "TEXT_VERMILIONPIDGEYHOUSE_LETTER": { + "label": "VermilionPidgeyHouseLetterText", + "text": "_VermilionPidgeyHouseLetterText" + }, + "TEXT_VERMILIONPIDGEYHOUSE_PIDGEY": { + "asm": true, + "label": "VermilionPidgeyHousePidgeyText", + "text": "_VermilionPidgeyHousePidgeyText" + }, + "TEXT_VERMILIONPIDGEYHOUSE_YOUNGSTER": { + "label": "VermilionPidgeyHouseYoungsterText", + "text": "_VermilionPidgeyHouseYoungsterText" + } + }, + "VermilionPokecenter": { + "TEXT_VERMILIONPOKECENTER_CHANSEY": { + "asm": true, + "label": "VermilionPokecenterChanseyText" + }, + "TEXT_VERMILIONPOKECENTER_FISHING_GURU": { + "label": "VermilionPokecenterFishingGuruText", + "text": "_VermilionPokecenterFishingGuruText" + }, + "TEXT_VERMILIONPOKECENTER_LINK_RECEPTIONIST": { + "cableClub": true, + "label": "VermilionPokecenterLinkReceptionistText" + }, + "TEXT_VERMILIONPOKECENTER_NURSE": { + "label": "VermilionPokecenterNurseText", + "nurse": true + }, + "TEXT_VERMILIONPOKECENTER_SAILOR": { + "label": "VermilionPokecenterSailorText", + "text": "_VermilionPokecenterSailorText" + } + }, + "VermilionTradeHouse": { + "TEXT_VERMILIONTRADEHOUSE_GENTLEMAN": { + "label": "VermilionTradeHouseGentlemanText", + "text": "TeachingHMsText" + } + }, + "VictoryRoad1F": { + "TEXT_VICTORYROAD1F_BOULDER1": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_VICTORYROAD1F_BOULDER2": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_VICTORYROAD1F_BOULDER3": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_VICTORYROAD1F_COOLTRAINER_F": { + "asm": true, + "label": "VictoryRoad1FCooltrainerFText" + }, + "TEXT_VICTORYROAD1F_COOLTRAINER_M": { + "asm": true, + "label": "VictoryRoad1FCooltrainerMText" + }, + "TEXT_VICTORYROAD1F_RARE_CANDY": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_VICTORYROAD1F_TM_SKY_ATTACK": { + "asm": true, + "label": "PickUpItemText" + } + }, + "VictoryRoad2F": { + "TEXT_VICTORYROAD2F_BOULDER1": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_VICTORYROAD2F_BOULDER2": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_VICTORYROAD2F_BOULDER3": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_VICTORYROAD2F_COOLTRAINER_M": { + "asm": true, + "label": "VictoryRoad2FCooltrainerMText" + }, + "TEXT_VICTORYROAD2F_FULL_HEAL": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_VICTORYROAD2F_GUARD_SPEC": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_VICTORYROAD2F_HIKER": { + "asm": true, + "label": "VictoryRoad2FHikerText" + }, + "TEXT_VICTORYROAD2F_MOLTRES": { + "asm": true, + "label": "VictoryRoad2FMoltresText" + }, + "TEXT_VICTORYROAD2F_SUPER_NERD1": { + "asm": true, + "label": "VictoryRoad2FSuperNerd1Text" + }, + "TEXT_VICTORYROAD2F_SUPER_NERD2": { + "asm": true, + "label": "VictoryRoad2FSuperNerd2Text" + }, + "TEXT_VICTORYROAD2F_SUPER_NERD3": { + "asm": true, + "label": "VictoryRoad2FSuperNerd3Text" + }, + "TEXT_VICTORYROAD2F_TM_MEGA_KICK": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_VICTORYROAD2F_TM_SUBMISSION": { + "asm": true, + "label": "PickUpItemText" + } + }, + "VictoryRoad3F": { + "TEXT_VICTORYROAD3F_BOULDER1": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_VICTORYROAD3F_BOULDER2": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_VICTORYROAD3F_BOULDER3": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_VICTORYROAD3F_BOULDER4": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_VICTORYROAD3F_COOLTRAINER_F1": { + "asm": true, + "label": "VictoryRoad3FCooltrainerF1Text" + }, + "TEXT_VICTORYROAD3F_COOLTRAINER_F2": { + "asm": true, + "label": "VictoryRoad3FCooltrainerF2Text" + }, + "TEXT_VICTORYROAD3F_COOLTRAINER_M1": { + "asm": true, + "label": "VictoryRoad3FCooltrainerM1Text" + }, + "TEXT_VICTORYROAD3F_COOLTRAINER_M2": { + "asm": true, + "label": "VictoryRoad3FCooltrainerM2Text" + }, + "TEXT_VICTORYROAD3F_MAX_REVIVE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_VICTORYROAD3F_TM_EXPLOSION": { + "asm": true, + "label": "PickUpItemText" + } + }, + "ViridianCity": { + "TEXT_VIRIDIANCITY_FISHER": { + "asm": true, + "label": "ViridianCityFisherText" + }, + "TEXT_VIRIDIANCITY_GAMBLER1": { + "asm": true, + "label": "ViridianCityGambler1Text" + }, + "TEXT_VIRIDIANCITY_GIRL": { + "asm": true, + "label": "ViridianCityGirlText" + }, + "TEXT_VIRIDIANCITY_GYM_LOCKED": { + "asm": true, + "label": "ViridianCityGymLockedText" + }, + "TEXT_VIRIDIANCITY_GYM_SIGN": { + "asm": true, + "label": "ViridianCityGymSignText" + }, + "TEXT_VIRIDIANCITY_MART_SIGN": { + "asm": true, + "label": "MartSignText" + }, + "TEXT_VIRIDIANCITY_OLD_MAN": { + "asm": true, + "label": "ViridianCityOldManText" + }, + "TEXT_VIRIDIANCITY_OLD_MAN2": { + "asm": true, + "label": "ViridianCityOldMan2Text", + "text": "_ViridianCityOldManHadMyCoffeeNowText" + }, + "TEXT_VIRIDIANCITY_OLD_MAN_SLEEPY": { + "asm": true, + "label": "ViridianCityOldManSleepyText" + }, + "TEXT_VIRIDIANCITY_OLD_MAN_YOU_NEED_TO_WEAKEN_THE_TARGET": { + "label": "ViridianCityOldManYouNeedToWeakenTheTargetText", + "text": "_ViridianCityOldManYouNeedToWeakenTheTargetText" + }, + "TEXT_VIRIDIANCITY_POKECENTER_SIGN": { + "asm": true, + "label": "PokeCenterSignText" + }, + "TEXT_VIRIDIANCITY_SIGN": { + "asm": true, + "label": "ViridianCitySignText" + }, + "TEXT_VIRIDIANCITY_TRAINER_TIPS1": { + "asm": true, + "label": "ViridianCityTrainerTips1Text" + }, + "TEXT_VIRIDIANCITY_TRAINER_TIPS2": { + "asm": true, + "label": "ViridianCityTrainerTips2Text" + }, + "TEXT_VIRIDIANCITY_YOUNGSTER1": { + "asm": true, + "label": "ViridianCityYoungster1Text" + }, + "TEXT_VIRIDIANCITY_YOUNGSTER2": { + "asm": true, + "label": "ViridianCityYoungster2Text" + } + }, + "ViridianForest": { + "TEXT_VIRIDIANFOREST_COOLTRAINER_F": { + "asm": true, + "label": "ViridianForestCooltrainerFText" + }, + "TEXT_VIRIDIANFOREST_LEAVING_SIGN": { + "asm": true, + "label": "ViridianForestLeavingSignText" + }, + "TEXT_VIRIDIANFOREST_POKE_BALL": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_VIRIDIANFOREST_POTION1": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_VIRIDIANFOREST_POTION2": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_VIRIDIANFOREST_TRAINER_TIPS1": { + "asm": true, + "label": "ViridianForestTrainerTips1Text" + }, + "TEXT_VIRIDIANFOREST_TRAINER_TIPS2": { + "asm": true, + "label": "ViridianForestTrainerTips2Text" + }, + "TEXT_VIRIDIANFOREST_TRAINER_TIPS3": { + "asm": true, + "label": "ViridianForestTrainerTips3Text" + }, + "TEXT_VIRIDIANFOREST_TRAINER_TIPS4": { + "asm": true, + "label": "ViridianForestTrainerTips4Text" + }, + "TEXT_VIRIDIANFOREST_USE_ANTIDOTE_SIGN": { + "asm": true, + "label": "ViridianForestUseAntidoteSignText" + }, + "TEXT_VIRIDIANFOREST_YOUNGSTER1": { + "label": "ViridianForestYoungster1Text", + "text": "_ViridianForestYoungster1Text" + }, + "TEXT_VIRIDIANFOREST_YOUNGSTER2": { + "asm": true, + "label": "ViridianForestYoungster2Text" + }, + "TEXT_VIRIDIANFOREST_YOUNGSTER3": { + "asm": true, + "label": "ViridianForestYoungster3Text" + }, + "TEXT_VIRIDIANFOREST_YOUNGSTER4": { + "asm": true, + "label": "ViridianForestYoungster4Text" + }, + "TEXT_VIRIDIANFOREST_YOUNGSTER5": { + "asm": true, + "label": "ViridianForestYoungster5Text" + }, + "TEXT_VIRIDIANFOREST_YOUNGSTER6": { + "label": "ViridianForestYoungster6Text", + "text": "_ViridianForestYoungster6Text" + } + }, + "ViridianForestNorthGate": { + "TEXT_VIRIDIANFORESTNORTHGATE_GRAMPS": { + "label": "ViridianForestNorthGateGrampsText", + "text": "_ViridianForestNorthGateGrampsText" + }, + "TEXT_VIRIDIANFORESTNORTHGATE_SUPER_NERD": { + "label": "ViridianForestNorthGateSuperNerdText", + "text": "_ViridianForestNorthGateSuperNerdText" + } + }, + "ViridianForestSouthGate": { + "TEXT_VIRIDIANFORESTSOUTHGATE_GIRL": { + "label": "ViridianForestSouthGateGirlText", + "text": "_ViridianForestSouthGateGirlText" + }, + "TEXT_VIRIDIANFORESTSOUTHGATE_LITTLE_GIRL": { + "label": "ViridianForestSouthGateLittleGirlText", + "text": "_ViridianForestSouthGateLittleGirlText" + } + }, + "ViridianGym": { + "TEXT_VIRIDIANGYM_COOLTRAINER_M1": { + "asm": true, + "label": "ViridianGymCooltrainerM1Text" + }, + "TEXT_VIRIDIANGYM_COOLTRAINER_M2": { + "asm": true, + "label": "ViridianGymCooltrainerM2Text" + }, + "TEXT_VIRIDIANGYM_COOLTRAINER_M3": { + "asm": true, + "label": "ViridianGymCooltrainerM3Text" + }, + "TEXT_VIRIDIANGYM_GIOVANNI": { + "asm": true, + "label": "ViridianGymGiovanniText", + "text": "_ViridianGymGiovanniPreBattleText" + }, + "TEXT_VIRIDIANGYM_GIOVANNI_EARTH_BADGE_INFO": { + "label": "ViridianGymGiovanniEarthBadgeInfoText", + "text": "_ViridianGymGiovanniEarthBadgeInfoText" + }, + "TEXT_VIRIDIANGYM_GIOVANNI_RECEIVED_TM27": { + "label": "ViridianGymGiovanniReceivedTM27Text", + "text": "_ViridianGymGiovanniReceivedTM27Text" + }, + "TEXT_VIRIDIANGYM_GIOVANNI_TM27_NO_ROOM": { + "label": "ViridianGymGiovanniTM27NoRoomText", + "text": "_ViridianGymGiovanniTM27NoRoomText" + }, + "TEXT_VIRIDIANGYM_GYM_GUIDE": { + "asm": true, + "label": "ViridianGymGymGuideText" + }, + "TEXT_VIRIDIANGYM_HIKER1": { + "asm": true, + "label": "ViridianGymHiker1Text" + }, + "TEXT_VIRIDIANGYM_HIKER2": { + "asm": true, + "label": "ViridianGymHiker2Text" + }, + "TEXT_VIRIDIANGYM_HIKER3": { + "asm": true, + "label": "ViridianGymHiker3Text" + }, + "TEXT_VIRIDIANGYM_REVIVE": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_VIRIDIANGYM_ROCKER1": { + "asm": true, + "label": "ViridianGymRocker1Text" + }, + "TEXT_VIRIDIANGYM_ROCKER2": { + "asm": true, + "label": "ViridianGymRocker2Text" + } + }, + "ViridianMart": { + "TEXT_VIRIDIANMART_CLERK": { + "label": "ViridianMartClerkText", + "mart": [ + "POKE_BALL", + "POTION", + "ANTIDOTE", + "PARLYZ_HEAL", + "BURN_HEAL" + ] + }, + "TEXT_VIRIDIANMART_CLERK_PARCEL_QUEST": { + "label": "ViridianMartClerkParcelQuestText", + "text": "_ViridianMartClerkParcelQuestText" + }, + "TEXT_VIRIDIANMART_CLERK_YOU_CAME_FROM_PALLET_TOWN": { + "label": "ViridianMartClerkYouCameFromPalletTownText", + "text": "_ViridianMartClerkYouCameFromPalletTownText" + }, + "TEXT_VIRIDIANMART_COOLTRAINER_M": { + "label": "ViridianMartCooltrainerMText", + "text": "_ViridianMartCooltrainerMText" + }, + "TEXT_VIRIDIANMART_YOUNGSTER": { + "label": "ViridianMartYoungsterText", + "text": "_ViridianMartYoungsterText" + } + }, + "ViridianNicknameHouse": { + "TEXT_VIRIDIANNICKNAMEHOUSE_BALDING_GUY": { + "label": "ViridianNicknameHouseBaldingGuyText", + "text": "_ViridianNicknameHouseBaldingGuyText" + }, + "TEXT_VIRIDIANNICKNAMEHOUSE_LITTLE_GIRL": { + "label": "ViridianNicknameHouseLittleGirlText", + "text": "_ViridianNicknameHouseLittleGirlText" + }, + "TEXT_VIRIDIANNICKNAMEHOUSE_SPEAROW": { + "asm": true, + "label": "ViridianNicknameHouseSpearowText", + "text": "_ViridianNicknameHouseSpearowText" + }, + "TEXT_VIRIDIANNICKNAMEHOUSE_SPEARY_SIGN": { + "label": "ViridianNicknameHouseSpearySignText", + "text": "_ViridianNicknameHouseSpearySignText" + } + }, + "ViridianPokecenter": { + "TEXT_VIRIDIANPOKECENTER_CHANSEY": { + "asm": true, + "label": "ViridianPokeCenterChanseyText" + }, + "TEXT_VIRIDIANPOKECENTER_COOLTRAINER_M": { + "label": "ViridianPokecenterCooltrainerMText", + "text": "_ViridianPokecenterCooltrainerMText" + }, + "TEXT_VIRIDIANPOKECENTER_GENTLEMAN": { + "label": "ViridianPokecenterGentlemanText", + "text": "_ViridianPokecenterGentlemanText" + }, + "TEXT_VIRIDIANPOKECENTER_LINK_RECEPTIONIST": { + "cableClub": true, + "label": "ViridianPokecenterLinkReceptionistText" + }, + "TEXT_VIRIDIANPOKECENTER_NURSE": { + "label": "ViridianPokecenterNurseText", + "nurse": true + } + }, + "ViridianSchoolHouse": { + "TEXT_VIRIDIANSCHOOLHOUSE_BRUNETTE_GIRL": { + "label": "ViridianSchoolHouseBrunetteGirlText", + "text": "_ViridianSchoolHouseBrunetteGirlText" + }, + "TEXT_VIRIDIANSCHOOLHOUSE_COOLTRAINER_F": { + "asm": true, + "label": "ViridianSchoolHouseCooltrainerFText" + }, + "TEXT_VIRIDIANSCHOOLHOUSE_LITTLE_GIRL": { + "asm": true, + "label": "ViridianSchoolHouseLittleGirlText" + } + }, + "WardensHouse": { + "TEXT_WARDENSHOUSE_BOULDER": { + "asm": true, + "label": "BoulderText" + }, + "TEXT_WARDENSHOUSE_DISPLAY_LEFT": { + "asm": true, + "label": "WardensHouseDisplayText", + "text": "_WardensHouseDisplayPhotosAndFossilsText" + }, + "TEXT_WARDENSHOUSE_DISPLAY_RIGHT": { + "asm": true, + "label": "WardensHouseDisplayText", + "text": "_WardensHouseDisplayPhotosAndFossilsText" + }, + "TEXT_WARDENSHOUSE_RARE_CANDY": { + "asm": true, + "label": "PickUpItemText" + }, + "TEXT_WARDENSHOUSE_WARDEN": { + "asm": true, + "label": "WardensHouseWardenText", + "text": "_WardensHouseWardenGibberish1Text" + } + } + }, + "trainerHeaders": { + "AgathasRoom": { + "1": { + "after": "_AgathaAfterBattleText", + "battle": "_AgathaBeforeBattleText", + "event": "EVENT_BEAT_AGATHAS_ROOM_TRAINER_0", + "range": 0, + "won": "_AgathaEndBattleText" + } + }, + "BrunosRoom": { + "1": { + "after": "_BrunoAfterBattleText", + "battle": "_BrunoBeforeBattleText", + "event": "EVENT_BEAT_BRUNOS_ROOM_TRAINER_0", + "range": 0, + "won": "_BrunoEndBattleText" + } + }, + "CeladonGym": { + "2": { + "after": "_CeladonGymAfterBattleText2", + "battle": "_CeladonGymBattleText2", + "event": "EVENT_BEAT_CELADON_GYM_TRAINER_0", + "range": 2, + "won": "_CeladonGymEndBattleText2" + }, + "3": { + "after": "_CeladonGymAfterBattleText3", + "battle": "_CeladonGymBattleText3", + "event": "EVENT_BEAT_CELADON_GYM_TRAINER_1", + "range": 2, + "won": "_CeladonGymEndBattleText3" + }, + "4": { + "after": "_CeladonGymAfterBattleText4", + "battle": "_CeladonGymBattleText4", + "event": "EVENT_BEAT_CELADON_GYM_TRAINER_2", + "range": 4, + "won": "_CeladonGymEndBattleText4" + }, + "5": { + "after": "_CeladonGymAfterBattleText5", + "battle": "_CeladonGymBattleText5", + "event": "EVENT_BEAT_CELADON_GYM_TRAINER_3", + "range": 4, + "won": "_CeladonGymEndBattleText5" + }, + "6": { + "after": "_CeladonGymAfterBattleText6", + "battle": "_CeladonGymBattleText6", + "event": "EVENT_BEAT_CELADON_GYM_TRAINER_4", + "range": 2, + "won": "_CeladonGymEndBattleText6" + }, + "7": { + "after": "_CeladonGymAfterBattleText7", + "battle": "_CeladonGymBattleText7", + "event": "EVENT_BEAT_CELADON_GYM_TRAINER_5", + "range": 2, + "won": "_CeladonGymEndBattleText7" + }, + "8": { + "after": "_CeladonGymAfterBattleText8", + "battle": "_CeladonGymBattleText8", + "event": "EVENT_BEAT_CELADON_GYM_TRAINER_6", + "range": 3, + "won": "_CeladonGymEndBattleText8" + } + }, + "CeruleanCaveB1F": { + "1": { + "after": "_MewtwoBattleText", + "battle": "_MewtwoBattleText", + "event": "EVENT_BEAT_MEWTWO", + "range": 0, + "won": "_MewtwoBattleText" + } + }, + "CeruleanGym": { + "2": { + "after": "_CeruleanGymAfterBattleText1", + "battle": "_CeruleanGymBattleText1", + "event": "EVENT_BEAT_CERULEAN_GYM_TRAINER_0", + "range": 3, + "won": "_CeruleanGymEndBattleText1" + }, + "3": { + "after": "_CeruleanGymAfterBattleText2", + "battle": "_CeruleanGymBattleText2", + "event": "EVENT_BEAT_CERULEAN_GYM_TRAINER_1", + "range": 3, + "won": "_CeruleanGymEndBattleText2" + } + }, + "FightingDojo": { + "2": { + "after": "_FightingDojoBlackbelt1AfterBattleText", + "battle": "_FightingDojoBlackbelt1BattleText", + "event": "EVENT_BEAT_FIGHTING_DOJO_TRAINER_0", + "range": 4, + "won": "_FightingDojoBlackbelt1EndBattleText" + }, + "3": { + "after": "_FightingDojoBlackbelt2AfterBattleText", + "battle": "_FightingDojoBlackbelt2BattleText", + "event": "EVENT_BEAT_FIGHTING_DOJO_TRAINER_1", + "range": 4, + "won": "_FightingDojoBlackbelt2EndBattleText" + }, + "4": { + "after": "_FightingDojoBlackbelt3AfterBattleText", + "battle": "_FightingDojoBlackbelt3BattleText", + "event": "EVENT_BEAT_FIGHTING_DOJO_TRAINER_2", + "range": 3, + "won": "_FightingDojoBlackbelt3EndBattleText" + }, + "5": { + "after": "_FightingDojoBlackbelt4AfterBattleText", + "battle": "_FightingDojoBlackbelt4BattleText", + "event": "EVENT_BEAT_FIGHTING_DOJO_TRAINER_3", + "range": 3, + "won": "_FightingDojoBlackbelt4EndBattleText" + } + }, + "FuchsiaGym": { + "2": { + "after": "_FuchsiaGymRocker1AfterBattleText", + "battle": "_FuchsiaGymRocker1BattleText", + "event": "EVENT_BEAT_FUCHSIA_GYM_TRAINER_0", + "range": 2, + "won": "_FuchsiaGymRocker1EndBattleText" + }, + "3": { + "after": "_FuchsiaGymRocker2AfterBattleText", + "battle": "_FuchsiaGymRocker2BattleText", + "event": "EVENT_BEAT_FUCHSIA_GYM_TRAINER_1", + "range": 2, + "won": "_FuchsiaGymRocker2EndBattleText" + }, + "4": { + "after": "_FuchsiaGymRocker3AfterBattleText", + "battle": "_FuchsiaGymRocker3BattleText", + "event": "EVENT_BEAT_FUCHSIA_GYM_TRAINER_2", + "range": 4, + "won": "_FuchsiaGymRocker3EndBattleText" + }, + "5": { + "after": "_FuchsiaGymRocker4AfterBattleText", + "battle": "_FuchsiaGymRocker4BattleText", + "event": "EVENT_BEAT_FUCHSIA_GYM_TRAINER_3", + "range": 2, + "won": "_FuchsiaGymRocker4EndBattleText" + }, + "6": { + "after": "_FuchsiaGymRocker5AfterBattleText", + "battle": "_FuchsiaGymRocker5BattleText", + "event": "EVENT_BEAT_FUCHSIA_GYM_TRAINER_4", + "range": 2, + "won": "_FuchsiaGymRocker5EndBattleText" + }, + "7": { + "after": "_FuchsiaGymRocker6AfterBattleText", + "battle": "_FuchsiaGymRocker6BattleText", + "event": "EVENT_BEAT_FUCHSIA_GYM_TRAINER_5", + "range": 2, + "won": "_FuchsiaGymRocker6EndBattleText" + } + }, + "LancesRoom": { + "1": { + "after": "_LancesRoomLanceAfterBattleText", + "battle": "_LancesRoomLanceBeforeBattleText", + "event": "EVENT_BEAT_LANCES_ROOM_TRAINER_0", + "range": 0, + "won": "_LancesRoomLanceEndBattleText" + } + }, + "LoreleisRoom": { + "1": { + "after": "_LoreleisRoomLoreleiAfterBattleText", + "battle": "_LoreleisRoomLoreleiBeforeBattleText", + "event": "EVENT_BEAT_LORELEIS_ROOM_TRAINER_0", + "range": 0, + "won": "_LoreleisRoomLoreleiEndBattleText" + } + }, + "MtMoon1F": { + "1": { + "after": "_MtMoon1FHikerAfterBattleText", + "battle": "_MtMoon1FHikerBattleText", + "event": "EVENT_BEAT_MT_MOON_1_TRAINER_0", + "range": 2, + "won": "_MtMoon1FHikerEndBattleText" + }, + "2": { + "after": "_MtMoon1FYoungster1AfterBattleText", + "battle": "_MtMoon1FYoungster1BattleText", + "event": "EVENT_BEAT_MT_MOON_1_TRAINER_1", + "range": 3, + "won": "_MtMoon1FYoungster1EndBattleText" + }, + "3": { + "after": "_MtMoon1FCooltrainerF1AfterBattleText", + "battle": "_MtMoon1FCooltrainerF1BattleText", + "event": "EVENT_BEAT_MT_MOON_1_TRAINER_2", + "range": 3, + "won": "_MtMoon1FCooltrainerF1EndBattleText" + }, + "4": { + "after": "_MtMoon1FSuperNerdAfterBattleText", + "battle": "_MtMoon1FSuperNerdBattleText", + "event": "EVENT_BEAT_MT_MOON_1_TRAINER_3", + "range": 3, + "won": "_MtMoon1FSuperNerdEndBattleText" + }, + "5": { + "after": "_MtMoon1FCooltrainerF2AfterBattleText", + "battle": "_MtMoon1FCooltrainerF2BattleText", + "event": "EVENT_BEAT_MT_MOON_1_TRAINER_4", + "range": 3, + "won": "_MtMoon1FCooltrainerF2EndBattleText" + }, + "6": { + "after": "_MtMoon1FYoungster2AfterBattleText", + "battle": "_MtMoon1FYoungster2BattleText", + "event": "EVENT_BEAT_MT_MOON_1_TRAINER_5", + "range": 3, + "won": "_MtMoon1FYoungster2EndBattleText" + }, + "7": { + "after": "_MtMoon1FYoungster3AfterBattleText", + "battle": "_MtMoon1FYoungster3BattleText", + "event": "EVENT_BEAT_MT_MOON_1_TRAINER_6", + "range": 3, + "won": "_MtMoon1FYoungster3EndBattleText" + } + }, + "MtMoonB2F": { + "3": { + "after": "_MtMoonB2FRocket2AfterBattleText", + "battle": "_MtMoonB2FRocket2BattleText", + "event": "EVENT_BEAT_MT_MOON_3_TRAINER_0", + "range": 4, + "won": "_MtMoonB2FRocket2EndBattleText" + }, + "4": { + "after": "_MtMoonB2FRocket3AfterBattleText", + "battle": "_MtMoonB2FRocket3BattleText", + "event": "EVENT_BEAT_MT_MOON_3_TRAINER_1", + "range": 4, + "won": "_MtMoonB2FRocket3EndBattleText" + }, + "5": { + "after": "_MtMoonB2FRocket4AfterBattleText", + "battle": "_MtMoonB2FRocket4BattleText", + "event": "EVENT_BEAT_MT_MOON_3_TRAINER_2", + "range": 4, + "won": "_MtMoonB2FRocket4EndBattleText" + } + }, + "PewterGym": { + "2": { + "after": "_PewterGymCooltrainerMAfterBattleText", + "battle": "_PewterGymCooltrainerMBattleText", + "event": "EVENT_BEAT_PEWTER_GYM_TRAINER_0", + "range": 5, + "won": "_PewterGymCooltrainerMEndBattleText" + } + }, + "PokemonMansion1F": { + "1": { + "after": "_PokemonMansion1FScientistAfterBattleText", + "battle": "_PokemonMansion1FScientistBattleText", + "event": "EVENT_BEAT_MANSION_1_TRAINER_0", + "range": 3, + "won": "_PokemonMansion1FScientistEndBattleText" + } + }, + "PokemonMansion2F": { + "1": { + "after": "_PokemonMansion2FSuperNerdAfterBattleText", + "battle": "_PokemonMansion2FSuperNerdBattleText", + "event": "EVENT_BEAT_MANSION_2_TRAINER_0", + "range": 0, + "won": "_PokemonMansion2FSuperNerdEndBattleText" + } + }, + "PokemonMansion3F": { + "1": { + "after": "_PokemonMansion3FSuperNerdAfterBattleText", + "battle": "_PokemonMansion3FSuperNerdBattleText", + "event": "EVENT_BEAT_MANSION_3_TRAINER_0", + "range": 0, + "won": "_PokemonMansion3FSuperNerdEndBattleText" + }, + "2": { + "after": "_PokemonMansion3FScientistAfterBattleText", + "battle": "_PokemonMansion3FScientistBattleText", + "event": "EVENT_BEAT_MANSION_3_TRAINER_1", + "range": 2, + "won": "_PokemonMansion3FScientistEndBattleText" + } + }, + "PokemonMansionB1F": { + "1": { + "after": "_PokemonMansionB1FBurglarAfterBattleText", + "battle": "_PokemonMansionB1FBurglarBattleText", + "event": "EVENT_BEAT_MANSION_4_TRAINER_0", + "range": 0, + "won": "_PokemonMansionB1FBurglarEndBattleText" + }, + "2": { + "after": "_PokemonMansionB1FScientistAfterBattleText", + "battle": "_PokemonMansionB1FScientistBattleText", + "event": "EVENT_BEAT_MANSION_4_TRAINER_1", + "range": 3, + "won": "_PokemonMansionB1FScientistEndBattleText" + } + }, + "PokemonTower3F": { + "1": { + "after": "_PokemonTower3FChanneler1AfterBattleText", + "battle": "_PokemonTower3FChanneler1BattleText", + "event": "EVENT_BEAT_POKEMONTOWER_3_TRAINER_0", + "range": 2, + "won": "_PokemonTower3FChanneler1EndBattleText" + }, + "2": { + "after": "_PokemonTower3FChanneler2AfterBattleText", + "battle": "_PokemonTower3FChanneler2BattleText", + "event": "EVENT_BEAT_POKEMONTOWER_3_TRAINER_1", + "range": 3, + "won": "_PokemonTower3FChanneler2EndBattleText" + }, + "3": { + "after": "_PokemonTower3FChanneler3AfterBattleText", + "battle": "_PokemonTower3FChanneler3BattleText", + "event": "EVENT_BEAT_POKEMONTOWER_3_TRAINER_2", + "range": 2, + "won": "_PokemonTower3FChanneler3EndBattleText" + } + }, + "PokemonTower4F": { + "1": { + "after": "_PokemonTower4FChanneler1AfterBattleText", + "battle": "_PokemonTower4FChanneler1BattleText", + "event": "EVENT_BEAT_POKEMONTOWER_4_TRAINER_0", + "range": 2, + "won": "_PokemonTower4FChanneler1EndBattleText" + }, + "2": { + "after": "_PokemonTower4FChanneler2AfterBattleText", + "battle": "_PokemonTower4FChanneler2BattleText", + "event": "EVENT_BEAT_POKEMONTOWER_4_TRAINER_1", + "range": 2, + "won": "_PokemonTower4FChanneler2EndBattleText" + }, + "3": { + "after": "_PokemonTower4FChanneler3AfterBattleText", + "battle": "_PokemonTower4FChanneler3BattleText", + "event": "EVENT_BEAT_POKEMONTOWER_4_TRAINER_2", + "range": 2, + "won": "_PokemonTower4FChanneler3EndBattleText" + } + }, + "PokemonTower5F": { + "2": { + "after": "_PokemonTower5FChanneler2AfterBattleText", + "battle": "_PokemonTower5FChanneler2BattleText", + "event": "EVENT_BEAT_POKEMONTOWER_5_TRAINER_0", + "range": 2, + "won": "_PokemonTower5FChanneler2EndBattleText" + }, + "3": { + "after": "_PokemonTower5FChanneler3AfterBattleText", + "battle": "_PokemonTower5FChanneler3BattleText", + "event": "EVENT_BEAT_POKEMONTOWER_5_TRAINER_1", + "range": 3, + "won": "_PokemonTower5FChanneler3EndBattleText" + }, + "4": { + "after": "_PokemonTower5FChanneler4AfterBattleText", + "battle": "_PokemonTower5FChanneler4BattleText", + "event": "EVENT_BEAT_POKEMONTOWER_5_TRAINER_2", + "range": 2, + "won": "_PokemonTower5FChanneler4EndBattleText" + }, + "5": { + "after": "_PokemonTower5FChanneler5AfterBattleText", + "battle": "_PokemonTower5FChanneler5BattleText", + "event": "EVENT_BEAT_POKEMONTOWER_5_TRAINER_3", + "range": 2, + "won": "_PokemonTower5FChanneler5EndBattleText" + } + }, + "PokemonTower6F": { + "1": { + "after": "_PokemonTower6FChanneler1AfterBattleText", + "battle": "_PokemonTower6FChanneler1BattleText", + "event": "EVENT_BEAT_POKEMONTOWER_6_TRAINER_0", + "range": 3, + "won": "_PokemonTower6FChanneler1EndBattleText" + }, + "2": { + "after": "_PokemonTower6FChanneler2AfterBattleText", + "battle": "_PokemonTower6FChanneler2BattleText", + "event": "EVENT_BEAT_POKEMONTOWER_6_TRAINER_1", + "range": 3, + "won": "_PokemonTower6FChanneler2EndBattleText" + }, + "3": { + "after": "_PokemonTower6FChanneler3AfterBattleText", + "battle": "_PokemonTower6FChanneler3BattleText", + "event": "EVENT_BEAT_POKEMONTOWER_6_TRAINER_2", + "range": 2, + "won": "_PokemonTower6FChanneler3EndBattleText" + } + }, + "PowerPlant": { + "1": { + "after": "_PowerPlantVoltorbBattleText", + "battle": "_PowerPlantVoltorbBattleText", + "event": "EVENT_BEAT_POWER_PLANT_VOLTORB_0", + "range": 0, + "won": "_PowerPlantVoltorbBattleText" + }, + "2": { + "after": "_PowerPlantVoltorbBattleText", + "battle": "_PowerPlantVoltorbBattleText", + "event": "EVENT_BEAT_POWER_PLANT_VOLTORB_1", + "range": 0, + "won": "_PowerPlantVoltorbBattleText" + }, + "3": { + "after": "_PowerPlantVoltorbBattleText", + "battle": "_PowerPlantVoltorbBattleText", + "event": "EVENT_BEAT_POWER_PLANT_VOLTORB_2", + "range": 0, + "won": "_PowerPlantVoltorbBattleText" + }, + "4": { + "after": "_PowerPlantVoltorbBattleText", + "battle": "_PowerPlantVoltorbBattleText", + "event": "EVENT_BEAT_POWER_PLANT_VOLTORB_3", + "range": 0, + "won": "_PowerPlantVoltorbBattleText" + }, + "5": { + "after": "_PowerPlantVoltorbBattleText", + "battle": "_PowerPlantVoltorbBattleText", + "event": "EVENT_BEAT_POWER_PLANT_VOLTORB_4", + "range": 0, + "won": "_PowerPlantVoltorbBattleText" + }, + "6": { + "after": "_PowerPlantVoltorbBattleText", + "battle": "_PowerPlantVoltorbBattleText", + "event": "EVENT_BEAT_POWER_PLANT_VOLTORB_5", + "range": 0, + "won": "_PowerPlantVoltorbBattleText" + }, + "7": { + "after": "_PowerPlantVoltorbBattleText", + "battle": "_PowerPlantVoltorbBattleText", + "event": "EVENT_BEAT_POWER_PLANT_VOLTORB_6", + "range": 0, + "won": "_PowerPlantVoltorbBattleText" + }, + "8": { + "after": "_PowerPlantVoltorbBattleText", + "battle": "_PowerPlantVoltorbBattleText", + "event": "EVENT_BEAT_POWER_PLANT_VOLTORB_7", + "range": 0, + "won": "_PowerPlantVoltorbBattleText" + }, + "9": { + "after": "_PowerPlantZapdosBattleText", + "battle": "_PowerPlantZapdosBattleText", + "event": "EVENT_BEAT_ZAPDOS", + "range": 0, + "won": "_PowerPlantZapdosBattleText" + } + }, + "RockTunnel1F": { + "1": { + "after": "_RockTunnel1FHiker1AfterBattleText", + "battle": "_RockTunnel1FHiker1BattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_0", + "range": 4, + "won": "_RockTunnel1FHiker1EndBattleText" + }, + "2": { + "after": "_RockTunnel1FHiker2AfterBattleText", + "battle": "_RockTunnel1FHiker2BattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_1", + "range": 4, + "won": "_RockTunnel1FHiker2EndBattleText" + }, + "3": { + "after": "_RockTunnel1FHiker3AfterBattleText", + "battle": "_RockTunnel1FHiker3BattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_2", + "range": 3, + "won": "_RockTunnel1FHiker3EndBattleText" + }, + "4": { + "after": "_RockTunnel1FSuperNerdAfterBattleText", + "battle": "_RockTunnel1FSuperNerdBattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_3", + "range": 3, + "won": "_RockTunnel1FSuperNerdEndBattleText" + }, + "5": { + "after": "_RockTunnel1FCooltrainerF1AfterBattleText", + "battle": "_RockTunnel1FCooltrainerF1BattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_4", + "range": 4, + "won": "_RockTunnel1FCooltrainerF1EndBattleText" + }, + "6": { + "after": "_RockTunnel1FCooltrainerF2AfterBattleText", + "battle": "_RockTunnel1FCooltrainerF2BattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_5", + "range": 4, + "won": "_RockTunnel1FCooltrainerF2EndBattleText" + }, + "7": { + "after": "_RockTunnel1FCooltrainerF3AfterBattleText", + "battle": "_RockTunnel1FCooltrainerF3BattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_6", + "range": 4, + "won": "_RockTunnel1FCooltrainerF3EndBattleText" + } + }, + "RockTunnelB1F": { + "1": { + "after": "_RockTunnelB1FCooltrainerF1AfterBattleText", + "battle": "_RockTunnelB1FCooltrainerF1BattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_0", + "range": 4, + "won": "_RockTunnelB1FCooltrainerF1EndBattleText" + }, + "2": { + "after": "_RockTunnelB1FHiker1AfterBattleText", + "battle": "_RockTunnelB1FHiker1BattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_1", + "range": 3, + "won": "_RockTunnelB1FHiker1EndBattleText" + }, + "3": { + "after": "_RockTunnelB1FSuperNerd1AfterBattleText", + "battle": "_RockTunnelB1FSuperNerd1BattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_2", + "range": 3, + "won": "_RockTunnelB1FSuperNerd1EndBattleText" + }, + "4": { + "after": "_RockTunnelB1FSuperNerd2AfterBattleText", + "battle": "_RockTunnelB1FSuperNerd2BattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_3", + "range": 4, + "won": "_RockTunnelB1FSuperNerd2EndBattleText" + }, + "5": { + "after": "_RockTunnelB1FHiker2AfterBattleText", + "battle": "_RockTunnelB1FHiker2BattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_4", + "range": 3, + "won": "_RockTunnelB1FHiker2EndBattleText" + }, + "6": { + "after": "_RockTunnelB1FCooltrainerF2AfterBattleText", + "battle": "_RockTunnelB1FCooltrainerF2BattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_5", + "range": 4, + "won": "_RockTunnelB1FCooltrainerF2EndBattleText" + }, + "7": { + "after": "_RockTunnelB1FHiker3AfterBattleText", + "battle": "_RockTunnelB1FHiker3BattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_6", + "range": 3, + "won": "_RockTunnelB1FHiker3EndBattleText" + }, + "8": { + "after": "_RockTunnelB1FSuperNerd3AfterBattleText", + "battle": "_RockTunnelB1FSuperNerd3BattleText", + "event": "EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_7", + "range": 3, + "won": "_RockTunnelB1FSuperNerd3EndBattleText" + } + }, + "RocketHideoutB1F": { + "1": { + "after": "_RocketHideoutB1FRocket1AfterBattleText", + "battle": "_RocketHideoutB1FRocket1BattleText", + "event": "EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_0", + "range": 3, + "won": "_RocketHideoutB1FRocket1EndBattleText" + }, + "2": { + "after": "_RocketHideoutB1FRocket2AfterBattleText", + "battle": "_RocketHideoutB1FRocket2BattleText", + "event": "EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_1", + "range": 2, + "won": "_RocketHideoutB1FRocket2EndBattleText" + }, + "3": { + "after": "_RocketHideoutB1FRocket3AfterBattleText", + "battle": "_RocketHideoutB1FRocket3BattleText", + "event": "EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_2", + "range": 2, + "won": "_RocketHideoutB1FRocket3EndBattleText" + }, + "4": { + "after": "_RocketHideoutB1FRocket4AfterBattleText", + "battle": "_RocketHideoutB1FRocket4BattleText", + "event": "EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_3", + "range": 3, + "won": "_RocketHideoutB1FRocket4EndBattleText" + }, + "5": { + "after": "_RocketHideoutB1FRocket5AfterBattleText", + "battle": "_RocketHideoutB1FRocket5BattleText", + "event": "EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_4", + "range": 3, + "won": "_RocketHideoutB1FRocket5EndBattleText" + } + }, + "RocketHideoutB2F": { + "1": { + "after": "_RocketHideoutB2FRocketAfterBattleText", + "battle": "_RocketHideoutB2FRocketBattleText", + "event": "EVENT_BEAT_ROCKET_HIDEOUT_2_TRAINER_0", + "range": 4, + "won": "_RocketHideoutB2FRocketEndBattleText" + } + }, + "RocketHideoutB3F": { + "1": { + "after": "_RocketHideoutB3FRocket1AfterBattleText", + "battle": "_RocketHideoutB3FRocket1BattleText", + "event": "EVENT_BEAT_ROCKET_HIDEOUT_3_TRAINER_0", + "range": 2, + "won": "_RocketHideoutB3FRocket1EndBattleText" + }, + "2": { + "after": "_RocketHide3AfterBattleText3", + "battle": "_RocketHideout3BattleText", + "event": "EVENT_BEAT_ROCKET_HIDEOUT_3_TRAINER_1", + "range": 4, + "won": "_RocketHideout3EndBattleText3" + } + }, + "RocketHideoutB4F": { + "4": { + "after": "_RocketHideoutB4FRocketAfterBattleText", + "battle": "_RocketHideoutB4FRocketBattleText", + "event": "EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2", + "range": 1, + "won": "_RocketHideoutB4FRocketEndBattleText" + } + }, + "Route10": { + "1": { + "after": "_Route10SuperNerd1AfterBattleText", + "battle": "_Route10SuperNerd1BattleText", + "event": "EVENT_BEAT_ROUTE_10_TRAINER_0", + "range": 4, + "won": "_Route10SuperNerd1EndBattleText" + }, + "2": { + "after": "_Route10Hiker1AfterBattleText", + "battle": "_Route10Hiker1BattleText", + "event": "EVENT_BEAT_ROUTE_10_TRAINER_1", + "range": 3, + "won": "_Route10Hiker1EndBattleText" + }, + "3": { + "after": "_Route10SuperNerd2AfterBattleText", + "battle": "_Route10SuperNerd2BattleText", + "event": "EVENT_BEAT_ROUTE_10_TRAINER_2", + "range": 4, + "won": "_Route10SuperNerd2EndBattleText" + }, + "4": { + "after": "_Route10CooltrainerF1AfterBattleText", + "battle": "_Route10CooltrainerF1BattleText", + "event": "EVENT_BEAT_ROUTE_10_TRAINER_3", + "range": 3, + "won": "_Route10CooltrainerF1EndBattleText" + }, + "5": { + "after": "_Route10Hiker2AfterBattleText", + "battle": "_Route10Hiker2BattleText", + "event": "EVENT_BEAT_ROUTE_10_TRAINER_4", + "range": 2, + "won": "_Route10Hiker2EndBattleText" + }, + "6": { + "after": "_Route10CooltrainerF2AfterBattleText", + "battle": "_Route10CooltrainerF2BattleText", + "event": "EVENT_BEAT_ROUTE_10_TRAINER_5", + "range": 2, + "won": "_Route10CooltrainerF2EndBattleText" + } + }, + "Route11": { + "1": { + "after": "_Route11Gambler1AfterBattleText", + "battle": "_Route11Gambler1BattleText", + "event": "EVENT_BEAT_ROUTE_11_TRAINER_0", + "range": 3, + "won": "_Route11Gambler1EndBattleText" + }, + "2": { + "after": "_Route11Gambler2AfterBattleText", + "battle": "_Route11Gambler2BattleText", + "event": "EVENT_BEAT_ROUTE_11_TRAINER_1", + "range": 2, + "won": "_Route11Gambler2EndBattleText" + }, + "3": { + "after": "_Route11Youngster1AfterBattleText", + "battle": "_Route11Youngster1BattleText", + "event": "EVENT_BEAT_ROUTE_11_TRAINER_2", + "range": 3, + "won": "_Route11Youngster1EndBattleText" + }, + "4": { + "after": "_Route11SuperNerd1AfterBattleText", + "battle": "_Route11SuperNerd1BattleText", + "event": "EVENT_BEAT_ROUTE_11_TRAINER_3", + "range": 3, + "won": "_Route11SuperNerd1EndBattleText" + }, + "5": { + "after": "_Route11Youngster2AfterBattleText5", + "battle": "_Route11Youngster2BattleText", + "event": "EVENT_BEAT_ROUTE_11_TRAINER_4", + "range": 4, + "won": "_Route11Youngster2EndBattleText" + }, + "6": { + "after": "_Route11Gambler3AfterBattleText", + "battle": "_Route11Gambler3BattleText", + "event": "EVENT_BEAT_ROUTE_11_TRAINER_5", + "range": 3, + "won": "_Route11Gambler3EndBattleText" + }, + "7": { + "after": "_Route11Gambler4AfterBattleText", + "battle": "_Route11Gambler4BattleText", + "event": "EVENT_BEAT_ROUTE_11_TRAINER_6", + "range": 3, + "won": "_Route11Gambler4EndBattleText" + }, + "8": { + "after": "_Route11Youngster3AfterBattleText", + "battle": "_Route11Youngster3BattleText", + "event": "EVENT_BEAT_ROUTE_11_TRAINER_7", + "range": 4, + "won": "_Route11Youngster3EndBattleText" + }, + "9": { + "after": "_Route11SuperNerd2AfterBattleText", + "battle": "_Route11SuperNerd2BattleText", + "event": "EVENT_BEAT_ROUTE_11_TRAINER_8", + "range": 3, + "won": "_Route11SuperNerd2EndBattleText" + }, + "10": { + "after": "_Route11Youngster4AfterBattleText", + "battle": "_Route11Youngster4BattleText", + "event": "EVENT_BEAT_ROUTE_11_TRAINER_9", + "range": 4, + "won": "_Route11Youngster4EndBattleText" + } + }, + "Route12": { + "2": { + "after": "_Route12Fisher1AfterBattleText", + "battle": "_Route12Fisher1BattleText", + "event": "EVENT_BEAT_ROUTE_12_TRAINER_0", + "range": 4, + "won": "_Route12Fisher1EndBattleText" + }, + "3": { + "after": "_Route12Fisher2AfterBattleText", + "battle": "_Route12Fisher2BattleText", + "event": "EVENT_BEAT_ROUTE_12_TRAINER_1", + "range": 4, + "won": "_Route12Fisher2EndBattleText" + }, + "4": { + "after": "_Route12CooltrainerMAfterBattleText", + "battle": "_Route12CooltrainerMBattleText", + "event": "EVENT_BEAT_ROUTE_12_TRAINER_2", + "range": 4, + "won": "_Route12CooltrainerMEndBattleText" + }, + "5": { + "after": "_Route12SuperNerdAfterBattleText", + "battle": "_Route12SuperNerdBattleText", + "event": "EVENT_BEAT_ROUTE_12_TRAINER_3", + "range": 4, + "won": "_Route12SuperNerdEndBattleText" + }, + "6": { + "after": "_Route12Fisher3AfterBattleText", + "battle": "_Route12Fisher3BattleText", + "event": "EVENT_BEAT_ROUTE_12_TRAINER_4", + "range": 4, + "won": "_Route12Fisher3EndBattleText" + }, + "7": { + "after": "_Route12Fisher4AfterBattleText", + "battle": "_Route12Fisher4BattleText", + "event": "EVENT_BEAT_ROUTE_12_TRAINER_5", + "range": 4, + "won": "_Route12Fisher4EndBattleText" + }, + "8": { + "after": "_Route12Fisher5AfterBattleText", + "battle": "_Route12Fisher5BattleText", + "event": "EVENT_BEAT_ROUTE_12_TRAINER_6", + "range": 1, + "won": "_Route12Fisher5EndBattleText" + } + }, + "Route13": { + "1": { + "after": "_Route13CooltrainerM1AfterBattleText", + "battle": "_Route13CooltrainerM1BattleText", + "event": "EVENT_BEAT_ROUTE_13_TRAINER_0", + "range": 2, + "won": "_Route13CooltrainerM1EndBattleText" + }, + "2": { + "after": "_Route13CooltrainerF1AfterBattleText", + "battle": "_Route13CooltrainerF1BattleText", + "event": "EVENT_BEAT_ROUTE_13_TRAINER_1", + "range": 2, + "won": "_Route13CooltrainerF1EndBattleText" + }, + "3": { + "after": "_Route13CooltrainerF2AfterBattleText", + "battle": "_Route13CooltrainerF2BattleText", + "event": "EVENT_BEAT_ROUTE_13_TRAINER_2", + "range": 2, + "won": "_Route13CooltrainerF2EndBattleText" + }, + "4": { + "after": "_Route13CooltrainerF3AfterBattleText", + "battle": "_Route13CooltrainerF3BattleText", + "event": "EVENT_BEAT_ROUTE_13_TRAINER_3", + "range": 2, + "won": "_Route13CooltrainerF3EndBattleText" + }, + "5": { + "after": "_Route13CooltrainerF4AfterBattleText", + "battle": "_Route13CooltrainerF4BattleText", + "event": "EVENT_BEAT_ROUTE_13_TRAINER_4", + "range": 4, + "won": "_Route13CooltrainerF4EndBattleText" + }, + "6": { + "after": "_Route13CooltrainerM2AfterBattleText", + "battle": "_Route13CooltrainerM2BattleText", + "event": "EVENT_BEAT_ROUTE_13_TRAINER_5", + "range": 2, + "won": "_Route13CooltrainerM2EndBattleText" + }, + "7": { + "after": "_Route13Beauty1AfterBattleText", + "battle": "_Route13Beauty1BattleText", + "event": "EVENT_BEAT_ROUTE_13_TRAINER_6", + "range": 4, + "won": "_Route13Beauty1EndBattleText" + }, + "8": { + "after": "_Route13Beauty2AfterBattleText", + "battle": "_Route13Beauty2BattleText", + "event": "EVENT_BEAT_ROUTE_13_TRAINER_7", + "range": 2, + "won": "_Route13Beauty2EndBattleText" + }, + "9": { + "after": "_Route13BikerAfterBattleText", + "battle": "_Route13BikerBattleText", + "event": "EVENT_BEAT_ROUTE_13_TRAINER_8", + "range": 2, + "won": "_Route13BikerEndBattleText" + }, + "10": { + "after": "_Route13CooltrainerM3AfterBattleText", + "battle": "_Route13CooltrainerM3BattleText", + "event": "EVENT_BEAT_ROUTE_13_TRAINER_9", + "range": 4, + "won": "_Route13CooltrainerM3EndBattleText" + } + }, + "Route14": { + "1": { + "after": "_Route14CooltrainerM1AfterBattleText", + "battle": "_Route14CooltrainerM1BattleText", + "event": "EVENT_BEAT_ROUTE_14_TRAINER_0", + "range": 2, + "won": "_Route14CooltrainerM1EndBattleText" + }, + "2": { + "after": "_Route14CooltrainerM2AfterBattleText", + "battle": "_Route14CooltrainerM2BattleText", + "event": "EVENT_BEAT_ROUTE_14_TRAINER_1", + "range": 2, + "won": "_Route14CooltrainerM2EndBattleText" + }, + "3": { + "after": "_Route14CooltrainerM3AfterBattleText", + "battle": "_Route14CooltrainerM3BattleText", + "event": "EVENT_BEAT_ROUTE_14_TRAINER_2", + "range": 4, + "won": "_Route14CooltrainerM3EndBattleText" + }, + "4": { + "after": "_Route14CooltrainerM4AfterBattleText", + "battle": "_Route14CooltrainerM4BattleText", + "event": "EVENT_BEAT_ROUTE_14_TRAINER_3", + "range": 3, + "won": "_Route14CooltrainerM4EndBattleText" + }, + "5": { + "after": "_Route14CooltrainerM5AfterBattleText", + "battle": "_Route14CooltrainerM5BattleText", + "event": "EVENT_BEAT_ROUTE_14_TRAINER_4", + "range": 3, + "won": "_Route14CooltrainerM5EndBattleText" + }, + "6": { + "after": "_Route14CooltrainerM6AfterBattleText", + "battle": "_Route14CooltrainerM6BattleText", + "event": "EVENT_BEAT_ROUTE_14_TRAINER_5", + "range": 4, + "won": "_Route14CooltrainerM6EndBattleText" + }, + "7": { + "after": "_Route14Biker1AfterBattleText", + "battle": "_Route14Biker1BattleText", + "event": "EVENT_BEAT_ROUTE_14_TRAINER_6", + "range": 4, + "won": "_Route14Biker1EndBattleText" + }, + "8": { + "after": "_Route14Biker2AfterBattleText", + "battle": "_Route14Biker2BattleText", + "event": "EVENT_BEAT_ROUTE_14_TRAINER_7", + "range": 4, + "won": "_Route14Biker2EndBattleText" + }, + "9": { + "after": "_Route14Biker3AfterBattleText", + "battle": "_Route14Biker3BattleText", + "event": "EVENT_BEAT_ROUTE_14_TRAINER_8", + "range": 3, + "won": "_Route14Biker3EndBattleText" + }, + "10": { + "after": "_Route14Biker4AfterBattleText", + "battle": "_Route14Biker4BattleText", + "event": "EVENT_BEAT_ROUTE_14_TRAINER_9", + "range": 4, + "won": "_Route14Biker4EndBattleText" + } + }, + "Route15": { + "1": { + "after": "_Route15CooltrainerF1AfterBattleText", + "battle": "_Route15CooltrainerF1BattleText", + "event": "EVENT_BEAT_ROUTE_15_TRAINER_0", + "range": 2, + "won": "_Route15CooltrainerF1EndBattleText" + }, + "2": { + "after": "_Route15CooltrainerF2AfterBattleText", + "battle": "_Route15CooltrainerF2BattleText", + "event": "EVENT_BEAT_ROUTE_15_TRAINER_1", + "range": 3, + "won": "_Route15CooltrainerF2EndBattleText" + }, + "3": { + "after": "_Route15CooltrainerM1AfterBattleText", + "battle": "_Route15CooltrainerM1BattleText", + "event": "EVENT_BEAT_ROUTE_15_TRAINER_2", + "range": 3, + "won": "_Route15CooltrainerM1EndBattleText" + }, + "4": { + "after": "_Route15CooltrainerM2AfterBattleText", + "battle": "_Route15CooltrainerM2BattleText", + "event": "EVENT_BEAT_ROUTE_15_TRAINER_3", + "range": 3, + "won": "_Route15CooltrainerM2EndBattleText" + }, + "5": { + "after": "_Route15Beauty1AfterBattleText", + "battle": "_Route15Beauty1BattleText", + "event": "EVENT_BEAT_ROUTE_15_TRAINER_4", + "range": 2, + "won": "_Route15Beauty1EndBattleText" + }, + "6": { + "after": "_Route15Beauty2AfterBattleText", + "battle": "_Route15Beauty2BattleText", + "event": "EVENT_BEAT_ROUTE_15_TRAINER_5", + "range": 3, + "won": "_Route15Beauty2EndBattleText" + }, + "7": { + "after": "_Route15Biker1AfterBattleText", + "battle": "_Route15Biker1BattleText", + "event": "EVENT_BEAT_ROUTE_15_TRAINER_6", + "range": 3, + "won": "_Route15Biker1EndBattleText" + }, + "8": { + "after": "_Route15Biker2AfterBattleText", + "battle": "_Route15Biker2BattleText", + "event": "EVENT_BEAT_ROUTE_15_TRAINER_7", + "range": 3, + "won": "_Route15Biker2EndBattleText" + }, + "9": { + "after": "_Route15CooltrainerF3AfterBattleText", + "battle": "_Route15CooltrainerF3BattleText", + "event": "EVENT_BEAT_ROUTE_15_TRAINER_8", + "range": 3, + "won": "_Route15CooltrainerF3EndBattleText" + }, + "10": { + "after": "_Route15CooltrainerF4AfterBattleText", + "battle": "_Route15CooltrainerF4BattleText", + "event": "EVENT_BEAT_ROUTE_15_TRAINER_9", + "range": 3, + "won": "_Route15CooltrainerF4EndBattleText" + } + }, + "Route16": { + "1": { + "after": "_Route16Biker1AfterBattleText", + "battle": "_Route16Biker1BattleText", + "event": "EVENT_BEAT_ROUTE_16_TRAINER_0", + "range": 3, + "won": "_Route16Biker1EndBattleText" + }, + "2": { + "after": "_Route16Biker2AfterBattleText", + "battle": "_Route16Biker2BattleText", + "event": "EVENT_BEAT_ROUTE_16_TRAINER_1", + "range": 2, + "won": "_Route16Biker2EndBattleText" + }, + "3": { + "after": "_Route16Biker3AfterBattleText", + "battle": "_Route16Biker3BattleText", + "event": "EVENT_BEAT_ROUTE_16_TRAINER_2", + "range": 2, + "won": "_Route16Biker3EndBattleText" + }, + "4": { + "after": "_Route16Biker4AfterBattleText", + "battle": "_Route16biker4BattleText", + "event": "EVENT_BEAT_ROUTE_16_TRAINER_3", + "range": 2, + "won": "_Route16Biker4EndBattleText" + }, + "5": { + "after": "_Route16Biker5AfterBattleText", + "battle": "_Route16Biker5BattleText", + "event": "EVENT_BEAT_ROUTE_16_TRAINER_4", + "range": 2, + "won": "_Route16Biker5EndBattleText" + }, + "6": { + "after": "_Route16Biker6AfterBattleText", + "battle": "_Route16Biker6BattleText", + "event": "EVENT_BEAT_ROUTE_16_TRAINER_5", + "range": 4, + "won": "_Route16Biker6EndBattleText" + } + }, + "Route17": { + "1": { + "after": "_Route17Biker1AfterBattleText", + "battle": "_Route17Biker1BattleText", + "event": "EVENT_BEAT_ROUTE_17_TRAINER_0", + "range": 3, + "won": "_Route17Biker1EndBattleText" + }, + "2": { + "after": "_Route17Biker2AfterBattleText", + "battle": "_Route17Biker2BattleText", + "event": "EVENT_BEAT_ROUTE_17_TRAINER_1", + "range": 4, + "won": "_Route17Biker2EndBattleText" + }, + "3": { + "after": "_Route17Biker3AfterBattleText", + "battle": "_Route17Biker3BattleText", + "event": "EVENT_BEAT_ROUTE_17_TRAINER_2", + "range": 4, + "won": "_Route17Biker3EndBattleText" + }, + "4": { + "after": "_Route17Biker4AfterBattleText", + "battle": "_Route17Biker4BattleText", + "event": "EVENT_BEAT_ROUTE_17_TRAINER_3", + "range": 4, + "won": "_Route17Biker4EndBattleText" + }, + "5": { + "after": "_Route17Biker5AfterBattleText", + "battle": "_Route17Biker5BattleText", + "event": "EVENT_BEAT_ROUTE_17_TRAINER_4", + "range": 3, + "won": "_Route17Biker5EndBattleText" + }, + "6": { + "after": "_Route17Biker6AfterBattleText", + "battle": "_Route17Biker6BattleText", + "event": "EVENT_BEAT_ROUTE_17_TRAINER_5", + "range": 2, + "won": "_Route17Biker6EndBattleText" + }, + "7": { + "after": "_Route17Biker7AfterBattleText", + "battle": "_Route17Biker7BattleText", + "event": "EVENT_BEAT_ROUTE_17_TRAINER_6", + "range": 4, + "won": "_Route17Biker7EndBattleText" + }, + "8": { + "after": "_Route17Biker8AfterBattleText", + "battle": "_Route17Biker8BattleText", + "event": "EVENT_BEAT_ROUTE_17_TRAINER_7", + "range": 2, + "won": "_Route17Biker8EndBattleText" + }, + "9": { + "after": "_Route17Biker9AfterBattleText", + "battle": "_Route17Biker9BattleText", + "event": "EVENT_BEAT_ROUTE_17_TRAINER_8", + "range": 3, + "won": "_Route17Biker9EndBattleText" + }, + "10": { + "after": "_Route17Biker10AfterBattleText", + "battle": "_Route17Biker10BattleText", + "event": "EVENT_BEAT_ROUTE_17_TRAINER_9", + "range": 4, + "won": "_Route17Biker10EndBattleText" + } + }, + "Route18": { + "1": { + "after": "_Route18CooltrainerM1AfterBattleText", + "battle": "_Route18CooltrainerM1BattleText", + "event": "EVENT_BEAT_ROUTE_18_TRAINER_0", + "range": 3, + "won": "_Route18CooltrainerM1EndBattleText" + }, + "2": { + "after": "_Route18CooltrainerM2AfterBattleText", + "battle": "_Route18CooltrainerM2BattleText", + "event": "EVENT_BEAT_ROUTE_18_TRAINER_1", + "range": 3, + "won": "_Route18CooltrainerM2EndBattleText" + }, + "3": { + "after": "_Route18CooltrainerM3AfterBattleText", + "battle": "_Route18CooltrainerM3BattleText", + "event": "EVENT_BEAT_ROUTE_18_TRAINER_2", + "range": 4, + "won": "_Route18CooltrainerM3EndBattleText" + } + }, + "Route19": { + "1": { + "after": "_Route19CooltrainerM1AfterBattleText", + "battle": "_Route19CooltrainerM1BattleText", + "event": "EVENT_BEAT_ROUTE_19_TRAINER_0", + "range": 4, + "won": "_Route19CooltrainerM1EndBattleText" + }, + "2": { + "after": "_Route19CooltrainerM2AfterBattleText", + "battle": "_Route19CooltrainerM2BattleText", + "event": "EVENT_BEAT_ROUTE_19_TRAINER_1", + "range": 4, + "won": "_Route19CooltrainerM2EndBattleText" + }, + "3": { + "after": "_Route19Swimmer1AfterBattleText", + "battle": "_Route19Swimmer1BattleText", + "event": "EVENT_BEAT_ROUTE_19_TRAINER_2", + "range": 3, + "won": "_Route19Swimmer1EndBattleText" + }, + "4": { + "after": "_Route19Swimmer2AfterBattleText", + "battle": "_Route19Swimmer2BattleText", + "event": "EVENT_BEAT_ROUTE_19_TRAINER_3", + "range": 4, + "won": "_Route19Swimmer2EndBattleText" + }, + "5": { + "after": "_Route19Swimmer3AfterBattleText", + "battle": "_Route19Swimmer3BattleText", + "event": "EVENT_BEAT_ROUTE_19_TRAINER_4", + "range": 4, + "won": "_Route19Swimmer3EndBattleText" + }, + "6": { + "after": "_Route19Swimmer4AfterBattleText", + "battle": "_Route19Swimmer4BattleText", + "event": "EVENT_BEAT_ROUTE_19_TRAINER_5", + "range": 4, + "won": "_Route19Swimmer4EndBattleText" + }, + "7": { + "after": "_Route19Swimmer5AfterBattleText", + "battle": "_Route19Swimmer5BattleText", + "event": "EVENT_BEAT_ROUTE_19_TRAINER_6", + "range": 3, + "won": "_Route19Swimmer5EndBattleText" + }, + "8": { + "after": "_Route19Swimmer6AfterBattleText", + "battle": "_Route19Swimmer6BattleText", + "event": "EVENT_BEAT_ROUTE_19_TRAINER_7", + "range": 4, + "won": "_Route19Swimmer6EndBattleText" + }, + "9": { + "after": "_Route19Swimmer7AfterBattleText", + "battle": "_Route19Swimmer7BattleText", + "event": "EVENT_BEAT_ROUTE_19_TRAINER_8", + "range": 4, + "won": "_Route19Swimmer7EndBattleText" + }, + "10": { + "after": "_Route19Swimmer8AfterBattleText", + "battle": "_Route19Swimmer8BattleText", + "event": "EVENT_BEAT_ROUTE_19_TRAINER_9", + "range": 4, + "won": "_Route19Swimmer8EndBattleText" + } + }, + "Route20": { + "1": { + "after": "_Route20Swimmer1AfterBattleText", + "battle": "_Route20Swimmer1BattleText", + "event": "EVENT_BEAT_ROUTE_20_TRAINER_0", + "range": 4, + "won": "_Route20Swimmer1EndBattleText" + }, + "2": { + "after": "_Route20Swimmer2AfterBattleText", + "battle": "_Route20Swimmer2BattleText", + "event": "EVENT_BEAT_ROUTE_20_TRAINER_1", + "range": 4, + "won": "_Route20Swimmer2EndBattleText" + }, + "3": { + "after": "_Route20Swimmer3AfterBattleText", + "battle": "_Route20Swimmer3BattleText", + "event": "EVENT_BEAT_ROUTE_20_TRAINER_2", + "range": 2, + "won": "_Route20Swimmer3EndBattleText" + }, + "4": { + "after": "_Route20Swimmer4AfterBattleText", + "battle": "_Route20Swimmer4BattleText", + "event": "EVENT_BEAT_ROUTE_20_TRAINER_3", + "range": 4, + "won": "_Route20Swimmer4EndBattleText" + }, + "5": { + "after": "_Route20Swimmer5AfterBattleText", + "battle": "_Route20Swimmer5BattleText", + "event": "EVENT_BEAT_ROUTE_20_TRAINER_4", + "range": 3, + "won": "_Route20Swimmer5EndBattleText" + }, + "6": { + "after": "_Route20Swimmer6AfterBattleText", + "battle": "_Route20Swimmer6BattleText", + "event": "EVENT_BEAT_ROUTE_20_TRAINER_5", + "range": 4, + "won": "_Route20Swimmer6EndBattleText" + }, + "7": { + "after": "_Route20CooltrainerMAfterBattleText", + "battle": "_Route20CooltrainerMBattleText", + "event": "EVENT_BEAT_ROUTE_20_TRAINER_6", + "range": 2, + "won": "_Route20CooltrainerMEndBattleText" + }, + "8": { + "after": "_Route20Swimmer7AfterBattleText", + "battle": "_Route20Swimmer7BattleText", + "event": "EVENT_BEAT_ROUTE_20_TRAINER_7", + "range": 4, + "won": "_Route20Swimmer7EndBattleText" + }, + "9": { + "after": "_Route20Swimmer8AfterBattleText", + "battle": "_Route20Swimmer8BattleText", + "event": "EVENT_BEAT_ROUTE_20_TRAINER_8", + "range": 3, + "won": "_Route20Swimmer8EndBattleText" + }, + "10": { + "after": "_Route20Swimmer9AfterBattleText", + "battle": "_Route20Swimmer9BattleText", + "event": "EVENT_BEAT_ROUTE_20_TRAINER_9", + "range": 4, + "won": "_Route20Swimmer9EndBattleText" + } + }, + "Route21": { + "1": { + "after": "_Route21Fisher1AfterBattleText", + "battle": "_Route21Fisher1BattleText", + "event": "EVENT_BEAT_ROUTE_21_TRAINER_0", + "range": 0, + "won": "_Route21Fisher1EndBattleText" + }, + "2": { + "after": "_Route21Fisher2AfterBattleText", + "battle": "_Route21Fisher2BattleText", + "event": "EVENT_BEAT_ROUTE_21_TRAINER_1", + "range": 0, + "won": "_Route21Fisher2EndBattleText" + }, + "3": { + "after": "_Route21Swimmer1AfterBattleText", + "battle": "_Route21Swimmer1BattleText", + "event": "EVENT_BEAT_ROUTE_21_TRAINER_2", + "range": 4, + "won": "_Route21Swimmer1EndBattleText" + }, + "4": { + "after": "_Route21Swimmer2AfterBattleText", + "battle": "_Route21Swimmer2BattleText", + "event": "EVENT_BEAT_ROUTE_21_TRAINER_3", + "range": 4, + "won": "_Route21Swimmer2EndBattleText" + }, + "5": { + "after": "_Route21Swimmer3AfterBattleText", + "battle": "_Route21Swimmer3BattleText", + "event": "EVENT_BEAT_ROUTE_21_TRAINER_4", + "range": 4, + "won": "_Route21Swimmer3EndBattleText" + }, + "6": { + "after": "_Route21Swimmer4AfterBattleText", + "battle": "_Route21Swimmer4BattleText", + "event": "EVENT_BEAT_ROUTE_21_TRAINER_5", + "range": 4, + "won": "_Route21Swimmer4EndBattleText" + }, + "7": { + "after": "_Route21Swimmer5AfterBattleText", + "battle": "_Route21Swimmer5BattleText", + "event": "EVENT_BEAT_ROUTE_21_TRAINER_6", + "range": 3, + "won": "_Route21Swimmer5EndBattleText" + }, + "8": { + "after": "_Route21Fisher3AfterBattleText", + "battle": "_Route21Fisher3BattleText", + "event": "EVENT_BEAT_ROUTE_21_TRAINER_7", + "range": 0, + "won": "_Route21Fisher3EndBattleText" + }, + "9": { + "after": "_Route21Fisher4AfterBattleText", + "battle": "_Route21Fisher4BattleText", + "event": "EVENT_BEAT_ROUTE_21_TRAINER_8", + "range": 0, + "won": "_Route21Fisher4EndBattleText" + } + }, + "Route24": { + "2": { + "after": "_Route24CooltrainerM2AfterBattleText", + "battle": "_Route24CooltrainerM2BattleText", + "event": "EVENT_BEAT_ROUTE_24_TRAINER_0", + "range": 4, + "won": "_Route24CooltrainerM2EndBattleText" + }, + "3": { + "after": "_Route24CooltrainerM3AfterBattleText", + "battle": "_Route24CooltrainerM3BattleText", + "event": "EVENT_BEAT_ROUTE_24_TRAINER_1", + "range": 1, + "won": "_Route24CooltrainerM3EndBattleText" + }, + "4": { + "after": "_Route24CooltrainerF1AfterBattleText", + "battle": "_Route24CooltrainerF1BattleText", + "event": "EVENT_BEAT_ROUTE_24_TRAINER_2", + "range": 1, + "won": "_Route24CooltrainerF1EndBattleText" + }, + "5": { + "after": "_Route24Youngster1AfterBattleText", + "battle": "_Route24Youngster1BattleText", + "event": "EVENT_BEAT_ROUTE_24_TRAINER_3", + "range": 1, + "won": "_Route24Youngster1EndBattleText" + }, + "6": { + "after": "_Route24CooltrainerF2AfterBattleText", + "battle": "_Route24CooltrainerF2BattleText", + "event": "EVENT_BEAT_ROUTE_24_TRAINER_4", + "range": 1, + "won": "_Route24CooltrainerF2EndBattleText" + }, + "7": { + "after": "_Route24Youngster2AfterBattleText", + "battle": "_Route24Youngster2BattleText", + "event": "EVENT_BEAT_ROUTE_24_TRAINER_5", + "range": 1, + "won": "_Route24Youngster2EndBattleText" + } + }, + "Route25": { + "1": { + "after": "_Route25Youngster1AfterBattleText", + "battle": "_Route25Youngster1BattleText", + "event": "EVENT_BEAT_ROUTE_25_TRAINER_0", + "range": 2, + "won": "_Route25Youngster1EndBattleText" + }, + "2": { + "after": "_Route25Youngster2AfterBattleText", + "battle": "_Route25Youngster2BattleText", + "event": "EVENT_BEAT_ROUTE_25_TRAINER_1", + "range": 3, + "won": "_Route25Youngster2EndBattleText" + }, + "3": { + "after": "_Route25CooltrainerMAfterBattleText", + "battle": "_Route25CooltrainerMBattleText", + "event": "EVENT_BEAT_ROUTE_25_TRAINER_2", + "range": 3, + "won": "_Route25CooltrainerMEndBattleText" + }, + "4": { + "after": "_Route25CooltrainerF1AfterBattleText", + "battle": "_Route25CooltrainerF1BattleText", + "event": "EVENT_BEAT_ROUTE_25_TRAINER_3", + "range": 2, + "won": "_Route25CooltrainerF1EndBattleText" + }, + "5": { + "after": "_Route25Youngster3AfterBattleText", + "battle": "_Route25Youngster3BattleText", + "event": "EVENT_BEAT_ROUTE_25_TRAINER_4", + "range": 4, + "won": "_Route25Youngster3EndBattleText" + }, + "6": { + "after": "_Route25CooltrainerF2AfterBattleText", + "battle": "_Route25CooltrainerF2BattleText", + "event": "EVENT_BEAT_ROUTE_25_TRAINER_5", + "range": 4, + "won": "_Route25CooltrainerF2EndBattleText" + }, + "7": { + "after": "_Route25Hiker1AfterBattleText", + "battle": "_Route25Hiker1BattleText", + "event": "EVENT_BEAT_ROUTE_25_TRAINER_6", + "range": 3, + "won": "_Route25Hiker1EndBattleText" + }, + "8": { + "after": "_Route25Hiker2AfterBattleText", + "battle": "_Route25Hiker2BattleText", + "event": "EVENT_BEAT_ROUTE_25_TRAINER_7", + "range": 2, + "won": "_Route25Hiker2EndBattleText" + }, + "9": { + "after": "_Route25Hiker3AfterBattleText", + "battle": "_Route25Hiker3BattleText", + "event": "EVENT_BEAT_ROUTE_25_TRAINER_8", + "range": 2, + "won": "_Route25Hiker3EndBattleText" + } + }, + "Route3": { + "2": { + "after": "_Route3Youngster1AfterBattleText", + "battle": "_Route3Youngster1BattleText", + "event": "EVENT_BEAT_ROUTE_3_TRAINER_0", + "range": 2, + "won": "_Route3Youngster1EndBattleText" + }, + "3": { + "after": "_Route3Youngster2AfterBattleText", + "battle": "_Route3Youngster2BattleText", + "event": "EVENT_BEAT_ROUTE_3_TRAINER_1", + "range": 3, + "won": "_Route3Youngster2EndBattleText" + }, + "4": { + "after": "_Route3CooltrainerF1AfterBattleText", + "battle": "_Route3CooltrainerF1BattleText", + "event": "EVENT_BEAT_ROUTE_3_TRAINER_2", + "range": 2, + "won": "_Route3CooltrainerF1EndBattleText" + }, + "5": { + "after": "_Route3Youngster3AfterBattleText", + "battle": "_Route3Youngster3BattleText", + "event": "EVENT_BEAT_ROUTE_3_TRAINER_3", + "range": 1, + "won": "_Route3Youngster3EndBattleText" + }, + "6": { + "after": "_Route3CooltrainerF2AfterBattleText", + "battle": "_Route3CooltrainerF2BattleText", + "event": "EVENT_BEAT_ROUTE_3_TRAINER_4", + "range": 4, + "won": "_Route3CooltrainerF2EndBattleText" + }, + "7": { + "after": "_Route3Youngster4AfterBattleText", + "battle": "_Route3Youngster4BattleText", + "event": "EVENT_BEAT_ROUTE_3_TRAINER_5", + "range": 3, + "won": "_Route3Youngster4EndBattleText" + }, + "8": { + "after": "_Route3Youngster5AfterBattleText", + "battle": "_Route3Youngster5BattleText", + "event": "EVENT_BEAT_ROUTE_3_TRAINER_6", + "range": 3, + "won": "_Route3Youngster5EndBattleText" + }, + "9": { + "after": "_Route3CooltrainerF3AfterBattleText", + "battle": "_Route3CooltrainerF3BattleText", + "event": "EVENT_BEAT_ROUTE_3_TRAINER_7", + "range": 2, + "won": "_Route3CooltrainerF3EndBattleText" + } + }, + "Route4": { + "2": { + "after": "_Route4CooltrainerF2AfterBattleText", + "battle": "_Route4CooltrainerF2BattleText", + "event": "EVENT_BEAT_ROUTE_4_TRAINER_0", + "range": 3, + "won": "_Route4CooltrainerF2EndBattleText" + } + }, + "Route6": { + "1": { + "after": "_Route6CooltrainerM1AfterBattleText", + "battle": "_Route6CooltrainerM1BattleText", + "event": "EVENT_BEAT_ROUTE_6_TRAINER_0", + "range": 0, + "won": "_Route6CooltrainerM1EndBattleText" + }, + "2": { + "after": "_Route6CooltrainerF1AfterBattleText", + "battle": "_Route6CooltrainerF1BattleText", + "event": "EVENT_BEAT_ROUTE_6_TRAINER_1", + "range": 0, + "won": "_Route6CooltrainerF1EndBattleText" + }, + "3": { + "after": "_Route6Youngster1AfterBattleText", + "battle": "_Route6Youngster1BattleText", + "event": "EVENT_BEAT_ROUTE_6_TRAINER_2", + "range": 4, + "won": "_Route6Youngster1EndBattleText" + }, + "4": { + "after": "_Route6CooltrainerM2AfterBattleText", + "battle": "_Route6CooltrainerM2BattleText", + "event": "EVENT_BEAT_ROUTE_6_TRAINER_3", + "range": 3, + "won": "_Route6CooltrainerM2EndBattleText" + }, + "5": { + "after": "_Route6CooltrainerF2AfterBattleText", + "battle": "_Route6CooltrainerF2BattleText", + "event": "EVENT_BEAT_ROUTE_6_TRAINER_4", + "range": 3, + "won": "_Route6CooltrainerF2EndBattleText" + }, + "6": { + "after": "_Route6Youngster2AfterBattleText", + "battle": "_Route6Youngster2BattleText", + "event": "EVENT_BEAT_ROUTE_6_TRAINER_5", + "range": 3, + "won": "_Route6Youngster2EndBattleText" + } + }, + "Route8": { + "1": { + "after": "_Route8SuperNerd1AfterBattleText", + "battle": "_Route8SuperNerd1BattleText", + "event": "EVENT_BEAT_ROUTE_8_TRAINER_0", + "range": 4, + "won": "_Route8SuperNerd1EndBattleText" + }, + "2": { + "after": "_Route8Gambler1AfterBattleText", + "battle": "_Route8Gambler1BattleText", + "event": "EVENT_BEAT_ROUTE_8_TRAINER_1", + "range": 4, + "won": "_Route8Gambler1EndBattleText" + }, + "3": { + "after": "_Route8SuperNerd2AfterBattleText", + "battle": "_Route8SuperNerd2BattleText", + "event": "EVENT_BEAT_ROUTE_8_TRAINER_2", + "range": 4, + "won": "_Route8SuperNerd2EndBattleText" + }, + "4": { + "after": "_Route8CooltrainerF1AfterBattleText", + "battle": "_Route8CooltrainerF1BattleText", + "event": "EVENT_BEAT_ROUTE_8_TRAINER_3", + "range": 2, + "won": "_Route8CooltrainerF1EndBattleText" + }, + "5": { + "after": "_Route8SuperNerd3AfterBattleText", + "battle": "_Route8SuperNerd3BattleText", + "event": "EVENT_BEAT_ROUTE_8_TRAINER_4", + "range": 3, + "won": "_Route8SuperNerd3EndBattleText" + }, + "6": { + "after": "_Route8CooltrainerF2AfterBattleText", + "battle": "_Route8CooltrainerF2BattleText", + "event": "EVENT_BEAT_ROUTE_8_TRAINER_5", + "range": 3, + "won": "_Route8CooltrainerF2EndBattleText" + }, + "7": { + "after": "_Route8CooltrainerF3AfterBattleText", + "battle": "_Route8CooltrainerF3BattleText", + "event": "EVENT_BEAT_ROUTE_8_TRAINER_6", + "range": 2, + "won": "_Route8CooltrainerF3EndBattleText" + }, + "8": { + "after": "_Route8Gambler2AfterBattleText", + "battle": "_Route8Gambler2BattleText", + "event": "EVENT_BEAT_ROUTE_8_TRAINER_7", + "range": 2, + "won": "_Route8Gambler2EndBattleText" + }, + "9": { + "after": "_Route8CooltrainerF4AfterBattleText", + "battle": "_Route8CooltrainerF4BattleText", + "event": "EVENT_BEAT_ROUTE_8_TRAINER_8", + "range": 4, + "won": "_Route8CooltrainerF4EndBattleText" + } + }, + "Route9": { + "1": { + "after": "_Route9CooltrainerF1AfterBattleText", + "battle": "_Route9CooltrainerF1BattleText", + "event": "EVENT_BEAT_ROUTE_9_TRAINER_0", + "range": 3, + "won": "_Route9CooltrainerF1EndBattleText" + }, + "2": { + "after": "_Route9AJAfterBattleText", + "battle": "_Route9AJBattleText", + "event": "EVENT_BEAT_ROUTE_9_TRAINER_1", + "range": 2, + "won": "_Route9AJEndBattleText" + }, + "3": { + "after": "_Route9CooltrainerM2AfterBattleText", + "battle": "_Route9CooltrainerM2BattleText", + "event": "EVENT_BEAT_ROUTE_9_TRAINER_2", + "range": 4, + "won": "_Route9CooltrainerM2EndBattleText" + }, + "4": { + "after": "_Route9CooltrainerF2AfterBattleText", + "battle": "_Route9CooltrainerF2BattleText", + "event": "EVENT_BEAT_ROUTE_9_TRAINER_3", + "range": 2, + "won": "_Route9CooltrainerF2EndBattleText" + }, + "5": { + "after": "_Route9Hiker1AfterBattleText", + "battle": "_Route9Hiker1BattleText", + "event": "EVENT_BEAT_ROUTE_9_TRAINER_4", + "range": 2, + "won": "_Route9Hiker1EndBattleText" + }, + "6": { + "after": "_Route9Hiker2AfterBattleText", + "battle": "_Route9Hiker2BattleText", + "event": "EVENT_BEAT_ROUTE_9_TRAINER_5", + "range": 3, + "won": "_Route9Hiker2EndBattleText" + }, + "7": { + "after": "_Route9Youngster1AfterBattleText", + "battle": "_Route9Youngster1BattleText", + "event": "EVENT_BEAT_ROUTE_9_TRAINER_6", + "range": 4, + "won": "_Route9Youngster1EndBattleText" + }, + "8": { + "after": "_Route9Hiker3AfterBattleText", + "battle": "_Route9Hiker3BattleText", + "event": "EVENT_BEAT_ROUTE_9_TRAINER_7", + "range": 2, + "won": "_Route9Hiker3EndBattleText" + }, + "9": { + "after": "_Route9Youngster2AfterBattleText", + "battle": "_Route9Youngster2BattleText", + "event": "EVENT_BEAT_ROUTE_9_TRAINER_8", + "range": 2, + "won": "_Route9Youngster2EndBattleText" + } + }, + "SSAnne1FRooms": { + "1": { + "after": "_SSAnne1FRoomsGentleman1AfterBattleText", + "battle": "_SSAnne1FRoomsGentleman1BattleText", + "event": "EVENT_BEAT_SS_ANNE_8_TRAINER_0", + "range": 2, + "won": "_SSAnne1FRoomsGentleman1EndBattleText" + }, + "2": { + "after": "_SSAnne1FRoomsGentleman2AfterBattleText", + "battle": "_SSAnne1FRoomsGentleman2BattleText", + "event": "EVENT_BEAT_SS_ANNE_8_TRAINER_1", + "range": 3, + "won": "_SSAnne1FRoomsGentleman2EndBattleText" + }, + "3": { + "after": "_SSAnne1FRoomsYoungsterAfterBattleText", + "battle": "_SSAnne1FRoomsYoungsterBattleText", + "event": "EVENT_BEAT_SS_ANNE_8_TRAINER_2", + "range": 2, + "won": "_SSAnne1FRoomsYoungsterEndBattleText" + }, + "4": { + "after": "_SSAnne1FRoomsCooltrainerFAfterBattleText", + "battle": "_SSAnne1FRoomsCooltrainerFBattleText", + "event": "EVENT_BEAT_SS_ANNE_8_TRAINER_3", + "range": 2, + "won": "_SSAnne1FRoomsCooltrainerFEndBattleText" + } + }, + "SSAnne2FRooms": { + "1": { + "after": "_SSAnne2FRoomsGentleman1AfterBattleText", + "battle": "_SSAnne2FRoomsGentleman1BattleText", + "event": "EVENT_BEAT_SS_ANNE_9_TRAINER_0", + "range": 2, + "won": "_SSAnne2FRoomsGentleman1EndBattleText" + }, + "2": { + "after": "_SSAnne2FRoomsFisherAfterBattleText", + "battle": "_SSAnne2FRoomsFisherBattleText", + "event": "EVENT_BEAT_SS_ANNE_9_TRAINER_1", + "range": 3, + "won": "_SSAnne2FRoomsFisherEndBattleText" + }, + "3": { + "after": "_SSAnne2FRoomsGentleman2AfterBattleText", + "battle": "_SSAnne2FRoomsGentleman2BattleText", + "event": "EVENT_BEAT_SS_ANNE_9_TRAINER_2", + "range": 3, + "won": "_SSAnne2FRoomsGentleman2EndBattleText" + }, + "4": { + "after": "_SSAnne2FRoomsCooltrainerFAfterBattleText", + "battle": "_SSAnne2FRoomsCooltrainerFBattleText", + "event": "EVENT_BEAT_SS_ANNE_9_TRAINER_3", + "range": 2, + "won": "_SSAnne2FRoomsCooltrainerFEndBattleText" + } + }, + "SSAnneB1FRooms": { + "1": { + "after": "_SSAnneB1FRoomsSailor1AfterBattleText", + "battle": "_SSAnneB1FRoomsSailor1BattleText", + "event": "EVENT_BEAT_SS_ANNE_10_TRAINER_0", + "range": 2, + "won": "_SSAnneB1FRoomsSailor1EndBattleText" + }, + "2": { + "after": "_SSAnneB1FRoomsSailor2AfterBattleText", + "battle": "_SSAnneB1FRoomsSailor2BattleText", + "event": "EVENT_BEAT_SS_ANNE_10_TRAINER_1", + "range": 3, + "won": "_SSAnneB1FRoomsSailor2EndBattleText" + }, + "3": { + "after": "_SSAnneB1FRoomsSailor3AfterBattleText", + "battle": "_SSAnneB1FRoomsSailor3BattleText", + "event": "EVENT_BEAT_SS_ANNE_10_TRAINER_2", + "range": 2, + "won": "_SSAnneB1FRoomsSailor3EndBattleText" + }, + "4": { + "after": "_SSAnneB1FRoomsSailor4AfterBattleText", + "battle": "_SSAnneB1FRoomsSailor4BattleText", + "event": "EVENT_BEAT_SS_ANNE_10_TRAINER_3", + "range": 2, + "won": "_SSAnneB1FRoomsSailor4EndBattleText" + }, + "5": { + "after": "_SSAnneB1FRoomsSailor5AfterBattleText", + "battle": "_SSAnneB1FRoomsSailor5BattleText", + "event": "EVENT_BEAT_SS_ANNE_10_TRAINER_4", + "range": 2, + "won": "_SSAnneB1FRoomsSailor5EndBattleText" + }, + "6": { + "after": "_SSAnneB1FRoomsFisherAfterBattleText", + "battle": "_SSAnneB1FRoomsFisherBattleText", + "event": "EVENT_BEAT_SS_ANNE_10_TRAINER_5", + "range": 3, + "won": "_SSAnneB1FRoomsFisherEndBattleText" + } + }, + "SSAnneBow": { + "4": { + "after": "_SSAnneBowSailor2AfterBattleText", + "battle": "_SSAnneBowSailor2BattleText", + "event": "EVENT_BEAT_SS_ANNE_5_TRAINER_0", + "range": 3, + "won": "_SSAnneBowSailor2EndBattleText" + }, + "5": { + "after": "_SSAnneBowSailor3AfterBattleText", + "battle": "_SSAnneBowSailor3BattleText", + "event": "EVENT_BEAT_SS_ANNE_5_TRAINER_1", + "range": 3, + "won": "_SSAnneBowSailor3EndBattleText" + } + }, + "SaffronGym": { + "2": { + "after": "_SaffronGymChanneler1AfterBattleText", + "battle": "_SaffronGymChanneler1BattleText", + "event": "EVENT_BEAT_SAFFRON_GYM_TRAINER_0", + "range": 3, + "won": "_SaffronGymChanneler1EndBattleText" + }, + "3": { + "after": "_SaffronGymYoungster1AfterBattleText", + "battle": "_SaffronGymYoungster1BattleText", + "event": "EVENT_BEAT_SAFFRON_GYM_TRAINER_1", + "range": 3, + "won": "_SaffronGymYoungster1EndBattleText" + }, + "4": { + "after": "_SaffronGymChanneler2AfterBattleText", + "battle": "_SaffronGymChanneler2BattleText", + "event": "EVENT_BEAT_SAFFRON_GYM_TRAINER_2", + "range": 3, + "won": "_SaffronGymChanneler2EndBattleText" + }, + "5": { + "after": "_SaffronGymYoungster2AfterBattleText", + "battle": "_SaffronGymYoungster2BattleText", + "event": "EVENT_BEAT_SAFFRON_GYM_TRAINER_3", + "range": 3, + "won": "_SaffronGymYoungster2EndBattleText" + }, + "6": { + "after": "_SaffronGymChanneler3AfterBattleText", + "battle": "_SaffronGymChanneler3BattleText", + "event": "EVENT_BEAT_SAFFRON_GYM_TRAINER_4", + "range": 3, + "won": "_SaffronGymChanneler3EndBattleText" + }, + "7": { + "after": "_SaffronGymYoungster3AfterBattleText", + "battle": "_SaffronGymYoungster3BattleText", + "event": "EVENT_BEAT_SAFFRON_GYM_TRAINER_5", + "range": 3, + "won": "_SaffronGymYoungster3EndBattleText" + }, + "8": { + "after": "_SaffronGymYoungster4AfterBattleText", + "battle": "_SaffronGymYoungster4BattleText", + "event": "EVENT_BEAT_SAFFRON_GYM_TRAINER_6", + "range": 3, + "won": "_SaffronGymYoungster4EndBattleText" + } + }, + "SeafoamIslandsB4F": { + "2": { + "after": "_SeafoamIslandsB4FArticunoBattleText", + "battle": "_SeafoamIslandsB4FArticunoBattleText", + "event": "EVENT_BEAT_ARTICUNO", + "range": 0, + "won": "_SeafoamIslandsB4FArticunoBattleText" + } + }, + "SilphCo10F": { + "1": { + "after": "_SilphCo10FRocketAfterBattleText", + "battle": "_SilphCo10FRocketBattleText", + "event": "EVENT_BEAT_SILPH_CO_10F_TRAINER_0", + "range": 3, + "won": "_SilphCo10FRocketEndBattleText" + }, + "2": { + "after": "_SilphCo10FScientistAfterBattleText", + "battle": "_SilphCo10FScientistBattleText", + "event": "EVENT_BEAT_SILPH_CO_10F_TRAINER_1", + "range": 4, + "won": "_SilphCo10FScientistEndBattleText" + } + }, + "SilphCo11F": { + "5": { + "after": "_SilphCo11FRocket2AfterBattleText", + "battle": "_SilphCo11FRocket2BattleText", + "event": "EVENT_BEAT_SILPH_CO_11F_TRAINER_0", + "range": 3, + "won": "_SilphCo11FRocket2EndBattleText" + } + }, + "SilphCo2F": { + "2": { + "after": "_SilphCo2FScientist1AfterBattleText", + "battle": "_SilphCo2FScientist1BattleText", + "event": "EVENT_BEAT_SILPH_CO_2F_TRAINER_0", + "range": 3, + "won": "_SilphCo2FScientist1EndBattleText" + }, + "3": { + "after": "_SilphCo2FScientist2AfterBattleText", + "battle": "_SilphCo2FScientist2BattleText", + "event": "EVENT_BEAT_SILPH_CO_2F_TRAINER_1", + "range": 4, + "won": "_SilphCo2FScientist2EndBattleText" + }, + "4": { + "after": "_SilphCo2FRocket1AfterBattleText", + "battle": "_SilphCo2FRocket1BattleText", + "event": "EVENT_BEAT_SILPH_CO_2F_TRAINER_2", + "range": 3, + "won": "_SilphCo2FRocket1EndBattleText" + }, + "5": { + "after": "_SilphCo2FRocket2AfterBattleText", + "battle": "_SilphCo2FRocket2BattleText", + "event": "EVENT_BEAT_SILPH_CO_2F_TRAINER_3", + "range": 3, + "won": "_SilphCo2FRocket2EndBattleText" + } + }, + "SilphCo3F": { + "2": { + "after": "_SilphCo3FRocketAfterBattleText", + "battle": "_SilphCo3FRocketBattleText", + "event": "EVENT_BEAT_SILPH_CO_3F_TRAINER_0", + "range": 2, + "won": "_SilphCo3FRocketEndBattleText" + }, + "3": { + "after": "_SilphCo3FScientistAfterBattleText", + "battle": "_SilphCo3FScientistBattleText", + "event": "EVENT_BEAT_SILPH_CO_3F_TRAINER_1", + "range": 3, + "won": "_SilphCo3FScientistEndBattleText" + } + }, + "SilphCo4F": { + "2": { + "after": "_SilphCo4FRocket1AfterBattleText", + "battle": "_SilphCo4FRocket1BattleText", + "event": "EVENT_BEAT_SILPH_CO_4F_TRAINER_0", + "range": 4, + "won": "_SilphCo4FRocket1EndBattleText" + }, + "3": { + "after": "_SilphCo4FScientistAfterBattleText", + "battle": "_SilphCo4FScientistBattleText", + "event": "EVENT_BEAT_SILPH_CO_4F_TRAINER_1", + "range": 3, + "won": "_SilphCo4FScientistEndBattleText" + }, + "4": { + "after": "_SilphCo4FRocket2AfterBattleText", + "battle": "_SilphCo4FRocket2BattleText", + "event": "EVENT_BEAT_SILPH_CO_4F_TRAINER_2", + "range": 4, + "won": "_SilphCo4FRocket2EndBattleText" + } + }, + "SilphCo5F": { + "2": { + "after": "_SilphCo5FRocket1AfterBattleText", + "battle": "_SilphCo5FRocket1BattleText", + "event": "EVENT_BEAT_SILPH_CO_5F_TRAINER_0", + "range": 1, + "won": "_SilphCo5FRocket1EndBattleText" + }, + "3": { + "after": "_SilphCo5FScientistAfterBattleText", + "battle": "_SilphCo5FScientistBattleText", + "event": "EVENT_BEAT_SILPH_CO_5F_TRAINER_1", + "range": 2, + "won": "_SilphCo5FScientistEndBattleText" + }, + "4": { + "after": "_SilphCo5FRockerAfterBattleText", + "battle": "_SilphCo5FRockerBattleText", + "event": "EVENT_BEAT_SILPH_CO_5F_TRAINER_2", + "range": 4, + "won": "_SilphCo5FRockerEndBattleText" + }, + "5": { + "after": "_SilphCo5FRocket2AfterBattleText", + "battle": "_SilphCo5FRocket2BattleText", + "event": "EVENT_BEAT_SILPH_CO_5F_TRAINER_3", + "range": 3, + "won": "_SilphCo5FRocket2EndBattleText" + } + }, + "SilphCo6F": { + "6": { + "after": "_SilphCo6FRocket1AfterBattleText", + "battle": "_SilphCo6FRocket1BattleText", + "event": "EVENT_BEAT_SILPH_CO_6F_TRAINER_0", + "range": 2, + "won": "_SilphCo6FRocket1EndBattleText" + }, + "7": { + "after": "_SilphCo6FScientistAfterBattleText", + "battle": "_SilphCo6FScientistBattleText", + "event": "EVENT_BEAT_SILPH_CO_6F_TRAINER_1", + "range": 3, + "won": "_SilphCo6FScientistEndBattleText" + }, + "8": { + "after": "_SilphCo6FRocket2AfterBattleText", + "battle": "_SilphCo6FRocket2BattleText", + "event": "EVENT_BEAT_SILPH_CO_6F_TRAINER_2", + "range": 2, + "won": "_SilphCo6FRocket2EndBattleText" + } + }, + "SilphCo7F": { + "5": { + "after": "_SilphCo7FRocket1AfterBattleText", + "battle": "_SilphCo7FRocket1BattleText", + "event": "EVENT_BEAT_SILPH_CO_7F_TRAINER_0", + "range": 2, + "won": "_SilphCo7FRocket1EndBattleText" + }, + "6": { + "after": "_SilphCo7FScientistAfterBattleText", + "battle": "_SilphCo7FScientistBattleText", + "event": "EVENT_BEAT_SILPH_CO_7F_TRAINER_1", + "range": 3, + "won": "_SilphCo7FScientistEndBattleText" + }, + "7": { + "after": "_SilphCo7FRocket2AfterBattleText", + "battle": "_SilphCo7FRocket2BattleText", + "event": "EVENT_BEAT_SILPH_CO_7F_TRAINER_2", + "range": 3, + "won": "_SilphCo7FRocket2EndBattleText" + }, + "8": { + "after": "_SilphCo7FRocket3AfterBattleText", + "battle": "_SilphCo7FRocket3BattleText", + "event": "EVENT_BEAT_SILPH_CO_7F_TRAINER_3", + "range": 4, + "won": "_SilphCo7FRocket3EndBattleText" + } + }, + "SilphCo8F": { + "2": { + "after": "_SilphCo8FRocket1AfterBattleText", + "battle": "_SilphCo8FRocket1BattleText", + "event": "EVENT_BEAT_SILPH_CO_8F_TRAINER_0", + "range": 4, + "won": "_SilphCo8FRocket1EndBattleText" + }, + "3": { + "after": "_SilphCo8FScientistAfterBattleText", + "battle": "_SilphCo8FScientistBattleText", + "event": "EVENT_BEAT_SILPH_CO_8F_TRAINER_1", + "range": 4, + "won": "_SilphCo8FScientistEndBattleText" + }, + "4": { + "after": "_SilphCo8FRocket2AfterBattleText", + "battle": "_SilphCo8FRocket2BattleText", + "event": "EVENT_BEAT_SILPH_CO_8F_TRAINER_2", + "range": 4, + "won": "_SilphCo8FRocket2EndBattleText" + } + }, + "SilphCo9F": { + "2": { + "after": "_SilphCo9FRocket1AfterBattleText", + "battle": "_SilphCo9FRocket1BattleText", + "event": "EVENT_BEAT_SILPH_CO_9F_TRAINER_0", + "range": 4, + "won": "_SilphCo9FRocket1EndBattleText" + }, + "3": { + "after": "_SilphCo9FScientistAfterBattleText", + "battle": "_SilphCo9FScientistBattleText", + "event": "EVENT_BEAT_SILPH_CO_9F_TRAINER_1", + "range": 2, + "won": "_SilphCo9FScientistEndBattleText" + }, + "4": { + "after": "_SilphCo9FRocket2AfterBattleText", + "battle": "_SilphCo9FRocket2BattleText", + "event": "EVENT_BEAT_SILPH_CO_9F_TRAINER_2", + "range": 4, + "won": "_SilphCo9FRocket2EndBattleText" + } + }, + "VermilionGym": { + "2": { + "after": "_VermilionGymGentlemanAfterBattleText", + "battle": "_VermilionGymGentlemanBattleText", + "event": "EVENT_BEAT_VERMILION_GYM_TRAINER_0", + "range": 3, + "won": "_VermilionGymGentlemanEndBattleText" + }, + "3": { + "after": "_VermilionGymSuperNerdAfterBattleText", + "battle": "_VermilionGymSuperNerdBattleText", + "event": "EVENT_BEAT_VERMILION_GYM_TRAINER_1", + "range": 2, + "won": "_VermilionGymSuperNerdEndBattleText" + }, + "4": { + "after": "_VermilionGymSailorAfterBattleText", + "battle": "_VermilionGymSailorBattleText", + "event": "EVENT_BEAT_VERMILION_GYM_TRAINER_2", + "range": 3, + "won": "_VermilionGymSailorEndBattleText" + } + }, + "VictoryRoad1F": { + "1": { + "after": "_VictoryRoad1FCooltrainerFAfterBattleText", + "battle": "_VictoryRoad1FCooltrainerFBattleText", + "event": "EVENT_BEAT_VICTORY_ROAD_1_TRAINER_0", + "range": 2, + "won": "_VictoryRoad1FCooltrainerFEndBattleText" + }, + "2": { + "after": "_VictoryRoad1FCooltrainerMAfterBattleText", + "battle": "_VictoryRoad1FCooltrainerMBattleText", + "event": "EVENT_BEAT_VICTORY_ROAD_1_TRAINER_1", + "range": 2, + "won": "_VictoryRoad1FCooltrainerMEndBattleText" + } + }, + "VictoryRoad2F": { + "1": { + "after": "_VictoryRoad2FHikerAfterBattleText", + "battle": "_VictoryRoad2FHikerBattleText", + "event": "EVENT_BEAT_VICTORY_ROAD_2_TRAINER_0", + "range": 4, + "won": "_VictoryRoad2FHikerEndBattleText" + }, + "2": { + "after": "_VictoryRoad2FSuperNerd1AfterBattleText", + "battle": "_VictoryRoad2FSuperNerd1BattleText", + "event": "EVENT_BEAT_VICTORY_ROAD_2_TRAINER_1", + "range": 3, + "won": "_VictoryRoad2FSuperNerd1EndBattleText" + }, + "3": { + "after": "_VictoryRoad2FCooltrainerMAfterBattleText", + "battle": "_VictoryRoad2FCooltrainerMBattleText", + "event": "EVENT_BEAT_VICTORY_ROAD_2_TRAINER_2", + "range": 3, + "won": "_VictoryRoad2FCooltrainerMEndBattleText" + }, + "4": { + "after": "_VictoryRoad2FSuperNerd2AfterBattleText", + "battle": "_VictoryRoad2FSuperNerd2BattleText", + "event": "EVENT_BEAT_VICTORY_ROAD_2_TRAINER_3", + "range": 1, + "won": "_VictoryRoad2FSuperNerd2EndBattleText" + }, + "5": { + "after": "_VictoryRoad2FSuperNerd3AfterBattleText", + "battle": "_VictoryRoad2FSuperNerd3BattleText", + "event": "EVENT_BEAT_VICTORY_ROAD_2_TRAINER_4", + "range": 3, + "won": "_VictoryRoad2FSuperNerd3EndBattleText" + }, + "6": { + "after": "_VictoryRoad2FMoltresBattleText", + "battle": "_VictoryRoad2FMoltresBattleText", + "event": "EVENT_BEAT_MOLTRES", + "range": 0, + "won": "_VictoryRoad2FMoltresBattleText" + } + }, + "VictoryRoad3F": { + "1": { + "after": "_VictoryRoad3FCooltrainerM1AfterBattleText", + "battle": "_VictoryRoad3FCooltrainerM1BattleText", + "event": "EVENT_BEAT_VICTORY_ROAD_3_TRAINER_0", + "range": 1, + "won": "_VictoryRoad3FCooltrainerM1EndBattleText" + }, + "2": { + "after": "_VictoryRoad3FCooltrainerF1AfterBattleText", + "battle": "_VictoryRoad3FCooltrainerF1BattleText", + "event": "EVENT_BEAT_VICTORY_ROAD_3_TRAINER_1", + "range": 4, + "won": "_VictoryRoad3FCooltrainerF1EndBattleText" + }, + "3": { + "after": "_VictoryRoad3FCooltrainerM2AfterBattleText", + "battle": "_VictoryRoad3FCooltrainerM2BattleText", + "event": "EVENT_BEAT_VICTORY_ROAD_3_TRAINER_2", + "range": 4, + "won": "_VictoryRoad3FCooltrainerM2EndBattleText" + }, + "4": { + "after": "_VictoryRoad3FCooltrainerF2AfterBattleText", + "battle": "_VictoryRoad3FCooltrainerF2BattleText", + "event": "EVENT_BEAT_VICTORY_ROAD_3_TRAINER_3", + "range": 4, + "won": "_VictoryRoad3FCooltrainerF2EndBattleText" + } + }, + "ViridianForest": { + "2": { + "after": "_ViridianForestYoungster2AfterBattleText", + "battle": "_ViridianForestYoungster2BattleText", + "event": "EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_0", + "range": 4, + "won": "_ViridianForestYoungster2EndBattleText" + }, + "3": { + "after": "_ViridianForestYoungster3AfterBattleText", + "battle": "_ViridianForestYoungster3BattleText", + "event": "EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_1", + "range": 4, + "won": "_ViridianForestYoungster3EndBattleText" + }, + "4": { + "after": "_ViridianForestYoungster4AfterBattleText", + "battle": "_ViridianForestYoungster4BattleText", + "event": "EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_2", + "range": 1, + "won": "_ViridianForestYoungster4EndBattleText" + }, + "5": { + "after": "_ViridianForestCooltrainerFAfterBattleText", + "battle": "_ViridianForestCooltrainerFBattleText", + "event": "EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_3", + "range": 0, + "won": "_ViridianForestCooltrainerFEndBattleText" + }, + "6": { + "after": "_ViridianForestYoungster5AfterBattleText", + "battle": "_ViridianForestYoungster5BattleText", + "event": "EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_4", + "range": 4, + "won": "_ViridianForestYoungster5EndBattleText" + } + }, + "ViridianGym": { + "2": { + "after": "_ViridianGymCooltrainerM1AfterBattleText", + "battle": "_ViridianGymCooltrainerM1BattleText", + "event": "EVENT_BEAT_VIRIDIAN_GYM_TRAINER_0", + "range": 4, + "won": "_ViridianGymCooltrainerM1EndBattleText" + }, + "3": { + "after": "_ViridianGymHiker1AfterBattleText", + "battle": "_ViridianGymHiker1BattleText", + "event": "EVENT_BEAT_VIRIDIAN_GYM_TRAINER_1", + "range": 4, + "won": "_ViridianGymHiker1EndBattleText" + }, + "4": { + "after": "_ViridianGymRocker1AfterBattleText", + "battle": "_ViridianGymRocker1BattleText", + "event": "EVENT_BEAT_VIRIDIAN_GYM_TRAINER_2", + "range": 4, + "won": "_ViridianGymRocker1EndBattleText" + }, + "5": { + "after": "_ViridianGymHiker2AfterBattleText", + "battle": "_ViridianGymHiker2BattleText", + "event": "EVENT_BEAT_VIRIDIAN_GYM_TRAINER_3", + "range": 2, + "won": "_ViridianGymHiker2EndBattleText" + }, + "6": { + "after": "_ViridianGymCooltrainerM2AfterBattleText", + "battle": "_ViridianGymCooltrainerM2BattleText", + "event": "EVENT_BEAT_VIRIDIAN_GYM_TRAINER_4", + "range": 3, + "won": "_ViridianGymCooltrainerM2EndBattleText" + }, + "7": { + "after": "_ViridianGymHiker3AfterBattleText", + "battle": "_ViridianGymHiker3BattleText", + "event": "EVENT_BEAT_VIRIDIAN_GYM_TRAINER_5", + "range": 4, + "won": "_ViridianGymHiker3EndBattleText" + }, + "8": { + "after": "_ViridianGymRocker2AfterBattleText", + "battle": "_ViridianGymRocker2BattleText", + "event": "EVENT_BEAT_VIRIDIAN_GYM_TRAINER_6", + "range": 3, + "won": "_ViridianGymRocker2EndBattleText" + }, + "9": { + "after": "_ViridianGymCooltrainerM3AfterBattleText", + "battle": "_ViridianGymCooltrainerM3BattleText", + "event": "EVENT_BEAT_VIRIDIAN_GYM_TRAINER_7", + "range": 4, + "won": "_ViridianGymCooltrainerM3EndBattleText" + } + } + } + }, + "tileAnimations": [ + "TILEANIM_NONE", + "TILEANIM_WATER", + "TILEANIM_WATER_FLOWER" + ], + "tilesets": [ + { + "blockCount": 128, + "id": "OVERWORLD", + "imageBase": "overworld", + "imageHeight": 48, + "imageWidth": 128, + "name": "Overworld" + }, + { + "blockCount": 19, + "id": "REDS_HOUSE_1", + "imageBase": "reds_house", + "imageHeight": 40, + "imageWidth": 128, + "name": "RedsHouse1" + }, + { + "blockCount": 40, + "id": "MART", + "imageBase": "pokecenter", + "imageHeight": 48, + "imageWidth": 128, + "name": "Mart" + }, + { + "blockCount": 128, + "id": "FOREST", + "imageBase": "forest", + "imageHeight": 48, + "imageWidth": 128, + "name": "Forest" + }, + { + "blockCount": 19, + "id": "REDS_HOUSE_2", + "imageBase": "reds_house", + "imageHeight": 40, + "imageWidth": 128, + "name": "RedsHouse2" + }, + { + "blockCount": 116, + "id": "DOJO", + "imageBase": "gym", + "imageHeight": 48, + "imageWidth": 128, + "name": "Dojo" + }, + { + "blockCount": 40, + "id": "POKECENTER", + "imageBase": "pokecenter", + "imageHeight": 48, + "imageWidth": 128, + "name": "Pokecenter" + }, + { + "blockCount": 116, + "id": "GYM", + "imageBase": "gym", + "imageHeight": 48, + "imageWidth": 128, + "name": "Gym" + }, + { + "blockCount": 35, + "id": "HOUSE", + "imageBase": "house", + "imageHeight": 48, + "imageWidth": 128, + "name": "House" + }, + { + "blockCount": 128, + "id": "FOREST_GATE", + "imageBase": "gate", + "imageHeight": 48, + "imageWidth": 128, + "name": "ForestGate" + }, + { + "blockCount": 128, + "id": "MUSEUM", + "imageBase": "gate", + "imageHeight": 48, + "imageWidth": 128, + "name": "Museum" + }, + { + "blockCount": 17, + "id": "UNDERGROUND", + "imageBase": "underground", + "imageHeight": 16, + "imageWidth": 128, + "name": "Underground" + }, + { + "blockCount": 128, + "id": "GATE", + "imageBase": "gate", + "imageHeight": 48, + "imageWidth": 128, + "name": "Gate" + }, + { + "blockCount": 62, + "id": "SHIP", + "imageBase": "ship", + "imageHeight": 48, + "imageWidth": 128, + "name": "Ship" + }, + { + "blockCount": 23, + "id": "SHIP_PORT", + "imageBase": "ship_port", + "imageHeight": 48, + "imageWidth": 128, + "name": "ShipPort" + }, + { + "blockCount": 110, + "id": "CEMETERY", + "imageBase": "cemetery", + "imageHeight": 48, + "imageWidth": 128, + "name": "Cemetery" + }, + { + "blockCount": 58, + "id": "INTERIOR", + "imageBase": "interior", + "imageHeight": 48, + "imageWidth": 128, + "name": "Interior" + }, + { + "blockCount": 128, + "id": "CAVERN", + "imageBase": "cavern", + "imageHeight": 40, + "imageWidth": 128, + "name": "Cavern" + }, + { + "blockCount": 79, + "id": "LOBBY", + "imageBase": "lobby", + "imageHeight": 48, + "imageWidth": 128, + "name": "Lobby" + }, + { + "blockCount": 72, + "id": "MANSION", + "imageBase": "mansion", + "imageHeight": 48, + "imageWidth": 128, + "name": "Mansion" + }, + { + "blockCount": 58, + "id": "LAB", + "imageBase": "lab", + "imageHeight": 48, + "imageWidth": 128, + "name": "Lab" + }, + { + "blockCount": 36, + "id": "CLUB", + "imageBase": "club", + "imageHeight": 40, + "imageWidth": 128, + "name": "Club" + }, + { + "blockCount": 128, + "id": "FACILITY", + "imageBase": "facility", + "imageHeight": 48, + "imageWidth": 128, + "name": "Facility" + }, + { + "blockCount": 73, + "id": "PLATEAU", + "imageBase": "plateau", + "imageHeight": 40, + "imageWidth": 128, + "name": "Plateau" + }, + { + "blockCount": 20, + "id": "BEACH_HOUSE", + "imageBase": "beach_house", + "imageHeight": 48, + "imageWidth": 128, + "name": "BeachHouse" + } + ], + "tmhmMoves": [ + "MEGA_PUNCH", + "RAZOR_WIND", + "SWORDS_DANCE", + "WHIRLWIND", + "MEGA_KICK", + "TOXIC", + "HORN_DRILL", + "BODY_SLAM", + "TAKE_DOWN", + "DOUBLE_EDGE", + "BUBBLEBEAM", + "WATER_GUN", + "ICE_BEAM", + "BLIZZARD", + "HYPER_BEAM", + "PAY_DAY", + "SUBMISSION", + "COUNTER", + "SEISMIC_TOSS", + "RAGE", + "MEGA_DRAIN", + "SOLARBEAM", + "DRAGON_RAGE", + "THUNDERBOLT", + "THUNDER", + "EARTHQUAKE", + "FISSURE", + "DIG", + "PSYCHIC_M", + "TELEPORT", + "MIMIC", + "DOUBLE_TEAM", + "REFLECT", + "BIDE", + "METRONOME", + "SELFDESTRUCT", + "EGG_BOMB", + "FIRE_BLAST", + "SWIFT", + "SKULL_BASH", + "SOFTBOILED", + "DREAM_EATER", + "SKY_ATTACK", + "REST", + "THUNDER_WAVE", + "PSYWAVE", + "EXPLOSION", + "ROCK_SLIDE", + "TRI_ATTACK", + "SUBSTITUTE", + "CUT", + "FLY", + "SURF", + "STRENGTH", + "FLASH" + ], + "tms": [ + "MEGA_PUNCH", + "RAZOR_WIND", + "SWORDS_DANCE", + "WHIRLWIND", + "MEGA_KICK", + "TOXIC", + "HORN_DRILL", + "BODY_SLAM", + "TAKE_DOWN", + "DOUBLE_EDGE", + "BUBBLEBEAM", + "WATER_GUN", + "ICE_BEAM", + "BLIZZARD", + "HYPER_BEAM", + "PAY_DAY", + "SUBMISSION", + "COUNTER", + "SEISMIC_TOSS", + "RAGE", + "MEGA_DRAIN", + "SOLARBEAM", + "DRAGON_RAGE", + "THUNDERBOLT", + "THUNDER", + "EARTHQUAKE", + "FISSURE", + "DIG", + "PSYCHIC_M", + "TELEPORT", + "MIMIC", + "DOUBLE_TEAM", + "REFLECT", + "BIDE", + "METRONOME", + "SELFDESTRUCT", + "EGG_BOMB", + "FIRE_BLAST", + "SWIFT", + "SKULL_BASH", + "SOFTBOILED", + "DREAM_EATER", + "SKY_ATTACK", + "REST", + "THUNDER_WAVE", + "PSYWAVE", + "EXPLOSION", + "ROCK_SLIDE", + "TRI_ATTACK", + "SUBSTITUTE" + ], + "trainerPartyOverrides": { + "OPP_CHIEF": [ + { + "level": 41, + "species": "MACHOKE" + }, + { + "level": 41, + "species": "GOLBAT" + }, + { + "level": 43, + "species": "MAROWAK" + }, + { + "level": 43, + "species": "WEEZING" + }, + { + "level": 46, + "species": "PERSIAN" + } + ] + }, + "trainerPics": [ + { + "imageBase": "youngster", + "label": "YoungsterPic", + "path": "assets/generated/battle/trainers/youngster.png" + }, + { + "imageBase": "bugcatcher", + "label": "BugCatcherPic", + "path": "assets/generated/battle/trainers/bugcatcher.png" + }, + { + "imageBase": "lass", + "label": "LassPic", + "path": "assets/generated/battle/trainers/lass.png" + }, + { + "imageBase": "sailor", + "label": "SailorPic", + "path": "assets/generated/battle/trainers/sailor.png" + }, + { + "imageBase": "jr.trainerm", + "label": "JrTrainerMPic", + "path": "assets/generated/battle/trainers/jr.trainerm.png" + }, + { + "imageBase": "jr.trainerf", + "label": "JrTrainerFPic", + "path": "assets/generated/battle/trainers/jr.trainerf.png" + }, + { + "imageBase": "pokemaniac", + "label": "PokemaniacPic", + "path": "assets/generated/battle/trainers/pokemaniac.png" + }, + { + "imageBase": "supernerd", + "label": "SuperNerdPic", + "path": "assets/generated/battle/trainers/supernerd.png" + }, + { + "imageBase": "hiker", + "label": "HikerPic", + "path": "assets/generated/battle/trainers/hiker.png" + }, + { + "imageBase": "biker", + "label": "BikerPic", + "path": "assets/generated/battle/trainers/biker.png" + }, + { + "imageBase": "burglar", + "label": "BurglarPic", + "path": "assets/generated/battle/trainers/burglar.png" + }, + { + "imageBase": "engineer", + "label": "EngineerPic", + "path": "assets/generated/battle/trainers/engineer.png" + }, + false, + { + "imageBase": "fisher", + "label": "FisherPic", + "path": "assets/generated/battle/trainers/fisher.png" + }, + { + "imageBase": "swimmer", + "label": "SwimmerPic", + "path": "assets/generated/battle/trainers/swimmer.png" + }, + { + "imageBase": "cueball", + "label": "CueBallPic", + "path": "assets/generated/battle/trainers/cueball.png" + }, + { + "imageBase": "gambler", + "label": "GamblerPic", + "path": "assets/generated/battle/trainers/gambler.png" + }, + { + "imageBase": "beauty", + "label": "BeautyPic", + "path": "assets/generated/battle/trainers/beauty.png" + }, + { + "imageBase": "psychic", + "label": "PsychicPic", + "path": "assets/generated/battle/trainers/psychic.png" + }, + { + "imageBase": "rocker", + "label": "RockerPic", + "path": "assets/generated/battle/trainers/rocker.png" + }, + { + "imageBase": "juggler", + "label": "JugglerPic", + "path": "assets/generated/battle/trainers/juggler.png" + }, + { + "imageBase": "tamer", + "label": "TamerPic", + "path": "assets/generated/battle/trainers/tamer.png" + }, + { + "imageBase": "birdkeeper", + "label": "BirdKeeperPic", + "path": "assets/generated/battle/trainers/birdkeeper.png" + }, + { + "imageBase": "blackbelt", + "label": "BlackbeltPic", + "path": "assets/generated/battle/trainers/blackbelt.png" + }, + { + "imageBase": "rival1", + "label": "Rival1Pic", + "path": "assets/generated/battle/trainers/rival1.png" + }, + { + "imageBase": "prof.oak", + "label": "ProfOakPic", + "path": "assets/generated/battle/trainers/prof.oak.png" + }, + false, + { + "imageBase": "scientist", + "label": "ScientistPic", + "path": "assets/generated/battle/trainers/scientist.png" + }, + { + "imageBase": "giovanni", + "label": "GiovanniPic", + "path": "assets/generated/battle/trainers/giovanni.png" + }, + { + "imageBase": "rocket", + "label": "RocketPic", + "path": "assets/generated/battle/trainers/rocket.png" + }, + { + "imageBase": "cooltrainerm", + "label": "CooltrainerMPic", + "path": "assets/generated/battle/trainers/cooltrainerm.png" + }, + { + "imageBase": "cooltrainerf", + "label": "CooltrainerFPic", + "path": "assets/generated/battle/trainers/cooltrainerf.png" + }, + { + "imageBase": "bruno", + "label": "BrunoPic", + "path": "assets/generated/battle/trainers/bruno.png" + }, + { + "imageBase": "brock", + "label": "BrockPic", + "path": "assets/generated/battle/trainers/brock.png" + }, + { + "imageBase": "misty", + "label": "MistyPic", + "path": "assets/generated/battle/trainers/misty.png" + }, + { + "imageBase": "lt.surge", + "label": "LtSurgePic", + "path": "assets/generated/battle/trainers/lt.surge.png" + }, + { + "imageBase": "erika", + "label": "ErikaPic", + "path": "assets/generated/battle/trainers/erika.png" + }, + { + "imageBase": "koga", + "label": "KogaPic", + "path": "assets/generated/battle/trainers/koga.png" + }, + { + "imageBase": "blaine", + "label": "BlainePic", + "path": "assets/generated/battle/trainers/blaine.png" + }, + { + "imageBase": "sabrina", + "label": "SabrinaPic", + "path": "assets/generated/battle/trainers/sabrina.png" + }, + { + "imageBase": "gentleman", + "label": "GentlemanPic", + "path": "assets/generated/battle/trainers/gentleman.png" + }, + { + "imageBase": "rival2", + "label": "Rival2Pic", + "path": "assets/generated/battle/trainers/rival2.png" + }, + { + "imageBase": "rival3", + "label": "Rival3Pic", + "path": "assets/generated/battle/trainers/rival3.png" + }, + { + "imageBase": "lorelei", + "label": "LoreleiPic", + "path": "assets/generated/battle/trainers/lorelei.png" + }, + { + "imageBase": "channeler", + "label": "ChannelerPic", + "path": "assets/generated/battle/trainers/channeler.png" + }, + { + "imageBase": "agatha", + "label": "AgathaPic", + "path": "assets/generated/battle/trainers/agatha.png" + }, + { + "imageBase": "lance", + "label": "LancePic", + "path": "assets/generated/battle/trainers/lance.png" + } + ], + "trainers": [ + "YOUNGSTER", + "BUG_CATCHER", + "LASS", + "SAILOR", + "JR_TRAINER_M", + "JR_TRAINER_F", + "POKEMANIAC", + "SUPER_NERD", + "HIKER", + "BIKER", + "BURGLAR", + "ENGINEER", + "UNUSED_JUGGLER", + "FISHER", + "SWIMMER", + "CUE_BALL", + "GAMBLER", + "BEAUTY", + "PSYCHIC_TR", + "ROCKER", + "JUGGLER", + "TAMER", + "BIRD_KEEPER", + "BLACKBELT", + "RIVAL1", + "PROF_OAK", + "CHIEF", + "SCIENTIST", + "GIOVANNI", + "ROCKET", + "COOLTRAINER_M", + "COOLTRAINER_F", + "BRUNO", + "BROCK", + "MISTY", + "LT_SURGE", + "ERIKA", + "KOGA", + "BLAINE", + "SABRINA", + "GENTLEMAN", + "RIVAL2", + "RIVAL3", + "LORELEI", + "CHANNELER", + "AGATHA", + "LANCE" + ], + "typeNameLabels": [ + "TypeNames.Normal", + "TypeNames.Fighting", + "TypeNames.Flying", + "TypeNames.Poison", + "TypeNames.Fire", + "TypeNames.Water", + "TypeNames.Grass", + "TypeNames.Electric", + "TypeNames.Psychic", + "TypeNames.Ice", + "TypeNames.Ground", + "TypeNames.Rock", + "TypeNames.Bird", + "TypeNames.Bug", + "TypeNames.Ghost", + "TypeNames.Dragon" + ] +} diff --git a/tools/yellow_symbol_aliases.py b/tools/yellow_symbol_aliases.py new file mode 100644 index 00000000..7ffee89a --- /dev/null +++ b/tools/yellow_symbol_aliases.py @@ -0,0 +1,223 @@ +"""Red→Yellow symbol / label remaps for make_yellow_manifest.py. + +Names present in both pokered and pokeyellow.sym are remapped by address +only. This table covers Red symbol names that do not exist in Yellow: +either an equivalent Yellow label, or None to drop the symbol (and strip +text.labels / metadata references). +""" + +from __future__ import annotations + +# Red symbol name -> Yellow symbol name, or None to omit. +SYMBOL_ALIASES: dict[str, str | None] = { + # Map header + "CeruleanTradeHouse_h": "CeruleanMelaniesHouse_h", + + # Cerulean City Slowbro -> Electrode + "_CeruleanCityCooltrainerF1SlowbroPunchText": + "_CeruleanCityCooltrainerF1ElectrodePunchText", + "_CeruleanCityCooltrainerF1SlowbroUseSonicboomText": + "_CeruleanCityCooltrainerF1ElectrodeUseSonicboomText", + "_CeruleanCityCooltrainerF1SlowbroWithdrawText": + "_CeruleanCityCooltrainerF1ElectrodeWithdrawText", + "_CeruleanCitySlowbroIgnoredOrdersText": + "_CeruleanCityElectrodeIgnoredOrdersText", + "_CeruleanCitySlowbroIsLoafingAroundText": + "_CeruleanCityElectrodeIsLoafingAroundText", + "_CeruleanCitySlowbroTookASnoozeText": + "_CeruleanCityElectrodeTookASnoozeText", + "_CeruleanCitySlowbroTurnedAwayText": + "_CeruleanCityElectrodeTurnedAwayText", + + # Cerulean Trade House granny -> Melanie house + "_CeruleanTradeHouseGrannyText": "MelanieText1", + + # Game Corner clerk / NPC renames + "_GameCornerClerk1CantAffordTheCoinsText": + "_GameCornerClerkCantAffordTheCoinsText", + "_GameCornerClerk1CoinCaseIsFullText": + "_GameCornerClerkCoinCaseIsFullText", + "_GameCornerClerk1DoYouNeedSomeGameCoinsText": + "_GameCornerClerkDoYouNeedSomeGameCoinsText", + "_GameCornerClerk1DontHaveCoinCaseText": + "_GameCornerClerkDontHaveCoinCaseText", + "_GameCornerClerk1PleaseComePlaySometimeText": + "_GameCornerClerkPleaseComePlaySometimeText", + "_GameCornerClerk1ThanksHereAre50CoinsText": + "_GameCornerClerkThanksHereAre50CoinsText", + "_GameCornerClerk2INeedMoreCoinsText": + "_GameCornerMiddleAgedMan2INeedMoreCoinsText", + "_GameCornerClerk2Received20CoinsText": + "_GameCornerMiddleAgedMan2Received20CoinsText", + "_GameCornerClerk2WantSomeCoinsText": + "_GameCornerMiddleAgedMan2WantSomeCoinsText", + "_GameCornerClerk2YouHaveLotsOfCoinsText": + "_GameCornerMiddleAgedMan2YouHaveLotsOfCoinsText", + "_GameCornerFishingGuruDontNeedMyCoinsText": + "_GameCornerFishingGuru1DontNeedMyCoinsText", + "_GameCornerFishingGuruReceived10CoinsText": + "_GameCornerFishingGuru1Received10CoinsText", + "_GameCornerFishingGuruWantToPlayText": + "_GameCornerFishingGuru1WantToPlayText", + "_GameCornerFishingGuruWinsComeAndGoText": + "_GameCornerFishingGuru1WinsComeAndGoText", + "_GameCornerGentlemanCloselyWatchTheReelsText": + "_GameCornerFishingGuru2CloselyWatchTheReelsText", + "_GameCornerGentlemanReceived20CoinsText": + "_GameCornerFishingGuru2Received20CoinsText", + "_GameCornerGentlemanThrowingMeOffText": + "_GameCornerFishingGuru2ThrowingMeOffText", + "_GameCornerGentlemanYouGotYourOwnCoinsText": + "_GameCornerFishingGuru2YouGotYourOwnCoinsText", + + # Link / cable-club prompts (Yellow folds these into Colosseum texts) + "_LinkCanceledText": "_ColosseumCanceledText", + "_PleaseWaitText": "_ColosseumPleaseWaitText", + "_WhereWouldYouLikeText": "_ColosseumWhereToText", + + # Mt. Moon Rocket1 -> Jessie/James + "_MtMoonB2FRocket1AfterBattleText": "_MtMoonJessieJamesText4", + "_MtMoonB2FRocket1BattleText": "_MtMoonJessieJamesText1", + "_MtMoonB2FRocket1EndBattleText": "_MtMoonJessieJamesText3", + + # Oak's Lab starter-choice texts -> Yellow Pikachu/Eevee flow + "_OaksLabLastMonText": None, + "_OaksLabMonEnergeticText": None, + "_OaksLabOak1RaiseYourYoungPokemonText": + "_OaksLabOak1YouShouldTalkToIt", + "_OaksLabOak1WhichPokemonDoYouWantText": + "_OaksLabOak1GoAheadItsYours", + "_OaksLabReceivedMonText": "_OaksLabReceivedText", + "_OaksLabRivalGoAheadAndChooseText": None, + "_OaksLabRivalIllTakeThisOneText": "_OaksLabRivalTakesText1", + "_OaksLabRivalReceivedMonText": None, + "_OaksLabRivalWhatDidYouCallMeForText": + "_OaksLabRivalWhatAboutMeText", + "_OaksLabThoseArePokeBallsText": "_OaksLabThatsAPokeball", + "_OaksLabYouWantBulbasaurText": None, + "_OaksLabYouWantCharmanderText": None, + "_OaksLabYouWantSquirtleText": None, + + # Pallet Town Oak + "_PalletTownOakItsUnsafeText": "_PalletTownOakHeyWaitDontGoOutText", + + # Fan Club: Pikachu fan -> Clefairy fan; signs removed in Yellow + "_PokemonFanClubPikachuFanBetterText": + "_PokemonFanClubClefairyFanBetterText", + "_PokemonFanClubPikachuFanNormalText": + "_PokemonFanClubClefairyFanNormalText", + "_PokemonFanClubPikachuText": "_PokemonFanClubClefairyText", + "_PokemonFanClubSign1Text": None, + "_PokemonFanClubSign2Text": None, + + # Pokemon Tower 7F Rockets -> Jessie/James + "_PokemonTower7FRocket1AfterBattleText": + "_PokemonTowerJessieJamesText4", + "_PokemonTower7FRocket1BattleText": + "_PokemonTowerJessieJamesText1", + "_PokemonTower7FRocket1EndBattleText": + "_PokemonTowerJessieJamesText3", + "_PokemonTower7FRocket2AfterBattleText": + "_PokemonTowerJessieJamesText4", + "_PokemonTower7FRocket2BattleText": + "_PokemonTowerJessieJamesText2", + "_PokemonTower7FRocket2EndBattleText": + "_PokemonTowerJessieJamesText3", + "_PokemonTower7FRocket3AfterBattleText": + "_PokemonTowerJessieJamesText4", + "_PokemonTower7FRocket3BattleText": + "_PokemonTowerJessieJamesText1", + "_PokemonTower7FRocket3EndBattleText": + "_PokemonTowerJessieJamesText3", + + # Rocket Hideout B4F: Rocket1/2 -> Jessie/James; Rocket3 -> remaining Rocket + "_RocketHideoutB4FRocket1AfterBattleText": + "_RocketHideoutJessieJamesText4", + "_RocketHideoutB4FRocket1BattleText": + "_RocketHideoutJessieJamesText1", + "_RocketHideoutB4FRocket1EndBattleText": + "_RocketHideoutJessieJamesText3", + "_RocketHideoutB4FRocket2AfterBattleText": + "_RocketHideoutJessieJamesText4", + "_RocketHideoutB4FRocket2BattleText": + "_RocketHideoutJessieJamesText2", + "_RocketHideoutB4FRocket2EndBattleText": + "_RocketHideoutJessieJamesText3", + "_RocketHideoutB4FRocket3AfterBattleText": + "_RocketHideoutB4FRocketAfterBattleText", + "_RocketHideoutB4FRocket3BattleText": + "_RocketHideoutB4FRocketBattleText", + "_RocketHideoutB4FRocket3EndBattleText": + "_RocketHideoutB4FRocketEndBattleText", + + # Route 6 shared after-battle -> M1-specific (F1 updated in manifest) + "_Route6CooltrainerAfterBattleText": + "_Route6CooltrainerM1AfterBattleText", + + # Route 9 CooltrainerM1 -> AJ + "_Route9CooltrainerM1AfterBattleText": "_Route9AJAfterBattleText", + "_Route9CooltrainerM1BattleText": "_Route9AJBattleText", + "_Route9CooltrainerM1EndBattleText": "_Route9AJEndBattleText", + + # Silph Co. unreferenced Porygon text + "_SilphCo10FPorygonText": None, + + # Silph Co. 11F Rocket1 -> Jessie/James + "_SilphCo11FRocket1AfterBattleText": "_SilphCoJessieJamesText4", + "_SilphCo11FRocket1BattleText": "_SilphCoJessieJamesText1", + "_SilphCo11FRocket1EndBattleText": "_SilphCoJessieJamesText3", + + # Viridian City old man post-training lines + "_ViridianCityOldManKnowHowToCatchPokemonText": + "_ViridianCityOldManHadMyCoffeeNowText", + "_ViridianCityOldManTimeIsMoneyText": + "_ViridianCityOldManLosingMyTouchText", + + # Viridian Forest Youngster5 is a trainer in Yellow (no talk far-text) + "_ViridianForestYoungster5Text": None, + + # Celadon Mansion granny (Yellow uses happiness-gated Text2..) + "_CeladonMansion1FGrannyText": "_CeladonMansion1Text2", +} + +# Red FightIntro Gengar/Nidorino 2bpp labels — Yellow uses a different intro. +# Omitted from symbols; RomExtractor must skip (see field.intro paths). +OMIT_INTRO_SYMBOLS = ( + "FightIntroBackMon", + "FightIntroFrontMon", + "FightIntroFrontMon2", + "FightIntroFrontMon3", +) + +# Map-constant / label renames applied throughout the manifest. +MAP_CONST_RENAMES = { + "CERULEAN_TRADE_HOUSE": "CERULEAN_MELANIES_HOUSE", +} +MAP_LABEL_RENAMES = { + "CeruleanTradeHouse": "CeruleanMelaniesHouse", +} + +# Game Corner object / text-pointer id renames (Yellow single clerk + gurus). +GAME_CORNER_ID_RENAMES = { + "TEXT_GAMECORNER_CLERK1": "TEXT_GAMECORNER_CLERK", + "TEXT_GAMECORNER_CLERK2": "TEXT_GAMECORNER_MIDDLE_AGED_MAN2", + "TEXT_GAMECORNER_FISHING_GURU": "TEXT_GAMECORNER_FISHING_GURU1", + "TEXT_GAMECORNER_GENTLEMAN": "TEXT_GAMECORNER_FISHING_GURU2", + "GAMECORNER_CLERK1": "GAMECORNER_CLERK", + "GAMECORNER_CLERK2": "GAMECORNER_MIDDLE_AGED_MAN2", + "GAMECORNER_FISHING_GURU": "GAMECORNER_FISHING_GURU1", + "GAMECORNER_GENTLEMAN": "GAMECORNER_FISHING_GURU2", + "GameCornerClerk1Text": "GameCornerClerkText", + "GameCornerClerk2Text": "GameCornerMiddleAgedMan2Text", + "GameCornerFishingGuruText": "GameCornerFishingGuru1Text", + "GameCornerGentlemanText": "GameCornerFishingGuru2Text", +} + +FAN_CLUB_ID_RENAMES = { + "TEXT_POKEMONFANCLUB_PIKACHU_FAN": "TEXT_POKEMONFANCLUB_CLEFAIRY_FAN", + "TEXT_POKEMONFANCLUB_PIKACHU": "TEXT_POKEMONFANCLUB_CLEFAIRY", + "POKEMONFANCLUB_PIKACHU_FAN": "POKEMONFANCLUB_CLEFAIRY_FAN", + "POKEMONFANCLUB_PIKACHU": "POKEMONFANCLUB_CLEFAIRY", + "PokemonFanClubPikachuFanText": "PokemonFanClubClefairyFanText", + "PokemonFanClubPikachuText": "PokemonFanClubClefairyText", +}