blackgamma7/Aidyn
GitHub: blackgamma7/Aidyn
Nintendo 64平台RPG游戏《Aidyn Chronicles》的逆向工程与反编译项目,包含伪代码、符号表及未来移植方案探索。
Stars: 37 | Forks: 4
# Aidyn Chronicles 反编译
对 Nintendo 64 平台游戏《Aidyn Chronicles: the First Mage》的反编译。
## 为什么选择这款游戏?
Aidyn Chronicles 是该平台上为数不多的 RPG 之一,也是一个相对冷门的作品。因此,其内部机制令我着迷。这促使我发现了该系统的运作方式,例如作弊码、使敌人在野外变为被动状态以及随机战斗遭遇等。从那时起,我的兴趣逐渐演变为对这款游戏的完全理解。
## 这包含什么:
- 用于 Debug 版本和 NTSC 1.0 版本的 Splat yaml 配置文件。
- 两者的符号表。
- src_pseudo/:基于 debug 构建的源文件伪代码,主要由 Ghidra 解析并经过人工整理(OS 文件除外——据我所知,它们基本保持原样)。
- include/:头文件。
## 为什么没有可用的代码?
- 虽然使用的编译器已被识别,但尚未配置为跨平台使用,当前的编译器只是一个接近的近似方案。
- Ghidra……在解析代码时已经“尽力了”。因此,分支和增量等操作存在一些怪癖,可能会导致进一步的不准确。
- 游戏使用 C++,而 Ghidra(以及 decomp.me)使用 C 进行解析。虽然这确实有助于深入了解前一种语言如何转换为后一种语言,但也增加了一层重新解读的复杂性。
- 目前还没有另一个成功反编译用 C++ 编写的 N64 游戏的案例,而我目前也不具备进行相关设置所需的知识。
## 移植?
我一直在探索在完全理解代码后将游戏移植的可能性。以下是我目前对这些选项的看法:
### Libultraship
一种已被少数反编译项目使用的兼容性解决方案。
- 优点:
- 性能可能针对原生平台进行了优化
- 潜在可实现的调试和 Mod 功能
- 已证明可移植到多个 PC 和主机平台。
- 缺点:
- “潜在”:意味着代码首先需要达到匹配(matching)状态,或者至少是可编译的。
- Controller Pak 和 osSched 支持尚未实现。
### N64Recomp
对游戏汇编代码的“静态重编译(static recompilation)”,具有光线追踪和其他增强功能的潜力。
- 优点:
- 游戏代码不需要反编译。
- 潜在的光线追踪和其他一些增强功能
- 缺点:
- 生成的代码不如真正的反编译代码那样易读、优化或可修改。
- Controller Pak 支持尚未实现。
### 现有游戏引擎
将游戏移植到现有的引擎(如 Unity 或 Godot)中,并利用它提供的现代便利功能。
- 优点:
- 可以重写以突破原平台的限制。
- 缺点:
- 必须从头开始重写。
- 准确性将是一个问题。
## 致谢
- halibabica,感谢他在 Aidyn 破解/Mod 方面的工作。
- @TiberGuy,感谢通过 [AidynEditor](https://github.com/TiberGuy/AidynEditor) 提供的进一步破解工具和知识。
- Zoinkity,感谢对游戏美术资源和压缩方法的深入分析。
- Wiseguy,感谢在可能的编译器匹配方面的设置和分析,以及为后续重编译项目中使用的数据所做的设置。
- @example6,感谢识别了许多图像文件。
标签:Aidyn Chronicles, C++, Ghidra, Libultraship, N64, ROM黑客, RPG游戏, 云资产清单, 代码分析, 任天堂64, 伪代码, 凭证管理, 复古游戏, 数据擦除, 汇编, 游戏反编译, 游戏移植, 符号表, 跨平台编译, 逆向工程