
初识MadeiraFEX-EmuWineDXMT三件套iOS x86游戏模拟栈全解析【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/MadeiraMadeira是一个开源研究项目让 x86-64 架构的 Windows PC 游戏直接运行在未越狱的 iPhone上。它的核心是FEX-Emu Wine DXMT三件套——FEX-Emu 负责把 x86-64 指令实时翻译成 ARM64Wine 负责把 Windows API 翻译成 iOS 系统调用DXMT 负责把 DirectX 11 直接翻译成 Metal 图形指令。三者合并在同一个 Mach 进程中跑wineserver 甚至只是一个线程而非独立进程。目前《Thumper》《ULTRAKILL》已经可以流畅游玩。一句话讲清楚 Madeira 在做什么想象你的 iPhone 里住着一个翻译组组件干什么通俗理解FEX-Emux86-64 → ARM64 指令翻译CPU 的同声传译员WineARM64EC 版Windows API → iOS / POSIX API操作系统的外交官DXMTD3D11 → Metal 直接转换显卡的绘图转译者完整调用链是Windows x86-64 游戏 (.exe) → FEX-EmuCPU 指令翻译JIT 即时编译 → WineWindows API 翻译原生 ARM64 运行 → DXMT / Metal图形指令翻译 → iPhone 屏幕这套架构的详细推导过程可以在项目自带的技术深度分析文档 ARCHITECTURE_ANALYSIS.md 中读到它对每一种可选方案QEMU 全系统模拟、ARM64 Linux 虚拟机等都做了对比最终证明了FEX-Emu Wine DXMT这条用户态方案是唯一能达到可玩帧数的路径。三大组件逐个拆解1️⃣ FEX-Emu为什么选它而不是 Box64FEX-Emu 是一个成熟的 x86/x86-64 模拟器内部流程是x86 字节码 → 前端解码器 → 中间表示SSA IR→ 优化 → ARM64 JIT 后端Madeira 选择 FEX-Emu 而非 Android 上常见的 Box64有一个致命原因iOS 严格执行W^X可写与可执行互斥内存策略而 Box64 需要可写可执行内存在 iOS 上无药可救FEX-Emu 的内存模型可插拔、抽象层完善才能移植到 iOS。相关源码位于 app/Madeira/FEXBridge.h 和 app/Madeira/FEXBridge.mm。2️⃣ Wine把 Windows 装进 iPhoneWine 采用经典的 PE/Unix 双层架构Windows 的 DLL 编译成ARM64EC PE 二进制原生运行Unix 侧则是原生 iOS 库。几个关键设计单进程模型iOS 不允许fork()所以所有 Windows 进程都是同一个 Mach 任务里的线程wineserver 也降级为线程。这一设计在 app/Madeira/WineServerBridge.m 中有桥接实现。ARM64EC xtajit 接口这是性能关键Wine 的几百个系统 DLL 全部以原生 ARM64 速度运行只有游戏自己的 x86 代码才交给 FEX-Emu 模拟。预编译产物就在 app/Madeira/arm64ec-windows/ 目录下kernel32.dll、user32.dll等一目了然。iOS 显示驱动仓库的补丁集 patches/wine-ios-ml435-ml482.patch 等记录了对 Wine 的逐段 iOS 移植改动配套的 iOS 显示/输入 shim 在 app/Madeira/IOSDisplayShim.m 和 app/Madeira/Madeira/Winios/。3️⃣ DXMT跳过 Vulkan直连 MetalDirectX 11 游戏走的路径是DXBC 着色器 → AIR 位码 → Metal 库中间完全不经过 Vulkan。好处少一层翻译开销仅约 5–15%几何着色器被转换成 Metal 的 mesh shader绕开了 MoltenVK 不支持 GS 的死结iOS 的 Metal 特性集与 macOS 一致移植成本低DXMT 相关的着色器转换产物canary_vs.dxil等和许可说明在 app/Madeira/d3d12/ 中。两个最烧脑的技术点⚡ JITiOS 上如何获得现场编译代码的能力模拟器要 JIT即时编译而 iOS 禁止普通 App 拥有可执行内存。Madeira 的解法利用 StikDebug 这类调试器附着到进程上拿到CS_DEBUGGED标志通过BRK断点指令协议让调试器把内存页标记为可执行采用 MeloNX 的双映射内存技巧同一块物理内存映射出 RW写代码和 RX执行两个视图免去反复切换权限的性能损耗这段精巧的JIT 启动剧本就内嵌在 app/Madeira/StikJITHelper.swift 中对应的调试器脚本是 app/Madeira/madeira-jit.js——它甚至要处理 Wine 的软信号转发堪称在枪林弹雨中搭舞台。 崩溃隔离一个假进程挂了会怎样由于所有 Windows 进程steam.exe、services.exe、rpcss…其实是同一个 Mach 任务里的线程任何一处未捕获的异常都会杀死整个 App。项目文档 STEAM_CEF_HANDOFF.md 详细记录了围绕故障隔离做的大量工程软信号转发、EXC_RESOURCE内存告警处理、以及 Steam 登录窗口在 iPhone 13 Pro 上成功渲染并交互的最新进展。现在能玩什么按 README.md 的说法这是研究项目而非产品请预期粗糙边缘和每款游戏的特殊脾气游戏状态Thumper✅ 可玩典型 142 FPS峰值 2286 FPS带音频ULTRAKILL✅ 可玩Marvel Cosmic Invasion⚠️ 进入实际游戏流程但偶发不明退出操作尚不稳定其他部分可达可玩帧率手柄与触屏输入也很完整最多 4 个物理手柄槽位 触屏虚拟手柄合并到 1 号玩家按键、扳机、双摇杆全支持输入在 250Hz 串行队列采样后统一写入 XInput。细节见 docs/CONTROLLERS.md实现位于 app/Madeira/Winios/WiniosGamepad.c 与 app/Madeira/TouchGamepad.swift。运行要求与构建指南 硬件与账号要求一台未越狱的 iPhone开发机型为 A15 / iPhone 13 Pro需要 JIT 能力 → 依赖 StikDebug 调试器附着因此无法上架 App Store只能侧载安装一个 Apple ID免费账号即可注意免费证书每 7 天过期一次需要每周重新构建安装——好在 App 沙盒数据保留游戏前缀和存档不会丢 构建思路不必背命令了解链条即可构建横跨多条链条完整复现记录见 docs/BUILDING.mdUnix 侧GMP / Nettle / GnuTLS 静态库产出 app/Madeira/libgmp.a 等FEX 双构建iOS 原生目标 ARM64EC PE 模块产物xtajit64.dllWine 双构建Unix 侧静态库 ntdll等 PE 模块DXMT 双构建原生库 winemetal.dll/d3d11.dllPE 模块iOS Appxcodebuild打包成 IPA 侧载Debug 配置才是能跑游戏的配置几个值得注意的仓库外依赖Microsoft VC 运行时 DLL 不随仓库分发自行获取说明在 tools/fetch-vcruntime.md以及一套第三方工具链。 许可证速览主项目GPL-3.0-or-later见 LICENSE分发的衍生作品必须保持开源上游组件Wine / GnuTLS 为 LGPL-2.1FEX-Emu / DXMT 为 MITrpmalloc 为 0BSD全文收录于 LICENSES/特别提示仓库里的 fork 与上游许可不完全相同各 fork 有自己的LICENSE-MADEIRA.md逐组件明细见 THIRD-PARTY-NOTICES.md 与 docs/LICENSING.md常见问题 FAQ Q为什么不能像 macOS 上 CrossOver 那样直接用 RosettaARosetta 2 是 Apple 专供 macOS 的封闭组件iOS 上没有。Madeira 用 FEX-Emu 顶替了 Rosetta 的位置用 DXMT / MoltenVK 顶替了专有的 D3DMetal。Q为什么 App Store 上找不到它AJIT 必须靠调试器附着解锁这与 App Store 审核规则不兼容只能免费账号 侧载每周重签。Q32 位老游戏支持吗A架构上靠 Wine 11 的 WoW64 模式在纯 64 位环境里跑 32 位应用iOS 本身从未有过 32 位进程这条路径是刚需。Q性能大概打几折A综合估计约为原生 x86 性能的35%–55%软件 TSO 下FEX 指令翻译约占 30–50% 开销Wine 5–10%DXMT 5–15%。轻量 DX9 游戏可稳定 60fps重度 DX11 大作则降到 20–40fps 档位。总结Madeira 用三件套各司其职的分工把iPhone 玩 PC 游戏从玄学变成了工程问题FEX-Emu 管 CPU、WineARM64EC 原生管系统、DXMT 管 GPU再叠加 StikDebug 解锁 JIT、双映射内存、单进程 wineserver 三个 iOS 特化设计。它目前还是一个带着鲜明研究项目气质的开源探索——Thumper 已经飙到上千帧Steam 客户端的 CEF 登录页也在一步步攻克之中。如果你对ARM 手机上跑 x86 Windows 应用这条技术线感兴趣README.md 和 ARCHITECTURE_ANALYSIS.md 是最好的两篇入门读物。【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考