Commit Graph
2 Commits
Author SHA1 Message Date
Brues 311359dcc8 Repack sheets the client is too skinny to sample; add blobDance
A texture skinnier than 16:1 draws nothing at all. Confirmed in-game with
one crop shape across two sheets: ratJAM (32x512) renders, modCheck
(32x1024) is blank. The earlier 2048 repack fixed those sheets by accident
- two columns took them from 64:1 to 16:1, not by getting under the 1024
cap as its commit message claimed.

Twenty-seven sheets were still at 32:1 and had never rendered: modCheck,
meow, BOOBA, rooRave, Aware, Thinkge, alert and the rest. All repacked to
64x512, same frames in the same order, with their crops and metadata
updated. Verified across all 112 animated sheets: none over 1024 or
skinnier than 16:1, declared sizes match the files, frame counts fit their
grids, and every repacked frame still matches what its sheet held at that
index.

add_emote.py learns the same limit, and resamples the source timeline at a
constant rate instead of expanding holds into repeats: a hold repeats, a
source faster than the ~30fps ticker drops frames, and the loop keeps its
duration either way. blobDance is 50fps at source, so the old code stretched
its 0.74s loop to 1.23s.

Also drops the atoi note from BuildFrameString - ParseField uses atof and
tolerates decimals, so that was never the failure it described.
2026-09-04 01:17:26 -05:00
Brues 94777ecbc4 Add an emote installer, animate Nerdge
tools/add_emote.py downloads a BetterTTV emote, converts it to a texture
the 1.12 client decodes, and registers it in defaultpack, emoticons, the
animation table and the minimap pack list.

Two client limits shape the conversion. Textures cap at 1024px per side,
so anything longer than 32 frames packs row-major across several 32px
columns. And the animator plays one constant rate while a GIF holds
individual frames for different lengths, so uneven delays expand into
repeated frames at the integer rate that reproduces the source timing with
the fewest frames - a faster rate always matches the duration more exactly
but pays for it in texture size.

Nerdge is the first emote through it, replacing the static art with the
animated original: 17 source frames over 3.12s become 36 frames at 11fps
(3.27s) in a 64x1024 sheet, keeping its hold, push, hold shape.

.pkgmeta is tracked now so the release packager honours its ignore list
and leaves tools out of the zip.
2026-09-03 16:00:41 -05:00