4.19. 画面遷移

4.19.1. 構造に関する構成要素
4.19.1.1. 共通属性の意味について
4.19.1.2. 構造体 $FF8072: 階段
4.19.1.3. 構造体 $FF8D5A: 水平帯域
4.19.1.4. 構造体 $FFA02A: 垂直帯域
4.19.1.5. 構造体 $FFA0BA: 矩形領域
4.19.1.6. 構造体 $FFB692: 関所
4.19.1.7. 構造体 $C834FC: 目的地点
4.19.2. 振る舞いに関する構成要素

本節では画面遷移について述べる。 画面遷移とは、移動モードでパーティーが別の場所に移動したり、 イベント発生によって自動的にシーンが転換したりするときの画面の移り変わりのことだ。 移動モードから戦闘モードに、あるいはその逆になったりすることは本節の画面遷移の定義には当てはまらない。

4.19.1. 構造に関する構成要素

画面遷移に関係するデータ構造について述べる。 本節では多くの構造体を列挙しなければならないので、それらの関係について概略を示したい。

図 4.36 画面遷移に関するクラス図

画面遷移に関するクラス図

4.19.1.1. 共通属性の意味について

以降の各画面遷移構造体に共通して登場する属性について先に説明しておく。

フラグ

ブーリアン型属性値であり、値が 0 ならば既定の画面遷移を引き起こすことを示す。

空間最小単位

画面遷移オブジェクトが存在する空間最小単位の ID を値とする属性だ。 データとしては配列 $C815BF の添字を表す。 このデータについては 4.18.1.1 配列 $C815BF: 空間最小単位 で述べる。

座標配列

詳細不明ではあるが、全データで属性値がゼロであるため本書では今のところ考慮しない。

MX, MY

それぞれ画面遷移オブジェクトが位置する座標 X 成分と Y 成分を値とする属性だ。 座標系は M 系で表されている。これはキャラクターのサイズを単位系とする座標系だ。

型によっては X 座標属性や Y 座標属性が二つある。 この場合はその座標成分の組がなす区間すべてが画面遷移の発生判定に有効であることを意味する。

LV

画面遷移オブジェクトが位置する L 座標を値とする属性だ。 LV とは、同一画面内における仮想的な地面の高さを表現していると解釈できる。

例を挙げると、モンストル屋外の地面部分と宿屋の屋上は同時に描画される。 デバッグ機能のキャンセル歩行を利用して、地面部分から屋上に移動し、 そこにある階段に乗っても、言い換えると XY 座標を一致させても画面遷移が発生しないはずだ。 これは、パーティーと階段の LV 値が異なることによる。 パーティーの LV 値は地面部分の値と同じだが、 データを見ればわかるように、階段のそれは地面のそれと異なる。

屋根区域

画面遷移オブジェクトが属する屋根区域を値とする属性だ。 屋根区域とは、ダンジョン等でマップ全体を描画せず局所的に表示したり、 反対に隠したりする仕組みにおける、描画部分の単位のことだ。

目的地

階段、水平帯域、垂直帯域の各型については、 この画面遷移が発生すると移動する先の同型オブジェクト ID を値とする属性だ。 例えば、階段オブジェクト A の目的地属性値が指す階段オブジェクトを B とすると、 B の目的地属性値は A を指すという性質がある。

矩形型と関所型については 4.19.1.7 で述べるオブジェクトの ID を値とする属性だ。

効果音考慮

ブーリアン型属性値であり、値が 1 ならば画面遷移時に足音が鳴る。

演出

演出とは、画面遷移時に引き起こす視聴覚効果を指示する値を取る属性だ。

表 4.81 画面遷移演出

ID 演出
1 足音
2 落下 A
3 落下 B

4.19.1.2. 構造体 $FF8072: 階段

アドレス $FF8072 には次の 7 バイト長オブジェクト型要素が 0x1D8 個配列されている。この型は階段による画面遷移を表現するものであり、移動モードにおいて階段の絵を描画させるものだ。

表 4.82 構造体 $FF8072

オフセット 属性
#$00 #$000001 フラグ
#$00 #$0007FE 空間最小単位
#$01 #$000018 座標配列
#$01 #$003FE0 MX
#$02 #$007FC0 MY
#$03 #$000180 LV
#$04 #$00001E 屋根区域
#$04 #$01FFE0 目的地
#$06 #$000002 効果音考慮

