ファイナルファンタジー IV〜VI アドバンス 文字コードについて =========================================================== メッセージテーブル ------------------ 「ファイナルファンタジー IV〜VI アドバンス」では、共通のメッセージテーブル処 理を行っています。メッセージテーブルは、メッセージの種類数、メッセージ ID の 総数、メッセージデータを示すアドレスへのオフセット、および、各アドレスへのオ フセットによって示される可変長のメッセージデータから構成されます。 メッセージテーブルの内容はバイト単位で以下のようになっています。 * 0-3: マジックナンバー 00 00 00 00 * 4-7: マジックナンバー 54 45 58 54 ("TEXT") * 8: メッセージの種類数 (1: 1 種類, 2: かな/漢字の 2 種類) * 9-11: メッセージ ID の総数 * 12-15: メッセージデータの終端アドレスへのオフセット * 以降: メッセージ ID の総数 * メッセージの種類数の数だけ、4 バイトのメッ セージデータを示すアドレスへのオフセットが続く * 以降: メッセージ ID の総数 * メッセージの種類数の数だけ、可変長のメッセ ージデータが続く メッセージデータを示すアドレスへのオフセットは、それぞれのメッセージデータの 先頭のアドレスと、上記メッセージテーブルの先頭のアドレスとの差分です。 実際にメッセージデータを取得するには、おおよそ次の方法が用いられます。 1. 取得するメッセージ ID をレジスタにセットします (以下、「メッセージ ID」)。 2. メッセージ ID をメッセージの種類数の値だけ乗算します (以下、結果を「メ ッセージデータ番号」)。 3. メッセージデータ番号を修正します (「漢字」のとき、1 加算)。 4. メッセージデータ番号とそのメッセージデータ番号の直後のアドレスへのオフ セットを得ます。 5. これらふたつのオフセットの値の差分を得ます (以下、結果を「メッセージデ ータのサイズ」)。 6. メッセージテーブルの先頭のアドレスにメッセージデータ番号のアドレスへの オフセットを加算したアドレスを「メッセージデータのアドレス」とします。 7. メッセージデータのアドレスから、 最大でメッセージデータのサイズだけ、文 字コードを取得します。 文字コード ---------- 「ファイナルファンタジー IV〜VI アドバンス」では、共通の文字コード処理を行っ ています (ただし、文字コードテーブルの内容は異なります)。文字コードは、1 バ イト (シングルバイト) もしくは 2 バイト (マルチバイト) から構成されます。 文字コードの内容はビット単位で以下のようになっています。 * bit0-5: 文字の番号 / 文字コードテーブルの番号 * bit6: シングルバイトの際に文字コードテーブル2 を使う (0 なら文字コードテ ーブル1 を使う) * bit7: マルチバイトである 1 バイト (シングルバイト) で構成される文字コードは、文字の番号と (必要であれ ば) bit6 のみを指定します。2 バイト (マルチバイト) で構成される文字コード は、1 バイト目に文字コードテーブルの番号を指定します (このとき、bit6, bit7 を 1 にします)。次に、2 バイト目に文字の番号を指定します (このとき、bit7 を 1 にします)。なお、マルチバイトの場合でも、文字コードテーブル1 および 文字コ ードテーブル2 の内容は、シングルバイトのものと同じです。