Madeira:让非越狱 iPhone 运行 Windows PC 游戏
给非越狱 iPhone 跑 Windows 游戏的研究项目,把 Wine、FEX-Emu 和 DXMT 合进一个 Mach 进程。
GitHub willfaust/Madeira 更新 2026-09-28 分支 main 星标 814 分叉 152
iOS Windows 游戏兼容层 FEX-Emu Wine DXMT ARM64EC Metal 非越狱 iPhone

🧭 决策指南

适合,如果你

  • 你有非越狱 iPhone,并愿意使用 JIT 与 StikDebug 运行实验性 Windows 游戏。
    README 的 Requirements 写明需要 non-jailbroken iPhone、JIT 和 StikDebug。
  • 你的目标游戏是 Thumper 或 ULTRAKILL,且能接受研究项目的不稳定性。
    README 的 Status 明确写明 Thumper 和 ULTRAKILL playable,并强调这是 research project。
  • 你需要研究 x86-64、ARM64、Wine、D3D11 和 Metal 的 iOS 集成。
    README 介绍 FEX-Emu 负责 x86-64 → ARM64,DXMT 负责 D3D11 → Metal。

不适合,如果你

  • 你要求 App Store 安装,或不能使用 JIT 调试器附加流程。
    README 说明 JIT requires debugger attach,因此不能通过 App Store 分发,只能 sideload。
  • 你需要稳定的商业产品,而不是包含 breaking changes 和 per-title quirks 的研究项目。
    README 的 Status 明确称其为 research project,并提示 rough edges、per-title quirks 和 breaking changes。
  • 你不能每 7 天重新构建和安装应用。
    README 的 Requirements 说明免费 Apple ID 的 provisioning profiles 7 天过期,应用必须每周重建和重装。
  • 你的目标是 Marvel Cosmic Invasion 的可靠操控和长时间稳定运行。
    README 的 Status 说明该游戏曾 unexplained termination,且 controls are not yet reliable。

前置条件

  • 非越狱 iPhone;项目开发使用 A15(iPhone 13 Pro)。
  • JIT;iOS 上需要 debugger attach,项目使用 StikDebug。
  • 用于签名的 Apple ID;免费账户的 provisioning profiles 7 天过期。
  • 构建需要 FEX、wine、research/dxmt 等包含 iOS 修改的 fork 子模块。
  • 应用使用 xcodebuild 构建,native pieces 由 build/*/build.sh 覆盖。
  • Microsoft Visual C++ runtime DLLs 不随项目分发,必须自行提供。

第一步命令(README 原文)

git clone --recurse-submodules <this repo>

要注意

  • 不要改用 upstream 的 FEX、wine 或 DXMT 克隆;README 说明这些子模块指向包含 iOS 工作的 fork。
    README 的 Building:upstream clones will not build here。
  • 免费 Apple ID 的应用需每周重建并重装,但 prefixes 和 saves 会保留。
    README 的 Requirements:profiles expire after 7 days,app container survives reinstall。
  • Microsoft Visual C++ runtime DLLs 不在仓库中,需要按 tools/fetch-vcruntime.md 自行提供。
    README 的 License 章节明确说明运行库未分发。
  • 不要把该 fork 中的 AI-generated changes 提交回 FEX-Emu。
    README 的 A note on upstream contributions:FEX-Emu policy 不允许 AI 生成代码用于贡献。

材料未说明

  • README 未说明支持的 iOS 版本和具体 iPhone 型号范围;只说明开发使用 A15 的 iPhone 13 Pro。
  • README 未给出 StikDebug 的完整安装、JIT 启用和 debugger attach 操作步骤。
  • README 未提供各游戏的具体帧率、分辨率或图形设置数据。
  • README 未列出可运行游戏的完整清单,仅明确提到 Thumper、ULTRAKILL 和 Marvel Cosmic Invasion。
  • README 未说明 xcodebuild、build/*/build.sh 的完整参数、依赖版本和构建耗时。
  • README 未说明 Microsoft Visual C++ runtime DLLs 的获取来源,仅指向 tools/fetch-vcruntime.md。
  • README 未说明 Marvel Cosmic Invasion 的 unexplained termination 触发条件或修复计划。
  • README 未提供版本发布信息;项目元数据显示版本发布数为 0、最新版本为 No releases。

💡 深度解析

6
不适合 我使用未越狱 iPhone,目标是 Marvel Cosmic Invasion,并且要求控制输入可靠、运行过程中不能无解释退出;现在采用 Madeira 是否合适?
适合读者: 想把 Marvel Cosmic Invasion 带到未越狱 iPhone、但要求可靠控制和稳定运行的游戏测试者

