iPhone 模拟器实测:Madeira 在 iOS 跑 x86-64 Windows 游戏拆解

iPhone 模拟器实测:Madeira 在 iOS 跑 x86-64 Windows 游戏拆解

【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu + Wine + DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira

App Store 里搜不到它,但它能在未越狱的 iPhone 上直接运行 x86-64 的 Windows PC 游戏——《Thumper》在这台iPhone 模拟器里带音效稳定出帧,典型 142 FPS,峰值到过 2286 FPS。项目名叫Madeira,作者自己把它标注为研究项目而非商业产品:能跑通的越来越多,但兼容性与帧率因游戏而异,边角随时在变。

它的底牌是三层技术栈:FEX-Emu把 x86-64 指令转写为 ARM64,Wine ARM64EC提供 Windows 运行环境,DXMT把 D3D11 图形调用换成 Metal。三者在同一个 iOS 进程里协作,游戏文件一行不改。

下面按指令走过的"工序"拆原理,再给构建命令、输入配置和兼容清单。

一条指令到 iPhone 屏幕:FEX、Wine、DXMT 流水线全景

指令工序(FEX-Emu)。游戏可执行文件里的 x86-64 机器码先被FEX-Emu接收,它边运行边把指令块转写成 ARM64 并缓存,后续同一块代码直接执行缓存结果。iPhone 全程只认 ARM64。

运行环境工序(Wine ARM64EC)。没有"Windows"这个壳,游戏根本起不来。这里用的是Wine 11.4的 ARM64EC 构建:数百个 Windows API 落在 DLL 层,游戏调用的每个 Win32 接口都在这层兑现。

图形工序(DXMT)。画面不走 DirectX 硬件路径,而是由DXMT把 D3D9/10/11 调用逐条映射到 Metal,最终交给 A 系列芯片的 GPU 出图。

wineserver 线程化:iOS 禁止 fork() 的绕行方案

iOS 应用无法派生其他程序,所以 Wine 的常驻服务wineserver被改造成一个线程,直接挂进 iOS 主进程。你在游戏里看到的每个"Windows 进程",实为同一个 iOS 进程内的线程。

帧率为什么扛得住:原生跑的那大半

性能关键在于分工:Wine 的各 DLL 以 ARM64 原生速度跑在 A 系列芯片上,只有游戏自身的 x86 代码经过 FEX 模拟。开销被压到最小的一块上,这是帧率可观的核心原因。

iOS 的三条规则:JIT 怎么配、7 天重签怎么办、为何只能侧载

硬件门槛先说清:开发验证机型是 A15 芯片的 iPhone 13 Pro,未越狱;更强的芯片效果更佳。真正卡人的是下面三条系统规则。

规则一:JIT 依赖调试器附加(StikDebug 与 CS_DEBUGGED)

规则:iOS 只在调试器附加状态下允许应用执行机器生成的代码,即 JIT 许可不常开。

代价:首次使用要装StikDebug——它 attach 到应用后授予CS_DEBUGGED标志,JIT 从此可用。

回报:FEX 能即时产出 ARM64 指令而非慢速解释,帧率才有谈的余地。

规则二:免费 Apple ID 可用,但 7 天重签一次

规则:免费账号签出的描述文件 7 天过期。

代价:每周重新签名并重装一次应用。

回报:免费账号即可侧载,不必付费开发者证书;且重装后应用数据容器保留,游戏存档与 Wine 前缀(prefix)都不丢,无需重新导入游戏。

规则三:JIT 与 App Store 互斥

规则:依赖调试器附加的机制不在 App Store 审核框架内,上架无解。

代价:只能走侧载通道(SideStore、AltStore 一类工具)安装。

回报:整套 Windows 运行栈落在普通未越狱 iPhone 上。

从源码到 IPA:备料、五条编译链与出包侧载

备料:仓库外依赖先到位

克隆时必须递归拉取子模块——FEX、wine、research/dxmt是含 iOS 移植工作的 fork,直接克隆上游代码无法构建:

git clone --recurse-submodules https://gitcode.com/GitHub_Trending/mad/Madeira

仓库之外还有三份输入(清单见 docs/BUILDING.md 的"Inputs that are not in the repository"):

  • llvm-mingw-20260421交叉编译工具链,解压到toolchains/;
  • 为 iOS 构建的 LLVM,这一步最熬人,耗时数小时;
  • Microsoft Visual C++ 运行时 DLL——许可证受限不随仓库分发,获取方法见 tools/fetch-vcruntime.md。

编译链:五条工序按顺序执行

# 1. GnuTLS/GMP/Nettle 静态库 build/gnutls-ios/build.sh # 2. FEX 双构建:ARM64 静态库 + ARM64EC 模块(产出并复制 xtajit64.dll) build/fex-ios/build.sh && build/fex-arm64ec/build.sh # 3. Wine unix 侧三库 build/ntdll-unix/build.sh && build/wineserver/build.sh && build/win32u-unix/build.sh # 4. DXMT 图形层 build/dxmt-ios/build.sh # 5. 原生 D3D12 运行时 build/madeira-d3d12/build-pe.sh

出包:xcodebuild 构建后压成 IPA 侧载

xcodebuild -project app/Madeira.xcodeproj -scheme Madeira \ -destination 'generic/platform=iOS' -allowProvisioningUpdates build

经验值:只有 Debug 配置能稳定跑游戏——Release 构建曾导致 guest 崩溃,务必用 Debug。完成后把Payload/Madeira.app压成 IPA,用侧载工具装上。

输入方案:物理手柄、触屏映射与智能仲裁

  • 物理手柄:配对的 MFi/蓝牙手柄经 XInput 直通 Windows 游戏,最多 4 个扩展配置文件,槽位稳定不重排;以 250 Hz(4 ms 间隔)采样,按钮、扳机、带符号摇杆原样送入,不叠加软件死区。
  • 触屏虚拟手柄:横屏触摸编辑器自由映射 A/B/X/Y、方向键、LB/RB;LT/RT 为全行程扳机,LS/RS 是模拟摇杆,带径向钳制,摇杆位移相对首次触摸点。
  • 智能仲裁:物理与触屏输入可叠加——扳机取两者较大值;物理摇杆偏离标准 XInput 死区时优先于触屏摇杆;松开一根手指不会卡住另一根手指正在按住的键。

提示:在Documents/madeira.cfg中设env.MADEIRA_XINPUT = 0并重启,整套 XInput 生产者即可回滚禁用(完整机制见 docs/CONTROLLERS.md)。

兼容清单:哪些 PC 游戏已在真机跑通

游戏实测表现帧率记录
Thumper可玩,音效正常典型 142 FPS,峰值 2286 FPS
ULTRAKILL可玩—
Marvel Cosmic Invasion已进游戏画面,操控尚不稳定—
其余多数游戏多数能进入游戏画面,帧率偏低—

另有一条"硬骨头"进展:Valve 的 Steam 客户端走 Chromium CEF 渲染,团队已经让登录窗口在 iPhone 上渲染并可交互,但整体仍被归为前沿问题。研究项目按游戏区分的怪癖还在消,以上状态以仓库当前提交为准。

高频疑问速答

每周都得重装一次?免费 Apple ID 的签名 7 天过期。重装只换外壳:应用容器保留,游戏、存档、Wine 前缀原样在位。

为什么 App Store 没有?JIT 需要调试器附加授予许可,这是商店框架之外的机制,只能侧载。

32 位游戏还有救吗?有路:Wine 11 的 WoW64 层通过 thunking 在纯 64 位系统上跑 32 位程序,而 iOS 恰好只有 64 位进程,这条路正好成立。

内存不够会被系统杀掉?会。iOS 的 Jetsam 上限约 4096 MB,重度游戏可能触顶;热节流还会持续降频。这是移动设备模拟 PC 游戏的天然瓶颈。

许可证能不能商用二次分发?项目主体为GPL-3.0-or-later,派生分发须保持开源。各上游组件(Wine、FEX-Emu、DXMT、rpmalloc 等)的许可证明细在 LICENSES/ 与 THIRD-PARTY-NOTICES.md,法律口径以 docs/LICENSING.md 为准。

仓库导览

