这是一个修复版,共 101 项修复,详细说明见下。

这次更新的内容

  • 出包改成交付单一游戏镜像。 新出的包把游戏资源放进一个镜像文件,iPhone / iPad 上只装原始资源,进游戏时直接用预先建好的索引读取,不再在手机上重建目录;装机过程按「解开推送包 / 解出小文件 / 核对文件」分段显示进度。
  • 60 帧改为玩家按游戏手动开启。 游戏默认按自己原本的帧率运行;已验证速度正确的游戏和本身就是 60 帧的游戏保持 60 帧。已装好的包装上新版 App 即生效,不用重新出包。
  • iOS 画面设置按游戏分别保存, 不再改一款就串到所有游戏。
  • iOS 主屏快捷菜单只留「导出诊断包」和「设置」, 在游戏库里也能用;「存档管理」改为长按游戏卡片选「管理存档…」;性能浮层在游戏库设置和游戏里是同一个开关。
  • Mac:游戏窗口支持本地多手柄(双人 / 四人),Joy-Con 可左右分开各占一个位置。(#282 #592,感谢 @kaiying1994、@lucaAce1024)
  • iPhone / iPad 也支持本地多手柄:系统手柄按连接顺序分给 1P–4P, 断开后重连回到原来的位置;震动和体感目前只给 1P。
  • 手柄按键布局可选「自动 / Switch 布局 / Xbox 布局」, 所有游戏共用,自动按手柄键帽上的字母对应;Mac 游戏窗口也能用只提供简易描述的第三方手柄了。
  • 本地玩家:iPhone / iPad 游戏库顶部和 Mac 启动器顶栏可以切换玩家,同一款游戏每个玩家各存各的档, 原有存档归第一个玩家。(#623)
  • 横屏游戏库改为封面牌组浏览, 可整排拖动、甩动滑动。(#191,感谢 @Tiaoge-tou)
  • 启动器和游戏菜单按 Switch 2 手柄的具体型号显示。(#535,感谢 @nevenhsu)
  • 界面上的文件夹路径可以直接点开, 在访达 / 资源管理器里打开。
  • Mac / Windows 启动器顶栏、iPhone 游戏库顶部和设置页显示 S2Arm 版本号, 反馈时截图就能看出是哪一版。
  • Mac 启动设置新增「游戏语言」: 跟随系统或指定一种语言,下次开始游戏生效。
  • 启动器入口整理:顶栏「环境检查」改叫「设置」,界面语言收进设置页; 游戏库、iPhone 包、磁盘空间集中在设置页「存放位置」;点顶栏品牌名回欢迎页;Mac 欢迎页的「一键出包」进游戏库同一张出包页。
  • Mac 启动游戏页换新: 封面卡加两段进度;出错只显示一句原因和下一步,游戏运行中自己退出会直接说明是游戏崩溃。
  • 按钮因为有任务在跑而置灰时,鼠标停在上面会说明在等哪个任务; Mac 上换封面、释放空间、存档等要等游戏库空出来时,也会显示在等谁。
  • Apple 设备音频新增 5.1 下混选项, 缺省行为不变。(#610,感谢 @kurtzou1)
  • iOS「设置」里游戏的首选语言列出全部可选语言。(#593)
  • 诊断包改用短文件名 S2Arm-诊断-月日-时分.zip,方便附到反馈里。
  • Mac / Windows 启动器:iPhone 上的 S2Arm 比启动器旧时,游戏库顶栏出现「更新 iPhone 上的 S2Arm」, 只换 App、没变的游戏资源不重新推送;新版认不了的游戏会先点名,可选择一起重新出包或稍后再出。
  • 游戏程序转换(改写器)修好问题后,受影响的游戏只换改写的那部分, 随「更新 iPhone 上的 S2Arm」或下次开始游戏生效,不用重新出包、资源不重传。
  • 「装到 iPhone 的方式」收进环境检查里的一张卡, 签名身份在这里设;出包页只显示一行当前安装方式,点「更改」即可调整。
  • 装机推送游戏镜像中途断了,下次从断点接着传, 不用整份重来。
  • 自签 / 侧载的玩家可以把 game.img 拷进「文件」App 里 S2Arm 的「放这里导入」文件夹, 打开游戏库、App 回到前台或点「重新检查」时会自动认领。
  • Mac 安装包(DMG)换上新的拖拽安装窗口。(#107,感谢 @Xc1Ym)
  • Windows 新增安装程序: 装到当前用户目录,带开始菜单和桌面图标,可在系统里卸载且不动游戏数据,界面与 Mac 安装窗口同一风格;官网下载页的 Windows 主按钮换成安装程序,压缩包保留为「便携版」。
  • 安装包变小: Windows 版不再多带一份 .NET,去掉 Git 里用不到的组件;Mac 版只留 Apple 芯片用的签名工具。
  • 开着 60 帧、设备一时跑不稳时会提示已回到游戏原帧率, 跑稳后自动再试,恢复时也会提示。
  • 自动更新改从官方下载站(dl.s2arm.com)下载新版,下载不了再自动退回 GitHub; 不管从哪里下,都按签名清单核对校验值。从 0.3.0 升级到之后的版本起生效。
  • 装到 iPhone 不再「拿不准就停」: 读不出手机上有哪些游戏、问不出装没装时照常装;覆盖装前存档备份不了、手机上有别的款要按新版重出、会挤掉别的电脑装的游戏,都会讲清后果,让你确认后继续;资源已经推到手机、只差解包时按传输成功处理,并提醒打开 App 接着装。「装到 iPhone」按钮也不再因为环境检查没全过而置灰。
  • Mac 启动器:删除游戏 / 清缓存现在立刻有反馈、不会删到一半;设备连接状态和实际一致;之前自签装过 S2Arm 的设备也能一键装。
  • iPhone / iPad 触屏操作也能被游戏识别为手势。(#568)
  • iOS 手柄震动在部分设备上没有反应。(#584)
  • 图形函数的安全空实现改为按调用来源判断, 从根上避免 0.2.8 那类误接管游戏自带库函数的问题。(#601)
  • Switch 2 游戏:修复一款游戏关底首领战掉到 1–2 帧(#41),以及另一款游戏读取特定地址时崩溃(#351)。 请遇到过的玩家更新后复测告诉我们。
  • 设备上的着色器缓存挪到不进 iCloud 备份的位置, 老位置的缓存首次启动时自动搬过去。
  • 启动器检查新版先读官网的签名版本清单,读不到再问 GitHub, 国内网络被 GitHub 限流时也能查到新版。从 v0.3.0 起生效。
  • iOS 游戏库:删除游戏点下立刻有反馈, 在后台删除,删完提示释放了多少空间。
  • iOS:App 切到后台约 10 秒后被系统结束。(#543,感谢 @Xc1Ym)
  • iOS「设置」里的浮层开关保存后重启不显示。(#153 #208,感谢 @jazz-zzzz)
  • 画质档位自动调整不再改动主机 / 掌机模式, 运行模式只由玩家自己选。(#522,感谢 @nevenhsu)
  • Switch 2 手柄:重连记住的 Joy-Con 2 时也会找另一侧,连接失败不再停止搜索;Mac 上先开游戏、再在 S2Arm 里连手柄,游戏也能收到输入。(#525 #526,感谢 @nevenhsu)
  • Apple 设备按实际输出声道数报告是否支持 5.1。(#577,感谢 @kurtzou1)
  • 一款 Switch 2 游戏:岛上植被出现黑块、近海场景模型显示不全。(#505 #508,感谢 @nevenhsu)
  • 个别游戏出包长时间停在「准备资源」。(#509,感谢 @ckuffff)
  • 程序里没有资源段的游戏出包失败(报 NCA section 1 does not exist),现在按空资源照常出包。(#620)
  • 只支持波兰语或泰语的游戏不再被当成没有语言、退回英语。
  • Windows:多程序合集出不了 iPhone 包(#613);导入 NSZ 时临时文件写到系统盘、系统盘满就失败(#612)。 临时文件现在放在游戏库所在的盘。
  • 出包前的空间检查按实际写入的那块盘计算, 存放位置在外置盘时不再看错盘;NUP 格式的游戏不再把所需空间多估一倍。
  • 游戏库在外置盘时商店横图一张都存不进库。(#571,感谢 @ha7rock)
  • 启动器首次打开报「内置引擎的版本快照无效」时, 改为如实显示系统 git 报的原话,不再一律让你重装。(#638)
  • Mac:装到 iPad 时设备信息里有非法字符导致装机失败。(#633,感谢 @albionlee)
  • Windows 装机不再去桌面 / 下载文件夹里找签名工具, 避免误用同名程序。
  • 存档位置: 按内容判断存档有没有换过;第一次放进存档时不再误剥目录;写回时保留用户号,避免游戏当成新玩家;写回中途断了,下次启动自动恢复。
  • Windows 启动器:出包、游戏库等页面每秒往下错位或跳回顶部。
  • 批量出包:磁盘满暂停后不会被误继续, 只能点「重试」恢复;还有平台没出完的游戏算作没出完。出包进度最后几行不再丢失、界面不再停在旧读数。
  • 出包进度百分比只增不减, 不再在 91% 和 40% 之间来回跳。(Mac / Windows)
  • 存放位置在外接盘时也能出包, 大部分写入落在外接盘,系统盘只需少量固定空间。
  • Switch 2 的 NUP 游戏解包时,本体和更新里内容相同的文件只写一份, 出包所需空间明显下降。
  • 着色器特别多的游戏,出包在开始翻译前按着色器数重新核对空间, 不再半路写满盘。
  • 大游戏出包长时间停在「抽取」: 抽取阶段不再把全部文件逐个打开一遍。(#606)
  • 出包缓存里旧版本的产物和中断留下的残余会自动清理。(#338,感谢 @kurtzou1)
  • 启动器自动更新完成后删掉旧版本留下的解包、增量和下载包, 不再每次更新在系统盘多占一整份。(#660)
  • 「释放空间」每项显示只删这一项能腾出的大小, 合计按勾选的组合算,不再把共用的部分算两遍。
  • 添加游戏认 Switch 2 的 .nup: Windows 文件选择器能看到 .nup,选文件和选文件夹拆成两个按钮;Mac 把 .nup 拖到游戏卡片上不再被当成存档。(#611)
  • Mac 启动器「存放位置」显示具体路径, 不再只显示卷名「系统盘」。(#553,感谢 @kurtzou1)
  • Mac 批量出包:出完自动装机不再被挡住; 批次进行中单独点的出包,等批次结束后接着出。
  • 连着多台设备时,装机、续签和「更新 iPhone 上的 S2Arm」都只针对你选中的那台; 选中的设备不在线会直接说明,没配对过的设备也会写清楚,并提示插线或连同一 Wi-Fi。
  • 装机失败说清原因: 手机上解开失败时当场显示 App 报的原因,不再干等 180 秒后说「解包没有开始」;iPhone / iPad 上装机、导入失败显示一句原因和下一步;游戏目录 App 写不进时说明原因并自动换到新目录;游戏库卡片说清在等什么,有数据的游戏不再悄悄消失。(#569 #540,感谢 @Catnip202X)
  • Mac:大游戏推送中断后不再改走系统的整文件传输(会把整个文件读进内存、拖到整机卡死), 改为提示换线再装,下次接着传。(#641)
  • Windows:私有目录属于别的账户时添加游戏失败, 现在就地修好;修不了会说明怎么恢复。(#672)
  • Windows 首次打开装 Metal 编译器:「打开官方页面」直接到下载区, 欢迎页配中文分步说明。
  • iOS:金手指、云存档的文件选择器直接打开对应文件夹,不再停在「最近项目」一直加载像卡死; 游戏资源挪出「文件」App 看得到的文件夹,放在不进 iCloud 备份的位置,老位置的首次启动时自动搬过去。
  • Apple 设备上的游戏声音延迟更低, 不再额外套用 64 ms 起播缓冲。(#260,感谢 @kurtzou1)
  • Mac:一款游戏玩十几分钟后随机闪退(#668);部分游戏玩一阵后被误判为显卡卡死而退出(#647)。
  • Mac 直连:第一次遇到新画面时不再整帧卡住等着色器, 卡顿明显变短;另修两处画面读到旧内容造成的闪烁。(#187,感谢 @Xc1Ym、@DanielZhangyc)
  • 不支持 BC 压缩贴图的 iPhone(如 A16 机型)上,一款竞速游戏进局闪退。(#407,感谢 @wowkiseki)
  • 一款游戏片头视频停在暗帧。(#529)
  • 一款游戏一直停在「连线中」读取画面: 离线时选账号这一步现在按真机返回失败,游戏转入离线流程。(#621,感谢 @albionlee)
  • Switch 2 游戏:一款游戏设定目标帧率时闪退(#679);另一款游戏首次进入新场景时画面闪烁、模型忽隐忽现(#674)。
  • 一款游戏 Mac 出包成功但启动后崩溃。(#515)
  • 游戏里用多边形图元画的内容不再整笔丢掉。(#635)
  • 出包:代码里碰巧含特定字节的游戏,直连库不再整批出不来(#477);个别着色器没有入口函数时只跳过它,不再让整个出包失败(#518)。(感谢 @Catnip202X、@wwmogu)
  • 改写器:恢复栈指针后还用到栈下方数据的函数,补丁不再一刀切地拒绝。 一款 Switch 2 游戏原先有 27 处改写不了、整份出不了包,现在能出包。(#704)出包碰到改写器还不支持的代码时,提示改成直接说「暂时出不了包、我们正在修」,并说明已经装到 iPhone 上的那份可以照常接着玩。
  • 改写器:跳转表中间夹着按自身位置算地址的指令(adr / adrp)时,搬进补丁区按原目标重新编码,不再记成改写缺口。 一款游戏原先因此出不了包。(#716)
  • Windows:大游戏出包时抽取着色器报内存不足(MemoryError)。 抽取不再每处整份拷贝文件,同时抽取和编译的路数按内存封顶;真的内存不够时会直接说明,并建议关掉占内存的程序或调大虚拟内存。(#711)
  • 一款 Switch 2 游戏出包停在「刷新」阶段(NRR 哈希表位置越界)。 新格式的 NRR 能认了;遇到认不出的 NRR 或读坏的 NRO,只跳过那一份并记进日志,不再整款停下。(#713)
  • 一款体育游戏水上场景近海出现黑面。 超过 16 KB 的任务 / 网格着色器数据改走设备内存中转。(#712,感谢 @nevenhsu)
  • 游戏里的视频画面边缘花屏。 VP9 视频的帧内预测按编码对齐范围延拓边界。(#362,感谢 @DanielZhangyc)
  • 包含 v0.2.9 的全部修复(#602 等)。
  • 安卓只走直连图形路径, 不再回落到通用后端。
  • 四指长按打开触屏菜单:拖动编辑虚拟手柄布局并按游戏保存,可开关触屏直通;菜单支持中文。(#544 #605,感谢 @wwmogu、@ahearnlam)
  • 设备自带的摇杆类传感器不再被当成接了手柄, 虚拟手柄不会因此被藏起来。
  • 导入包里带模块的游戏在正式版上也能启动, 游戏画面固定横屏。
  • 画质档位自动调整、帧率提示和发热 / 省电模式降档接进安卓。(#500 #600,感谢 @yyan160、@wwmogu)
  • 社区补丁随安卓包一起打包。(#504,感谢 @wwmogu)
  • 直连图形补齐与修复: SDK 10 及更早的游戏启动中止;缓冲与贴图互拷支持更多格式(#537);只绑计算程序时不再换掉绘制程序(#538);接上间接绘制与间接计算派发(#574);回放状态跨提交保留(#539);清除提交失败时不再释放帧队列仍在用的命令(#572)。(感谢 @ha7rock、@wwmogu、@n06ody)
  • Mac 上出安卓包时,用 Homebrew 装的 JDK 也能通过签名校验。
  • 触屏菜单里可以切换掌机 / 主机模式, 正在玩的游戏能当场切就当场切,否则下次启动生效。
  • 多线程游戏的游戏线程不再全挤在同一个 CPU 核上, 修一款 3D 游戏标题画面每秒只有几帧。
  • Windows:从旧版在启动器内自动更新时,如果 Impactor 开着,更新会失败,按钮又回到「更新并重启」。 先在任务管理器里结束 Impactor 再点「更新并重启」;也可以直接下载安装程序装新版,装到新位置不受影响。

升级前

先备份存档,确认当前安装版本与新版本的迁移说明。版本发布说明描述的是项目变更,不是本站独立进行的兼容性测试。

阅读完整上游发布说明