Undine1/moonstone-reborn

GitHub: Undine1/moonstone-reborn

从零构建的 Amiga 定制芯片模型与 68000 CPU 核心,让 1991 年经典游戏 Moonstone 无需模拟器即可在 Windows 上原生运行。

Stars: 0 | Forks: 0

# Moonstone 重生 **1991 年 Amiga 平台的经典游戏 _Moonstone: A Hard Days Knight_,原生运行于 Windows 之上 —— 无需模拟器。** 真实的 Amiga 68000 游戏代码直接在一个内嵌的 CPU 核心上运行,该核心建立在一个从零开始构建的 Amiga 定制芯片模型之上 —— 包括 blitter、copper、bitplane 显示、硬件 sprites 以及 4 声道 Paula 音频。这里 **没有 WinUAE,没有 FS‑UAE, 也没有 Kickstart ROM**。只需要一个 `moonstone.exe` 即可。 它可以运行整个游戏流程:cracktro → 介绍动画 → 主菜单 → 选择骑士 → 自定义名称 输入 → 装备/祭坛 → 陆上巨石阵地图 → 野外战斗 → 城镇 (商人、酒馆、治疗师、神殿) → 山谷与守护者 → 胜利。支持单人 以及 2-4 人轮流共享设备游玩,并且支持手柄、键盘和鼠标。 ## ⚠️ 您必须拥有 Moonstone 并提供您自己的游戏数据 **本项目不包含任何游戏数据** —— 这里不包含也不分发任何原始的图形、音频或代码 。它只是一个*引擎*,用于运行您自己合法拥有的 游戏副本。您只需要将**三个原始的软盘镜像**放入一个 `data/` 文件夹中: | 文件 | 内容说明 | |------|------------| | `Moonstone - A Hard Days Knight_Disk1.adf` | 软盘镜像 1 | | `Moonstone - A Hard Days Knight_Disk2.adf` | 软盘镜像 2 | | `Moonstone - A Hard Days Knight_Disk3.adf` | 软盘镜像 3 | 就这样 —— 放入那三个 `.adf` 镜像并运行即可。在首次启动时,引擎会直接从 磁盘 1 的 AmigaDOS 文件系统中读取它所需的四个引导模块(`nb`、`program`、`mog`、`crystal`),并自动将它们写入到 `data/` 中,因此**您永远 不需要手动提取任何内容**。(`.adf` 文件名可以简写为 `Disk1.adf`/`Disk2.adf`/`Disk3.adf`。) _Moonstone © 1991 Mindscape International / Rob Anderson。本项目是一个独立的、 非商业性质的 runtime 重新实现,与版权持有者没有任何附属关系或得到其认可。_ ## 游玩方式(预构建版本) 1. 从 [Releases](../../releases) 页面下载最新的发布版本并解压缩。 2. 将您的三个原始 `.adf` 软盘镜像放入 `data/` 文件夹中(见上文)。 3. 双击 `moonstone.exe`(或 `Play Moonstone.cmd`)。 需要 64 位 Windows。`SDL2.dll` 必须保留在 exe 文件旁边。如果出现问题, 游戏会在 exe 文件旁边写入 `moonstone.log`,并弹出一个提示原因的消息框 —— 请将该日志附加到错误报告中。 ## 控制 | | 手柄(推荐) | 键盘 / 鼠标 | |---|---|---| | 移动 / 光标 | 左摇杆或方向键 | 方向键 / 鼠标 | | 攻击 · 选择 · 确认 | A / RB / RT / Start | 空格键 / Ctrl / Enter / 左键点击 | | 取消 / 返回 | B | 右键点击 | | 退出 | — | Esc | - **名称输入**(选择骑士):在键盘上输入;Backspace 进行编辑,Enter 确认。 - **选择弹窗**(提供两个选项的位置,例如野外 vs 城市):按下 **Up** 选择第一个选项,按下 **Down** 选择第二个选项(或按 `1` / `2`)。 - 某些界面(装备/祭坛、陆上地图)是基于光标的 —— 移动指针并 按下开火键以执行操作。 - 从主菜单中选择 **Practice** 即可直接进入一个战斗竞技场。 ## 从源码构建 您需要在 PATH 中配置好 [Zig](https://ziglang.org/download/) 0.13+(它提供了 `zig cc`, 一个可直接替换的 C 编译器 —— 无需 MSVC 或独立的工具链)。 ``` bash build.sh # -> build/moonstone.exe (+ SDL2.dll) bash package.sh # -> dist/MoonstoneReborn/ (engine only, no game data) ``` 然后将您的游戏数据放入 `build/data/`(或 `dist/MoonstoneReborn/data/`)并运行该 exe。 ## 工作原理 | 层级 | 功能说明 | |-------|--------------| | **CPU** | [Musashi](https://github.com/kstenerud/Musashi) 68000 核心未经修改地运行原始游戏代码。 | | **Chipset** | 从零开始的 OCS 模型:自定义寄存器、CIA‑A/B 定时器、中断、copper、bitplane 显示 + 硬件 sprites、blitter(区域 + 直线)、Paula 4 声道音频、周期精确的光束。 | | **AmigaOS HLE** | 最小化的 `exec`/`dos` stub,使游戏自带的加载器、内存分配以及基于文件名的资源加载能够正常工作。 | | **Trackdisk** | 忠实还原的 MFM 软盘模型,通过您的 `.adf` 镜像为游戏的原始磁盘读取提供服务,并支持无缝自动换盘。 | | **Host** | 使用 SDL2 处理窗口、输入(键盘/鼠标/手柄)和音频。 | 整个引擎是一个单一的 C 翻译单元,即 [`src/moon.c`](src/moon.c)。详尽的 逆向工程记录 —— 包括在此过程中发现的每一个界面、FSM 和关键内存地址 —— 都在 [`RE_NOTES.md`](RE_NOTES.md) 中。 ## 许可证 Moonstone Reborn 引擎采用 **GNU GPL v3.0** 许可证 —— 详见 [LICENSE](LICENSE)。 您可以自由地研究、修改和重新分发它,但您分发的任何衍生作品都必须 在 GPL 下开源。GPL **不**适用于原始的 Moonstone 游戏 数据,这些数据仍为其版权持有者的财产,且绝不会在此处包含。 第三方组件(Musashi、SDL2)保留其各自的许可证 —— 详见 [THIRD_PARTY.md](THIRD_PARTY.md)。
标签:Amiga, M68000, 复刻, 复古游戏, 客户端加密, 游戏引擎