New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@tmustier/pi-nes

Package Overview
Dependencies
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tmustier/pi-nes

NES emulator extension for pi

latest
Source
npmnpm
Version
0.2.38
Version published
Maintainers
1
Created
Source

pi-nes

Play NES games in your terminal. A pi extension that runs a full NES emulator with Kitty graphics support.

pi-nes demo

Installation

pi install npm:@tmustier/pi-nes

Or from git:

pi install git:github.com/tmustier/pi-nes

Quick Start

/nes              # Pick a ROM from your library
/nes ~/roms/smb.nes   # Load a specific ROM

On first run, you'll be prompted to set your ROM directory and display quality. When launching /nes without a path, type to filter the ROM list while you navigate.

Controls

Game Controls

ActionKeys
D-padArrow keys or WASD
A buttonZ
B buttonX
StartEnter or Space
SelectTab

Emulator Controls

ActionKey
Detach (keep running)Ctrl+Q
QuitQ

Tip: Detach with Ctrl+Q to return to pi, then run /nes to reattach to your game.

Commands

CommandDescription
/nesPick a ROM or reattach to running session
/nes <path>Load a specific ROM file
/nes configQuick setup (ROM directory + audio)
/nes-configToggle audio, quality, and display style + advanced options
/nes debugShow FPS and memory stats

Configuration

Config is stored at ~/.pi/nes/config.json. Use /nes config for quick setup (ROM dir + audio), or /nes-config to toggle audio/quality/style inline and access advanced options.

{
  "romDir": "/roms/nes",
  "saveDir": "/roms/nes/saves",
  "renderer": "image",
  "imageQuality": "balanced",
  "videoFilter": "ntsc-composite",
  "enableAudio": false,
  "pixelScale": 1.0,
  "keybindings": {
    "up": ["up", "w"],
    "down": ["down", "s"],
    "left": ["left", "a"],
    "right": ["right", "d"],
    "a": ["z"],
    "b": ["x"],
    "start": ["enter", "space"],
    "select": ["tab"]
  }
}

Options

OptionDefaultDescription
romDir/roms/nesWhere to look for ROM files
saveDir/roms/nes/savesWhere to store battery saves (defaults to <romDir>/saves)
renderer"image""image" (Kitty graphics) or "text" (ANSI)
imageQuality"balanced""balanced" (30 fps) or "high" (60 fps)
videoFilter"ntsc-composite""off", "ntsc-composite", "ntsc-svideo", "ntsc-rgb"
enableAudiofalseEnable audio output (requires native core built with audio-cpal)
pixelScale1.0Display scale (0.5–4.0)

videoFilter applies a lightweight CRT/NTSC-inspired pass (horizontal bleed + scanlines). It runs in the native core and is optional.

Saves

Battery-backed SRAM is saved to <saveDir>/<rom-name>-<hash>.sav where the hash is derived from the full ROM path to avoid collisions. Old <rom-name>.sav files are ignored.

Saves are flushed on quit and periodically during play.

Terminal Support

Best experience: a Kitty-protocol terminal like Ghostty, Kitty, or WezTerm (image protocol + key-up events).

  • Kitty-protocol terminals — Full graphics via image protocol (shared memory or file transport)
  • Other terminals — Falls back to ANSI half-block characters (▀▄)

Set "renderer": "text" if you prefer the ANSI renderer or have display issues.

Limitations

  • Audio is opt-in — Requires building the native core with audio-cpal and setting enableAudio: true
  • No auto-save — Save manually just like you would with the original NES (battery-backed SRAM)

Vendored Dependencies

Building from Source

Requires Rust toolchain (cargo + rustc).

git clone https://github.com/tmustier/pi-nes
cd pi-nes
npm install

# Build the NES core (required)
cd extensions/nes/native/nes-core
npm install && npm run build

# Build the NES core with audio (optional)
npm run build:audio

# Build shared memory renderer (optional, faster on Kitty)
cd ../kitty-shm
npm install && npm run build

Run locally:

pi --extension /path/to/pi-nes

Keywords

pi-package

FAQs

Package last updated on 03 Feb 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts