まあじゃんコンパネ
このページは旧サイトからの転載です。
麻雀基盤でゲームをするためには、麻雀用のコンパネが必要になります。それは、コントロールBOXでも筐体でも同じです。ここでは、PS/2キーボードの出力を変換して麻雀コンパネの代わりにします。ついでにコントロールBOXの機能もつけましたので、PCBから出ているコネクタを、PS/2キーボード・ATX電源・オーディオ出力に変換するコンバータのような形になります。
キーボードなのでブラインドタッチができれば、手元を見ずに遊べるという利点もあります。
これでお手軽にゲーセンでの恨みが晴らせるでしょう。
JAMMA変換もしてみました。
試作1号の概観 †
ようやく完成した1号機。と言いたいところですが、写真を撮った段階ではATXコネクタの接着が終わってません。ケースはタカチのUC-14-4-10AA(\1530)ですが、中はかなりひどい状況です。しかし、プリント基板を使えば、もう一回りくらい小さなケースにも綺麗に詰め込めるでしょう。あと、このケースは金属製で加工が面倒なので、実際に作ならばプラスチック製のケースにしておいた方が楽でしょう。
材料費はケース込みで6500円くらいです。ただし、ATX電源本体、キーボード本体は含んでいません。参考までにうちで使っているATX電源は1980円、キーボードは980円でした。
実際に使っている状態
メガシステム32のためにCBOXが立って
しまって安定性がいまいちですが、普通の
PCBの場合は寝るので、ちゃんと安定します。
表側
左上から、PS/2、オーディオ
ATX電源、モニタ、電源。
裏側
KELの4.96mmピッチ56ピンコネクタで、直接繋ぎます。
普通にやるときに必要なもの †
・ゲーム基盤
こんなんです。
・モニタ
モニタは15kHzが表示できる必要があります。最近のWin用のモニタだとまず映りません。安く上げるには、X68kのモニタとか、タウンズのモニタ(新しいのはNGかも)とか、PC98の頃のTVチューナ内臓のモニタとか、8ビット時代のモニタ(21ピン)とかをジャンク屋で買ってくるのがいいでしょう。秋月あたりで売っているRGB15kHz=>Videoコンポジットなどの変換器を買ってきてTVに繋ぐという方法もあります。ただ、非RGBは汚いです。また、アップスキャンコンバータを使えば、Win用のモニタでもOKですが、ちょっと高いです。
うちでは、X68K用のCZ−621Dをゲーム用に使っています。このモニタは、本来X68kとかX1で使うモニタなので、全ての基盤に対応できる保証はありません。業務用モニタでさえ、相性というものが存在しますから、これは仕方のないことです。
基盤とモニタはどこかで仕入れてきてください。それらが無いとさすがにどうしようもありませんので。
・コントロールBOX
・中間ハーネス
・麻雀コンパネ
この3つをパソコンのパーツを流用して作ります。
話としてはPS/2キーボードの出力をPICを使って麻雀コンパネの出力にすることがメインです。
資料 †
麻雀コンパネの出力の仕様
凡例
4黄 (21,22) |
コンパネから出てる線の名称は4で、色はおそらく黄色。基盤側のコネクタでのピン番号は、1PでPin21、2PでPin22。
3 橙 (1) | 2 赤 (2) | 6 青 (3) | 10 黒 (4) | 7 紫 (5) | |
4 黄 (21,22) | A | B | C | D | LAST CHANCE |
5 緑 (23,24) | E | F | G | H | TAKE SCORE |
8 灰 (25,26) | I | J | K | L | DOUBLE UP |
9 白 (27,28) | M | N | チー | ポン | FLIP FLOP |
11 桃 (29,30) | カン | リーチ | ロン | BIG | |
1 茶 (31,32) | START | BET | SMALL |
ゲーム基盤側のコネクタの仕様
JAMMAとはびみょーに違います(同じなのはコネクタだけという気もするけど)。
JAMMAを含めた仕様は別ページにあります。
部品面 | 番号 | 番号 | 半田面 |
GND | 56 | 55 | GND |
GND | 54 | 53 | GND |
+5V | 52 | 51 | +5V |
+5V | 50 | 49 | +5V |
(-5V) | 48 | 47 | (-5V) |
+12V | 46 | 45 | +12V |
+5V | 44 | 43 | +5V |
+5V | 42 | 41 | +5V |
GND | 40 | 39 | GND |
GND | 38 | 37 | GND |
36 | 35 | ||
Coin Switch | 34 | 33 | |
2P1 | 32 | 31 | 1P1 |
2P11 | 30 | 29 | 1P11 |
2P9 | 28 | 27 | 1P9 |
2P8 | 26 | 25 | 1P8 |
2P5 | 24 | 23 | 1P5 |
2P4 | 22 | 21 | 1P4 |
(SP-) | 20 | 19 | SP(+) |
Video Sync | 18 | 17 | Video B |
Video G | 16 | 15 | Video R |
Test switch | 14 | 13 | (Analyzer Switch) |
(Memory reset switch) | 12 | 11 | |
GND | 10 | 9 | GND |
Coin in counter | 8 | 7 | |
6 | 5 | 1P/2P7 | |
1P/2P10 | 4 | 3 | 1P/2P6 |
1P/2P2 | 2 | 1 | 1P/2P3 |
ATX電源のコネクタの仕様
電源側のコネクタを向かって見た場合です。
アナログRGB(Dsub15P)
1 R
2 GND
3 G
4 GND
5 B
6 GND
7 Ys
8 GND
12 GND
13 GND
14 H-Sync
15 V-Sync
X68kモニタでは、
10 Audio(L)
11 Audio(R)
使用するICのピンアサインなど
PIC16F84
RA2 | 1 | 18 | RA2 |
RA3 | 2 | 17 | RA0 |
RA4/TOCKI | 3 | 16 | OSC1/CLKIN |
!MCLR | 4 | 15 | OSC2/CLKOUT |
Vss | 5 | 14 | Vdd |
RB0/INT | 6 | 13 | RB7 |
RB1 | 7 | 12 | RB6 |
RB2 | 8 | 11 | RB5 |
RB3 | 9 | 10 | RB4 |
4051B
RonはVss=GND,Vdd=5V時に470 Ohm(typ)、1200 Ohm(max)
HS C-MOSでは、40 Ohm(typ) (Vss=GND,Vdd=4.5V)
スイッチは、デジタル3〜20V、アナログ20Vppまで可能。
オフ抵抗は、チャンネルリーク100pA(typ) (Vdd-Vee=18V)
4 | 1 | 16 | Vdd |
6 | 2 | 15 | 2 |
COMMON | 3 | 14 | 1 |
7 | 4 | 13 | 0 |
5 | 5 | 12 | 3 |
INH | 6 | 11 | A |
Vee | 7 | 10 | B |
Vss | 8 | 9 | C |
LM339
OUTPUT2 | 1 | 14 | OUTPUT3 |
OUTPUT1 | 2 | 13 | OUTPUT4 |
V+ | 3 | 12 | GND |
INPUT1- | 4 | 11 | INPUT4+ |
INPUT1+ | 5 | 10 | INPUT4- |
INPUT2- | 6 | 9 | INPUT3+ |
INPUT2+ | 7 | 8 | INPUT3- |
製作 †
大きく
・コントローラ部
・電源部
・ビデオ部
・オーディオ部
に分けてあります。基本的にコントローラ部以外はおまけのコンテンツです。
電源部、オーディオ部は省略しても実用的には問題ありません。省略すれば、製作は幾分簡単になりますが、費用はあまり変わりません。。
コントローラ部
PICを使ってPS/2キーボードから麻雀コンパネ出力に変換します。この回路1組で、1プレイヤに対応します。2Pが欲しいときはもう1組作ってください。
複数のキーを同時に押すことを要求するゲームが存在するならば(※1)、そのゲームでは使えないでしょう。また、4051を2つ通しているので、オン抵抗が標準で940Ω(470Ω*2)ほどあります。最大では2.4KΩにもなります。これが問題となる場合には、74HC4051に置き換えれば、80Ω(標準)に抑えられます。さらにVEE=-6.0V、VCC=6.0Vにすれば、40Ω(標準)にまで抑えられます。
特殊キーも5つ出力できます。割り当てはご自由に。コインスイッチやテストスイッチに繋げると良いでしょう。特殊キーは同時に複数のキーを押すことにも対応しています。しかし、あまり意味はないでしょう。
キーボードとの対応は以下のようになっています。これはPICのソースレベルで変更が可能です。16進数の数値は、ソース内のテーブルで使用されている数値です。
基本的に上2段(ファンクションキーと数字の列)だけで操作できます。A〜Nはアルファベットも対応しています。ポーカーなどで使うキー(DOUBLEUP等)にも対応しています。
Mに対応するキーとして、M,¥、] があります。] はASCIIキーボード対策のつもりですが、もしかしたら間違っているかもしれません。
スペースキーはNに割り当ててあります。また、チー・ポン・カンは、通常のコンパネと逆順に並んでいます(普通は、カン、ポン、チー)。
※1 複数キー同時押し
やっぱりありました。
ホットギミック快楽天(たぶん、ホットギミックも同じ)のテストモードでA+Bを要求する場面が存在します。ただし、この場合には素早くABを押せば回避できます。でも、他にも同時押しを要求するゲームはあるでしょうね・・・
キーボードとの対応
A 24 | A 1c 1 16 |
B 44 | B 32 2 1e |
C 64 | C 21 3 26 |
D 84 | D 23 4 25 |
E 28 | E 24 5 2e |
F 48 | F 2b 6 36 |
G 68 | G 34 7 3d |
H 88 | H 33 8 3e |
I 2c | I 43 9 46 |
J 4c | J 3b 0 45 |
K 6c | K 42 - 4e |
L 8c | L 4b ^ 55 |
M 30 | M 3a \ 6a ] 5d |
N 50 | N 31 BS 66 SPC 29 |
チー 70 | F1 05 |
ポン 90 | F2 06 |
カン 34 | F3 04 |
リーチ 54 | F4 0c |
ロン 74 | F5 03 |
START 38 | ESC 76 |
BET 58 | F7 83 |
LAST CHANCE a4 | F8 0a |
TAKE SCORE a8 | F9 01 |
DOUBLE UP ac | F10 09 |
FILP FLOP b0 | ScrL 7e |
BIG b4 | F11 78 |
SMALL b8 | F12 07 |
特殊キー1 | Ins e070 |
特殊キー2 | Home e06c |
特殊キー3 | Pup e07d |
特殊キー4 | End e069 |
特殊キー5 | PDown e07a |
このソフトでは、キーボードからの信号を受け取るだけです。ホストからキーボードに対してのコマンドは発行していません。リセットもキーボードのパワーオンリセットまかせです。したがって、キーボードによっては正常に動作しない可能性があります。とりあえず、うちの安物キーボードではちゃんと動いてます。
ソース(ps2mj.asm)
MPASMを使ってください。秋月のアセンブラではアセンブルできません。
ちなみにうちのライタはAKI-PIC V3です。前はトラ技に乗ってたやつを使っていたのですが、やっぱりパラレルは調子がいまいちでした。これじゃどうしようも無いってことで、思い切って新調したのですが、開発がすごく楽になりました。・・・って宣伝してどうする(^^;怪しげな広告じゃあるまいし。
ソースファイルにも書きましたが、クロックは適当でOKです。ただし、キー取り込みの安定性や消費電力を考えると4MHzが最適だと思います。
コンフィグは、OSCはXT、ウォッチドックOFFにしてください。パワーアップタイマは、ONでもOFFでもどちらでも構いません。
HEXファイル(PS2MJ.HEX)
HEXファイルを使う分にはどのライタでもOKです。
回路図(CE2形式 ps2mj.CE2)
回路図(PNG ps2mj.png)
電源部 †
まず、ATXの電源をONにする必要があります。PSをGNDにしてやればいいのですが、電源に繋いだときに既にGNDレベルになっていると電源が入らないものもあるようです。ちなみに、うちの実験用電源は、スズメッキ線でショートさせているだけです。
また、ゲーム基盤のコネクタは逆差しが出来るので、逆差しをした場合には電圧がかからないようにします。私の性格から言って必ず逆差しするでしょうから(^^;。
初めは、47ピンと48ピンが通常はNCなのに対して、逆差しの場合GNDになることを利用していましたが、ゲームによっては47,48ピンが−5Vとして使用されている可能性もあるので、別の方法に切り替えました。
今の方法は、低い電圧(600mV)を本来ならGNDになっているべきところにかけて、コンパレータでGNDレベルに落ちているかを検出しています。コンパレータは、単一電源でもGNDレベル付近で使えるものが必要です。この回路では、正しい接続をしたときに、チェックにつかう端子とGND間の抵抗が1Ω以下にならないとNGです。もし正しい接続でも1Ω以上になってしまう場合には、チェック端子に繋がっている抵抗(10KΩ)をもっと大きな値にしてください。小さな値にすればもっと精度が上がりますが、その必要はないでしょう。
テスト入力として使う端子は、56ピンのGNDで良いでしょう。当然ですが、53、54、55ピンのGNDと直接繋げたりしないように(^^;
ATX電源用コネクタが入手できない場合は、パソコンショップでATX電源の延長ケーブルを買ってきてぶった切るのが手っ取り早いです。値段は800円くらいです。
回路図(CE2形式 power.CE2)
回路図(PNG power.png)
ビデオ部 †
ゲーム基盤からの同期信号は複合同期なので、分離する必要があるかもしれません。少なくとも家のX68kモニタ(CZ-614D)の場合では分離する必要がありました。コンポジット信号と違って、同期信号しか流れていないので、ここではディスクリートで簡単に分離しました。ICはHCじゃなきゃダメです。LSは使えません。15kHzの信号を基準に設計されていますが、24kHzぐらいなら追従できるかもしれません。
余裕があれば、RGBそれぞれの信号もアンプを通しますが、面倒なのでそのままです。
水平位置を変えられると便利なのですが、やっぱり面倒だったのでそのままです。
回路図(CE2形式 VIDEO.CE2)
回路図(PNG Video.png)
上から入力信号、V出力、H出力
仕様上、水平同期が1つ余計に出ます
オーディオ部 †
PCBからはスピーカ出力しかありません。
RCAで普通のオーディオ出力があると便利なので、レベルを落として作ります。面倒なのでゲインは手動調整です。通常、スピーカのマイナス端子はGNDですが、メガシステム32の場合はGNDではないので(BTLです(^^;)、アイソレーションのために入力にトランスを入れています。面倒なら差動でアンプに入れてもいいのですが、相手はスピーカーで鳴らすことしか考えていないので、正常に動作しない可能性があります。
基本的には、ここに付いている10kのVRは1つのゲームPCBで設定したら他のゲームでも変えずに使い、代りにゲームPCB上のボリュームで前のゲームと同程度の音量になるように調整します。また、10kのVRもゲームPCBのボリュームも、音量が最低になるようにしてから徐々に上げてください。出力電圧の制限をしていないので、最悪の場合、繋いだアンプを壊す可能性があります。ちなみに、AUDIO出力端子に8Ωのスピーカを繋いで、VRを最大にすると、入力に直接繋いだ時と同じくらいの音量で鳴ります。
±12V電源で動作させていますが、±5Vでも十分だと思います。
回路図(CE2形式3KB mc_audio.CE2)
回路図(PNG mc_audio.png)
プリント基板
プリント基板用にPCBデータを作りました。とりあえず詰め込んだだけですが、参考程度にどうぞ。ただし、HiWireの.pcb形式です。
基板サイズは、120*82以上必要です。
JAMMA対応 †
さすがにキーボードをスティックの変わり使う気はありませんが、同期分離や電源だけでも使いまわしたいので、中間ハーネスを入れてJAMMAに対応しました。
ちょうど、通常のJAMMA to 麻雀のハーネスを入れる変換の逆になります(^^;。まぁ、麻雀中心のコントロールボックスがあってもいいじゃないですか。
コントローラには、プレステ用のホリFightingStickPSを使っています。SS用でもいいのですが、PS用の方がボタンが1個多いのです(SELECT)。当時(7年くらい前)、PSを持ってないのに、2つもこのコントローラを購入したのは、そのためです。でも、その直後にサターンを買って悲しい思いをしましたが(^^;
PSの通常の出力をPICでパラレルに変換することもできますが、直接内部からパラレルで引っ張ってきています。通常のPS出力もあるので、この改造のためにPSで使えなくなるということはありません。
水色のコネクタがついた怪しげな基盤は、コントローラをつなげるためのコネクタがついているだけで、特に付加回路があるわけではありません。
ちなみに、JAMMAはオーディオ出力端子を備えていますが、コネクタを新たにつけるのは面倒なので、麻雀基盤と同様にスピーカー出力を利用しています。この方法ならば、カードエッジとコネクタの間の配線が2本増えるだけです。
コインスイッチは、スティックのSELECTボタンを使うと良いでしょう。