本節では ROM における空間情報の構成について述べる。 ここで言う空間情報とは、パーティーがどこにいるのか、どこに移動しようとしているのか、 そもそも「どこ」をどのように表現するのかを定義するデータ全般を指すものとする。
空間情報に関係するデータ構造について述べる。
アドレス $C815BF
から 1 バイト長要素の配列が定義されている。
配列というよりは、フローミの呪文が取り扱う情報単位の ID から場所 ID への対応関係、または関数と解釈したほうがよい。
例を挙げると、この配列の添字 #$01FB
から #$0200
まではすべて値が
#$4E
であり、これらはすべてスライム格闘場を意味している。
ただし、各要素は「格闘場エントランス→格闘場」、「格闘場地下会場→格闘場」、「格闘場地下控室→格闘場」……の相異なる対応をそれぞれ表現している。
付録の CSV ではコメントを念入りにいれてあるので、読者はそれを見て配列が表現しているモデルを把握して欲しい。
読者が PAR 機能が利用可能ならば、ぜひアドレス $7E5ED9
を観察して欲しい。
これが現在パーティーがいる空間単位配列の添字値を表している。
アドレス $C8997A
からは次の表が表現する
サイズ 0x0B
バイトの型のオブジェクトが
0xB8
個配列されている。
これらのオブジェクトはルーラの呪文を実現するのに必要な情報をいくつかの属性として保持する。
表 4.76 構造体 $C8997A
オフセット | 桁 | 属性 |
---|---|---|
#$00
|
#$FFFF
|
名前 |
#$02
|
#$000F
|
フィールド分類 |
#$02
|
#$1FF0
|
ルーラ座標 |
#$03
|
#$3FE0
|
船座標 0 |
#$04
|
#$7FC0
|
船座標 1 |
#$05
|
#$FF80
|
船座標 2 |
#$07
|
#$01FF
|
空飛ぶベッド座標 |
#$08
|
#$03FE
|
ひょうたん島座標 0 |
#$09
|
#$07FC
|
ひょうたん島座標 1 |
各属性の意味を次に説明する。
ルーラメニューウィンドウの項目として表示するための文字列の ID を値とする属性だ。 文字列については 4.2 文字列 で述べる。
この場所がどのフィールドにあるのかを示す値をとる属性だ。 ただし、データを見ると実情とそぐわない設定をされているオブジェクトがわずかに存在する。
パーティーがルーラを実行した直後の彼らの位置を表現する座標オブジェクト (4.18.1.4) の ID を値とする属性だ。
パーティーがルーラを実行した直後の船の位置を表現する座標オブジェクトの ID を値とする属性だ。 物語の進行状況によって、参照する k が決まる。
パーティーがルーラを実行した直後の空飛ぶベッドの位置を表現する座標オブジェクトの ID を値とする属性だ。
パーティーがルーラを実行した直後のひょうたん島の位置を表現する座標オブジェクトの ID を値とする属性だ。
アドレス $C8A188
からは次の表が表現する型の、大きさ 8 バイト長のオブジェクトが
0x93
個配列されている。
これらのオブジェクトは先述した空間単位構成要素のいくつかを集約する構成要素を表現する。
表 4.78 構造体 $C8A188
オフセット | 桁 | 属性 |
---|---|---|
#$00
|
#$000F
|
フィールド分類 |
#$00
|
#$0010
|
タカのめ許可 |
#$00
|
#$3FC0
|
ルーラ番号 |
#$01
|
#$00C0
|
ルーラ判定 |
#$02
|
#$0001
|
リレミト許可 |
#$02
|
#$07FC
|
地図座標 |
#$03
|
#$0FF8
|
リレミト座標 0 |
#$04
|
#$1FF0
|
リレミト座標 1 |
#$05
|
#$0020
|
毒考慮 |
#$05
|
#$0040
|
おおごえ許可 |
#$06
|
#$FFFF
|
名前 |
各属性の意味を次に説明する。
4.18.1.2 で述べたものと同じだ。
ブーリアン型属性であり、値が 1 であれば移動コマンドの「タカのめ」がこの場所では有効であることを意味する。
ルーラメニューウィンドウの項目番号を値とする属性だ。 フィールド分類属性値と関係なしに番号が割り振られていて、 例えば上フィールドの「ライフコッド」と下フィールドの「ダーマしんでん」はどちらも先頭の項目だが、 属性値は相異なる。
この場所でルーラを実行すると、どう振る舞うのかを示す値を取る属性だ。
ブーリアン型属性であり、値が 1 であればリレミトの実行がこの場所では有効であることを意味する。
地図座標は「せかいちず」「ふしぎなちず」を開いたときの羽の位置を、 リレミト座標 k (k = 0..1) はリレミト実行時のパーティー位置を定義する座標オブジェクトの ID をそれぞれ取る属性だ。
ブーリアン型属性であり、値が 1 であれば毒状態のキャラクターが移動中にダメージを受けることを意味する。
ブーリアン型属性であり、値が 1 であれば移動コマンドの「おおごえ」がこの場所では有効であることを意味する。
フローミの実行結果における場所の名前を表す文字列の ID を値とする属性だ。 文字列については 4.2 文字列 で述べる。
アドレス $C8B314
からは次の表が表現する型の 5 バイト長オブジェクトが
0x1C9
個配列されている。これらのオブジェクトはパーティーが画面遷移直後に対象空間のどの座標に現れるのかを指定する。
表 4.80 構造体 $C8B314
オフセット | 桁 | 属性 |
---|---|---|
#$00
|
#$03FF
|
空間最小単位 |
#$01
|
#$000C
|
座標配列 |
#$01
|
#$1FF0
|
MX |
#$02
|
#$3FE0
|
MY |
#$03
|
#$00C0
|
LV |
#$04
|
#$001F
|
屋根区域 |
#$04
|
#$0060
|
向き |
#$04
|
#$0080
|
(未使用) |
各属性の意味は 4.19.1.7 構造体 $C834FC
: 目的地点 で述べるものと同様だ。