一项详尽的逆向工程工作产出了经典1987年NES游戏《Contra》(US)的带注释汇编代码。该项目由用户 vermiceli 托管在 GitHub 上,其目标不仅仅是提供静态指令列表,而是提供一套完整的工具和文档,用于理解游戏的底层核心功能。这包括提供必要的汇编代码,以精确到位的比特级别重构原始 Nintendo Entertainment System (NES) ROM 文件。
这项技术成就涉及将原始机器码转换回人类可读的 6502 汇编语言,同时保持数据结构的完整性。由于原始硬件使用了复杂的内存管理——特别是 UxROM 卡带系统,其中八个内存库中只有两个可以同时处于活动状态——因此该仓库根据这些特定的库位置对文件进行组织。例如,“bank7”包含主要的引擎逻辑,如输入处理和分数计算,而其他库则包含专门的程序,如敌人 AI 或压缩图形数据。通过使用 `cc65` 编译器套件,开发者现在可以使用此仓库的构建脚本将源代码重新组装成功能完整的 `.nes` ROM,且与原始 MD5 哈希值(`7BDAD8B4A7A56A634C9649D20BD3011B`)完全匹配。
该项目由用户 vermiceli 托管在 GitHub 上,其目标不仅仅是提供静态指令列表,而是提供一套完整的工具和文档,用于理解游戏的底层核心功能。
除了简单的重构,该项目还作为复古游戏爱好者和软件工程师的教育资源。它包含广泛的补充文档,涵盖游戏架构的各个方面:包括“敌人词汇表”中对每种敌人类型的详细描述、敌人如何瞄准玩家的解释,以及音频引擎的分解。作者还指出,他们受到游戏历史中未解决的谜团的启发,特别是调查与跳过关卡相关的潜在 Bug。虽然仍存在一些技术障碍,例如确定某些行为是由实际代码错误还是硬件故障引起的,但该仓库通过 mermaid 图表和对 Mesen 等模拟器的调试符号支持,提供了游戏内部机制的透明路线图。
当前工作中注意到的一个显著限制是它专注于美国版本;然而,提供的工具也可以适配到生成《Probotector》ROM(PAL 特定版本)。由于这些变体主要在精灵资源上有所不同,而非核心逻辑,因此相同的汇编框架仍然适用。此外,虽然源代码允许完美复制 1987 年的技术,但如果不进行超出此特定逆向工程项目范围的进一步修改,它本身并不会提供现代增强功能——例如高分辨率图形或基于采样的声音。

虽然仍存在一些技术障碍,例如确定某些行为是由实际代码错误还是硬件故障引起的,但该仓库通过 mermaid 图表和对 Mesen 等模拟器的调试符号支持,提供了游戏内部机制的透明路线图。