雑魚的関連
気力しだいで全く新しい雑魚も作れます。
…でも、どうせ挙動を別物に変えるならボスの方を優先したいのに、それだけでかなりの労力。
ボスとほぼ同じ労力を要す雑魚を新規作成するのは相当な覚悟が必要です。
使う予定のないオブジェクトを潰して、仕掛け用オブジェクトを作るのが妥当なところですね。
392F0(+オブジェクト番号) オブジェクトの挙動・下桁
39270(+オブジェクト番号) オブジェクトの挙動・上桁
393F0(+オブジェクト番号) オブジェクトの特殊処理。
以下のような区別があります。
(詳しく見てないので実はよくわかってないですが)
00…タイムストッパーで止まらなくなる
01…通常オブジェクト
02〜 特殊なオブジェクトに使われてる傾向が多く、
メニュー画面からの復帰時に影響があるような。
別物のオブジェクトを作っている時に原因不明のリセットがかかるようなら
ここを疑ってみても良いかもしれません。
例によってオブジェクトの初期設定は他で書かれているので省略。
敵の動きも、武器と同じようにXによって管理されているので、
命令は BD XX XX で呼び出し、9D XX XX で書き込みを行います。
横速度や縦速度も武器とほとんど同様です。
違うのは、
武器はX=02〜0Fまでの昇順で割り振られ、
敵は1F〜10まで、降順になるように出現番号が割り振られます。
でも意識することはあまりないでしょう。
420+X 敵の状態(下に詳しく表記)
440+X 敵の部屋番号
460+X 敵のX軸位置・上桁
480+X 敵のX軸位置・下桁(計算上に使われるだけで、表示上は反映されない)
4A0+X 敵のY軸位置・上桁
4C0+X 敵のY軸位置・下桁
600+X 横速度・上桁
620+X 横速度・下桁
640+X 縦速度・上桁
660+X 縦速度・下桁
680+X 次のスプライトに切り替えるまでのカウント
6A0+X 表示するスプライトの番号
6C0+X 残りのライフ
420のビット単位の意味も似ています。
02と08の違いは、
02が立っていなければ"弾をすり抜ける状態(ジョーの弾など)"で、
08が立っていれば"どんな攻撃も弾く状態(ジョーの防御状態)"です。
80:存在するか?
40:右向きか?
20:不可視状態か?
10:(未使用っぽい)
08:無敵状態か?
04:重力の影響を受けるか?(壁に触れて動きが止まるわけではない)
02:被弾判定があるか?
01:ロックマンへの当たり判定はあるか?
※110+X、4E0+X、6EO+X はオブジェクトを出したときに00が設定されるので、
フラグのように使うことができます。
ルーチン
わかる範囲で書いてます。書いてあるのも間違ってる可能性が高いです。
オブジェクトの種類が武器より多いためか、武器のルーチンより幾分複雑な気がします。
本体が動かないオブジェクトでも、必ず毎フレーム 20 91 EF を呼ばないと、
画面外にスクロールアウトしても反対側からまた出てきてしまいます。
砲台系オブジェクトを作ろうとする場合は注意。
20 DE 81 … ボスラッシュのワープ装置を呼び出す
20 EC C8 … レーザーで使用。指定位置に画像出力する
20 98 EE … 移動処理/被弾処理/与弾処理
岩男がダメージを受けた場合、$01に1をセット
オブジェクトのライフが00になった場合、キャリーフラグをクリア。
20 91 EF … 動かさずに当たり判定と画面外判定だけする
20 CC EF … 岩男との向きと距離を見る(向きは岩男の方へ向く。$00に距離を設定)
20 EE EF … 単純に画面のオブジェクト存在チェック?
Aに判定したいオブジェクト番号をセットして呼ぶと、
存在無しでキャリーフラグがセットされる。
20 CF 96 … 敵を出せるか判定する($01に可能匹数を、Aに敵番号を指定する)
20 05 C8 … ボスを出す。
20 0A F0 … 壁判定。武器の20 AD F0と同じ。使い方も同じ。
…と思ったけど、雑魚でも20ADF0されてる・・・
20 75 F1 … 岩男の方を向く
20 52 96 … Aで指定した敵オブジェクトを画面から消す。
20 C0 CB … 壁判定?