Claim set · data/claims/pokered-items.yaml

Pokémon Red and Blue's item tables (pret/pokered)

Game: Pokémon Red and Blue.

A POKé BALL costs ¥200, a GREAT BALL ¥600, and an ULTRA BALL ¥1,200, and the NUGGET is the most expensive item at ¥10,000. A mart charges each of the 83 items a price from one table of 3-byte decimal prices, and each of the 50 TMs a price from a second table that keeps one digit per TM, in thousands (¥1,000 to ¥5,000). A purchase costs the price times the quantity, up to 99 at a time, and a sale pays half of that. Key items and HMs can't be sold, and an HM has no price of its own. Eight items that aren't key items have a price of 0, so they sell for nothing: the MASTER BALL, MOON STONE, EXP.ALL, PP UP, ETHER, MAX ETHER, ELIXER, and MAX ELIXER. The first table goes on past the items with 14 elevator floors, each priced 0. pokered-items/prices

Value
{
 "id": [
  "$01",
  "$02",
  "$03",
  "$04",
  "$05",
  "$06",
  "$07",
  "$08",
  "$09",
  "$0A",
  "$0B",
  "$0C",
  "$0D",
  "$0E",
  "$0F",
  "$10",
  "$11",
  "$12",
  "$13",
  "$14",
  "$15",
  "$16",
  "$17",
  "$18",
  "$19",
  "$1A",
  "$1B",
  "$1C",
  "$1D",
  "$1E",
  "$1F",
  "$20",
  "$21",
  "$22",
  "$23",
  "$24",
  "$25",
  "$26",
  "$27",
  "$28",
  "$29",
  "$2A",
  "$2B",
  "$2C",
  "$2D",
  "$2E",
  "$2F",
  "$30",
  "$31",
  "$32",
  "$33",
  "$34",
  "$35",
  "$36",
  "$37",
  "$38",
  "$39",
  "$3A",
  "$3B",
  "$3C",
  "$3D",
  "$3E",
  "$3F",
  "$40",
  "$41",
  "$42",
  "$43",
  "$44",
  "$45",
  "$46",
  "$47",
  "$48",
  "$49",
  "$4A",
  "$4B",
  "$4C",
  "$4D",
  "$4E",
  "$4F",
  "$50",
  "$51",
  "$52",
  "$53",
  "$C4",
  "$C5",
  "$C6",
  "$C7",
  "$C8",
  "$C9",
  "$CA",
  "$CB",
  "$CC",
  "$CD",
  "$CE",
  "$CF",
  "$D0",
  "$D1",
  "$D2",
  "$D3",
  "$D4",
  "$D5",
  "$D6",
  "$D7",
  "$D8",
  "$D9",
  "$DA",
  "$DB",
  "$DC",
  "$DD",
  "$DE",
  "$DF",
  "$E0",
  "$E1",
  "$E2",
  "$E3",
  "$E4",
  "$E5",
  "$E6",
  "$E7",
  "$E8",
  "$E9",
  "$EA",
  "$EB",
  "$EC",
  "$ED",
  "$EE",
  "$EF",
  "$F0",
  "$F1",
  "$F2",
  "$F3",
  "$F4",
  "$F5",
  "$F6",
  "$F7",
  "$F8",
  "$F9",
  "$FA"
 ],
 "item": [
  "MASTER BALL",
  "ULTRA BALL",
  "GREAT BALL",
  "POKé BALL",
  "TOWN MAP",
  "BICYCLE",
  "?????",
  "SAFARI BALL",
  "POKéDEX",
  "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",
  "THUNDERSTONE",
  "WATER STONE",
  "HP UP",
  "PROTEIN",
  "IRON",
  "CARBOS",
  "CALCIUM",
  "RARE CANDY",
  "DOME FOSSIL",
  "HELIX FOSSIL",
  "SECRET KEY",
  "?????",
  "BIKE VOUCHER",
  "X ACCURACY",
  "LEAF STONE",
  "CARD KEY",
  "NUGGET",
  "PP UP",
  "POKé 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",
  "OAK's PARCEL",
  "ITEMFINDER",
  "SILPH SCOPE",
  "POKé FLUTE",
  "LIFT KEY",
  "EXP.ALL",
  "OLD ROD",
  "GOOD ROD",
  "SUPER ROD",
  "PP UP",
  "ETHER",
  "MAX ETHER",
  "ELIXER",
  "MAX ELIXER",
  "HM01",
  "HM02",
  "HM03",
  "HM04",
  "HM05",
  "TM01",
  "TM02",
  "TM03",
  "TM04",
  "TM05",
  "TM06",
  "TM07",
  "TM08",
  "TM09",
  "TM10",
  "TM11",
  "TM12",
  "TM13",
  "TM14",
  "TM15",
  "TM16",
  "TM17",
  "TM18",
  "TM19",
  "TM20",
  "TM21",
  "TM22",
  "TM23",
  "TM24",
  "TM25",
  "TM26",
  "TM27",
  "TM28",
  "TM29",
  "TM30",
  "TM31",
  "TM32",
  "TM33",
  "TM34",
  "TM35",
  "TM36",
  "TM37",
  "TM38",
  "TM39",
  "TM40",
  "TM41",
  "TM42",
  "TM43",
  "TM44",
  "TM45",
  "TM46",
  "TM47",
  "TM48",
  "TM49",
  "TM50"
 ],
 "move": [
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "Cut",
  "Fly",
  "Surf",
  "Strength",
  "Flash",
  "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",
  "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"
 ],
 "buy": [
  0,
  1200,
  600,
  200,
  0,
  0,
  0,
  1000,
  0,
  0,
  100,
  250,
  250,
  200,
  200,
  3000,
  2500,
  1500,
  700,
  300,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  550,
  350,
  0,
  2100,
  2100,
  2100,
  9800,
  9800,
  9800,
  9800,
  9800,
  4800,
  0,
  0,
  0,
  0,
  0,
  950,
  2100,
  0,
  10000,
  9800,
  1000,
  600,
  1500,
  4000,
  700,
  500,
  700,
  650,
  10,
  200,
  300,
  350,
  0,
  0,
  500,
  550,
  350,
  350,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  "",
  "",
  "",
  "",
  "",
  3000,
  2000,
  2000,
  1000,
  3000,
  4000,
  2000,
  4000,
  3000,
  4000,
  2000,
  1000,
  4000,
  5000,
  5000,
  5000,
  3000,
  2000,
  3000,
  2000,
  5000,
  5000,
  5000,
  2000,
  5000,
  4000,
  5000,
  2000,
  4000,
  1000,
  2000,
  1000,
  1000,
  2000,
  4000,
  2000,
  2000,
  5000,
  2000,
  4000,
  2000,
  2000,
  5000,
  2000,
  2000,
  4000,
  3000,
  4000,
  4000,
  2000
 ],
 "sell": [
  0,
  600,
  300,
  100,
  "",
  "",
  "",
  "",
  "",
  0,
  50,
  125,
  125,
  100,
  100,
  1500,
  1250,
  750,
  350,
  150,
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  275,
  175,
  "",
  1050,
  1050,
  1050,
  4900,
  4900,
  4900,
  4900,
  4900,
  2400,
  "",
  "",
  "",
  "",
  "",
  475,
  1050,
  "",
  5000,
  4900,
  500,
  300,
  750,
  2000,
  350,
  250,
  350,
  325,
  5,
  100,
  150,
  175,
  "",
  "",
  250,
  275,
  175,
  175,
  "",
  "",
  "",
  "",
  "",
  "",
  0,
  "",
  "",
  "",
  0,
  0,
  0,
  0,
  0,
  "",
  "",
  "",
  "",
  "",
  1500,
  1000,
  1000,
  500,
  1500,
  2000,
  1000,
  2000,
  1500,
  2000,
  1000,
  500,
  2000,
  2500,
  2500,
  2500,
  1500,
  1000,
  1500,
  1000,
  2500,
  2500,
  2500,
  1000,
  2500,
  2000,
  2500,
  1000,
  2000,
  500,
  1000,
  500,
  500,
  1000,
  2000,
  1000,
  1000,
  2500,
  1000,
  2000,
  1000,
  1000,
  2500,
  1000,
  1000,
  2000,
  1500,
  2000,
  2000,
  1000
 ],
 "keyItem": [
  false,
  false,
  false,
  false,
  true,
  true,
  true,
  true,
  true,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  true,
  true,
  true,
  true,
  true,
  true,
  true,
  true,
  false,
  false,
  true,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  true,
  true,
  true,
  true,
  true,
  false,
  false,
  true,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  true,
  true,
  false,
  false,
  false,
  false,
  true,
  true,
  true,
  true,
  true,
  true,
  false,
  true,
  true,
  true,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false
 ]
}
Codepokered: disassembly of Pokémon Red and Blue · data/items/prices.asm#L1-L101ItemPrices:: table_width 3 bcd3 0 ; MASTER_BALL bcd3 1200 ; ULTRA_BALL bcd3 600 ; GREAT_BALL bcd3 200 ; POKE_BALL bcd3 0 ; TOWN_MAP bcd3 0 ; BICYCLE bcd3 0 ; SURFBOARD bcd3 1000 ; SAFARI_BALL bcd3 0 ; POKEDEX bcd3 0 ; MOON_STONE …pokered: disassembly of Pokémon Red and Blue · data/items/tm_prices.asm#L1-L54TechnicalMachinePrices: ; In thousands (nybbles). nybble_array nybble 3 ; TM01 nybble 2 ; TM02 nybble 2 ; TM03 nybble 1 ; TM04 nybble 3 ; TM05 nybble 4 ; TM06 nybble 2 ; TM07 nybble 4 ; TM08 nybble 3 ; TM09 …pokered: disassembly of Pokémon Red and Blue · data/items/key_items.asm#L1-L86KeyItemFlags: bit_array dbit FALSE ; MASTER_BALL dbit FALSE ; ULTRA_BALL dbit FALSE ; GREAT_BALL dbit FALSE ; POKE_BALL dbit TRUE ; TOWN_MAP dbit TRUE ; BICYCLE dbit TRUE ; SURFBOARD dbit TRUE ; SAFARI_BALL dbit TRUE ; POKEDEX dbit FALSE ; MOON_STONE …pokered: disassembly of Pokémon Red and Blue · data/items/names.asm#L1-L101ItemNames:: list_start ITEM_NAME_LENGTH - 1 li "MASTER BALL" li "ULTRA BALL" li "GREAT BALL" li "POKé BALL" li "TOWN MAP" li "BICYCLE" li "?????" ; SURFBOARD li "SAFARI BALL" li "POKéDEX" li "MOON STONE" …pokered: disassembly of Pokémon Red and Blue · constants/item_constants.asm#L8-L115const_def const NO_ITEM ; $00 const MASTER_BALL ; $01 const ULTRA_BALL ; $02 const GREAT_BALL ; $03 const POKE_BALL ; $04 … const ITEM_32 ; $32 ; unused … DEF NUM_ITEMS EQU const_value - 1 … DEF NUM_FLOORS EQU const_value - 1 - NUM_ITEMS …pokered: disassembly of Pokémon Red and Blue · constants/item_constants.asm#L119-L211 — every HM and TM in order: the number, the item id, and the move; match the actual number below. DEF NUM_TMS EQU 50 DEF __tmhm_value__ = NUM_TMS + 1 MACRO add_tmnum DEF \1_TMNUM EQU __tmhm_value__ DEF __tmhm_value__ += 1 ENDM MACRO add_hm ; Defines three constants: …pokered: disassembly of Pokémon Red and Blue · home/names.asm#L56-L68ld a, [wNamedObjectIndex] push af cp TM01 ; is this a TM? [not HM] jr nc, .WriteTM … add NUM_HMS … ld hl, HiddenPrefix ; points to "HM" … .WriteTM ld hl, TechnicalPrefix ; points to "TM"pokered: disassembly of Pokémon Red and Blue · home/item_price.asm#L1-L38GetItemPrice:: ; Stores item's price as BCD at hItemPrice (3 bytes) ; Input: [wCurItem] = item id … ld a, [wCurItem] cp HM01 jr nc, .getTMPrice ld bc, $3 .loop add hl, bc dec a jr nz, .loop …pokered: disassembly of Pokémon Red and Blue · engine/items/tm_prices.asm#L1-L22GetMachinePrice:: ; Input: [wCurItem] = Item ID of a TM ; Output: Stores the TM price at hItemPrice ld a, [wCurItem] sub TM01 ; underflows below 0 for HM items (before TM items) ret c ; HMs are priceless ld d, a ld hl, TechnicalMachinePrices srl a ld c, a ld b, 0 add hl, bc …pokered: disassembly of Pokémon Red and Blue · engine/battle/misc.asm#L85-L102ld hl, wItemList ld de, ItemNames … ld bc, ItemPrices ld a, c ld [wItemPrices], a ld a, b ld [wItemPrices + 1], apokered: disassembly of Pokémon Red and Blue · home/list_menu.asm#L259-L285.printPrice ld c, $03 ld a, [wItemQuantity] ld b, a ld hl, hMoney ; total price ; initialize total price to 0 xor a ld [hli], a ld [hli], a ld [hl], a .addLoop ; loop to multiply the individual price by the quantity to get the total price ld de, hMoney + 2 …pokered: disassembly of Pokémon Red and Blue · engine/events/pokemart.asm#L70-L186; if the player is trying to sell a specific item, confirm the sale call IsKeyItem ld a, [wIsKeyItem] and a jr nz, .unsellableItem ld a, [wCurItem] call IsItemHM jr c, .unsellableItem ld a, PRICEDITEMLISTMENU ld [wListMenuID], a ldh [hHalveItemPrices], a ; halve prices when selling call DisplayChooseQuantityMenu …pokered: disassembly of Pokémon Red and Blue · home/inventory.asm#L1-L10; subtracts the amount the player paid from their money ; OUTPUT: carry = 0(success) or 1(fail because there is not enough money) SubtractAmountPaidFromMoney:: farjp SubtractAmountPaidFromMoney_ ; adds the amount the player sold to their money AddAmountSoldToMoney:: ld de, wPlayerMoney + 2 ld hl, hMoney + 2 ; total price of items ld c, 3 ; length of money in bytesChecked by claude, 2026-10-28 — read the price table, the TM price table, the key-item flags, and the item names whole at the pin, with the routines that look a price up, total it, halve it for a sale, and refuse a key item or an HM; the rows were parsed from the four tables by a script that pairs each price line with the item named in its comment and the item constants, and checks the TM table runs TM01 to TM50 in orderRevised after a check by a second AI model, 2026-10-28.Checked by a second AI model, 2026-10-28.

Item $32, which a disassembly comment marks unused, has a price of ¥9,800 and the name PP UP, the same name as item $4F; a search of the pinned repo for ITEM_32 finds it only in the constants, the price, name, and key-item tables, and the item-use table. An HM's price lookup returns without writing a price, so whatever price was last looked up stays; no mart lists an HM and none can be sold, so no menu shows one.

Red and Blue have 14 mart clerks: one each in Viridian City, Pewter City, Cerulean City, Vermilion City, Lavender Town, Fuchsia City, Cinnabar Island, Saffron City, and Indigo Plateau, and five in the Celadon Dept. Store, two on 2F, one on 4F, and two on 5F, 94 listings in all. A clerk's list runs from 4 items (Viridian City's) to 9. Viridian City's clerk sells only once Oak's Parcel has been delivered. A clerk's text starts with the mart marker, then the number of items, the items, and $FF; the game copies that list into the buy menu, which prices each item from the price table. Two more lists in the same file, a BICYCLE alone and GREAT BALL, HYPER POTION, SUPER POTION, FULL HEAL, and REVIVE, belong to no map's text. pokered-items/marts

