Skip to content

kNES

Kotlin NES emulator whose agent plays Super Mario Bros. and Final Fantasy through typed decisions. Each turn becomes one Choice over goals that can actually run, wired through SemIf against a local Qwen3.5-4B, so a button the game does not offer is never an option; 900 logged decisions never answered off-menu.

Stars
34
Language
Kotlin
License
GPL-3.0
Published by
Community
Last verified
Oct 2026

ArturSkowronski/kNES

User repository on GitHub

View on GitHub

Educational implementation of NES emulator in Kotlin, based on Java vNES emulator

Forks
4
Last pushed
Updated Sep 2026

Repo stats from the GitHub API, cached Oct 2026.

About this project

kNES is a Nintendo Entertainment System (NES) emulator written in Kotlin, forked from the vNES Java emulator. This project was created primarily for fun and educational purposes, allowing developers to learn about emulation techniques and NES hardware while enjoying classic games. kNES is a reimplementation and extension of the vNES emulator (originally developed by Brian F. R.) in Kotlin. The project aims to: Provide a modern, Kotlin-based NES emulator.

Quoted from the project's README. Read the full README.

Platforms
APIMCPCLI
Capabilities
Open sourceRuns locallySelf-hosted

Highlights

  • Agent access ships two ways: an MCP server with 14 tools and a REST API on port 6502 with 12 endpoints.
  • 900 decisions at about 400ms each on an M5 Pro never picked an option off the declared menu.
  • Core emulator passes the nestest official and unofficial opcode suites within 800+ automated tests.
  • Game knowledge lives in profiles/*.json, so teaching another game is a JSON edit, not code.

Watch out

GPL-3.0 licensed and forked from the vNES Java emulator, so the emulator lineage carries that license. The typed-decision agent path needs a local Qwen3.5-4B through SemIf or one OPENAI_API_KEY, and tests that need commercial ROMs skip themselves when roms/ is absent.

Questions about this entry

Short answers drawn from the linked project or page.

Related terms

Glossary definitions related to this entry.

More Jev resources like this

36GitHub stars
A Clash Royale bot that turns a phone screenshot into JSON once a second and asks Jev for a strategy, a card, and a square.
Jev Demos & Experiments#community#python#gaming
A Mineflayer agent for Minecraft Java 1.16.5 where a planner sets the objective and Jev picks the next bounded action from game observations.
Jev Demos & Experiments#community#javascript#gaming
58GitHub stars
An Apache-2.0 decision engine with a TypeSafe-compatible endpoint, document answers with source passages, and a ViZDoom demo that picks actions from structured game state.
Jev Models & Reimplementations#community#python#local
4GitHub stars
A Craftax (Crafter) survival harness where deterministic code lists every feasible action with its facts and Jev picks one Choice per step, optionally guided by an LLM-written objective and standing rules; three-seed ablations are included.
Jev Demos & Experiments#community#craftax#games
1GitHub stars
MuJoCo simulation where a local decider-2b model picks the next skill for an AgileX PiPER arm through a Jev-style typed-choice interface while the red cube target is pushed to new positions mid-run. Deterministic checks may reject a chosen skill but never substitute another.
Jev Demos & Experiments#community#robotics#simulation
1.3kGitHub stars
A local yes/no decision model that speaks Jev's wire format on a laptop CPU, refusing Choice and Score until those question types ship.
Jev Models & Reimplementations#community#python#open-models

From the Jev guides

Original write-ups on what this entry is for.

A game tick is a state plus a legal action list. How Clash Royale, Minecraft, and the earlier Mario, Pokémon, StarCraft, and drone loops ask Jev one step at a time.
Jev Demos & Experiments#gaming#agents#control
Read article
Back to all resources

From the Jev community

Posts from builders shipping with Jev right now.

Follow @typesafeai