Files
lucky-cat/docs/显示与音频资产台账.zh-CN.md
T

30 KiB
Raw Blame History

显示与音频资产台账

范围、日期与计量口径

这是 2026-10-09 lucky-cat 工作区的核对快照;初始采集时 listening 素材尚未提交, 两个历史待机 C 资产未跟踪;本次已追加 HUD 字形/电池素材及构建结果。 它不是构建输入或自动生成的实时报告。 新增、替换、移出固件或经授权清理资产时,应同步更新此表及指南。

范围包含平台图片/图层/音频、生成 GFX C 文件、旧音频副本、领域内嵌网页和项目 显示预览;不逐个列第三方库的内部样例/字体、ESP-IDF 文件或 build 缓存。 语音模型作为独立构建产物在后文单列,不冒充项目图片资产。

  • 文件字节为文件逻辑长度;分配字节来自本机 stat 的 st_blocks×512,可能随文件 系统、压缩、克隆共享而改变,不能当作唯一物理磁盘成本或固件占用。
  • C 文件是十六进制数组的文本,文本长度不等于 Flash。Flash 载荷必须按数组 字节统计;描述结构、代码、对齐和其他数据最终以应用镜像为准。
  • 源图、图层、预览、manifest、旧副本不因出现在仓库中就自动进入固件。
  • PNG/Opus 素材包与六份 GFX RLE 都已包含在应用镜像里,不能重复加算。
  • 本文只记录分类,不授权删除任何文件。后备保留与清理条件见 GFX 开发指南。

目录汇总

类别 文件数 文件字节合计 本机分配字节合计 当前用途
原始 LCD 图片 76 1,168,722 1,290,240 源图/历史 GIF,不直接入固件
优化 PNG 与清单 76 465,933 593,920 按 PNG 白名单入包;manifest 不入包
提示音 32 385,758 450,560 本目录 Opus 入包
待机拆分图层及预览 8 74,585 94,208 制作输入/预览,不入包
聆听拆分图层及预览 16 272,605 303,104 制作输入/预览,不入包
GFX 压缩 C 资产 8 1,232,250 1,253,376 六份参与编译;历史两份未参与
旧音频副本 30 378,918 442,368 本目录不入包,不自动删除
领域网页资源 1 5,373 8,192 user_config.html 单独 EMBED_TXTFILES,不在素材包
文档中的独立显示预览 2 98,302 102,400 仅电脑预览,不入固件

以下同名文件跨目录是不同用途,不应直接合并或重复计入 Flash。当前没有独立中文字体包;时间 HUD 已改为 Montserrat 14 数字子集,电量仅显示素材图标,不意味着已支持任意中文字形。

原始 LCD 图片

目录:components/platform/assets/lcd_source/。源图/历史 GIF,不直接入固件。

