Skip to content

TheAnsarya/Nexen

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5,973 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Nexen

Nexen

A powerful multi-system emulator for Windows, Linux, and macOS
High-accuracy emulation โ€ข TAS editing โ€ข Advanced debugging โ€ข Pansy metadata export

Latest Release License

๐Ÿ’ฌ We've started using GitHub Discussions โ€” join us to discuss progress, share ideas, and suggest changes!


Overview

Nexen is a multi-system emulator based on Nexen2 with significant enhancements: a full-featured TAS editor with undo/redo and greenzone support, an infinite save state system with visual picker, a ZIP-based movie format with multi-format import/export, ๐ŸŒผ Pansy metadata export for integration with the Flower Toolchain disassembly pipeline, and active development of Sega Genesis, Atari 2600, and Fairchild Channel F support.


๐Ÿ“ฅ Downloads

Download pre-built binaries from the Releases page.

Windows

Build Download Notes
Standard Nexen-Windows-x64-v1.4.43.exe Single-file, recommended
Native AOT Nexen-Windows-x64-AoT-v1.4.43.exe Faster startup

Linux

Build Download Notes
AppImage x64 Nexen-Linux-x64-v1.4.43.AppImage Recommended
AppImage ARM64 Nexen-Linux-ARM64-v1.4.43.AppImage Raspberry Pi, etc.
Binary x64 (clang) Nexen-Linux-x64-v1.4.43.tar.gz Tarball, requires SDL2
Binary x64 (gcc) Nexen-Linux-x64-gcc-v1.4.43.tar.gz Tarball, requires SDL2
Binary ARM64 (clang) Nexen-Linux-ARM64-v1.4.43.tar.gz Tarball, requires SDL2
Binary ARM64 (gcc) Nexen-Linux-ARM64-gcc-v1.4.43.tar.gz Tarball, requires SDL2
Native AOT x64 Nexen-Linux-x64-AoT-v1.4.43.tar.gz Faster startup

macOS (Apple Silicon)

Build Download Notes
Standard Nexen-macOS-ARM64-v1.4.43.zip App bundle
Native AOT Temporarily unavailable .NET 10 ILC compiler bug

Notes:

  • Linux requires SDL2 (sudo apt install libsdl2-2.0-0)
  • macOS: Right-click โ†’ Open on first launch to bypass Gatekeeper
  • macOS Intel (x64) builds are no longer provided
  • macOS Native AOT is disabled due to a .NET 10 ILC compiler crash

๐ŸŽฎ Supported Systems

System CPU Status
NES / Famicom MOS 6502 โœ… Full
SNES / Super Famicom WDC 65816 โœ… Full
Game Boy / Game Boy Color Sharp LR35902 โœ… Full
Game Boy Advance ARM7TDMI โœ… Full
Sega Master System / Game Gear Zilog Z80 โœ… Full
Sega Genesis / Mega Drive Motorola 68000 ๐Ÿ”„ In Progress
PC Engine / TurboGrafx-16 HuC6280 โœ… Full
WonderSwan / WonderSwan Color NEC V30MZ โœ… Full
Atari 2600 MOS 6507 ๐Ÿ”„ In Progress
Atari Lynx WDC 65SC02 โœ… Full
Fairchild Channel F Fairchild F8 ๐Ÿ”„ In Progress

โœจ Features

Emulation

  • High-accuracy cycle-accurate CPU and PPU emulation across all systems
  • Full coprocessor support (Super FX, SA-1, DSP, Cx4, SDD-1, OBC-1, S-RTC, BS-X)
  • Comprehensive mapper and memory controller support
  • Netplay multiplayer with rollback

Save States

Feature Description
Infinite Saves Unlimited timestamped saves per game
Visual Picker Grid view with screenshots and timestamps (Shift+F1)
Quick Save F1 to save, Shift+F1 to browse
Designated Slots 3 dedicated slots (F2/F3/F4 load, Shift+F2/F3/F4 save)
Recent Play 36 rolling checkpoints at 5-minute cadence (about 3 hours)
Auto-Save Log Periodic timestamped progress entries (no overwrite)
Per-Game Saves organized by ROM hash

Movie System

  • Nexen Movie Format (.nexen-movie) โ€” ZIP-based with JSON metadata, input log, savestate, and SRAM
  • Recording & Playback โ€” Frame-by-frame with rerecording support
  • Multi-Format Import/Export โ€” BK2 (BizHawk), FM2 (FCEUX), SMV (Snes9x), LSMV (lsnes), VBM (VBA), GMV (Gens)
  • Multi-System TAS โ€” Full TAS support for all emulated systems including Channel F

