关于中国NDS游戏
对了,我也参与过某组游戏的破解。如果我知道什么,我就随便说说。其中引用了一部分信息。
一般来说分为几个步骤:1,游戏破解2,文字导出3,图片导出4,翻译5,打磨6,测试。
破解游戏,比如哪里是字体,哪里是图片(分别对应那些图片),哪里是文字区,哪里是音效区...如果文件系统是一个复杂的ROM,那么不同文件的内容是什么?另外,有些游戏不同的文字对应不同的字体,都是需要仔细确认的内容。一些rom可能有压缩的内容。如果这些内容与本地化的需要有关,此时就需要进行解压缩和压缩测试。一般在这个阶段,我会准备几大张纸进行详细记录,给以后的工作带来很大的便利。2字体推导是关系到汉化可能性最关键的部分。一般游戏的字体分为完整字体和简化字体。完整字体包含7000多个字符(包括6000多个汉字),而简化字体一般只包含游戏中实际使用的1000-2000个字符。无论是哪种字体,由于日文汉字中缺少了很多常用汉字,必须进行修改,字体的简化需要很大的改造甚至扩展。后面我会具体解释一下字体黑,就暂时停在这里。3.中文文本的测试是用中文替换原来的日文内容,所以需要测试这种替换的可能性。当然,最初的破解不一定非得是很严重的文字导出导入,或者翻译修改,看修改的可能性就行了。上面提到的很多教程都涉及到这个操作,可以仔细研究一下。4.图像处理的主要目的是图像拼接和色板处理。其他需要汉化的关键图片(图片中有需要汉化的内容)一定要找出来。另外,你可能需要做好色板导出和图片导出的准备工作。你也可以尝试一些图片修改。如果以上部分准备完成,测试成功,那么恭喜你,这个汉化项目已经成为可能。我们可以进入下一步了。
接下来就是学习CT了
CT的全称是Crystaltile,是天使集团Crystal在之前瓷砖工具的基础上不断改进的结果。可以说是中国GBA/NDS游戏非常有用的工具。此外,它还集成了许多有用的功能,如差异搜索,LZ77解压缩等。,而且是专门针对中国NDS游戏优化的。此外,该工具的版本会不断修订和更新。我用的是5月中旬的版本,写这篇文章的时候更新了几个版本。其实之前的磁贴工具的一些操作在ct上是很常见的,那些工具都有一些在线教程,但是对于没有接触过的人来说,也是作为CT的新工具来介绍的,所以我在这里简单介绍一下。下面是CT的界面:①区域是导航栏的主要部分,最重要的是偏移地址,也就是偏移地址,还有就是颜色格式。颜色格式关系到ROM图形部分的内容能否被正确查看。中文NDS游戏常用的区域有1bpp单色、GBA4BP、GBA8BBP (1bpp单色主要针对字体的内容)。②该区域为显示颜色版本。您可以在调色板菜单中调整它,或者返回到默认设置。直接点击颜色,直接修改即可。如果是非256色样,上拉杆还可以读取总色样(256色)的不同部分进行匹配。③区域为平铺工具,可简单修改。同时,CT还集成了通过码表生成字体的强大功能。(如果平时不用平铺功能,可以把这个窗口隐藏起来,给工作腾出空间。)中间的内容是开放的ROM。现在ROM是以平铺模式打开的,即可以直接观察平铺内容(字体,图形...).菜单栏下方是快捷工具栏,即①导出按钮,允许CT将选中的内容导出为某种格式的文件。通常将选中图形区域的内容导出为BMP文件,但CT的导出功能并不仅限于导出图片。具体内容会在图H教程中进一步说明。这篇文章只需要有一个大概的概念。(2)导入按钮,将修改过的图片,如BMP图片,导入回ROM中的指定区域。③16 base编辑器的快速切换按钮可以快速切换到16 base模式④LZ77解压按钮解压选中的LZ77内容⑥ LZ77压缩按钮压缩选中的内容⑥将颜色通道转换成16/32数据导入⑦将16 base模式存储的颜色通道导出到PAL颜色通道文件⑧打开视图菜单,可以将工作ROM的视图切换到其他模式。我们切换到16模式,看看CT的16编辑功能。CT很像一般的16基础编辑器(虽然没有UE强大),但是结合本地化进行了优化。比如码染。查看起来非常方便,有经验的美工甚至可以直接通过染色的代码找到颜色通道数据的开头,导出颜色通道(后面的美工教程会进一步介绍)。此外,在文本区域的中间,也很容易找到特殊控制符号的内容(例如下面例子中的F1FF等控制符号被染成浅蓝色,与普通文本不同)。另一个非常有用的功能是直接插入码表显示文字区的大致内容:nds游戏对应的码表有两种:8140 =空格的标准Shift-JIS码表和0000 =空格的连续码表(码表的相关内容将在下面的教程中介绍)。可以大胆设置一下,看看能不能找到文字区。比如超级刀就是用0000=空格的码表。插入后大概可以在CT的16二进制模式下看到文本区的内容。这对于阅读ROM是非常必要的。CT的另一个有用的功能是NDS文件系统。通过这个系统可以直观的看到NDS的文件结构,有些ROM甚至更详细的存储了不同类型和用途的文件,对于理解ROM的结构非常有用。此外,在“文件系统”栏中,您可以导出和导入不同部分的文件,并分别进行分析和修改。CT有很多强大的功能,你要在应用中慢慢摸索。总之,我觉得打开这个工具的人,只要不是非常规压缩加密的ROM,大概可以破解99%的GBA/NDS游戏...其次,用一个简单的例子来说一下CT的平铺操作。一般你在CT里找到一个大概的图片后,就可以调整窗口大小了(快捷键SHIFT+方向,不过最新版本修改了这个功能的快捷键,使用新版本的用户请阅读新版本的说明)。另外,建议使用200左右进行缩放(旧版使用1位数显示缩放比例)。这可以调整到更整洁的情况。(下图已调整)但此时你看到的颜色是不正确的,因为默认的颜色通道并不适合所有图形(正常情况下是不适合的,但这是相对的和醒目的)。如果你想更好的观察,我建议你准备一个黑白色板(具体的色板建立方法留在美术教程里),这样图形可以排除颜色的干扰,更容易找到,在色板没有确定的情况下非常方便。当然要准备8bpp(256色)和4bpp(16色),以适应不同格式的图片。好了,回到上面,只要插入正确的色板,那么画面就可以正常显示了。(当然,对于ROM解读阶段,并不需要在每张图片上放上正确的色板。)但是好像有点瑕疵,因为地址偏移量还不准确。使用快捷键:CTRL+箭头键来微调地址偏移量,这一点非常重要。调整后,隐藏难看的网格就可以看到这个效果。通过上面的方法,你可以对ROM的结构有一个大致的了解。结合NDS文件系统,可以大致了解每个文件包含的内容,关键是这个内容在ROM中的地址。另外,还要进一步分析每个内容的具体位置,准备几张白纸,仔细记录ROM每个区域的内容是什么,比如按照地址位置的顺序列出:XXXXXXXX-XXXXXXXX是头条图片,8bppXXXXXXXX-XXXXXXXX是字幕图片,4bpp xxxxxxxxxxxx-xxxxxxxx是人物的全身肖像。8bppXXXXXXXX-XXXXXXXX是字体,1bppXXXXXXXX-XXXXXXXX是文字区XXXXXXXX-XXXXXXXX是音效.......................这个记录很重要,一方面方便你随时找到需要注意的部分,另一方面通过分类排除快速找到地址未定的内容的可能位置也很重要。对于本文的内容,可以参考第一句话介绍的教程的相关部分,再学习一些文字和码表的相关知识。终于进入了有点技术含量的部分...
GBA/NDS游戏一般如何显示文字?上面提到了用ct插入正确的码表。在16的二进制模式下,可以在文本区看到文本内容。原理是ROM的文本区是用16基码写的。比如上图中“查2年前”对应的16基码就是000706f0线的五组16。并且代码表是指示CD00=2CE0B= =年份9B09= =前4701 =の3e 06 = check 1307 = check的转换关系的列表。在游戏中,通过这样的转换关系,从字体中选择角色并显示在屏幕上。如果上面文字区的编码改为CD 00 ce 0 b 0 c 47013e 061307,游戏也会显示为:2年查,这也是中文文字修改的基本原则。(原文中的“检”字没有简化,为了便于解释,我简化了一下。)一般日版游戏用的都是Shift-JIS码表。完整的移位-JIS码表以空格、标点符号、特殊符号、英文字母、平假名、片假名和日文字符开始...比如8140= 8141=,8142=。8143=,8144=.8145= 8146=:8147=;8148=?8149=!814a =゛814b =゜814c = ' 814d = ' 814e =……从8140 = space和0000 = space开始分别有两种类型一般一个完整的《移位——JIS码表》中的汉字以“措”开头,以“Xi”结尾(最完整的一个以“黑”结尾,即“Xi”后面有一段,但一般来说,因为不是常用字,很多游戏都去掉了“Xi”后面的部分)。以下是对这两个码表的分析:通过这个对比不难发现一个问题。8140 =空格的码表不是连续的,而是跳过了XX00-XX3F、XX7F、XXFD、XFE和XFF(观察第一个码表中间有空行的部分)。并且第二码表是完全连续的。为什么?相信只要多观察几个文字区号,就会发现问题。对于第一个码表的文字,跳过这些区域可以有效防止错位和混淆,另外还可以为半角字符、控制符号等预留代码。第二码表的控制符号大多使用FF00之后的码作为控制符号。以上是导出文本的码表。只要你能放上一个正确的代码表,你就能导出文本部分。但是翻译后可能会不使用(应该是“肯定不会”)或者只使用原字,因为汉化翻译后会使用很多原来字库里没有的汉字(比如很多拟声词在日语里是没有的,比如你是不是,拉,嗯...),而且大部分日本汉字都是繁体字。要做简体版,字体库里的字符要简化。那么翻译后的生词该怎么办呢?最简单的就是在原有的字体上添加新的字符,但是如果只是添加的话会很浪费空间,因为很多原有的字体翻译后就不用了。比如完整的Shift-JIS字库中有6000多种中文字体,但经过正常翻译后,实际的中文字体只有2000-3000种左右。本地化后,由于内容与原字体库不同,需要使用的字体都可以替换。但是问题又来了。这些新字体写入后,如何与文本区的编码链接?这就需要一个新的码表方法,重新使用字体的字体和文本区域的编码,这就需要重新编辑一个新的码表。举个简单的例子。比如上面的“查2年前”这个词,中文翻译后改成了“查2年前”,我得找个地方放。例如,原始代码表是4E03=亜,和传统的单词“亜“翻译后没有用,所以我就把它留在字体里了。将原编码行“2年前检验”的CD 00 ce 0 b 0947013e 061307改为“2年前检验”:CD00CE094E03E01307。然后游戏会从原来的4 e03 =“Cue”中提取修改后的“的”字。而这个新的码表和字体的对应关系就是导入文本的码表,也就是修改后的码表。这需要重新编辑代码表。以上是对码表的简单介绍。有了大概的概念之后,我们再来看字体部分,先简单了解一下字体和码表的关系。最后一句讲了最基本的ROM解读,那么ROM中的字体是什么样子的呢?举个例子:这是一个小字体库,里面有一把超级刀。看右边的信息可以看到字体是8X8以下,1bpp(2色),主要用来标注游戏中一些特殊名词的上标。文字字体为16X16的1bpp(2色)。提示:一般用于判断字体的模式有1bpp(2色)、2bpp(4色)、4bpp(16色)、8bpp(256色)。可以观察游戏中的字体。如果字体有阴影或者边缘模糊(抗锯齿),一般是4色以上。另外,如果色板信息在字体库附近,从色板的结构也可以大致判断出字体的显示方式(比如是2色、4色还是16色的色板)。
图片方面,以援助团为例说明:这几场会比较难。
辅助组中的图片文件一般分为三部分:
平铺文件:即主图形文件。
映射文件:它控制平铺的位置,类似于图片中的文本。
调色板文件:调色板文件
以上三个文件都是压缩的。相应的文件扩展名是:
NCLR NSCR NCGR
图像导出:
首先,如果有调色板压缩文件。NCLR_,先把它当做一个可用的PAL文件来处理。
方法是用CrystalTile打开这个压缩文件,在十六进制编辑器(视图)状态下选择LZ77数据搜索(工具),点击全文搜索,你可能会找到很多,然后点击解压-& gt;全部解压后应该只能解一个文件,然后用CT打开解压后的文件,点击0x28,选择GBA 8BPP,在调色板选项中选择转换为调色板,然后点击导出软件调色板(Palette)将其转换为PAL格式,但是此方法和下一方法转换的PAL文件的前0x10和0x 165438+可以转换。
另一个麻烦的方法是使用CrystalTile(CT)打开这个压缩文件。在十六进制编辑器(查看)状态下,选择LZ77数据搜索(工具),点击全文搜索,你可能会找到很多,然后点击解压-->;全部解压后应该只能解一个文件,把解压后的文件改成p.dmp(扩展名方便,文件名可选),然后用VBA随便打开一个gba文件(其实随便,我自己生成了1个空文件,把扩展名改成了gba),打开内存查看器,点击读取,选中刚才的p.dmp。然后用4FFFFD8填充地址(提取的文件是从0x28开始的颜色信息),关闭内存查看器,打开色轮查看器,点击保存BG,这样就把NCLR_文件变成了我们常用的PAL文件。
接下来解压NCGR_文件,比如命名为1.bin,然后解压NSCR_文件,比如命名为2.bin,然后自己写一个批处理文件(写一个副本*。用记事本的bin /b out.bin,然后把txt改成bat)。运行时,这两个解压缩文件会合并在一起。用UE或者其他十六进制编辑器打开合并后的out.bin,找到RGCN,其中记录R +0x30的地址是瓦片地址,找到RCSN,其中记录R +0x24的地址是地图地址。
最后打开CrystalMAP,相应的填写磁贴地址和地图地址。BG宽度一般是256,高度一般是192(实际是256,从地图数据文件的大小可以算出地图数据部分是2048字节,也就是1024个瓦片,横向是32,纵向是32,所以高度和宽度都应该是256。但是DS的屏幕只有256x192,其余的都无法显示,这是在写导入部分的时候发现的。两张数据不同的图片可能不一样。刚刚转换的PAL文件在颜色上加载,颜色是16色模式还是256色模式要看具体图片。最后选择地图拼图(编辑),确定,最后导出。
有些图片没有NSCR_文件,一般是16色。没有地图数据,需要慢慢手动拼出来(感觉像OAM拼图,但你没学过OAM数据)。
ds图片的导出方法大致相同。
-
修改后导入:
一般来说,图片的导入是导出的逆过程,或者说就像导出的时候用CM显示图片,然后选择导入(编辑),然后把文件拆分成两个文件,只是按照图块数据和地图数据文件的文件头拆分,然后分别压缩,改成原来的文件名,替换原来的文件。
但是,这个导入过程和上述导出过程的关系,就像整合和分化一样。出口简单,进口相对困难。因此,最好分析文件中的数据信息:
发现解压缩的图块文件的头中的48个字节是:
4E FF FE 00 01 XX XX XX 10 00 00 01 00
52 41 48 43 YY YY YY YY
00 00 00 00 00 00 00 00 00毫米毫米毫米18 00 00 00 00
其中XX部分从地址0h开始计数,后面的字节数即文件大小排在最后,YY部分从地址10h开始计数,后面的字节数即文件大小-10h,即yyyyyy = xxxxxxxx-10h,ZZ部分不理解,Khan和MM部分从地址30h开始。即文件大小为-30h,即mmmmmm = xxxxxxxx-30h,这样就可以重新写一个磁贴文件了。
如果图片是256色图片,大小为256x192,那么平铺文件的大小应该是256x192+48=49200(C030)。我们可以写一个这么大的空文件,然后把文件头改成。
52 47 43 4E法郎法国法郎C0法郎法国法郎
52 41 48 43 20 C0 00 00
00 00 00 00 00 00 00 00 00 00 00 C0
ZZ部分与原TILE文件一致,然后用CT打开这个只有头的文件,将窗口大小改为256x192,偏移量设为30(本例为十六进制),然后直接导入修改后的BMP文件并保存,解压缩后的TILE文件就完成了。
然后查看映射文件中的头数据:
52 43 53 4E FF FE 00 01 XX XX XX 10 00 01 00
4E 52 43 53 YY YY YY YY NN
嗯嗯嗯
这里的XX,YY,MM的意思和TILE里的一样,NN NN是图像的宽度,PP PP是图像的高度,ZZ也不清楚。理论上地图文件的大小应该是(256/8)x(192/8)x2+36 = 1572,但是找到了原来的ROM。ROM中的原地图数据是256x256,也就是说图片是按照大小为256的正方形处理的,游戏显示时只显示高度为192的顶部,这样就可以写一个大小为2084(0824)的文件,从文件头直接发送原副本,然后从24h开始写000010002003。
最后是压缩问题,DS有Wi-Fi,所以我的解决方案是Wi-LZ77(伪压缩,这次是真伪压缩,用的是压缩格式,但是没有起到实质性的压缩,只是文件变成了原来的1.125倍多4个字节,然后汗)。
具体方法是新建一个空文件,先将10(LZ77压缩的符号)写入文件,然后写入待压缩文件的大小(3个字节,高位在后),再将00写入文件,从待压缩文件中读取8个字节,写入文件。循环写00再写8字节的过程,直到所有要压缩的文件都读完,生成的文件是伪的。
原则:
让我们从调色板开始,它是一种普通的256色PAL格式。颜色数据从0x18开始,每四个字节代表一种颜色。最后一个字节是00。前三个字节分别代表R(红)、G(绿)、B(蓝),每个字节的取值范围为0x00-0xff。但是GBA和DS的调色板是用两个字节来表示的。算法如下。[G/8]和[R/8]转换成二进制,取后五位组成一个15位的数,然后在前面加一个零,最后把数转换成十六进制,高位在后面。
注意:[]是一个整数函数,所以GBA和DS上最接近的两种颜色的RGB值的最小差值是8,这使得渐变效果非常不理想,大部分都能看到颜色层次。
示例:正常256色PAL格式的调色板中的颜色数据为00 18 28 00,其中第一个00代表R:0,18代表G:24,28代表B: 40,bin([B/8])= bin(5)= 0010658。bin([g/8])= bin(3)= 0001x 1460,bin ([r/8]) = bin (0) = 00000,然后连接成一个16的数字:0001065438。
DS ROM中的NCLR文件是从0x28开始的彩色数据。
先说瓦片数据和地图数据。这里的瓦片只有8×8,每个瓦片就像一个字体,这些瓦片的生成原理和生成码表一样。一般在图中,瓷砖是先入先出,然后依次往下排。如果它们与前面的图块相同,将被跳过。这样,用较少的图块记录一幅图片,并生成它们的发射顺序,即地图数据。一般地图数据都是双字节的(有的是单字节的),高位一般在后面,有时高位代表特效(如水平翻转、垂直翻转等)。).有兴趣的朋友可以自己研究一下,不过好像是在GBA系统参考)。特效CM可以正常显示,但修改后CM在导入时只会处理双字节的低位,有些特效代码还得手动清除。
其实我一直都是按照文字和文字的关系来理解瓦片数据和地图数据的,很好理解,就像我记忆定理的时候总喜欢靠在几何上一样,让我记忆深刻。
所以,在这里,裂缝是完整的。
现在该翻译了。这个没什么好说的。个人汉化基本上是翻译和打磨。直接将文本扩展或缩小到相应的部分。
如果以上都没有问题,进口就是小问题了。
另外推荐LZ给中国人介绍一些容量小的简单游戏,可以试试太空入侵者。
破解简单,文字量也不大。
LZ,先学会汉化,再考虑难的:
我自问有些基础,但是尝试破解冥界之战之类的东西还是有很多麻烦。个人真的没有能力和精力。
我在A9VG学汉化的时候学的。也可以多去看看。汉化的具体例子很多。
此外,ACG和明星集团都是技术实力雄厚的集团。如果LZ这么说,感觉HH游戏很简单。不喜欢就玩日版。没有人会强迫你。
修改图片文字也需要破解,也需要导出文字图片,和一个中国游戏一样,好吗?