不适合,因为 README 已明确记录 Marvel Cosmic Invasion 仍有异常终止和不可靠控制,与你的验收条件直接冲突。

  • 项目状态只说该游戏“has reached gameplay”,并同时说明一次运行出现 unexplained termination。
  • README 还明确写着其 controls are not yet reliable,因此不能把进入游戏流程等同于可稳定游玩。
  • 项目整体被定位为 research project,存在 per-title quirks 和 breaking changes;其他游戏还可能只有低帧率的 gameplay。
  • 这条链路还要承担 x86-64→ARM64 动态翻译、Windows 兼容和 D3D11→Metal 转换,README 没有提供可满足你稳定性指标的测试承诺。
  • Status:“Marvel Cosmic Invasion has reached gameplay, though a run has also ended in an unexplained termination”
  • Status:“its controls are not yet reliable”
  • Status:“This is a research project, not a product: expect rough edges, per-title quirks and breaking changes.”
  • Status:“Others reach gameplay at low frame rates.”
材料未说明:README 未说明异常终止的复现条件、日志位置或已知修复计划。;README 未说明控制问题具体涉及触控、手柄映射还是游戏内输入处理。
适合 我需要从源码构建 Wine Unix 侧库、ARM64EC PE 模块、FEX、DXMT 和 iOS 应用,并且不能把依赖替换成上游仓库;正确的起始方式是什么?
适合读者: 负责从源码构建 Madeira、需要同时编译 Wine Unix 库、ARM64EC PE 模块、FEX、DXMT 和 iOS 应用的开发者

适合,但必须严格使用项目指定的递归子模块;直接换成上游仓库会破坏构建前提。

  • README 将构建拆成 Wine Unix-side libraries、ARM64EC PE modules、FEX、DXMT 和 iOS app 多条链路。
  • native pieces 由 build/*/build.sh 覆盖,iOS 应用则使用 xcodebuild,因此你需要同时准备脚本构建链和 Xcode 构建链。
  • README 明确指出 FEX、wine 和 research/dxmt 子模块指向包含 iOS 工作的 Fork,“upstream clones will not build here”。
  • 项目数据表明代码规模较大,C 代码约 624 万行,另有 Objective-C、Swift 和 Objective-C++,构建与定位问题的复杂度不低。
  • Building:“The build is split across several chains — the unix-side Wine libraries, the ARM64EC PE modules, FEX, DXMT and the iOS app itself.”
  • Building:“build/*/build.sh covers the native pieces; the app is built with xcodebuild.”
  • Building:“FEX, wine and research/dxmt are submodules pointing at forks containing the iOS work; upstream clones will not build here.”
  • 项目数据:C 代码 6,241,149;Objective-C 351,510;Swift 282,979;Objective-C++ 190,195
git clone --recurse-submodules <this repo>
材料未说明:README 未列出所需 Xcode 版本、iOS SDK 版本和 macOS 版本。;README 未给出每条构建链的完整顺序、预计磁盘空间或构建耗时。
视情况 我只能使用免费 Apple ID,并且可以用 Xcode 和 StikDebug 每周重新构建、安装一次;在这个签名和 JIT 约束下,我能否实际维护 Madeira?
适合读者: 使用免费 Apple ID、依赖 Xcode 和 StikDebug、每周维护一次侧载应用的 iOS 构建开发者

视情况;如果你能接受每周维护和调试器附加,技术上可行,否则不适合长期使用。

  • README 明确说免费 Apple ID 可以用于签名,但 provisioning profile 只有效 7 天,应用必须每周重新构建和安装。
  • JIT 在 iOS 上要求 debugger attach,项目使用 StikDebug;未正确附加时,依赖动态翻译的游戏无法正常执行。
  • 因为 JIT 需要调试器附加,应用不能通过 App Store 分发,只能侧载,这会把安装、签名和启动流程都交给维护者。
  • 好处是 app container 在重新安装后保留,Wine prefixes 和存档不会因每周重装自动丢失。
  • Requirements:“A free account works; its provisioning profiles expire after 7 days”
  • Requirements:“JIT, which on iOS requires a debugger to attach — StikDebug is what this project uses.”
  • Requirements:“this app cannot be distributed through the App Store. It is installed by sideloading.”
  • Requirements:“The app's container survives reinstall, so prefixes and saves are preserved.”
材料未说明:README 未说明 StikDebug 在你的 iOS 版本上的具体安装和自动附加流程。;README 未说明每周重签后是否需要重新配置所有游戏或 JIT 启动参数。
视情况 我想分发一个包含 Wine、FEX、DXMT 修改版和 Microsoft Visual C++ 运行库的 Madeira 衍生版本;在 GPL-3.0-or-later 和第三方许可证约束下,我能否直接打包发布?
适合读者: 计划分发 Madeira 衍生版本、同时整合 Wine、FEX、DXMT 和 Microsoft Visual C++ 运行库的开源维护者

视情况;Madeira 衍生代码必须遵守 GPL-3.0-or-later,但 Microsoft Visual C++ 运行库不能直接从该仓库取得并打包。

  • License 章节规定 Madeira 为 GPL-3.0-or-later,分发的衍生作品必须保持开源。
  • Fork 的许可证不能简单按上游处理:Wine Fork 已按 LGPL-2.1 §3 重新许可为 GPL-3.0-or-later;FEX 和 DXMT 保留上游 MIT,但其修改部分为 GPL-3.0-or-later。
  • README 还列出 rpmalloc 的 0BSD 上游许可与 GPL 修改,并要求查看各 Fork 的 LICENSE-MADEIRA.md 和 THIRD-PARTY-NOTICES.md。
  • Microsoft Visual C++ runtime DLLs “are not distributed here and must be supplied yourself”,所以能否合法随你的发行包分发,取决于你自己的运行库来源和条款。
  • License:“GPL-3.0-or-later” and “Derivatives that are distributed must remain open source.”
  • License:“wine ... relicensed to GPL-3.0-or-later under LGPL-2.1 §3”
  • License:“FEX, dxmt ... upstream MIT preserved; modifications GPL-3.0-or-later”
  • License:“the Microsoft Visual C++ runtime DLLs are not distributed here and must be supplied yourself”
