16-bit Final Edition: an SNES-inspired live football broadcast with pixel-art players, classic turf, retro score graphics, and arcade replays. Tap the screen to skip a cutscene.
Paste one play per line as TEAM | description, where TEAM has the ball at the snap (the kicking team on kicks). Plain descriptions without a team work too; possession is tracked from the plays.
JSON also works: an array or one object per line, using nflverse-style fields such as posteam, defteam, home_team, away_team, desc, qtr, time, down, ydstogo, yardline_100, total_home_score and total_away_score. When a row includes down, distance and yard line, the field resets to those values, so the game state never drifts.
Play any line to hear exactly how it sounds in the game: the same recorded voice and the same stadium effects.
Switch player sprites instantly; your preference is saved in this browser.
Pixel-perfect scales every art pixel by a whole number, so the 640 × 360 picture fills 1080p, 1440p and 4K screens exactly, with text drawn at your screen’s full resolution. Double-click the field, or press F, to go full screen.
Every piece has three colors. Uniforms are saved by team abbreviation, so a team keeps its look every time it shows up in a feed. Live ESPN games start from each team’s official colors.
Rosters load for the two teams on the field. Each player’s skin tone starts as a guess from his ESPN headshot. Pick a different swatch to fix it; your choice is saved and always wins over the guess.
The page exposes a small API. Host this file alongside your own polling or WebSocket code and push each new play as it arrives; it’s added to the queue and animated in order.
// a row from your feed (object or "TEAM | description" string)
Gridiron.push({ posteam: "HAR", desc: "(9:12) M.Reyes left end to HAR 40 for 6 yards (J.Pike)." });
Gridiron.load(arrayOrText); // replace the whole feed
Gridiron.normalize(row); // see how a row is interpreted
Gridiron.state; // score, possession, down, distance