本節ではウィンドウについて述べる。
ウィンドウを表現するのに関わる構造的な構成要素について述べる。
アドレス $C30000
に次の表が示す型のオブジェクトが 190 個程度配列されている。
これらのオブジェクトが画面上に描画されるウィンドウの仕様を表現している。
表 5.28 構造体 $C30000
オフセット | 桁 | 属性 |
---|---|---|
#$00
|
#$001F
|
CX |
#$00
|
#$03E0
|
CY |
#$01
|
#$007C
|
SX |
#$01
|
#$0F80
|
SY |
#$02
|
#$0030
|
数値表示処理 |
#$02
|
#$00C0
|
入力解釈処理 |
#$03
|
#$000F
|
前回入力保存処理 |
#$03
|
#$0030
|
カーソル |
#$03
|
#$0040
|
グレーアウト禁止 |
#$03
|
#$0080
|
位置固定 |
#$04
|
#$0001
|
サイズ拡張方向 |
#$04
|
#$001E
|
ページ当たり行数 |
#$04
|
#$0020
|
サイズ固定 |
#$04
|
#$0040
|
生成時効果音再生 |
#$04
|
#$0080
|
カーソル効果音禁止 |
#$05
|
#$0007
|
マージン |
#$05
|
#$00F8
|
処理分類 |
#$06
|
#$00FF
|
兄弟ウィンドウ 0 |
#$07
|
#$00FF
|
兄弟ウィンドウ 1 |
#$08
|
#$00FF
|
兄弟ウィンドウ 2 |
#$09
|
#$FFFF
|
描画アドレス |
#$0B
|
#$00FF
|
実質未使用 |
各属性の意味を以下に記す。
画面の最も左上のドットからウィンドウの左上隅のドットまでの X および Y 方向についての変位を文字サイズ単位で表した値を取る属性だ。 ウィンドウが画面最も左上から描画されるときに値が (1, 1) であるものとする。
文字サイズ単位でのウィンドウ横幅および縦幅の寸法をそれぞれ値とする属性だ。 ただし、ウィンドウがその内容に依存して動的に大きさを決定する必要がある寸法については、 でたらめな値が属性値として定義されていることがあるので注意を要する。
具体的にはジャンプテーブル $C31ACC
の行番号を属性値とする。
具体的にはジャンプテーブル $C33BB7
の行番号を属性値とする。
この属性値はプレイヤーによるウィンドウでの何らかの入力を何らかの形式で保存する処理の分類とみなせる。 例えば仲間キャラクターの移動中じゅもんウィンドウで何かの項目を選択すると、 次に同一キャラクターのじゅもんウィンドウを開いたときにこの項目にカーソルがセットされているが、 この振る舞いはこの属性値の作用によるものだ。
具体的にはジャンプテーブル $C33BBF
の行番号を属性値とする。
ウィンドウにカーソルを描画するときには、そのカーソルの形状を表す値を取る属性だ。 値とカーソル形状の対応は次のようになっている。
ブーリアン型属性で、値が 1 ならばこのウィンドウが入力フォーカスを失っても、 ウィンドウ全体をグレーアウトする処理を省略することを示す属性だ。
ブーリアン型属性で、値が 1 ならばこのウィンドウを常に同じ位置に描画することを示す。 唯一値が 0 となっているオブジェクトは、移動時のメッセージ出力ウィンドウだ。 「はなす」および「しらべる」の際には、パーティーの画面に対する相対的な位置によっては画面上側に描画する。
ウィンドウが内容物によってサイズを拡張する場合に用いられる属性だ。 値が 0 ならば垂直方向(下方向)に、値が 1 ならば水平方向
ウィンドウが複数ページからなるときに、一つのページあたりの可変項目部分の最大行数を値とする属性だ。 例を挙げると、ルーラウィンドウならばこの属性値は 5 となる。
ブーリアン型属性で、値が 1 ならばこのウィンドウはサイズが固定されていることを意味する。
ブーリアン型属性で、値が 1 ならばこのウィンドウが画面に表示される瞬間に効果音 #$0050
を再生する。
「はい・いいえ」系のウィンドウオブジェクトの属性値が 1 となる。
ブーリアン型属性で、値が 1 ならばカーソル音 #$003D
を鳴らさないことを意味する。
このウィンドウがサイズ固定でないときに、ウィンドウ構成単位の可変長方向に対する寸法を文字サイズ単位で表した値を属性とする。 例えば「つよさ/ぜんいん」のマージン属性値は 5 となっている。 これは各キャラクターのスペースが 5 文字長(このオブジェクトは水平方向)であることを意味する。
ウィンドウ処理に関する各種ジャンプテーブルの行番号を属性値とする。
このウィンドウを描画するときに、同時に画面内に描画する別ウィンドウの ID をそれぞれ値に取る属性だ。 例えば「つよさ」ウィンドウはキャラクターリストが本体で、 同時にステータスウィンドウ、装備リストウィンドウ、属性値リストウィンドウを兄弟ウィンドウとして描画する。
ウィンドウの内容を定義するための処理コードのアドレスを値とする属性だ。
プログラムバンクは #$C3
固定とする。
全てのオブジェクトで値 0 が設定されており、プログラムからの参照もあるのだが、 用途が不明の属性だ。