文件 文件字节 本机分配字节 尺寸 固件用途
OTA.gif 40,441 40,960 320×240 不直接入固件
buyunqian1.png 20,467 20,480 320×240 不直接入固件
charging.png 3,018 4,096 50×70 不直接入固件
chouqian_buyun0.png 16,883 20,480 320×240 不直接入固件
chouqian_buyun1.png 20,467 20,480 320×240 不直接入固件
chouqian_buyun2.png 27,971 28,672 320×240 不直接入固件
chouqian_heping0.png 17,146 20,480 320×240 不直接入固件
chouqian_heping1.png 20,975 24,576 320×240 不直接入固件
chouqian_heping2.png 28,152 28,672 320×240 不直接入固件
chouqian_qianzhi0.png 13,739 16,384 320×240 不直接入固件
chouqian_qianzhi1.png 16,425 20,480 320×240 不直接入固件
chouqian_qianzhi2.png 15,559 16,384 320×240 不直接入固件
chouqian_shangshang0.png 17,377 20,480 320×240 不直接入固件
chouqian_shangshang1.png 20,582 24,576 320×240 不直接入固件
chouqian_shangshang2.png 28,046 28,672 320×240 不直接入固件
chouqian_xiaoji0.png 17,071 20,480 320×240 不直接入固件
chouqian_xiaoji1.png 20,313 20,480 320×240 不直接入固件
chouqian_xiaoji2.png 27,354 28,672 320×240 不直接入固件
chouqian_zhongshang0.png 16,995 20,480 320×240 不直接入固件
chouqian_zhongshang1.png 19,968 20,480 320×240 不直接入固件
chouqian_zhongshang2.png 26,989 28,672 320×240 不直接入固件
east0.png 19,981 20,480 320×240 不直接入固件
huo0.png 19,143 20,480 320×240 不直接入固件
huo1.png 19,706 20,480 320×240 不直接入固件
icon_huo0.png 2,028 4,096 56×58 不直接入固件
icon_jin0.png 2,369 4,096 65×44 不直接入固件
icon_mu0.png 3,741 4,096 86×50 不直接入固件
icon_shui0.png 2,239 4,096 60×56 不直接入固件
icon_tu0.png 2,873 4,096 75×42 不直接入固件
jichubiaoqing0.png 20,645 24,576 320×240 不直接入固件
jichubiaoqing1.png 16,355 16,384 320×240 不直接入固件
jichubiaoqing2.png 14,340 16,384 320×240 不直接入固件
jin0.png 17,398 20,480 320×240 不直接入固件
jin1.png 19,311 20,480 320×240 不直接入固件
lcdtest00.png 3,321 4,096 320×240 不直接入固件
lcdtest01.png 3,574 4,096 320×240 不直接入固件
lcdtest02.png 3,767 4,096 320×240 不直接入固件
lcdtest03.png 3,903 4,096 320×240 不直接入固件
lcdtest04.png 3,579 4,096 320×240 不直接入固件
lcdtest05.png 3,996 4,096 320×240 不直接入固件
lcdtest06.png 4,089 4,096 320×240 不直接入固件
lcdtest07.png 3,753 4,096 320×240 不直接入固件
lcdtest08.png 3,860 4,096 320×240 不直接入固件
lcdtest09.png 4,008 4,096 320×240 不直接入固件
lcdtest10.png 3,545 4,096 320×240 不直接入固件
lcdtest11.png 3,169 4,096 320×240 不直接入固件
lcdtest12.png 3,453 4,096 320×240 不直接入固件
lcdtest13.png 3,710 4,096 320×240 不直接入固件
lcdtest14.png 3,443 4,096 320×240 不直接入固件
lcdtest15.png 3,646 4,096 320×240 不直接入固件
listening0.png 19,615 20,480 320×240 不直接入固件
listening1.png 15,072 16,384 320×240 不直接入固件
listening2.png 10,758 12,288 320×240 不直接入固件
lowbat.png 10,222 12,288 232×36 不直接入固件
mu0.png 19,742 20,480 320×240 不直接入固件
mu1.png 19,483 20,480 320×240 不直接入固件
muyu0.png 17,340 20,480 320×240 不直接入固件
muyu1.png 21,462 24,576 320×240 不直接入固件
muyu2.png 34,079 36,864 320×240 不直接入固件
north0.png 19,314 20,480 320×240 不直接入固件
northeast0.png 21,808 24,576 320×240 不直接入固件
northwest0.png 19,143 20,480 320×240 不直接入固件
ota1.png 25,911 28,672 320×240 不直接入固件
ota2.png 22,397 24,576 320×240 不直接入固件
ota3.png 22,079 24,576 320×240 不直接入固件
qianzhiwuxing0.png 16,670 20,480 320×240 不直接入固件
qrcode.png 18,971 20,480 320×240 不直接入固件
shui0.png 18,086 20,480 320×240 不直接入固件
shui1.png 18,478 20,480 320×240 不直接入固件
south0.png 22,767 24,576 320×240 不直接入固件
southeast0.png 24,902 28,672 320×240 不直接入固件
southwest0.png 22,298 24,576 320×240 不直接入固件
spin0.png 17,071 20,480 320×240 不直接入固件
tu0.png 18,101 20,480 320×240 不直接入固件
tu1.png 20,059 20,480 320×240 不直接入固件
west0.png 18,011 20,480 320×240 不直接入固件

