十六进制编辑C ++中的GBA

时间:2012-09-02 09:10:21

标签: c++ hex gba

我使用XCode在Mac OS X 10.6上进行编程。我试图制作一个“解密”口袋妖怪GBA游戏的程序,以便您可以使用任何文本编辑器阅读游戏对话框。

我已经有一个程序完成女巫那样做,所以我可以读取所有文本数据。

我的问题是,我需要在编辑后将清晰文本更改回十六进制,但我不知道我犯了什么错误。

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);
    }
...

我尝试过,但是当我在十六进制编辑器中打开结果时,ASCII代码只有a8.a8.a8.a8 ......依此类推,直到eof,Hex代码为61 38 00 ......直到eof。

我也尝试了其他方法,但都有相同的结果,我不能将解码后的GBA写为Hex,所以我可以用编辑过的文本来播放它。

1 个答案:

答案 0 :(得分:0)

您需要使用正确的编码将字符串转换为byte []。 这是Pokemon的Gen3文本表 http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_FireRed_-_TBL

正确转换后,您只需将其插入rom即可。

很抱歉,如果这没有多大帮助,但我只制作了c#口袋妖怪工具,而不是c ++。

btw pokemon不使用ascii hex加密,它使用utf8的形式。

相关问题