今風太ワールドを楽しむ(18)
更新日:2019年10月22日

PasocomMini PC-8001のジョイスティックを作る(2)
前回、衝撃のデビューをさせて頂きましたPasocomMini PC-8001のジョイスティックコントローラですが、今回は内部について詳しく説明いたします。皆さんも是非作製して頂き快適なゲームライフを楽しんで頂ければ幸いです。
(PasocomMini PC-8001のジョイスティックコントローラ)
内部構成をもう一度確認しましょう。
(ジョイスティックコントローラのブロック図)
PasocomMini PC-8001に興味を持たれたらこのページへどうぞ
パソコンミニ公式ウェブサイト
今回の製作のキモになる部分はUSBマイコンです。USB機器の自作はかなり敷居が高いのですが、一度コツを掴むと簡単に出来ます。私もこの原型は1週間程度で出来ました。
(PIC18F14K50 USB対応マイコンボード)
このマイコンボードがキモです。このボードにはUSB機器を製作する上に必要なハードウェアが全て載っています。とても便利に使用させて頂いております。これは秋月電子さんから購入出来ます。とても良く出来たボードです。これからもいろいろと考えていることもあるのでいくつか購入いたしました。
全体の回路図を示します。画像をクリックすると大きな回路図が見れます。
(ジョイスティックコントローラの回路図)
SW1〜SW4をジョイスティックに割り当てます。SW5〜SW9がプッシュボタンです。MODE_SW、SEL1_SW、SEL2_SW、SEL3_SWは6Pトグルスイッチです。2回路入っています。マイコンボードのピン数が少ないので、少し工夫をしています。LEDの点灯は外付けにデジタルICを使用します。モード切換え表示用のLEDは2色LED(カソードコモン)です。あくまでも私の作製例ですので、この辺りは皆さんで工夫して下さい。ゲームモードは8種類が選べます。現時点で5種類を使用しているのでまだ3種類の追加が可能です。今後必要になればバージョンアップしたいと思っています。

(PICマイコンのポート割付です)
ポートが足らないのでボード上のVPP端子も使用します。このピンはRA3になります。
製作途中で検証を進めるうちにジョイスティックのスイッチにチャタリングが発生していることが判りました。ハードウェアで取ることを考えてSW1〜SW4のポートのみにチャタリング吸収回路を入れました。本当はソフトでチャタリングを取ることが良いと思いますが今回はハードウェア対応としました。
(ジョイスティックON時のチャタリング)
(チャタリング除去後)
3msec程度の遅延が発生しますがゲームの動作には全く問題ない時間と思います。
(プッシュボタンの動作)
プッシュボタンには全くチャタリングが発生していません。とても良く出来たスイッチです。
(マイコンボードの周辺を基板に実装)
USBマイコンはUSBケーブルを抜き差しするので基板に実装してしっかりと固定します。他部品については内部の写真で確認下さい。
(操作面裏側の実装)
LEDの周辺回路は別基板にして取り付けました。
(内部の実装)
マイコンボードのみ取り付けています。その周辺に配置しているのはおもりです。
(おもりに使用した座金)
座金を8枚取り付けています。両面テープで貼り付けてから万能ボンドで固定しています。このおもりがないとジョイスティックユニットごと動いて操作しずらくなります。一応テーブルに置いて使用する想定です。ゲームセンターのように。
ここからはソフトウェアの説明になります。まずUSB機器のソフトウェアを製作するにはマイクロチップから提供されている雛形を使用することで飛躍的に開発の敷居が下がります。まずマイクロチップのサイトから「Microchip Libraries for Applications」、通称「mla」をダウンロードします。
ファイルを解凍してセットアップをするとCドライブに「microchip」のフォルダが生成されます。これをフォルダごと自分の作業エリアにコピーします。フォルダの名前を判りやすいように書き換えます。私は「microchip_USB_KB」としました。フォルダの中には今回のソフト開発には必要のないものも含まれていますのでそれは削除しておきましょう。
(必要なフォルダの構成)
上記のフォルダ以外は削除しても大丈夫です。そのまま残しておいても問題はありませんが、バックアップとしてコピーする時に時間が掛かって仕方がないです。上図のAのフォルダ名はもっと長かったのですが、短くしています。
このジョイスティックコントローラはUSBのHIDキーボードとして動作します。それぞれのスイッチやボタンが押された時にそのコードを送信しているだけです。USBの雛形部分がとてもしっかりと出来ていますので、かなり簡単にソフトを作ることが出来ます。今回書き換えた部分は次の通りです。
(ヘッダーファイル)
それぞれのソースは別々のフォルダに入っていますので、番号で判るようにしました。例えば「buttons.h」は「bsp」-「low_pin_count_usb_development_kit」-「pic18f14k50」のフォルダに入っています。
(Cソースファイル)
これ以外にもファイルは沢山ありますが、全くそのままです。合計7つのファイルを書き換えています。書き換えたファイルのみをダウンロード出来るようにしましたので、それぞれのフォルダで差し換えて下さい。
書き換えるファイルはこちらからダウンロード出来ます。
どのようなコードを送信しているかを記します。DATAと記している部分がUSBに送るデータになります。Shitなどは別にセットすることになります。詳しくはソースを眺めて下さい。
(各ゲームモードに対応したUSB送信コード表)
こうして製作したジョイスティックコントローラは次の内蔵のゲームに対応しています。
(内蔵ゲームのゲームモード対応表)
さて完成したジョイスティックコントローラですが、方向キーはテンキーの2468で押すよりはるかに操作性が良くなりました。但しストロークが大きいので、不得意なゲームもあるかもしれません。何よりもキーボードを接続しなくてもゲームが出来るところが良いと自分では思っています。ゲームセンターにある大型ゲーム機と比較するとジョイスティックとプッシュボタンの間隔が狭いので、ジョイスティックを左側に操作していると思っていても下側に操作している時が時々あるので、そのあたりは皆さんのやりやすいように改造して頂ければよいと思います。
さてこのジョイスティックコントローラがどれほど貢献したのかを示すために「マリンベルト」のハイスコアを貼っておきます。
(ジョイスティックコントローラを使用したマリンベルトのハイスコア)
これくらいのハイスコアはテンキーでも出せるじゃん、と思われた方はテンキーで頑張って下さい。あくまでも個人が製作したPasocomMini PC-8001の周辺機器のひとつとして受け取って頂ければ幸いです。今後もし新しいゲームが出る場合は出来るだけ対応したいと思います。あと3パターンだけですが。もっともっとゲームが増える場合はまた違ったハードウェアで考えなければなりません。あくまでもジョイスティックでやりたいと思ったゲームだけですけど。
PasocomMini PC-8001に興味を持たれたらこのページへどうぞ
パソコンミニ公式ウェブサイト
(PasocomMini PC-8001)
私は既に次の周辺機器の開発をスタートさせています。ご期待下さい。皆さんもこのPC-8001ミニで懐かしのゲームを楽しみましょう。今更ですが、今風太のゲームはI/O本誌に掲載された「マリンベルト」がゲームバランスがよく出来ていると思いました。やっぱりどんなゲームが本誌に掲載されたのか少し判った気がしました。これからもよろしくお願いいたします。

「蘇る今風太ワールド」表紙へ戻る