Value
{
 "mart": [
  "Viridian City",
  "Viridian City",
  "Viridian City",
  "Viridian City",
  "Pewter City",
  "Pewter City",
  "Pewter City",
  "Pewter City",
  "Pewter City",
  "Pewter City",
  "Pewter City",
  "Cerulean City",
  "Cerulean City",
  "Cerulean City",
  "Cerulean City",
  "Cerulean City",
  "Cerulean City",
  "Cerulean City",
  "Vermilion City",
  "Vermilion City",
  "Vermilion City",
  "Vermilion City",
  "Vermilion City",
  "Vermilion City",
  "Lavender Town",
  "Lavender Town",
  "Lavender Town",
  "Lavender Town",
  "Lavender Town",
  "Lavender Town",
  "Lavender Town",
  "Lavender Town",
  "Lavender Town",
  "Celadon Dept. Store 2F, left clerk",
  "Celadon Dept. Store 2F, left clerk",
  "Celadon Dept. Store 2F, left clerk",
  "Celadon Dept. Store 2F, left clerk",
  "Celadon Dept. Store 2F, left clerk",
  "Celadon Dept. Store 2F, left clerk",
  "Celadon Dept. Store 2F, left clerk",
  "Celadon Dept. Store 2F, left clerk",
  "Celadon Dept. Store 2F, left clerk",
  "Celadon Dept. Store 2F, right clerk",
  "Celadon Dept. Store 2F, right clerk",
  "Celadon Dept. Store 2F, right clerk",
  "Celadon Dept. Store 2F, right clerk",
  "Celadon Dept. Store 2F, right clerk",
  "Celadon Dept. Store 2F, right clerk",
  "Celadon Dept. Store 2F, right clerk",
  "Celadon Dept. Store 2F, right clerk",
  "Celadon Dept. Store 2F, right clerk",
  "Celadon Dept. Store 4F",
  "Celadon Dept. Store 4F",
  "Celadon Dept. Store 4F",
  "Celadon Dept. Store 4F",
  "Celadon Dept. Store 4F",
  "Celadon Dept. Store 5F, left clerk",
  "Celadon Dept. Store 5F, left clerk",
  "Celadon Dept. Store 5F, left clerk",
  "Celadon Dept. Store 5F, left clerk",
  "Celadon Dept. Store 5F, left clerk",
  "Celadon Dept. Store 5F, left clerk",
  "Celadon Dept. Store 5F, left clerk",
  "Celadon Dept. Store 5F, right clerk",
  "Celadon Dept. Store 5F, right clerk",
  "Celadon Dept. Store 5F, right clerk",
  "Celadon Dept. Store 5F, right clerk",
  "Celadon Dept. Store 5F, right clerk",
  "Fuchsia City",
  "Fuchsia City",
  "Fuchsia City",
  "Fuchsia City",
  "Fuchsia City",
  "Fuchsia City",
  "Cinnabar Island",
  "Cinnabar Island",
  "Cinnabar Island",
  "Cinnabar Island",
  "Cinnabar Island",
  "Cinnabar Island",
  "Cinnabar Island",
  "Saffron City",
  "Saffron City",
  "Saffron City",
  "Saffron City",
  "Saffron City",
  "Saffron City",
  "Indigo Plateau",
  "Indigo Plateau",
  "Indigo Plateau",
  "Indigo Plateau",
  "Indigo Plateau",
  "Indigo Plateau",
  "Indigo Plateau"
 ],
 "item": [
  "POKé BALL",
  "ANTIDOTE",
  "PARLYZ HEAL",
  "BURN HEAL",
  "POKé BALL",
  "POTION",
  "ESCAPE ROPE",
  "ANTIDOTE",
  "BURN HEAL",
  "AWAKENING",
  "PARLYZ HEAL",
  "POKé BALL",
  "POTION",
  "REPEL",
  "ANTIDOTE",
  "BURN HEAL",
  "AWAKENING",
  "PARLYZ HEAL",
  "POKé BALL",
  "SUPER POTION",
  "ICE HEAL",
  "AWAKENING",
  "PARLYZ HEAL",
  "REPEL",
  "GREAT BALL",
  "SUPER POTION",
  "REVIVE",
  "ESCAPE ROPE",
  "SUPER REPEL",
  "ANTIDOTE",
  "BURN HEAL",
  "ICE HEAL",
  "PARLYZ HEAL",
  "GREAT BALL",
  "SUPER POTION",
  "REVIVE",
  "SUPER REPEL",
  "ANTIDOTE",
  "BURN HEAL",
  "ICE HEAL",
  "AWAKENING",
  "PARLYZ HEAL",
  "TM32",
  "TM33",
  "TM02",
  "TM07",
  "TM37",
  "TM01",
  "TM05",
  "TM09",
  "TM17",
  "POKé DOLL",
  "FIRE STONE",
  "THUNDERSTONE",
  "WATER STONE",
  "LEAF STONE",
  "X ACCURACY",
  "GUARD SPEC.",
  "DIRE HIT",
  "X ATTACK",
  "X DEFEND",
  "X SPEED",
  "X SPECIAL",
  "HP UP",
  "PROTEIN",
  "IRON",
  "CARBOS",
  "CALCIUM",
  "ULTRA BALL",
  "GREAT BALL",
  "SUPER POTION",
  "REVIVE",
  "FULL HEAL",
  "SUPER REPEL",
  "ULTRA BALL",
  "GREAT BALL",
  "HYPER POTION",
  "MAX REPEL",
  "ESCAPE ROPE",
  "FULL HEAL",
  "REVIVE",
  "GREAT BALL",
  "HYPER POTION",
  "MAX REPEL",
  "ESCAPE ROPE",
  "FULL HEAL",
  "REVIVE",
  "ULTRA BALL",
  "GREAT BALL",
  "FULL RESTORE",
  "MAX POTION",
  "FULL HEAL",
  "REVIVE",
  "MAX REPEL"
 ],
 "price": [
  200,
  100,
  200,
  250,
  200,
  300,
  550,
  100,
  250,
  200,
  200,
  200,
  300,
  350,
  100,
  250,
  200,
  200,
  200,
  700,
  250,
  200,
  200,
  350,
  600,
  700,
  1500,
  550,
  500,
  100,
  250,
  250,
  200,
  600,
  700,
  1500,
  500,
  100,
  250,
  250,
  200,
  200,
  1000,
  1000,
  2000,
  2000,
  2000,
  3000,
  3000,
  3000,
  3000,
  1000,
  2100,
  2100,
  2100,
  2100,
  950,
  700,
  650,
  500,
  550,
  350,
  350,
  9800,
  9800,
  9800,
  9800,
  9800,
  1200,
  600,
  700,
  1500,
  600,
  500,
  1200,
  600,
  1500,
  700,
  550,
  600,
  1500,
  600,
  1500,
  700,
  550,
  600,
  1500,
  1200,
  600,
  3000,
  2500,
  600,
  1500,
  700
 ]
}
Codepokered: disassembly of Pokémon Red and Blue · data/items/marts.asm#L1-L50; mart inventories are below ; they are texts ViridianMartClerkText:: script_mart POKE_BALL, ANTIDOTE, PARLYZ_HEAL, BURN_HEAL PewterMartClerkText:: script_mart POKE_BALL, POTION, ESCAPE_ROPE, ANTIDOTE, BURN_HEAL, AWAKENING, PARLYZ_HEAL CeruleanMartClerkText:: script_mart POKE_BALL, POTION, REPEL, ANTIDOTE, BURN_HEAL, AWAKENING, PARLYZ_HEAL …pokered: disassembly of Pokémon Red and Blue · macros/scripts/text.asm#L193-L201const TX_SCRIPT_MART ; $fe MACRO script_mart db TX_SCRIPT_MART db _NARG ; number of items IF _NARG db \# ; all item ids ENDC db -1 ; end ENDMpokered: disassembly of Pokémon Red and Blue · home/text_script.asm#L68-L78; check first byte of text for special cases … dict TX_SCRIPT_MART, DisplayPokemartDialoguepokered: disassembly of Pokémon Red and Blue · home/text_script.asm#L141-L171DisplayPokemartDialogue:: push hl ld hl, PokemartGreetingText call PrintText pop hl inc hl call LoadItemList … LoadItemList:: ld a, 1 ld [wUpdateSpritesEnabled], a ld a, h …pokered: disassembly of Pokémon Red and Blue · engine/events/pokemart.asm#L139-L150ld hl, wItemList ld a, l ld [wListPointer], a ld a, h ld [wListPointer + 1], a xor a ld [wCurrentMenuItem], a inc a ld [wPrintItemPrices], a inc a ; a = 2 (PRICEDITEMLISTMENU) ld [wListMenuID], a call DisplayListMenuIDpokered: disassembly of Pokémon Red and Blue · scripts/PewterMart.asm#L9dw_const PewterMartClerkText, TEXT_PEWTERMART_CLERKpokered: disassembly of Pokémon Red and Blue · scripts/CeruleanMart.asm#L6dw_const CeruleanMartClerkText, TEXT_CERULEANMART_CLERKpokered: disassembly of Pokémon Red and Blue · scripts/VermilionMart.asm#L6dw_const VermilionMartClerkText, TEXT_VERMILIONMART_CLERKpokered: disassembly of Pokémon Red and Blue · scripts/LavenderMart.asm#L6dw_const LavenderMartClerkText, TEXT_LAVENDERMART_CLERKpokered: disassembly of Pokémon Red and Blue · scripts/CeladonMart2F.asm#L6-L7dw_const CeladonMart2FClerk1Text, TEXT_CELADONMART2F_CLERK1 dw_const CeladonMart2FClerk2Text, TEXT_CELADONMART2F_CLERK2pokered: disassembly of Pokémon Red and Blue · scripts/CeladonMart4F.asm#L6dw_const CeladonMart4FClerkText, TEXT_CELADONMART4F_CLERKpokered: disassembly of Pokémon Red and Blue · scripts/CeladonMart5F.asm#L8-L9dw_const CeladonMart5FClerk1Text, TEXT_CELADONMART5F_CLERK1 dw_const CeladonMart5FClerk2Text, TEXT_CELADONMART5F_CLERK2pokered: disassembly of Pokémon Red and Blue · scripts/FuchsiaMart.asm#L6dw_const FuchsiaMartClerkText, TEXT_FUCHSIAMART_CLERKpokered: disassembly of Pokémon Red and Blue · scripts/CinnabarMart.asm#L6dw_const CinnabarMartClerkText, TEXT_CINNABARMART_CLERKpokered: disassembly of Pokémon Red and Blue · scripts/SaffronMart.asm#L6dw_const SaffronMartClerkText, TEXT_SAFFRONMART_CLERKpokered: disassembly of Pokémon Red and Blue · scripts/IndigoPlateauLobby.asm#L22dw_const IndigoPlateauLobbyClerkText, TEXT_INDIGOPLATEAULOBBY_CLERKpokered: disassembly of Pokémon Red and Blue · scripts/ViridianMart.asm#L8-L76ViridianMartCheckParcelDeliveredScript: CheckEvent EVENT_OAK_GOT_PARCEL jr nz, .delivered_parcel ld hl, ViridianMart_TextPointers jr .done .delivered_parcel ld hl, ViridianMart_TextPointers2 .done ld a, l ld [wCurMapTextPtr], a ld a, h ld [wCurMapTextPtr+1], a …pokered: disassembly of Pokémon Red and Blue · data/maps/objects/CeladonMart2F.asm#L19-L20object_event 5, 3, SPRITE_CLERK, STAY, DOWN, TEXT_CELADONMART2F_CLERK1 object_event 6, 3, SPRITE_CLERK, STAY, DOWN, TEXT_CELADONMART2F_CLERK2pokered: disassembly of Pokémon Red and Blue · data/maps/objects/CeladonMart5F.asm#L21-L22object_event 5, 3, SPRITE_CLERK, STAY, DOWN, TEXT_CELADONMART5F_CLERK1 object_event 6, 3, SPRITE_CLERK, STAY, DOWN, TEXT_CELADONMART5F_CLERK2pokered: disassembly of Pokémon Red and Blue · text/CeladonMart1F.asm#L1-L4_CeladonMart1FReceptionistText:: text "Hello! Welcome to" line "CELADON DEPT." cont "STORE."pokered: disassembly of Pokémon Red and Blue · data/maps/names.asm#L2-L11ViridianCityName: db "VIRIDIAN CITY@" PewterCityName: db "PEWTER CITY@" CeruleanCityName: db "CERULEAN CITY@" LavenderTownName: db "LAVENDER TOWN@" VermilionCityName: db "VERMILION CITY@" CeladonCityName: db "CELADON CITY@" FuchsiaCityName: db "FUCHSIA CITY@" CinnabarIslandName: db "CINNABAR ISLAND@" IndigoPlateauName: db "INDIGO PLATEAU@" SaffronCityName: db "SAFFRON CITY@"A POKé BALL costs ¥200, a GREAT BALL ¥600, and an ULTRA BALL ¥1,200, and the NUGGET is the most expensive item at ¥10,000. A mart charges each of the 83 items a price from one table of 3-byte decimal prices, and each of the 50 TMs a price from a second table that keeps one digit per TM, in thousands (¥1,000 to ¥5,000). A purchase costs the price times the quantity, up to 99 at a time, and a sale pays half of that. Key items and HMs can't be sold, and an HM has no price of its own. Eight items that aren't key items have a price of 0, so they sell for nothing: the MASTER BALL, MOON STONE, EXP.ALL, PP UP, ETHER, MAX ETHER, ELIXER, and MAX ELIXER. The first table goes on past the items with 14 elevator floors, each priced 0. Code — the price column, and the TM numbers of the 2F right clerk's listChecked by claude, 2026-10-28 — read the mart lists whole at the pin, the macro that writes them, the text engine's test of a text's first byte and the routine it calls for a mart, and the buy menu; found each list's map by searching scripts/ for each list's label: each of the 14 is one map's text pointer, and the two unused lists' labels occur nowhere else; the rows were parsed from the lists by a scriptRevised after a check by a second AI model, 2026-10-28.

The two Celadon floors with two clerks are told apart by where the clerks stand: on each floor the first list's clerk stands one tile left of the second's. A mart's price column is the price table's buying price.

Poké Balls lying on 44 maps hold 104 items, one each, which the player takes by talking to the ball: 27 hold TMs, 9 a RARE CANDY, 2 an ULTRA BALL, and 1 a POKé BALL (in Viridian Forest), and none a GREAT BALL or a MASTER BALL. All but two lie there from the start: Rocket Hideout B4F's SILPH SCOPE appears once Giovanni is beaten there, and its LIFT KEY once a Rocket is beaten and talked to again. A ball is a map object marked as an item, with the item's number, and its text is the pick-up routine. That routine gives 1 of the item and hides the ball, only if the ball is one of the map's objects that can be hidden, as every one of the 104 is; with a full bag it says so and the ball stays. pokered-items/item-balls

