1

当我运行我的代码时,我在这一行得到一个错误:

personality = memory.readdwordunsigned(0x02024744)

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

LuaInterface.LuaScriptException: [string "main"]:26: attempt to call field 'readdwordunsigned' (a nil value)

我已经对此进行了一段时间的测试和研究,尽管在其他几个项目中使用了这个概念,但我无法让它工作,例如:https ://projectpokemon.org/forums/showthread.php?16681-Gen -3-Lua 脚本

其他一些信息:
1. 我在 BizHawk 模拟器上运行 lua 脚本。
2. 如果我将行更改为 memory.readbyte() 我会收到一条不同的消息,这使我相信控制台无法将 memory.readdwordunsigned() 识别为函数。
3. 该脚本与模拟器的可执行文件位于同一文件夹中。

预先感谢您的任何帮助

4

1 回答 1

1

事实证明,BizHawk 模拟器不再支持对 memory.readdwordunsigned() 的支持。经过对我的问题发表的评论的广泛研究和帮助后,我设法找到了一个可行的替代方案: memory.usememorydomain("System Bus") personality=memory.read_u32_le(0x02024744)

对于发现此答案有用的其他人,请注意 dword 是无符号的,大小为 4 个字节,因此使用u32, 因为 dword 是 32 位且无符号的。例如,如果您想使用有符号字节,则可以s8改用。le表示little endien,be可以用来代替big endien。

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

于 2016-08-14T15:48:24.107 回答