TINY野郎のブログ -2ページ目

TINY野郎のブログ

PC-6001、MSX、ぴゅう太など、昔のPCが大好きな人のブログ。

ブランクなどなかったかのように突然続きを書いてみます(笑)
 



続いては、ダームの塔からアドルが天空に発射されるシーンについてです。

オリジナルのMSX2版はこんな感じです。
イメージ 1

これを元に、P6版のデータは、容量を削減するために左右を少しだけ削り、また、中心のアニメーションする部分を4ドット(1バイト幅)に収まるようにして、書き換え面積を減らしました。
イメージ 2

よく見ていただけると分かる通り、中央の部分はプログラムで同じパターンを繰り返しVRAMに書いているだけです。アニメーションとはいえないほどショボいですが、とにかくメモリとの戦いだったので、この辺りは割りきって削減しました。

ちなみに、最初のフラッシュは、お得意のXORです(^_^;)

イメージ 3

イメージ 4

 


 


次は、上空をアドルが飛んでいることを連想させる高速アニメーションシーンです。
イメージ 5

高速でアニメーションをさせるためには、書き換える部分をできるだけ減らすことが重要なので…

最初は赤枠の部分だけアニメーションをループして…
イメージ 6

途中から水色の枠の部分のアニメーションが始まるようにしています。
イメージ 7
いくら遅いP6といえども、これくらいの面積の書き換えであれば全く問題ないのでした。


続いて、イースの国が横に2ドットずつスクロールしていくシーンです。
イメージ 8

このスクロールは、Z80のアセンブラ命令「RLD(Rotate Left Digit)」を使っています。
A = ○○○○××××
(HL) = △△△△□□□□

RLD命令実行

A = ○○○○△△△△
(HL) = □□□□××××


RLDは、2進化10進表現(10進数の数字1桁を、そのまま16進数の1桁として表す方法)の桁シフトとして使われる命令ですが、HLレジスタが示すアドレスの内容を4ビット一気にシフトしてくれるので、P6のSCREEN3でこれを使うと、VRAMを簡単に2ドット単位でスクロールさせることができます。

スクロール部分のアセンブラソースはこれだけです。
イメージ 9

また、右端の2ドットは何も触っていないので、シーン後半を良く見てもらえれば、右側数ドットには同じデータがコピーされていることがわかると思います。

イメージ 10

スクロールしながらキラキラが飛んで行くところは、見ての通り、描画も消去もXORで行なっています。
XOR描画は見た目的にはあまり美しくないのですが、タイトル画面の「NOW LOADING」と同じく元のグラフィックデータを保持するメモリがないことと、処理速度を稼ぎたいということで、そうしました。

 


 


…という感じで、今日はこの辺りまで。

また気が向いたら続きを書きたいと思います。

質問などがあれば、このブログのコメント欄…
…は滅多に見ないので、できればTwitterで @tiny_yarou までお願いします!