4.19.1.3. 構造体 $FF8D5A: 水平帯域

アドレス $FF8D5A には次の 8 バイト長オブジェクト型要素が 0x25A 個配列されている。この型は主にパーティーが建造物の出入口を通過することによる画面遷移を表現する。 画面遷移を引き起こすためのヒットテストの矩形の縦幅が 1 なので、水平帯域と呼ぶことにする。

表 4.83 構造体 $FF8D5A

オフセット 属性
#$00 #$000001 フラグ
#$00 #$0007FE 空間最小単位
#$01 #$000018 座標配列
#$01 #$003FE0 MX0
#$02 #$007FC0 MY
#$03 #$00FF80 MX1
#$05 #$000003 LV
#$05 #$00003C 屋根区域
#$05 #$03FFC0 目的地
#$07 #$000004 効果音考慮

4.19.1.4. 構造体 $FFA02A: 垂直帯域

アドレス $FFA02A には次の 8 バイト長オブジェクト型要素が 0x12 個配列されている。この型は主にパーティーが建造物の出入口を通過することによる画面遷移を表現する。 画面遷移を引き起こすためのヒットテストの矩形の横幅が 1 なので、垂直帯域と呼ぶことにする。

表 4.84 構造体 $FFA02A

オフセット 属性
#$00 #$000001 フラグ
#$00 #$0007FE 空間最小単位
#$01 #$000018 座標配列
#$01 #$003FE0 MX
#$02 #$007FC0 MY0
#$03 #$00FF80 MY1
#$05 #$000003 LV
#$05 #$00003C 屋根区域
#$05 #$03FFC0 目的地
#$07 #$000004 効果音考慮

4.19.1.5. 構造体 $FFA0BA: 矩形領域

アドレス $FFA0BA には次の 8 バイト長オブジェクト型要素が 0x2BB 個配列されている。 画面遷移を引き起こすためのヒットテストの矩形が一般の寸法の場合のものだ。

表 4.85 構造体 $FFA0BA

オフセット 属性
#$00 #$000001 フラグ
#$00 #$00001E 演出
#$00 #$000060 座標配列
#$00 #$00FF80 MX0
#$02 #$0001FF MY0
#$03 #$0003FE MX1
#$04 #$0007FC MY1
#$05 #$000018 LV
#$05 #$01FFE0 目的地
#$07 #$000002 効果音考慮

4.19.1.6. 構造体 $FFB692: 関所

アドレス $FFB692 には次の 0x0C バイト長オブジェクト型要素が四個配列されている。 パーティーがフィールドから各関所に画面遷移すると、関所内のどの位置に現れるのかを指定する。

表 4.86 構造体 $FFB692

オフセット 属性
#$00 #$000001 フラグ
#$00 #$00001E 演出
#$00 #$000060 座標配列
#$00 #$00FF80 MX0
#$02 #$0001FF MY0
#$03 #$0003FE MX1
#$04 #$0007FC MY1
#$05 #$000018 LV
#$05 #$01FFE0 目的地上向き
#$07 #$001FFE 目的地右向き
#$08 #$01FFE0 目的地下向き
#$0A #$001FFE 目的地左向き
#$0B #$000020 効果音考慮

目的地上向き, 目的地右向き, 目的地下向き, 目的地左向き

それぞれ、パーティーキャラクターが対応する向きに関所に入るときの、 目的地点 (4.19.1.7) の ID を値とする属性だ。

4.19.1.7. 構造体 $C834FC: 目的地点

アドレス $C834FC には次の五バイト長オブジェクト型要素が 0x1E0 個配列されている。この型は矩形型 (4.19.1.5) と関所型 (4.19.1.6) が参照する画面遷移先座標を表現する。

表 4.87 構造体 $C834FC

オフセット 属性
#$00 #$0003FF 空間最小単位
#$01 #$00000C 座標配列
#$01 #$001FF0 MX
#$02 #$003FE0 MY
#$03 #$0000C0 LV
#$04 #$00000F 屋根区域
#$04 #$000030 向き
#$04 #$000040 (未使用)

この型固有の各属性の意味を以下に記す。

向き

画面遷移直後のパーティーキャラクターの向きを表す値を取る属性だ。 「はなす」「しらべる」と同様だ。

4.19.2. 振る舞いに関する構成要素

TBW