Lua:读取未签名的 DWORD 在 Bizhawk 模拟器中不起作用

Lua: Read Unsigned DWORD not working in Bizhawk Emulator

当我 运行 我的代码在这一行出现错误:

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-Scripts

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

提前感谢您的帮助

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

对于其他认为此答案有用的人,请注意双字是无符号的且大小为 4 个字节,因此使用 u32,因为双字是 32 位且无符号。例如,如果您想使用带符号的字节,则可以改用 s8le表示小端,be可以代替大端。

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