Value
{
 "place": [
  "Cerulean Cave 1F",
  "Cerulean Cave 1F",
  "Cerulean Cave 1F",
  "Cerulean Cave 2F",
  "Cerulean Cave 2F",
  "Cerulean Cave 2F",
  "Cerulean Cave B1F",
  "Cerulean Cave B1F",
  "Mt. Moon 1F",
  "Mt. Moon 1F",
  "Mt. Moon 1F",
  "Mt. Moon 1F",
  "Mt. Moon 1F",
  "Mt. Moon 1F",
  "Mt. Moon B2F",
  "Mt. Moon B2F",
  "Pokémon Mansion 1F",
  "Pokémon Mansion 1F",
  "Pokémon Mansion 2F",
  "Pokémon Mansion 3F",
  "Pokémon Mansion 3F",
  "Pokémon Mansion B1F",
  "Pokémon Mansion B1F",
  "Pokémon Mansion B1F",
  "Pokémon Mansion B1F",
  "Pokémon Mansion B1F",
  "Pokémon Tower 3F",
  "Pokémon Tower 4F",
  "Pokémon Tower 4F",
  "Pokémon Tower 4F",
  "Pokémon Tower 5F",
  "Pokémon Tower 6F",
  "Pokémon Tower 6F",
  "Power Plant",
  "Power Plant",
  "Power Plant",
  "Power Plant",
  "Power Plant",
  "Rocket Hideout B1F",
  "Rocket Hideout B1F",
  "Rocket Hideout B2F",
  "Rocket Hideout B2F",
  "Rocket Hideout B2F",
  "Rocket Hideout B2F",
  "Rocket Hideout B3F",
  "Rocket Hideout B3F",
  "Rocket Hideout B4F",
  "Rocket Hideout B4F",
  "Rocket Hideout B4F",
  "Rocket Hideout B4F",
  "Rocket Hideout B4F",
  "Route 12",
  "Route 12",
  "Route 15",
  "Route 2",
  "Route 2",
  "Route 24",
  "Route 25",
  "Route 4",
  "Route 9",
  "S.S. Anne 1F rooms",
  "S.S. Anne 2F rooms",
  "S.S. Anne 2F rooms",
  "S.S. Anne B1F rooms",
  "S.S. Anne B1F rooms",
  "S.S. Anne B1F rooms",
  "Safari Zone Center",
  "Safari Zone East",
  "Safari Zone East",
  "Safari Zone East",
  "Safari Zone East",
  "Safari Zone North",
  "Safari Zone North",
  "Safari Zone West",
  "Safari Zone West",
  "Safari Zone West",
  "Safari Zone West",
  "Silph Co. 10F",
  "Silph Co. 10F",
  "Silph Co. 10F",
  "Silph Co. 3F",
  "Silph Co. 4F",
  "Silph Co. 4F",
  "Silph Co. 4F",
  "Silph Co. 5F",
  "Silph Co. 5F",
  "Silph Co. 5F",
  "Silph Co. 6F",
  "Silph Co. 6F",
  "Silph Co. 7F",
  "Silph Co. 7F",
  "Victory Road 1F",
  "Victory Road 1F",
  "Victory Road 2F",
  "Victory Road 2F",
  "Victory Road 2F",
  "Victory Road 2F",
  "Victory Road 3F",
  "Victory Road 3F",
  "Viridian Forest",
  "Viridian Forest",
  "Viridian Forest",
  "Viridian Gym",
  "Warden's House"
 ],
 "item": [
  "FULL RESTORE",
  "MAX ELIXER",
  "NUGGET",
  "PP UP",
  "ULTRA BALL",
  "FULL RESTORE",
  "ULTRA BALL",
  "MAX REVIVE",
  "POTION",
  "MOON STONE",
  "RARE CANDY",
  "ESCAPE ROPE",
  "POTION",
  "TM12",
  "HP UP",
  "TM01",
  "ESCAPE ROPE",
  "CARBOS",
  "CALCIUM",
  "MAX POTION",
  "IRON",
  "RARE CANDY",
  "FULL RESTORE",
  "TM14",
  "TM22",
  "SECRET KEY",
  "ESCAPE ROPE",
  "ELIXER",
  "AWAKENING",
  "HP UP",
  "NUGGET",
  "RARE CANDY",
  "X ACCURACY",
  "CARBOS",
  "HP UP",
  "RARE CANDY",
  "TM25",
  "TM33",
  "ESCAPE ROPE",
  "HYPER POTION",
  "MOON STONE",
  "NUGGET",
  "TM07",
  "SUPER POTION",
  "TM10",
  "RARE CANDY",
  "HP UP",
  "TM02",
  "IRON",
  "SILPH SCOPE",
  "LIFT KEY",
  "TM16",
  "IRON",
  "TM20",
  "MOON STONE",
  "HP UP",
  "TM45",
  "TM19",
  "TM04",
  "TM30",
  "TM08",
  "MAX ETHER",
  "RARE CANDY",
  "ETHER",
  "TM44",
  "MAX POTION",
  "NUGGET",
  "FULL RESTORE",
  "MAX POTION",
  "CARBOS",
  "TM37",
  "PROTEIN",
  "TM40",
  "MAX POTION",
  "TM32",
  "MAX REVIVE",
  "GOLD TEETH",
  "TM26",
  "RARE CANDY",
  "CARBOS",
  "HYPER POTION",
  "FULL HEAL",
  "MAX REVIVE",
  "ESCAPE ROPE",
  "TM09",
  "PROTEIN",
  "CARD KEY",
  "HP UP",
  "X ACCURACY",
  "CALCIUM",
  "TM03",
  "TM43",
  "RARE CANDY",
  "TM17",
  "FULL HEAL",
  "TM05",
  "GUARD SPEC.",
  "MAX REVIVE",
  "TM47",
  "ANTIDOTE",
  "POTION",
  "POKé BALL",
  "REVIVE",
  "RARE CANDY"
 ],
 "x": [
  7,
  19,
  5,
  29,
  4,
  13,
  16,
  18,
  2,
  2,
  35,
  36,
  20,
  5,
  25,
  29,
  14,
  18,
  28,
  1,
  25,
  10,
  1,
  19,
  5,
  5,
  12,
  12,
  9,
  12,
  6,
  6,
  14,
  7,
  28,
  34,
  26,
  20,
  11,
  9,
  1,
  16,
  6,
  3,
  26,
  20,
  10,
  9,
  12,
  25,
  10,
  14,
  5,
  18,
  13,
  13,
  10,
  22,
  57,
  10,
  12,
  12,
  0,
  20,
  10,
  12,
  14,
  21,
  3,
  20,
  15,
  25,
  19,
  8,
  9,
  18,
  19,
  2,
  4,
  5,
  8,
  3,
  4,
  5,
  2,
  4,
  21,
  3,
  2,
  1,
  24,
  11,
  9,
  27,
  18,
  9,
  11,
  26,
  7,
  25,
  12,
  1,
  16,
  8
 ],
 "y": [
  13,
  3,
  0,
  9,
  15,
  6,
  9,
  1,
  20,
  2,
  31,
  23,
  33,
  32,
  21,
  5,
  3,
  21,
  7,
  16,
  5,
  2,
  22,
  25,
  4,
  13,
  1,
  10,
  10,
  16,
  14,
  8,
  14,
  25,
  3,
  3,
  32,
  32,
  14,
  17,
  11,
  8,
  12,
  21,
  17,
  14,
  12,
  4,
  20,
  2,
  2,
  35,
  89,
  5,
  54,
  45,
  5,
  2,
  3,
  15,
  15,
  1,
  12,
  2,
  2,
  11,
  10,
  10,
  7,
  13,
  12,
  1,
  7,
  20,
  7,
  18,
  7,
  12,
  14,
  11,
  5,
  9,
  7,
  8,
  13,
  6,
  16,
  12,
  15,
  9,
  11,
  0,
  2,
  5,
  9,
  11,
  0,
  5,
  7,
  11,
  29,
  31,
  9,
  3
 ],
 "appears": [
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "after Giovanni is beaten",
  "after a Rocket is beaten and talked to",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start",
  "from the start"
 ]
}
Codepokered: disassembly of Pokémon Red and Blue · macros/scripts/maps.asm#L16-L31MACRO object_event db \3 db \2 + 4 db \1 + 4 db \4 db \5 IF _NARG > 7 db TRAINER | \6 db \7 db \8 ELIF _NARG > 6 db ITEM | \6 …pokered: disassembly of Pokémon Red and Blue · home/overworld.asm#L2199-L2230ldh a, [hLoadSpriteTemp1] bit BIT_TRAINER, a jr nz, .trainerSprite bit BIT_ITEM, a jr nz, .itemBallSprite jr .regularSprite … .itemBallSprite ld a, [hli] ldh [hLoadSpriteTemp1], a ; save item number push hl ld hl, wMapSpriteExtraData …pokered: disassembly of Pokémon Red and Blue · home/overworld_text.asm#L28-L31PickUpItemText:: text_asm predef PickUpItem jp TextScriptEndpokered: disassembly of Pokémon Red and Blue · engine/events/pick_up_item.asm#L1-L45PickUpItem: call EnableAutoTextBoxDrawing ldh a, [hSpriteIndex] ld b, a ld hl, wToggleableObjectList .toggleableObjectsListLoop ld a, [hli] cp $ff ret z cp b jr z, .isToggleable …pokered: disassembly of Pokémon Red and Blue · data/maps/objects/CeruleanCave1F.asm#L23-L25object_event 7, 13, SPRITE_POKE_BALL, STAY, NONE, TEXT_CERULEANCAVE1F_FULL_RESTORE, FULL_RESTORE object_event 19, 3, SPRITE_POKE_BALL, STAY, NONE, TEXT_CERULEANCAVE1F_MAX_ELIXER, MAX_ELIXER object_event 5, 0, SPRITE_POKE_BALL, STAY, NONE, TEXT_CERULEANCAVE1F_NUGGET, NUGGETpokered: disassembly of Pokémon Red and Blue · data/maps/objects/CeruleanCave2F.asm#L20-L22object_event 29, 9, SPRITE_POKE_BALL, STAY, NONE, TEXT_CERULEANCAVE2F_PP_UP, PP_UP object_event 4, 15, SPRITE_POKE_BALL, STAY, NONE, TEXT_CERULEANCAVE2F_ULTRA_BALL, ULTRA_BALL object_event 13, 6, SPRITE_POKE_BALL, STAY, NONE, TEXT_CERULEANCAVE2F_FULL_RESTORE, FULL_RESTOREpokered: disassembly of Pokémon Red and Blue · data/maps/objects/CeruleanCaveB1F.asm#L16-L17object_event 16, 9, SPRITE_POKE_BALL, STAY, NONE, TEXT_CERULEANCAVEB1F_ULTRA_BALL, ULTRA_BALL object_event 18, 1, SPRITE_POKE_BALL, STAY, NONE, TEXT_CERULEANCAVEB1F_MAX_REVIVE, MAX_REVIVEpokered: disassembly of Pokémon Red and Blue · data/maps/objects/MtMoon1F.asm#L37-L42object_event 2, 20, SPRITE_POKE_BALL, STAY, NONE, TEXT_MTMOON1F_POTION1, POTION object_event 2, 2, SPRITE_POKE_BALL, STAY, NONE, TEXT_MTMOON1F_MOON_STONE, MOON_STONE object_event 35, 31, SPRITE_POKE_BALL, STAY, NONE, TEXT_MTMOON1F_RARE_CANDY, RARE_CANDY object_event 36, 23, SPRITE_POKE_BALL, STAY, NONE, TEXT_MTMOON1F_ESCAPE_ROPE, ESCAPE_ROPE object_event 20, 33, SPRITE_POKE_BALL, STAY, NONE, TEXT_MTMOON1F_POTION2, POTION object_event 5, 32, SPRITE_POKE_BALL, STAY, NONE, TEXT_MTMOON1F_TM_WATER_GUN, TM_WATER_GUNpokered: disassembly of Pokémon Red and Blue · data/maps/objects/MtMoonB2F.asm#L31-L32object_event 25, 21, SPRITE_POKE_BALL, STAY, NONE, TEXT_MTMOONB2F_HP_UP, HP_UP object_event 29, 5, SPRITE_POKE_BALL, STAY, NONE, TEXT_MTMOONB2F_TM_MEGA_PUNCH, TM_MEGA_PUNCHpokered: disassembly of Pokémon Red and Blue · data/maps/objects/PokemonMansion1F.asm#L23-L24object_event 14, 3, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONMANSION1F_ESCAPE_ROPE, ESCAPE_ROPE object_event 18, 21, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONMANSION1F_CARBOS, CARBOSpokered: disassembly of Pokémon Red and Blue · data/maps/objects/PokemonMansion2F.asm#L20object_event 28, 7, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONMANSION2F_CALCIUM, CALCIUMpokered: disassembly of Pokémon Red and Blue · data/maps/objects/PokemonMansion3F.asm#L21-L22object_event 1, 16, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONMANSION3F_MAX_POTION, MAX_POTION object_event 25, 5, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONMANSION3F_IRON, IRONpokered: disassembly of Pokémon Red and Blue · data/maps/objects/PokemonMansionB1F.asm#L22-L27object_event 10, 2, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONMANSIONB1F_RARE_CANDY, RARE_CANDY object_event 1, 22, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONMANSIONB1F_FULL_RESTORE, FULL_RESTORE object_event 19, 25, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONMANSIONB1F_TM_BLIZZARD, TM_BLIZZARD object_event 5, 4, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONMANSIONB1F_TM_SOLARBEAM, TM_SOLARBEAM … object_event 5, 13, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONMANSIONB1F_SECRET_KEY, SECRET_KEYpokered: disassembly of Pokémon Red and Blue · data/maps/objects/PokemonTower3F.asm#L20object_event 12, 1, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONTOWER3F_ESCAPE_ROPE, ESCAPE_ROPEpokered: disassembly of Pokémon Red and Blue · data/maps/objects/PokemonTower4F.asm#L22-L24object_event 12, 10, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONTOWER4F_ELIXER, ELIXER object_event 9, 10, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONTOWER4F_AWAKENING, AWAKENING object_event 12, 16, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONTOWER4F_HP_UP, HP_UPpokered: disassembly of Pokémon Red and Blue · data/maps/objects/PokemonTower5F.asm#L24object_event 6, 14, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONTOWER5F_NUGGET, NUGGETpokered: disassembly of Pokémon Red and Blue · data/maps/objects/PokemonTower6F.asm#L21-L22object_event 6, 8, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONTOWER6F_RARE_CANDY, RARE_CANDY object_event 14, 14, SPRITE_POKE_BALL, STAY, NONE, TEXT_POKEMONTOWER6F_X_ACCURACY, X_ACCURACYpokered: disassembly of Pokémon Red and Blue · data/maps/objects/PowerPlant.asm#L37-L41object_event 7, 25, SPRITE_POKE_BALL, STAY, NONE, TEXT_POWERPLANT_CARBOS, CARBOS object_event 28, 3, SPRITE_POKE_BALL, STAY, NONE, TEXT_POWERPLANT_HP_UP, HP_UP object_event 34, 3, SPRITE_POKE_BALL, STAY, NONE, TEXT_POWERPLANT_RARE_CANDY, RARE_CANDY object_event 26, 32, SPRITE_POKE_BALL, STAY, NONE, TEXT_POWERPLANT_TM_THUNDER, TM_THUNDER object_event 20, 32, SPRITE_POKE_BALL, STAY, NONE, TEXT_POWERPLANT_TM_REFLECT, TM_REFLECTpokered: disassembly of Pokémon Red and Blue · data/maps/objects/RocketHideoutB1F.asm#L28-L29object_event 11, 14, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROCKETHIDEOUTB1F_ESCAPE_ROPE, ESCAPE_ROPE object_event 9, 17, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROCKETHIDEOUTB1F_HYPER_POTION, HYPER_POTIONpokered: disassembly of Pokémon Red and Blue · data/maps/objects/RocketHideoutB2F.asm#L22-L25object_event 1, 11, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROCKETHIDEOUTB2F_MOON_STONE, MOON_STONE object_event 16, 8, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROCKETHIDEOUTB2F_NUGGET, NUGGET object_event 6, 12, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROCKETHIDEOUTB2F_TM_HORN_DRILL, TM_HORN_DRILL object_event 3, 21, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROCKETHIDEOUTB2F_SUPER_POTION, SUPER_POTIONpokered: disassembly of Pokémon Red and Blue · data/maps/objects/RocketHideoutB3F.asm#L19-L20object_event 26, 17, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROCKETHIDEOUTB3F_TM_DOUBLE_EDGE, TM_DOUBLE_EDGE object_event 20, 14, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROCKETHIDEOUTB3F_RARE_CANDY, RARE_CANDYpokered: disassembly of Pokémon Red and Blue · data/maps/objects/RocketHideoutB4F.asm#L27-L31object_event 10, 12, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROCKETHIDEOUTB4F_HP_UP, HP_UP object_event 9, 4, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROCKETHIDEOUTB4F_TM_RAZOR_WIND, TM_RAZOR_WIND object_event 12, 20, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROCKETHIDEOUTB4F_IRON, IRON object_event 25, 2, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROCKETHIDEOUTB4F_SILPH_SCOPE, SILPH_SCOPE object_event 10, 2, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROCKETHIDEOUTB4F_LIFT_KEY, LIFT_KEYpokered: disassembly of Pokémon Red and Blue · data/maps/objects/Route12.asm#L35-L36object_event 14, 35, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROUTE12_TM_PAY_DAY, TM_PAY_DAY object_event 5, 89, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROUTE12_IRON, IRONpokered: disassembly of Pokémon Red and Blue · data/maps/objects/Route15.asm#L37object_event 18, 5, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROUTE15_TM_RAGE, TM_RAGEpokered: disassembly of Pokémon Red and Blue · data/maps/objects/Route2.asm#L21-L22object_event 13, 54, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROUTE2_MOON_STONE, MOON_STONE object_event 13, 45, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROUTE2_HP_UP, HP_UPpokered: disassembly of Pokémon Red and Blue · data/maps/objects/Route24.asm#L26object_event 10, 5, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROUTE24_TM_THUNDER_WAVE, TM_THUNDER_WAVEpokered: disassembly of Pokémon Red and Blue · data/maps/objects/Route25.asm#L32object_event 22, 2, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROUTE25_TM_SEISMIC_TOSS, TM_SEISMIC_TOSSpokered: disassembly of Pokémon Red and Blue · data/maps/objects/Route4.asm#L22object_event 57, 3, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROUTE4_TM_WHIRLWIND, TM_WHIRLWINDpokered: disassembly of Pokémon Red and Blue · data/maps/objects/Route9.asm#L31object_event 10, 15, SPRITE_POKE_BALL, STAY, NONE, TEXT_ROUTE9_TM_TELEPORT, TM_TELEPORTpokered: disassembly of Pokémon Red and Blue · data/maps/objects/SSAnne1FRooms.asm#L37object_event 12, 15, SPRITE_POKE_BALL, STAY, NONE, TEXT_SSANNE1FROOMS_TM_BODY_SLAM, TM_BODY_SLAMpokered: disassembly of Pokémon Red and Blue · data/maps/objects/SSAnne2FRooms.asm#L41-L44object_event 12, 1, SPRITE_POKE_BALL, STAY, NONE, TEXT_SSANNE2FROOMS_MAX_ETHER, MAX_ETHER … object_event 0, 12, SPRITE_POKE_BALL, STAY, NONE, TEXT_SSANNE2FROOMS_RARE_CANDY, RARE_CANDYpokered: disassembly of Pokémon Red and Blue · data/maps/objects/SSAnneB1FRooms.asm#L40-L42object_event 20, 2, SPRITE_POKE_BALL, STAY, NONE, TEXT_SSANNEB1FROOMS_ETHER, ETHER object_event 10, 2, SPRITE_POKE_BALL, STAY, NONE, TEXT_SSANNEB1FROOMS_TM_REST, TM_REST object_event 12, 11, SPRITE_POKE_BALL, STAY, NONE, TEXT_SSANNEB1FROOMS_MAX_POTION, MAX_POTIONpokered: disassembly of Pokémon Red and Blue · data/maps/objects/SafariZoneCenter.asm#L23object_event 14, 10, SPRITE_POKE_BALL, STAY, NONE, TEXT_SAFARIZONECENTER_NUGGET, NUGGETpokered: disassembly of Pokémon Red and Blue · data/maps/objects/SafariZoneEast.asm#L23-L26object_event 21, 10, SPRITE_POKE_BALL, STAY, NONE, TEXT_SAFARIZONEEAST_FULL_RESTORE, FULL_RESTORE object_event 3, 7, SPRITE_POKE_BALL, STAY, NONE, TEXT_SAFARIZONEEAST_MAX_RESTORE, MAX_POTION object_event 20, 13, SPRITE_POKE_BALL, STAY, NONE, TEXT_SAFARIZONEEAST_CARBOS, CARBOS object_event 15, 12, SPRITE_POKE_BALL, STAY, NONE, TEXT_SAFARIZONEEAST_TM_EGG_BOMB, TM_EGG_BOMBpokered: disassembly of Pokémon Red and Blue · data/maps/objects/SafariZoneNorth.asm#L27-L28object_event 25, 1, SPRITE_POKE_BALL, STAY, NONE, TEXT_SAFARIZONENORTH_PROTEIN, PROTEIN object_event 19, 7, SPRITE_POKE_BALL, STAY, NONE, TEXT_SAFARIZONENORTH_TM_SKULL_BASH, TM_SKULL_BASHpokered: disassembly of Pokémon Red and Blue · data/maps/objects/SafariZoneWest.asm#L27-L30object_event 8, 20, SPRITE_POKE_BALL, STAY, NONE, TEXT_SAFARIZONEWEST_MAX_POTION, MAX_POTION object_event 9, 7, SPRITE_POKE_BALL, STAY, NONE, TEXT_SAFARIZONEWEST_TM_DOUBLE_TEAM, TM_DOUBLE_TEAM object_event 18, 18, SPRITE_POKE_BALL, STAY, NONE, TEXT_SAFARIZONEWEST_MAX_REVIVE, MAX_REVIVE object_event 19, 7, SPRITE_POKE_BALL, STAY, NONE, TEXT_SAFARIZONEWEST_GOLD_TEETH, GOLD_TEETHpokered: disassembly of Pokémon Red and Blue · data/maps/objects/SilphCo10F.asm#L26-L28object_event 2, 12, SPRITE_POKE_BALL, STAY, NONE, TEXT_SILPHCO10F_TM_EARTHQUAKE, TM_EARTHQUAKE object_event 4, 14, SPRITE_POKE_BALL, STAY, NONE, TEXT_SILPHCO10F_RARE_CANDY, RARE_CANDY object_event 5, 11, SPRITE_POKE_BALL, STAY, NONE, TEXT_SILPHCO10F_CARBOS, CARBOSpokered: disassembly of Pokémon Red and Blue · data/maps/objects/SilphCo3F.asm#L28object_event 8, 5, SPRITE_POKE_BALL, STAY, NONE, TEXT_SILPHCO3F_HYPER_POTION, HYPER_POTIONpokered: disassembly of Pokémon Red and Blue · data/maps/objects/SilphCo4F.asm#L29-L31object_event 3, 9, SPRITE_POKE_BALL, STAY, NONE, TEXT_SILPHCO4F_FULL_HEAL, FULL_HEAL object_event 4, 7, SPRITE_POKE_BALL, STAY, NONE, TEXT_SILPHCO4F_MAX_REVIVE, MAX_REVIVE object_event 5, 8, SPRITE_POKE_BALL, STAY, NONE, TEXT_SILPHCO4F_ESCAPE_ROPE, ESCAPE_ROPEpokered: disassembly of Pokémon Red and Blue · data/maps/objects/SilphCo5F.asm#L34-L36object_event 2, 13, SPRITE_POKE_BALL, STAY, NONE, TEXT_SILPHCO5F_TM_TAKE_DOWN, TM_TAKE_DOWN object_event 4, 6, SPRITE_POKE_BALL, STAY, NONE, TEXT_SILPHCO5F_PROTEIN, PROTEIN object_event 21, 16, SPRITE_POKE_BALL, STAY, NONE, TEXT_SILPHCO5F_CARD_KEY, CARD_KEYpokered: disassembly of Pokémon Red and Blue · data/maps/objects/SilphCo6F.asm#L34-L35object_event 3, 12, SPRITE_POKE_BALL, STAY, NONE, TEXT_SILPHCO6F_HP_UP, HP_UP object_event 2, 15, SPRITE_POKE_BALL, STAY, NONE, TEXT_SILPHCO6F_X_ACCURACY, X_ACCURACYpokered: disassembly of Pokémon Red and Blue · data/maps/objects/SilphCo7F.asm#L38-L39object_event 1, 9, SPRITE_POKE_BALL, STAY, NONE, TEXT_SILPHCO7F_CALCIUM, CALCIUM object_event 24, 11, SPRITE_POKE_BALL, STAY, NONE, TEXT_SILPHCO7F_TM_SWORDS_DANCE, TM_SWORDS_DANCEpokered: disassembly of Pokémon Red and Blue · data/maps/objects/VictoryRoad1F.asm#L23-L24object_event 11, 0, SPRITE_POKE_BALL, STAY, NONE, TEXT_VICTORYROAD1F_TM_SKY_ATTACK, TM_SKY_ATTACK object_event 9, 2, SPRITE_POKE_BALL, STAY, NONE, TEXT_VICTORYROAD1F_RARE_CANDY, RARE_CANDYpokered: disassembly of Pokémon Red and Blue · data/maps/objects/VictoryRoad2F.asm#L37-L40object_event 27, 5, SPRITE_POKE_BALL, STAY, NONE, TEXT_VICTORYROAD2F_TM_SUBMISSION, TM_SUBMISSION object_event 18, 9, SPRITE_POKE_BALL, STAY, NONE, TEXT_VICTORYROAD2F_FULL_HEAL, FULL_HEAL object_event 9, 11, SPRITE_POKE_BALL, STAY, NONE, TEXT_VICTORYROAD2F_TM_MEGA_KICK, TM_MEGA_KICK object_event 11, 0, SPRITE_POKE_BALL, STAY, NONE, TEXT_VICTORYROAD2F_GUARD_SPEC, GUARD_SPECpokered: disassembly of Pokémon Red and Blue · data/maps/objects/VictoryRoad3F.asm#L29-L30object_event 26, 5, SPRITE_POKE_BALL, STAY, NONE, TEXT_VICTORYROAD3F_MAX_REVIVE, MAX_REVIVE object_event 7, 7, SPRITE_POKE_BALL, STAY, NONE, TEXT_VICTORYROAD3F_TM_EXPLOSION, TM_EXPLOSIONpokered: disassembly of Pokémon Red and Blue · data/maps/objects/ViridianForest.asm#L35-L37object_event 25, 11, SPRITE_POKE_BALL, STAY, NONE, TEXT_VIRIDIANFOREST_ANTIDOTE, ANTIDOTE object_event 12, 29, SPRITE_POKE_BALL, STAY, NONE, TEXT_VIRIDIANFOREST_POTION, POTION object_event 1, 31, SPRITE_POKE_BALL, STAY, NONE, TEXT_VIRIDIANFOREST_POKE_BALL, POKE_BALLpokered: disassembly of Pokémon Red and Blue · data/maps/objects/ViridianGym.asm#L34object_event 16, 9, SPRITE_POKE_BALL, STAY, NONE, TEXT_VIRIDIANGYM_REVIVE, REVIVEpokered: disassembly of Pokémon Red and Blue · data/maps/objects/WardensHouse.asm#L19object_event 8, 3, SPRITE_POKE_BALL, STAY, NONE, TEXT_WARDENSHOUSE_RARE_CANDY, RARE_CANDYpokered: disassembly of Pokémon Red and Blue · scripts/CeruleanCave1F.asm#L6-L8dw_const PickUpItemText, TEXT_CERULEANCAVE1F_FULL_RESTORE dw_const PickUpItemText, TEXT_CERULEANCAVE1F_MAX_ELIXER dw_const PickUpItemText, TEXT_CERULEANCAVE1F_NUGGETpokered: disassembly of Pokémon Red and Blue · scripts/CeruleanCave2F.asm#L6-L8dw_const PickUpItemText, TEXT_CERULEANCAVE2F_PP_UP dw_const PickUpItemText, TEXT_CERULEANCAVE2F_ULTRA_BALL dw_const PickUpItemText, TEXT_CERULEANCAVE2F_FULL_RESTOREpokered: disassembly of Pokémon Red and Blue · scripts/CeruleanCaveB1F.asm#L19-L20dw_const PickUpItemText, TEXT_CERULEANCAVEB1F_ULTRA_BALL dw_const PickUpItemText, TEXT_CERULEANCAVEB1F_MAX_REVIVEpokered: disassembly of Pokémon Red and Blue · scripts/MtMoon1F.asm#L25-L30dw_const PickUpItemText, TEXT_MTMOON1F_POTION1 dw_const PickUpItemText, TEXT_MTMOON1F_MOON_STONE dw_const PickUpItemText, TEXT_MTMOON1F_RARE_CANDY dw_const PickUpItemText, TEXT_MTMOON1F_ESCAPE_ROPE dw_const PickUpItemText, TEXT_MTMOON1F_POTION2 dw_const PickUpItemText, TEXT_MTMOON1F_TM_WATER_GUNpokered: disassembly of Pokémon Red and Blue · scripts/MtMoonB2F.asm#L167-L168dw_const PickUpItemText, TEXT_MTMOONB2F_HP_UP dw_const PickUpItemText, TEXT_MTMOONB2F_TM_MEGA_PUNCHpokered: disassembly of Pokémon Red and Blue · scripts/PokemonMansion1F.asm#L67-L68dw_const PickUpItemText, TEXT_POKEMONMANSION1F_ESCAPE_ROPE dw_const PickUpItemText, TEXT_POKEMONMANSION1F_CARBOSpokered: disassembly of Pokémon Red and Blue · scripts/PokemonMansion2F.asm#L63dw_const PickUpItemText, TEXT_POKEMONMANSION2F_CALCIUMpokered: disassembly of Pokémon Red and Blue · scripts/PokemonMansion3F.asm#L90-L91dw_const PickUpItemText, TEXT_POKEMONMANSION3F_MAX_POTION dw_const PickUpItemText, TEXT_POKEMONMANSION3F_IRONpokered: disassembly of Pokémon Red and Blue · scripts/PokemonMansionB1F.asm#L66-L71dw_const PickUpItemText, TEXT_POKEMONMANSIONB1F_RARE_CANDY dw_const PickUpItemText, TEXT_POKEMONMANSIONB1F_FULL_RESTORE dw_const PickUpItemText, TEXT_POKEMONMANSIONB1F_TM_BLIZZARD dw_const PickUpItemText, TEXT_POKEMONMANSIONB1F_TM_SOLARBEAM … dw_const PickUpItemText, TEXT_POKEMONMANSIONB1F_SECRET_KEYpokered: disassembly of Pokémon Red and Blue · scripts/PokemonTower3F.asm#L21dw_const PickUpItemText, TEXT_POKEMONTOWER3F_ESCAPE_ROPEpokered: disassembly of Pokémon Red and Blue · scripts/PokemonTower4F.asm#L21-L23dw_const PickUpItemText, TEXT_POKEMONTOWER4F_ELIXER dw_const PickUpItemText, TEXT_POKEMONTOWER4F_AWAKENING dw_const PickUpItemText, TEXT_POKEMONTOWER4F_HP_UPpokered: disassembly of Pokémon Red and Blue · scripts/PokemonTower5F.asm#L59dw_const PickUpItemText, TEXT_POKEMONTOWER5F_NUGGETpokered: disassembly of Pokémon Red and Blue · scripts/PokemonTower6F.asm#L104-L105dw_const PickUpItemText, TEXT_POKEMONTOWER6F_RARE_CANDY dw_const PickUpItemText, TEXT_POKEMONTOWER6F_X_ACCURACYpokered: disassembly of Pokémon Red and Blue · scripts/PowerPlant.asm#L27-L31dw_const PickUpItemText, TEXT_POWERPLANT_CARBOS dw_const PickUpItemText, TEXT_POWERPLANT_HP_UP dw_const PickUpItemText, TEXT_POWERPLANT_RARE_CANDY dw_const PickUpItemText, TEXT_POWERPLANT_TM_THUNDER dw_const PickUpItemText, TEXT_POWERPLANT_TM_REFLECTpokered: disassembly of Pokémon Red and Blue · scripts/RocketHideoutB1F.asm#L47-L48dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB1F_ESCAPE_ROPE dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB1F_HYPER_POTIONpokered: disassembly of Pokémon Red and Blue · scripts/RocketHideoutB2F.asm#L276-L279dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB2F_MOON_STONE dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB2F_NUGGET dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB2F_TM_HORN_DRILL dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB2F_SUPER_POTIONpokered: disassembly of Pokémon Red and Blue · scripts/RocketHideoutB3F.asm#L132-L133dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB3F_TM_DOUBLE_EDGE dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB3F_RARE_CANDYpokered: disassembly of Pokémon Red and Blue · scripts/RocketHideoutB4F.asm#L82-L86dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_HP_UP dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_TM_RAZOR_WIND dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_IRON dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_SILPH_SCOPE dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_LIFT_KEYpokered: disassembly of Pokémon Red and Blue · scripts/Route12.asm#L74-L75dw_const PickUpItemText, TEXT_ROUTE12_TM_PAY_DAY dw_const PickUpItemText, TEXT_ROUTE12_IRONpokered: disassembly of Pokémon Red and Blue · scripts/Route15.asm#L28dw_const PickUpItemText, TEXT_ROUTE15_TM_RAGEpokered: disassembly of Pokémon Red and Blue · scripts/Route2.asm#L6-L7dw_const PickUpItemText, TEXT_ROUTE2_MOON_STONE dw_const PickUpItemText, TEXT_ROUTE2_HP_UPpokered: disassembly of Pokémon Red and Blue · scripts/Route24.asm#L89dw_const PickUpItemText, TEXT_ROUTE24_TM_THUNDER_WAVEpokered: disassembly of Pokémon Red and Blue · scripts/Route25.asm#L55dw_const PickUpItemText, TEXT_ROUTE25_TM_SEISMIC_TOSSpokered: disassembly of Pokémon Red and Blue · scripts/Route4.asm#L20dw_const PickUpItemText, TEXT_ROUTE4_TM_WHIRLWINDpokered: disassembly of Pokémon Red and Blue · scripts/Route9.asm#L27dw_const PickUpItemText, TEXT_ROUTE9_TM_TELEPORTpokered: disassembly of Pokémon Red and Blue · scripts/SSAnne1FRooms.asm#L27dw_const PickUpItemText, TEXT_SSANNE1FROOMS_TM_BODY_SLAMpokered: disassembly of Pokémon Red and Blue · scripts/SSAnne2FRooms.asm#L26-L29dw_const PickUpItemText, TEXT_SSANNE2FROOMS_MAX_ETHER … dw_const PickUpItemText, TEXT_SSANNE2FROOMS_RARE_CANDYpokered: disassembly of Pokémon Red and Blue · scripts/SSAnneB1FRooms.asm#L26-L28dw_const PickUpItemText, TEXT_SSANNEB1FROOMS_ETHER dw_const PickUpItemText, TEXT_SSANNEB1FROOMS_TM_REST dw_const PickUpItemText, TEXT_SSANNEB1FROOMS_MAX_POTIONpokered: disassembly of Pokémon Red and Blue · scripts/SafariZoneCenter.asm#L6dw_const PickUpItemText, TEXT_SAFARIZONECENTER_NUGGETpokered: disassembly of Pokémon Red and Blue · scripts/SafariZoneEast.asm#L6-L9dw_const PickUpItemText, TEXT_SAFARIZONEEAST_FULL_RESTORE dw_const PickUpItemText, TEXT_SAFARIZONEEAST_MAX_RESTORE dw_const PickUpItemText, TEXT_SAFARIZONEEAST_CARBOS dw_const PickUpItemText, TEXT_SAFARIZONEEAST_TM_EGG_BOMBpokered: disassembly of Pokémon Red and Blue · scripts/SafariZoneNorth.asm#L6-L7dw_const PickUpItemText, TEXT_SAFARIZONENORTH_PROTEIN dw_const PickUpItemText, TEXT_SAFARIZONENORTH_TM_SKULL_BASHpokered: disassembly of Pokémon Red and Blue · scripts/SafariZoneWest.asm#L6-L9dw_const PickUpItemText, TEXT_SAFARIZONEWEST_MAX_POTION dw_const PickUpItemText, TEXT_SAFARIZONEWEST_TM_DOUBLE_TEAM dw_const PickUpItemText, TEXT_SAFARIZONEWEST_MAX_REVIVE dw_const PickUpItemText, TEXT_SAFARIZONEWEST_GOLD_TEETHpokered: disassembly of Pokémon Red and Blue · scripts/SilphCo10F.asm#L48-L50dw_const PickUpItemText, TEXT_SILPHCO10F_TM_EARTHQUAKE dw_const PickUpItemText, TEXT_SILPHCO10F_RARE_CANDY dw_const PickUpItemText, TEXT_SILPHCO10F_CARBOSpokered: disassembly of Pokémon Red and Blue · scripts/SilphCo3F.asm#L64dw_const PickUpItemText, TEXT_SILPHCO3F_HYPER_POTIONpokered: disassembly of Pokémon Red and Blue · scripts/SilphCo4F.asm#L101-L103dw_const PickUpItemText, TEXT_SILPHCO4F_FULL_HEAL dw_const PickUpItemText, TEXT_SILPHCO4F_MAX_REVIVE dw_const PickUpItemText, TEXT_SILPHCO4F_ESCAPE_ROPEpokered: disassembly of Pokémon Red and Blue · scripts/SilphCo5F.asm#L81-L83dw_const PickUpItemText, TEXT_SILPHCO5F_TM_TAKE_DOWN dw_const PickUpItemText, TEXT_SILPHCO5F_PROTEIN dw_const PickUpItemText, TEXT_SILPHCO5F_CARD_KEYpokered: disassembly of Pokémon Red and Blue · scripts/SilphCo6F.asm#L53-L54dw_const PickUpItemText, TEXT_SILPHCO6F_HP_UP dw_const PickUpItemText, TEXT_SILPHCO6F_X_ACCURACYpokered: disassembly of Pokémon Red and Blue · scripts/SilphCo7F.asm#L277-L278dw_const PickUpItemText, TEXT_SILPHCO7F_CALCIUM dw_const PickUpItemText, TEXT_SILPHCO7F_TM_SWORDS_DANCEpokered: disassembly of Pokémon Red and Blue · scripts/VictoryRoad1F.asm#L46-L47dw_const PickUpItemText, TEXT_VICTORYROAD1F_TM_SKY_ATTACK dw_const PickUpItemText, TEXT_VICTORYROAD1F_RARE_CANDYpokered: disassembly of Pokémon Red and Blue · scripts/VictoryRoad2F.asm#L79-L82dw_const PickUpItemText, TEXT_VICTORYROAD2F_TM_SUBMISSION dw_const PickUpItemText, TEXT_VICTORYROAD2F_FULL_HEAL dw_const PickUpItemText, TEXT_VICTORYROAD2F_TM_MEGA_KICK dw_const PickUpItemText, TEXT_VICTORYROAD2F_GUARD_SPECpokered: disassembly of Pokémon Red and Blue · scripts/VictoryRoad3F.asm#L84-L85dw_const PickUpItemText, TEXT_VICTORYROAD3F_MAX_REVIVE dw_const PickUpItemText, TEXT_VICTORYROAD3F_TM_EXPLOSIONpokered: disassembly of Pokémon Red and Blue · scripts/ViridianForest.asm#L22-L24dw_const PickUpItemText, TEXT_VIRIDIANFOREST_ANTIDOTE dw_const PickUpItemText, TEXT_VIRIDIANFOREST_POTION dw_const PickUpItemText, TEXT_VIRIDIANFOREST_POKE_BALLpokered: disassembly of Pokémon Red and Blue · scripts/ViridianGym.asm#L182dw_const PickUpItemText, TEXT_VIRIDIANGYM_REVIVEpokered: disassembly of Pokémon Red and Blue · scripts/WardensHouse.asm#L7dw_const PickUpItemText, TEXT_WARDENSHOUSE_RARE_CANDYpokered: disassembly of Pokémon Red and Blue · data/maps/toggleable_objects.asm#L81-L393toggle_object_state ROUTE2_MOON_STONE, ON toggle_object_state ROUTE2_HP_UP, ON … toggle_object_state ROUTE4_TM_WHIRLWIND, ON … toggle_object_state ROUTE9_TM_TELEPORT, ON … toggle_object_state ROUTE12_TM_PAY_DAY, ON toggle_object_state ROUTE12_IRON, ON … toggle_object_state ROUTE15_TM_RAGE, ON … …pokered: disassembly of Pokémon Red and Blue · scripts/RocketHideoutB4F.asm#L54-L64SetEvent EVENT_BEAT_ROCKET_HIDEOUT_GIOVANNI … ld a, TOGGLE_ROCKET_HIDEOUT_B4F_ITEM_4 ld [wToggleableObjectIndex], a predef ShowObjectpokered: disassembly of Pokémon Red and Blue · scripts/RocketHideoutB4F.asm#L188-L197 RocketHideoutB4FRocket3AfterBattleText: text_asm ld hl, .Text call PrintText CheckAndSetEvent EVENT_ROCKET_DROPPED_LIFT_KEY jr nz, .done ld a, TOGGLE_ROCKET_HIDEOUT_B4F_ITEM_5 ld [wToggleableObjectIndex], a predef ShowObjectpokered: disassembly of Pokémon Red and Blue · data/maps/objects/BluesHouse.asm#L17-L18object_event 6, 4, SPRITE_DAISY, WALK, UP_DOWN, TEXT_BLUESHOUSE_DAISY_WALKING, 0 object_event 3, 3, SPRITE_POKEDEX, STAY, NONE, TEXT_BLUESHOUSE_TOWN_MAP, 0A POKé BALL costs ¥200, a GREAT BALL ¥600, and an ULTRA BALL ¥1,200, and the NUGGET is the most expensive item at ¥10,000. A mart charges each of the 83 items a price from one table of 3-byte decimal prices, and each of the 50 TMs a price from a second table that keeps one digit per TM, in thousands (¥1,000 to ¥5,000). A purchase costs the price times the quantity, up to 99 at a time, and a sale pays half of that. Key items and HMs can't be sold, and an HM has no price of its own. Eight items that aren't key items have a price of 0, so they sell for nothing: the MASTER BALL, MOON STONE, EXP.ALL, PP UP, ETHER, MAX ETHER, ELIXER, and MAX ELIXER. The first table goes on past the items with 14 elevator floors, each priced 0. Code — the TM numbers of the TM ballsChecked by claude, 2026-10-28 — read the object macro, the loader branch that keeps an item object's item number, and the pick-up routine at the pin; a script listed every object_event with seven arguments (the item form) in data/maps/objects/, 106, of which two in Blue's house name item 0 and are left out, and checked for each of the other 104 that its sprite is a Poké Ball, its text pointer in its map's script is the pick-up text, and it has an entry in the hideable-object table, whose ON or OFF gives the appears column; read the two OFF entries' scripts in Rocket Hideout B4FRevised after a check by a second AI model, 2026-10-28.

