Tutu

June 6, 2026 ยท View on GitHub

Sliding car puzzle (Rush Hour) for the Flipper Zero: 100 pre-generated levels with steadily increasing difficulty (optimal-solution length from ~2 up to ~24 moves), sequential unlock, and progress saved to the SD card.

Features

  • 100 pre-generated, solver-verified levels embedded in the app (no generation on the device).
  • Difficulty curve that climbs steadily, with the hard ramp kicking in around level 75 (up to ~24 optimal moves).
  • Cycle-and-slide controls: pick a car with OK, slide it along its lane with the D-pad.
  • Sequential unlock; per-level completion and highest-unlocked progress saved to the SD card.
  • Level-select grid showing locked / playable / completed states, plus a Credits screen.
  • Fully offline โ€” no network, no accounts.

Screenshots

Level selectGameplay
Level select: grid of levels with completed, current and locked statesGameplay: the board with cars and the exit arrow on the right

Controls

Game screen

InputAction
OKSelect next car (cycles through cars in spatial order)
Left / RightSlide the selected horizontal car along its lane
Up / DownSlide the selected vertical car along its lane
Hold OKReset the current level
BackReturn to the level select

Reach the exit on the right side of the board with the red car to win.

Level select

InputAction
D-padMove cursor
OKPlay an unlocked level
Hold OKOpen Credits

Build

Requires a local flipperzero-firmware tree. Create a gitignored local.mk with your path:

FLIPPER_FIRMWARE_PATH = /path/to/flipperzero-firmware

Then build the FAP:

make fap

Host tests, lint, and format:

make test
make linter
make format

Regenerate the embedded level bank header from tools/levels.json:

make levels

License

GPLv3