Files
pokemon-namegen/README.md
T

2.9 KiB
Raw Blame History

Old Man Glitch Decoder

A single-file, dependency-free recreation of Old Man Name Generator 2, a Pokémon Red/Blue/Yellow tool originally hosted on Glitch City Laboratories and long since offline (recovered from an Internet Archive Wayback Machine capture). Type a 7-character trainer name and see what the in-game "Old Man glitch" would actually encounter with it.

What it does

In Gen 1, walking away from the Old Man in Viridian City right after he "shows you how to catch a Pokémon" can trigger a glitch encounter built from raw bytes of your trainer's name:

  • Positions 3, 5, and 7 of the name are each read as a Pokémon species byte.
  • Positions 2, 4, and 6 are each read as that encounter's level byte.
  • Position 1 is never read — it has no effect on the outcome.

The species comes from Gen 1's internal character/index table: every nameable character (AZ, az, digits, and a handful of symbols) has a raw byte value from 128255, and that same byte doubles as a species ID. The "level" isn't computed at all — it's printed as the identical raw byte value, which is why these encounters always show absurd levels (128255) instead of the normal 1100.

Usage

Open index.html directly in a browser. There's no build step, no server, and no external requests — the page is fully self-contained.

Files

Path Purpose
index.html The app. CSS and JS are inlined directly into the page (see Inlining below), so this one file is all you need to run or share it.
app.css / app.js Human-readable, unminified source of the styles/script that are inlined into index.html. Edit these, then re-minify and re-inline into index.html when publishing a change.
data/charmap.json The full character → Gen 1 byte value → species lookup table, generated from the source spreadsheet. Source of truth for app.js's inlined data.
data/charmap.min.json Minified copy of the same table.
csp-hash.py Prints the sha256-... CSP tokens for index.html's inline <style>/<script> blocks, for a host that locks down Content-Security-Policy to hashes instead of 'unsafe-inline'. Re-run after re-inlining.
CHANGELOG.md Release history.
LICENSE GPLv3.

Why inlined?

index.html bundles its CSS and JS inline rather than loading app.css and app.js as separate requests. For a page this small, that trades per-file browser caching for fewer round trips — worth it on a slow connection for a single-visit tool like this one, at the cost of editing convenience (hence keeping the unminified sources alongside it).

Data source / credits

  • Character-to-species mapping derived from the internal Gen 1 index table (Decimal / R/B/Y Pokémon / R/B/Y Letter columns).
  • Logic reverse-engineered from the archived "Old Man Name Generator 2" page, originally by Abwayax and the Glitch City Laboratories team.

License

GPLv3 — see LICENSE.