TAS Editor

  • Piano Roll โ€” Visual timeline for frame-by-frame editing with batch paint
  • Full Undo/Redo โ€” Every operation (toggle, paint, insert, delete, clear, fork) is undoable
  • Greenzone โ€” Instant seeking with automatic savestates
  • Input Recording โ€” Capture, insert, and overwrite modes
  • Branches โ€” Fork, compare, and load alternate strategies
  • Lua Scripting โ€” Automate TAS workflows with full undo integration

Debugging

Tool Description
Disassembler Full CPU disassembly with labels and navigation
Memory Viewer Hex editor with search and watch
Breakpoints Execution, read, and write breakpoints
Trace Logger CPU execution logging with filtering
Code/Data Logger Track ROM coverage (CDL)
Profiler Callstack-based CPU profiling
๐ŸŒผ Pansy Export Export symbols, CDL, cross-refs, and source maps to universal metadata format

Video & Audio

  • Multiple shader and filter options (NTSC, PAL, HQ2x, etc.)
  • Integer scaling and aspect ratio correction
  • Per-channel volume control
  • HUD overlays for debugging
  • Audio and video recording

Quick Start

Windows

  1. Download Nexen-Windows-x64-v1.4.43.exe
  2. Run the executable (no installation needed)
  3. File โ†’ Open to load a ROM

Linux

  1. Download Nexen-Linux-x64-v1.4.43.AppImage
  2. chmod +x Nexen-Linux-x64-v1.4.43.AppImage
  3. ./Nexen-Linux-x64-v1.4.43.AppImage

For non-AppImage builds, install SDL2 first: sudo apt install libsdl2-2.0-0

macOS

  1. Download Nexen-macOS-ARM64-v1.4.43.zip
  2. Extract and move Nexen.app to Applications
  3. Right-click โ†’ Open (first launch only, to bypass Gatekeeper)

๐Ÿงญ User Guides

Guide Description
Save States Guide Quick save, designated slots, and visual picker workflows
Rewind Guide Rewind usage and route iteration workflows
Movie System Guide Record, playback, import/export, and deterministic playback
TAS Editor Manual Complete frame-by-frame TAS editing workflow
Debugging Guide Disassembler, memory viewer, breakpoints, trace, and CDL
Video and Audio Guide Rendering and audio configuration

โŒจ๏ธ Keyboard Shortcuts

General

Shortcut Action
F1 Quick Save (Timestamped)
Shift+F1 Browse Save States
F2/F3/F4 Load Designated Slots 1-3
Shift+F2/F3/F4 Save Designated Slots 1-3
Ctrl+S Quick Save (Alt)
Ctrl+Shift+S Save State to File
Ctrl+L Load State from File
Escape Pause/Resume
Tab Fast Forward
Backspace Rewind
F11 Toggle Fullscreen
F12 Screenshot

TAS Editor

