スクロール関連


部屋のスクロール設定を変更する


部屋のスクロールを編集しようとした時、タイトルバーにこんなメッセージが表示されて
変更できない場合があります。



...のあとさらに、Most likely, your Scroll Pointer is either 0000 or 0001.と続きますが
これは部屋での細かいスクロール設定がなされていない事を表します。

このような部屋のPointersを見てみると
Scrollのポインタが0000もしくは、0001に設定されているはずです。



0000では全てのスクリーンが青、0001では全てのスクリーンが緑になります。
この設定は、隠し通路を作りたい時などに不向きなので
未使用領域を使ってスクロール編集ができるようにしてみます。





Scrollのポインタが0000で、スクリーンが4枚ある部屋の
スクロールを編集できるようにしてみましょう。

スクロールの情報は78000~7FFFFの範囲に書かれています。
バイナリエディタでロムを開き、7E9A0にジャンプします。
スクロール情報はスクリーン1枚につき1バイトで、以下の3通りです。

  • 00 = 赤
  • 01 = 青
  • 02 = 緑

スクリーン4枚分の情報が必要なので、7E9A0から4バイトを00に書き換えます。



書き換えたら保存して、ファイルを閉じます。
SMILEで目的の部屋を開き、Scrollのポインタを頭7取ったE9A0に変更します。



変更したらSave Pointers→いいえと押します。



これで細かいスクロール編集ができるようになりました。
あとは各スクリーンを希望の色に変更するだけです。



さて上記手順を踏んだあとに部屋のサイズを大きくすると、どうなるでしょうか。



縦を3にして、6スクリーンになりました。
ですが、増えたスクリーン2枚のところにはスクロールの色が表示されていません。
クリックすれば色が付くようなので、増えた2枚も赤にしてみましょう。



これをセーブして、バイナリエディタでさきほど書き換えた場所を覗いてみます。



書き換えたのは茶色で囲った4バイトでしたが、灰色で囲った2バイト分増えて
6バイトが00になっています。
これはさきほどクリックして色を付けたスクロールの情報2バイト分が
上書きされたためこのようになりました。

スクロール情報はポインタで指定されたところから
部屋のスクリーン分だけ問答無用で読み込まれます。
03以上が読み込まれた時には、SMILE側で判別不能なスクロール情報になるので
色がつきませんが、プレイする上では全て緑として扱われるようなので
フリーズしたりすることはありません。

細かいスクロール設定のある部屋を広げた際
色が表示されないスクリーンがでてくる状況がほとんどだと思いますが
そのまま色を付けてしまうと、大体他の情報を壊してしまいます。
色が表示された時でも、後ろに続く別の情報がたまたま00~02の場合がほとんどなので
編集しないようにします。

既存の細かいスクロール設定がある部屋を広げた際は、未使用領域に
スクリーン分の情報を新しく用意した上で、ポインタを変更しましょう。

また部屋を狭くした時は、読み込まれる情報が少なくなるだけなので
問題なく編集できます。