๐๏ธ Kenapa harus flash ulang?
Semua animasi disimpan sebagai frame JPEG dan ditanam di firmware saat build. Hasilnya tajam dan cepat, tapi tiap animasi baru berarti build + flash ulang. Butuh ganti animasi dari kartu SD tanpa flash? Itu keunggulan Mochi rzmong.
Ruang app 4.128.768 B. Build 0.7.1 memakai 94,7% (termasuk BLE).
๐งช Langkah
โน๏ธ Panduan lengkap langkah demi langkah (GIF, suara di root kartu, musik, Chronos): Animasi & suara.
firmware/assets/builtin/jpeg/<tema>/<nama>.mjpeg + .json:python tools/import_jpeg_clip.py <tema> <nama> sumber.gif --quality 80Sumber boleh GIF, folder JPEG/PNG, atau header C. Opsi:
--resize, --crop, --step, --hold, --delay.firmware/assets/meta.json โ "jpeg_clips": ["<tema>", "<nama>", "", <trek>]. Peran: "" biasa, "dizzy" saat goyang, "heart" saat tahan. Trek boleh dikosongkan.cd firmware && pio run -e esp32-c3-dfplayer -t upload.python tools/daftar_trek.py. Klip baru mendapat trek 0049 dst.; salin 000N.mp3 ke root setelah 0048.โน๏ธ Klip satu tema selalu dikelompokkan; tema baru masuk di akhir urutan model. "boot_theme" di meta.json menentukan model saat nyala.
๐ฆ Kalau flash penuh
tools/embed_jpeg.py punya anggaran byte (custom_jpeg_budget di platformio.ini, sekarang 3.300.000). Jika klip melebihinya, frame yang nyaris sama dengan frame sebelumnya dipakai ulang, mulai dari yang paling mirip. Jumlah frame dan tempo tetap; file aset tidak diubah.
ANGGARAN: 3427066 B > 3300000 B -> frame nyaris sama (<= 0.3% piksel) dipakai ulang, jadi 3262956 B
Jika tetap tidak muat walau ambang 10%, build berhenti dengan pesan. Kurangi klip, atau naikkan anggaran lalu pastikan app masih muat.
๐งฐ Alat bantu
cd firmware python tools/daftar_trek.py # tabel model โ trek โ nama file python tools/daftar_trek.py --sd /media/SD # cek root 0001-0048, /01 dan sampah macOS
Skrip ini hanya membaca: include/jpeg_clips.h hasil build, atau assets/meta.json jika belum build.