caioluders/ngp-link
GitHub: caioluders/ngp-link
对 Neo Geo Pocket Color 的联机电缆协议进行完整逆向工程,并通过 WebRTC 和 WASM 技术实现浏览器端通用在线联机对战的项目。
Stars: 0 | Forks: 0
# Neo Geo Pocket Color — 联机线逆向工程
NGPC 的串行 **EXT 联机端口** 悬而未决长达 25 年之久。本项目对其联机协议进行了端到端的逆向工程,构建了相应的工具进行验证,并将其转化为可在浏览器中体验的 **通用在线多人游戏**。
**在线试玩: [lude.rs](https://lude.rs/ngp-link)** — 加载任何支持联机的 NGPC ROM,分享房间号,即可通过互联网进行联机。
## 目录说明
| 模块 | 路径 | 说明 |
|---|---|---|
| 抓包 PCB | `ngpc_link_sniffer/` | KiCad 边缘连接器转接板,用于为逻辑分析仪截取双机联机的实时数据。包含可直接投产的 gerber 文件。 |
| 协议文档 | `docs/` | 完整的 MkDocs 站点:包含握手、传输层、游戏逻辑、硬件拆解、BIOS COM ABI、RAM 映射以及控制器位图。 |
| 逆向工程工具 | `tools/`, `vendor/`, `out/` | 独立的 TLCS-900/H 反汇编器及分析脚本。`logic_analysis/` 中保存了真实的数据抓包与解码。 |
| 动态验证器 | `emulator/race-link/` | 无头模式运行*真实 ROM* 的联机代码,并将其与物理传输数据进行比对校验(所有层级均通过 PASS)。 |
| 浏览器模拟器与网络对战 | `emulator/race-wasm/` | 完整的 WASM 版 NGPC 核心,支持 WebRTC 联机游玩,并包含 Cloudflare Workers 信令服务器。 |
## 结论:确认了三种独立的方法
该协议已通过以下三种方法验证,且结果完全一致:
1. **物理抓包** — 通过逻辑分析仪记录真实双主机的通信数据。
2. **静态反汇编** — 对游戏 ROM 的联机状态机进行反编译。
3. **动态模拟** — 执行真实的 ROM,并将其输出结果与物理传输数据进行匹配。
由于联机桥接是在 **BIOS COM 层级**(而非特定游戏层级)实现的,因此该网络对战功能是**与具体游戏无关的** —— 任何支持联机的卡带无需编写额外代码即可直接运行。
## 运行 / 构建
**在线试玩:** 访问 [lude.rs](https://lude.rs/ngp-link),或自行托管 Web 版本:
```
cd emulator/race-wasm/web && python3 -m http.server 8080
# 打开 index.html(单机)或 play.html(在线联机)
```
**构建 WASM 核心**(需要 [emscripten](https://emscripten.org)):
```
cd emulator/race-wasm && source /path/to/emsdk/emsdk_env.sh && make wasm
```
**信令服务器**(用于网络对战匹配)— 部署在 Cloudflare Workers 上;详见
`emulator/race-wasm/netplay/`。本地开发运行:`node netplay/signal.js`。
**文档站点:**
```
make docs # build to ./site
make docs-serve # live preview
```
**逆向工程工具:** `make cfg`(反汇编器),`make test`,`make audit-comms`。
## 原理图解
```
[NGPC A] = sniffer PCB = [NGPC B] capture real traffic
|
logic analyzer --+
+--> reconciled protocol --> dynamic re-execution --> WASM + WebRTC netplay
ROM --> disassembler --+
```
## 许可协议
多重许可 — 详见 [`LICENSES.md`](LICENSES.md):
- 原创工作(逆向工具、文档、硬件、WASM 前端):**MIT**(代码) / **CERN-OHL-P**(硬件) / **CC-BY-4.0**(文档)。
- 第三方引入的 **RACE** 模拟器核心(`emulator/race-wasm/race/`, `emulator/race-link/*.c`):
**GPL-2.0** — 因此整个*模拟器*整体适用 GPL-2.0。
- 第三方引入的 **MAME** TLCS-900 反汇编器(`vendor/mame-tlcs900/`):**BSD-3-Clause**。
本项目不包含任何 ROM;请自行提供合法获取的卡带转储文件。
## 致谢
本项目基于 NGPC 社区的研究成果,以及 RACE / NeoPop / MAME 模拟器分支构建。
本代码库内自主实现了协议逆向、抓包硬件、动态验证器、WASM 移植以及网络对战功能。
标签:AI工具, WebAssembly, 云资产清单, 在线游戏, 客户端加密, 嵌入式系统, 数据可视化, 硬件黑客, 程序员工具, 逆向工具, 逆向工程