mirror of
https://github.com/ALLFATHER-BV/wadamesh.git
synced 2026-11-07 22:58:51 +00:00
The 273 baked RGB565+alpha emoji images in src/ui-touch/emoji_data.c are 208,908 B of the Tanmatsu's application.bin, which may not exceed 50 x 64 KB pages. Deflated as one stream they are 105,053 B. The Tanmatsu's IDF build now leaves emoji_data.c out and compiles variants/tanmatsu/emoji_deflated.cpp, which provides the same emojiGlyphLookup() / kEmojiGlyphCount. Its header is generated at build time from emoji_data.c by scripts/build/gen-emoji-deflated.py (a CMake custom command into the build dir, nothing committed), so emoji_data.c stays the one source and add-emoji.py keeps working unchanged. The script inflates its own output and checks every image and glyph mapping against the source before writing, so a bad blob fails the build. On the first lookup that hits a known emoji the blob is inflated with the ROM tinfl (no flash cost) into one 208,908 B PSRAM block plus 273 descriptors; lookups that miss never inflate. An allocation failure gives "no glyph" and is retried on a later lookup; a blob that will not inflate is not retried per draw. Same pixels, same headers, same sharing of one image by several codepoints (U+FE0F, U+200D, ...). S3 boards, the web build and the other P4 builds do not compile anything here (variants/tanmatsu is only globbed by tanmatsu/), so their images do not change. Host test test/test_emoji_deflated.cpp compares the deflated lookup with the raw emoji_data.c for every codepoint up to U+10FFFF and drives the out-of-memory and corrupt-blob paths (zlib stands in for the ROM tinfl). run-host-tests.sh gains per-test prep (generate the header under $OUT) and link flags. Measured with WADA_FW_TAG=beta_99: 3,179,904 -> 3,076,400 B. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>