ひとしれずひっそり

主にソフトに関することをメモしていきます。過程をそのまま書いていたりするので間違いが含まれます。鵜呑みしない様に。

Space Invaders(11) - ビーム処理 3

RAMの0x2025で処理が分かれていて2まで説明した。

が、2の続きがあってビームが当たった場合alienIsExploding(0x2002)に当たり判定の結果を書き込んで終わっている。 0x2025を3にする処理がないので、爆発の表示をするところでされるのではないかと思われる。これはまた後で調べよう。

3の場合

EndOfBlowupが実行される。

https://computerarcheology.com/Arcade/SpaceInvaders/Code.html#EndOfBlowup

  • まずは前回のビームの消し込みをしている。
  • 0x1B25からの7バイトを0x2025にコピーしていて初期状態に戻されている。つまりビーム処理はこれで終了になる。
  • 次はここで説明したUFOの得点を進める処理がされている。 katsuyoshi.hatenadiary.com
  • ビームのショット数を一つ進めている。
  • saucerActiveが0でなければ処理を終了している。UFO出現中の判定と思われる。
  • saucerActiveが0の場合はビームのショット数が奇数か偶数かで次の値をセットしている。
    • 偶数: 0x208A <- 0x8A, 0x208C <- 0x02
    • 奇数: 0x208A <- 0xE0, 0x208C <- 0xFE
    • 0x208Cは速度と思われ偶数なら左から右へ、奇数なら右から左へ移動となりそう。
    • 0x208Aは現時点では何をするためかは不明である。

5の場合

  • 何もせず終了している。
  • コメントからはエイリアンの爆発中を表していそう。

4の場合

  • 5の比較で5でなければの処理が4に相当すると思われる。
  • ここでもEndOfBlowupが処理されてビームが終了となる。
  • まだ分からないが 3で終わる場合と5->4の遷移で終わる場合があるのではないかと予想される。