v1.1.0-rp2040 — Coordinate fix + UX overhaul
Pre-releaseWhat's new in v1.1
🐛 Critical bug fix: column-mirror coordinates
A long-standing bug in the upstream Concept-Bytes firmware (and v1.0.0-rp2040) had all chess notation mirrored across the a-h axis. The Concept-Bytes PCB v1 wires the sensor matrix and LED strip such that physical file a lands on internal column 7, file h on column 0. The upstream firmware never accounted for this.
Effect: when the serial said Player moved P from a7 to a5, you had actually moved h7-h5. The board worked because the mirror was self-consistent (Stockfish saw the mirrored position and replied with valid mirrored moves), but the chess notation in serial logs was wrong, and any future Web UI or PGN export would have shown the wrong moves.
Fixed at the driver layer (board_driver.cpp) — both readSensors() and getPixelIndex() now mirror col to 7 - col. All 36 callers (engine, chess_moves, chess_bot, animations) untouched — the fix is fully encapsulated in BoardDriver.
Affects every previous release including v1.0.0-rp2040 and the entire upstream Concept-Bytes/Open-Chess history.
✨ UX overhaul
- Setup hint at boot: 16 LEDs on the white side glow soft white, 16 on the black side glow red. Each square goes dark as you place its piece. No more guessing where pieces go.
- Convergent rainbow explosion when all 32 pieces are placed: 4 collapsing rainbow rings (red→orange→yellow→green), then 4 diagonal beams from the corners (magenta/cyan/amber/lime), then a white shockwave outward, ending with a triple pulse on the 2 selectors. ~3.5 seconds.
- Simplified 2-option menu: D5 lights for Human-vs-Human, E4 lights for AI mode. Sensor Test removed from the menu (still available in the code for development).
- Sticky menu: lifting a piece to use as a selector no longer regresses to the setup hint.
- Reset gesture: while playing, put all 32 pieces back to starting squares for >1.5 s and the board drops back to the menu (re-runs the explosion). Lets you finish a game and pick a different mode without power-cycling.
- Boot banner prints firmware version + fork name on serial.
📖 Docs
docs/MANUAL.mdWiFi setup section completely rewritten:- Prerequisites (2.4 GHz only, special chars in passwords, Arduino CLI install)
- 6-step quick setup
- Common failure modes (5 GHz networks, captive portals, WPA Enterprise, phone hotspots)
- Troubleshooting table by
WL_*status code so users can self-diagnose - Security note: don't share compiled
.uf2because it contains your WiFi password in plaintext
How to flash
Drag-and-drop OpenChess-v1.1.0-rp2040.uf2 onto the RPI-RP2 USB drive after double-tapping the white reset button. See the Quick Start for details.
⚠️ The pre-built.uf2does not include WiFi credentials. AI mode requires you to compile from source witharduino_secrets.hconfigured — see the WiFi setup walkthrough in the manual.
Verified
Sketch uses 149838 bytes (0%) of program storage space.
Global variables use 44648 bytes (16%) of dynamic memory.
=== Self-tests complete: 10/10 passed ===
Tested on Arduino Nano RP2040 Connect, WiFiNINA firmware 3.0.1, Concept-Bytes PCB v1.
Migration from v1.0.0-rp2040
- Re-flashing is safe; no state migration needed.
- The chess notation in your serial monitor will now show the correct file letters (a-file on the left when looking from white's side, h-file on the right). No gameplay change.
Source
Branch feat/v1.1-coord-fix-and-ux