如何从模拟 (SNES) 游戏中获取指标?
How can I capture metrics from an emulated (SNES) game?
我的目标是使用 Android 模拟器(例如 Snes9x EX+)模拟游戏(例如 Super Bombliss),并在玩游戏时捕获游戏指标(例如得分和等级)。
我假设我需要修改开源模拟器 and/or 来修改 ROM 来执行此操作,但我需要一些关于最佳方法的指导。谢谢!
要回答 "How can I capture metrics from an emulated (SNES) game?",您需要先回答 "Where can I find metrics in a SNES game?"。后者的答案是"It depends on the game."
想想 GameShark 代码,它们将一个值写入内存的特定位置。
- 它可以不断地向内存位置写入一个值。例如,让你在真人快打中的生命条总是满的。
- 它可以一次将一个值写入内存位置。如果你想跳到日落骑士的最后一关。
但是他们怎么知道应该写入哪个内存位置呢?这是个难题。通常归结为对 ROM 进行逆向工程。您创建一个地图,其内存位置对应于您要查找的每个指标。
假设您要查找您在《超级马里奥世界》中的当前分数和当前等级。一种可能的解决方案是不断扫描 RAM 内存,寻找已知值并创建匹配图。
知道你的分数是321,你可以转储RAM,寻找内存位置包含321的位置。如果只有一个匹配,很可能是指示你分数的内存位置。如果你有更多的比赛,你应该保留所有比赛的清单并继续比赛直到你的分数发生变化。如果现在更改为 567,您可以从之前的列表中检查是否有任何内存位置现在的值为 567。
它并不总是直截了当的,例如,对于阶段 6-3。你应该在内存中分别查找 6 和 3 吗?如果游戏只将关卡存储在一个表示为 BCD 63 的变量中,那会怎样?那么您将不得不寻找完全不同的东西。
确保 100% 的唯一方法是对 ROM 进行逆向工程,这样您就知道游戏去哪里获取屏幕上显示的任何内容。
现在回答你最初的问题 "How can I capture metrics from an emulated (SNES) game?" 你必须首先弄清楚这些指标在每个游戏 ROM 中的位置,一旦你知道你只需要构建一个模拟器来监听这些内存位置的修改这样您就可以捕获这些指标。
您可以找到许多专门用于逆向工程 ROM 的网站。我建议你看看 http://www.romhacking.net/ 上完成的工作。
我的目标是使用 Android 模拟器(例如 Snes9x EX+)模拟游戏(例如 Super Bombliss),并在玩游戏时捕获游戏指标(例如得分和等级)。
我假设我需要修改开源模拟器 and/or 来修改 ROM 来执行此操作,但我需要一些关于最佳方法的指导。谢谢!
要回答 "How can I capture metrics from an emulated (SNES) game?",您需要先回答 "Where can I find metrics in a SNES game?"。后者的答案是"It depends on the game."
想想 GameShark 代码,它们将一个值写入内存的特定位置。
- 它可以不断地向内存位置写入一个值。例如,让你在真人快打中的生命条总是满的。
- 它可以一次将一个值写入内存位置。如果你想跳到日落骑士的最后一关。
但是他们怎么知道应该写入哪个内存位置呢?这是个难题。通常归结为对 ROM 进行逆向工程。您创建一个地图,其内存位置对应于您要查找的每个指标。
假设您要查找您在《超级马里奥世界》中的当前分数和当前等级。一种可能的解决方案是不断扫描 RAM 内存,寻找已知值并创建匹配图。
知道你的分数是321,你可以转储RAM,寻找内存位置包含321的位置。如果只有一个匹配,很可能是指示你分数的内存位置。如果你有更多的比赛,你应该保留所有比赛的清单并继续比赛直到你的分数发生变化。如果现在更改为 567,您可以从之前的列表中检查是否有任何内存位置现在的值为 567。
它并不总是直截了当的,例如,对于阶段 6-3。你应该在内存中分别查找 6 和 3 吗?如果游戏只将关卡存储在一个表示为 BCD 63 的变量中,那会怎样?那么您将不得不寻找完全不同的东西。
确保 100% 的唯一方法是对 ROM 进行逆向工程,这样您就知道游戏去哪里获取屏幕上显示的任何内容。
现在回答你最初的问题 "How can I capture metrics from an emulated (SNES) game?" 你必须首先弄清楚这些指标在每个游戏 ROM 中的位置,一旦你知道你只需要构建一个模拟器来监听这些内存位置的修改这样您就可以捕获这些指标。
您可以找到许多专门用于逆向工程 ROM 的网站。我建议你看看 http://www.romhacking.net/ 上完成的工作。