SSパッド->X68変換器を作ってみる(その4)
タイトルはこの三日くらい頭の中をぐるぐると駆け巡る強烈な歌の歌詞です。久々にキテマス。
本日は、X68側でジョイスティックポートの状態を表示するプログラムを作った。
ATARI(FM-TOWNS)モードの表示用のJoyView.xと、メガドラ3ボタンモード用のJoyView2.xを作りました。
ショボイ"hello world"に毛が生えたようなプログラム
ただPCやPC-98でのtora.cと決定的な差があるとすれば、"asm()"構文が当たり前のように記述されることです。
デバッグ時に、いちいちゲームを起動していると時間も掛かるし、FDDもフロッピーヘタるしなので作ってみた。
今までは、何をするにもどんな機種でも必ず実機でアセンブラで作るのが基本ポリシー*1でしたが、PICでシミュレータ使ったついでなのでEX68のエミュレータ上でgcc+libcで作ってみました。
俺はいままでX68はkuro.asmしか書いたことがなく、スーパーバイザモードに移行するライブラリが何処にあるか分からなかったことが凄く困りました。しょうがないのでmike.asm同様のアセンブラの記述をasm()構文で書いて逃げましたけど、せっかくgcc使ってんだから小型のテストプログラム程度はasm()構文を使わずに作りたいものです。
処理フローは以下のようになります。
ループ開始
スーパーバイザモードに入る
VSYNC期間を待つ
VSYNC期間終了を待つ
8255のデータを読む
スーパーバイザモードを出る
取得データに応じて表示メッセージ更新
ESCキーが押されていたらループを抜ける
1/120秒程度待つ
ループ終了
基本的にゲームループの構造になってるので、キースキャンタイミングなどはそれほどおかしくないと思います。
あとex68使ってみて気がついたのですが、X68側のジョイスティックオプションににメガドラ3ボタンモードがない。
EX68のX68側ジョイスティックのオプションには、ATARI形式でAボタンとBボタンを同時に押した場合にCボタンとして認識する3ボタンモードがあるけど*2、メガドラ3ボタンモードはバンク切り替えだから違います。
他の"バンク切り替え拡張4ボタンモード"が、メガドラ3ボタンモード?でもきちんと表示できてないみたいだったけども..。
他にSEL/RUNがC/DボタンになったATARI拡張の4ボタンモードは、どうやら餓狼伝説同梱の4ボタンの魔法パッド*3らしいです。
これは速攻対応できるので、まずはこれから。餓狼伝説スペシャル用パッドはまずクリアと。
X68で使われてるパッドの種類と接続の詳細について何処にも資料がねぇ...と思ってたらこんなところにヒントがあるとは...。
とりあえず実機でテストは明日。
*1:というかさまざまなな機種ごとOS上からI/O叩いたり特権モードに移行する場合、Cでやるといろいろ方言というか機種特有のライブラリを探す必要があるのですが、それに辿りつくまでに丸一日かかったりするので、もう面倒くさくなって全部アセンブラでやるのが今までの俺
*2:そういや"パロディウスだ"もAB同時押しで菊一文字発動でした。ATARI用変換モードを修正すれば3ボタンで遊べるかな?
*3:X68の餓狼伝説スペシャルを作った会社で、もともとはアーケードの脱衣麻雀作ってたメーカーらしいんだけど、X68に参入するに当たって魔法株式会社に社名変更したとこのオリジナルパッドだから通称魔法パッドらしい。なにもキュウベェとかもうお母さんになってる元魔法少女の丹下は関係なくてうぐぐ