iwannagooutside/9mm-vita

GitHub: iwannagooutside/9mm-vita

该项目是 Gameloft 的 9mm HD(Android 版)在 PS Vita 上的原生移植包装器,通过加载并修补原始 ARMv7 二进制文件实现在 Vita 上运行。

Stars: 0 | Forks: 0

# 9mm Vita 这是 *9mm HD Android* 移植到 *PS Vita* 的包装器/移植版。 本移植版通过在内存中加载官方 Android ARMv7 可执行文件,使用原生函数解析 其导入并进行修补以使其正常运行。 **本软件不包含游戏的原始代码、可执行文件、资源或其他 不可分发的部分。作者不以任何方式推广或纵容盗版。 要在他们的 PS Vita 设备上启动并运行游戏,用户必须提供 其合法获取的游戏副本,形式为 .apk 文件。** 已在最新的 Android 版本上测试,该版本的 `libCopStory.so` 大小为 11524815 字节。其他版本将拒绝启动而不是出现运行异常,原因请参阅 [构建说明](#build-instructions-for-developers)。 ## 开始前需要准备的内容 - 一台运行自定义固件的 Vita 或 PSTV,并安装了 VitaShell。 - `ux0:` 上有大约 1.8 GB 的可用空间。 - 你自己的游戏副本,仍安装在 Android 设备上(或其备份)。你需要 `.apk` 以及**并且**需要游戏首次启动时下载的数据,这些数据占了 1.8 GB 中的大部分。 ## 设置说明(面向最终用户) ### 1. 插件 安装 [kubridge](https://github.com/bythos14/kubridge/releases) 和 [FdFix](https://github.com/TheOfficialFloW/FdFix/releases):将 `kubridge.skprx` 和 `fd_fix.skprx` 复制到 `ur0:tai`,然后将它们添加到 `ur0:tai/config.txt` 的 `*KERNEL` 部分下: ``` *KERNEL ur0:tai/kubridge.skprx ur0:tai/fd_fix.skprx ``` **注意** 如果你正在使用 rePatch 插件,请不要安装 fd_fix.skprx! 编辑 `config.txt` 后请重启,否则插件不会被加载。 ### 2. Shader compiler 如果你还没有安装 `libshacccg.suprx`,请按照 [本指南](https://samilops2.gitbook.io/vita-troubleshooting-guide/shader-compiler/extract-libshacccg.suprx) 进行安装。 它必须来自你自己的主机,没有人可以提供给你。游戏在运行时会编译 其 shaders,因此如果没有它,游戏将卡在黑屏。 ### 3. 从 Android 获取游戏文件 需要从已安装游戏并完成下载的设备上获取两样东西: - **The apk.** Play Store 上的任何 apk 提取器都可以将其提取出来,或者通过 adb 获取。它必须是 ARMv7 版本 (`armeabi-v7a`)。 - **The data folder.** 在设备上位于 `Android/data/com.gameloft.android.ANMP.Gloft9MHM/files/` 并且名为 `Gloft9MHM`。大约 1.7 GB。如果比这小得多,说明游戏尚未 完成下载,你应该在 Android 上启动它并让其完成下载。 ### 4. 将它们放到 Vita 上 创建 `ux0:data/9mm/` 并放入以下内容: - `Gloft9MHM` 文件夹中的所有内容(`.gla` 文件、 `sounds_hi.glza` 等)。放入文件本身,而不是文件夹。 - apk 中的两个文件:apk 是一个 zip 压缩包,因此将副本重命名为 `.zip`,打开它, 并从 `lib/armeabi-v7a/` 中提取 `libCopStory.so` 和 `libStormGLOFT.so`。 最终你应该得到的路径类似于 `ux0:data/9mm/libCopStory.so` 和 `ux0:data/9mm/actors.gla`。 **如何将 1.7 GB 移动到那里。** 选择适合你的方法: - *SD2Vita / microSD*:拔出存储卡,插入你的 PC,直接复制到其中。 这是目前最快的方法,也是我会选择的方法。 - *USB*:在 VitaShell 中,按下 `Select`,Vita 将作为驱动器显示在你的 PC 上。 - *FTP*:在 VitaShell 中,按下 `Select` 切换到 FTP,使用 FileZilla 或 类似工具连接。工作正常,但 Vita wifi 速度较慢,因此预计需要一些时间。 ### 5. 安装 vpk 从 [Releases](../../releases) 页面下载 `.vpk` 并将其复制到 Vita 上的任意位置 (`ux0:` 根目录即可)。在 VitaShell 中,将光标移动到它上面,按下 `X`,然后确认。主屏幕上将出现气泡图标。 ### 6. 可选 [PSVshell](https://github.com/Electry/PSVshell/releases) 允许你超频至 500 MHz。有了它,加载过程会轻松得多。
可选:使用脚本而不是手动复制文件 如果你有 Python 并且不想手动解压 apk,此操作将为你完成第 3 步和 第 4 步,并检查是否有遗漏: ``` python3 tools/prepare_data.py --apk 9mm-HD.apk --cache Gloft9MHM.zip --out 9mm-data ``` 然后将 `9mm-data/` 中的所有内容复制到 `ux0:data/9mm/` 中。它还会排除 Android 存档,虽然无论哪种方式都无害,但这意味着你将从零开始。
## 控制 | Vita | 动作 | | --- | --- | | 左摇杆 | 移动 | | 右摇杆 | 瞄准 | | R | 射击 | | L | 慢动作 | | 方块键 | 装弹 | | 叉号键 | 冲刺 | | 方向键 左 / 右 | 切换武器 | | Start | 暂停 | 这些按键对应的触摸控件已隐藏,因为实体按键已经覆盖了它们。 触摸 UI 中的其他所有内容仍然有效。 ## 已知问题 - 标题屏幕的部分显示异常。这是一个 Scaleform (Flash) 覆盖层, 不影响游戏体验。 - 多人游戏未测试。我认为它已经损坏。 - 如果你将 Android 存档连同数据一起复制了,你将带着 该设备的进度开始,而不是一个全新的游戏。 ## 构建说明(面向开发者) 你需要一个使用 **softfp** ABI 构建的 [VitaSDK](https://vitasdk.org/),并且 依赖库也必须以相同的方式重新编译(`-mfloat-abi=softfp`)。 ``` git clone --recursive https://github.com/iwannagooutside/9mm-vita cd 9mm-vita cmake -Bbuild . && cmake --build build ``` `-DDEV_SHORTCUTS=ON` 会在游戏中添加两个调试快捷键(Select 转储一帧, Triangle 结束关卡)。默认关闭,对于你分发的任何内容请保持关闭。 如果你打算修改 `source/patch.c`,请注意:这些补丁是针对游戏的某个特定版本的字节偏移量,因此每个补丁都会声明它要覆盖的指令,并首先进行检查。如果获取了不同的版本,你会收到一条提示信息,而不是一个悄悄损坏的二进制文件和在三个函数之外发生的崩溃。 添加补丁意味着也要添加该检查。 里面的大部分内容都是为了解决同一个问题:在渲染和游戏逻辑已经开始运行时,关卡会一个区域接一个区域地流式加载,因此在最初的几帧里,玩家没有区域,并且传送门指向尚未存在的区域。引擎在其中的几个位置注意到了这一点,记录了 null 指针,然后仍然读取了它。Android 以这种方式侥幸运行。 ## 许可证 MIT,见 [LICENSE](LICENSE)。 ## 免责声明 9mm 是 Gameloft SE 的商标。© Gameloft。保留所有权利。Gameloft 和 Gameloft 标识是 Gameloft 在美国和/或其他国家的商标。 本仓库中呈现的工作不是“官方”的,也非由上述商标的所有者制作或 认可。
标签:Bash脚本, 客户端加密, 逆向工具