Dolphinエミュのコントローラ設定駆使し連射・鬼シェイクの実現

ポク太郎です。

またサボって遊んでることがバレてしまう投稿。

MAMEPPSSPP以上に複雑でより高度な設定可能な任天堂WiiエミュレータDolphinコントローラ設定の話題です。夏休みの自由研究の題材にでもして下さい。

使用したバージョン
Dolphin 2407直近の安定板
2412でも確認済。


最も高度設定可能なエミュレータDolphin

便利設定が使えると言えば、MAMEPPSSPP。1ボタンに複数のパッド側ボタンを割り当て可能で自由自在に操作感覚を変えられます。

それより更に高度なのがDolphin。“多様なコントローラ”を売りにしたWiiなので、力の入れ方が違います⇒Dolphinではボタン設定が自由自在なだけでなく、数式表記で設定可能!

なので、秒間30連射トグル動作組み合わせ設定も自由自在。

トグル動作…1度押すとその状態を保持し、再度押すと解除される動作。ターボモードのON/OFFなどに便利。
組み合わせ動作…例えばL2を押しながらL3でステートロード、L2を押しながらR3でステートセーブなど。

ただ、“高度な設定”は分かりづらいのが宿命。

そこで、便利だと思われる“高度な設定”例を次項から列挙します。

ここでの話題とは無関係ですが、コントローラ設定WiiのBluetoothアダプタをエミュレートの項目で「wii実機リモコンを使う」にセットすると、wiiリモコンヌンチャククラシックコントローラがそのままつながります。

エミュdolphinで動作確認済のwiiコントローラ
動作確認済分。

Bluetooth環境とセンサーバーさえ準備すれば実機と同じように使えるよ→wiiリモコンをPC・大画面で使うための自作センサーバー

複雑設定窓の仕様・編集の仕方

“高度な設定”=“複雑設定を入力する窓”は設定のボタンを右クリックすると出現。

Dolphinエミュのコントローラ設定駆使し連射・鬼激シェイクの実現

画像中の「Toggle(‘TAB’)」と書かれた枠内に論理式を記述します。

左上枠の中から目的のキーを探しダブルクリック、右上プルダウンから論理式を選択することで入力可能。この枠内はキーボード編集も可能なので文法エラーが起きないよう編集して下さい。

また下方に「0」と表示されたバーが見えますが、そこをクリックし、設定したキー(例の場合はTABキー)を押すと反応が赤いバーで表示されます。連射スピード確認や動作確認に便利です。

例①】組み合わせ~フルスクリーン切替をL2+L3で

最初に、ボタンの組み合わせで実現する機能から。コントローラ設定の話ですが、ホットキー設定も同じ仕様なので、そちらでの実例です。

例では「フルスクリーン切り替えをL2+L3に設定」。L3とはアナログスティック奥の押し込みボタン)

Dolphinエミュのコントローラ設定駆使し連射・鬼激シェイクの実現

論理式“&”を使用し、「‘Trigger L’ & ‘Thumb L’」と入力。←ホームページ上に表示されたコレをそのままコピーしても多分ダメなので、頑張って入力して下さい。

3ボタン同時押しにしたい場合は、更に“&”で後ろに繋げればそれも可能です。

例②】トグル~ターボモード状態を保持

次は、トグル。これもホットキー設定での実例。

トグル動作とは押すと状態が切り替わり再度押すまでその状態を保持し続けるもの。

例では「ターボモード切替をR3に設定」。R3とはアナログスティック奥の押し込みボタン)

Dolphinエミュのコントローラ設定駆使し連射・鬼激シェイクの実現

制御構造プルダウン中の“Toggle()”を使用し、「Toggle(‘Thumb R’)」と入力。←ホームページ上に表示され…以下略。

例③】連射~秒間30・15の実現と計算方法

次は、連射。ここからコントローラ設定での実例。

例では「テンキー0が秒間15連射」。‘NUMPAD0’て部分を目的のキーに変えて頂ければ。

Dolphinエミュのコントローラ設定駆使し連射・鬼激シェイクの実現 Dolphinエミュのコントローラ設定駆使し連射・鬼激シェイクの実現

2パターン作ってみました。使い勝手の良い方をどうぞ。制御構造プルダウン中の“Timer()、Toggle()、Pulse()”を使います。

‘NUMPAD0’ & Toggle( Timer(0.032) )」と入力。←ホームページ上に表示され…以下略。
‘NUMPAD0’ & Pulse( Timer(0.064) , 0.032 )」と入力。←ホームページ上に表示され…以下略。