材料未说明:README 未判断你所选 Microsoft Visual C++ 运行库来源是否允许随应用重新分发。;README 未提供针对 App Store、企业签名或其他具体分发渠道的法律合规结论。
适合 我有一台未越狱的 A15 iPhone 13 Pro,想在本机侧载并运行 ULTRAKILL 或 Thumper,而不是使用云游戏;这个项目适合我吗?
适合读者: 使用 A15 iPhone 13 Pro、未越狱且愿意侧载 Windows 游戏的高级用户

适合,但前提是你接受它是研究项目而不是成熟游戏平台。

  • README 明确列出“Thumper and ULTRAKILL are playable”,这两个目标比未验证的游戏更有成功依据。
  • 项目支持“a non-jailbroken iPhone”,开发环境正是 A15 的 iPhone 13 Pro,与你的硬件约束相符。
  • 运行链路通过 Wine ARM64EC、FEX-Emu 和 DXMT,将 Windows、x86-64 与 D3D11 分别适配到 iOS、ARM64 和 Metal。
  • 你仍需 JIT 调试器、Apple ID 签名和侧载;免费账号的配置文件每 7 天过期,但容器中的 prefix 和存档会保留。
  • Status:“Thumper and ULTRAKILL are playable.”
  • Requirements:“A non-jailbroken iPhone. Development has been on an A15 (iPhone 13 Pro).”
  • README 开头:“Wine (ARM64EC)”、“FEX-Emu for x86-64 → ARM64 translation” and “DXMT for D3D11 → Metal”
  • Requirements:“its provisioning profiles expire after 7 days” and “prefixes and saves are preserved”
材料未说明:README 未说明你的具体 iOS 版本是否与当前构建兼容。;README 未给出 ULTRAKILL 和 Thumper 在 A15 上的实际帧率或功耗数据。
适合 我正在研究 FEX-Emu 的 x86-64→ARM64、Wine ARM64EC 和 DXMT 的 D3D11→Metal 链路,并且必须在 iOS 的单一 Mach 进程中运行;Madeira 是否适合作为实验基础?
适合读者: 需要在非越狱 iPhone 上研究 x86-64 翻译、Wine 和 Metal 图形转换的移动运行时研究者

适合作为实验基础,因为 README 直接描述了你要研究的整条链路和 iOS 进程约束。

  • Madeira 把 Wine ARM64EC、FEX-Emu 与 DXMT 组合起来,分别覆盖 Windows API、指令翻译和图形 API 转换。
  • 组件运行在“a single Mach process”中,并把 wineserver 改为线程而非独立进程,这是针对 iOS 进程模型的明确架构实验。
  • 项目源码包含 C、Objective-C、Swift 和 Objective-C++,且多个依赖使用带 iOS 修改的 Fork,便于沿组件边界定位问题。
  • 但 README 明确称其为 research project,并警告 breaking changes,因此它更适合验证机制,不适合作为稳定运行时基线。
  • README 开头:“combines Wine (ARM64EC), FEX-Emu ... and DXMT ... running as a single Mach process”
  • README 开头:“wineserver as a thread rather than a separate process”
  • 项目数据:主语言为 C;同时包含 Objective-C、Swift 和 Objective-C++
  • Status:“This is a research project, not a product ... and breaking changes.”
git clone --recurse-submodules <this repo>
材料未说明:README 未说明单一 Mach 进程中各组件之间的具体调用边界和调试接口。;README 未提供 FEX 翻译开销、DXMT 覆盖的 D3D11 特性范围或内存占用数据。

✨ 核心亮点

  • FEX-Emu 把 x86-64 翻译到 ARM64
  • DXMT 将 D3D11 映射到 Metal
  • Thumper 与 ULTRAKILL 已可游玩
  • 免费 Apple ID 签名每 7 天过期

🔧 工程化

  • 用 Wine、FEX-Emu 和 DXMT 在 iOS 运行 Windows 游戏
  • Wine、FEX-Emu、DXMT 合并为单一 Mach 进程

⚠️ 风险

  • 项目明确是研究项目,存在破坏性变更
  • 其他游戏可能只能低帧率进入 gameplay
  • JIT 需调试器附加,无法通过 App Store 分发
  • Apple ID provisioning profile 7 天后失效

👥 适合谁?

  • 想在非越狱 iPhone 测试 Windows 游戏的 iOS 开发者
  • 能使用 Xcode、xcodebuild 和子模块构建链的研究者
  • 拥有 A15 iPhone、StikDebug 和 Apple ID 的实验用户