whatisgithub

What is ngp-link?

caioluders/ngp-link — explained in plain English

Analysis updated 2026-07-26

3CAudience · developerComplexity · 5/5LicenseSetup · hard

In one sentence

Reverse-engineers the link cable protocol of the Neo Geo Pocket Color console, enabling online multiplayer for linked games through a web browser using WebRTC and WebAssembly.

Mindmap

mindmap
  root((repo))
    What it does
      Plays NGPC games online
      Reverse-engineers link protocol
      Provides hardware design
      Documents the protocol
    Tech stack
      C
      WebAssembly
      WebRTC
      Cloudflare Workers
    How it works
      BIOS-level connection bridging
      Peer-to-peer netplay
      Room code matchmaking
    Validation
      Physical capture
      Static disassembly
      Dynamic emulation
    Use cases
      Play with a friend online
      Self-host the web build
      Study link protocol docs
    Audience
      Retro gaming fans
      Hardware tinkerers
      Emulator developers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Play Neo Geo Pocket Color link cable games online with a friend through your web browser.

USE CASE 2

Self-host your own instance of the web-based emulator to play linked games on your local network.

USE CASE 3

Study the fully documented reverse-engineered link protocol for your own hardware or emulation projects.

USE CASE 4

Build the custom circuit board to capture and analyze traffic between two real NGPC consoles.

What is it built with?

CWebAssemblyWebRTCCloudflare WorkersEmscripten

How does it compare?

caioluders/ngp-linkamichail-1/orbination-whisper-aiandrewrk/libogg
Stars333
LanguageCCC
Last pushed2026-03-31
MaintenanceMaintained
Setup difficultyhardeasyeasy
Complexity5/54/52/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Building the WebAssembly core requires emscripten, and you must supply your own legally obtained game files.

Original code is MIT, hardware is CERN-OHL-P, docs are CC-BY-4.0, the bundled emulator core is GPL-2.0 and the disassembler is BSD-3-Clause.

So what is it?

For over 25 years, the Neo Geo Pocket Color's link cable port went undocumented. This project reverse-engineers how that link works from end to end, then uses that knowledge to let people play linked NGPC games online through a web browser. You load a compatible game file in your browser, share a room code with a friend, and connect over the internet. The repository contains several distinct pieces. There is a custom printed circuit board design that physically taps into a live link between two real consoles so a logic analyzer can record the traffic. There is a full set of documentation covering the handshake, transport, memory layout, and controller communication. There are also reverse-engineering tools, including a disassembler for the NGPC's CPU and scripts that analyze captured logic data. The protocol itself was validated three independent ways, and all three agree. A physical capture records real traffic between two consoles. Static disassembly pulls the link logic straight from the game code. Dynamic emulation runs the real game's link code in a headless environment and matches the output to the recorded wire data. Because the connection is bridged at the BIOS communication level rather than per game, the online play works with any link-capable cartridge without needing game-specific code. The browser-based emulator runs the full NGPC core compiled to WebAssembly, with WebRTC handling the peer-to-peer connection for netplay. A signaling server deployed on Cloudflare Workers handles matchmaking. You can play directly on the project's website or self-host the web build locally. Building the WebAssembly core requires emscripten, and the documentation site can be built and previewed with standard make commands. The project is multi-licensed. Original work is MIT for code, CERN-OHL-P for hardware, and CC-BY-4.0 for documentation. The vendored RACE emulator core is GPL-2.0, and a vendored MAME disassembler is BSD-3-Clause. No game files are included, you must supply your own legally obtained cartridge dumps.

Copy-paste prompts

Prompt 1
How do I set up and host the NGP-Link web emulator locally so I can play Neo Geo Pocket Color games online with a friend?
Prompt 2
Explain how the NGPC link cable protocol works based on this project's reverse engineering, including the handshake, transport, and memory layout.
Prompt 3
What do I need to build the WebAssembly core for the NGP-Link emulator using emscripten?
Prompt 4
How does the BIOS-level connection bridging in NGP-Link allow any link-capable game to work without game-specific code?

Frequently asked questions

What is ngp-link?

Reverse-engineers the link cable protocol of the Neo Geo Pocket Color console, enabling online multiplayer for linked games through a web browser using WebRTC and WebAssembly.

What language is ngp-link written in?

Mainly C. The stack also includes C, WebAssembly, WebRTC.

What license does ngp-link use?

Original code is MIT, hardware is CERN-OHL-P, docs are CC-BY-4.0, the bundled emulator core is GPL-2.0 and the disassembler is BSD-3-Clause.

How hard is ngp-link to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is ngp-link for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.