x and y are the ball's tile on its map. Two other objects carry the item mark with item 0: Daisy walking and the Town Map in Blue's house; they aren't balls and aren't counted.

Red and Blue hide 54 items on 39 maps, each found once: among them 4 ULTRA BALLs and 2 GREAT BALLs, and no POKé BALL or MASTER BALL. Two stand apart: a NUGGET in the Safari Zone Gate, which a disassembly comment marks inaccessible, and a MAX ELIXER on map $6F, which the disassembly names unused and whose header entry is Lance's room's. Each hidden item is an entry in its map's hidden-event list that calls the hidden-item routine with the item's number; the routine finds the tile's place in a second list of hidden-item tiles, gives 1 of the item unless that place's found flag is set, and then sets it. With a full bag it says so and the item stays. pokered-items/hidden-items

Value
{
 "place": [
  "Viridian Forest",
  "Viridian Forest",
  "Mt. Moon B2F",
  "Mt. Moon B2F",
  "Route 25",
  "Route 25",
  "Route 9",
  "S.S. Anne Kitchen",
  "S.S. Anne B1F rooms",
  "Route 10",
  "Route 10",
  "Rocket Hideout B1F",
  "Rocket Hideout B3F",
  "Rocket Hideout B4F",
  "Pokémon Tower 5F",
  "Route 13",
  "Route 13",
  "Safari Zone Gate",
  "Safari Zone West",
  "Silph Co. 5F",
  "Silph Co. 9F",
  "Copycat's House 2F",
  "Cerulean Cave 1F",
  "Cerulean Cave B1F",
  "Power Plant",
  "Power Plant",
  "Seafoam Islands B2F",
  "Seafoam Islands B4F",
  "Pokémon Mansion 1F",
  "Pokémon Mansion 3F",
  "Pokémon Mansion B1F",
  "Route 23",
  "Route 23",
  "Route 23",
  "Victory Road 2F",
  "Victory Road 2F",
  "Unused Map 6F",
  "Viridian City",
  "Route 11",
  "Route 12",
  "Route 17",
  "Route 17",
  "Route 17",
  "Route 17",
  "Route 17",
  "Underground Path (north–south)",
  "Underground Path (north–south)",
  "Underground Path (west–east)",
  "Underground Path (west–east)",
  "Celadon City",
  "Seafoam Islands B3F",
  "Vermilion City",
  "Cerulean City",
  "Route 4"
 ],
 "item": [
  "POTION",
  "ANTIDOTE",
  "MOON STONE",
  "ETHER",
  "ETHER",
  "ELIXER",
  "ETHER",
  "GREAT BALL",
  "HYPER POTION",
  "SUPER POTION",
  "MAX ETHER",
  "PP UP",
  "NUGGET",
  "SUPER POTION",
  "ELIXER",
  "PP UP",
  "CALCIUM",
  "NUGGET",
  "REVIVE",
  "ELIXER",
  "MAX POTION",
  "NUGGET",
  "RARE CANDY",
  "ULTRA BALL",
  "MAX ELIXER",
  "PP UP",
  "NUGGET",
  "ULTRA BALL",
  "MOON STONE",
  "MAX REVIVE",
  "RARE CANDY",
  "FULL RESTORE",
  "ULTRA BALL",
  "MAX ETHER",
  "ULTRA BALL",
  "FULL RESTORE",
  "MAX ELIXER",
  "POTION",
  "ESCAPE ROPE",
  "HYPER POTION",
  "RARE CANDY",
  "FULL RESTORE",
  "PP UP",
  "MAX REVIVE",
  "MAX ELIXER",
  "FULL RESTORE",
  "X SPECIAL",
  "NUGGET",
  "ELIXER",
  "PP UP",
  "MAX ELIXER",
  "MAX ETHER",
  "RARE CANDY",
  "GREAT BALL"
 ],
 "x": [
  1,
  16,
  18,
  33,
  38,
  10,
  14,
  13,
  3,
  9,
  16,
  21,
  27,
  25,
  4,
  1,
  16,
  10,
  6,
  12,
  2,
  1,
  14,
  27,
  17,
  12,
  15,
  25,
  8,
  1,
  1,
  9,
  19,
  8,
  5,
  26,
  14,
  14,
  48,
  2,
  15,
  8,
  17,
  4,
  8,
  3,
  4,
  12,
  21,
  48,
  9,
  14,
  15,
  40
 ],
 "y": [
  18,
  42,
  12,
  9,
  3,
  1,
  7,
  9,
  1,
  17,
  53,
  15,
  17,
  1,
  12,
  14,
  13,
  1,
  5,
  3,
  15,
  1,
  11,
  3,
  16,
  1,
  15,
  17,
  16,
  9,
  9,
  44,
  70,
  90,
  2,
  7,
  11,
  4,
  5,
  63,
  14,
  45,
  72,
  91,
  121,
  4,
  34,
  2,
  5,
  15,
  16,
  11,
  8,
  3
 ]
}
Codepokered: disassembly of Pokémon Red and Blue · data/events/hidden_events.asm#L107-L112MACRO hidden_event db \2 ; y coord db \1 ; x coord db \4 ; function argument dba \3 ; event function ENDMpokered: disassembly of Pokémon Red and Blue · data/events/hidden_events.asm#L41-L94hidden_event_map VIRIDIAN_FOREST hidden_event_map MT_MOON_B2F … hidden_event_map ROUTE_25 hidden_event_map ROUTE_9 hidden_event_map SS_ANNE_KITCHEN hidden_event_map SS_ANNE_B1F_ROOMS hidden_event_map ROCKET_HIDEOUT_B1F hidden_event_map ROCKET_HIDEOUT_B3F hidden_event_map ROCKET_HIDEOUT_B4F … hidden_event_map POKEMON_TOWER_5F …pokered: disassembly of Pokémon Red and Blue · data/events/hidden_events.asm#L346-L598hidden_events_for VIRIDIAN_FOREST hidden_event 1, 18, HiddenItems, POTION hidden_event 16, 42, HiddenItems, ANTIDOTE … hidden_events_for MT_MOON_B2F hidden_event 18, 12, HiddenItems, MOON_STONE hidden_event 33, 9, HiddenItems, ETHER … hidden_events_for ROUTE_25 hidden_event 38, 3, HiddenItems, ETHER hidden_event 10, 1, HiddenItems, ELIXER … …pokered: disassembly of Pokémon Red and Blue · data/events/hidden_item_coords.asm#L1-L63MACRO hidden_item db \1, \3, \2 ENDM HiddenItemCoords: table_width 3 ; map id, x, y hidden_item VIRIDIAN_FOREST, 1, 18 hidden_item VIRIDIAN_FOREST, 16, 42 hidden_item MT_MOON_B2F, 18, 12 hidden_item ROUTE_25, 38, 3 hidden_item ROUTE_9, 14, 7 …pokered: disassembly of Pokémon Red and Blue · engine/events/hidden_items.asm#L1-L45HiddenItems: ld hl, HiddenItemCoords call FindHiddenItemOrCoinsIndex ld [wHiddenItemOrCoinsIndex], a ld hl, wObtainedHiddenItemsFlags ld a, [wHiddenItemOrCoinsIndex] ld c, a ld b, FLAG_TEST predef FlagActionPredef ld a, c and a ret nz …pokered: disassembly of Pokémon Red and Blue · constants/map_constants.asm#L185map_const UNUSED_MAP_6F, 0, 0 ; $6Fpokered: disassembly of Pokémon Red and Blue · data/maps/map_header_pointers.asm#L115dw LancesRoom_h ; UNUSED_MAP_6FChecked by claude, 2026-10-28 — read the hidden-event list's macro, map list, and every map's entries at the pin, the hidden-item tile list whole, and the hidden-item routine; a script parsed every HiddenItems entry and matched each to its tile in the second list (all 54 match, and the lists are the same length), and every map with a hidden item is in the map list; searched the pinned repo for UNUSED_MAP_6F: it occurs in the map constants, header banks and pointers, songs, and the two hidden-item lists, and in no warp, special warp, or map connectionRevised after a check by a second AI model, 2026-10-28.

