本節では文字列処理について述べる。 まず、いくつかの基本的な概念を簡単に説明する。 次に、プログラムがどのように文字列データにアクセスするかを簡単に述べる。 最後に、全文字列データを独自コードから UTF-8 に変換したテキストデータを作成する。
なお、本節で言う文字列とは SFC 版ドラクエ 6 でのそれと同じ定義とする。 4.2 文字列 の冒頭部を参照して欲しい。
4.2.1 概要 と同じだ。
前作同様。
前作同様。
半濁点・濁点分解処理らしきものがないことを除けば前作同様だ。
半濁点・濁点だけを表す文字コードはそれぞれ #$03
, #$04
となっている。
前作同様。
文字列データはアドレス $FECFB7
から延々と配列されている。
本作では ID を与えるだけで文字列データの特定ができる。
配列 $C1591F
に 16 の倍数ごとの ID の文字列データの格納アドレスをキャッシュしておくことで、
実行時におけるアドレス計算の時間的複雑さが ID に対して線形にならないように工夫している。
これについて詳細を知りたければ、サブルーチン $C1BA53
を確認して欲しい。
前作同様。
このことについても、サブルーチン $C1BA53
の冒頭によると、
定数データの参照という意味では文字列 ID としての有効な値の範囲の下端は
#$0023
だ。
それ未満の値は、仲間キャラクターの名前等を参照するために用いられる。
ここまで出てきた重要(および関連する)機能のアドレスを表にまとめておく。 後でウィンドウ解析を議論する際に参照して欲しい:
表 5.3 文字列機能
アドレス | 分類 | 意味 |
---|---|---|
$C1591F
|
データ | 文字列データ格納アドレス計算配列 |
$C1BA53
|
サブルーチン | 文字列 ID を入力して、データ格納アドレスを $BA に出力する |
$C1BACC
|
サブルーチン | アドレス [$BA] から 1 コード読み取り、シークを進める |
$FECFB7
|
データ | 文字列データ配列 |
付録 B データ にアドレス $FECFB7
以降に表現されている全文字列データを UTF-8 に変換したテキストデータを置く。
前述のとおり、意味のあるダンプは ID が #$0023
以上のものに限る。