なんか基板に配線するのが楽しくなっちゃって、ついCPS-2を今更入手してしまいました。電池切れ問題とかゲーム本体以外にも楽しめそうな所が多かったので。とりあえず現状ではグレート魔法大作戦のみが手元に。で、遊ぶ環境を作ってみたので適当にまとめてみます。有り物+αなんだけど1万円程度で作れました。まぁ、ほぼ電源代。
必要になる物
- 電源
- RGB+CSYNC(いわゆるCGA)を画面に映す手段
- ゲームコントローラ
ですね。コントローラ部分だけ自作して、任意のUSBコントローラを繋げるようにしてみました。JAMMAのコネクタなんかはAliexpressで10枚1000円みたいなノリで買えます。Amazonでハーネスとして売ってるやつもあるので配線で楽したい人はそういうの買った方がそんなに高くもないし楽かも。
2018年にもなってこういう記事を書いてる人はほとんどいないと思うので、このタイミングで作ろうと思ったら、どこで何が入手できてどんな感じになるのか、まぁ参考になるかな、と。
わりとコンパクト。
電源
コスパの良い定番は三和電子のSWN-7Fでしょうか。
となっており、出力としてはギリギリの線ですね。基板によっては足らない事もありそうです。JAMMA的にはこの3つの電圧が必要ですが、CPS-2だけ考えるなら+5Vと+12Vだけで動きます(少なくともマニュアルでは-5Vの端子にはN.C.と書かれている)。
実は-5Vが不要だったらもう少し安くあがる選択肢もあって、例えばMEAN WELL RD-65Aなんかは
と、もう少しだけ余裕のある定格になっています。しかも4,000円くらいで買える。
ただ、電源は怖いので今回は実績のある三和を選びました。いずれ-5Vが必要になる日が来るかもしれないし。購入に際しては、お店によって値段が2割くらいは違うんですが、今回は安定の千石電商にて。
オンラインにもありますが、店頭なら1号店の1階、スティックやボタンなどアーケード関連部品が置いてあるエリアにひっそりと白い箱に入って置かれていました。6,500円。ただ、後で気づいたんですがこのSWN-7Fも実はMEAN WELL社製っぽいですね。裏面にきっちりMWのロゴが入ってました。なので、どちらでも一緒だったかな。
RGB+CSYNC
とりあえずお手軽に実現できる方針は2つ。1つはアップスキャンしてVGAで映す方法、もう1つは15kHzのままコンポジットかS端子に変換して、これらの入力を持つモニタに頼る方法。それ以外にも昔ながらの15kHzのVGAが映るモニタを入手してCSYNCからVSYNCを分離して突っ込むって方法もありますが今回は触れません。最近は小型で1万円以下の液晶が色々と手に入り、15kHz対応している物も多く存在するようなので、今でも有効な選択肢かもしれませんが……やはり大きいモニタで遊びたいですしね。
アップスキャンしてVGA
SODIALから出てる高清解霜III代ってボードが安くてお手軽。普通はこの手の製品は5桁の価格帯なんですが、こいつはなんと2,000円ちょっと。日本でも扱ってるお店はボチボチあるようですが、もう少し高めの値段のようです。昔のPCのアップスキャンにも使えそう。入力はVGAだけじゃなくCGAも食ってくれるので、VSYNC信号を分離する事無く、JAMMAから配線だけで繋ぎ込めます。使ってみた感じ、遅延も少なく画面も綺麗だったのでお勧め。とても2,000円とは思えない。
コンポジットかS端子に変換
昔は秋月に行けばエンコーダーのチップが手軽に入手できたんですが、今はわりと手段が限られてきてるようです。チップさえ入手できればそこそこ簡単に電子工作できるのですが、今回はなんと
aitendoさんの特売品を発見。たったの999円でCGAからS端子にエンコードできます。これを利用しない手はありません。8-15V電源でマニュアルによれば最大消費電力1.5Wですので、12Vの電源を流用しても最大0.125A程度と安心です。コンポジットが使えないための特売のようです。確かにコンポジットで繋げるとそれなりに画面は出るものの水平方向に激しく乱れます。
VGAより画質は劣りますが、S端子なら気になるほどの劣化ではありませんし、そのままブラウン管モニタに突っ込めば遅延が皆無というメリットも。液晶モニタを使う場合にはモニタ内で変換が発生しているはずですが、ディスプレイドライバの作りによっては外でVGAにアップスキャンするより低遅延の可能性も。ただ、手元のディスプレイ2台で試した限りは遅延は同程度か、下手をすると大きいくらいでした。あと片方のディスプレイでは垂直方向に揺れてました。ディスプレイ側のインタレース処理がおかしいのかも。
現時点で在庫数156の売り切り処分品のようなので、RGB 15kHzを出力する何かを持ってる人なら今のうちに確保しておいて損はないかもしれません。ちなみに表示中の画面を近くから写真で撮ったものがこれ。まぁ、多少の滲みはやむを得ないですね。
ゲームコントローラ
遅延が気になる人には受け入れがたい選択かもしれませんが、まぁ追加1フレくらいいいかなって人にお勧めかもしれないのがUSBから変換する方法。探せばこれも既存品ありそうですが、細かいカスタマイズできると嬉しいのと、SBCが有り余ってることから自作する事にしました。
使うことにしたSBCは
Orange Pi 2G-IOT。選んだ理由は512MBと少ないながらもNAND flashを内蔵していてそこから起動できる事、USB OTGから電源が供給できるって程度に消費電力が少ない事、USB入力が可能な事、安いこと、などが上げられます。購入は
Aliexpressにて、送料合わせて1,475円です。
NAND flash内蔵は地味にありがたく、SD CardからLinuxを起動しようとするとだいたい30秒から1分くらいはかかってしまうのですが、NAND flashからの起動は8秒そこそこ。systemd-analyzeを使って最適化を進めると、だいたい電源投入から5秒でコントローラの変換ロジックを起動するところまで漕ぎ着けます。これなら基板の起動を待っている間にはreadyになります。
また消費電力が小さいので基板用の5V電源をそのまま流用できます。電源ピンは出ていないのですが、回路図を見て試した限り、ピンヘッダの5Vから電源供給できました。
あとは自分で作ったブリッジが中で動作していて、自分の持ってるUSBコントローラが刺さると適切な変換マップを通してGPIO越しに入力信号を出力。この出力をJAMMAに繋ぎこんでます。一応ソースは
GitHubに置いてあります。C言語が読める人なら自分向けに書き換えて使うことも難しくないかと。Orange Pi向けの3種類のツールが含まれてて
- GPIOに繋いだコントローラをジョイスティックとして/dev/inputに見せる
- 同上をUSB OTGを使いUSBのジョイスティックとしてPCなどに見せる
- USBに繋がったコントローラの入力をGPIOに出力する
といった事ができます。自分はだいたいこの辺りのコードを使ってXbox360用のコントローラを使いまわしてる感じです。
まとめ
そんなわけで、安く仕上げようとすると
- 電源 4,000円
- CGAからS端子に変換 1,000円
- コントローラ 1,500円
って感じでしょうか。コントローラは上記の変換基板を作っても、安い360用のコントローラを手に入れて改造して直接繋いでも、だいたい似たような値段ですね。