x and y are the hidden item's tile. A search of the pinned repo finds no warp, special warp, or map connection that leads to map $6F. The same list holds 12 hidden coin piles on the Game Corner floor, which give coins rather than an item, and are left out here.

The Game Corner prize room trades coins at three counters, and no prize is a ball or any item but a TM. The right counter offers TM23, TM15, and TM50 for 3,300, 5,500, and 7,700 coins in both versions. The left and middle counters offer Pokémon, which differ by version: in Red, ABRA (level 9) for 180 coins, CLEFAIRY (8) for 500, NIDORINA (17) for 1,200, DRATINI (18) for 2,800, SCYTHER (25) for 5,500, and PORYGON (26) for 9,999; in Blue, ABRA (6) for 120, CLEFAIRY (12) for 750, NIDORINO (17) for 1,200, PINSIR (20) for 2,500, DRATINI (24) for 4,600, and PORYGON (18) for 6,500. A TM goes in the bag; a Pokémon is given at the level its version's list sets. pokered-items/prizes

Value
{
 "version": [
  "Red",
  "Red",
  "Red",
  "Red",
  "Red",
  "Red",
  "Blue",
  "Blue",
  "Blue",
  "Blue",
  "Blue",
  "Blue",
  "both",
  "both",
  "both"
 ],
 "counter": [
  "left",
  "left",
  "left",
  "middle",
  "middle",
  "middle",
  "left",
  "left",
  "left",
  "middle",
  "middle",
  "middle",
  "right",
  "right",
  "right"
 ],
 "prize": [
  "ABRA",
  "CLEFAIRY",
  "NIDORINA",
  "DRATINI",
  "SCYTHER",
  "PORYGON",
  "ABRA",
  "CLEFAIRY",
  "NIDORINO",
  "PINSIR",
  "DRATINI",
  "PORYGON",
  "TM23",
  "TM15",
  "TM50"
 ],
 "coins": [
  180,
  500,
  1200,
  2800,
  5500,
  9999,
  120,
  750,
  1200,
  2500,
  4600,
  6500,
  3300,
  5500,
  7700
 ],
 "level": [
  9,
  8,
  17,
  18,
  25,
  26,
  6,
  12,
  17,
  20,
  24,
  18,
  "",
  "",
  ""
 ]
}
Codepokered: disassembly of Pokémon Red and Blue · data/events/prizes.asm#L1-L67PrizeDifferentMenuPtrs: dw PrizeMenuMon1Entries, PrizeMenuMon1Cost dw PrizeMenuMon2Entries, PrizeMenuMon2Cost dw PrizeMenuTMsEntries, PrizeMenuTMsCost NoThanksText: db "NO THANKS@" PrizeMenuMon1Entries: db ABRA db CLEFAIRY IF DEF(_RED) …pokered: disassembly of Pokémon Red and Blue · data/events/prize_mon_levels.asm#L1-L19PrizeMonLevelDictionary: IF DEF(_RED) db ABRA, 9 db CLEFAIRY, 8 db NIDORINA, 17 db DRATINI, 18 db SCYTHER, 25 db PORYGON, 26 ENDC IF DEF(_BLUE) db ABRA, 6 …pokered: disassembly of Pokémon Red and Blue · data/maps/objects/GameCornerPrizeRoom.asm#L13-L15bg_event 2, 2, TEXT_GAMECORNERPRIZEROOM_PRIZE_VENDOR_1 bg_event 4, 2, TEXT_GAMECORNERPRIZEROOM_PRIZE_VENDOR_2 bg_event 6, 2, TEXT_GAMECORNERPRIZEROOM_PRIZE_VENDOR_3pokered: disassembly of Pokémon Red and Blue · scripts/GameCornerPrizeRoom.asm#L7-L22dw_const GameCornerPrizeRoomGamblerText, TEXT_GAMECORNERPRIZEROOM_GAMBLER dw_const GameCornerPRizeRoomPrizeVendorText, TEXT_GAMECORNERPRIZEROOM_PRIZE_VENDOR_1 dw_const GameCornerPRizeRoomPrizeVendorText, TEXT_GAMECORNERPRIZEROOM_PRIZE_VENDOR_2 … GameCornerPRizeRoomPrizeVendorText: script_prize_vendorpokered: disassembly of Pokémon Red and Blue · home/text_script.asm#L68-L84; check first byte of text for special cases … dict TX_SCRIPT_PRIZE_VENDOR, TextScript_GameCornerPrizeMenupokered: disassembly of Pokémon Red and Blue · engine/events/prize_menu.asm#L64-L71ldh a, [hTextID] sub TEXT_GAMECORNERPRIZEROOM_PRIZE_VENDOR_1 ld [wWhichPrizeWindow], a ; prize texts' relative ID (i.e. 0-2) … ld hl, PrizeDifferentMenuPtrspokered: disassembly of Pokémon Red and Blue · engine/events/prize_menu.asm#L204-L225call LoadCoinsToSubtract call HasEnoughCoins jr c, .notEnoughCoins ld a, [wWhichPrizeWindow] cp 2 ; is prize a TM? jr nz, .giveMon ld a, [wNamedObjectIndex] ld b, a ld a, 1 ld c, a call GiveItem jr nc, .bagFull …pokered: disassembly of Pokémon Red and Blue · engine/events/prize_menu.asm#L283-L296GetPrizeMonLevel: ld a, [wCurPartySpecies] ld b, a ld hl, PrizeMonLevelDictionary .loop ld a, [hli] cp b jr z, .matchFound inc hl jr .loop .matchFound ld a, [hl] …pokered: disassembly of Pokémon Red and Blue · Makefile#L109-L110$(pokered_obj): RGBASMFLAGS += -D _RED $(pokeblue_obj): RGBASMFLAGS += -D _BLUEA POKé BALL costs ¥200, a GREAT BALL ¥600, and an ULTRA BALL ¥1,200, and the NUGGET is the most expensive item at ¥10,000. A mart charges each of the 83 items a price from one table of 3-byte decimal prices, and each of the 50 TMs a price from a second table that keeps one digit per TM, in thousands (¥1,000 to ¥5,000). A purchase costs the price times the quantity, up to 99 at a time, and a sale pays half of that. Key items and HMs can't be sold, and an HM has no price of its own. Eight items that aren't key items have a price of 0, so they sell for nothing: the MASTER BALL, MOON STONE, EXP.ALL, PP UP, ETHER, MAX ETHER, ELIXER, and MAX ELIXER. The first table goes on past the items with 14 elevator floors, each priced 0. Code — TM23, TM15, and TM50, and their movesChecked by claude, 2026-10-28 — read the prize lists, their costs, and the prize Pokémon's levels whole at the pin, with the counters' tiles and text, the routine that picks a counter's list from the text id, and the one that takes the coins and gives a TM as an item or a Pokémon at its listed level; the version blocks are chosen by the build's _RED and _BLUE flags; the rows were typed from the lists and checked against the files by a scriptRevised after a check by a second AI model, 2026-10-28.

