data/claims/pokered-items.yamlPoké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
]
}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
]
}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"
]
}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.
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,
"",
"",
""
]
}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
]
}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"
]
}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",
"",
""
]
}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
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