ゼビウスのギドスパリオ破壊時の赤い豆腐
ギドスパリオの破壊アニメーション処理では、4色オブジェクトのキャラクタ番号4〜7を表示するにあたり、描画の2フレームに1回アニメーションパターンを進めている。
2015-10-13 19:38:39カウンタを2で割った値に4を足してオブジェクト番号を生成するところで、2で割るのにrrca命令を使っているため、カウンタが奇数の場合に最上位ビットが立って$84〜$87という値になる。
2015-10-13 19:38:544色オブジェクトは$00-$3Fまでしかないため、パターン番号に$84〜$88という値を指定することで赤いベタキャラクタが表示されてしまっている。オブジェクトコントローラ側の動きについては、そのうち調べるかも。
2015-10-13 19:39:28ちなみに、ナムコヒストリーVOL.1のゼビウス開発時は、4色オブジェクトで$40以上のパターン番号にはダミーのベタキャラクタを表示させている。20年前にも同じように調べ、前述のように実装していたのでした。ちゃんちゃん
2015-10-13 19:42:04あー、ギドスパリオの件、すっきりした。件のコードは、メインプログラムの $345d〜 で、問題となる rrca は $3464 ね。以上
2015-10-13 19:43:48スプライトコントローラ周りを確認。 4色オブジェ(4N)は32Kbit ROMなので、キャラクタ番号の6ビット目にあたるA12はない
2015-10-14 01:05:547ビット目はOBJデータのROM選択に使われていて、キャラクタ番号の7ビット目がHigh、オブジェクトタイプを指定するビットがHighだと4色OBJのROMの~CEがHighになり、どのROMの未選択状態となる
2015-10-14 01:10:54このときスプライトコントローラに入力されるデータは、3プレーンのうち2プレーンがHigh、1プレーンがLowとなるので、カラーテーブルの011(=7)がピクセルのカラーとなる
2015-10-14 01:43:58ギドスパリオのカラーテーブルは$26-$29で、$26-$28のカラー011(=7)は透明、$29は赤色なので、ちらっとだけ赤色の豆腐になるということか
2015-10-14 01:44:12私が勝手に調べて勝手に書いたことなので無保証。信じるも信じないも自由。間違ってるじゃん、どうしてくれるんだ!とか言われても知らんw
2015-10-14 01:57:11ゼビウス ギドスパリオの件、rrcaの後にand 07hを入れ忘れたのか。他ではrrcaの後にandが入っているため、ただの書き忘れバグ(and 03hが抜けているという説もあるが、その直後のcp 04hが無意味なので07hが正解)。該当コードはCPU1の$3464ね。
2015-10-19 01:59:31