Darkside(リンクエラー修正しました)

2016年5月31日(火) 21:31

スクリプト稼動

 ゲーム画面に辿り着いたが、スクリプトを動作させるためには速度や座標をスクリプトから知ることが出来ねばならない。手動でTASを作るのであれば、画面を見れば分かる。しかしスクリプトは画面を読み取れない。

 RAMサーチを使って絞り込むが、候補が複数出て来たりヒットしなかったりと、はっきりしないことが多い。最初は適当に確からしいアドレスの値を使用してみる。

 更に大きな問題として、スクリプトでキー入力を設定する際の名前である。
 あるキーが押された状態にしたいとき、具体的にどういう名前でキーを記述すれば良いのか?
 それが記述されているドキュメントは、滅多にお目に掛かれない。キーの名前を間違えて記述すれば、押されたことになってくれない。

 恐ろしく不親切である。
 自分の経験上、同一機種のエミュレーターであっても別のエミュレーターになると、スクリプト上におけるキーの名称に互換性がないことが多い。更にデジタルキーの場合、押されていない場合は
false を放り込むのか?押されている場合は true を放り込むのかそれとも1か?と言った微妙な問題もある。相手はコンピューターだから、すべてが厳密に決まっている。それなのに、厳密に記述されたドキュメントが、どこにも存在しない。

 更に BizHawk の場合は、多機種対応である。スーパーファミコンのパッド入力と、プレステのパッド入力では、パッドが違うのだからキー名称も違う。

 結局のところ、スクリプトでパッド入力を取得し、どのような名称で取得されたかをスクリプトで表示される、という方法しかなさそうなのだ。

function record(buttons)
  for button, value in pairs(buttons) do
    write_log(button)
  end
end
record(joypad.get(1))

 という感じである。write_log は、テキストファイルに出力する自作関数。
 これにより、キーの具体名がズラズラと出力される。
 これにて名称は解決、と思ったがスクリプトをロードした際にエラーが出る。

 このエラー自体は do の記述漏れというケアレスミスだったが、修正してもスクリプトがロード直後にアプリケーションエラーを出す。
 厄介なことに、アナログ入力キーの具体名が、半角空白を含んでいるのだ。をい勘弁してくれよ名称定義する際に配慮しやがれよ!

 そういうことされると、不必要にプログラミング記述が面倒なんだよ!

btn = {}
btn["RStick X"] = 128
btn["RStick Y"] = 255
btn["LStick X"] = 0
btn["LStick Y"] = 0
joypad.setanalog(btn, 1)

 これも試行錯誤したが、いったん配列に個々に代入してやらないと駄目だった。
 だが、遂にネジコン入力をスクリプトで行うことに成功★

written by higashino [ゲーム] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4