§ Exhibition demo · E1M-AEN803
Trace Runner
An endless runner you play with your body, running entirely on one Alif Ensemble E8 module.
It is the demo Alp Lab runs at exhibitions. The display, the camera, the NPU, the IMU and three of the E8's cores all do visible work at once: pose estimation on the Ethos-U55, game logic on a Cortex-M55, and a 3D scene rendered by the Cortex-A32 pair. The full source ships as an Alp SDK example.

§ How you play
Stand in front of the camera. Your arms are the controller.
Left and right are the player's own, as they see themselves on screen. Each raise fires once — lower the arm and raise it again to step again.

Move one lane left
Raise your left arm
The left wrist clearly above the left shoulder.

Move one lane right
Raise your right arm
The right wrist clearly above the right shoulder.

Jump
Raise both arms together
Both wrists up within the same short settle window.

Duck
Crouch
The torso centre drops against your own baseline.
What counts as raised
The wrist must be more than 50 % of your shoulder width above the same-side shoulder, so the gesture is the same at any distance from the camera.
Response
A lane step lands about 100 ms after the arm crosses the line — the game waits that long to see whether the other arm follows, which would make it a jump.
No camera? Tilt the board
The board's IMU is the camera-less way to play: tilt the board to steer. HUD lamps — LEFT ARM, RIGHT ARM, BOTH ARMS, DUCK — light as the game acts on each gesture.
§ What runs where
Three cores at once, one module.
The game runs on an E1M-AEN803 (Alif Ensemble E8) on the E1M-EVK carrier, with an InnoMaker CAM-OV9281 mono global-shutter camera. Each core does the job it is built for, and they meet in shared on-chip memory.
Game and real-time I/O
Cortex-M55 HE
160 MHz
- Game state and input
- HUD overlay
- Frame pacing
- Watchdog for the A32 renderer
Vision
Cortex-M55 HP + Ethos-U55
400 MHz
- OV9281 global-shutter camera
- MoveNet SinglePose Lightning (int8) pose estimation on the Ethos-U55
- Publishes a pose slot in shared SRAM0
3D rendering
Cortex-A32 (bare metal)
800 MHz
- Booted by TF-A
- NEON 3D renderer
- Dual-core raster into the panel framebuffer
- OV9281 camera
- M55-HP + Ethos-U55: pose
- SRAM0 pose slot
- M55-HE: game + HUD
- A32 pair: 3D scene
- Panel
Default display
RK055HDMIPI4MA0, 720x1280 MIPI-DSI, portrait. The screen splits three-fifths game over two-fifths live camera view.
Large-format option
Riverdi RVT121HVDFWCA0-B, 12.1" LVDS, 1280x800, driven through a TI SN65DSI83 DSI-to-LVDS bridge. The panel is mounted on its side and the game stays portrait, rotated 90°. Switching panels changes only the shield in the build.
§ Measured on silicon
Bench numbers, not simulations.
Every figure below was measured on real E1M-AEN803 silicon on an E1M-EVK bench unit. Sources are the example's own records in the Alp SDK repository.
30.0 fps
Standalone, after each of three cold boots[1]
300 panel flips in 10 s with 0 dropped frames. E1M-AEN803 (2026W36-0009) on the E1M-EVK, RK055 panel, 2026-09-29.
7.19 ms
A32 frame time, both cores[2]
Golden display list rendered on both Cortex-A32 cores, against 13.30 ms on one core. Same unit, 2026-09-22.
0
Flip misses over 3 × 11 min[3]
v0.17.0 performance pass on an E1M-EVK bench unit with the Riverdi RVT121 panel, rotation 90, attract mode.
33.3–34.0 Hz
HP vision loop (was 25.3 Hz)[3]
Same performance pass. HP pre-processing 4.9–5.9 ms per frame, down from 10.3 ms.

§ Straight from the framebuffer
A real frame, read back off the silicon.
No photo or video of the exhibit is published yet, so here is the next best thing: one of the first 3D scenes the Cortex-A32 rendered on the module, read out of the framebuffer over the debug port. It is an early version of the scene, shown as it came off the chip.
Status — what is not yet bench-proven
- Body control on the Riverdi RVT121 build is not yet bench-tested. The panel itself runs on the bench; playing it with the camera has not been run there yet.
- The combined camera + NPU + sound image for the M55-HP is build-checked and host-tested, but not yet run on the bench.
- MoveNet inference latency on the Ethos-U55 has not been measured on silicon, so no figure is quoted here.
§ Why it matters
One module. One SDK. Your product instead of a game.
Swap the runner for an inspection line, a gesture-driven kiosk or a robot's vision stack: the pattern is the same. Camera capture goes through <alp/camera.h>, NPU inference through <alp/inference.h>, and the panel through <alp/display.h> — the same Alp SDK APIs you would build on. One gap is documented in the example: <alp/display.h> has no page-flip call yet, so the game reaches the display controller's driver directly for that.