The counters stand at x 2, 4, and 6 of the prize room's top wall, left to right; the left one is the first list's. TM23 is DRAGON RAGE, TM15 HYPER BEAM, and TM50 SUBSTITUTE.

Three vending machines on the Celadon Dept. Store roof sell FRESH WATER for ¥200, SODA POP for ¥300, and LEMONADE for ¥350, one at a time. They check only that the player has ¥200, whatever the drink: a player with less than a drink's price still gets it, and is left with ¥0 (computed from the subtraction, which sets money that would go below zero to zero). A drink comes from its own price list, not the mart price table. pokered-items/vending

Value
{
 "item": [
  "FRESH WATER",
  "SODA POP",
  "LEMONADE"
 ],
 "price": [
  200,
  300,
  350
 ]
}
Codepokered: disassembly of Pokémon Red and Blue · data/items/vending_prices.asm#L1-L10MACRO vend_item db \1 bcd3 \2 ENDM VendingPrices: ; item id, price vend_item FRESH_WATER, 200 vend_item SODA_POP, 300 vend_item LEMONADE, 350pokered: disassembly of Pokémon Red and Blue · data/maps/objects/CeladonMartRoof.asm#L12-L14bg_event 10, 1, TEXT_CELADONMARTROOF_VENDING_MACHINE1 bg_event 11, 1, TEXT_CELADONMARTROOF_VENDING_MACHINE2 bg_event 12, 2, TEXT_CELADONMARTROOF_VENDING_MACHINE3pokered: disassembly of Pokémon Red and Blue · scripts/CeladonMartRoof.asm#L213-L215dw_const CeladonMartRoofVendingMachineText, TEXT_CELADONMARTROOF_VENDING_MACHINE1 dw_const CeladonMartRoofVendingMachineText, TEXT_CELADONMARTROOF_VENDING_MACHINE2 dw_const CeladonMartRoofVendingMachineText, TEXT_CELADONMARTROOF_VENDING_MACHINE3pokered: disassembly of Pokémon Red and Blue · scripts/CeladonMartRoof.asm#L252-L253CeladonMartRoofVendingMachineText: script_vending_machinepokered: disassembly of Pokémon Red and Blue · home/text_script.asm#L68-L83; check first byte of text for special cases … dict2 TX_SCRIPT_VENDING_MACHINE, farcall VendingMachineMenupokered: disassembly of Pokémon Red and Blue · engine/events/vending_machine.asm#L36-L72ld a, [wCurrentMenuItem] cp 3 ; chose Cancel? jr z, .notThirsty xor a ldh [hMoney], a ldh [hMoney + 2], a ld a, $2 ldh [hMoney + 1], a call HasEnoughMoney jr nc, .enoughMoney ld hl, VendingMachineText4 jp PrintText …pokered: disassembly of Pokémon Red and Blue · engine/events/vending_machine.asm#L87-L90DrinkText: db "FRESH WATER" next "SODA POP" next "LEMONADE"pokered: disassembly of Pokémon Red and Blue · engine/events/vending_machine.asm#L114-L130 LoadVendingMachineItem: ld hl, VendingPrices ld a, [wCurrentMenuItem] add a add a ld d, 0 ld e, a add hl, de ld a, [hli] ldh [hVendingMachineItem], a ld a, [hli] …pokered: disassembly of Pokémon Red and Blue · home/money.asm#L1-L7HasEnoughMoney:: ; Check if the player has at least as much ; money as the 3-byte BCD value at hMoney. ld de, wPlayerMoney ld hl, hMoney ld c, 3 jp StringCmppokered: disassembly of Pokémon Red and Blue · engine/math/bcd.asm#L196-L218SubBCD:: and a ld b, c .sub ld a, [de] sbc [hl] daa ld [de], a dec de dec hl dec c jr nz, .sub …Checked by claude, 2026-10-28 — read the vending list whole at the pin, the roof's three machine tiles and their text, and the vending routine from the menu through the money check, the drink lookup, the gift of 1 drink, and the subtraction, with the money comparison and the decimal subtraction it callsRevised after a check by a second AI model, 2026-10-28.

Besides the marts, the Poké Balls on maps, the hidden items, the prize counters, and the vending machines, 45 gifts put an item in the bag or the PC: 20 TMs, all 5 HMs, and 20 other items. The only balls among them are the 5 POKé BALLs Prof. Oak gives and the MASTER BALL from the president of Silph Co. on 11F. Each gift is a script whose condition is in its row: the three from Prof. Oak's aides count the species owned against 10, 30, or 50, and a new game starts with a POTION in the PC. pokered-items/gifts

