From d52802fed38549e28f40f7cfa03c050d7e1adc05 Mon Sep 17 00:00:00 2001 From: pelgraine <140762863+pelgraine@users.noreply.github.com> Date: Tue, 15 Sep 2026 19:09:17 +1000 Subject: [PATCH] Update readme. Update build date. Fix stale comments in Max ini. --- README.md | 24 ++++++++++++++---------- examples/companion_radio/MyMesh.h | 2 +- variants/lilygo_tdeck_max/platformio.ini | 24 ++++++++++-------------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index e95e948a..51cf3f68 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ A fork created specifically to focus on enabling BLE & WiFi companion firmware f - [Per-Channel Notification Preferences (v1.10+)](#per-channel-notification-preferences-v110) - [Custom Notification Tones (v1.10+)](#custom-notification-tones-v110) - [Games (v1.10+)](#games-v110) - - [Game Boy / Game Boy Color Emulator (T-Deck Max, v1.14+)](#game-boy--game-boy-color-emulator-t-deck-max-v114) + - [Game Boy / Game Boy Color Emulator (v1.14+)](#game-boy--game-boy-color-emulator-v114) - [Private Channels (v1.11+)](#private-channels-v111) - [Channel Sharing via DM (v1.11+)](#channel-sharing-via-dm-v111) - [Config Export/Import (v1.11+)](#config-exportimport-v111) @@ -582,15 +582,15 @@ Press **J** from the home screen (or tap the **Games** tile) to open the games m On the T-Deck Max the board is larger, with a 15x20 grid and 50 mines. -#### Game Boy / Game Boy Color Emulator (T-Deck Max, v1.14+) +#### Game Boy / Game Boy Color Emulator (v1.14+) -The third entry on the Max's games menu is **Game Boy**: an emulator built on the [Peanut-GB](https://github.com/deltabeard/Peanut-GB) core that runs original Game Boy (`.gb`) and Game Boy Color (`.gbc`) games at their real speed. Game Boy Advance (`.gba`) is a different machine and is not supported. In this release it is **T-Deck Max only** and has **no sound**; both are on the road-map. +The third entry on the games menu is **Game Boy**: an emulator built on the [Peanut-GB](https://github.com/deltabeard/Peanut-GB) core that runs original Game Boy (`.gb`) and Game Boy Color (`.gbc`) games at their real speed. Game Boy Advance (`.gba`) is a different machine and is not supported. It runs on the T-Deck Pro and the T-Deck Max. **Sound is T-Deck Max only** in this release; the Pro's audio variants can do sound but it is not yet wired up, and the Pro 4G variants have no audio hardware. **Getting games.** No game is bundled -- you supply your own ROM files. Two free homebrew titles that run well: [uCity](https://github.com/AntonioND/ucity) (GPL-3.0, a Game Boy Color city builder; the `.gbc` is on its Releases page) and [Halo: Combat Devolved](https://sofaswordsman.itch.io/halo-combat-devolved) (a free 2 MB Game Boy Color demake; download the ROM from the page). Anything else is up to you and your own copies. **Storing games.** Put ROM files in a folder named **`roms`** at the top level of the SD card. The list shows `.gb` and `.gbc` files in that folder only (no subfolders), up to 32 of them, with filenames under 48 characters; longer names are skipped without a message, and the `._` metadata files macOS leaves on FAT cards are ignored. -**Running a game.** Open the games menu, choose **Game Boy**, move to a ROM with **W / S** and press **Enter**. The first picture takes a moment while the ROM loads. While a game runs the **LoRa radio is in standby and the mesh is paused** -- the node receives nothing and relays nothing until you quit, when both resume. The CPU is held at 240 MHz for the duration, so expect higher battery drain than normal use. +**Running a game.** Open the games menu, choose **Game Boy**, move to a ROM with **W / S** and press **Enter**. A "Loading..." box shows while the ROM is read from the card (a second or two for a large game). The **mesh keeps running** while you play -- messages still arrive, the header shows the unread count -- but notification tones and the "new message" pop-ups are held back so they do not interrupt the game. The CPU is held at 240 MHz for the duration, so expect higher battery drain than normal use. | Key | Game Boy button | |-----|-----------------| @@ -603,11 +603,13 @@ The third entry on the Max's games menu is **Game Boy**: an emulator built on th Keys are held-to-hold, so walking and holding a button together work as they would on the real thing. In-game button meanings are the game's own; on the Game Boy convention A confirms, so **K** selects on most menus. Press **Q** again on the ROM list to return to the games menu. -**What the picture looks like.** The game is drawn at 1.5x (240x216, the full width of the panel) in black and white, with an ordered dither standing in for the Game Boy's shades, so lighter colours read as fine stipple. Because e-ink can only redraw about once every 0.7 seconds, the picture updates roughly 1.4 times a second while the game itself runs at the full 59.7 frames per second underneath -- fast animation is shown as a series of snapshots, but timing, music-free gameplay and text boxes are unaffected. Every 30 seconds or so, and again when you quit, the screen does a full black-and-white flash to clear the ghosting that partial updates leave behind; the game keeps running through it. In dark mode the picture is inverted along with everything else. +**Sound (T-Deck Max).** Games start **muted**; press the **Mic** key to unmute, and again to mute. The footer shows which the key will do. Sound is Game Boy Color chiptune only, at a level well below the notification tones. -**Saves.** Games that save to cartridge RAM keep their saves: a **`.sav` file is written next to the ROM** when you quit (`game.gbc` becomes `game.sav`) and loaded on the next launch. It is the standard raw cart-RAM format desktop emulators use, so saves can be copied between the Max and a PC in either direction. Saves are written on quit only -- power off mid-game and that session's progress is lost. Real-time-clock state (the day/night cycle in Pokemon Gold, Silver and Crystal) is not persisted; the in-game clock restarts each time. +**What the picture looks like.** The game is drawn at 1.5x (240x216, the full width of the panel) in black and white, with an ordered dither standing in for the Game Boy's shades, so lighter colours read as fine stipple. Because e-ink can only redraw about once every 0.7 seconds, the picture updates roughly 1.4 times a second while the game itself runs at the full 59.7 frames per second underneath -- fast animation is shown as a series of snapshots, but timing, gameplay and text boxes are unaffected. When you quit, the screen does a full black-and-white flash to clear the ghosting that partial updates leave behind. Games with a lot of moving sprites (Pokemon Gold's overworld, say) show some ghosting of the moving parts while you play; this is a limit of e-ink at this speed, not a fault. In dark mode the picture is inverted along with everything else. -**Limits in this release.** T-Deck Max only; no sound; one ROM folder, 32 ROMs, no subfolders; a 2 MB game needs a 2 MB block of PSRAM, which is reserved on the first launch after boot and kept, so launching any game early guarantees the big ones work later. +**Saves.** Games that save to cartridge RAM keep their saves: a **`.sav` file is written next to the ROM** (`game.gbc` becomes `game.sav`) and loaded on the next launch. It is the standard raw cart-RAM format desktop emulators use, so saves can be copied between the device and a PC in either direction. The file is written in the background a short while after you save in the game (and again on quit if anything is still unsaved), so you normally do not need to quit to preserve progress; but the write only happens once the game has been idle for a moment, so it is safest to pause before powering off. Real-time-clock state (the day/night cycle in Pokemon Gold, Silver and Crystal) is not persisted; the in-game clock restarts each time. + +**Limits in this release.** Sound on the T-Deck Max only; one ROM folder, 32 ROMs, no subfolders; a 2 MB game needs a 2 MB block of PSRAM, which is reserved on the first launch after boot and kept, so launching any game early guarantees the big ones work later. The emulator needs 240 MHz to run at full speed and is omitted from the games menu on the 40 MHz battery-saver builds. ### Private Channels (v1.11+) @@ -909,7 +911,7 @@ The home screen includes a **Shutdown** page. Selecting it powers the device off The LilyGo T-Deck Max is a close relative of the T-Deck Pro: same 240×320 e-ink panel and TCA8418 keyboard, same ESP32-S3, and the same on-device UI. **All the [T-Deck Pro](#t-deck-pro) keyboard controls and screens apply unchanged** — this section only covers what's different on the MAX. -The Max is also, as of v1.14, the only Meck device with the [Game Boy emulator](#game-boy--game-boy-color-emulator-t-deck-max-v114). +The Max is also, as of v1.14, the only Meck device that plays [Game Boy emulator](#game-boy--game-boy-color-emulator-v114) sound (the emulator itself also runs on the T-Deck Pro). The headline difference is that the MAX carries both an A7682E 4G modem **and** an ES8311 audio codec, wired through an XL9555 I/O expander so they can run at the same time. On the T-Deck Pro the audio DAC and the 4G modem share one hardware slot and are mutually exclusive; on the MAX you get the SMS & phone app, the audiobook player, the alarm clock, **and** cellular data on a single device. The MAX also adds a CST328 capacitive touchscreen, three capacitive front buttons, a DRV2605 haptic motor for vibrate alerts, an e-ink frontlight, and a 1500 mAh battery. @@ -1409,8 +1411,10 @@ There are a number of fairly major features in the pipeline, with no particular - [X] Custom notification tones per channel -- audio variant (MP3) and 4G variant (WAV via modem) (v1.10) - [X] Games menu with Snake and Minesweeper (v1.10) - [X] Game Boy / Game Boy Color emulator, T-Deck Max (v1.14) -- see [Games](#games-v110) -- [ ] Game Boy emulator on the T-Deck Pro -- [ ] Game Boy emulator sound through the ES8311, with the mic key as mute +- [X] Game Boy emulator on the T-Deck Pro (v1.14; sound not yet on the Pro) +- [X] Game Boy emulator sound on the T-Deck Max, through the ES8311, mic key to mute (v1.14) +- [ ] Game Boy emulator sound on the T-Deck Pro audio variants (PCM5102A) +- [X] Emulator omitted from the games menu on the 40 MHz battery-saver builds (v1.14) - [ ] Game Boy real-time-clock state in save files - [X] MAX_GROUP_CHANNELS expanded to 40 for all builds (v1.10) - [X] Private channel support with random secret generation (v1.11) diff --git a/examples/companion_radio/MyMesh.h b/examples/companion_radio/MyMesh.h index 13a1f5af..f65b43ee 100644 --- a/examples/companion_radio/MyMesh.h +++ b/examples/companion_radio/MyMesh.h @@ -8,7 +8,7 @@ #define FIRMWARE_VER_CODE 11 #ifndef FIRMWARE_BUILD_DATE -#define FIRMWARE_BUILD_DATE "13 Sept 2026" +#define FIRMWARE_BUILD_DATE "15 Sept 2026" #endif #ifndef FIRMWARE_VERSION diff --git a/variants/lilygo_tdeck_max/platformio.ini b/variants/lilygo_tdeck_max/platformio.ini index 08bf1a95..6dce5ddf 100644 --- a/variants/lilygo_tdeck_max/platformio.ini +++ b/variants/lilygo_tdeck_max/platformio.ini @@ -5,7 +5,7 @@ ; ; Key differences from LilyGo_TDeck_Pro (V1.1): ; - Peripheral power controlled via XL9555 (not direct GPIO) -; - 4G modem and ES8311 audio coexist (no longer mutually exclusive) +; - 4G modem and ES8311 audio work at the same time (not mutually exclusive) ; - ES8311 I2C codec replaces PCM5102A (different I2S pins, needs I2C config) ; - Several GPIO reassignments (see variant.h for full map) ; - 1500 mAh battery (was 1400) @@ -16,13 +16,10 @@ ; SD card, text reader, notes, contacts, channels, settings, discovery, ; last heard, repeater admin, web reader (WiFi builds), OTA update. ; -; NEEDS ADAPTATION (future work): -; - HAS_4G_MODEM: ModemManager uses direct GPIO for MODEM_POWER_EN/PWRKEY -; which are XL9555-routed on MAX. Needs board.modemPowerOn() etc. -; - MECK_AUDIO_VARIANT: ES8311 needs I2C codec init (PCM5102A didn't). -; I2S pins are different. AudiobookPlayerScreen needs ES8311 driver. -; - Combined 4G+audio: existing #ifdef guards treat them as mutually -; exclusive. Needs restructuring for coexistence. +; 4G (Phone/SMS) and ES8311 audio both work, at the same time: the modem is +; powered and its POWERKEY toggled via the XL9555 expander, and the ES8311 +; is initialised over I2C. Audio output is switched between the modem and +; the codec by the XL9555 AUDIO_SEL line as needed. ; ============================================================================= ; --------------------------------------------------------------------------- @@ -134,7 +131,7 @@ build_flags = -D ARDUINO_LOOP_STACK_SIZE=32768 -D HAS_MECK_FONTS ; Audio: ES8311 I2C codec (MAX). Enables the audio variant code paths and - ; the native ES8311 init. 4G modem stays disabled until audio is solid. + ; the native ES8311 init. The 4G modem runs alongside it (HAS_4G_MODEM). -D MECK_AUDIO_VARIANT=1 -D HAS_ES8311_AUDIO=1 build_src_filter = ${esp32_base.build_src_filter} @@ -158,13 +155,12 @@ lib_deps = ; =========================================================================== -; Meck MAX builds — LoRa mesh works out of the box on all variants. -; 4G modem and ES8311 audio need adaptation before they can be enabled. +; Meck MAX builds — LoRa mesh, 4G modem and ES8311 audio all work on every +; variant (the modem and codec share one board via the XL9555 expander). ; =========================================================================== -; MAX + BLE companion (standard BLE phone bridging) -; Both 4G + audio hardware present but not yet enabled in firmware. -; BLE_PIN_CODE limit: MAX_CONTACTS=500 (BLE protocol ceiling). +; MAX + BLE companion (standard BLE phone bridging). +; 4G modem and ES8311 audio both active. [env:meck_max_ble] extends = LilyGo_TDeck_Pro_Max build_flags =