README 的 Requirements 写明需要 non-jailbroken iPhone、JIT 和 StikDebug。
Madeira:让非越狱 iPhone 运行 Windows PC 游戏
给非越狱 iPhone 跑 Windows 游戏的研究项目,把 Wine、FEX-Emu 和 DXMT 合进一个 Mach 进程。
🧭 决策指南
为什么现在热: 无法从材料判断
适合,如果你
-
你有非越狱 iPhone,并愿意使用 JIT 与 StikDebug 运行实验性 Windows 游戏。
-
你的目标游戏是 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.”
适合
我需要从源码构建 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>
视情况
我只能使用免费 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.”
视情况
我想分发一个包含 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”
适合
我有一台未越狱的 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”
适合
我正在研究 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>
✨ 核心亮点
-
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 的实验用户