N64 どうぶつの森のコンバーター
第2回目は、N64のどうぶつの森、これのゲーム中に表示される
動物たちとの会話をコンバートしてみましょう。
今回のコンバーターは、前回のものよりも複雑になっています。
・テーブルファイルの作成
なにはともあれ、まずはテーブルファイルを作るわけなのですが、
以前、これの改造コードをサーチしていたときに、フォント配列も調べていたので
今回はこれを利用してみました。
もし、一からテーブルファイルを作るなら、カートリッジの電池が
切れたときに表示されるメッセージから探してみましょう。
GCCODEをつかいト?アツカイセツ?イシで検索してみて下さい。
一件だけ該当があると思います。
出力してみると、いくつか抜けてたり、ずれてるようです。
これをもとにちゃんとしたテーブルを作ります。
・特殊処理の判定
画面と比べてみて、CDは、改行を意味している
ようだということはわかりますが、
く | わ | し | い | 改行 | た | い | し | ょ | ほ | う | に | つ | い | て | は |
07 | C1 | 0B | 01 | CD | 0F | 01 | 0B | CB | 1D | 02 | 15 | 11 | 01 | 12 | 19 |
、 | 改行 | と | り | あ | つ | か | い | ||||||||
84 | 7F | 04 | CD | 7F | 50 | E1 | 1E | D7 | 0C | 13 | 7C | 00 | 11 | 05 | 01 |
せ | つ | め | い | し | ょ | を | 改行 | ご | ら | ん | く | だ | さ | い | 。 |
0D | 11 | 24 | 01 | 0B | CB | C2 | CD | EB | 7B | C3 | 07 | F1 | 0A | 01 | 81 |
7F04
7F50E11ED70C
の、謎の処理があります。
他の場所も調べてみるとどうやら、
7F〜という値は、なにかしら処理をするという値のようです。
ちなみに、7F04はボタン入力待ち、
7F50xxyyzzppは文字の色を変更のようのです。
ほかにも種類があり、たとえば、
7F1A:主人公の名前
7F1C:文章の語尾。〜でシ、〜なのサ、〜まんねんとか。
7F2F:村の名前
7F54:文字の大きさを変える
などなどいろいろ種類があります。
Cソースにコメントを入れているので
詳しくはそれを見てください。
7Fxxにどのような処理があるのか調べるときは
すぐ表示できるメッセージをバイナリエディタで直接書き換えて試してみるのが
1番手っ取り早いと思います。
・プログラミング
共通なものを省いて、ソースでどのようなことをやっているか、
かなりがんばったので、説明しますw
○74〜86行目
どうぶつの森のメッセージは、1行に表示できる文字数は
通常メッセージは17文字、掲示板、手紙は16文字となっています。
もし16文字表示した時点で、2バイト先が改行だったらそのまま、
文字だったら改行を挿入し、「f」に1を代入するようになっています。
○89〜442行目
0x7Fを読込んだ場合の判定処理です。
プログラムのほとんどがこれの処理にあてられています。
短くできますが、わかりやすいように
ばらばらに書いています。
○443〜451行目
改行判定処理です。
文字制限処理で改行したかどうかも判定します。
○452〜456
テーブルファイルから文字を表示します
※番外
○38〜70行目
どうぶつの森のロムデータかどうか判定。
・ダウンロード
はい、というわけで完成品です。
ソースも同梱していますので、
興味がある人はみてみましょう。
完成品ダウンロード