GBA マリオ&ルイージRPG メッセージコンバーター


さてさて、ながきに渡って公開が停滞していたマリオ&ルイージRPGのコンバータですが、
そろそろやっとかんとなぁ。といことで、かなり適当になっとりますがとりあえず公開といたします。


・めんどくせぇよっ!テーブルファイルっ!

変な見出しですが、本当にこれにつきます。
このゲームには、ひらがな、カタカナ、英数字、記号、そして漢字が使われており、
コンバーターの作成で一番重要となるのが「漢字」の扱いです。

これまで扱ってきたゲームでは、ほとんどがひらがな、カタカナ、英数字、記号のみ。
もし漢字が含まれていても、数個という場合がほとんどですが、
このゲームでは、漢字が多用されており、ざっと計算して、
約1200種類もの漢字が含まれております。
めんどくさいですが、この数は根性で乗り切る(泣)としまして、
その次の問題となってくるのが、プログラム面です。


これまでのコンバーターでは、テーブルファイルを2次元配列の変数tableに格納し、
ファイルのデータを変数iGetFileに読み出し、
table[iGetFile]
とすることで、表示してきました。

しかし、このゲームでは、特殊な動作を除き、

データが1バイトで、0x00〜0xF9に通常の文字。
データが2バイトで0xFA00〜0xFAFFの漢字その1、
データが2バイトで0xFB00〜0xFAFFの漢字その2、
・・・
データが2バイトで0xFE00〜0xFEFFの漢字その5


と、今までのような
table[iGetFile]
として表示させる方法ではめんどくさいのです。

そういうことで、その打開策として三次元配列を使ってみました。



・3次元配列

配列の説明もなぁ・・・という感じですが。
とりあえず、二次元配列が

char hairetu2[3][4] = {"abc", "def", "ghi"};

という感じで、これで言うと、
4つの要素の変数を3つ用意する
みたいなそんな感じですが、
3次元配列(というか、多次元配列)は、

char hairetu3[2][3][4] = { {"abc", "def", "ghi"}, {"123", "456", "789"} };

というふうに、
4つの要素の変数を3つもつ2次元配列を、2つ用意する
という感じになります。




まぁ、詳しく説明もできんのでそこら辺は詳しいトコいくとして、
動作としては、

3次元配列をつくり、テーブルデータを読み込み、
データを1バイトづつ読み込んで、そのデータが、
もし0x00〜0xF9だったら、table[0][iGetFile]、(ひら、カナ)
もし0xFAだったら、もう1バイト読み込み、table[1][iGetFile]、(漢字1)
もし0xFBだったら、もう1バイト読み込み、table[2][iGetFile]、(漢字2)
もし0xFCだったら、もう1バイト読み込み、table[3][iGetFile]、(漢字3)
もし0xFDだったら、もう1バイト読み込み、table[4][iGetFile]、(漢字4)
もし0xFEだったら、もう1バイト読み込み、table[5][iGetFile]、(漢字5)


という感じになっとります。



完成品ダウンロード

はい、そういうわけで説明になってるのかはとても疑問が残りますが(ぉ
完成品です。今回のに関しては、作成の途中に長い空きがありましたので
かなり適当になっとります。ご了承を。

2004/6/14
・v0.01完成

2004/6/16
・テーブルファイル入れ忘れ(ぉ




戻る