ちなみにNAOMIはJVS最初期のボードなので麻雀まわりが決まる前だったんでしょうね。独自プロトコルをとっている以上、I/Oボードは選ばざるを得ないという……。
ちなみに対応してないIOボードの時はこんなメッセージが出てゲームは起動しません。
まぁ、自作なんで最悪どうにでもなるかな、と。まずは情報収集。
BONZE ADVENTUREさんによると「NAOMIの麻雀はカプコンコンバータでは動かずセガコンバータなら動く」と。セガコンバータのEXT I/Oの結線方法なんかも書いてあり、中で何をやってるのか朧気ながら想像つきます。出力ドライバと組合させてJAMMAに似たスキャンを使った入力の多重化をやってるんですね。
さらにGAME屋萬年堂さんが動作するIOボードのJVS TESTのスクリーンショットを公開してくれていました。これを元に同じcapabilityを持つボードをエミュレートすれば最低限動作するだろう、と。
で、無事に動作して、少しずつ情報を落として動作するだけの最低要件をまとめたら、必要なのは二点でした。JVS的に必須項目になってる機能は条件から落としてます。
- I/O IDで返す名前は「SEGA ENTERPRISES,LTD.」から開始していなければならない(User-Agent問題……)
- 汎用ドライバ出力を8スロット備えている
前者はセガを名乗るのか……と気がひけますが、後ろに「compat」とか付ければ嘘じゃないのでいいでしょう(User-Agent問題……)。出力ドライバも実際に出力できる事は要求されてないので大丈夫。スキャンラインの切り替えに使ってるだけなので「持ってるよ」と機能チェックで返してあげればOK。
JVS TESTで見える情報はこんな感じですね。DIPスイッチで切り替えた時のみ、このモードに切り替わるようにしました。幸いJVSは3版を名乗っても大丈夫そう。
スーチーパイさんも怒りません。
無事に起動しました、よしよし。
実際のプロトコルについてはゲーム側のテストモード使って入力に探りを入れて解決。ざっくり以下のようなプロトコルでした。
- 8-bitsの出力ドライバに対し、bit 4からbit 7に対してone-hotを出力
- その時に出力されているbitに応じて、SW入力のうち各プレイヤー向けの情報の第1バイト(元々START/SERVICE/UP/DOWN/LEFT/RIGHT/B1/B2がアサインされてたバイト)の意味が変わる
スキャンは負論理じゃなくて正論理なんですね。もしかしたらセガコンバータはJAMMA側のスイッチがpull-upじゃなくてpull-downになってるのかも。でなければドライバの出力をどっかで反転させないとだし。JVS側が正論理だからこの作りもわからないこともないけど、そっちはパケットだし、回路側は負論理のままの方がすっきりするんだけど……。
で、その後テストモードで調べた入力マトリクスは以下の通り。
|OUT\Bit|| B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | +-------++-----+-----+-----+-----+-----+-----+-----+-----+ | 0x40 || A | - | E | I | M | KAN |START| - | | 0x20 || B | - | F | J | N |REACH| - | - | | 0x10 || C | - | G | K | CHI | RON | - | - | | 0x80 || D | - | H | L | PON | - | - | - |
伝統的な麻雀コンパネと同じ組み合わせになってますね。まぁ、無理して変える必要もなかったんでしょう。ひとまず十字とボタンの組み合わせで入力とるようにしたバージョンをコミット。そのうち麻雀エッジに直接対応させようかと。
はて、通常のJVSの麻雀配列は何でテストしたら良いのやら……。
はて、通常のJVSの麻雀配列は何でテストしたら良いのやら……。
1 件のコメント:
兎の場合は0x80のラインが0x08になってた。
コメントを投稿