优化 PNG 与清单

目录:components/platform/assets/lcd_optimized/。按 PNG 白名单入包;manifest 不入包。

文件 文件字节 本机分配字节 尺寸 固件用途
buyunqian1.png 7,598 8,192 320×240 入包 PNG
charging.png 1,254 4,096 50×70 入包 PNG
chouqian_buyun0.png 6,536 8,192 320×240 入包 PNG
chouqian_buyun1.png 7,598 8,192 320×240 入包 PNG
chouqian_buyun2.png 9,986 12,288 320×240 入包 PNG
chouqian_heping0.png 6,590 8,192 320×240 入包 PNG
chouqian_heping1.png 7,701 8,192 320×240 入包 PNG
chouqian_heping2.png 10,120 12,288 320×240 入包 PNG
chouqian_qianzhi0.png 5,203 8,192 320×240 入包 PNG
chouqian_qianzhi1.png 6,119 8,192 320×240 入包 PNG
chouqian_qianzhi2.png 5,984 8,192 320×240 入包 PNG
chouqian_shangshang0.png 6,578 8,192 320×240 入包 PNG
chouqian_shangshang1.png 7,519 8,192 320×240 入包 PNG
chouqian_shangshang2.png 9,804 12,288 320×240 入包 PNG
chouqian_xiaoji0.png 6,447 8,192 320×240 入包 PNG
chouqian_xiaoji1.png 7,424 8,192 320×240 入包 PNG
chouqian_xiaoji2.png 9,715 12,288 320×240 入包 PNG
chouqian_zhongshang0.png 6,291 8,192 320×240 入包 PNG
chouqian_zhongshang1.png 7,224 8,192 320×240 入包 PNG
chouqian_zhongshang2.png 9,387 12,288 320×240 入包 PNG
east0.png 5,681 8,192 320×240 入包 PNG
huo0.png 7,023 8,192 320×240 入包 PNG
huo1.png 7,269 8,192 320×240 入包 PNG
icon_huo0.png 1,422 4,096 56×58 入包 PNG
icon_jin0.png 1,509 4,096 65×44 入包 PNG
icon_mu0.png 1,866 4,096 86×50 入包 PNG
icon_shui0.png 1,457 4,096 60×56 入包 PNG
icon_tu0.png 1,643 4,096 75×42 入包 PNG
jichubiaoqing0.png 6,467 8,192 320×240 入包 PNG
jichubiaoqing1.png 5,306 8,192 320×240 入包 PNG
jichubiaoqing2.png 4,482 8,192 320×240 入包 PNG
jin0.png 6,488 8,192 320×240 入包 PNG
jin1.png 7,077 8,192 320×240 入包 PNG
lcdtest00.png 2,885 4,096 320×240 入包 PNG
lcdtest01.png 2,965 4,096 320×240 入包 PNG
lcdtest02.png 2,982 4,096 320×240 入包 PNG
lcdtest03.png 3,043 4,096 320×240 入包 PNG
lcdtest04.png 2,949 4,096 320×240 入包 PNG
lcdtest05.png 3,225 4,096 320×240 入包 PNG
lcdtest06.png 3,431 4,096 320×240 入包 PNG
lcdtest07.png 3,369 4,096 320×240 入包 PNG
lcdtest08.png 3,299 4,096 320×240 入包 PNG
lcdtest09.png 3,458 4,096 320×240 入包 PNG
lcdtest10.png 3,229 4,096 320×240 入包 PNG
lcdtest11.png 2,966 4,096 320×240 入包 PNG
lcdtest12.png 2,921 4,096 320×240 入包 PNG
lcdtest13.png 3,020 4,096 320×240 入包 PNG
lcdtest14.png 2,986 4,096 320×240 入包 PNG
lcdtest15.png 3,033 4,096 320×240 入包 PNG
listening0.png 6,165 8,192 320×240 入包 PNG
listening1.png 4,939 8,192 320×240 入包 PNG
listening2.png 3,577 4,096 320×240 入包 PNG
lowbat.png 3,527 4,096 232×36 入包 PNG
manifest.json 34,788 36,864 — 不入包,校验清单/非白名单
mu0.png 7,270 8,192 320×240 入包 PNG
mu1.png 7,208 8,192 320×240 入包 PNG
muyu0.png 6,924 8,192 320×240 入包 PNG
muyu1.png 8,325 12,288 320×240 入包 PNG
muyu2.png 12,523 16,384 320×240 入包 PNG
north0.png 5,527 8,192 320×240 入包 PNG
northeast0.png 6,276 8,192 320×240 入包 PNG
northwest0.png 5,496 8,192 320×240 入包 PNG
ota1.png 8,745 12,288 320×240 入包 PNG
ota2.png 7,585 8,192 320×240 入包 PNG
ota3.png 7,525 8,192 320×240 入包 PNG
qianzhiwuxing0.png 5,811 8,192 320×240 入包 PNG
qrcode.png 11,039 12,288 320×240 入包 PNG
shui0.png 6,640 8,192 320×240 入包 PNG
shui1.png 6,932 8,192 320×240 入包 PNG
south0.png 6,609 8,192 320×240 入包 PNG
southeast0.png 7,354 8,192 320×240 入包 PNG
southwest0.png 6,599 8,192 320×240 入包 PNG
spin0.png 6,447 8,192 320×240 入包 PNG
tu0.png 7,028 8,192 320×240 入包 PNG
tu1.png 7,381 8,192 320×240 入包 PNG
west0.png 5,164 8,192 320×240 入包 PNG