Value
{
 "place": [
  "Red's house 2F (the PC)",
  "Oak's Lab",
  "Route 1",
  "Viridian Mart",
  "Blue's house",
  "Viridian City",
  "Route 2 gate",
  "Route 11 gate 2F",
  "Route 15 gate 2F",
  "Pewter Gym",
  "Mt. Moon B2F",
  "Mt. Moon B2F",
  "Museum 1F",
  "Cerulean Gym",
  "Cerulean City",
  "Route 24",
  "Bill's house",
  "Vermilion Gym",
  "S.S. Anne captain's room",
  "Pokémon Fan Club",
  "Bike Shop",
  "Vermilion Old Rod house",
  "Celadon City",
  "Celadon Diner",
  "Celadon Dept. Store 3F",
  "Celadon Dept. Store roof",
  "Celadon Dept. Store roof",
  "Celadon Dept. Store roof",
  "Celadon Gym",
  "Mr. Fuji's house",
  "Route 12 gate 2F",
  "Route 12 Super Rod house",
  "Route 16 Fly house",
  "Fuchsia Good Rod house",
  "Fuchsia Gym",
  "Safari Zone secret house",
  "Warden's house",
  "Mr. Psychic's house",
  "Silph Co. 2F",
  "Silph Co. 11F",
  "Saffron Gym",
  "Copycat's house 2F",
  "Cinnabar Lab",
  "Cinnabar Gym",
  "Viridian Gym"
 ],
 "giver": [
  "new game",
  "Prof. Oak",
  "a youngster",
  "the clerk",
  "Daisy",
  "a fisher",
  "Prof. Oak's aide",
  "Prof. Oak's aide",
  "Prof. Oak's aide",
  "Brock",
  "a fossil on the floor",
  "a fossil on the floor",
  "a scientist",
  "Misty",
  "a Rocket",
  "a cooltrainer",
  "Bill",
  "Lt. Surge",
  "the captain",
  "the chairman",
  "the clerk",
  "a fishing guru",
  "an old man",
  "a man in the diner",
  "a clerk",
  "a little girl",
  "a little girl",
  "a little girl",
  "Erika",
  "Mr. Fuji",
  "a girl",
  "a fishing guru",
  "a girl",
  "a fishing guru",
  "Koga",
  "a fishing guru",
  "the Warden",
  "Mr. Psychic",
  "a Silph worker",
  "the president",
  "Sabrina",
  "Copycat",
  "a scientist",
  "Blaine",
  "Giovanni"
 ],
 "item": [
  "POTION",
  "POKé BALL",
  "POTION",
  "OAK's PARCEL",
  "TOWN MAP",
  "TM42",
  "HM05",
  "ITEMFINDER",
  "EXP.ALL",
  "TM34",
  "DOME FOSSIL",
  "HELIX FOSSIL",
  "OLD AMBER",
  "TM11",
  "TM28",
  "NUGGET",
  "S.S.TICKET",
  "TM24",
  "HM01",
  "BIKE VOUCHER",
  "BICYCLE",
  "OLD ROD",
  "TM41",
  "COIN CASE",
  "TM18",
  "TM13",
  "TM48",
  "TM49",
  "TM21",
  "POKé FLUTE",
  "TM39",
  "SUPER ROD",
  "HM02",
  "GOOD ROD",
  "TM06",
  "HM03",
  "HM04",
  "TM29",
  "TM36",
  "MASTER BALL",
  "TM46",
  "TM31",
  "TM35",
  "TM38",
  "TM27"
 ],
 "quantity": [
  1,
  5,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1,
  1
 ],
 "when": [
  "a new game starts with it in the PC",
  "once, after the first rival battle on Route 22, if the bag holds no POKé BALL and the player owns fewer than 2 species or has no Pokédex",
  "once",
  "once",
  "once the player has the Pokédex",
  "once",
  "once, with at least 10 species owned",
  "once, with at least 30 species owned",
  "once, with at least 50 species owned",
  "after beating him",
  "one fossil or the other: once one is taken, the other is hidden",
  "one fossil or the other: once one is taken, the other is hidden",
  "once",
  "after beating her",
  "after beating him",
  "once",
  "once",
  "after beating him",
  "once",
  "once, with no BICYCLE or BIKE VOUCHER in the bag, if the player agrees to hear his story",
  "once, for the BIKE VOUCHER, which it takes",
  "once, if the player says yes",
  "once",
  "once",
  "once",
  "once, for a FRESH WATER",
  "once, for a SODA POP",
  "once, for a LEMONADE",
  "after beating her",
  "once",
  "once",
  "once, if the player says yes",
  "once",
  "once, if the player says yes",
  "after beating him",
  "once",
  "for the GOLD TEETH",
  "once",
  "once",
  "once",
  "after beating her",
  "once, with a POKé DOLL in the bag",
  "once",
  "after beating him",
  "after beating him"
 ]
}
Codepokered: disassembly of Pokémon Red and Blue · home/give.asm#L1-L16GiveItem:: ; Give player quantity c of item b, ; and copy the item's name to wStringBuffer. ; Return carry on success. ld a, b ld [wNamedObjectIndex], a ld [wCurItem], a ld a, c ld [wItemQuantity], a ld hl, wNumBagItems call AddItemToInventory ret nc …pokered: disassembly of Pokémon Red and Blue · engine/movie/oak_speech/oak_speech.asm#L42OakSpeech:pokered: disassembly of Pokémon Red and Blue · engine/movie/oak_speech/oak_speech.asm#L53-L58ld hl, wNumBoxItems ld a, POTION ld [wCurItem], a ld a, 1 ld [wItemQuantity], a call AddItemToInventorypokered: disassembly of Pokémon Red and Blue · scripts/OaksLab.asm#L965-L976OaksLabOak1Text: text_asm CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS jr nz, .already_got_poke_balls ld hl, wPokedexOwned ld b, wPokedexOwnedEnd - wPokedexOwned call CountSetBits ld a, [wNumSetBits] cp 2 jr c, .check_for_poke_balls CheckEvent EVENT_GOT_POKEDEX jr z, .check_for_poke_ballspokered: disassembly of Pokémon Red and Blue · scripts/OaksLab.asm#L984-L989.check_for_poke_balls ld b, POKE_BALL call IsItemInBag jr nz, .come_see_me_sometimes CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE jr nz, .give_poke_ballspokered: disassembly of Pokémon Red and Blue · scripts/OaksLab.asm#L1022-L1026.give_poke_balls CheckAndSetEvent EVENT_GOT_POKEBALLS_FROM_OAK jr nz, .come_see_me_sometimes lb bc, POKE_BALL, 5 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/Route1.asm#L14-L17ld hl, .MartSampleText call PrintText lb bc, POTION, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/ViridianMart.asm#L48-L60ViridianMartOaksParcelScript: ld a, [wSimulatedJoypadStatesIndex] and a ret nz call Delay3 ld a, TEXT_VIRIDIANMART_CLERK_PARCEL_QUEST ldh [hTextID], a call DisplayTextID lb bc, OAKS_PARCEL, 1 call GiveItem SetEvent EVENT_GOT_OAKS_PARCEL ld a, SCRIPT_VIRIDIANMART_NOOP …pokered: disassembly of Pokémon Red and Blue · scripts/BluesHouse.asm#L27-L41BluesHouseDaisySittingText: text_asm CheckEvent EVENT_GOT_TOWN_MAP jr nz, .got_town_map CheckEvent EVENT_GOT_POKEDEX jr nz, .give_town_map ld hl, BluesHouseDaisyRivalAtLabText call PrintText jr .done .give_town_map ld hl, BluesHouseDaisyOfferMapText …pokered: disassembly of Pokémon Red and Blue · scripts/ViridianCity.asm#L235-L241text_asm CheckEvent EVENT_GOT_TM42 jr nz, .got_item ld hl, .YouCanHaveThisText call PrintText lb bc, TM_DREAM_EATER, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/Route2Gate.asm#L9-L16Route2GateOaksAideText: text_asm CheckEvent EVENT_GOT_HM05 jr nz, .got_item ld a, 10 ldh [hOaksAideRequirement], a ld a, HM_FLASH ldh [hOaksAideRewardItem], apokered: disassembly of Pokémon Red and Blue · engine/events/oaks_aide.asm#L1-L24OaksAideScript: ld hl, OaksAideHiText call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a jr nz, .choseNo ld hl, wPokedexOwned ld b, wPokedexOwnedEnd - wPokedexOwned call CountSetBits ld a, [wNumSetBits] ldh [hOaksAideNumMonsOwned], a …pokered: disassembly of Pokémon Red and Blue · scripts/Route11Gate2F.asm#L19-L26Route11Gate2FOaksAideText: text_asm CheckEvent EVENT_GOT_ITEMFINDER, 1 jr c, .got_item ld a, 30 ldh [hOaksAideRequirement], a ld a, ITEMFINDER ldh [hOaksAideRewardItem], apokered: disassembly of Pokémon Red and Blue · scripts/Route15Gate2F.asm#L9-L16Route15Gate2FOaksAideText: text_asm CheckEvent EVENT_GOT_EXP_ALL jr nz, .got_item ld a, 50 ldh [hOaksAideRequirement], a ld a, EXP_ALL ldh [hOaksAideRewardItem], apokered: disassembly of Pokémon Red and Blue · scripts/PewterGym.asm#L45-L52; fallthrough PewterGymScriptReceiveTM34: ld a, TEXT_PEWTERGYM_BROCK_WAIT_TAKE_THIS ldh [hTextID], a call DisplayTextID SetEvent EVENT_BEAT_BROCK lb bc, TM_BIDE, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/MtMoonB2F.asm#L239-L250MtMoonB2FDomeFossilText: text_asm ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld hl, .YouWantText call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a jr nz, .done lb bc, DOME_FOSSIL, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/MtMoonB2F.asm#L142-L150CheckEvent EVENT_GOT_DOME_FOSSIL jr z, .got_dome_fossil ld a, TOGGLE_MT_MOON_B2F_FOSSIL_2 jr .continue .got_dome_fossil ld a, TOGGLE_MT_MOON_B2F_FOSSIL_1 .continue ld [wToggleableObjectIndex], a predef HideObjectpokered: disassembly of Pokémon Red and Blue · scripts/MtMoonB2F.asm#L267-L278MtMoonB2FHelixFossilText: text_asm ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld hl, .YouWantText call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a jr nz, .done lb bc, HELIX_FOSSIL, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/Museum1F.asm#L191-L197text_asm CheckEvent EVENT_GOT_OLD_AMBER jr nz, .got_item ld hl, .TakeThisToAPokemonLabText call PrintText lb bc, OLD_AMBER, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/CeruleanGym.asm#L45-L52 CeruleanGymReceiveTM11: ld a, TEXT_CERULEANGYM_MISTY_CASCADE_BADGE_INFO ldh [hTextID], a call DisplayTextID SetEvent EVENT_BEAT_MISTY lb bc, TM_BUBBLEBEAM, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/CeruleanCity.asm#L305-L309.beatRocketThief ld hl, .IllReturnTheTMText call PrintText lb bc, TM_DIG, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/Route24.asm#L107-L115Route24CooltrainerM1Text: text_asm ResetEvent EVENT_NUGGET_REWARD_AVAILABLE CheckEvent EVENT_GOT_NUGGET jr nz, .got_item ld hl, .YouBeatOurContestText call PrintText lb bc, NUGGET, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/BillsHouse.asm#L163-L169text_asm CheckEvent EVENT_GOT_SS_TICKET jr nz, .got_ss_ticket ld hl, .ThankYouText call PrintText lb bc, S_S_TICKET, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/VermilionGym.asm#L64-L71 VermilionGymLTSurgeReceiveTM24Script: ld a, TEXT_VERMILIONGYM_LT_SURGE_THUNDER_BADGE_INFO ldh [hTextID], a call DisplayTextID SetEvent EVENT_BEAT_LT_SURGE lb bc, TM_THUNDERBOLT, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/SSAnneCaptainsRoom.asm#L18-L27SSAnneCaptainsRoomCaptainText: text_asm CheckEvent EVENT_GOT_HM01 jr nz, .got_item ld hl, SSAnneCaptainsRoomRubCaptainsBackText call PrintText ld hl, SSAnneCaptainsRoomCaptainIFeelMuchBetterText call PrintText lb bc, HM_CUT, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/PokemonFanClub.asm#L4-L12PokemonFanClub_CheckBikeInBag: ; check if any bike paraphernalia in bag CheckEvent EVENT_GOT_BIKE_VOUCHER ret nz ld b, BICYCLE call IsItemInBag ret nz ld b, BIKE_VOUCHER jp IsItemInBagpokered: disassembly of Pokémon Red and Blue · scripts/PokemonFanClub.asm#L98-L113text_asm call PokemonFanClub_CheckBikeInBag jr nz, .nothingleft ld hl, .IntroText call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a jr nz, .nothanks ; tell the story …pokered: disassembly of Pokémon Red and Blue · scripts/BikeShop.asm#L10-L29BikeShopClerkText: text_asm CheckEvent EVENT_GOT_BICYCLE jr z, .dontHaveBike ld hl, BikeShopClerkHowDoYouLikeYourBicycleText call PrintText jp .Done .dontHaveBike ld b, BIKE_VOUCHER call IsItemInBag jr z, .dontHaveVoucher ld hl, BikeShopClerkOhThatsAVoucherText …pokered: disassembly of Pokémon Red and Blue · scripts/VermilionOldRodHouse.asm#L10-L20ld a, [wStatusFlags1] bit BIT_GOT_OLD_ROD, a jr nz, .got_old_rod ld hl, .DoYouLikeToFishText call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a jr nz, .refused lb bc, OLD_ROD, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/CeladonCity.asm#L45-L51text_asm CheckEvent EVENT_GOT_TM41 jr nz, .gotTM41 ld hl, .Text call PrintText lb bc, TM_SOFTBOILED, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/CeladonDiner.asm#L30-L36text_asm CheckEvent EVENT_GOT_COIN_CASE jr nz, .got_item ld hl, .ImFlatOutBustedText call PrintText lb bc, COIN_CASE, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/CeladonMart3F.asm#L25-L31text_asm CheckEvent EVENT_GOT_TM18 jr nz, .got_item ld hl, .TM18PreReceiveText call PrintText lb bc, TM_COUNTER, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/CeladonMartRoof.asm#L84-L85cp FRESH_WATER jr z, .gaveFreshWaterpokered: disassembly of Pokémon Red and Blue · scripts/CeladonMartRoof.asm#L114-L121.gaveFreshWater CheckEvent EVENT_GOT_TM13 jr nz, .alreadyGaveDrink ld hl, CeladonMartRoofLittleGirlYayFreshWaterText call PrintText call RemoveItemByIDBank12 lb bc, TM_ICE_BEAM, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/CeladonMartRoof.asm#L86-L87cp SODA_POP jr z, .gaveSodaPoppokered: disassembly of Pokémon Red and Blue · scripts/CeladonMartRoof.asm#L101-L108.gaveSodaPop CheckEvent EVENT_GOT_TM48 jr nz, .alreadyGaveDrink ld hl, CeladonMartRoofLittleGirlYaySodaPopText call PrintText call RemoveItemByIDBank12 lb bc, TM_ROCK_SLIDE, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/CeladonMartRoof.asm#L88-L95; gave Lemonade CheckEvent EVENT_GOT_TM49 jr nz, .alreadyGaveDrink ld hl, CeladonMartRoofLittleGirlYayLemonadeText call PrintText call RemoveItemByIDBank12 lb bc, TM_TRI_ATTACK, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/CeladonGym.asm#L45-L52 CeladonGymReceiveTM21: ld a, TEXT_CELADONGYM_RAINBOWBADGE_INFO ldh [hTextID], a call DisplayTextID SetEvent EVENT_BEAT_ERIKA lb bc, TM_MEGA_DRAIN, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/MrFujisHouse.asm#L71-L77text_asm CheckEvent EVENT_GOT_POKE_FLUTE jr nz, .got_item ld hl, .IThinkThisMayHelpYourQuestText call PrintText lb bc, POKE_FLUTE, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/Route12Gate2F.asm#L11-L17text_asm CheckEvent EVENT_GOT_TM39, 1 jr c, .got_item ld hl, .YouCanHaveThisText call PrintText lb bc, TM_SWIFT, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/Route12SuperRodHouse.asm#L10-L20ld a, [wStatusFlags1] bit BIT_GOT_SUPER_ROD, a jr nz, .got_item ld hl, .DoYouLikeToFishText call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a jr nz, .refused lb bc, SUPER_ROD, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/Route16FlyHouse.asm#L10-L17text_asm CheckEvent EVENT_GOT_HM02 ld hl, .HM02ExplanationText jr nz, .got_item ld hl, .Text call PrintText lb bc, HM_FLY, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/FuchsiaGoodRodHouse.asm#L10-L20ld a, [wStatusFlags1] bit BIT_GOT_GOOD_ROD, a jr nz, .got_item ld hl, .Text call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a jr nz, .refused lb bc, GOOD_ROD, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/FuchsiaGym.asm#L47-L54; fallthrough FuchsiaGymReceiveTM06: ld a, TEXT_FUCHSIAGYM_KOGA_SOUL_BADGE_INFO ldh [hTextID], a call DisplayTextID SetEvent EVENT_BEAT_KOGA lb bc, TM_TOXIC, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/SafariZoneSecretHouse.asm#L9-L15text_asm CheckEvent EVENT_GOT_HM03 jr nz, .got_item ld hl, .YouHaveWonText call PrintText lb bc, HM_SURF, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/WardensHouse.asm#L32-L43.have_gold_teeth ld hl, .GaveTheGoldTeethText call PrintText ld a, GOLD_TEETH ldh [hItemToRemoveID], a farcall RemoveItemByID SetEvent EVENT_GAVE_GOLD_TEETH .gave_gold_teeth ld hl, .ThanksText call PrintText lb bc, HM_STRENGTH, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/MrPsychicsHouse.asm#L9-L15text_asm CheckEvent EVENT_GOT_TM29 jr nz, .got_item ld hl, .YouWantedThisText call PrintText lb bc, TM_PSYCHIC_M, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/SilphCo2F.asm#L116-L122text_asm CheckEvent EVENT_GOT_TM36 jr nz, .already_have_tm ld hl, .PleaseTakeThisText call PrintText lb bc, TM_SELFDESTRUCT, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/SilphCo11F.asm#L293-L304SilphCo11FSilphPresidentText: text_asm CheckEvent EVENT_GOT_MASTER_BALL jp nz, .got_item ld hl, .Text call PrintText lb bc, MASTER_BALL, 1 call GiveItem jr nc, .bag_full ld hl, .ReceivedMasterBallText call PrintText SetEvent EVENT_GOT_MASTER_BALLpokered: disassembly of Pokémon Red and Blue · scripts/SaffronGym.asm#L45-L52 SaffronGymSabrinaReceiveTM46Script: ld a, TEXT_SAFFRONGYM_SABRINA_MARSH_BADGE_INFO ldh [hTextID], a call DisplayTextID SetEvent EVENT_BEAT_SABRINA lb bc, TM_PSYWAVE, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/CopycatsHouse2F.asm#L14-L28CopycatsHouse2FCopycatText: text_asm CheckEvent EVENT_GOT_TM31 jr nz, .got_item ld a, TRUE ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld hl, .DoYouLikePokemonText call PrintText ld b, POKE_DOLL call IsItemInBag jr z, .done ld hl, .TM31PreReceiveText …pokered: disassembly of Pokémon Red and Blue · scripts/CinnabarLabMetronomeRoom.asm#L13-L19text_asm CheckEvent EVENT_GOT_TM35 jr nz, .got_item ld hl, .Text call PrintText lb bc, TM_METRONOME, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/CinnabarGym.asm#L145-L152; fallthrough CinnabarGymReceiveTM38: ld a, TEXT_CINNABARGYM_BLAINE_VOLCANO_BADGE_INFO ldh [hTextID], a call DisplayTextID SetEvent EVENT_BEAT_BLAINE lb bc, TM_FIRE_BLAST, 1 call GiveItempokered: disassembly of Pokémon Red and Blue · scripts/ViridianGym.asm#L137-L144; fallthrough ViridianGymReceiveTM27: ld a, TEXT_VIRIDIANGYM_GIOVANNI_EARTH_BADGE_INFO ldh [hTextID], a call DisplayTextID SetEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI lb bc, TM_FISSURE, 1 call GiveItemA POKé BALL costs ¥200, a GREAT BALL ¥600, and an ULTRA BALL ¥1,200, and the NUGGET is the most expensive item at ¥10,000. A mart charges each of the 83 items a price from one table of 3-byte decimal prices, and each of the 50 TMs a price from a second table that keeps one digit per TM, in thousands (¥1,000 to ¥5,000). A purchase costs the price times the quantity, up to 99 at a time, and a sale pays half of that. Key items and HMs can't be sold, and an HM has no price of its own. Eight items that aren't key items have a price of 0, so they sell for nothing: the MASTER BALL, MOON STONE, EXP.ALL, PP UP, ETHER, MAX ETHER, ELIXER, and MAX ELIXER. The first table goes on past the items with 14 elevator floors, each priced 0. Code — the TM and HM numbersChecked by claude, 2026-10-28 — found every gift by searching every .asm file at the pin for GiveItem (the routine that puts an item in the bag) and AddItemToInventory (the routine every addition to the bag or the PC goes through): 41 calls of GiveItem in scripts/, each a row here (a script fails if any call lies outside a row's lines), and in engine/ the calls of the pick-up, hidden-item, prize, and vending routines (their own tables), of Oak's aide (three rows here, whose item each gate's script sets), and of AddItemToInventory in the mart, the PC's withdraw and deposit, a new game's PC POTION (a row here), and the debug build's new-game items, which only the debug build assembles; no other routine adds an itemRevised after a check by a second AI model, 2026-10-28.

