Skip to content

v1.0.0 — Reading Companion

Choose a tag to compare

@JoshuaMillerCode JoshuaMillerCode released this 19 Aug 02:34
· 15 commits to develop since this release

A reading companion for CrossPoint: a small pixel character that lives on your home screen and whose mood depends on how much you actually read.

Built on CrossPoint 1.5.0 (develop).

⚠️ Read this first

Developed and tested only on the Xteink X3.

Device Status
Xteink X3 ✅ Tested
Xteink X4 ⚠️ Untested. Should run, but the X4 has no RTC — streaks and the Peckish/Neglected moods are unavailable, leaving only Content and Thriving
Xteink X4 Pro Do not flash this binary. X4 Pro is ESP32-S3, this is ESP32-C3. It will not boot. Build the x4pro environment from source instead

Back up your firmware first. Two minutes, and it means you can return to exactly your current setup rather than a clean reinstall:

esptool --chip esp32c3 --port /dev/cu.usbmodemXXXX --baud 921600 read-flash 0 0x1000000 crosspoint-backup.bin

Restore with write-flash 0 crosspoint-backup.bin.

Install

  1. Download firmware.bin below
  2. Connect by USB-C and wake the device
  3. Go to crosspointreader.com/#flash-tools
  4. Pick your device, choose Custom .bin, upload

Or: esptool --chip esp32c3 --port /dev/cu.usbmodemXXXX --baud 921600 write-flash 0x10000 firmware.bin

Books and reading progress live on the SD card and are not touched.

Turning it on

Settings → Companion, then pick a Character. Off by default; nothing about the reader changes until you enable it.

What's in it

  • Five characters — a fox, a ghost, a robot, a moth, and a sprout
  • Four moods driven by reading time and days skipped
  • 180 written lines, a different one each time you land on Home
  • A streak counter and a nudge showing how far you are from the top mood
  • The character paces around as you move the menu cursor

Time is only credited while pages are actually turning, so a reader left open on one page earns nothing. Day rollover uses your local timezone so a late-evening session doesn't break a streak.

Costs about 16 KB of flash and 80 bytes of RAM when enabled.

Also fixed

A latent bug in CrossPoint's settings screen: enum settings whose options are runtime strings never opened their picker and then took a modulo by zero. This affects SD-card font selection too.


MIT licensed, same as CrossPoint. Not affiliated with Xteink, CrossPoint, or Pierce Brown.