← All Retro Games

Retro Games · available now

Chess System Tal Retro

A chess computer in the spirit of the 1980s table-top machines — but with a neural-network evaluation, running entirely on an ESP32-S3 colour touch-screen board. Tap or drag your pieces, set the clocks, take moves back. No PC, no phone, no Wi-Fi: the whole engine, its opening book and its network live on the board.

Project name on GitHub: CST-Retro-esp32.

Chess System Tal Retro on two boards: the 7-inch Waveshare touch screen with the 2-inch M5Stack CoreS3 in front of it, both at the start of a game
Two boards, one engine: the 7-inch Waveshare ESP32-S3 display, and the 2-inch M5Stack CoreS3 in front of it.
The 7-inch screen in a Ruy Lopez: the move list in chess notation, with the engine's evaluation after each of its moves
A Ruy Lopez on the 7-inch board. The move list is in ordinary chess notation, and every engine move carries its evaluation, from White's point of view. A screen capture from the board.
The 7-inch board playing Black in a match run from the PC: its own side at the bottom, marked CST, the opponent's clock marked PC
In a match run from the PC over USB, the board shows the game: its own side at the bottom, marked CST.
The 2-inch M5Stack CoreS3 screen at the start of a game, with ten-minute clocks
The same game on the 2-inch CoreS3: board, clocks, Back and Menu, on a 320 × 240 screen.

Play it by touch

  • Tap or drag to move: the squares a piece can go to are marked, and a tap a little off the square still finds the move you meant.
  • Chess clocks: 1, 5, 10 and 30 minutes, 3 + 2 and 15 + 10 — or a fixed 1, 3 or 10 seconds a move for the engine. Your clock can be switched off if you'd rather think at leisure; opening the menu pauses it.
  • Take back as many moves as you like, clocks and all.
  • Resign, claim a win or agree a draw from the menu; running out of time against a lone king is a draw, as in the rules.
  • An opening book — Jeroen Noomen's, with weighted random choices, so the engine varies its openings.
  • The engine's thinking as it searches: depth and score, and on the 7-inch board a move list in chess notation with its evaluation of each of its moves.
  • A choice of evaluation: the neural network, or the classic hand-tuned piece-square tables (PeSTO) for a slightly weaker, faster opponent.
  • A PC link: over USB the board is also a UCI engine. Set up a position from the PC and play it out by touch, or run engine matches with any chess GUI.

The engine

A new engine, written for the small machine, with ideas from Chess System Tal 5: an alpha-beta search with the standard modern pruning (null move, late-move reductions, static exchange evaluation) and a 32 KB hash table. The evaluation is a small neural network (NNUE, 768 → 64 → 1), trained on seven million positions scored by Chess System Tal 5 and computed with the ESP32-S3's vector instructions. It searches about 55,000 positions a second.

Strength: about 2170 on the CCRL 40/15 scale, measured on the real 7-inch board: 231 games over USB at one minute plus 0.6 seconds a move against eight engines with known CCRL ratings — well beyond the hand-held chess computers of the 1980s.

What you need

One of two ESP32-S3 touch-screen boards — each is the whole computer:

  • Waveshare ESP32-S3-Touch-LCD-7 — a 7-inch, 800 × 480 screen with capacitive touch, 8 MB of PSRAM and 16 MB of flash. The big board, with room for the move list and the evaluations.
  • M5Stack CoreS3 — a 2-inch, 320 × 240 touch screen in a pocket-sized case.

Both have a 240 MHz dual-core ESP32-S3: the engine thinks on one core while the other runs the screen. You also need a USB-C cable to load the game from a PC; after that the board runs from any USB power.

The back of the 7-inch Waveshare board, showing the ESP32-S3 module, two USB-C sockets and a microSD slot, with the CoreS3 playing in front
The back of the 7-inch board: the ESP32-S3 module that runs the game (bottom left), and two USB-C sockets — load the game through the one marked USB. The CoreS3 in front is playing the same game.

How to install

The easy way: straight from this page

  1. Use Chrome or Edge on a PC or Mac (they can talk to USB devices; Firefox and Safari can't).
  2. Plug the board into the computer with a USB-C cable. On the 7-inch board use the socket marked USB, not UART.
  3. Press the Install button for your board, pick its port from the list, and confirm. It takes about a minute.
Your browser can't install to a board. Open this page in Chrome or Edge on a PC or Mac — or use the firmware files below. Installing needs a secure (https) page — open this page from whittingtonchess.com.

If the board doesn't appear in the port list: on the 7-inch board, unplug it, hold the BOOT button while plugging it back in, install, then unplug and plug in again to start the game (the board's factory demo switches the USB port off; once the game is installed, it stays on). On the CoreS3, hold the reset button for about three seconds, until the green light comes on.

Or download the firmware file

One file per board, written at address 0 with any ESP32 flashing tool — latest release on GitHub. With esptool:

esptool --chip esp32s3 write-flash 0x0 cst-retro-0.1.4-ws7.bin

Or build it yourself

The source is on GitHub. With PlatformIO installed, run this in the project folder with the board plugged in (-e cores3 for the CoreS3):

pio run -e ws7 -t upload

The README and docs/INSTALL.md on GitHub have the details, including what porting it to another screen involves.