提示音

目录:components/platform/assets/audio_prompts/。本目录 Opus 入包。

文件 文件字节 本机分配字节 尺寸 固件用途
battery_checking.opus 4,366 8,192 — 入包 Opus
battery_low_20.opus 6,582 8,192 — 入包 Opus
battery_low_energy_warning.opus 26,369 28,672 — 入包 Opus
boot.opus 2,296 4,096 — 入包 Opus
button_interrupt_listening.opus 2,911 4,096 — 入包 Opus
charge_complete.opus 22,329 24,576 — 入包 Opus
daily_first_wake.opus 14,798 16,384 — 入包 Opus
daily_wake.opus 7,111 8,192 — 入包 Opus
enter_provisioning.opus 6,701 8,192 — 入包 Opus
intro_first_setup_success.opus 23,813 24,576 — 入包 Opus
local_wake_response.opus 3,680 4,096 — 入包 Opus
luck_flow_lost_help_find.opus 14,658 16,384 — 入包 Opus
muyu.opus 3,160 4,096 — 入包 Opus
network_connect_failed.opus 4,388 8,192 — 入包 Opus
network_connect_success.opus 4,778 8,192 — 入包 Opus
network_connecting.opus 2,836 4,096 — 入包 Opus
network_interrupted_repairing.opus 13,887 16,384 — 入包 Opus
network_unstable.opus 13,910 16,384 — 入包 Opus
server_abnormal_interrupted.opus 24,764 28,672 — 入包 Opus
server_connect_failed.opus 5,690 8,192 — 入包 Opus
server_connect_success.opus 6,302 8,192 — 入包 Opus
server_repair_wait_open.opus 17,193 20,480 — 入包 Opus
server_repair_wait_reopen.opus 17,829 20,480 — 入包 Opus
shutdown.opus 3,160 4,096 — 入包 Opus
shutdown_normal_goodbye.opus 6,396 8,192 — 入包 Opus
shutdown_power_empty.opus 19,970 20,480 — 入包 Opus
signal_restored_business_resume.opus 10,996 12,288 — 入包 Opus
standby_5min.opus 21,429 24,576 — 入包 Opus
system_update_complete.opus 12,396 16,384 — 入包 Opus
system_upgrading.opus 23,754 24,576 — 入包 Opus
welcome_luck_ready.opus 25,325 28,672 — 入包 Opus
wifi_password_wrong.opus 11,981 12,288 — 入包 Opus

待机拆分图层及预览

目录:components/platform/assets/lcd_layers/jichubiaoqing/。制作输入/预览,不入包。

文件 文件字节 本机分配字节 尺寸 固件用途
idle_base.png 5,321 8,192 320×240 不直接入固件
idle_eyes_closed.png 5,896 8,192 238×93 不直接入固件
idle_eyes_half.png 8,791 12,288 238×93 不直接入固件
idle_eyes_open.png 12,161 12,288 238×93 不直接入固件
layout.json 387 4,096 — 不直接入固件
preview_closed.png 10,881 12,288 320×240 不直接入固件
preview_half.png 13,832 16,384 320×240 不直接入固件
preview_open.png 17,316 20,480 320×240 不直接入固件

聆听拆分图层及预览

目录:components/platform/assets/lcd_layers/listening/。制作输入/预览,不入包。

文件 文件字节 本机分配字节 尺寸 固件用途
layout.json 346 4,096 — 不直接入固件
listening_base.png 6,234 8,192 320×240 不直接入固件
listening_eyes_closed.png 2,875 4,096 242×77 不直接入固件
listening_eyes_half.png 6,460 8,192 242×77 不直接入固件
listening_eyes_open.png 9,866 12,288 242×77 不直接入固件
preview.gif 53,952 57,344 320×240 不直接入固件
preview_000.png 13,633 16,384 320×240 不直接入固件
preview_016.png 15,577 16,384 320×240 不直接入固件
preview_024.png 15,540 16,384 320×240 不直接入固件
preview_064.png 14,802 16,384 320×240 不直接入固件
preview_080.png 14,347 16,384 320×240 不直接入固件
preview_128.png 10,641 12,288 320×240 不直接入固件
preview_160.png 10,937 12,288 320×240 不直接入固件
preview_192.png 9,820 12,288 320×240 不直接入固件
preview_232.png 7,674 8,192 320×240 不直接入固件
preview_sheet.png 79,901 81,920 960×720 不直接入固件

GFX 压缩 C 资产

目录:components/platform/src/generated/emote_gfx/。六份参与编译;历史两份未参与。

文件 文本文件字节 本机分配字节 图层尺寸 数组载荷字节 RGB565+A8 像素字节 参与编译
idle_base.c 29,698 32,768 284×37 4,764(RLE) 31,524 是,GFX 开关开启时
idle_eyes_closed.c 400,750 401,408 238×93 66,402(历史未压缩像素) 66,402 否,历史文件,仅保留
idle_eyes_half.c 400,744 401,408 238×93 66,402(历史未压缩像素) 66,402 否,历史文件,仅保留
idle_eyes_open.c 90,201 94,208 238×93 14,572(RLE) 66,402 是,GFX 开关开启时
listening_base.c 54,190 57,344 287×102 8,732(RLE) 87,822 是,GFX 开关开启时
listening_eyes_closed.c 26,097 28,672 242×77 4,172(RLE) 55,902 是,GFX 开关开启时
listening_eyes_half.c 81,985 86,016 242×77 13,236(RLE) 55,902 是,GFX 开关开启时
listening_eyes_open.c 148,585 151,552 242×77 24,036(RLE) 55,902 是,GFX 开关开启时

旧音频副本

目录:defaultAudio/。本目录不入包,不自动删除。

文件 文件字节 本机分配字节 尺寸 固件用途
battery_checking.opus 4,366 8,192 — 不直接入固件
battery_low_20.opus 6,582 8,192 — 不直接入固件
battery_low_energy_warning.opus 26,369 28,672 — 不直接入固件
boot.opus 2,296 4,096 — 不直接入固件
button_interrupt_listening.opus 2,911 4,096 — 不直接入固件
charge_complete.opus 22,329 24,576 — 不直接入固件
daily_first_wake.opus 14,798 16,384 — 不直接入固件
daily_wake.opus 7,111 8,192 — 不直接入固件
enter_provisioning.opus 6,701 8,192 — 不直接入固件
intro_first_setup_success.opus 23,813 24,576 — 不直接入固件
luck_flow_lost_help_find.opus 14,658 16,384 — 不直接入固件
network_connect_failed.opus 4,388 8,192 — 不直接入固件
network_connect_success.opus 4,778 8,192 — 不直接入固件
network_connecting.opus 2,836 4,096 — 不直接入固件
network_interrupted_repairing.opus 13,887 16,384 — 不直接入固件
network_unstable.opus 13,910 16,384 — 不直接入固件
server_abnormal_interrupted.opus 24,764 28,672 — 不直接入固件
server_connect_failed.opus 5,690 8,192 — 不直接入固件
server_connect_success.opus 6,302 8,192 — 不直接入固件
server_repair_wait_open.opus 17,193 20,480 — 不直接入固件
server_repair_wait_reopen.opus 17,829 20,480 — 不直接入固件
shutdown.opus 3,160 4,096 — 不直接入固件
shutdown_normal_goodbye.opus 6,396 8,192 — 不直接入固件
shutdown_power_empty.opus 19,970 20,480 — 不直接入固件
signal_restored_business_resume.opus 10,996 12,288 — 不直接入固件
standby_5min.opus 21,429 24,576 — 不直接入固件
system_update_complete.opus 12,396 16,384 — 不直接入固件
system_upgrading.opus 23,754 24,576 — 不直接入固件
welcome_luck_ready.opus 25,325 28,672 — 不直接入固件
wifi_password_wrong.opus 11,981 12,288 — 不直接入固件

领域网页资源

目录:components/domain/assets/。user_config.html 单独 EMBED_TXTFILES,不在素材包。

文件 文件字节 本机分配字节 尺寸 固件用途
user_config.html 5,373 8,192 — 单独嵌入应用,文本尾部追加 NUL

独立显示预览

文件 文件字节 本机分配字节 用途
docs/cat-face-screen-preview.html 5,225 8,192 文档/浏览器预览,不入固件
docs/lcd-boundary-test-preview.gif 93,077 94,208 文档/浏览器预览,不入固件

实际入固件与构建快照

当前 PNG 白名单为 75 项,提示音为 32 项;已逐项对照 现有素材包名称及字节,确认本次台账快照与该包一致。资源变化后需重新核对构建, 不能只改本文数字。

项目 字节 计量说明
白名单优化 PNG 载荷 431,145 素材包内部像素文件
Opus 提示音载荷 385,758 素材包内部音频文件
包头、条目头及名称 3,222 打包元数据
platform_assets.pack 820,125 上述三项之和,包含于应用
六份在用 RLE 载荷 69,512 独立 C 数组链接入应用,不在素材包内
应用镜像 3,105,872 HUD 更新后的本次构建,包含 PNG、Opus、RLE、网页、代码及其他链接数据
单个 OTA 槽 4,718,592 应用余量 1,612,720 字节;不能把两个槽余量合并供一次 OTA 使用
独立语音模型镜像 2,681,351 model 分区容量 3,145,728 字节,不属于应用内图片包

文件总大小不能当作“当前整个 Flash 用量”;NVS、分区表、引导程序、模型和 其他分区另计,设备内容还取决于实际烧录/OTA。临时构建产物不应提交。

listening 压缩与旧方案对照

旧三张原 PNG 共 45,445 字节;旧优化 PNG 共 14,681 字节;新四份图层原始 RGB565+A8 像素共 255,528 字节,新 RLE 载荷共 50,176 字节。相对原始像素 减少约 80.4%,但比旧优化 PNG 多 35,495 字节,不能称为“比旧方案省 Flash”。 原旧 PNG 后备没有移出素材包,所以实际固件增量为 53,696 字节,不是仅比较 新旧素材大小的差。九张局部缓存共 335,412 字节 PSRAM,静态底图 87,822 字节, 常驻像素共 423,234 字节;初始化额外关键图 167,706 字节,随后释放。 当前没有新增 DMA 暂存区、合成缓冲或任务。它是用户已接受的空间换流畅度方案。

新增时间字形与电池图标(2026-10-09 HUD 更新)

素材来自用户提供的 battery_icons.zip,只导入 out/40x20/ 中明确列出的十张 PNG, 80×40 版本不入工程。源图与优化 PNG 均不加入 platform_assets.pack,避免重复计费; 实际链接生成的 C 只读数组。以下新增项不包含在上面的旧目录汇总里。

源图名称 原 PNG 字节 优化 PNG 字节 调色板+游程载荷字节
battery_1.png 704 687 805
battery_25.png 815 800 995
battery_50.png 594 571 927
battery_75.png 601 574 919
battery_100.png 543 524 806
battery_charging_1.png 1,206 1,197 1,300
battery_charging_25.png 1,367 1,344 1,500
battery_charging_50.png 1,333 1,319 1,363
battery_charging_75.png 1,451 1,437 1,477
battery_charging_100.png 1,359 1,353 1,350
合计 9,973 9,806 11,442

源 PNG:components/platform/assets/status_hud/battery_source/,十文件分配空间共 40,960 B;优化 PNG:同目录 battery_optimized/,十文件分配空间共 40,960 B。 颜色先按现有 RGB565 精度转换,完整保留 A8;调色板编码对 RGB565+A8 无损, 不等于 RGB888 转 RGB565 无损。游程往返与 PNG 优化像素一致性由生成脚本验证。 十图标原始 RGB565+A8 为 24,000 B,索引游程为 11,442 B,减少约 52.3%; 但比优化 PNG 大 1,636 B。这里选的是无需运行时解码缓存的折中,不是最小文件编码。

时间字形来自已安装 LVGL 的 lv_font_montserrat_14.c,只提取数字、冒号、横线, 4-bit Alpha 位图 425 B,十二个描述共 96 B(ESP32-S3 对象验证),原始字号不放大。 许可说明保留在 status_hud/LVGL-LICENSE.txt(不入固件)。 生成脚本 tools/prepare_status_hud_assets.py,验证用 --check;输入字体版本/格式 变化会触发断言,不能静默生成错误字形。

实际编译 components/platform/src/generated/lcd_status_assets.c:文本文件 75,630 B, 目标对象只读载荷 12,083 B,包括 425 B 字形、96 B 字形描述、11,442 B 图标数据、 120 B 图标描述;目标对象可写 data/BSS 为 0。它不属于上面的六份表情 RLE。 PNG 包仍为 820,125 B、75 PNG/32 Opus;只读资产已包含于整个应用,不再重复相加。

完整应用从 3,094,176 B 增至 3,105,872 B,净增 11,696 B(包含旧字形/绘制代码 移除和段对齐变化),OTA 槽剩余 1,612,720 B。新增常驻/初始化像素 PSRAM、普通堆、 内部/DMA 专用缓冲及静态可写数据均为 0;复用既有 HUD 和行缓冲。 局部栈、CPU 耗时和设备最低内存尚未新增实机测量,不应写成整体资源零成本。

新增抽签分层资产(2026-10-10)

以下新增项不合并进上面的历史目录汇总。旧抽签十八张源 PNG 共 372,012 B、 优化 PNG 共 136,226 B,全部保留且后备仍入包。PNG 包仍 820,125 B,不重复 加入本次拆分层。生成器使用优化 PNG 保存拆分层,但实际编译 LZ4,不是 RLE。

图层目录:components/platform/assets/lcd_layers/chouqian/。

