mirror of
https://github.com/pelgraine/Meck.git
synced 2026-10-30 19:52:01 +01:00
Follow-up to the v1.14 emulator commits. T-Deck Max unless noted.
MEMORY AND STABILITY (GBCEmulatorScreen.cpp)
- Emulator task stack is now 8 KB, static, reserved at boot. Once
Bluetooth has been switched on in a boot its stack stays resident
(SerialBLEInterface::disable() never releases it) and a later game
launch could not find 12 KB of internal RAM in one piece. Measured
use is about 2 KB.
- Core context released on every failed launch, not just on quit; a
failure no longer holds 50 KB.
- No periodic full refresh during play (too distracting). The full
refresh on quit stays, to clear ghosting before the ROM list.
SAVES
- .sav written in the background: cart-RAM writes mark it dirty and
the UI task writes the file once the game has left its cart RAM
alone for 2 s, i.e. shortly after the user saves in-game. Quit
writes only if still dirty, and no longer draws and refreshes an
intermediate "Saving..." frame (that frame cost 650 ms by itself).
INPUT
- Both-shifts keyboard-backlight chord works mid-game: it is the one
key raw joypad mode lets through. The toggle body moved from
handleKeyboardInput() into toggleKeyboardBacklight() (main.cpp) so
the game and the normal path share one on/off state.
- On quit the keyboard stays in raw mode, still drained through the
panel's busy wait, until the ROM list has been drawn. Keys pressed
during the quit flash used to queue in the TCA8418 and replay as
navigation afterwards (one held Q ran four screens back).
PICTURE
- Game pictures after the first refresh only the 216-line game window
(GxEPDDisplay::requestWindowRefresh, consumed by endFrame). Measured
at 652 ms either way, the same as full-panel: the panel's waveform
time is the floor, so this saves data transfer only.
TYPING (main.cpp, all e-ink builds)
- COMPOSE_REFRESH_INTERVAL 700 -> 0. lastComposeRefresh is stamped
after the blocking e-ink refresh completes, so the interval only
added dead time on top of it. Worst-case keystroke-to-screen drops
from about 1.6 s to about 0.9 s. COMPOSE_TYPING_PAUSE unchanged.
GAMES MENUS
- Games menu and Game Boy ROM list rows follow the user's font size
and style via the NodePrefs helpers (as the channel picker does);
Max touch hit-test updated to match. Footers read Q:Back.
BUILD ENVS (Pro)
- meck_audio_wifi_hyn and meck_audio_standalone_hyn, the HYN-touch
counterparts of the existing meck_audio_ble_hyn.
Files: examples/companion_radio/{main.cpp, ui-new/GBCEmulatorScreen.{h,cpp},
ui-new/GamesMenuScreen.h}, src/helpers/ui/GxEPDDisplay.{h,cpp},
variants/lilygo_tdeck_max/TCA8418Keyboard.h,
variants/lilygo_tdeck_pro/platformio.ini