2016-08-13 1 views
1

私は、この行のエラーを取得:のLua:私は私のコードを実行すると読む符号なしDWORD Bizhawkエミュレータで動作していない

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

personality = memory.readdwordunsigned(0x02024744) 

は、これは私が、コンソールによって与えられていますエラーメッセージです

私はいくつかのテストをして、しばらくの間、この周りを調査し、私はそれがこのようないくつかの他のプロジェクトで使用されているこの概念にもかかわらず、動作させることはできませんされています:https://projectpokemon.org/forums/showthread.php?16681-Gen-3-Lua-Scripts

いくつかの他のインフォア私はBizHawkエミュレータでluaスクリプトを実行しています。
2.私が行をmemory.readbyte()に変更すると、別のメッセージが表示され、コンソールがmemory.readdwordunsigned()を関数として認識しないと思われます。
3.スクリプトは、エミュレータの実行可能ファイルと同じフォルダにあります。

+0

すぐにhttp://tasvideos.org/Bizhawk/LuaFunctions.htmlを読んでください。このような機能はありません。エミュレータの古いバージョン用に作られたのかもしれません。あなたは 'memory.read_? '操作の1つを呼び出して置き換えるべきかのように見えます。私はdwordのサイズやエンディアンを教えてくれるプラットフォームについては十分に分かりません。 – ktb

+0

ああ、私はこれが事実だろうと心配していた。私はこのページの機能を試して、答えを見つけることを望むためにさらに研究をします。私ができないのであれば、エミュレータの古いバージョンをダウンロードするだけかもしれません。ご協力ありがとうございました! –

答えて

1

はmemory.readdwordunsigned()のサポートがもはやBizHawkエミュレータでサポートされていることが判明していない任意の助けを事前にありがとうございます。私が働いて代替を見つけるために管理している私の質問に掲載のコメントからの広範な調査とヘルプの後:この答えは重宝誰のために memory.usememorydomain("System Bus") personality=memory.read_u32_le(0x02024744)

を、それゆえ、DWORDのサイズは符号なしの4バイトであることに注意してくださいdwordは32ビットで符号なしのため、u32を使用します。たとえば、符号付きバイトを使用する場合は、代わりにs8を使用します。 leはリトルエンディアンを意味し、ビッグエンディアンの代わりにbeを使用できます。

私が使用していたメモリドメイン(IWRAM)と、システムバス以外のすべてのメモリドメインがこのエラーを発生させるため、メモリから読み込む前にメモリドメインを指定することが重要です。メモリアドレス。

関連する問題