vs-sr-dev/pippin-homebrew
GitHub: vs-sr-dev/pippin-homebrew
该项目记录了如何在 DingusPPC 模拟器中为 Bandai Pippin @WORLD 实现首次联网的全过程,包括串口/DBDMA 硬件模拟修复、虚拟调制解调器搭建以及自制瘦客户端浏览器的架构设计。
Stars: 0 | Forks: 0
# pippin-homebrew
关于在模拟器环境下为 **Bandai Pippin @WORLD** (1996) 联网的技术文档 —— 包括一系列可向上游提交的 **DingusPPC** 模拟器修复,使模拟的 Pippin 接入**真实的互联网**,以及为其开发的自制瘦客户端浏览器。
这是一项保存研究工作。Pippin 鲜有文档记录且极少被模拟;据我们所知,在本次工作之前,其网络通路从未在模拟器中成功启用过。该仓库记录了硬件事实、模拟器修复(并明确说明了其 GPLv3 义务),以及对调查最终结果的客观叙述 —— 包括一个**推翻**了显而易见解释的结论。
## 什么是 Bandai Pippin?
Pippin 是一款由 Apple 设计、Bandai 于 1995-96 年销售的多媒体 CD-ROM 游戏机(日版名为 "ATMARK",美版名为 "@WORLD")。它实际上是一台精简版的 Macintosh:运行 Mac OS 7.5.2 的一个分支,并使用标准的 Mac Toolbox。它在商业上遭遇了失败,销量仅达到预测的极小一部分。
硬件概况:
- **CPU:** PowerPC 603 @ 66 MHz。
- **RAM:** Bandai 版本板载 6 MB(应用程序可用约 5 MB),可扩展。
- **GPU:** "Taos" 8/16 位 VGA,源自 Apple 的 LC 系列。
- **ROM:** 4 MB,可更换。共有三个消费级版本 —— **ROM 1.3 没有身份验证保护**,因此它可以直接接受未经签名的自制光盘(其他版本则需要带有签名的光盘或使用链式加载器)。
- **OS:** Pippin OS,Mac OS 7.5.x 的一个分支,内置 AppleJack 手柄驱动。
- **I/O:** 一个 GeoPort 串口/调制解调器插槽、一个 AAUI 网络插槽、ADB、串口。**没有内置的 Ethernet,也没有内部硬盘。**
目前的模拟使用的是 **DingusPPC** (GPLv3),该模拟器自 2024 年起就拥有可用的 `pippin` 机器配置 —— 它能将 Pippin OS 启动到 Finder 并运行零售版游戏。但它*没有*任何可用的联网功能。
## 为什么会有这份文档
Pippin 接入互联网的途径不同寻常且没有文档记录:它通过 **GeoPort 串口上的调制解调器**联网,由日版的 "Internet Kit"(Netscape + Mac PPP 协议栈)驱动。DingusPPC 将联网功能列为“目前未实现”。因此,让模拟的 Pippin 联网需要同时处理三个层面 —— 模拟器的串口/DMA 硬件、虚拟调制解调器 + PPP 宿主机协议栈,以及 Mac 端的软件 —— 而这些在任何地方都没有文档记载。
本仓库记录了所有这些内容:硬件事实、模拟器修复(可向上游提交给 DingusPPC)、宿主机端的调制解调器/PPP 链路、作为脆弱老旧协议栈替代方案而构建的自制瘦客户端浏览器,以及实证调查过程 —— 包括关于为什么零售版 Netscape 在 Pippin 明确联网后仍然无法加载图片的最终、且具有证伪性质的结论。
## 本仓库包含的内容
| 路径 | 内容 |
|---|---|
| [`hardware/pippin-network-hardware.md`](hardware/pippin-network-hardware.md) | Pippin 的网络硬件:GeoPort 调制解调器、无原生 Ethernet、日版 Internet Kit,以及从 Netscape 到电话线的完整软件链路。 |
| [`dingusppc/networking-recon.md`](dingusppc/networking-recon.md) | 侦察记录:DingusPPC 的串口架构(ESCC / `CharIoBackEnd`)、缺失的 Windows 套接字后端,以及从“未实现”到 Pippin 能够 ping 通 `1.1.1.1` 并加载实时网页的逐步过程。 |
| [`dingusppc/dbdma-rx-fix.md`](dingusppc/dbdma-rx-fix.md) | **可向上游提交的贡献。** 实现基于 DBDMA 串口传输的修复,为 DingusPPC 提供了可用的双向串行 I/O,以及对 DBDMA RX 中断合并的根因分析。GPLv3。 |
| [`dingusppc/ppp-setup.md`](dingusppc/ppp-setup.md) | 宿主机端链路:Python Hayes 虚拟调制解调器 + WSL `pppd`/NAT 服务器,以及 Mac 端的 MacTCP/MacPPP 配置,这些共同将 Pippin 接入了互联网。 |
| [`ppnet/ppf-format.md`](ppnet/ppf-format.md) | "Pippin Page Format" —— 为瘦客户端浏览器设计的面向行的通信格式,在 66 MHz 的 603 上极其容易解析。 |
| [`ppnet/browser-architecture.md`](ppnet/browser-architecture.md) | 瘦客户端浏览器架构:传输/渲染分离,为什么它避开了 TLS 和脆弱的老旧协议栈,以及它是如何进行离线原型的。 |
## 诚实说明的头条结果
这项调查的动机目标 —— *让模拟的 Pippin 加载真实的网页* —— 已经实现:Pippin 能够 ping 通真实的互联网,并且 **Netscape 1.1N 从真实的网络中加载了一个真实的网页 (frogfind.com)**。在这个过程中,DingusPPC 中的 DBDMA 串口路径被成功打通,这是一项真正、可向上游提交的模拟器贡献。
但是,促使我们进行大量深度调试的*具体*症状 —— 内嵌**图片**无法加载 —— 在使用 `tcpdump` 推翻了五个备选假设后发现,这**不是**模拟器或网络的问题。最终结论将其归咎于 **Netscape 1.1N 本身**。这一证伪过程完整记录在 [`dingusppc/networking-recon.md`](dingusppc/networking-recon.md) 中,因为以一种具备良好检测手段且可复现的方式证明自己错了,也是这项贡献的一部分。
## Silicon Relics 项目的一部分
这是作为 **Silicon Relics** 一部分产出的三个文档仓库之一。Silicon Relics 是一个长期运行的跨平台保存与自制项目,专注于冷门和失败的老旧平台:
- **[hyperscan-homebrew](https://github.com/vs-sr-dev/hyperscan-homebrew)** — Mattel HyperScan / S+Core 7
- **[ngpc-homebrew-notes](https://github.com/vs-sr-dev/ngpc-homebrew-notes)** — SNK Neo Geo Pocket Color / TLCS-900H
- **[pippin-homebrew](https://github.com/vs-sr-dev/pippin-homebrew)** — Bandai Pippin @WORLD / DingusPPC 联网(本仓库)
GitHub 主页:**[@vs-sr-dev](https://github.com/vs-sr-dev)**
## 鸣谢与归属
这项研究是人类与 LLM 协作的成果。坦率地说明这一点是诚实的做法 —— 这也正是关键所在,因为这里有趣的结果正是这种协作本身所促成的。
**如果没有 Claude 作为技术桥梁,这项工作就不会存在。人类提供领域知识和方向;Claude 在人类原本无法涉足的各种架构中提供具体的实现。** 单靠任何一方都无法取得这些成果。一位领域专家不会手动去修补模拟器的 GrandCentral DMA 路由,不会从 6.8 GB 的日志中诊断 DBDMA 引擎的中断合并问题,也不会亲自去搭建 PPP/NAT 协议栈来让一台 1996 年的游戏机联网。同样,语言模型本身也不知道 Pippin 当年是通过 GeoPort 调制解调器接入互联网的,不知道 DingusPPC 占位了其串口 DMA,也不知道在模拟的 Netscape 上加载实时网页是一个值得花费数周时间去追求的成果。
具体的分工如下:
- **人类:** 数十年来对复古硬件生态系统百科全书式的知识;因为熟悉该领域,所以能够判断什么是真正的“首次”;项目方向 —— 寻找什么、为什么重要、在哪里值得深挖;运行实时模拟器以及无头进程无法完成的 GUI 导航;以及提供事实裁决。
- **Claude (Anthropic) — Opus 4.x 系列,通过 Claude Code:** 将方向转化为具体的实现 —— DingusPPC 模拟器补丁、虚拟调制解调器和 PPP 宿主机工具、自制浏览器、日志取证分析以及撰写本文档。
人类作者是一名专业的技术翻译,其所在的领域受到了 AI 的严重冲击,因此他采取了明确的立场:将 AI 用于**不取代任何人的全新工作** —— 比如让一台早已被遗弃的 1996 年游戏机联网,因为没有其他人会做这件事 —— 是值得捍卫的用例。出于这个原因,这项协作被公开命名;可见性是目的,而不是免责声明。
所有发现均经过实证验证;这里没有任何内容是单凭模型的先验知识进行断言的。
## 许可证
本仓库中的原创文档采用 **MIT** 许可证 —— 见 [LICENSE](LICENSE)。
**重要提示 —— DingusPPC 是 GPLv3 协议。** 在 [`dingusppc/dbdma-rx-fix.md`](dingusppc/dbdma-rx-fix.md) 中描述的模拟器修复是对 DingusPPC(`dingusdev/dingusppc`)的修改,该软件采用 **GPLv3** 许可。本仓库仅以文字形式记录了这些更改;它**没有**重新分发 DingusPPC 源文件。这些更改本身旨在作为 pull request 向上游提交至 `dingusdev/dingusppc`,在那里它们将根据要求采用 GPLv3 协议。任何重新分发修改后的 DingusPPC 源代码的仓库必须采用 GPLv3,并提供完整的对应源代码和归属说明。
标签:PowerPC, Web浏览器, 复古计算机, 文档, 硬件模拟器, 网络, 逆向工具