0.032なる数値について。60フレームとは1フレーム=1/60秒=0.016秒=16ms。

ゲームとはフレーム時間毎に判定・表示されるパラパラ漫画なので1フレームが最小単位。つまり、60フレームのゲームなら1/60秒間オフ→1/60秒間オン→1/60秒間オフ→1/60秒間オン→…と繰り返す秒間30連射が理論上の最速。
60フレームなのか30フレームなのか入力判定のみ60フレームなのかはゲームによるので、控えめな数値にしとくのがオールマイティー。
まず、Timer()の仕様は、カッコ内の数値の秒数まで順に数え1に近付いていく→1になったら0に戻るカウンタ。

Toggle()の仕様は、カッコ内が0.5を超えたら1を保持し、それまでは0を保持。つまり、0.032の期間0→同じ期間1→…→。←秒間15連射。

Pulse()の仕様は、第1引数が0.5を超えたら第2引数の時間1を保持。つまり、0.064の半分の期間0→0.032の期間1→…→。←秒間15連射。

ちょっと分かりづらいので、連射速度別に表にしときます。仕様を勘違いしてなければ合ってるはず。式中の数値をいじって調整してみて下さい。

Dolphinの連射設定ホームページ上に表示され…以下略。
秒間5連射 ‘NUMPAD0’ & Toggle( Timer(0.1) ) ‘NUMPAD0’ & Pulse( Timer(0.2) , 0.1 )
秒間8連射 ‘NUMPAD0’ & Toggle( Timer(0.063) ) ‘NUMPAD0’ & Pulse( Timer(0.125) , 0.063 )
秒間10連射 ‘NUMPAD0’ & Toggle( Timer(0.05) ) ‘NUMPAD0’ & Pulse( Timer(0.1) , 0.05 )
秒間15連射 ‘NUMPAD0’ & Toggle( Timer(0.032) ) ‘NUMPAD0’ & Pulse( Timer(0.064) , 0.032 )
秒間30連射 ‘NUMPAD0’ & Toggle( Timer(0.016) ) ‘NUMPAD0’ & Pulse( Timer(0.032) , 0.016 )

これらTimer()で実現したものは“時間によるオンオフ切り替え”なので同期連射になりません。高橋名人以下の控えめ連射がオールマイティー。

例④】三角関数で鬼シェイク

Wiiのゲームでありがちなのが「コントローラを振れ!!」。そのシェイクを1ボタンで鬼振りしてやります。

例では「テンキー0押すと三角関数でX、Y、Zの値を無茶苦茶に」。

Dolphinエミュのコントローラ設定駆使し連射・鬼激シェイクの実現 Dolphinエミュのコントローラ設定駆使し連射・鬼激シェイクの実現 Dolphinエミュのコントローラ設定駆使し連射・鬼激シェイクの実現
謝罪・訂正)ちょっと言い過ぎた
Dolphinエミュのコントローラ設定駆使し連射・鬼シェイクの実現
wiiリモコンには「必要以上に振り回さないでください。軽く振るだけで反応します。」とあります。それ信じればよいので設定を見直しました。やり過ぎると、ゲームのプログラムがシェイクとして認識しなくなるようです。

シェイクX軸に「‘NUMPAD0’ & sin( Timer(0.016) )」と入力。
シェイクY軸に「‘NUMPAD0’ & cos( Timer(0.032) )」と入力。
シェイクZ軸に「‘NUMPAD0’ & tan( Timer(0.048) )」と入力。←ホームページ上に表示され…以下略。

X、Y、Z軸それぞれ別の三角関数を使い、Timer()内の値をバラバラにし角速度もグジャグジャにしてランダムシェイクを目指します。

また画像撮り忘れましたが、シェイク設定付近にある「強さ」をデフォルト10cm→20cm、「周波数」をデフォルト6Hz→12Hzなど変更すると効果的です。

シェイクX軸に「‘NUMPAD0’ & sin( Timer(0.016) )」と入力。
シェイクY軸に「‘NUMPAD0’ & sin( Timer(0.032) )」と入力。
シェイクZ軸に「‘NUMPAD0’ & sin( Timer(0.048) )」と入力。←ホームページ上に表示され…以下略。

X、Y、Z軸それぞれ三角関数sinを使い、Timer()内の値をバラバラのグジャグジャ角速度にしてランダムシェイクを目指します。

強さ」をデフォルト10cm→15cm、
周波数」をデフォルト6Hz→10Hz。

