本書は、記者が暇に任せて調べたドラクエの内部処理や、データ構造について解説している。 まだ執筆が終わっているわけではなく、現在進行中で解析作業および執筆をしている。 なぜこのような酔狂を行っているのかというと、半分成り行きなところがある。
そもそも記者はドラクエのゲーム中に登場する名もなき人々の台詞が好きで、 すべてのシリーズについて、その一覧を作成したいという野望がある。 幸いファミコンで遊べるシリーズ、つまり 1 から 4 までの各作品については、 ソニタウンのドラクエビューワ [1] で、それも本物のフォントを用いて描画された状態で閲覧することができる。 まったく便利な世の中になったものだ。 本書では、スーファミで遊べるシリーズ、つまり 5, 6, 3 の各作品において、 人々の台詞集を ROM イメージから抽出することを試みる。 ドラクエ全シリーズの台詞集の「本物」を作成すること。 これが本書の第一目標である。
本書の第二の目標は、ドラクエ史中世以降のドラクエシリーズプログラムの解析手法を構築することにある。 特にスーファミとプレステで遊べるシリーズに関して力を入れていくつもりだ。
本書の内容のうち、プログラム解析を行っている項目では、 ドラクエのシリーズを問わず、すべて初期出荷分、いわば「初版」のロムデータを用いている。 このため、初期出荷でないロムに関しては、本書の内容が妥当でない箇所がいくつか存在するであろうことを最初に断っておく。
本書が読者として想定しているのは、 PC で動作するゲーム機エミュレーターでドラクエを遊び、 さらにその一歩先の「プレイ」をしたいと思っているような、 意欲のある人々だ。 そのような読者が本書を読むことで、例えば RAM または ROM イメージの数値データを編集したり、 場合によってはプログラムを分析、検討する方法が習得できるようになると信じている。
既にゲームプログラムの解析技術を有する者にとっては、本書の内容は非常に退屈かもしれない。 やっていることはごく初歩的で稚拙だし、 グラフィックやサウンドといった目立ちやすい要素の解析がほとんどない。 参考文献の品揃えも貧弱に見えるだろう。
本書は、ドラクエのシリーズごとに 1 章を割り当てる構成をとった。 読者は興味のある作品だけを「いいとこ取り」で読むことができる。 次に各章の内容をまとめておこう。
記者の解析環境が記してある章である。 肝心なことをまだ書いていないので、近々内容を拡充する。
主に SFC 版ドラクエ 3 をあらゆる方法で解析して得られたデータ、および事実を説明する。 おまけとして、バカ画像の陳列や GB 版のモンスターメダルデータに関する情報を提供する。
PS 版ドラクエ 4 の解析手法を説明する章になる予定。 現在は開店休業状態である。
SFC 版ドラクエ 5 をあらゆる方法で解析して得られたデータ、および事実を説明する。 おまけとして、バカ画像の陳列ページを用意してある。
SFC 版ドラクエ 6 をあらゆる方法で解析して得られたデータ、および事実を説明する。
PS 版ドラクエ 7 の解析手法を説明する章になる予定。 現在は開店休業状態である。
本書を執筆するにあたり、参考にした書物、雑誌、インターネット上にあるリソースの一覧を示す。
本書では、各種アセンブリー言語のニーモニックや、変なプレフィックス・サフィックスを伴っての十六進数表記が頻繁に書かれる。 これら特別な意味を持つ用語・数値に関しては、地の文書に使われるフォントとは別のもので表記することにした。
本書での表記法は次の通り。
本文中で強調したい用語に使う。
固定ピッチフォント
本文中で、何らかの変数名に使う。
重要 | |
---|---|
重要な事項は、こういうブロックの中に示す。 |
注意 | |
---|---|
これは読者に注意を促す内容を含むブロックである。 |
警告 | |
---|---|
さらに最上級の注意を喚起するためのブロックも用意してある。 読者がこの警告を無視した場合、 ROM イメージ等のデータの破損や、 システム破壊といった致命的な事態に陥るかもしれない。 |
最後に、本書は現在執筆中であり、そのために、 この表記法に対応していないテキストが少なからず残っていることを断っておく。
本書の内容については、最大限の努力をもって検証および確認をしているが、 誤りや不正確な点、誤解や混乱を招くような表現、 単純な誤植に気付かれることもあるだろう。 本書を読んで気付かれた点については、 今後の版で修正できるように知らせていただければありがたい。 その他解析情報や当時の開発者からのタレコミも歓迎する。 記者への連絡先を以下に示す。
GitHub Issues |
Twitter - プレハブ小屋 (showa_yojyo) |
著者へメールを送る |
SFC ドラクエシリーズの解析は、記者一人の力だけで成し得たものではない。 助けになったツールやドキュメントの作成者、執筆者、 貴重な情報や助言の提供者の皆様に篤く礼を申し上げる。
あまりにも偉大なアプリ「ドラクエビューア」 [URL2] で、大フォントテーブルを BMP ファイルに出力する機能を実装された。 本書の各シリーズメッセージ解析では、GSD の文字出力処理のステップ実行時に、 アキュームレーターの値とフォントを照合するときに利用した。
記者とはまったくネット上での面識がないが、 この場で勝手に感謝の意を表したい。
dq_analyzer [URL1] は、
本書のほぼ全ての SFC ドラクエシリーズのセクションの第一情報源となっている。
特にメッセージ解析では、ソースコード dq6decode.c
に記述されている文字コード配列のおかげで、
メッセージ抽出プログラムの作成で省力できた。
65816 解析手法を基本から教えていただいた「恩師」である。
SFC 版ドラクエ 3 のメッセージ解析の概要を完全に把握されており、 記者は、主要なデータの構造・配置位置をそのサイトで知った。 さらに(別シリーズではあるが)メッセージアセンブリーコードの解釈の添削までしていただいた。
未執筆のまま放置していたドラクエ 5 の必要経験値算出の記述を促していただいた。 また、初稿のアルゴリズムを検証した結果、当初の記述に漏れがあることを執筆陣に発見させていただいた。
付録 B で一覧が入れ替わっているミスを発見していただいた。 特に、GitHub に発見報告をいただいてから半年放置したのはたいへん申し訳なかった。 深く反省する。
ドラクエ 5 レベルアップ構造体の記述ミスを発見していただいた。 レベルアップ属性値各種の算出方法を追記する契機になりもした(特に 1.5 倍ルールを見落とすところだった)。
執筆陣の注意不足により、失礼ながらこの一覧から漏れている方がいるかもしれない。 我々はこの一覧を完全なものにしたいので、心当たりの方はどうか名乗り出ていただきたい。