Shortcut Action
Escape Pause/Resume Playback
` (backtick) Frame Advance
Backspace Frame Rewind
Insert Insert Frame
Delete Delete Frame
Ctrl+Z Undo
Ctrl+Y Redo
Ctrl+G Go to Frame
Ctrl+B Create Branch

๐ŸŒท Flower Toolchain Integration

Nexen is the play & debug stage of the Flower Toolchain โ€” an integrated pipeline for playing, debugging, disassembling, editing, and rebuilding retro games:

๐ŸŽฎ Play & Debug (Nexen) โ†’ ๐ŸŒบ Disassemble (Peony) โ†’ โœ๏ธ Edit (Pansy UI) โ†’ ๐ŸŒธ Build (Poppy) โ†’ โœ… Verify (Game Garden)
Stage Tool Purpose
1. Play & Debug Nexen Run games, export CDL + symbols + source maps via ๐ŸŒผ Pansy
2. Disassemble ๐ŸŒบ Peony ROM โ†’ annotated .pasm source code
3. Edit & Document ๐ŸŒผ Pansy UI View and edit disassembly metadata
4. Build ๐ŸŒธ Poppy .pasm source โ†’ ROM
5. Verify ๐ŸŒฑ Game Garden Roundtrip byte-identical rebuild verification

๐Ÿ“– Documentation

User Documentation

Document Description
Documentation Index Entry point for all user-facing docs
Manual Testing Hub Ranked manual release validation workflows
Compiling Build from source
SteamOS / Steam Deck Running Nexen on SteamOS and Game Mode
Performance Guide Performance strategy and references
Theme Customization Guide Theme tokens, runtime mapping, and safe update workflow
Archive Stack ZIP/7z read-write support matrix and packaging behavior
Third-Party Source Policy Package-first dependency policy and CI guardrails for vendored source
Third-Party Source Inventory Current measured vendored source footprint and caps
Release Guide Creating releases
Changelog Version history

Systems Documentation

System Guide
All Systems Systems Index
NES / Famicom NES Guide
SNES / Super Famicom SNES Guide
Game Boy / GBC GB Guide
Game Boy Advance GBA Guide
Sega Master System / GG SMS Guide
Sega Genesis / Mega Drive Coming soon
PC Engine / TG-16 PCE Guide
WonderSwan / WSC WS Guide
Atari 2600 Coming soon
Atari Lynx Lynx Guide
Fairchild Channel F Channel F Guide

Developer Documentation

Document Description
Architecture Overview System design
C++ Development Guide Coding standards
Developer Tasks What to work on next
Code Documentation Style C++ documentation style guide
Build and Run Building and running Nexen
Profiling Guide Performance profiling
ASan Guide AddressSanitizer configuration
Movie & TAS Subsystem Movie recording and TAS internals
TAS Algorithm Reference TAS data structure and undo system design
Audio Subsystem Audio processing and resampling
Video Rendering Video rendering pipeline
Input Subsystem Input and controller handling
Debugger Subsystem Debugger internals
Utilities Library Shared utility library
Pansy Integration Metadata export system
Channel F Master Plan Fairchild Channel F roadmap
Channel F Implementation Prompts Ordered multi-session execution prompt pack
Channel F Source Index External references mapped to implementation work

Emulation Core Internals

Document Description
NES Core NES/Famicom emulation core
SNES Core SNES/Super Famicom emulation core
GB/GBA Core Game Boy and GBA emulation core
SMS/PCE/WS Core SMS, PCE, and WS core
Lynx Core Atari Lynx core

๐Ÿ—๏ธ Building from Source

Requirements

Component Version Notes
C++ Compiler C++23 (MSVC v145+, Clang 18+, GCC 13+) /std:c++latest
.NET SDK 10.0+ Download
SDL2 2.0+ Linux/macOS only

Nexen resolves Pansy.Core from NuGet; you do not need a sibling pansy repo checked out next to Nexen.

Windows

  1. Install Visual Studio 2026 with "Desktop development with C++" workload
  2. Install .NET 10 SDK
  3. Open Nexen.sln and build Release x64

Linux

# Install dependencies (Ubuntu/Debian)
sudo apt install build-essential clang-18 libc++-18-dev libsdl2-dev
# Build
make -j$(nproc)
dotnet publish -c Release UI/UI.csproj

See COMPILING.md for detailed instructions.


Markdown Quality Automation

Use these scripts to validate and benchmark markdown structure policy checks (MD022, MD031, MD032, MD047):

  • scripts/test-markdown-policy.ps1
  • scripts/benchmark-markdown-policy.ps1

Example:

pwsh -File scripts/test-markdown-policy.ps1
pwsh -File scripts/benchmark-markdown-policy.ps1 -Runs 5

๐Ÿ”— Related Projects

Project Description
๐ŸŒผ Pansy Universal disassembly metadata format and toolkit
๐ŸŒบ Peony Multi-system disassembler (ROM โ†’ .pasm source)
๐ŸŒธ Poppy Multi-system assembler (.pasm โ†’ ROM)
๐ŸŒฑ Game Garden Games disassembly, editing, and recompilation

๐Ÿ“œ License

Nexen is dual-licensed:

  • Nexen Additions (Unlicense): All new features, modifications, and additions created for this fork are released into the public domain under The Unlicense.
  • Base Code (GPL v3): The original Nexen code by Sour remains under the GNU General Public License v3.

See LICENSE for full details.


๐Ÿ™ Acknowledgments

Nexen builds upon the excellent work of:

  • Nexen by Sour โ€” The original emulator codebase
  • The emulation community for documentation and research
  • Contributors and testers

Made with โค๏ธ for the retro gaming community

About

Multi-system emulator (NES, SNES, GB, GBA, PCE, SMS/GG, WS) for Windows, Linux and macOS

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C++ 63.6%
  • C# 25.2%
  • C 8.0%
  • PowerShell 1.5%
  • Lua 0.6%
  • Python 0.5%
  • Other 0.6%