4.2. 文字列解析

4.2.1. 解析手順
4.2.2. 文字列リスト

4.2.1. 解析手順

既に先人 [URL1], [URL2] の手によってデータ格納位置および文字コードが判明している。 それで終わるのも味気ないので、以下記者の昔とった手順を参考までに紹介する。 まず、勝手に以下のことを仮定した。 これは結構強引な仮定なのだが、解析作業中にこれらが正しいことが判明する。

  • 文字コードの型は 1 バイトで表現されている

  • 移動モード時に画面下側に表示されることのあるウィンドウの文字コードとは別体系である

文字データが #$00 から #$FF の範囲内の数値で表現されているのであれば、 「ある仲間キャラクターの名前データを格納するメモリ」は 「あるアドレスから連続した 4 バイトのメモリ」であるだろう、 とこれもまた勝手に推測するのである。

次は特定の仲間キャラクターの名前アドレスを PAR サーチでなんとか見つける。 幸い、SFC 版ドラクエ 6 には仲間キャラクターの名前を簡単に変更できるシステム [9]がゲーム中に存在する。 あとは頻繁に同一キャラの名前を変更しながら Diff サーチをかける。

仲間キャラの名前のアドレスが特定できたら、数値を #$00 から #$FF まで変更して、 画面上(小さい文字用ウィンドウ上)にどのように表示されるかを目視で確認し、 メモをとればよい。

最後の最後に「ROM イメージファイルの全データ文字コンバート」を試みる。 すなわち、「unsigned char → 文字」マップなり配列なりを定義して、 4 メガの全データを文字に変換してみる自分でプログラムを書き、走らせるのである。 そして出来上がったファイルをバイナリエディタで開き、 「メガザルダンス」「ふるびたパイプ」といった ドラクエ的に意味のある単語が分布していることを確認するのである。

4.2.2. 文字列リスト

付録 B データ



[9] ゲントの村の近くの海底。