さて、今回、P6イースを作るに当たっての最大のテーマが、
「スクロールスピードの高速化」でした。
ドルアーガのmkII版を作ってみて、
改めてP6mkIIのVRAMアクセスの遅さを思い知ったわけですが、
イースを作るに当たって、スクロールというのは
どうしてもクリアしなければならない問題点でした。
ドルアーガは、何も考えずにスクロールさせていたのですが、
とりあえず、常套手段である「セル単位での差分書き換え」を試してみました。
簡単に言うと
AAAAB
BBBAB
AABAB
↑これが左に1セル分スクロールすると、
AAABB
BBABB
ABABB
↑こうなってほしいわけですが、実際に書き換えが必要なのは
AAAXB
BBXXB
AXXXB
↑ここの X の部分だけということになります。
イースの場合、
街のマップに使われているパターンはそれほど多くないため、
書き換える部分はかなり少なくて済むので、
mkIIの割にはなかなかの速度でスクロールしてくれました。
…が、やはりどうしても書き換えている所が見えてしまいます。
これを許すかどうかは悩んだのですが、
「見た目重視」がポリシーである以上、
これはやはり隠さなくてはならないだろうと。
というわけで、
画面およびマップデータ用ワークエリアを2枚使い、
ダブルバッファで表示することにしました。
PAGE2とPAGE3を切り替えながら、
PAGE2を表示しつつPAGE3を描画、
PAGE3を表示しつつPAGE2を描画
ということを繰り返すことで、
書き換え動作を見えないようにしました。
もちろん、グラフィック画面を1画面しか使わずに
シングルバッファで描画することにすれば、
メモリ的には一気に余裕ができるので、
サラ以外の店にも入れたりするかもしれませんが、
そこは割り切って、見た目のクオリティーを上げることにしました。
こうして、スクロールルーチンが完成し、
アドルがはじめて街の中を歩いたときは、
作っている本人もちょっと感動しました。
次回は、重ね合わせのあたりのお話を。