Root cause: each GAME+MIC toggle ran two synchronous Flash writes (hi_perf + dac_vol) in the 20ms timer, blocking AudioHwRemote2. Now apply DAC with brief mute only, defer hi_perf Flash, and skip redundant dac_vol save when user level unchanged.
Co-authored-by: Cursor <cursoragent@cursor.com>
GAME+MIC toggles high_perf_mode (default off, saved to Flash). When on, DAC uses user HID level and D11 lights; when off, hardware level is user level minus 6 steps (max -6dB, floor at level 0). g_volume_level keeps the user level for HID and persistence.
Co-authored-by: Cursor <cursoragent@cursor.com>
Unify combo_key_suppress for GAME+MIC, FPS+MIC, VOL+/VOL-, and FPS+GAME factory reset. Arm on combo detect or factory-reset start; poll until all involved keys release so staggered release does not fire short presses.
Co-authored-by: Cursor <cursoragent@cursor.com>
Map feature bar 0-12 to CMD_LMT_THRESHOLD (-35..0) and CMD_EXPAND_GAIN (0..20). Panel VOL+/- saves to Flash, syncs tile1 via 0xFA/0xFD, and reports 0xB1 GET to host. HID SET from eq.c also persists and applies.
Co-authored-by: Cursor <cursoragent@cursor.com>
After COMBO_FPS_MIC fires, ignore FPS and MIC edge handling until both keys are fully released, preventing stray feature-mode or mic-mute short presses on staggered key release.
Co-authored-by: Cursor <cursoragent@cursor.com>
Short-press FPS and MIC together toggles g_3d_enable (default on), syncs to tile1 via cc_mic_level 0xFB, and calls audio_ex3d_set_onoff on tile1. D8 green LED shows EX3D on; off when disabled.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remember last active feature on timeout or combo exit. FPS short press from NONE restores that mode; cycling stays on SYSTEM..MIC only so MIC no longer steps through NONE (double-press issue).
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace factory-reset elapsed-time comparison with 20ms scan-tick counting. The previous code used 32-bit elapsed against 6s/10s/10.6s 64-bit constants, so trigger thresholds were unreachable and countdown got cancelled instead of firing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reset feature_timeout_ticks to 0 whenever VOL+ or VOL- causes an effective step in feature mode (short press and repeat), so active adjustments do not timeout and exit feature mode unexpectedly.
Co-authored-by: Cursor <cursoragent@cursor.com>