SSブログ

DCC/MM2基板、電車でGo!コントローラなどを使って4人で遊べるようにする [ジョイスティック]

 「DCC/MM2シールド基板と電車でGo!コントローラなどを使ってDCC車両を4人で動かして遊べるようにする。」をしてみた。

 まず、手持ちの電車でGo!コントローラは初代の2ハンドルタイプひとつだけなので、Amazonで「電車でGO!コントローラ ワンハンドルタイプ PS」を買った。DualShock2は2個すでに持っているので、これでコントローラは4つとなった。
 次に、「ELECOM製 JC-PS102UBK」(PSコントローラUSB変換2プレイヤーつなげるタイプ)を買った。これで、PS→USB変換機はもともと所有の「SANWA SUPPLY JY-PSUAD2」と合わせて、4個分の変換が可能となった。
 
 しかし、「ELECOM JC-PS102UBK」はBVEでの対応などの話どおり、「電車でGo!コントローラ」が使えなかった。
 理由は、以下のジョイスティックのプロパティー画面でわかる。
「ELECOM JC-PS102UBK」は以下のように12ボタン+アナログ2軸*2+HatSwitchとなる。これはWin7標準ドライバを入れても同じ構成だった。
ELECOM_JCPS102U.png
 これに対して、「SANWA SUPPLY JY-PSUAD2」は、(ドライバがなく、Win7では標準のジョイスティックとして認識されるが)以下のように、16ボタン+アナログ2軸*2+HatSwitchになる。
SANWA_SUPPLY_JY-PSUAD2.png
 大切なのは、13~16のボタンがあることで、ここが十字ボタンを独立ボタンとして、認識してくれるところだ。
 で、電車でGoコントローラの動作では、十字ボタン(13~16)を左右同時押しなどあり得ない組み合わせで押すため(過去記事のIO表参照)、ELECOM製 JC-PS102UBKでは、方向が定まらなく、いろいろなボタンが連打状態のバグった状態になる。Amazonのレビューでも特殊コントローラで、連打状態になり使えないと書いてあり、つまりそのコントローラも十字キーを独立ボタン使うタイプということか?
 よく、調べてから買えばよかった。勉強代1000円ってちょっと高いかも。
 でも、普通のDualShock2は使えるし、家には衝動買いした電車でGo!コントローラ 合計2個とDualShock2が2個があるので、4人で遊べるということで、2人で遊んでたソフトを改造する。
 列車によって、最高速、加速度や減速度を個別変更可能にした。ただし、やる気の問題でソース直書きでセーブ機能なし。
  あとは今日買ったELECOM製 JC-PS102UBKにもDualShock2だけ対応させる。(○×△□ボタンのボタン番号が微妙に違うので、そこを変える。)ついでに、ボタン機能もちょっとだけ変える。
○:正方向、□:負方向とした。
 「電車でGO!コントローラ ワンハンドルタイプ PS」だが、前のものとIOはほぼ同じで、非常ブレーキ内の刻みが少なくなっている、2ハンドルタイプは非常ブレーキは9~14まで6段あったのだが、こちらは9、12、14と3段しかない。ソフトは変える必要がなく良かった。
 できたソフトの概観は以下。
4人で遊ぶソフト画面.png
 前回のソフトからの改造ではあるのだが、何か、途中でやる気をなくしてしまったため、場当たり的なグダグダソフトに磨きがかかってしまった。
 ソフトを立ち上げたら
(1)DCC/MM2シールド基板接続のCOMの名前を”COM”に書いておく。
(2)Joystick数を実情に合わせる。(2個しかつながっていなくても4個とか書いても大丈夫なきもするが)
(3)”Open”ボタンを押す。JoystickとCOMを開き、DCC/MM2基板に最初の通信を送り、エラーが帰ってくる。
(4)各ジョイスティックの状態は左半分の4段分で、ここの設定を合わせる。(Joystickの列挙順がどうなるかは予想ができなく、手動であわせる)
具体的には、
(4-1)各チェックボックスで”SANWA"チェックボックスは、PS→USB変換アダプタの「SANWA SUPPLY JY-PSUAD2」を使用するときに入れる、ここをはずすと、「ELECOM製 JC-PS102UBK」モードになり、DualShock2だけ使用可能となる。
(4-2)「SANWA SUPPLY JY-PSUAD2」+「電車でGo!コントローラ PS」や「電車でGO!コントローラ ワンハンドルタイプ PS」を使用のときは、”Go Controler"のチェックボックスを入れる。
(4-3)各コントローラの制御列車は、"cont_loco_no"を0~3で選ぶ。番号が重複しているときは二つのコントローラから引っ張りあいをするのでどういう挙動になるかは不明。
(4-4)右側の4段は制御する各電車のパラメータが書いてあり、初期値はPublic Form1()という初期設定のところで適当な値を代入している。変えてしまえば、初期値が変わる。
各パラメータは
address:列車のアドレス
現在速度:今の設定速度(0~1023)。ここに何か書いても、速度は変わらない
方向:今の方向1,-1で表示。ここに何か書いても、速度は変わらない
最高速:速度の上限値設定。低くしておけば子供が恐怖の脱線スピードを出せなくなる大切なリミット。
加速度:マスコン1段、秒あたりの加速度。例えば、マスコンが3段目で、加速度が15なら、秒あたり速度が45増加する。(45=15*3)
減速度:ブレーキコントローラ1段、秒あたりの減速度、例えば、9段目で減速度が20なら、秒あたり速度が180減少する。(180=9*20)。ただし、ブレーキを14まで持ってくと、一瞬で速度を0にするソフトにしてある。
(4-5)パラメータ変更後は、列車設定変更ボタンを押すと、メモリ内の設定値を書き換えてくれる。
(5)”Power On"ボタンを押すと、DCC/MM2シールド基板から線路への給電がされる。
(6)途中で各コントローラの制御列車を変えたいときは、対応するcont_loco_noを0~3で書き換える。他のコントローラと重複すると、動かないかも。気をつけて。
(7)終わるときはWindow上の×ボタンを押すと、DCC/MM2シールド基板からの給電が止まり、ソフトも終了する。
 で、特に問題もなく動いた。子供3人に動かしてもらったが、ひとつの線路にすると絶対に追突事故を起こすので、三つのループ線にした。
4人で遊ぶ.JPG
 上の娘はすぐに飽きて、スマホのゲームやらせろと言ってきた。このソフト、作るのにほぼ今日一日かかったのに・・・。まあ息子は気に入ったようで、いつまでもやり続けていたけど。
 ソースは、これ
 開発環境はVC2013 Communityでビルドなど設定は過去記事参照のこと。
 今から、何か改造するなら、息子が5分ごとに言う、「今度はこっちの電車動かしたい攻撃」に耐えるよう、コントローラのどっかのボタンを押すと、制御列車を変える機能かなと思う。





nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0