5.2. 文字列

5.2.1. 概要
5.2.2. データ

本節では文字列処理について述べる。 まず、いくつかの基本的な概念を簡単に説明する。 次に、プログラムがどのように文字列データにアクセスするかを簡単に述べる。 最後に、全文字列データを独自コードから UTF-8 に変換したテキストデータを作成する。

なお、本節で言う文字列とは SFC 版ドラクエ 6 でのそれと同じ定義とする。 4.2 文字列 の冒頭部を参照して欲しい。

5.2.1. 概要

4.2.1 概要 と同じだ。

文字コード

前作同様。

文字列のデータ構造

前作同様。

半濁点・濁点処理

半濁点・濁点分解処理らしきものがないことを除けば前作同様だ。

半濁点・濁点だけを表す文字コードはそれぞれ #$03, #$04 となっている。

文字列データの格納アドレス配列

前作同様。

文字列データはアドレス $FECFB7 から延々と配列されている。 本作では ID を与えるだけで文字列データの特定ができる。

配列 $C1591F に 16 の倍数ごとの ID の文字列データの格納アドレスをキャッシュしておくことで、 実行時におけるアドレス計算の時間的複雑さが ID に対して線形にならないように工夫している。 これについて詳細を知りたければ、サブルーチン $C1BA53 を確認して欲しい。

文字列 ID

前作同様。

このことについても、サブルーチン $C1BA53 の冒頭によると、 定数データの参照という意味では文字列 ID としての有効な値の範囲の下端は #$0023 だ。 それ未満の値は、仲間キャラクターの名前等を参照するために用いられる。

ここまで出てきた重要(および関連する)機能のアドレスを表にまとめておく。 後でウィンドウ解析を議論する際に参照して欲しい:

表 5.3 文字列機能

アドレス 分類 意味
$C1591F データ 文字列データ格納アドレス計算配列
$C1BA53 サブルーチン 文字列 ID を入力して、データ格納アドレスを $BA に出力する
$C1BACC サブルーチン アドレス [$BA] から 1 コード読み取り、シークを進める
$FECFB7 データ 文字列データ配列

5.2.2. データ

付録 B データ にアドレス $FECFB7 以降に表現されている全文字列データを UTF-8 に変換したテキストデータを置く。 前述のとおり、意味のあるダンプは ID が #$0023 以上のものに限る。