CYBERSTICKをメガドライブに接続する

www.youtube.com

CYBERSTICKをメガドライブに接続する変換器です。

CYBERSTICKの工作ネタは長年封印していたのですが、今やらずにいつやるのか?!ということで、大急ぎで作ってみました。

謎の義務感です。

 

いつものように「アフターバーナーII」で動作確認しました。

 

「Multiway pad converter」はメガドラのアナログパッドに対応済みです(XE-1APのMDモード互換)。この技術を応用します。

 

追加用の回路。

以下の点を変更するだけです。

・CYBERSTICK用のボタン入力処理を実装。ベーマガ1990年10月号が参考になります。

・CYBERSTICK用にDsub9pinオスのコネクタを追加。ACKだけで同期を取って、LHを省略しました。

メガドラへの送信データ(11ニブル)の順番を入れ替える。

↑CYBERSTICKとXE-1APでは順番が違うので、こんな感じに入れ替える。

GitHub - nicotakuya/multiway-pad-converter

こちらでソースを公開しているので、詳しくは「cyber_to_megadrive」関数を読んでください。

*言い忘れましたが、メガドラを起動したら一旦リセットしてください。それでアナログパッドの検出をやり直します。

 

なお、ベーマガの1989年12月号には、開発中の「アフターバーナーII」と、XE-1AJを接続した状態のメガドライブが掲載されています(戦略方針発表会のレポート記事より)。CYBERSTICKはシャープの商品なのに対して、XE-1AJはマイコンソフトの商品です。

最終的にメガドラ仕様のXE-1AJは発売されず、パッド型のXE-1APが発売されました。

XE-1APはPCモードとMDモードの2つを搭載しています。一方、CYBERSTICKはPCモードだけです(パソコンの周辺機器なので当然ですが)。

 

nicotakuya.hatenablog.com

アルカノイドII用コントローラの自作(VSモード対応)

www.youtube.com

 

ファミコン版「アルカノイドII」のVSモード対応のパドル・コントローラを自作してみました。Multiway pad converterにオマケ的に機能を追加しました。2人同時プレイ用コントローラですが、1人プレイ時でも問題なく使うことができます。

VSモードというのは対戦モードのことです。PONGそっくり。

 

もう少し説明します。

ファミコン版の「アルカノイド」シリーズには回転するツマミが付いた特殊なコントローラが付属しています。これをパドル・コントローラと呼ぶことにします。

 

アルカノイド「初代」と「II」とでは、パドル・コントローラの仕様がちょっとだけ違います。「II」に付属するパドルには、拡張端子が付いていて、パドルを増設することができます。右の方法だと、無限に接続ができてしまいますが、ファミコンは2台までしかパドルを認識できません。

 

仕組みは単純で、「アルカノイドII」では拡張端子のピンの割り当てを2本増やしてるだけです。

4番ピンがプレイヤー2用のパドルの位置データ、5番ピンがプレイヤー2用のボタンの状態です。

クロックやラッチの信号線はプレイヤー1と2で共通です。

アルカノイド用のパドルコントローラは、過去に作ったことがあるので、それにプレイヤー2用の処理を付け足すだけで作ることができました。

 

VSモードですが、クセのある仕様です。

メニューから「VS」→「FRIEND」を選ぶ時、ここでSTARTボタンを押してしまうと、以後は備え付けのコントローラだけの操作になります。パドルに触れても無反応です。なので、パドル側にあるボタンでスタートしないといけません。

 

VSモードは戦略性がなかったり、冗長だったり、ゲームとして、面白味に欠けます。

PONGの現代版を作ったら面白くなるのでは?!

と、大いに期待したら、思い切り肩透かしを食らわされました。パドルが2人同時プレイに対応しているのは、このVSモードだけです。

実にもったいない出来。

 

あと、DualShock2のアナログスティックでも遊べるように対応しました。

バウスを少しだけ動かすというのが、やりにくい。一気にズドンと動いてしまいます。

しかし、アナログの感度を落とすと、デジタルのコントローラと同じになってしまいます。やはり、ツマミで動かしたいところです。

 

nicotakuya.hatenablog.com

nicotakuya.hatenablog.com

XE-1AP互換品を作ってPCエンジン版「アフターバーナーII」を遊ぶ

値段が高すぎる「XE-1AP」の中古品にブチ切れてスタートした「XE-1APの互換品を作る試み」。その後、「12種類に対応するパッド変換器(12way pad converter)」という万能パッド変換器のプロジェクトに統合しました。

1年半くらい続いていて、まだ完成していません。

 

