在C++中编辑十六进制GBA
Hex editing GBA in C++
我正在使用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,十六进制代码是61 38 00。。。直到eof。
我也尝试了其他方法,但结果都是一样的,我不能把解码的GBA写为Hex,所以我可以用编辑过的Text来播放它。
您需要将字符串转换为具有正确编码的byte[]。这是口袋妖怪的Gen3文本表http://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_FireRed_-_TBL
一旦正确转换,您只需将其插入您的rom即可。
很抱歉,如果这没有多大帮助,但我只做了c#口袋妖怪工具,而不是c++。
btw-pokemon不使用ascii十六进制加密,而是使用utf8的形式。
相关文章:
- 如何在openssl-ecc中获取十六进制格式的私钥
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 指向存储在字符串 c++ 中的十六进制
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C ++如何使用UTF8十六进制代码打印UTF8符号?
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 如何在C++中将十六进制字符串转换为文本数据
- 使用 sprintf 将十六进制0xAABBCC转换为字符串"AA:BB:CC"
- 绝对编码器十六进制输入
- 为什么C++总是显示十六进制内存地址,而不仅仅是整数?
- C++17 十六进制浮点文字单精度后缀冲突?
- 是否可以在C++中获取 CHAR 的有效十六进制地址?
- 打印十六进制字符
- 在C++中编辑十六进制GBA