Joystick 入力 つづき

BIOS入力では。。

  • CPUが、SUB CPU に、コマンド6を送る
  • SUB CPU は、JOYSTICK 入力されているかどうかを、調査する
  • CPUは、その間何もせずに待っている
  • SUB CPUは、CPU に割り込みをかける
  • CPUは、割り込みルーチンで、データを受け取り、(FECAH)にデータを書く
  • CPUのメインループが、データが来たのを検知して、ループから抜ける。

ということだったが、割り込み許可状態ならいいけど、割り込み禁止状態だとどうなるか。。


mk2以降は、BIOS ROMが常に見えているわけではないです。BIOSの裏にVRAMがあるので(0000h-7fffh)、VRAMにアクセスするときは、バンク切り替えしています。


割り込みルーチンは、通常はBIOS ROMにかかれているので、裏VRAMにアクセスするときは、あらかじめ、割り込み禁止にしておかないといけません。。。PC-6001よりも、割り込み禁止にする頻度は高そうです。


割り込み禁止中 何もできないと、ゲームが遅くなるので、割り込み禁止中でも、Joystickの入力を知る方法はあるようです。
SUB CPUに、直接聞くという方法です。

  • CPUが、SUB CPU に、コマンド6を送る
  • SUB CPU は、JOYSTICK 入力されているかどうかを、調査する
  • CPUは、SUB CPUのステータスをチェック。。
  • CPUは、SUB CPUから、割り込みのベクタアドレスを取得 (16H)
  • CPUは、SUB CPUから、STICKのデータを取得
  • SUB CPU は、割り込みの予約を、取り消す。


という風になるみたいですね。。

割り込みのベクタアドレスというのは、割り込み処理へのポインタ配列の、添え字のことです。
データだけ渡されても、何のデータなのか、分からないので、わかりやすいように、してくれていると思えばいいでしょうか。。



ボンバーマンのプログラムを解析していたら、確かにそうなってますね。。
すごいです。。


ただ、上記の動作をすぐにやっても、だめみたいで、ある程度時間をかけないと、だめらしい。。
SUB CPUが調べている振りをして、BUSY,BUSY,BUSY,.......READYと返すとか。。


ハドソン系すべて、動くようにするのは、最大の目標だけど、とりあえず、一つだけでも動くようになればなぁ。。とか思ったり。。(汗)


なんか、ゲームによって、タイミング等が違うので、こっちが動いたら、こっちが。。。。orz
ということが、よくあるらしい。。(汗)