2016-12-16 34 views
1

我的目标是使用Android模拟器(例如Snes9x EX +)模拟游戏(例如,Super Bombliss),并在游戏进行时捕捉游戏指标(例如分数和等级)。如何从模拟(SNES)游戏捕获指标?

我假设我需要修改开源模拟器和/或修改ROM​​来做到这一点,但我需要一些关于最佳方法的指导。谢谢!

回答

1

回答“我如何从模拟(SNES)游戏捕获指标?”您需要先回答“我在哪里可以找到SNES游戏中的指标?”。后者的答案是“这取决于游戏”。

想想GameShark代码,它们会为内存的特定位置写入一个值。

  • 它可以不断写入一个值到内存位置。例如,为了让你的生活酒吧总是充满真人快打。
  • 它可以只写一次值到内存位置。如果你想跳到Sunset Riders的最后一级。

但是他们怎么知道他们应该写入哪个内存位置?这是一个很难的问题。通常它归结为逆向工程ROM。您可以创建一个与您正在查找的每个度量标准对应的内存位置的地图。

让我们假设你想在超级马里奥世界找到你当前的分数和你当前的水平。一个可能的解决方案是不断扫描RAM内存,查找已知值并创建匹配地图。

知道你的分数是321,你可以转储内存并查找包含321的内存位置。如果只有一个匹配,那么很有可能是内存位置表示你的分数。如果你有更多的比赛,你应该保持所有比赛的列表,并继续玩,直到你的分数改变。如果它现在更改为567,则从以前的列表中检查是否有任何内存位置现在的值为567.

它并不总是直截了当的,例如,对于阶段级别6-3。你应该在内存中分别查看6和3吗?如果游戏只将一个变量存储在BCD 63表示的变量中,那么你将不得不寻找完全不同的东西。

确保100%的唯一方法是对ROM进行反向工程,以这种方式知道游戏在哪里获取屏幕上显示的内容。

现在回答你原来的问题“我怎样才能从仿真(SNES)游戏捕捉指标?”你必须首先找出每个游戏ROM中这些指标的位置,一旦你知道你只需要建立一个模拟器来侦听这些内存位置的修改,那么你就可以捕获这些指标。

你可以找到许多致力于反向工程ROM的网站。我建议你看看在http://www.romhacking.net/上完成的工作。

+0

谢谢你的所有有用的信息! – Uritziel