Xzonn / PokemonChineseTranslationRevise

《宝可梦》第四世代汉化修正

Home Page:https://xzonn.top/PokemonChineseTranslationRevise/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

《心金/魂银》arm9.bin 文件大小改变后导入出错

Xzonn opened this issue · comments

7f9f9dd

HGSS 虽然可以修改简单会话的词语顺序,但由于修改内容太多,BLZ 压缩后改变了arm9.bin的大小,导致导入出错。尝试其他压缩工具或导入工具均无法解决,使用 DeSmuME 运行发现arm9.bin没有被完整地载入内存。需要进一步研究。

image

可以检查下用于程序解压arm9的大小标记有无更改,未解压的arm9去掉尾部12个字节的标识符(21 06 C0 DE A0 0B 00 00 00 00 00 00)的地方,是开始解压的起点位置,也可以算是arm9压缩后的纯大小,这个地址会被记录在arm9前面未压缩的某个地方用于程序解压调用。

在hgss里,这个地址是在arm9的0xBB4位置上.
以日版文件为例,hg的arm9大小(去掉标识符)为0x0B9CAC,ss的为0x0B9CB4,加上arm9载入的内存起点0x02000000的地址后,0xBB4地址上记录的数据分别为0x020B9CAC和0x020B9CB4。arm9的压缩数据变化后,这个地址上记录的数据也需要同步变更才能保证解压程序正常。

1
2

https://github.com/Wokann/RockMan-ZX-Advent-Chs/blob/main/2-DoChinese.bat
https://github.com/Wokann/RockMan-ZX-Advent-Chs/blob/main/tools/arm9blzoffset.asm

感谢,没想到 arm9.bin 里面还存着压缩后的大小。

感谢,没想到 arm9.bin 里面还存着压缩后的大小。

记得还需要确认下你用的解压算法打包重压缩后,是否会带上标识符,来判断arm9的压缩文件大小是否需要扣除12字节。我这边用的cue的blz工具,ndstool解压出来后,需要删除标识符才能正常解压,打包重压缩后也是不包含标识符数据,所以结果直接加上当前文件大小来计算就行,不用额外减去12字节,而这12字节的标识符会在ndstool打包时自动被加回来。(没记错的话如果ndstool解压出来的含标识符的arm9,不做修改马上再打包的话,也是会自动再加一个12字节标识符,也就是最终末尾会出现2个12字节的标识符)

记得还需要确认下你用的解压算法打包重压缩后,是否会带上标识符,来判断arm9的压缩文件大小是否需要扣除12字节。我这边用的cue的blz工具,ndstool解压出来后,需要删除标识符才能正常解压,打包重压缩后也是不包含标识符数据,所以结果直接加上当前文件大小来计算就行,不用额外减去12字节,而这12字节的标识符会在ndstool打包时自动被加回来。(没记错的话如果ndstool解压出来的含标识符的arm9,不做修改马上再打包的话,也是会自动再加一个12字节标识符,也就是最终末尾会出现2个12字节的标识符)

好的,我用的 blz 压缩是我自己写的,已经处理了 nitrocode。