我的目标是使用Android模拟器(例如,Snes9x EX +)模拟游戏(例如,Super Bombliss)并在游戏进行时捕捉游戏指标(例如,得分和等级)。
我假设我需要修改开源模拟器和/或修改ROM来执行此操作,但我需要一些关于最佳方法的指导。谢谢!
答案 0 :(得分:1)
回答"如何从模拟(SNES)游戏中捕捉指标?"你需要先回答"我在哪里可以找到SNES游戏中的指标?"。后者的答案是"这取决于游戏。"
想想GameShark代码,他们会将值写入内存的特定位置。
但他们如何知道应该写入哪个内存位置?这是一个难题。通常它归结为逆向工程ROM。您可以创建一个映射,其中的内存位置与您要查找的每个指标相对应。
我们假设您想要在超级马里奥世界找到您当前的分数和当前水平。一种可能的解决方案是不断扫描RAM内存,寻找已知值并创建匹配图。
知道您的分数是321,您可以转储RAM并查找包含321的内存位置。如果只有一个匹配,则很可能是记忆位置指示您的分数。如果你有更多的比赛,你应该保留所有比赛的列表,并继续比赛,直到你的分数改变。如果现在更改为567,则从上一个列表中检查是否有任何内存位置现在保持值567.
例如,对于阶段级别6-3,并不总是直截了当。你应该分别在内存中查看6和3吗?如果游戏只将一个变量存储在一个表示为BCD 63的变量中,那该怎么办呢?那么你就必须寻找完全不同的东西。
确保100%的唯一方法是对ROM进行逆向工程,这样你就可以知道游戏在哪里获取屏幕上显示的内容。
现在回答你原来的问题"如何从模拟(SNES)游戏中捕捉指标?"你必须首先弄清楚这些指标在每个游戏ROM中的位置,一旦你知道你只需要构建一个模拟器来监听这些内存位置的修改,这样你就可以捕获这些指标。
您可以找到许多专门用于逆向工程ROM的网站。我建议你看一下http://www.romhacking.net/所做的工作。