強さ」とは振幅、「周波数」とは振動の速さを表すもの。10Hzは1秒間に10往復する動きなので、それだけで相当なごっつ鬼シェイク。
ここをやり過ぎると、ポインタはガンガン動いてるのにゲームタイトルがそれをシェイクとして認識しないなどの問題が起きるようです。
うちの環境で取りこぼしが無い値に一応調整しましたが、適宜数値を上下させてみてください。

面倒くさい鬼シェイク要求を1ボタンでクリアしてやって下さい。

例⑤】左手ゲームパッド、右手マウス操作

ここはバージョン2412で確認。左手のパッドで十字キー・トリガーを操作し、右手のマウスでモーション操作を行う設定です。

まず、Dolphinコントローラ設定はこう。「wiiリモコンをエミュレート」とし、横の「設定」ボタンを押して設定に入ります。

Dolphinエミュのコントローラ設定パッドとキーボード・マウス混在操作実現

「全般」タブが開き、パッドの十字キー・+・-等を設定しますが、特記事項は①②③番。

Dolphinエミュのコントローラ猛烈シェイク設定

①:認識されたパッドを選びます。うちの場合は「Xinput/0/Gamepad」です。
②:Aボタンにマウスの左クリックを設定。

Dolphinエミュのコントローラ設定パッドとキーボード・マウス混在操作実現

パッド使用中にマウスボタンをAに設定ホムペ上に表…以下略。
マウス左クリックだけの場合 `DInput/0/Keyboard Mouse:Click 0`」と入力。
上のプルダウンを「DInput/0/Keyboard/Mouse」選んで入力。
パッドのAボタンもORする場合 `DInput/0/Keyboard Mouse:Click 0`|’Button A’」と入力。
上のプルダウンを[既定]のゲームパッドに戻して’Button A’部分入力。

③:Bボタンにマウスの右クリックを設定(秒間10連射も入れました)。

Dolphinエミュのコントローラ設定パッドとキーボード・マウス混在操作実現

パッド使用中にマウスボタンをBに設定ホムペ上に表…以下略。
マウス右クリックだけの場合 `DInput/0/Keyboard Mouse:Click 1`&toggle(timer(0.05))」と入力。
上のプルダウンを「DInput/0/Keyboard/Mouse」選んで入力。
パッドのBボタンもORする場合 `DInput/0/Keyboard Mouse:Click 1`&toggle(timer(0.05))|’Button B’」と入力。
上のプルダウンを[既定]のゲームパッドに戻して’Button B’部分入力。

次に「モーション」タブに切り替え、④⑤⑥⑦を設定。

Dolphinエミュのコントローラ設定パッドとキーボード・マウス混在操作実現

④:「マウス操作によるポインティングを使用する」ボタンを押す。
⑤:シェイクの各軸をパッドのL1に割り当てます。

Dolphinエミュのコントローラ設定パッドとキーボード・マウス混在操作実現

シェイクをパッドL1に設定ホムペ上に表…以下略。
X `Shoulder L`&sin(timer(0.016))」と入力。
Y `Shoulder L`&sin(timer(0.032))」と入力。
Z `Shoulder L`&sin(timer(0.048))」と入力。

⑥:強さを「15㎝」に。
⑦:周波数を「10Hz」に。

非常に高度な複雑設定が可能なDolphin。高度故にちょっと難しいです。本投稿を参考に研究して頂ければ。

論理式if文が使えるてことは、「通常時は連射無し、R1押しながらA押すと連射」てのも自由自在です。

そんな便利なDolphinですが、今現状ではコントローラキーボード・マウスの混在操作はできないっぽい。左手無線PS3コントローラ+右手マウスでできるといいんだが

俺が知らないだけかも知れませんが、改良された・判明した等あった場合には、またDolphin話題で投稿いたします。(追記→できました。上項に追記済。

コメント

  1. 匿名 より:

    ドルフィンのシェイクって何故か最初だけ反応してあとは反応してくれないんですよね…マリオwiiとか…

    • pokutaro pokutaro より:

      >匿名さん

      ちゃんと調査してから…としてたら返信遅れました。
      ちょっと言い過ぎてた部分があったので数値を微調整して本文を修正しました。

      うちでも「ポインタはブリンッブリンッ震えてるのにシェイクとして認識されない」現象が確かに見られました。タイトル毎の違いは不明だし、マリオwiiを持ってないので、訂正後の数値で検証してもらえませんか。

      あまりに極端な数値にし過ぎてシェイクが認識されない可能性はあるので、取りこぼししない数値を探してみてください。

タイトルとURLをコピーしました