シーン8 イースが左から出てくる
雲の部分はスクロールしません。スクロールするのは、イースの部分だけです。
なので、ハードウエアスクロールが使えません。ソフトウエアスクロールです。
最初、ハードウエアスクロールで、普通にやって、「あれ? なんかおかしいぞ?」って、思ったのは、内緒です。(^^;;
まず、一枚絵と、イースの部分に分割します。
背景の、一枚絵です。
セル分解します。(同じ部分は、一つにまとめるので、メモリー効率がよくなります。)
イースだけ切り出しました。イースは、128x80ドットあります。
右端から、ちょっとずつ表示されます。
それを90度右に回転します。
そして、一番下のラインから順番にベタデータ化します。
イースは、ベタイメージです。順番に表示されていくので、圧縮していません。
PC-6601SRは、パックドピクセルなので、1バイト=1ドットです。
スクロールするのに、シフト命令は使いません。LDDRで、1バイトずつ、ずらします。
イースの高さの分だけ、右に1ドット(1バイト)スクロールします。
- 右に1ドットスクロールする
- 左端にイースのデータを書き込む
というのを、128回繰り返します。
[追記] 2012/2/23
どうも、遅く、うねうねうねうね。。となってしまうので、Z80の命令を最適化しました。(LDDR命令ではなく、LDD命令を184個並べてみました。。汗)
よく、使われる手ですね。回数が分かっていて、メモリーに余裕があるときしか使えませんが。
すこしだけ、ましになったような気がします。。(^^;;
もうちょっと、改善できないか、考え中です。