Skip to content

feat(examples): skull sprite matching the reference - #13

Merged
scbrown merged 2 commits into
mainfrom
art/skull-reference
Sep 26, 2026
Merged

scbrown merged 2 commits into
mainfrom
art/skull-reference

Conversation

@scbrown

@scbrown scbrown commented Sep 26, 2026

Copy link
Copy Markdown
Owner

Replaces the avatar-prototype skull attempts, which read as a flat grey helmet, with a skull drawn in pixelsrc that follows reference-skull.jpg.

reference vs render

talking

What's in examples/skull/

  • skull.pxl: the bone palette, the skull_cranium + skull_jaw sprites, open-jaw poses, compositions and the skull_talking animation. It's 40x40 on a transparent background.
  • Traits from the reference: 3/4 view facing right, a rounded cranium swelling back-left, a warm bone ramp (cream, beige, tan, umber), a dark outline, angular orbits with lighter inner walls, a notched nasal cavity, a cheekbone plane, a shadowed temple, and a separate mandible with individual teeth plus a see-through mouth corner.
  • Renders: skull.png (1x), skull_8x.png, skull_talking.gif (8x; closed, ajar and open, with the jaw hinged at the ear), and skull_comparison.png (built by compare.py).
  • README.md has the render commands. reference-skull.jpg moved here from examples/avatar-prototype/.
  • The old skull*.pxl sources and their PNG/GIF renders are removed. Nothing else in the repo referenced them.

GAPS.md

Five compiler gaps came up while drawing this. Each has a minimal repro in examples/skull/GAPS.md:

  1. Region paint order is random unless every region has z. regions is a HashMap, and 6 renders of the repro gave 3 different PNGs.
  2. auto-outline, repeat, transform, jitter, round and the x/y ranges are parsed and then silently ignored.
  3. fill: \"inside(X)\" picks its seed at the bounding-box centre, so it can flood the outside of a concave shape. The documented seed: [x, y] isn't wired up.
  4. Compositions can't offset a layer. They ignore a derived sprite's shift, and the documented {sprite, x, y} layer renders nothing. Because of this, the jaw poses are written out in full.
  5. Derived (source:) sprites still require palette.

Testing

  • pxl validate is clean, and pxl render --strict -c skull renders with no warnings.
  • Under cargo test, everything passes except install::tests::test_install_skips_cached. That test also fails without this branch's changes: this PR only touches examples/, and the failure is in the install module.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PXBCFZMofE9EGKzo8J2YKJ

scbrown and others added 2 commits September 26, 2026 00:56
New examples/skull/: a 40x40 3/4-view skull drawn in pixelsrc after
reference-skull.jpg (moved here from avatar-prototype). It has the domed
cranium swelling back-left, warm bone ramp, angular orbits with lighter
inner walls, notched nasal cavity, cheekbone plane, shadowed temple, and
a separate mandible with individual teeth. The jaw is its own sprite, so
skull_talking.gif animates closed/ajar/open poses hinged at the ear.

Includes 1x/8x renders, the GIF, a reference-vs-render comparison
(compare.py), a README with render commands, and GAPS.md with minimal
repros for five compiler gaps: random region order without z, ignored
auto-outline/repeat/transform, fill seeding outside concave shapes,
compositions unable to offset a layer, and derived sprites needing
palette.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PXBCFZMofE9EGKzo8J2YKJ
The old skull.pxl / skull-outline.pxl and their renders read as a flat
grey helmet and are replaced by examples/skull/. Nothing else in the
repo referenced them.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PXBCFZMofE9EGKzo8J2YKJ
@scbrown
scbrown force-pushed the art/skull-reference branch from dbdeb72 to bc02a39 Compare September 26, 2026 04:56
@scbrown
scbrown merged commit 43e4e71 into main Sep 26, 2026
14 checks passed
@scbrown
scbrown deleted the art/skull-reference branch September 26, 2026 05:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant