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

483 lines
30 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 显示与音频资产台账
## 范围、日期与计量口径
这是 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 开发指南](GFX表情显示应用与开发指南.md#旧资源保留整理与迁移完成条件)。
## 目录汇总
| 类别 | 文件数 | 文件字节合计 | 本机分配字节合计 | 当前用途 |
| --- | ---: | ---: | ---: | --- |
| 原始 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/五签观感/并行负载最低内存仍待实机验收。详见
[抽签开发说明](抽签分层动画开发说明.zh-CN.md)。
## 维护与后续清理(通用)
1. PNG 新增/替换按 [图片优化流程](lcd-image-asset-optimization.zh-CN.md) 生成并验证,
不能编辑优化产物代替修改源图。GFX 新增/替换使用对应压缩脚本和编码往返测试。
2. 改白名单、图层、生成 C、音频或预览时更新分类、文件字节及载荷;重新构建时
同步镜像/包快照,记录常驻与峰值内存。不要把本文静态表当自动一致性校验。
3. 当前后备 PNG 全保留;历史 C 与旧副本只标记,未授权不删。删除前核对引用、
GFX 关闭/故障后备以及收益,经过用户确认并完成迁移验收后再修改构建及资源表。
4. 清理优先区分“不再入固件”与“删除可编辑源文件”。前者有 Flash 收益,后者
可能仅省开发机空间,不能混为一谈。保留 Git 可恢复记录,并验证正常/故障路径。
5. 这里没有安排立即清理、批量迁移所有表情或加入完整字库;当前仅按用户要求提取 Montserrat 数字子集。