位置它能告诉你什么
app/Madeira/iOS 应用主体:SwiftUI 前端、Metal 合成器、Wine 桥接
app/Madeira/MadeiraApp.swift应用入口,手柄事件捕获从这里启动
app/Madeira/arm64ec-windows/预编译 Wine PE 模块(ntdll.dll、d3d12.dll 等)
docs/BUILDING.md可复现构建全流程记录
docs/CONTROLLERS.md手柄与触屏 XInput 输入机制全解
tools/fetch-vcruntime.mdMicrosoft VC++ 运行时的合规获取指南
patches/及各 fork针对 Wine 的 iOS 移植补丁集(随 fork 检出获取)

这是一份仍在快速演进的研究项目:链路已通,细节未齐。想读懂"iOS 模拟 PC 游戏"的完整技术链,它目前是最好的公开样本。

【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu + Wine + DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

PLC实战经验清单:从硬件接线到程序调试的90条避坑指南

PLC实战经验清单:从硬件接线到程序调试的90条避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:01:38 阅读更多 →
零成本用GitHub Pages部署HTML5游戏

零成本用GitHub Pages部署HTML5游戏

零成本用GitHub Pages部署HTML5游戏 【免费下载链接】github-pages Create a site or blog from your GitHub repositories with GitHub Pages. 项目地址: https://gitcode.com/GitHub_Trending/gi/github-pages 想让玩家在线试玩你的游戏,是不是得先租台服务…

2026/10/21 2:01:38 阅读更多 →
Cx-Programmer中ST语言编程实战:从梯形图到结构化文本

Cx-Programmer中ST语言编程实战:从梯形图到结构化文本

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:01:38 阅读更多 →

最新新闻

服务器磁盘管理实战:从选型、RAID到LVM与性能排障全解析

服务器磁盘管理实战:从选型、RAID到LVM与性能排障全解析

最近帮一个业务团队做新服务器选型与磁盘初始化配置时,发现很多开发同学对磁盘这块的知识还停留在“机械硬盘 vs 固态硬盘”的层面。真要落到服务器选型、多块硬盘怎么组合、RAID 怎么选、系统装完以后磁盘怎么规划、后续怎么扩容和排障,往往就缺乏一套完…

2026/10/21 2:49:01 阅读更多 →
RAG知识库问答实战:从原理、技术选型到工程落地优化

RAG知识库问答实战:从原理、技术选型到工程落地优化

1. RAG 到底解决了什么问题,为什么现在非学不可最近两年,大模型相关的技术方向非常多,微调、Agent、多模态、RAG……如果不深入去看,很容易被各种名词绕晕。尤其是 RAG(Retrieval-Augmented Generation,检索…

2026/10/21 2:49:01 阅读更多 →
RAG知识库问答实战:从原理到代码落地

RAG知识库问答实战:从原理到代码落地

前一阵子在做知识库问答项目时,发现网上 RAG 相关的教程虽然很多,但大部分要么只讲原理、不给可运行代码,要么代码能跑但不解释为什么这么设计。对刚接触大模型应用开发的同学来说,很容易卡在“原理看懂了,一动手就报错…

2026/10/21 2:49:01 阅读更多 →
RAG入门到实战:用LangChain+Chroma搭建知识库问答系统

RAG入门到实战:用LangChain+Chroma搭建知识库问答系统

先给结论:RAG 是目前搭建知识库问答最稳的基线方案。RAG 的全称是 Retrieval-Augmented Generation,检索增强生成。它解决的问题很直接:大模型不知道你的私有资料、内部文档、产品手册和业务数据,那就先把这些资料切块、向量化、存…

2026/10/21 2:49:01 阅读更多 →
火焰数据集YOLOv5训练实战:从标注文件到可推理模型

火焰数据集YOLOv5训练实战:从标注文件到可推理模型

简介:火焰数据集(含标注好的标签)面向从事目标检测的开发者与研究者,尤其适合使用 YOLOv5 训练火焰识别模型的场景,可用于火灾预警、视频监控等实际项目。资源包共 5260 个文件,包含 1853 张 jpg 图像、185…

2026/10/21 2:49:01 阅读更多 →
Quartz动态设置并发数量

Quartz动态设置并发数量

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:48:00 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →