这里向泥介绍 Mirror’s Edge 不为人知的移动版!

前置条件 & 准备

Mirror’s Edge 的移动版本只曾在 IOS 与 WindowsPhone 平台发行,而在 IOS7 及之后的系统版本因无法存档而下架,所以现如今重新体验的最佳途径自然是去抓来一只微软爪机啦!笔者的抽屉里刚好留存着三台 WP 设备吃灰,这里稍微对于这个微软曾经的移动平台做些前置知识补充(谁让窝是微软nc粉呢,摊手ing)

作为多年前早已停止维护的系统,WP 应用商店早已结束服务,无法重新下载任何已购应用(退钱!!)
而侧载 APP 则依靠微软在 WP8 SDK 中提供的 XAP 程序包部署器,这本是向曾经的开发者提供的真机部署手段,用于在开发阶段进行调试。在部署之前的前置条件是为手机进行开发者解锁,需要注册成为开发者账号且每半年续费一次且费用不菲(印象中,笔者曾经是在淘宝代注册学生账号,相较于完整开发者账号的解锁,单台设备的程序包同时部署数量限制由10个锐减3个,经济所限…)

2025年,开发者解锁的渠道早已废弃,无法部署软件包使得绝大多数 WP 设备沦为电子垃圾。幸运的是,笔者其中一台 WP 设备并非出自微软/Nokia,而是华为在早期与微软合作的 Ascend W1(闺蜜甚至惊叹于华为还搞过这东西)。由于并非出自微软之手,安全性远不及 Lumia 系列,针对于 W1 的第三方修改 ROM 被早早放出,使得这台设备可以轻易进行开发者解锁,着实帮了大忙。

这里略过刷机过程,简单展示如何部署软件包。游戏的 XAP 包可以在 Internet Archive 找到:mirrors-edge-mobile-and-flash directory listing

安装 Visual Studio Community 2015,仅勾选通用Windows应用开发工具、Windows 8.1 和 Windows Phone 8.0/8.1 工具,安装需 11GB 左右电脑存储空间。之后在C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Tools\XAP Deployment 目录下找到部署工具,保持手机全程亮屏。注意:如果 Status 报错0x89740005 代表设备没有解锁,自己想办法去吧,笨~

XAP 笑传之拆拆包

对不起,窝在标题上玩了烂梗,道歉!红豆泥私密马赛 ::>_<:: 不过呢,其实 WindowsPhone 平台的软件包有两种:WP7/8/8.1 时代流行的 .xap 后缀包体,与 WP8.1 新引入的 .appx 安装包,后者多用于后续 UWP 应用打包。有趣的是,这两种包体结构都没有加密设计,简单的更改后缀名为 zip 即可解包。(记得15年左右,国内某个不知名小团体宣称全球首破 appx… 现在想起来还是超级想笑来着)

咱们拆开看看吧!emm…满眼的xnb文件,可以确定的 WindowsPhone 版的游戏是由 XNA 框架开发的。不了解的话,XNA 在我看来是对 DirectX 的一层封装,偏底层的的 API。已知 WP 版本是 IOS 的移植,且12年附近 XNA 还没有运行在 IOS 上的能力,看来与其说是移植,更偏向是整个重写了一遍叭…

这里提供xnb的解包工具:Releases · LeonBlade/xnbcli 此工具只具备纹理与 JSON 格式的拆解能力。

一个有趣的细节是,游戏为身处不同章节,不同光照环境下的主角 Faith 准备了不同的皮肤纹理:下图分别是在正午,午夜,地下的纹理。由于图形 API 在纹理采样时的坐标系原点位于屏幕左上,因此绝大多数纹理都是垂直反向的。

通过成就解锁的奖励原画以 800x480 分辨率呈现,并无新增内容,还请在官方设定集中寻找完整的原画与高清艺术图吧。

等等…别走!

如你所见,这只是 Part1 的部分啦(好像被窝写成 WP 的扫盲文惹,抱一丝!)咱还在认真准备 Part2 的内容ing,大概是一些 Mirror’s Edge 在其他平台的秘密啦!请你看下去呜呜w