SDスナ解析 1. 2. 3.
スナッチャーにもバグ?
エミュレータでゲームをすると画面や動作が変になる、そんなゲームを解析すると
実機依存型のバグが見つかってしまうのです。
例によって私はVDP、VRAM関係はわかりません。
ゲームの途中でVRAMをセーブして、エミュレータとMSX実機でのVRAMの
違いから推理しただけです。
コナミのプログラマさん、私の推理が違っていたらご免なさい。
バグだと思うところは・・・
スナッチャーのメインルーチンは、C000h〜D1FFhあたりかな。
CDB7hにVDPコマンドHMMVルーチンがあります。HL,BC,D,Aレジスタに値を設定し
てコールするようです。ところが Dレジスタの設定をしないままHMMVルーチンをコ
ールしているところがあるのです。
プログラムの流れで、Dレジスタには66hが入っていますが、DレジスタはDYの上位
設定に使われるので、ビット0,1だけが有効みたいです。
そうすると D=02h になるような気がしますが、実機では D=00h になるようです。
それでMSX実機では問題は発生しません。
エミュレータでは・・・
スクリーン7を使うと、VRAMのF800h〜FBFFhあたりはスプライト関連に使われ
るのでしょうか。
F800h〜FFFFhにVDPコマンドHMMVで00hを書き込んでいる所があります。
Dレジスタの設定をしていないところです。それでVRAMのこのアドレスがクリア
されず、画面にゴミが出ることになります。
私の推理、どうでしょう。詰めがあまいかも知れない。
戻る
トップページに戻る