セガマークⅢ:STM32F103+プレステ2のコントローラーでSDIを何とかする(+阿修羅)


セガ・マークⅢ版のSDIですが、当時操作性の悪さでなかなか先に進めず諦めてしまいました。
そこで、プレステ2のコントローラーを使って何とかできないか試してみます。

要件としては ATmega8 で事足りるのですが、CubeIDEの使い方を覚えるという目的でSTM32を使います。
プレステ2のコントローラーは本来3.6V駆動なので、3.3Vレギュレータを搭載している中華 STM32F103C6T6 とは相性がいいのです。

とりあえず、過去にボツになったものから部材を流用しました。
セガ・マークⅢのコントローラーはシリアル通信用のD-Sub9ピンでは刺さらないので加工する必要があります。
ATARIケーブルコネクタならしっかり刺さるのですが、結構いい値段なので勿体なくて今回は使いません。
また、1P、2P両方にケーブルを使うので、スイッチが付けられなくなりました。
筐体の方は、使わないLED穴やスイッチ穴を隠すようにラベルを貼りました。

ソースコードのほうは、大したプログラムではないので廉価版の F103C6T6 であるにもかかわらず、RAMで16%、ROMで20%ほどしか使っていません。
これなら無理に F103C8T6 とか F411 など上位チップを使うまでもありませんね。

今回も簡単なので、サクッと動く...と思ったら意外と苦戦。
やはりfor文によるMicroDelayの代用では、プレステ2のコントローラーの同期ができず入力情報を取得できません。
SPIを使うほうがいいみたいです。
それでも何とか数値の調整で操作できるようになったのですが、今度は2Pの左右が動きません。
テスタで導通を確認したり、プログラムを何度も見直したのですが原因が分かりません。
結局、2Pの左右に割り当てたPB12/PB13ピンが使えないことが判りました。
Arduino STM32の時はブートローダーを使わなければデバッグピンとUSBピン以外は全て使えたのですが、Cubeでは色々と「隠し使えないピン」があるみたいです。

2Pの左右のピンをPB8、PB9に置き換えて、やっと完成です。
苦労しました。

それではSDIをプレイします。
FM音源対応なのでマスターシステムなら迫力サウンドだったのですが、残念ながらマークⅢなので音楽がしょぼいです。
初めは苦労したものの、衛星本体を方向ボタン、照準をスティックで操作すると一番プレイし易いようです。
ただ、RF出力による表示なので画像が悪く照準を見失います。
それでも何とか、当時では行けなかった土星まであっさり進みましたが、機械惑星でさすがに攻撃が激しくなり現在の私の腕ではゲームオーバーです。
当時コレがあればもっとやり込めてたんですが...。

せっかくなので、阿修羅モード切替も作ってみました。
一度に2人を同時に操作します。
でも、さすがにこれは失敗ですね。
全然先に進みません。














戻る