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行目
どうぶつの森のロムデータかどうか判定。


・ダウンロード
はい、というわけで完成品です。
ソースも同梱していますので、
興味がある人はみてみましょう。


完成品ダウンロード




戻る