セガ サターン 可変連射付きコントローラーの製作 for コナミアンティークスMSXコレクション


MSXのグラディウスシリーズですが、現在とんでもないプレミア価格になっています。
今さらこれらを集めるとお金がいくらあっても足りないので、サターン版のコナミアンティークスMSXコレクションを買いました。

ところが、いくつかプレイしたところで「コレ、連射ないとキツくね?」と思い、そのまま1年以上放置してしまいました。
で、ようやく重い腰を上げて、セガ サターン用に連射付きのコントローラーを製作することにします。

しかしこのゲーム、話によれば連射に結構ムラがあるようです。
それもそのはず、当時の8ビットパソコンではVブランク割り込みで入力処理など行っておらず、メイン処理でボタン入力を判定しています。
しかも、サターンでMSXをエミュレートしていますから、さらに入力ムラが発生します。
そこで、連射を可変にして状況に合わせて連射スピードを変えられるようにします。

まずは筐体です。
いつもの100円ショップのトレーです。
いつもバッキリ割ってしまうのですが、今回は穴あけ機があるのでうまく割らずに穴を開けられました。

次は基板です。
サターンのコントローラーは2ビットのセレクト信号で4つのボタンを4パターンに切り替えます。
純正コントローラーではロジックICで各ボタンを切り替えていますが、これをマイコンでやってみます。
要件としてはセレクタが変化してから2μsec以内にボタン状態を返さなければいけません。
いくらマイコンが高速と言ってもI/Oはどうしても遅いので普通は間に合いませんが、
PC-8801mkIIのキーボードの一瞬の光の矢を処理できたので、きっとうまくいくでしょう、多分、おそらく。

まずは、STM32F103でやってみました。
が、当然処理が間に合いませんでした。
メガドライブでも失敗していますから。

次は奮発してSTM32F401でやってみます。
ところが、これでもうまく動作しません。
セレクタが変化したにも関わらず、データを受け取ってくれません。
サターンは純正パッドの他にキーボードやメガドライブの3ボタン/6ボタンにも対応しています。
サターンはどのデバイスが繋がっているかは判断できないので、セレクタを変化した時に返ってくる値で判断しているようです。
しかしセレクタに対する値が間に合わないため、不正なデバイスと判断されてしまうようです。

試行錯誤の上、PC-8801mkIIのコードを見ていて気づきました。
GPIOA読み出し⇒GPIOA書き込みだと遅いのですが、GPIOAとGPIOBは同時にアクセスできるのでGPIOB読み出し⇒GPIOA書き込みだとほぼ遅延ゼロになります。
ということでピンアサインを変えることで2μsec以内に入力データを設定でき、見事マイコンを使ってセガ サターンのコントローラーを実現できました。

次は可変連射です。
ハードウェア連射を使うと信号の取り回しが大変なので、STM32のADコンバーター機能を利用してソフト的に連射スピードを変えられるようにします。
ところが、可変抵抗器を付けて動作確認しましたがうまく値が取れません。
色々と試行しているうちに、セガ サターン起動しなくなるし。
これについては【起動しないセガ サターンの復活、電源コンデンサの交換】を参照。

なんとかサターンを復活させ、再度挑戦。
やっぱり値が取れません。
まさか可変抵抗器が壊れたのか、と半信半疑で新しい可変抵抗器に変えたらあっさり値が取れるし。
やっぱりさっきの不具合で壊れたのかな?

今度は値の範囲を確認していたらSTM32のLED消滅。
なんでじゃー
どうしてじゃー
と思ったら、可変抵抗に3.3V Vddを供給していたら5V⇒3.3Vのレギュレータがぶっ壊れたらしい。
そう言えば、マイコン側の3.3Vは外部に繋いじゃ駄目だったの忘れてた。

ここまで来たら止めるわけにもいかないので、なけなしの新しいSTM32F401を投入し、再挑戦。
今度は5V Vddを直接可変抵抗器に接続し、動作確認OK。
最後にラベルを貼って、無事製作完了です。

つーかーれーたー。
もう1回同じものを作れと言われても、もう無理ですね。

それではプレイしてみます。
パロディウス
グラディウス2
沙羅曼蛇

難しい...。
MSX版ってこんなに難しいんだ。
というか、もう老いたのかな。
クリアできる気がしねぇ。

秒間14~16連射ぐらいが丁度良いようです。
そして、連射が最大限に生かされるゲームといえばコレ!
ハイパーオリンピック
...じゃなくてハイパースポーツ。
連射で楽勝です。

そういえば、キャラがみんがヒゲオヤジですね。
マリオ…?
いや、これコナミだろ。

グラディウスをプレイしていると、何だかレバーが斜めに入ってしまいます。
中華ジョイスティックだから精度が糞なのかなと思っていたら、ジョイスティックを固定する穴を目測でドリルで開けていたので、傾いていました。
糞なのは私の工作能力のようです。
プロのゲーマーだと、こういったオフセットのズレは0,1mmも許さないんでしょうね。




















戻る