メガドラ版「アフターバーナーII」をアナログモードで遊ぶことには成功していたので、今回はPCエンジン版「アフターバーナーII」をアナログモードで遊んでみました。PCエンジン側はXHE-3を中継したXE-1APとして認識します。

操作は以下のように割り当てました。

・R1→A(空対空ミサイル)

・R2→B(バルカン砲)

・START→START

・右スティックY→スロットル(スピード)

・左スティックX&Y→スティックX&Y(上下左右移動)

 

PCエンジン版「アフターバーナーII」はハードの限界を超えてて、奇跡のような出来。本作について、ファミ通(1991年2月22日号)で「ぜんぜんおもしろくない」と書かれていたんですが、あれは一体、何だったのか?

PCエンジンアフターバーナーIIがアナログパッドに対応している」ということは、説明書には載っていません(スタッフクレジットに「ANALOG DRV」の文字だけ載ってます)。変換器を使えばサイバースティックでも遊べますが、あまり大っぴらに宣伝してないと思います。

(2022/7/11追記。「PCエンジンFAN」1990年12月号を読むと、アウトランが変換器+サイバースティックで遊べるというプレゼント企画が載ってました。)

 

公式で認めているのはXE-1APだけです。変換器のXHE-3が発売されたのは1992年なので、XE-1APを持っていてもPCエンジンで使えない、という地獄のような期間が1年以上続いていたことになります。

 

www.youtube.com

 

最初、アフターバーナーIIをプレイしたら、スティックのX軸とY軸が入れ違って動いてしまって、そこで、自分の資料にミスがあることを発見(1年半ぶり)。

過去に作ったプログラムも全部X軸とY軸が逆になってて、あわてて直しました。なんともお恥ずかしい限り。

 

ちなみに「アフターバーナーII」の開発はビッツ・ラボラトリー。プログラマさんはサターンBASICと同じ人です。

 

話を戻すと、「12種類に対応するパッド変換器」は回路図なしで、いきなり基板を作ったら、干渉したり、パターンのミスがあったり、問題点が噴出しまくってました。このまま、素材ゴミになるところを、ドリルで復活。

この基板の代金で、XE-1APが買えます。

 

プレステ用のコネクタは、Kingworldさんの「2pcs Black 9 Pin 180 disgree Female Connector Game Controller Socket Slot for PS2 Console for playstation2 accessory」というのを買ってみました。価格は2組セットで136円+送料。端子の素材が良くなくて、うまくハンダがくっ付きません。

 

秋月で580円で買ったOLED(SSD1306)を搭載。応答性が良いです。モノクロ128x64pixelなので、VRAMを確保するだけで1KBも使ってしまいます。

自作の8x8pixelフォントを二倍に拡大して表示しています。

 

対応するパッドの数が増えてしまって、14だったり15だったりするので、「Multiway pad converter」と名称を変更しました。

メガドラ6ボタンパッド、アルカノイドコントローラ、クレイジークライマー専用コントローラ、セガマウスの互換品作りもこのプロジェクトに統合しています。

最新版のファームウエアと回路図はこちらで公開中。

github.com

Arduino Pro miniがあれば動くので、ブレッドボードで再現することも可能です。

 

関連

nicotakuya.hatenablog.com

nicotakuya.hatenablog.com

nicotakuya.hatenablog.com

Atmel Studio7からMicrochip Studio for AVRへの移行

AVRマイコンの開発環境は「AVR Studio4」→「AVR Studio5」→「Atmel Studio6」→「Atmel Studio7」と目まぐるしく変わってます。

最新の開発環境は「Microchip Studio for AVR」です。買収されて、Atmelの名前が消滅しました。

 

「Microchip Studio for AVR」は「Atmel Studio7」で作ったプロジェクトを読み込む機能が付いていますので、問題なく移行できる、、、かと思ったら、ビルド時にエラーが出てしまいました。

 

f:id:nicotakuya:20210617031317p:plain

タイムアウトエラー

そこで、「ATmega_DFP 1.2.132」というパッケージのダウンロードを試みたのですが、タイムアウトエラーが出て、何度やってもダウンロードが完了しません。

「microchip studio Pack Manager timeout error」で検索したら、同じトラブルを抱えてる人が居て、それによると、以下のページから、パッケージをダウンロードすると良いそうです。

 

packs.download.atmel.com

 

f:id:nicotakuya:20210617031344p:plain

Pack Managerでファイルの追加

「ATmega_DFP 1.2.132」を手動でインストール。

 

f:id:nicotakuya:20210617031413p:plain

