Lua:Bizhawk模拟器中无法读取无符号DWORD

在运行我的代码时,我在这一行遇到了错误:

personality = memory.readdwordunsigned(0x02024744)

这是控制台给出的错误信息:

LuaInterface.LuaScriptException:[string“main”]:26:尝试调用字段'readdwordunsigned'(一个空的值)

我已经做了一些测试和调查,但尽管在其他项目中使用了这个概念,例如[https://projectpokemon.org/forums/showthread.php?16681-Gen-3-Lua-Scripts],我仍然无法使其正常运行。

一些其他信息:

1. 我正在BizHawk模拟器上运行Lua脚本。

2. 如果我将该行更改为memory.readbyte(),我会收到不同的消息,这使我相信控制台不认识memory.readdwordunsigned()作为函数。

3. 脚本与模拟器的可执行文件在同一个文件夹中。

感谢您提前的任何帮助

点赞
用户6713029
用户6713029

原来,在BizHawk模拟器中不再支持memory.readdwordunsigned()函数。经过广泛的研究和通过在我的问题上发布评论来寻求帮助,我成功地找到了一个可行的替代方法:

memory.usememorydomain("System Bus")
personality=memory.read_u32_le(0x02024744)

对于任何发现这个答案有用的人,请注意,dword是无符号且大小为4字节,因此使用u32,因为dword是32位的且无符号。如果您想使用有符号字节,例如,您将使用s8le表示小端,可以使用be代替大端。

在尝试从内存中读取之前,需要说明内存域,因为我使用的内存域(IWRAM)以及除系统总线之外的所有其他内存域都会由于内存地址的大小而产生此错误。

2016-08-14 15:48:24