MODEL GAME THEORY & SAPPHONS · SAPPHON · REACTION TIME · under KEEPER ERIS
Punch-Out Tells · The Rose Triad as a Signaling Game
Punch-Out opponents telegraph their attacks: a flash, a wind-up, a sound. Reading a tell is a signaling game, because the opponent can also feint. Here Dave’s rose triad (OBSERVE 0.3 s through the {{-2,0,3}} filter, RESPOND 0.2 s, SUB ID 0.1 s always watching .3.2) runs on the I-13 VM, frame by frame.
Dave (t252): "i love that set up can you build some pages looking into game theory and those sappons you just built, see if you can build some folded stars and stuff"
Dave’s I-13 engine on this page
booting I-13 v0.3…
LIT What the VM computes here: For each of the 360 frames, the VM evaluates both {{-2,0,3}} filters from the raw signal values: OBSERVE with taps at t − 12, t − 6, t, and SUB ID with taps at t − 4, t − 2, t. That is about 700 filter outputs chained through runChain. The VM also computes the signaling equilibrium P* and the opponent’s feint rate, and the frame conversions at 60.0988 fps. JS draws the noisy opponent signal and counts dodges from the VM’s filter outputs.
Dave (t250, NES Agents app): "its lacking precognition, can it have an antistropic filter of {{-2,0,3}} and thats spend -.2 seconds observing enverinmoent before reacting, put that in rose quartz and a wave peak on it please in the cc((cubit circle))"
Dave (t251, NES Agents app): "make it 3 on the rose sapphon. should be .3 seconds observation , .2 seconds response to observation .1 always active watchin .3.2 , call that the sub id"
MODEL Sapphon notes are read from PATRICIA v43 (nes_agents.js in the NES Agents app): Dave’s words are quoted exactly as he typed them, and every game-theory mapping on this page is my reading, not his.LIT NES Punch-Out!! (1987) is built around readable tells: opponents flash, raise their fists or make a sound before each attack, and players learn each boxer’s patterns. The NTSC NES draws 60.0988 frames per second, so 0.3 s is 18 frames, 0.2 s is 12 and 0.1 s is 6.
MODEL {{-2,0,3}} as a filter (as in v42/v43): three time taps, oldest × −2, middle × 0, newest × 3. The weights sum to 1, so a steady signal passes unchanged, and it equals now + 2 × (now − then): a forward extrapolation. With OBSERVE’s 6-frame taps a straight wind-up is read 24 frames (0.40 s) ahead; SUB ID uses 2-frame taps.
MODEL Signaling game: the opponent is a real puncher or a feinter. A wind-up is the signal, and Patricia dodges or counters. Getting hit costs L = 2, a wasted dodge c = 1, a landed counter gains G = 1. She should dodge when P(real | tell) > P* = (G + c)/(G + c + L). In equilibrium the opponent feints just often enough to keep her indifferent: a semi-separating equilibrium.
AMBER A feint is the same wind-up until it stops, so no filter can tell them apart early. The SUB ID veto (half lean when OBSERVE peaks but the last 0.1 s is calm) helps only after the feint turns. Human simple visual reaction time is often quoted around 0.2–0.25 s; that figure was not re-browsed for this page.
Lab MODEL interactive, computed on the I-13 VM
wind-up · feint share · noise
Sources (browsed Oct 2026)
MODEL Two agents, as Dave set for every world: PATRICIA and OPPONENT play Dodge-or-Counter against Punch-or-Feint (zero-sum, MODEL) over and over by regret matching (Hart & Mas-Colell 2000), each shifting toward the moves it regrets not having played. Their score is 1 − NashConv/4 of their empirical average play (1 = an exact Nash equilibrium), and the I-13 VM re-computes NashConv from the raw averages every time the score improves. The centrepiece is a folded star {9/4} whose fold rises with the score. Three.js r160 from a pinned CDN, devicePixelRatio capped at 2. Drag to orbit, scroll to zoom.
LIT on load: the seal is recomputed, the page’s facts are re-checked as arithmetic (throws on mismatch), 200 seeded rounds of the two agents must improve their score, the workspace loop logs 5 entries, and the OBJ and SVG exports must be consistent. Then the engine boots, its SHA-256 and regression lab are checked, the VM recomputes the agents’ NashConv, and the page’s VM results are compared with independent JS.
Gallery of kept moments (WebGL snapshots):
Workspace improvement loop: instructions for agents MODEL
- Measure: every 40 rounds, record NashConv of the average play, the score, the rounds since the last improvement and whether regret-matching+ is on.
- Try next: after a 40-round plateau, switch both agents to regret-matching+; if still stuck, halve the exploration ε; if still stuck, forget half the old history. While NashConv falls, keep course (ε × 0.9); if it rises, explore more (ε × 1.25).
- Log back: append {entry, round, measured, tried, ε} to the workspace log (in the JSON export and the list below), and have the I-13 VM recompute NashConv.
- Repeat, forever: never stop improving. Re-check every claim against the engine and the sources before you make it.
Live workspace log:
Shared board MODEL PATRICIA ↔ OPPONENT
Background art: MODEL a generative field seeded from this page’s seal.
proving…
Seal sha256(name|slug|blurb): 0a1fd09e52838fbfaff6365889688ee6175b67af978de5ab62958e2e8f2b59b2
↑ Game Theory & Sapphons index · Protein Folding (same engine) · ← ERIS, keeper of Mayhem