Boot and song changes use the universal and rhythm BPM tables, with style 20 at 91. Factory restore and power-on now follow the persistence sheet, and the firmware version is 0.2.49.
Co-authored-by: Cursor <cursoragent@cursor.com>
The charging glyph kept a fixed yellow bar. Clear that bar from the icon and paint the cavity from the current percent, in the same yellow as the bolt.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep the NVM sector out of the application image and arm a backup register that survives reset, so confirm stays in flash mode even when round key 4 is not held.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match the requirement screen using the settings-hub method, and keep the glyphs 1-bit so the image still fits in application flash.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show the real battery percent, shut down at 6.8V even while Type-C is connected, and leave the charge screen dark so it does not drain the pack. Initialize the amplifier only after the 12V rail has settled.
Co-authored-by: Cursor <cursoragent@cursor.com>
Bump firmware to 0.2.31. Skip the color LED sequence on USB power-on so a depleted pack can leave the logo screen and charge normally.
Co-authored-by: Cursor <cursoragent@cursor.com>
Bump firmware to 0.2.30. The 11px font now has the update glyphs, and the flashed boot image stays in USB programming when that mode is saved.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match the card box to the reference, put the value on the same center line as the arrow and plus-minus chips, and use MiSans for the 16px digits.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove divider lines, add language and USB-update confirm pages, and store both in NVM so boot can enter IAP.
Co-authored-by: Cursor <cursoragent@cursor.com>
Boot color sequence last frame was cyan; use mode-select green instead.
Mixer fader drag returned before ResetAutoPowerCount, so sliding volume could still hit auto power-off.
Co-authored-by: Cursor <cursoragent@cursor.com>
NavBar no longer forces I after stop; remember context before leave and prefer saved fret chord on no-fret pick.
Co-authored-by: Cursor <cursoragent@cursor.com>
Init TM1629 before POWER_ON and run the color sequence during the logo dwell instead of after mode select.
Co-authored-by: Cursor <cursoragent@cursor.com>
On POWER_ON, fret-side LEDs follow the sample-unit '开机彩灯' sequence instead of jumping straight to solid green.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace the old 11x17 glyph and gray slash with dedicated on 13x20 and off 19x20 assets from the 0923 pack.
Co-authored-by: Cursor <cursoragent@cursor.com>
TM1617 keys injected fake touches at y=255 which slammed mixer sliders to 1. Lock the pressed fader until release and shrink overlapping hit boxes.
Co-authored-by: Cursor <cursoragent@cursor.com>
Hit area on mode/home/settings hub; off state uses gray icon + slash until a disabled asset is ready. Syncs system setting and NVM.
Co-authored-by: Cursor <cursoragent@cursor.com>
Disable LOOP_LIGHT rhythm chasing in free mode so LEDs stay solid green instead of moving with the beat.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep fretboard LEDs all green during outro, and for expert local songs treat section-key + fret changes as continuous chord updates like rhythm mode (no mid-session Stop).
Co-authored-by: Cursor <cursoragent@cursor.com>
App writes for timbre/BPM/transpose/style were refreshing LCD and
reloading tone packs on the 768B BLE recv stack, causing overflow and
crashes. Route heavy work through MSG_ID_BLE_* into the UI task, and
notify App when the device changes rhythm style.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace the status-bar outline+fill with the 0918 lightning battery bitmap while charging, and fix Pre-Build git version script UTF-8 decoding on Chinese Windows.
Co-authored-by: Cursor <cursoragent@cursor.com>
Apply Accomp_ApplyDefaultIChord before SyncStart on preamble, on soft power-on/mode enter/nav switch, and on pick fallback. Reset TM1629 key edge state so soft-off residual key_last cannot stick a prior fret.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use Stop_AutoBand (engine stop + all-channel AllNotesOff) when changing nav mode, reloading tone presets, switching songs/progressions, or returning to mode select. Also fix AllNotesOff to address all 16 MIDI channels.
Co-authored-by: Cursor <cursoragent@cursor.com>
Nav-bar mode switches bypassed the legacy TAB path that called all-on green, so LOOP_LIGHT red LEDs stuck until reboot.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match dual-bank tone ROM so accompaniment volume scaling no longer shares patches with the main string voice; bass program updated to 34.
Co-authored-by: Cursor <cursoragent@cursor.com>
Consume the same power-key hold used for soft-off charge boot before setting powon, and ignore stale POWOFF_CHARG after power-on so mode select stays on screen.
Co-authored-by: Cursor <cursoragent@cursor.com>
Settings showed only 关 because GBK 闭 was absent from CHS font tables; append WenQuanYi bitmaps for all sizes and keep the patch helper.
Co-authored-by: Cursor <cursoragent@cursor.com>
TMR7 high-prio watchdog and fault-loop emergency cut/reset so soft-off still works if the main loop or AutoBand ISR dies; skip start when preset load fails.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ignore TM1629 keys 0-21 in universal so pad no longer changes KEY_ID or arms OutTime_Stop; keep tap-tempo and stop. Clear stale KEY_ID/PressFlag when entering universal tab.
Co-authored-by: Cursor <cursoragent@cursor.com>
Exit piece mode before Postamble so universal chord loops can switch into the style outro stage once 3.bin has PostambleMIDI.
Co-authored-by: Cursor <cursoragent@cursor.com>
When switching from a longer title to a shorter one, the old gradient-only clear left uncovered glyph fragments outside the pill bounds.
Co-authored-by: Cursor <cursoragent@cursor.com>
Log Flash magic on load failure, expose RTT flash bin3, and document the 0903 pack offset for the universal bank.
Co-authored-by: Cursor <cursoragent@cursor.com>
The ROW_BG full-width fill over the universal row top corners showed as a second separator under the status bar; source art no longer needs it.
Co-authored-by: Cursor <cursoragent@cursor.com>
Matches 0902-07: restore is a drill-in row with thin > (ICON_CHEVRON), not the prev/next filled triangle.
Co-authored-by: Cursor <cursoragent@cursor.com>
Fixes the left-biased index+name layout, unifies index-name gap across rows, and shifts play-section numbers +2px per UI markup.
Co-authored-by: Cursor <cursoragent@cursor.com>
Point system-settings rows at the correct Flash icons, keep Main/UI alive across soft-off, and expose git build id for 01 0C with matching BLE tests.
Co-authored-by: Cursor <cursoragent@cursor.com>