准备工具

准备好CT2,要汉化的美版心金ROM,nds解包工具

修改arm9

(有些rom是解压了arm9的可以跳过这一步)
首先用ct2打开rom,找到工具->nds文件目录信息,找到开头的arm9.bin,右键选择解压

打开解压后的arm9文件
修改以下地址的数据

08026014: 11 61
08026050: c0 46
080262c0: 68 21 40 5c 70 47

解包nds rom

这里我用了DP的字库文件,因为DP的字库还是和gen3绿宝石火红的字库顺序一样,比心金汉化版多了很多字。

字库文件位置:a/0/1/6

替换方法:
这里推荐使用ndstool这个工具 并且用命令行来解压和打包nds rom
将工具和rom放在同一文件夹下,打开电脑的命令行并且cd到这个位置
解包命令:

./ndstool -x ROMNAME.nds -9 base/arm9.bin -7 base/arm7.bin -y9 base/overarm9.bin -y7 base/overarm7.bin -d base/root -y base/overlay -t base/banner.bin -h base/header.bin

注意把中间的ROMNAME.nds替换成你的rom名字
等解包完毕后解包的数据会放在base的文件夹下
下载中文字库文件,将他替换到base/a/0/1/6

获取文本

由于心金汉化都是基于jp上汉化的,而老外的dspre虽然支持中文,但是他识别的是日文版本。所以美版汉化无法使用它们的工具去修改文本,同时新的字库码表不符合dspre的中文码表,这里只能使用别的办法去获取文本
幸运的是心金反编译项目里有msgenc这个工具可以根据码表去提取/转换文本和数据,所以这里使用这个工具来获取文本

https://github.com/pret/pokeheartgold

下载项目,定位到tools/msgenc,使用命令行键入make来生成可执行文件,这里需要你的电脑有支持编译c/c++的环境
同理定位到tools/knarc, 用make生成可执行文件

将生成的可执行文件复制到之前rom的路径下
将a/0/2/7复制出来,命名为text
使用knarc解包这个narc文件


新建一个makefile文件 用于批量处理

C_SRCS                    := $(foreach dname,msgdata,$(wildcard $(dname)/*.bin))
C_OBJS                    = $(C_SRCS:%.bin=%.txt)

%.bin:;

%.txt: %.bin
	@$(MSGENC) -c charmap.txt -d $< $@

dumptext: $(C_OBJS)

输入make dumptext 将所有的bin转换成txt文件

然后替换文本文件:
文本文件:a/0/2/7