0

XCodeを使用してMac OS X 10.6でプログラミングしています。ポケモン GBA ゲームを「解読」するプログラムを作成して、任意のテキスト エディタでゲームのダイアログを読むことができるようにしようとしています。

私はすでにそれを行うプログラムを完成させているので、すべてのテキストデータを読み取ることができます。

私の問題は、編集後にクリアテキストを16進数に戻す必要があることですが、何が間違っているのかわかりません。

string PathDE;
string PathGBA;
string Zeichen;
int kontrolle = 0;
int current = 0;

char buffer1[3] = "00";
char buffer2[3] = "a1";
...

schreiben.open(PathGBA.c_str(), ios::out | ios::binary); //writes out the edited hex
lesen.open(PathDE.c_str(), ios::in); //reads in the plain text


while(current <= kontrolle){
    lesen.read(reinterpret_cast<char*>(&a), 1);
    converter << a;
    converter >> Zeichen;
    if(Zeichen == "_"){
        schreiben.write(buffer1,3);
    }
    else if(Zeichen == "0"){
        schreiben.write(buffer2,3);
    }
...

試してみましたが、16 進エディタで結果を開くと、ASCII コードは a8.a8.a8.a8... というように eof まで続き、16 進コードは eof まで 61 38 00 ... です。

他の方法も試しましたが、すべて同じ結果で、デコードされたGBAを16進数として書き込むことができないため、編集されたテキストで再生できます。

4

1 に答える 1

0

文字列を正しいエンコーディングで byte[] に変換する必要があります。ポケモンhttp://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_FireRed_-_TBLの Gen3 テキスト テーブルを次に示し ます。

正しく変換されたら、ROM に挿入するだけです。

これがあまり役に立たない場合は申し訳ありませんが、私は c++ ではなく c# ポケモン ツールのみを作成しました。

そして、ポケモンはASCII 16進暗号化を使用せず、utf8の形式を使用します。

于 2015-01-07T04:09:07.223 に答える