SSパッド->X68変換器を作ってみる(その5)
本日はMD6ボタンパッドのルーチンを作ってみました。
全然動かない。
あと6ボタン対応ゲームはディスク枚数が多くて、起動に時間がかかりすぎ、いちいちテストをやってらんない。
データ出力のタイミングがズレてるらしく、小パンチ(Xボタン)連打になったしまう。
XYZは三回目のLエッジのあと出力するんで、その前の出力したデータによってX押下となってるくさい。
ウェイトもいれていないので、どうも4MhzPICだけではMD変換は厳しいってことみたいだ。
20MhzのAVR MEGA88に移行しプログラム書きなおそうかと思い、ざっとpdfファイルに目を通し、ピン変化割り込み時のタイミングチャートを見てみたけど、あまり芳しくない。
AVRは、ピン変化を検知してから割り込みが入るまで4クロックを要し、その後に割り込みベクタのアドレスにジャンプなので、picよりも応答性能は8クロック以上はよい*1わけだけど、結局のところピン変化後〜割り込みが入るまでに4クロック遅れることにはかわりがない。っていうかほとんど全てのマイコンでも似たようなもんだと思う。
上の割り込み時のCPUの一連の動作の後で、ようやく記述した割り込み処理を行い、割り込みから抜け、ピン変化が変わるのを待って再度割り込み待ちという処理を8回繰り返すのだけど、X68はそんなの待ってくれずLHLHLHLHと連発してくる。
そういや、市販でもSS/PSパッドのMD変換器がない。無理だったんだな。
どうしてもってなるとと外付けのステートマシン用意するってことになるのかな??
100円500円ですまなくなってくる。ヤメヤメ。
3ボタンモードの対応だけなら出力に74HC157を付け、8bitのデータのうち4bit切り替えれば、バンク切り替えのタイミングの厳しいところはハードが解決してくれるので、全く問題なくなる。
でももともと欲しかったのはMD6ボタンパッドであり....ああもう面倒くさい。
CPSファイター->MD変換機の仕様とかどっかにおちてないかな。
*1:加えてAVRはPICと違って1クロック1サイクル、同クロックなら単純に4倍速です