fix(yellow): address version:yellow issues and title pupil bake

Seed Mt Moon Super Nerd dialogue (#1743), play item-use heal jingles
(#1635), use white fades for fly/teleport warps (#1644), add a
Yellow-only Advanced palette overlay (#1639), parse Yellow Super Rod
data including Safari Dragonair (#1074), and apply title rOBP0 when
baking Pikachu eye OAM so pupils stay black with white glints.
This commit is contained in:
1jamie
2026-08-25 11:29:59 -05:00
parent bbe0f0d9ae
commit 69c7ee89b5
24 changed files with 1154 additions and 299 deletions
+37
View File
@@ -86,6 +86,43 @@ def parse_super_rod(pokered):
return out
def parse_super_rod_yellow(pokeyellow):
"""pokeyellow data/wild/super_rod.asm: inline species,level rows.
Yellow stores four (species, level) pairs per map on one `db` line
(`db MAP, SPECIES, LEVEL, SPECIES, LEVEL, ...`), unlike Red's
`dbw MAP, .Group` + `db level, species` groups. Slot order is kept
so Super Rod weighted rolls and DexNav lists stay faithful (#1074).
"""
out = {}
path = os.path.join(pokeyellow, "data/wild/super_rod.asm")
for lineno, line in read_asm(path):
s = line.strip()
if not s.startswith("db ") or s == "db -1" or s.startswith("db -1 ;"):
continue
# db MAP, SPECIES, LEVEL, SPECIES, LEVEL, SPECIES, LEVEL, SPECIES, LEVEL
parts = [p.strip() for p in s[3:].split(",")]
if len(parts) < 3 or not re.match(r"^[A-Z][A-Z0-9_]*$", parts[0]):
continue
map_id = parts[0]
slots = []
rest = parts[1:]
i = 0
while i + 1 < len(rest):
species, level = rest[i], rest[i + 1]
if not re.match(r"^[A-Z][A-Z0-9_]*$", species):
break
try:
level_n = int(level)
except ValueError:
break
slots.append({"level": level_n, "species": species})
i += 2
if slots:
out[map_id] = slots
return out
def parse_trades(pokered):
"""data/events/trades.asm: npctrade give, get, dialogset, nickname."""
# TRADE_DIALOGSET_* order (constants/script_constants.asm) indexes