P6イースの作り方(4) マップについて  | TINY野郎のブログ

TINY野郎のブログ

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

さて、今回、P6イースを作るに当たっての最大のテーマが、
「スクロールスピードの高速化」でした。

ドルアーガのmkII版を作ってみて、
改めてP6mkIIのVRAMアクセスの遅さを思い知ったわけですが、
イースを作るに当たって、スクロールというのは
どうしてもクリアしなければならない問題点でした。

ドルアーガは、何も考えずにスクロールさせていたのですが、
とりあえず、常套手段である「セル単位での差分書き換え」を試してみました。

簡単に言うと

AAAAB
BBBAB
AABAB

↑これが左に1セル分スクロールすると、

AAABB
BBABB
ABABB

↑こうなってほしいわけですが、実際に書き換えが必要なのは

AAAXB
BBXXB
AXXXB

↑ここの X の部分だけということになります。

イースの場合、
街のマップに使われているパターンはそれほど多くないため、
書き換える部分はかなり少なくて済むので、
mkIIの割にはなかなかの速度でスクロールしてくれました。

…が、やはりどうしても書き換えている所が見えてしまいます。
これを許すかどうかは悩んだのですが、
「見た目重視」がポリシーである以上、
これはやはり隠さなくてはならないだろうと。

というわけで、
画面およびマップデータ用ワークエリアを2枚使い、
ダブルバッファで表示することにしました。

PAGE2とPAGE3を切り替えながら、
PAGE2を表示しつつPAGE3を描画、
PAGE3を表示しつつPAGE2を描画
ということを繰り返すことで、
書き換え動作を見えないようにしました。

もちろん、グラフィック画面を1画面しか使わずに
シングルバッファで描画することにすれば、
メモリ的には一気に余裕ができるので、
サラ以外の店にも入れたりするかもしれませんが、
そこは割り切って、見た目のクオリティーを上げることにしました。

こうして、スクロールルーチンが完成し、
アドルがはじめて街の中を歩いたときは、
作っている本人もちょっと感動しました。


次回は、重ね合わせのあたりのお話を。