71 lines
11 KiB
HTML
71 lines
11 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en-US">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
|
||
<!-- Set the base URL for all relative URLs within the document -->
|
||
<!-- <base href="https://example.com/"> -->
|
||
|
||
<meta name="robots" content="index,follow">
|
||
<meta name="googlebot" content="index,follow">
|
||
|
||
<meta name="format-detection" content="telephone=no">
|
||
<meta http-equiv="x-dns-prefetch-control" content="off">
|
||
|
||
<meta name="google" content="notranslate">
|
||
<meta name="google" content="nositelinkssearchbox">
|
||
|
||
<meta name="rating" content="General">
|
||
|
||
<!-- <meta name="url" content="https://example.com/"> -->
|
||
<meta name="subject" content="your website's subject">
|
||
<meta name="description" content="A description of the page">
|
||
|
||
<title>Old Man Glitch Decoder — Pokémon Red/Blue/Yellow</title>
|
||
|
||
<!-- analytics -->
|
||
<!-- -->
|
||
|
||
<!-- Favicon -->
|
||
<!-- <link href="/favicon.ico" rel="icon" sizes="16x16" type="image/icon"> -->
|
||
<!-- <link href="/favicon.svg" rel="icon" type="image/svg+xml"> -->
|
||
<!-- <link href="/favicon.png" rel="icon" sizes="192x192"> -->
|
||
|
||
<!-- CSS -->
|
||
<style media="screen">
|
||
:root{color-scheme:light dark;--bg:#f4f1e8;--panel:#ffffff;--ink:#202020;--muted:#6b6b6b;--accent:#cc0000;--accent-dim:#e8d7d7;--border:#202020;--warn:#9a5b00;--warn-dim:#fbe8c6}@media (prefers-color-scheme:dark){:root{--bg:#16171a;--panel:#232529;--ink:#eceff1;--muted:#9aa0a6;--accent:#ff5c5c;--accent-dim:#3a2626;--border:#4a4d52;--warn:#ffb84d;--warn-dim:#40300f}}*{box-sizing:border-box}body{margin:0;padding:2rem 1rem 4rem;background:var(--bg);color:var(--ink);font-family:"Courier New",Courier,monospace;display:flex;justify-content:center}main{width:100%;max-width:720px}h1{font-size:1.4rem;margin:0 0 .25rem;letter-spacing:.02em}.subtitle{color:var(--muted);margin:0 0 1.5rem;font-size:.9rem}.panel{background:var(--panel);border:2px solid var(--border);border-radius:6px;padding:1.25rem 1.5rem;margin-bottom:1.5rem}.name-row{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:.5rem}.slot{display:flex;flex-direction:column;align-items:center;gap:.35rem}.slot .index{font-size:.7rem;color:var(--muted)}.slot .role{font-size:.65rem;color:var(--accent);font-weight:700;min-height:1em}.slot input{width:2.4rem;height:2.6rem;text-align:center;font-size:1.3rem;font-family:inherit;background:var(--bg);color:var(--ink);border:2px solid var(--border);border-radius:4px}.slot input:focus{outline:0;border-color:var(--accent)}.slot input.char-freeze{border-color:var(--warn);box-shadow:0 0 0 2px var(--warn-dim)}.symbols{display:flex;gap:.2rem;flex-wrap:wrap;justify-content:center;max-width:2.4rem}.symbols button{font-family:inherit;font-size:.7rem;padding:.1rem .3rem;cursor:pointer;background:var(--accent-dim);color:var(--ink);border:1px solid var(--border);border-radius:3px}.symbols button:hover{background:var(--accent);color:#fff}.hint{font-size:.75rem;color:var(--muted);margin-top:.75rem}.results{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;margin-top:1rem}.encounter{border:1px solid var(--border);border-radius:4px;padding:.75rem .9rem;background:var(--bg)}.encounter .from{font-size:.7rem;color:var(--muted);margin-bottom:.35rem}.encounter .species{font-size:1.1rem;font-weight:700}.encounter .level{color:var(--accent);font-size:.95rem}.encounter--freeze{border-color:var(--warn);background:var(--warn-dim)}.freeze-warning{color:var(--warn);font-weight:700;font-size:.75rem;margin-top:.35rem}h2{font-size:1rem;margin:0 0 .5rem}p{line-height:1.5;font-size:.9rem}footer{color:var(--muted);font-size:.75rem;text-align:center;margin-top:2rem}
|
||
</style>
|
||
|
||
<!-- JS -->
|
||
</head>
|
||
<body>
|
||
<main>
|
||
<h1>Old Man Glitch Decoder</h1>
|
||
<p class="subtitle">Pokémon Red / Blue / Yellow — trainer-name encounter preview</p>
|
||
|
||
<div class="panel">
|
||
<div class="name-row" id="name-row">
|
||
<!-- 7 slots injected by app.js -->
|
||
</div>
|
||
<div class="hint">Type up to 7 characters (letters, digits, or the symbols below each box). The 1st character has no effect — the glitch never reads it. Boxes and results outlined in orange (⚠) are documented to freeze the real game.</div>
|
||
<div class="results" id="results"></div>
|
||
</div>
|
||
|
||
<div class="panel">
|
||
<h2>How this works</h2>
|
||
<p>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 bytes of your trainer's name. Positions <strong>3, 5, and 7</strong> of the name are read as a Pokémon species byte, and positions <strong>2, 4, and 6</strong> are read as that encounter's level byte — three separate (species, level) pairs.</p>
|
||
<p>The species comes from the game's internal index table: every nameable character (A–Z, a–z, digits, and a handful of symbols) has a raw byte value from 128–255, and that byte doubles as a species ID in the Pokémon index.</p>
|
||
<p>The "level" isn't computed at all — it's <em>the same raw byte value</em>, printed as-is. That's why these encounters always show absurd levels (128–255) instead of the normal 1–100: the game is misreading a name-entry character as if it were a level.</p>
|
||
</div>
|
||
|
||
<footer>
|
||
Data source: internal Gen 1 index table (decimal / R-B-Y Pokémon / R-B-Y Letter columns). Based on the "Old Man Name Generator 2" tool archived from Glitch City Laboratories.
|
||
</footer>
|
||
</main>
|
||
<script>
|
||
!function(){for(var e=[3,5,7],o=[2,4,6],a={1:"unused",2:"level 1",3:"species 1",4:"level 2",5:"species 2",6:"level 3",7:"species 3"},n=["PK","MN","×","♂","♀"],m={A:{decimal:128,pokemon:"Golduck"},B:{decimal:129,pokemon:"Hypno"},C:{decimal:130,pokemon:"Golbat"},D:{decimal:131,pokemon:"Mewtwo"},E:{decimal:132,pokemon:"Snorlax"},F:{decimal:133,pokemon:"Magikarp"},G:{decimal:134,pokemon:"MissingNo."},H:{decimal:135,pokemon:"MissingNo."},I:{decimal:136,pokemon:"Muk"},J:{decimal:137,pokemon:"MissingNo."},K:{decimal:138,pokemon:"Kingler"},L:{decimal:139,pokemon:"Cloyster"},M:{decimal:140,pokemon:"MissingNo."},N:{decimal:141,pokemon:"Electrode"},O:{decimal:142,pokemon:"Clefable"},P:{decimal:143,pokemon:"Weezing"},Q:{decimal:144,pokemon:"Persian"},R:{decimal:145,pokemon:"Marowak"},S:{decimal:146,pokemon:"MissingNo."},T:{decimal:147,pokemon:"Haunter"},U:{decimal:148,pokemon:"Abra"},V:{decimal:149,pokemon:"Alakazam"},W:{decimal:150,pokemon:"Pidgeotto"},X:{decimal:151,pokemon:"Pidgeot"},Y:{decimal:152,pokemon:"Starmie"},Z:{decimal:153,pokemon:"Bulbasaur"},"(":{decimal:154,pokemon:"Venusaur"},")":{decimal:155,pokemon:"Tentacruel"},":":{decimal:156,pokemon:"MissingNo."},";":{decimal:157,pokemon:"Goldeen"},"[":{decimal:158,pokemon:"Seaking"},"]":{decimal:159,pokemon:"MissingNo."},a:{decimal:160,pokemon:"MissingNo."},b:{decimal:161,pokemon:"MissingNo."},c:{decimal:162,pokemon:"MissingNo."},d:{decimal:163,pokemon:"Ponyta"},e:{decimal:164,pokemon:"Rapidash"},f:{decimal:165,pokemon:"Rattata"},g:{decimal:166,pokemon:"Raticate"},h:{decimal:167,pokemon:"Nidorino"},i:{decimal:168,pokemon:"Nidorina"},j:{decimal:169,pokemon:"Geodude"},k:{decimal:170,pokemon:"Porygon"},l:{decimal:171,pokemon:"Aerodactyl"},m:{decimal:172,pokemon:"MissingNo."},n:{decimal:173,pokemon:"Magnemite"},o:{decimal:174,pokemon:"MissingNo."},p:{decimal:175,pokemon:"MissingNo."},q:{decimal:176,pokemon:"Charmander"},r:{decimal:177,pokemon:"Squirtle"},s:{decimal:178,pokemon:"Charmeleon"},t:{decimal:179,pokemon:"Wartortle"},u:{decimal:180,pokemon:"Charizard"},v:{decimal:181,pokemon:"MissingNo."},w:{decimal:182,pokemon:"Kabutops Fossil"},x:{decimal:183,pokemon:"Aerodactyl Fossil"},y:{decimal:184,pokemon:"Ghost"},z:{decimal:185,pokemon:"Oddish"},PK:{decimal:225,pokemon:"Rival (#1)"},MN:{decimal:226,pokemon:"Professor Oak"},"-":{decimal:227,pokemon:"Chief"},"?":{decimal:230,pokemon:"Rocket"},"!":{decimal:231,pokemon:"Cooltrainer Male"},"♂":{decimal:239,pokemon:"Blaine"},"×":{decimal:241,pokemon:"Gentleman"},".":{decimal:242,pokemon:"Rival (#2)"},"/":{decimal:243,pokemon:"Rival (Final)"},",":{decimal:244,pokemon:"Lorelei"},"♀":{decimal:245,pokemon:"Channeler"},0:{decimal:246,pokemon:"Agatha"},1:{decimal:247,pokemon:"Lance"},2:{decimal:248,pokemon:"Glitch - Freezes Game"},3:{decimal:249,pokemon:"Glitch - Freezes Game"},4:{decimal:250,pokemon:"Glitch - Freezes Game"},5:{decimal:251,pokemon:"Glitch Trainer (Can be used for ZZAZZ Glitch)"},6:{decimal:252,pokemon:"Glitch Trainer (Can be used for ZZAZZ Glitch)"},7:{decimal:253,pokemon:"Glitch Trainer (Freezes after battle)"},8:{decimal:254,pokemon:"Glitch Trainer (Can be used for ZZAZZ Glitch)"},9:{decimal:255,pokemon:"Glitch Trainer (Can be used for ZZAZZ Glitch)"}},i=document.getElementById("name-row"),l=document.getElementById("results"),t=1;t<=7;t++)(function(e){var o=document.createElement("div");o.className="slot";var m=document.createElement("div");m.className="index",m.textContent="char "+e,o.appendChild(m);var l=document.createElement("div");l.className="role",l.textContent=a[e],o.appendChild(l);var t=document.createElement("input");if(t.type="text",t.maxLength=2,t.autocomplete="off",t.spellcheck=!1,t.id="char"+e,t.dataset.pos=e,o.appendChild(t),e>1){var d=document.createElement("div");d.className="symbols",n.forEach(function(o){var a=document.createElement("button");a.type="button",a.textContent=o,a.addEventListener("click",function(){t.value=o,p(),c(e)}),d.appendChild(a)}),o.appendChild(d)}i.appendChild(o)})(t);function c(e){e<7&&document.getElementById("char"+(e+1)).focus()}function d(e){return e&&m[e]||null}function p(){for(var a=[],n=1;n<=7;n++)a[n]=document.getElementById("char"+n).value;l.innerHTML="";for(var m=0;m<3;m++){var i=e[m],t=o[m],c=d(a[i]),p=d(a[t]),r=c?c.pokemon:"MissingNo.",s=p?p.decimal:127,k=-1!==r.indexOf("Freezes");document.getElementById("char"+i).classList.toggle("char-freeze",k);var u=document.createElement("div");u.className=k?"encounter encounter--freeze":"encounter";var h=document.createElement("div");h.className="from",h.textContent="from char "+i+" & char "+t,u.appendChild(h);var g=document.createElement("div");g.className="species",g.textContent=r,u.appendChild(g);var v=document.createElement("div");if(v.className="level",v.textContent="Level "+s,u.appendChild(v),k){var f=document.createElement("div");f.className="freeze-warning",f.textContent="⚠ Freezes the game on real hardware — don't use this in-game",u.appendChild(f)}l.appendChild(u)}}i.addEventListener("input",function(e){if("INPUT"===e.target.tagName){var o=parseInt(e.target.dataset.pos,10);e.target.value.length>=1&&c(o),p()}}),p()}();
|
||
</script>
|
||
</body>
|
||
</html>
|