Lua:读取无符号DWORD在Bizhawk仿真器中不起作用

时间:2016-08-13 16:56:42

标签: lua emulation unsigned dword gameboy

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

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模拟器上运行lua脚本。
2.如果我将行更改为memory.readbyte(),我收到一条不同的消息,这使我相信控制台无法将memory.readdwordunsigned()识别为函数。
3.该脚本与模拟器的可执行文件位于同一文件夹中。

提前感谢您的任何帮助

1 个答案:

答案 0 :(得分:1)

原来,BizHawk仿真器不再支持对memory.readdwordunsigned()的支持。经过广泛的研究和对我的问题发表的评论的帮助,我找到了一个可行的替代方案: u32

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

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