494bab1b69e33e86bd0f035b3a960864813ec2ec
The "smaller when swinging or tossing" was an anchor bug, not art. _fine.py scales a whole sheet so the --anchor frame is 224 px, and drawChar draws every sprite at img.height/SPRITE_H — so anchoring opponent_play on the TOSS, with arm and ball above the head, made 224 px cover the raised arm and shrank every body on that sheet. o_swing1 was 162 px against a 224 px standing pose. Each opponent batch now leads with a standing `ref` frame, which _fine.py anchors on and _regen.py discards. Correctly anchored the toss is 278 px and the man is full size; the swing is 221. The receiver no longer slides 0.12 m side to side while waiting on a serve — sliding a sprite sideways reads as skating, and the split-step swap to the run frames (removed earlier) had already been the other half of that. The idle bounce ball had one hardcoded offset for both men. They reach to opposite sides of the screen — the player is drawn from behind, the opponent from the front — so the opponent's ball sat out by his racket. dx and apex are per-man now, and o_bounce/o_bounce2 were redrawn with a patting hand to put it under. Also: the opponent wears a RED headband, and a prompt of mine that said "white" had quietly repainted it on six frames. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Languages
JavaScript
75.2%
Python
15.8%
HTML
7.3%
Shell
1.4%
Swift
0.2%