Laya clears Super Mario Bros. 3 World 1-1 on a DGX Spark: 207 decisions, frames verified
Unmodified Laya weights, real NES emulation via Stable Retro, text observations from RAM, model-driven jumping. 27.5 s of game time at 16.79 ms median inference.
# 🍄 Laya plays Super Mario Bros. 3 **COURSE CLEAR. 207 decisions. Every frame verified.** [](pyproject.toml) [](https://github.com/NandhaKishorM/laya) [](docs/mario.md) [](https://github.com/cv/laya-plays-smb3/releases/tag/v0.1.0-world1-clear) [Laya](https://github.com/NandhaKishorM/laya) cleared Super Mario Bros. 3 World 1-1 on a DGX Spark. **27.50 seconds of game time · 16.79 ms median inference · unmodified model weights.** <a href="https://github.com/cv/laya-plays-smb3/releases/download/v0.1.0-world1-clear/laya-world1-1.mp4"><img src="docs/assets/level-clear.gif" alt="Recorded ending of the verified World 1-1 run: Mario jumps into the goal card and the game displays COURSE CLEAR" width="512"></a> *Real emulator footage at original game speed. Text observations from visible-state RAM; fixed rightward movement, model-driven jumping. One selected stochastic run in stepped mode.* [Watch the full run](https://github.com/cv/laya-plays-smb3/releases/download/v0.1.0-world1-clear/laya-world1-1.mp4) · [Release & evidence](https://github.com/cv/laya-plays-smb3/releases/tag/v0.1.0-world1-clear) · [Reproduce it](#quick-start) · [How it works](#how-it-works) </div> ## Why put a decision model in Mario? Because a probability distribution is much more interesting when the wrong answer walks into a pit. This is a small experimental playground for **model-driven game control**: native Laya inference on an NVIDIA DGX Spark, real NES emulation, structured observations, and an unusually inspectable trail of decisions. The interesting part isn't just whether Mario survives—it's seeing **what the model was told, which action it favored, and whether that action arrived in time**. - **Real SMB3, not a look-alike.** Stable Retro + FCEUmm run the game; the harness owns the control