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の遷移で終わる場合があるのではないかと予想される。