Windows CE版Dreamcast社区版发布
速览
该项目名为wince-dc,旨在将Windows CE系统移植到世嘉Dreamcast游戏机上。由社区开发者维护,为复古游戏玩家提供新的固件选择。目前尚未有更详细的性能测试和功能报告。
AI 深度解读
背景
Sega Dreamcast 在 1998 年发布时,除了自家的 Katana/VRAM 开发工具包外,还内置了一个精简版的 Windows CE 2.12 运行环境。这个 CE 内核被封装在游戏光盘中,零售游戏将其作为底层运行时启动,但玩家和开发者从未直接看到过它——它只是一个隐藏的“引擎”,负责驱动那些使用 Windows CE SDK 编写的 Dreamcast 游戏。多年来,这个嵌入式版本的 Windows CE 一直躺在备份文件里,无人问津。直到 wince-dc(Windows CE Dreamcast Community Edition)项目出现,才将其从商业游戏的配角色变为一个可独立运行、可交互的桌面环境。
核心内容
wince-dc 是一个开源项目,它利用 Dreamcast 原版游戏光盘中附带的 Windows CE 2.12 运行时(即“Dragon” SDK 的二进制模块),构建了一个完整的、窗口化的桌面操作系统,并打包成一个标准的可启动 Dreamcast 光盘镜像(.gdi)。该项目完全自包含——连 SH-4 架构的 PE 编译器(cl.exe)和 CE 镜像制作工具链(makeimg、romimage 等)都直接收入仓库,用户只需一次 cmake 调用,就能从源代码生成可直接在真机或模拟器中启动的光盘。
桌面外壳与内置应用
- DCWin 桌面外壳:一个窗口化、多任务桌面,基于 Dreamcast 的 PVR2 图形处理器 / Direct3D 进行合成。支持窗口的移动、缩放、最小化/最大化,带有开始按钮、任务栏和鼠标光标。每个应用程序运行在独立的 CE 进程中。
- 内置应用程序:
- 资源管理器(Explorer):可浏览
\、\Windows、\CD-ROM目录,并启动二进制文件。 - 任务管理器(Task Manager):显示实时进程列表和 RAM 使用情况。
- 时钟(Clock)、计算器(Calculator)、内存测试器(Memory Tester)。
- Winsock 网络测试器(Winsock Network Tester)。
- 资源管理器(Explorer):可浏览
网络功能(开发中)
项目试图让 Dreamcast 通过宽带适配器(Ethernet)使用 TCP/IP 网络,而非原设计的拨号 PPP 方式。核心组件是一个名为 mppp.dll 的通用链接垫片(link shim),它接管 microstk.exe(拨号管理器)和 winsock.dll 的网络调用,让它们走以太网而非串口/调制解调器。垫片内部负责 DHCP、ARP、DNS 的处理(DNS 从 DHCP Option-6 获取,回退到 Dreamcast 内置的 ISP 配置,再回退到公共解析器)。两个后端链路——宽带适配器(Broadband Adapter)和通过 SPI 连接的 W5500/MACRAW 网卡——仍在开发中,尚未实现完整的端到端通信。
自包含构建系统
构建基于 CMake(≥3.20)和 Ninja 生成器(Visual Studio 自带的这对组合即可工作,无需安装完整 VS)。所有必要的 SH-4 交叉编译器(cl.exe)和 CE 镜像工具链都已归入仓库。构建流程分为三个 cli 步骤:
# 配置
cmake -G Ninja -S . -B build
# 1) 仅编译 SH-4 模块 -> build/modules/ (dcspi.dll, mppp.dll, dcshell.exe, dcw* 应用)
cmake --build build
# 2) 生成可启动 OS 镜像 -> build/0winceos.bin
cmake --build build --target image
# 3) 生成完整光盘镜像 -> build/disc/disc.gdi
cmake --build build --target gdi
也可以指定 -DKERNEL=debug 生成带 SCIF(串行控制台)输出的调试镜像,配合 -DEXTRADATA=path/to/game 在光盘上额外放置一个游戏。
在真机启动
生成的标准 disc.gdi 可直接用于真实 Dreamcast 硬件:
- 使用 GDEMU、MODE 或 USB-GD-ROM 等光驱模拟设备:将
.gdi及其轨道文件复制到 SD 卡/镜像中,从菜单选择即可。 - 刻录为物理光盘:使用
toolchain/make-gdi-real.ps1脚本,参照真实 CE 游戏光盘的 GDI 布局重新生成(保持原始 IP.BIN 和轨道几何结构)。
默认镜像启动后直接进入 DCWin 桌面。若需诊断,可使用 -DKERNEL=debug 构建并连接 Dreamcast 的 SCIF 串行端口查看调试信息。
项目构成
项目基于 Sega “Dragon” Windows CE for Dreamcast SDK(已归入仓库)中的原始二进制文件。DCWin 桌面外壳、网络垫片 mppp.dll 和 SPI 驱动程序是原创代码;CE 内核及其他系统模块来自原版 SDK 二进制文件。作者声明,请勿超出本研究项目的精神重新发行这些归入的 SDK 二进制文件。
关键要点
- 完全自包含:仓库中包含 SH-4 PE 编译器(cl.exe)和 CE 镜像工具链(makeimg、romimage 等),无需安装 Platform Builder、Windows CE SDK 或输入 CD key。一次 cmake 命令即可生成可启动光盘。
- 窗口化多任务桌面:DCWin 外壳使用 PVR2/Direct3D 合成,支持拖拽、缩放窗口,带有开始按钮、任务栏和鼠标光标,每个应用运行在自己的 CE 进程中。
- 多种内置工具:文件浏览器、任务管理器、时钟、计算器、内存测试器、网络测试器,提供基础桌面体验。
- 网络垫片(mppp.dll):旨在让原版 Dreamcast CE 的拨号网络管理器通过以太网工作,内置 DHCP/ARP/DNS,支持宽带适配器和 W5500/MACRAW 两种硬件后端(仍在开发中)。
- 构建系统灵活:支持零售版镜像(静默)和调试版镜像(串行控制台输出),可以额外将游戏文件打包到同一光盘。
- 真机可运行:生成的
.gdi镜像兼容 GDEMU、MODE、USB-GD-ROM,也可按真实 CE 游戏光盘布局刻录到物理光盘。 - 基于官方 SDK 二进制:CE 内核和系统模块来自原版“Dragon” SDK,外壳、垫片、SPI 驱动为原创,禁止商业性再分发。
意义与影响
- 复活被遗忘的软件遗产:Dreamcast 的 Windows CE 2.12 曾默默承担游戏运行时角色,该项目将其从一个不可见的“底层”变成一个可交互、可扩展的桌面环境,为研究 90 年代末嵌入式 Windows CE 的运作细节提供了活标本。
- 降低复古开发门槛:通过自包含工具链,任何拥有 CMake 和 Dreamcast 硬件的开发者都可以编译、调试自己的 CE 应用,无需寻找早已停产的 SDK 光盘或忍受复杂的安装流程。
- 拓宽网络能力:垫片设计使 Dreamcast 能够借助现代以太网访问互联网,尽管当前尚未完全实现,但已展示出将老硬件连入现代网络的可行路径。
- 社区协同基础:该项目将 CE 运行时、构建脚本、原创外壳代码开源,为 Dreamcast 逆向工程、CE 系统研究、以及自制软件(Homebrew)生态提供了坚实的技术基座。
- 教育价值:从源代码到光盘镜像的完整流水线,展示了如何将嵌入式操作系统、交叉编译、镜像制作、硬件封装结合在一起,是计算机教育中难得的实战案例。
wince-dc 不仅是一个技术演示,更是一份对 Dreamcast 隐藏操作系统历史的考古报告。它让 20 多年前的“隐形” Windows CE 第一次以本来面目出现在用户面前,并为其注入新的生命。
