* Snake!

* Add spiLock to snake score saving

* Check fixes

* More careful locking

* WIP: Big Display Node

* Update src/graphics/HUB75Display.cpp

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Add HUB75 Native

* Add Tetris game module with core logic and UI integration

- Implement TetrisGame class for game logic, including piece movement, rotation, and line clearing.
- Create TetrisModule class to manage game state, input handling, and rendering on OLED display.
- Introduce high score tracking with persistence and optional mesh broadcasting.
- Define UI states for title, playing, paused, game over, and high scores.
- Implement input handling for game controls and state transitions.
- Add rendering functions for the game board, high scores, and title screen.

* feat(snake): add snake graphics and update display logic in SnakeModule

* Prompt for Initials for Tetris, too

* refactor games module

* Games refactor

* hub75 native double buffer

* Games tuning

* Make joystick repeat events on held button

* Add clouds and colors

* Fix breakout and more color

* difficulty tuning

* trunk

* refactor game announcements, etc

* Scale chirpy gravity as game speed increases

* Portduino, check for hub75 display before reading in hub75 options

* Final(?) games tuning

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Properly ignore input when games screen not shown

* Fail gracefully when HUB75 is selected but not supported.

---------

Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Ixitxachitl <kramerfm@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Jonathan Bennett
2026-07-16 18:35:33 -05:00
committed by GitHub
co-authored by GitHub Thomas Göttgens coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Ixitxachitl Copilot Autofix powered by AI
parent d3d02af817
commit 8d1fbbf55f
41 changed files with 4106 additions and 34 deletions
+24 -1
View File
@@ -153,6 +153,30 @@ Display:
### You can also specify the spi device for the display to use
# spidev: spidev0.0
### HUB75 RGB LED matrix panel (Raspberry Pi only, via hzeller/rpi-rgb-led-matrix).
### Requires the librgbmatrix library to be installed (so `pkg-config rgbmatrix` resolves) and
### the firmware built with it present. meshtasticd must run as root (or with /dev/gpiomem
### access) and on-board audio disabled (dtparam=audio=off) so it doesn't fight the PWM timing.
### The library owns the GPIO pins - they are chosen by HardwareMapping, not set individually.
# Panel: HUB75
# HUB75:
# HardwareMapping: adafruit-hat-pwm # regular | adafruit-hat | adafruit-hat-pwm | regular-pi1 ...
# Rows: 64 # pixel rows per panel (e.g. 32 or 64)
# Cols: 64 # pixel columns per panel
# ChainLength: 1 # panels daisy-chained (width = Cols * ChainLength)
# Parallel: 1 # parallel chains (height = Rows * Parallel)
# Brightness: 80 # percent, 1..100
# PWMBits: 11 # lower = higher refresh, fewer colors
# GPIOSlowdown: 4 # raise for faster Pis / long cables if the panel ghosts or flickers
# RGBSequence: RGB # reorder if your panel's colors are swapped (e.g. RBG, BGR)
# ScanMode: 0 # 0=progressive, 1=interlaced
# RowAddressType: 0 # 0=default, 1=AB-addressed (some 64x64 panels)
# Multiplexing: 0 # 0=direct, 1=stripe, 2=checker, ...
# PanelType: "" # e.g. FM6126A for panels needing a special init
# PixelMapper: "" # e.g. "U-mapper;Rotate:90"
# LimitRefreshRateHz: 0 # 0 = no limit
# DisableHardwarePulsing: false
Touchscreen:
### Note, at least for now, the touchscreen must have a CS pin defined, even if you let Linux manage the CS switching.
@@ -167,7 +191,6 @@ Touchscreen:
### You can also specify the spi device for the touchscreen to use
# spidev: spidev0.0
Input:
### Configure device for direct keyboard input