Шестнадцатеричное редактирование GBA в C++
Я программирую на Mac OS X 10.6 с XCode. Я пытаюсь создать Программу, которая "расшифровывает" игру Pokemon GBA, чтобы вы могли читать диалоги игры с помощью любого текстового редактора.
У меня уже есть готовая программа, и я могу читать все текстовые данные.
Моя проблема в том, что мне нужно изменить чистый текст обратно на Hex после его редактирования, но я понятия не имею, что я делаю неправильно.
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, а шестнадцатеричный код - 61 38 00 ... до eof.
Я также попробовал другие методы, но все с тем же результатом, я не могу написать декодированный GBA как Hex, чтобы я мог воспроизвести его с отредактированным текстом.
1 ответ
Вы захотите преобразовать вашу строку в байт [] с правильной кодировкой. Вот текстовая таблица Gen3 для покемонов http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_FireRed_-_TBL
После правильного преобразования вы просто вставите его в свой диск.
Извините, если это не очень помогает, но я сделал только инструменты для C# Pokemon, но не для C++.
И кстати покемон не использует шестнадцатеричное шифрование ascii, он использует форму utf8.