图层 尺寸 优化 PNG B 本机分配 B RGB565+A8 B LZ4 载荷 B
pile.png 208×76 9,594 12,288 47,424 9,417
back.png 63×113 2,999 4,096 21,357 4,179
edge.png 41×110 2,957 4,096 13,530 4,389
front.png 100×190 7,579 8,192 57,000 10,774
question.png 27×50 730 4,096 4,050 817
rod.png 169×56 1,584 4,096 28,392 2,094
text_buyun.png 48×104 2,502 4,096 14,976 2,638
text_heping.png 48×104 2,784 4,096 14,976 2,851
text_shangshang.png 48×104 2,132 4,096 14,976 2,069
text_xiaoji.png 48×104 2,091 4,096 14,976 2,210
text_zhongshang.png 48×104 2,094 4,096 14,976 2,109
合计 十一图层 37,046 57,344 246,633 43,547

layout.json 1,929 B、分配 4,096 B,不入固件;目录共十二文件 38,975 B、 分配 61,440 B。预览工具默认输出 /tmp/lucky-fortune-preview,不是编译资产。 源十八 PNG 与本次拆分层不是相同数量的无损比较;背景/几何做了小幅性能适配。 LZ4 对转换后的 RGB565+A8 无损且完整保留 Alpha,但比拆分 PNG 多 6,501 B, 不能称为压得最小。生成器及实际 C 解码均做往返校验,原旧 PNG 不覆盖。

生成 C:components/platform/src/generated/emote_gfx/fortune_assets.c,文本 270,251 B、分配 270,336 B;目标对象只读段总计 43,831 B(载荷、176 B 资产 描述、20 B 目录指针、88 B 目录名),可写 data/BSS 为 0。生成 C 不手改。

本次完整应用 3,157,728 B,较 HUD 提交 3,105,872 B 增加 51,856 B,包含 资产、几何/解码、播放与 UART 显示测试命令的代码及对齐;单 OTA 槽余量 1,560,864 B。所有只读资源已经包含在应用里,不能再相加。

六共享层解压 171,753 B、一次仅选一份签文 14,976 B、208×220 RGB565 局部光栅缓冲 91,520 B,像素峰值合计 278,249 B PSRAM;目标编译器场景 描述 148 B 也在 PSRAM,明确申请峰值 278,397 B,不含堆管理。 正常结束/取消后释放,新增常驻像素为 0。临时 GFX 图片对象/状态/链节点 普通堆请求合计 96 B,不含分配器;LCD 静态可写数据增加 4 B 指针, 无新增内部/DMA 缓冲、合成整屏缓冲或任务;局部栈/CPU/实际最低余量另测。 解绑故障时保留绑定资源到重启,不冒充完整释放。

五签主机回归、IDF 5.5.4、日志关闭/GFX 关闭编译与应用烧录校验通过。 设备启动确认缓存成功、25 秒采样无显示锁/传输/崩溃错误;未捕获抽签运动 日志,FPS/五签观感/并行负载最低内存仍待实机验收。详见 抽签开发说明。

维护与后续清理(通用)

  1. PNG 新增/替换按 图片优化流程 生成并验证, 不能编辑优化产物代替修改源图。GFX 新增/替换使用对应压缩脚本和编码往返测试。
  2. 改白名单、图层、生成 C、音频或预览时更新分类、文件字节及载荷;重新构建时 同步镜像/包快照,记录常驻与峰值内存。不要把本文静态表当自动一致性校验。
  3. 当前后备 PNG 全保留;历史 C 与旧副本只标记,未授权不删。删除前核对引用、 GFX 关闭/故障后备以及收益,经过用户确认并完成迁移验收后再修改构建及资源表。
  4. 清理优先区分“不再入固件”与“删除可编辑源文件”。前者有 Flash 收益,后者 可能仅省开发机空间,不能混为一谈。保留 Git 可恢复记录,并验证正常/故障路径。
  5. 这里没有安排立即清理、批量迁移所有表情或加入完整字库;当前仅按用户要求提取 Montserrat 数字子集。