Let the ball follow the mirror, and stop the serve shrinking her

Four things Oliver caught on the phone.

The screen title is the ANNOUNCEMENT face now. A menu heading is a thing that
shouts, the same register the canvas gives SET and CHAPTER — it was wearing the
HUD font, which is the voice for scores and key hints. Bangers carries its own
weight, so it takes size and air instead of Silkscreen's letter-spacing, plus
the padding under it he asked for.

Her toss and smash were shrinking the whole woman. The slice anchors frame 0 to
224 px, and frame 0 was the toss — whose arm is straight up, so the BODY got
squeezed to make room for it. This is the trap already written down for the
raised racket; it just moved to a different sheet. Re-sliced the retained sheet
at the men's toss height (250) instead, so toss/smash/pull come out 250/293/191
against his 250/320/213 and her body matches her own idle again. No re-roll.

The pre-serve ball did not follow the MIRROR. drawChar flips the whole sprite
when a server faces left, so dodging during the bounce swapped his hands over
and left the ball hanging out by the racket — one `* sv.facing` on the offset.
It was wrong in the men's world the whole time, it just took a second body
standing next to it before anyone saw it.

And she reaches further out and higher than he does, so BOUNCE_IDLE's pair is
overridable per tour now (0.46/0.78 against his 0.36/0.68). Measured off the
drawn hand by eye, which is the only way those two numbers have ever been set.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5 committed 2026-08-04 12:37:59 +02:00
1 parent 14a1e5d261
commit 0ca43bf68f
7 files changed
+24 -10

No files matched your search

+6 -4
View File
@@ -86,9 +86,11 @@
/* the overlay is HIDDEN during play, not removed: a restart puts it straight back, and the
display:grid above would otherwise win over the hidden attribute */
#intro[hidden] { display: none; }
/* headline: taller than the body text, so a screen reads as a screen and not as a list */
#intro h2 { margin: 0 0 20px; font: 400 15px Silkscreen, monospace; color: #e0cc72;
letter-spacing: 3px; line-height: 1.5; }
/* headline: the ANNOUNCEMENT face, the same register the canvas uses for SET and CHAPTER — a
screen title is a thing that shouts, not a line of HUD. Bangers carries its own weight, so it
wants size and air rather than Silkscreen's letter-spacing. */
#intro h2 { margin: 0 0 26px; font: 400 30px Bangers, cursive; color: #e0cc72;
letter-spacing: 2px; line-height: 1.2; padding-bottom: 6px; }
/* one button look for every menu screen */
.btn { display: block; width: min(340px, 84vw); margin: 0 auto 10px; padding: 12px 10px;
background: rgba(255,255,255,0.04); border: 2px solid #3b4354; color: #dfe6f2;
@@ -198,6 +200,6 @@
</div>
</div>
</div>
<script type="module" src="main.js?v=120"></script>
<script type="module" src="main.js?v=121"></script>
</body>
</html>