Commit Graph
4 Commits
Author SHA1 Message Date
Brues 0515d796af Add lebronJAM; rebuild RIPBOZO at its real speed
lebronJAM is 121 frames at 13fps, resampled down from 232 source frames over
9.28s - the first emote to hit the 128-frame ceiling for length rather than
speed. The loop keeps its duration.

RIPBOZO was 28 frames at 13fps, a 2.15s loop, against a source of 81 frames
over 5.06s: a third of the frames playing 2.4x too fast. Rebuilt from that
source as 86 frames at 17fps, so it runs at its real speed with every source
frame kept. Its sheet grows from 64x512 to 128x1024 to hold them.
2026-09-04 02:48:45 -05:00
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 fdff71922e Add animated emote support
Animate multi-frame sprite-sheet emotes (e.g. :meow:) using ClassicAPI's
extended |T texcoord-crop escape, across every context.

- TwitchEmotes_animation_metadata (per-sheet frame layout) added to
  Emotes.lua; animated emotes' base entries cropped to frame 0 so any
  un-animated context shows a clean first frame, not the whole sheet.
- TwitchEmotesAnimator.lua: ~30fps ticker advancing the current frame in
  chat lines, the autocomplete popup, dropdown menus, chat bubbles, and
  the stats screen (featured icons + ranked lists).
- Re-converted sprite sheets to uncompressed, unflipped, native
  dimensions (1.12 cannot decode RLE TGA); fixed Clap.tga which was a
  single 32x32 frame.
2026-09-02 16:30:12 -05:00
Brues b074b3207c Initial commit 2026-08-31 20:32:24 -05:00