The when column gives each script's condition as its lines read; a gym leader's TM comes in the script that runs after the player beats the leader. Pokémon given as gifts aren't items and aren't listed.

POKé BALLs sell in Viridian City (once Oak's Parcel is delivered), Pewter City, Cerulean City, and Vermilion City; GREAT BALLs in Lavender Town, the Celadon Dept. Store (2F, left clerk), Fuchsia City, Cinnabar Island, Saffron City, and Indigo Plateau; and ULTRA BALLs in Fuchsia City, Cinnabar Island, and Indigo Plateau. No mart sells a MASTER BALL or a SAFARI BALL. pokered-items/ball-marts

Value
{
 "ball": [
  "POKé BALL",
  "GREAT BALL",
  "ULTRA BALL",
  "MASTER BALL",
  "SAFARI BALL"
 ],
 "marts": [
  "Viridian City, Pewter City, Cerulean City, Vermilion City",
  "Lavender Town, Celadon Dept. Store 2F, Fuchsia City, Cinnabar Island, Saffron City, Indigo Plateau",
  "Fuchsia City, Cinnabar Island, Indigo Plateau",
  "",
  ""
 ]
}
CodeRed and Blue have 14 mart clerks: one each in Viridian City, Pewter City, Cerulean City, Vermilion City, Lavender Town, Fuchsia City, Cinnabar Island, Saffron City, and Indigo Plateau, and five in the Celadon Dept. Store, two on 2F, one on 4F, and two on 5F, 94 listings in all. A clerk's list runs from 4 items (Viridian City's) to 9. Viridian City's clerk sells only once Oak's Parcel has been delivered. A clerk's text starts with the mart marker, then the number of items, the items, and $FF; the game copies that list into the buy menu, which prices each item from the price table. Two more lists in the same file, a BICYCLE alone and GREAT BALL, HYPER POTION, SUPER POTION, FULL HEAL, and REVIVE, belong to no map's text. Codepokered: disassembly of Pokémon Red and Blue · data/items/marts.asm#L4-L50ViridianMartClerkText:: script_mart POKE_BALL, ANTIDOTE, PARLYZ_HEAL, BURN_HEAL … PewterMartClerkText:: script_mart POKE_BALL, POTION, ESCAPE_ROPE, ANTIDOTE, BURN_HEAL, AWAKENING, PARLYZ_HEAL … CeruleanMartClerkText:: script_mart POKE_BALL, POTION, REPEL, ANTIDOTE, BURN_HEAL, AWAKENING, PARLYZ_HEAL … VermilionMartClerkText:: script_mart POKE_BALL, SUPER_POTION, ICE_HEAL, AWAKENING, PARLYZ_HEAL, REPEL … …Checked by claude, 2026-10-28 — read from the mart lists; the quoted lines are every list that names a ball, with its clerk's label, and the unused list with a GREAT BALL belongs to no map (pokered-items/marts)Checked by a second AI model, 2026-10-28.

The president of Silph Co. on 11F is the only source of a MASTER BALL: he gives one, once. No mart sells one, no Poké Ball on a map or hidden item holds one, the prize counters and the vending machines offer none, and no other script gives one. In the disassembly's debug build of Blue, a separate ROM, the debug menu's DEBUG choice starts a new game with 99. pokered-items/master-ball-sources

CodeRed and Blue have 14 mart clerks: one each in Viridian City, Pewter City, Cerulean City, Vermilion City, Lavender Town, Fuchsia City, Cinnabar Island, Saffron City, and Indigo Plateau, and five in the Celadon Dept. Store, two on 2F, one on 4F, and two on 5F, 94 listings in all. A clerk's list runs from 4 items (Viridian City's) to 9. Viridian City's clerk sells only once Oak's Parcel has been delivered. A clerk's text starts with the mart marker, then the number of items, the items, and $FF; the game copies that list into the buy menu, which prices each item from the price table. Two more lists in the same file, a BICYCLE alone and GREAT BALL, HYPER POTION, SUPER POTION, FULL HEAL, and REVIVE, belong to no map's text. CodePoké Balls lying on 44 maps hold 104 items, one each, which the player takes by talking to the ball: 27 hold TMs, 9 a RARE CANDY, 2 an ULTRA BALL, and 1 a POKé BALL (in Viridian Forest), and none a GREAT BALL or a MASTER BALL. All but two lie there from the start: Rocket Hideout B4F's SILPH SCOPE appears once Giovanni is beaten there, and its LIFT KEY once a Rocket is beaten and talked to again. A ball is a map object marked as an item, with the item's number, and its text is the pick-up routine. That routine gives 1 of the item and hides the ball, only if the ball is one of the map's objects that can be hidden, as every one of the 104 is; with a full bag it says so and the ball stays. CodeRed and Blue hide 54 items on 39 maps, each found once: among them 4 ULTRA BALLs and 2 GREAT BALLs, and no POKé BALL or MASTER BALL. Two stand apart: a NUGGET in the Safari Zone Gate, which a disassembly comment marks inaccessible, and a MAX ELIXER on map $6F, which the disassembly names unused and whose header entry is Lance's room's. Each hidden item is an entry in its map's hidden-event list that calls the hidden-item routine with the item's number; the routine finds the tile's place in a second list of hidden-item tiles, gives 1 of the item unless that place's found flag is set, and then sets it. With a full bag it says so and the item stays. CodeThe Game Corner prize room trades coins at three counters, and no prize is a ball or any item but a TM. The right counter offers TM23, TM15, and TM50 for 3,300, 5,500, and 7,700 coins in both versions. The left and middle counters offer Pokémon, which differ by version: in Red, ABRA (level 9) for 180 coins, CLEFAIRY (8) for 500, NIDORINA (17) for 1,200, DRATINI (18) for 2,800, SCYTHER (25) for 5,500, and PORYGON (26) for 9,999; in Blue, ABRA (6) for 120, CLEFAIRY (12) for 750, NIDORINO (17) for 1,200, PINSIR (20) for 2,500, DRATINI (24) for 4,600, and PORYGON (18) for 6,500. A TM goes in the bag; a Pokémon is given at the level its version's list sets. CodeThree vending machines on the Celadon Dept. Store roof sell FRESH WATER for ¥200, SODA POP for ¥300, and LEMONADE for ¥350, one at a time. They check only that the player has ¥200, whatever the drink: a player with less than a drink's price still gets it, and is left with ¥0 (computed from the subtraction, which sets money that would go below zero to zero). A drink comes from its own price list, not the mart price table. CodeBesides the marts, the Poké Balls on maps, the hidden items, the prize counters, and the vending machines, 45 gifts put an item in the bag or the PC: 20 TMs, all 5 HMs, and 20 other items. The only balls among them are the 5 POKé BALLs Prof. Oak gives and the MASTER BALL from the president of Silph Co. on 11F. Each gift is a script whose condition is in its row: the three from Prof. Oak's aides count the species owned against 10, 30, or 50, and a new game starts with a POTION in the PC. Codepokered: disassembly of Pokémon Red and Blue · scripts/SilphCo11F.asm#L293-L304SilphCo11FSilphPresidentText: text_asm CheckEvent EVENT_GOT_MASTER_BALL jp nz, .got_item ld hl, .Text call PrintText lb bc, MASTER_BALL, 1 call GiveItem jr nc, .bag_full ld hl, .ReceivedMasterBallText call PrintText SetEvent EVENT_GOT_MASTER_BALLpokered: disassembly of Pokémon Red and Blue · engine/debug/debug_party.asm#L34-L160PrepareNewGameDebug: ; dummy except in _DEBUG IF DEF(_DEBUG) … call SetDebugNewGameParty … ; Get some debug items. ld hl, wNumBagItems ld de, DebugNewGameItemsList .items_loop ld a, [de] cp -1 jr z, .items_end …pokered: disassembly of Pokémon Red and Blue · engine/debug/debug_menu.asm#L1-L70DebugMenu: IF DEF(_DEBUG) … ; DEBUG ld hl, wStatusFlags6 set BIT_DEBUG_MODE, [hl] jp StartNewGameDebug … DebugMenuOptions: db "FIGHT" next "DEBUG@"pokered: disassembly of Pokémon Red and Blue · engine/overworld/special_warps.asm#L10-L13.debugNewGameWarp bit BIT_DEBUG_MODE, [hl] jr z, .setNewGameMatWarp ; apply to StartNewGameDebug only call PrepareNewGameDebugpokered: disassembly of Pokémon Red and Blue · Makefile#L109-L111$(pokered_obj): RGBASMFLAGS += -D _RED $(pokeblue_obj): RGBASMFLAGS += -D _BLUE $(pokeblue_debug_obj): RGBASMFLAGS += -D _BLUE -D _DEBUGChecked by claude, 2026-10-28 — read the president's script at the pin, the debug new-game list and the loop that adds it, and the debug menu's DEBUG choice, which alone sets the debug flag that the new-game warp tests before it calls the debug setup, and searched every .asm file for MASTER_BALL: the item constant, its price, key-item flag, and item-use entries, the president's script, and the debug list; each table that hands out items is read whole in the claims cited hereRevised after a check by a second AI model, 2026-10-28.

Glitches that copy items are outside this claim, which covers what the code gives in ordinary play.

Cited by: Capture