今回は新しい内容はなく、①,②の補足記事です。
コントローラー基板の電位差リスト
様々なアケコンのボタン・レバーのスイッチ両端の電位差を計ったところ、+5Vのものはないと書きましたがありました!
しかもPS3用です。
こちらのベースとしたRAP V3SAの基板を発掘しました。
計測してみたところ約5Vでした。
まだ未確認ですがアーケード基板用のコマンドコントローラーを流用できるかもしれません。
というわけでリストに追加しておきます。
- 約5V
- 約3.3V
- 約2V-2.3V
PS3用 HORI RAP V3.SA
XBOX360用HORI RAP VX.SA
XBOX360用HORI Figthing Stick VX
Brook Fighting Board
Brook Universal Fighting Board
PS3/4用HORI Fighting Commander
PS3/4用HORI Fighting Commander PRO
PS3/PS4/PC用RAP HAYABUSA
家庭用コマコンのタイミングずれについて
FPGAを使ってコマンドコントローラーを作製された方のblogです。
FPGA側で59.94Hzを生成しても入力ズレは避けられないということがわかります。
これはArduino Dueでタイマー割り込みを行っても同じことになるなーと思いました。
ゲーム機本体(ゲームプログラム)とコントローラーはもちろん非同期です。これはアーケード基板でも同じです。機種を問わず同期させているものを(自分は)聞いたことがありません。
ボリューム連射装置やアケコンに付いている連射装置の場合「ボタンを押したよ」という情報を一方的に送り付けているだけにすぎません。秒間20連射と言っても秒間20発が保証されているわけではないんですね。
ボタンの連射はこれでも良い場合も多いですが、最速の連射装置が欲しい場合や、1F単位でコマンドを実行したいといった場合にはどうしてもゲームプログラム側のタイミングに合わせてあげる必要が出てきます。
以前こちらにも書きましたが、ゲームプログラムは一定周期でレバーやボタンの状態をチェックしに行く作りになっていることが多いです。
そのためアーケード筐体でシンクロ連射回路を使用する場合は、ゲームプログラム側のタイミングと同期させるために(普段は使用しない)V-SYNCと+5Vをコンパネ内に引っ張り出してシンクロ連射装置を動かします。
(もちろん全てのゲームで快適に使えるとは限りません)
PS3用/XBOX360用のバーチャ2の場合、実際はエミュレーターで動いているということですので、ゲームプログラムがゲーム機本体のV-SYNCでタイミングを取っているわけではないのかもしれません。V-SYNCを使用してもタイミングがズレてくるのはそのあたりも関係しているのだと思います。
仮にタイマー割り込みを使用した場合でも、熱の影響で水晶振動子のタイミングが変わったりすることもあるようですし、WindowsやLinuxなどのマルチタスクOSからコマコンに指示を与える場合は他のプログラムやプロセスの影響でタイマーがずれることがあるかもしれません。
プログラムロジックから見ると一見誤りが無いように見えても、うまく動いてくれずにバグ取りで悩まされる可能性もあり得ます。
今後に向けて
今作っているものは”志は低く”がキーワードです。
市販を目標としているわけではないので「最低限の練習として使えればいいや」という気持ちでラクにいこうと思います。
以下のように試行錯誤して練習に使えるものを見つけていけたら、と思っています。うまくいくといいですけど・・・
- タイミングずれが起きるならラウンドごとにリセットするのもあり
- いくつかのアプローチを試してみて使いやすいものを見つける
HDMI→VGA変換器を別なものに替えてみる
Arduino Dueを使用したXBOX360用を作りこむ
RAP V3.SA基板ベースでPS3用を作ってみる
タイマー割り込み版を作ってみる など