ジョイスティックを改造してみる
リアルアーケードVF'スティックは、リアルアーケードVFスティックの後継として発売されたものです。3ボタンでは遊べないNEOGEO系のゲームも遊べるように4ボタンに仕様変更されています。
と、書くとホリが新たに開発販売したような印象ですが、どうもRAVFの余剰在庫をHORI自身で改造、そしてパッケージングを変更して販売した感があります。
基板はRAVFとまったく同じで、そのうちのRボタンにあたるピンを跳ね上げ追加したボタンに手配線してあるし、天板はRAVFの3ボタンはタレパンで開けてあるしこっちの穴のエッジには塗装がついてるが、追加ボタン穴はホールソーのジョリジョリ感があるしエッジに塗装はない。一から企画した製品なら、こんな人件費のかかる製造にはなるはずもありません。
やっぱりRAVFは挑戦しすぎたのでしょうか。いくら良いものを作っても『売れなければ話にならない』のがこういう所からも伝わってきます。ユーザーの要求は厳しく、バブルがはじけてもゲームバブルは続くと思われていたあの頃であっても販売は厳しかったようです。
実際、自分のRAVF'も『未開封新品』なのでした。おもちゃ屋の店頭にあったのか、箱の片側が日焼けしていたものが、某ゲーム店のワゴンセール\300で売ってました。
せっかくの新品なので『サムスピ天草降臨』が本格的にやりたくなるまで改造せず取っておきたかったのですが、当時の自分はDCのSC1でソフィの人妻の魅力にハマってしまい、つい箱を買ってSC2でドラ子を俺の嫁とか公言してはばからない感じになりつつあったわけで、SC3がやりたくてしょうがなかったのです。
しかしながら自分が所持していたPS系スティックは、3ボタンのVF4アキラ棒のみ。SC3を遊ぶためにはボタンが一つ足りません。しょうが無いのでPS如きの為(セガユーザーだなぁ...)に泣く泣く乗っ取り改造をしました。
しかしSC3ロスクロ仕様とした"×/□/L1/R1"という変態配置では、"◯/×:決定/キャンセル"の一般的な操作のゲーム~ええ、アルカナハートです、本当にありがとうございます~はメニュー画面から先に進めないという致命的な状態に...。
普通であればもう一台スティックを買うか、ボタンアサインをもう少し一般的に変更し使うのですが、なぜかあの当時の俺は『せっかくだから、俺はこの赤の扉を選ぶぜ!』とか口走りながらBSchを起動したのです。
ボタンと乗っ取り用コントローラの間に、マイコンを搭載した基板を挟んで、◯のボタンが押されたことを×のボタンが押されたことにする代返..もといボタンアサイン変更機能をつけてしまおうと。
てゆーか、買ったまんま4年寝てるPICマイコンをいい加減使ってみようと思いました。LEDチカチカやダミーレーダー、ラーメンタイマーの次にくるあたりの、役に立つ奴が作ってみたい病にかかっていた俺にとっては難易度的にもちょうどよさげ。失敗しても、俺の\100PS1純正パッドとPICマイコンが火を吹くぜ!!ってなくらいで世の中の屋台骨は揺らぎません。ということでやってみました。
擬似コントローラ基板~ボタンアサイン変換基板~乗っ取り用コントローラ。背景は気にせずに..。
PS1用のコントローラ。のっとりポイントから線を引っ張っています。
開発中に使った擬似コン。安定動作するまでこれで開発しました。意外にもレイスト遊べる程度に使いやすかったです。
基板は、ガワにホットボンドで山を作り、その山にタッピングビスで止めました。
完成。新品でキズがないので穴開けたりなどは避けました。
変換基板の回路図。マイコンひとつで機能を達成出来るため、電源安定化の為のコンデンサとブザー、スイッチのプルアップ抵抗しかついていません。
完成しました。
写真が少なくて申し訳ない。プログラム作成が作業の大半なので、撮るものが殆ど無いです。具体的な機能は、この説明書をみて想像してみてください。
一応3Vから5Vまでのコントローラならどのゲーム機でも使えると思いますが、まだ実際に接続して試してはいません。なぜかというと、STARTボタンを押した後の決定/キャンセルに利用するボタンが、ゲームごと好き勝手に違うのはPS系のゲームだけなんでほかでは必要のない機能なのです。
多分他のゲーム機では、ゲーム機本体作ってるメーカから操作ガイドラインがでていてそれに沿って作ってるんだと思いますが、PSは売上が下降線をたどってる中でテコ入れとして、ついセガのソフト動かしてみたりとか服毒モノのことをいろいろやったんで、その辺甘くなってんじゃないかと思います。
使用感なのですが、遅延が極力少なくなるようにしたつもりです。チャタリングカットなどコントローラ(ゲーム機本体かも?)で行う処理はそっちにまかせ、ボタンアサインを変更のみ行いそのまま乗っ取り用コントローラに送ってます。
ですが微妙に遅延が発生しています。この遅延がPS1純正コントローラのせいなのか、基板やプログラムがマズイせいなのかイマイチ分からないのが困りどころです。
変換処理は、ボタン状態を読む~アサイン変更~乗っ取りコントローラへ出力、の一連の処理を12サイクルで行ってます。4Mhzの高速モードの場合、時間にして12μsと十分すぎるほど高速です。PS1だと、ゲーム機本体がコントローラからボタンの状態を読み取る間隔が16ms。桁が3つ違います。ですのでチャタリングまで再現できてるはずです。
PS1のコントローラはパッドですから、ボタンの部分はゴム接点つかってます。このゴム接点が抵抗値が高く流れる電流が少なくて済むせいか、コントローラLSI内部のプルアップ抵抗は自分で調べたところどうやら47KΩのようです。
しかし、乗っとりで使う場合はスイッチを押したときに流れる電流が少なくなり、結果としてノイズに弱くなるはずです。配線も乗っ取り用基板から無理やり線を這わしているので、それがアンテナとなり無線LANや携帯の電波を拾ってしまうかもしれません。それらを考慮するとLSI内部のプルアップは10KΩでいきたいところです。電源電圧が3.7Vと低いことも考えると4.7KΩでもいいかもしれません。
結局のところ乗っ取りで使う基板は、機械スイッチのボタン利用前提で作ってある、HORIスティックの基板を使うべきかもしれません。このあたりがいまいちよくわかってないのが俺の中途半端なところです。
話はかわり、説明書に書いてあるボタンアサイン以外の配置を使いたい場合は、ソースファイルをガリガリ書きなおしてマイコンを焼き直す必要があります。
誰か使いたい人がいれば、PIC内蔵のEEPROMにボタンアサインを書き込めばいい仕様に変更します。これならば、PCのシリアルポートにつなぐケーブルを作成すればWinから書き換えることが出来るようにできます。専用ソフトを作ることになりますが、多分より便利になります。
でもそこまでする気力がないです。既に自分が使って満足しているので、これでいいやと。どうせなら入出力14ボタン対応の奴に作り直したいし。
2010/10/20追加
現状での不満点を改善するべく回路引きました。まだできてないので長々書いてもしょうが無いので、以下に盛り込む機能を箇条書きにします。
当初は、AVRのMega88Vで考えていったのですが、現行のMegaシリーズは古いAVRの拡張となっているのでピン配置がめちゃくちゃですし、ADコンバータ系のピンはI/Oとして使えません。
PIC16F886のほうが後発で、I/Oポートの並びが素直になってたり、ほぼ全てのピンがI/Oとして使えたり、内蔵クロックを8段階で選べたり、消費電力が低かったりと、自作派がユニバーサル基板で楽ができそうだったので、再度PICの登用とあいなりました。