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>
Require fretboard in normal mode per manual; use SetPiecePlayMode for 1.bin. ACK ui boot/charge before full-screen draw, add RTT flash all and tone pick free, and skip soft-off while ExtFlash transfer is busy.
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>
Require left-hand pad held (PressFlag) before pick starts; skip the default I-chord fallback in normal mode. Release (key 0) stops AutoBand immediately instead of looping.
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>
Bump firmware version after BT recv stack/log fixes and pitch/chord bounds so Phoenix Atelier map/LED traffic no longer stack-smashes the MCU.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enlarge BT recv stack, move large handlers/log buffers off the stack, clamp key indexes, and yield in W25Q busy-wait so BLE protocol tests stay stable.
Co-authored-by: Cursor <cursoragent@cursor.com>
Update pack/publish to enforce 41KB song limit, verify 1/2/3.bin at fixed addresses, and emit .res aliases for the tone and ALL extflash images.
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>
TaskBTRecvThread previously started only after mode select, so GATT SysEx never reached the parser until then; verified BLE-MIDI 01 01 now replies with GATT notify.
Co-authored-by: Cursor <cursoragent@cursor.com>
Font table had wrongly mapped GBK 议 (D2E9) as 择; remap to D4F1 and regenerate the MiSans glyph so 弦音色选择/歌曲选择 render fully.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse the unused Language slot as BluetoothSW, sync top-bar icon from the saved switch, and keep factory restore defaulting Bluetooth to on.
Co-authored-by: Cursor <cursoragent@cursor.com>
Sync faders on shutdown and re-apply LoadConfig after DSP boot so
saved mixer levels and master pot stay consistent after power-off.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drive measure-synced Loop_Light for TAB 0 (and settings entered from it) using the same 1645/1564/1364 rules as normal mode.
Co-authored-by: Cursor <cursoragent@cursor.com>
When no left-hand chord is selected, Pick_Handle uses index-1 major (same as preamble) so strumming still starts Autoband.
Co-authored-by: Cursor <cursoragent@cursor.com>
PowerOff was calling nvic_system_reset after cutting rails, and boot auto power-on made it look like a restart.
Co-authored-by: Cursor <cursoragent@cursor.com>
Centers 40/100/160/210, SECTION_Y 231, and SET_ROW 16x207 so play/settings pages match the standard art.
Co-authored-by: Cursor <cursoragent@cursor.com>
UI shows LocalSongNames instead of bare indices; pack regenerates the header; WQY font gains the four display characters.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pick fires on downstroke; #IV drops an octave; local songs use 2.bin; transpose updates notes without restart; intro starts on key I; boot string volume/PC corrected.
Co-authored-by: Cursor <cursoragent@cursor.com>
Settings hub/mixer/system/restore match 0904 layouts; regenerate Chinese bitmaps without shrinking native 16px cells so strokes stay continuous.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match card/row/section positions and sizes from the 240x320 reference, restore 16px hero values, and place the 和弦走向 title above the row like timbre.
Co-authored-by: Cursor <cursoragent@cursor.com>
Apply measured 240x320 geometry for cards, tabs, rows, and section buttons, and recenter text so KEY/BPM, battery %, and row labels no longer clip.
Co-authored-by: Cursor <cursoragent@cursor.com>