SSパッド->X68変換器を作ってみる(その7)

MD3ボタンモードを修正した。
SSパッドのボタンスキャンタイミングを動的に変えるようにした。


ゲームパッド変換器は、一定期間のループ毎に、変換元パッドからデータを読み込んで変換し出力する。
そのループ期間は、ゲームのメイン処理の真っ最中は、VSYNCから次のVSYNCまでの大体1/60秒で一定している。
しかし、ゲーム開始前のパッドタイプの検出、スタート画面やコンティニュー画面、エンドロール後の入力待ちなどでそのルールから外れることがある。
その時に1/60秒のタイミングで決め打ちしたルーチンだと、X68側からのトリガを見逃す場合があるので、変換元データ取り込みから変換後出力までをウェイトを入れないようなプログラムにする必要があるが、そうすると今度は取り込んだSSパッドのデータが最大1/60秒近く前に取得したデータになり、それはそのまま入力遅延となる。


どちらの場合でも対応できるようにする為に、インターバルタイマ割り込みを使って、データ出力待ちの時間が16msec以上経過した場合、再度SSパッドからデータを読み取るようにした。
1/60秒は16.6msecなので、0.6msec前に再度出力データを更新することで、遅延を最小化できる。



我ながら良く出来ました。
MD3ボタンモードがある程度完成したので、そろそろブレッドボードから外して基板作ります。


6ボタンモードは諦めました、HDDのコンデンサ変える修理をし、ゲームをインストールし、起動が速くなってテストがしやすくなってから作ります。