ビルドに成功

無事にビルドできるようになりました。いったい何だったんだ?

Arduinoに慣れてしまうと、この開発環境が面倒だと思ってしまいます。

以上のトラブルは1年半くらい前に自分が遭遇した現象なので、すでに解決されている可能性があります。

 

(1年半ぶりに)今、Pack Managerで確認すると、ATmega_DFPのアップデートがあったので、インストールしてみました。今回は、エラーはなく、無事にダウンロードできました。

アップデートの効果は不明です。

 

f:id:nicotakuya:20210617124544p:plain

XC8をアンインストール

あと、Microchip Studioをインストールすると、「MPLAB XC8」というCコンパイラが一緒にインストールされますが、100%いらないです。アンインストールしました。

 

セガマウス互換品の自作

まだ開発途中ですが、「セガマウス」として認識するパッド変換器を作ってみました。需要が全くないので、たぶん世界初の試みです。

 

www.youtube.com

 

セガマウス」というのは、その昔、セガが発売したメガドライブ専用のマウスです。あまり出回っていないのか、中古品はプレミア価格になっています。

 

[セガハード大百科] メガドライブ対応ソフトウェア(セガ発売)

公式ページの情報によると、セガマウスの対応ソフトは全部で15本

そのうち、メガCD用のマウス対応ソフトはこちら。

  1. ライズ オブ ザ ドラゴン
  2. シムアース
  3. スイッチ
  4. 笑ゥせぇるすまん
  5. 夢見館の物語
  6. モンキー・アイランド ユーレイ海賊大騒動!
  7. マイト アンド マジックⅢ
  8. 真・女神転生
  9. ダンジョンマスターⅡ スカルキープ
  10. うる星やつら ディア マイ フレンズ
  11. スターブレード

カートリッジ形式のマウス対応ソフトは以下の通り。

  1. マーブルマッドネス
  2. 信長の野望 全国版
  3. 雀皇登竜門
  4. ロードモナーク とことん戦闘伝説

、、、たった4本。少なすぎる。ここで、一番有名なのは「マーブルマッドネス」ですが、結構なプレミアソフトです。

この他、海外のGENESIS用でマウス対応のソフトがあるかもしれません。

 

f:id:nicotakuya:20210124224759p:plain

雀皇登竜門

動作チェック用として「雀皇登竜門(1993)」を買ってみました。セガマウスに対応させる遊び心が、さすがゲームアーツという感じ。

 

セガマウスのプロトコルはSGDKの「joy.c」が参考になります。おそらく、世の中にある資料はコレしかないです。

1フレームあたりに、メガドラに対して、10ニブルを送ればいいだけなのですが、、、

 

ソースを読んでいると、ポートの入出力を変更している箇所を発見。

なんと、セガマウスの通信時に限り、ゲームパッド用ポートの9番ピンが出力(メガドラ→マウス)に変わります。通常時は入力です。間違って信号が衝突したら回路が壊れそう、と思うかもしれませんが、それを見越してか、メガドラ本体の9番ピンと7番ピンには抵抗が入っています。

 

joy.cを元にタイミングチャートを書いてみました。同期の方法が複雑です。

最初の2ニブル(0x0、0xB)でメガドラは接続デバイスが「セガマウス」であると判断できるようです。

2ニブル目の最初だけ7番ピンの変化を合図に送信します。

それ以降は9番ピンの変化を合図に送信します。

6番ピンを反転する(9pinと同じ論理にする)ことで、データの格納が終わったことを伝えます。実際に試した感じでは、データ格納から1マイクロ秒くらい待ってから、反転しないとデータ化けが起きてしまいます。

7番ピンは得に役割が無くて、それなら、7番ピンと9番ピンは1つにまとめることができるのでは? と思ってしまう。これだけだと謎ですが、マルチタップへの応用を考えた仕様だと思います。

 

SGDKに付属する「joy-test」というサンプルプログラム。これをROMに焼けば、実機でセガマウスを検出できます。SGDKのデバイスドライバは優秀で、マウスの認識も自動的に行ってくれます。マウスカーソルの累積的な座標を自動的に算出してくれます。

megamouse」に誤植しているのはご愛敬。、、、って、思ったら、GENESISだとMegamouseが正式名だそうです。

 

変換器を使ってみた感じでは、デュアルショック2のアナログレバーだとマウスカーソルは操作しにくいです。ゲームパッドじゃなくて、マウスで入力できたらいいですね。当たり前ですが。

 

nicotakuya.hatenablog.com

nicotakuya.hatenablog.com