开发者逆向工程将《星际争霸》移植到ARM平台

简介: 醒来吧,我的孩子们。拥抱你们与生俱来的荣耀。你们须知,我是你们的主宰,虫族永恒的意志。你们生来就是为我服务的。

醒来吧,我的孩子们。拥抱你们与生俱来的荣耀。你们须知,我是你们的主宰,虫族永恒的意志。你们生来就是为我服务的。

-- 《星际争霸》虫族隐藏音乐

image.png

OpenPandora团队的notaz通过反汇编技术将《星际争霸》移植到了ARM上。

“无源码、无移植”的原则并不是完全正确的。你可以通过静态重新编译技术得到和原程序类似的程序。M-HT之前就)经将DOS游戏 移植

到ARM平台上。

整个移植过程是这样的:

  • 使用IDA对《星际争霸》程序进行反汇编
  • 将反汇编的代码转化为C(使用了notaz自己开发的定制工具)
  • 链接了ARM版的winelib(ARM版的wine提供了Win32 API)

听起来这很容易?显然不是。notaz从去年秋天就开始了这一项目,原以为一个多月就可以搞定,结果到了新年还没弄好。有太多的意料之外的问题。也许“无源码、无移

植”的原则是正确的,Windows游戏应该通过虚拟技术运行,静态重新编译是可能的,但是实践起来问题太多了。

但是最终notaz还是完成了这个移植。他的成果,《星际争霸》的ARM版可以从这里下载。注意

,下载的文件不包括游戏的数据文件,你需要从原来的游戏中导出数据文件:

  • 在PC上安装游戏
  • 安装游戏的扩展包
  • 安装官方的1.16.1.1补丁
  • 从CD复制文件:
  • 对于StarCraft,从StarCraft CD复制INSTALL.EXE到你的StarCraft文件夹,然后重命名为StarCraft.mpq
  • 对于Brood War,从Brood War CD复制INSTALL.EXE到你的StarCraft文件夹,然后重命名为BroodWar.mpq
  • 尝试在PC上运行游戏(不插入光盘),确保可以正常运行。
  • 将整个游戏文件夹复制到SD卡的pandora/appdata文件夹内,命名为starcraft

相关文章
|
2月前
|
数据采集 监控 安全
精简高效与安全兼备:ARM32与MCU32平台上的信息协议设计新思路
精简高效与安全兼备:ARM32与MCU32平台上的信息协议设计新思路
218 1
|
23天前
|
Linux 计算机视觉
Linux交叉编译opencv并移植ARM端
通过以上步骤,你可以在Linux上交叉编译OpenCV,并将生成的库文件和头文件移植到ARM平台上,从而在ARM上使用OpenCV。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
47 0
|
27天前
|
JSON Ubuntu Linux
LuaJit交叉编译移植到ARM Linux
LuaJit交叉编译移植到ARM Linux
20 1
|
2月前
|
安全 Linux 数据安全/隐私保护
【SPI协议】了解ARM平台上的SPI的基本应用
【SPI协议】了解ARM平台上的SPI的基本应用
382 0
|
2月前
|
存储 人工智能 达摩院
社区供稿 | FunASR 语音大模型在 Arm Neoverse 平台上的优化实践
Arm 架构的服务器通常具备低功耗的特性,能带来更优异的能效比。相比于传统的 x86 架构服务器,Arm 服务器在相同功耗下能够提供更高的性能。这对于大模型推理任务来说尤为重要,因为大模型通常需要大量的计算资源,而能效比高的 Arm 架构服务器可以提供更好的性能和效率。
STM32CubeIDE移植ARM DSP库
STM32CubeIDE移植ARM DSP库
|
4月前
|
安全 Ubuntu Linux
ARM可信固件(TF-A)移植
ARM可信固件(TF-A)移植
86 1
|
27天前
|
数据处理 编译器 数据库
x64 和 arm64 处理器架构的区别
x64 和 arm64 处理器架构的区别
29 0
【各种问题处理】X86架构和ARM架构的区别
【1月更文挑战第13天】【各种问题处理】X86架构和ARM架构的区别
|
4月前
|
缓存 API Android开发
一起学点ARM的微架构二?
一起学点ARM的微架构二?
77 1