Lua:读取未签名的DWORD在Bizhawk Emulator中不工作
当我运行我的代码时,我在这行上得到一个错误:Lua:读取未签名的DWORD在Bizhawk Emulator中不工作,lua,emulation,unsigned,dword,gameboy,Lua,Emulation,Unsigned,Dword,Gameboy,当我运行我的代码时,我在这行上得到一个错误: personality = memory.readdwordunsigned(0x02024744) 这是控制台发出的错误消息: LuaInterface.LuaScriptException: [string "main"]:26: attempt to call field 'readdwordunsigned' (a nil value) 我已经为此做了一些测试和研究有一段时间了,我无法让它工作,尽管这个概念正在其他几个项目中使用,例如:
personality = memory.readdwordunsigned(0x02024744)
这是控制台发出的错误消息:
LuaInterface.LuaScriptException: [string "main"]:26: attempt to call field 'readdwordunsigned' (a nil value)
我已经为此做了一些测试和研究有一段时间了,我无法让它工作,尽管这个概念正在其他几个项目中使用,例如:
其他一些信息:1.我正在BizHawk模拟器上运行lua脚本
2.如果我将行更改为memory.readbyte(),我会收到一条不同的消息,这使我相信控制台不会将memory.readdwordunsigned()识别为函数
3.脚本与emulator的可执行文件位于同一文件夹中
提前感谢您提供的任何帮助结果表明,BizHawk Emulator不再支持对memory.ReaddOrdUnsigned()的支持。经过广泛的研究和对我的问题发表评论的帮助,我找到了一个可行的替代方案:
memory.usememorydomain(“系统总线”)
个性=内存。读取(0x02024744)
对于其他认为这个答案有用的人,请注意dword是无符号的,大小为4字节,因此使用u32
,因为dword是32位的,无符号的。例如,如果您想使用有符号字节,您可以使用s8
le
表示小端,可以用be代替大端
在尝试从内存读取之前,必须先声明内存域,因为我正在使用的内存域(IWRAM)以及除系统总线之外的所有其他内存域都会由于内存地址的大小而产生此错误。只需快速读取即可。不存在这样的功能。也许它是为仿真器的旧版本制作的。看起来您应该将其替换为对
memory.read.
操作之一的调用。我对平台的了解不足以告诉你一个dword的大小或长度。啊,我担心会是这样。我将尝试这一页上的函数,并做更多的研究,希望找到答案。如果我不能,我可能只是下载一个旧版本的模拟器。谢谢你的帮助!您也可以简单地使用memory.read_u32_le(0x02024744,“系统总线”),它允许您轻松地在域之间进行更改。