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, 云资产清单, 在线游戏, 客户端加密, 嵌入式系统, 数据可视化, 硬件黑客, 程序员工具, 逆向工具, 逆向工程