克蓝娜德吧 关注:59贴子:622
  • 12回复贴,共1

看到的nds基本破解教程(——转自扑家)

只看楼主收藏回复

 拿到一个新ROM,个人习惯看看此ROM的文本是不是用标准的Shift-JIS编码,如果是的话那就可以省去做码表的功夫了。那如何判断一个ROM 是否用Shift-JIS编码的呢?
  首先,用模拟器或者NDS运行游戏,记录下游戏开头的第一句话。如降魔灵符传的第一句话是“今は昔”,然后在Shift-JIS-A.tbl里面查找此三个字的编码,结果为:8DA1 82CD 90CC。
  然后用CrystalTile(以后简称为CT)打开降魔灵符传,按CTRL+H切换到十六进制编辑器视图,再选择菜单的码表/导入码表,打开 Shift-JIS-A.tbl,再次选择码表/启用码表。
  按CTRL+F弹出查找窗口,输入“今は昔”的SJIS编码:8DA1 82CD 90CC。按下“查找下一个”,很快就能找到了,如图一所示,为了验证一下,我们来修改下测试吧。将“は昔”的编码修改为“今”的编码,如图二,保存。运行游戏,效果出来了,游戏的第一句话被我们改为“今今今。”了。由此说明了此处的文本正是游戏所用的文本,也说明了此游戏的文本用的编码就是SHIFT- JIS编码。

图一:搜索到“今は昔”的文本

图二:修改为“今今今”

图三:修改测试成功
  到这里先别急着导出文本,游戏字库我们还没找呢!找游戏字库一般的方法就是用CT打开ROM,然后一页一页往下翻,仔细查找。不过这方法效率低,而且很废眼睛,不到万不得已一般不用。个人一般习惯先用NDSTOOL解压ROM,然后在解压出来的文件里面查找。
  把降魔灵符传的ROM放在NDSTOOL目录下,运行_dump.bat,会弹出一个DOS窗口,稍等片刻等它自动关闭后就解压完成了。
进入data目录,下面还有几个子目录,根据目录的名称可以猜测:
data:游戏数据目录
font:字库目录
gra:图形目录
scenario:游戏场景
sound:声音
  一般font目录下的文件就是该游戏的字库,如果没有该目录的话各位可以搜索文件名中含有font的文件,一般来说这个文件也就是字库。
  进去font目录,发现有四个文件,文件名为Font**.NFTR,其中的**是代表字体的宽度,单位为像素。本游戏的字体宽度是12像素的(可在游戏里面截图,然后在画图里面放大数下宽度为几个像素),所以推测Font12.NFTR文件就是此游戏的字库文件。
  下面再来验证一下。用CT打开Font12.NFTR,选择菜单的视图/Tile视图,然后在右边的属性那里设置宽度为11,高度为12,颜色格式为单色1BPP,然后再使用CTRL+左右键进行微调后就可以看清字库了。大家可以把日文假名都抹掉然后在游戏里面看看还会不会显示日文假名。选中日文假名的第一个假名“ぁ”,选择菜单的视图/Tile编辑器,按CTRL+D调出Tile编辑器窗口,一直点击修改Tile抹掉全部假名,最后保存。

图四:本游戏的字库

图五:利用CT修改字库
  最后运行_pack.bat就可以把之前解压出来的文件打包成ROM了,生成的文件名为pack.nds,运行测试一下此ROM,如图六,发现日文假名都不显示了,从而验证了Font12.NFTR这个文件就是该游戏所用的字库。



1楼2012-04-13 22:06回复

    图六:抹掉日文假名后的效果
      接下来就是要导出文本了。首先要找到文本在ROM里面的开始地址和结束地址。可以在之前查找到的文本“今は昔”处向上一直翻页,来到文本的最开始处,如图,把光标放在文本的开头,查看左下方显示的光标地址:0058BA36,这个地址就是开始地址,记录下来吧!同样,一直向下翻页可以找到结束地址:005C883E。
      有了这两个地址我们就可以开始导出文本了。运行WQSG 导出(导入) 工具,如图,分别点击ROM和码表选择降魔灵符传的ROM和Shift-JIS-A.tbl码表,然后在开始地址和结束地址处填上之前我们找到的地址,之后再按开始键就可以导出文本了。
    导出的文本如下:
    0058BA36,12,そんな中……
    0058BA43,38,未だ神の存在が色浓く残る 小さな村に
    0058BA74,14,泰平の世ゆえに
    0058BA83,10,职を失った
    0058BA9B,32,x四人の忍びがたどり着いた……
    0058BAC1,1,x
    0058BAC3,2,4
    0058BACF,66,やけに风が强いなぁ~。 あ、おじじ様。 や~っと村についたよ~!
    0058BB2A,1,↙
    0058BB38,1,↙
    0058BB41,1,↙
    0058BB43,2,@
    0058BB4A,32,おお! なかなかいい村じゃな。
      呵呵,发现好多乱码吧,大家可以修改下码表,把前面的半字节部分都删除,只保留从8140= 开始的部分,然后再导出文本。
      导出文本然后就交给翻译来翻译吧,翻译好后做导入码表来导入,以及做中文字库,完成这些工作后一个汉化游戏就诞生了!
    下面就用开头处的文本来教大家怎么做码表和字库吧。
    开头部分的日文文本:
    005B2E3F,8,今は昔。
    005B2E5C,12,太古より続く
    005B2E6A,24,魔物との戦いも一段落つき
    005B2E96,20,国と国とのいざこざも
    005B2EAC,28,ある程度落ち着いた泰平の世。
    005B2ED9,12,ある时は恐れ
    005B2EE7,26,ある时は敬った神々の存在も
    005B2F12,18,次第に人々の心から
    005B2F26,20,消えようとしていた。
    005B2F5B,18,おおっ、何か発见!
    005B2F85,28,わぁ~っ! きらきらしてる。
    005B2FA3,16,きれ~だなぁ~!
    005B2FCB,18,谁も见てないし……
    005B2FDF,14,贳っちゃおう!
    翻译后:
    005B2E3F,8,在过去。
    005B2E5C,12,太古时代开始
    005B2E6A,24,同魔物的战争渐渐平静
    005B2E96,20,国与国之间的纠纷
    005B2EAC,28,也渐渐消融,进入太平盛世。
    005B2ED9,12,那些恐惧
    005B2EE7,26,被人膜拜的神灵
    005B2F12,18,从人们心中
    005B2F26,20,逐渐消失了
    005B2F5B,18,啊!发现什么了!!
    005B2F85,28,哇~~! 闪闪发光
    005B2FA3,16,好漂亮!!
    005B2FCB,18,没人看见……
    005B2FDF,14,归我了!
      注意此文本不是用指针表导出的文本,对翻译后的文本长度有限制,即翻译后的长度不能超出原日文的长度,否则导入会出现问题。
      翻译好之后接下来就用菜の数来统计字数和生成码表吧。运行菜の数,打开翻译好的文本,点击开始统计字数,之后就会显示统计结果。由于此游戏用的编码是标准的SHIFT-JIS编码,所以选择S-JIS码格式,另外做中文字库的时候一般是修改原日文字库中的日文汉字部分,而在SHIFT-JIS编码中第一个汉字“亜”的编码是889F,所以在开始代码那里填889F,然后按下开始生成新码表就会生成我们所需要的导入码表了。

    图七:利用菜の数生成导入用的码表
    导入码表如下:
    889F=在
    88A0=过
    88A1=去
    88A2=。
    88A3=太
    88A4=古
    88A5=时
    88A6=代
    88A7=开
    88A8=始
    88A9=同
    88AA=魔
    88AB=物
    88AC=的
    88AD=战
    88AE=争
    88AF=渐
    88B0=平
    88B1=静
    88B2=国
    88B3=与
    88B4=之
    88B5=间
    88B6=纠
    88B7=纷
    88B8=也
    88B9=消
    88BA=融
    88BB=,
    88BC=进
    88BD=入
    88BE=盛
    88BF=世
    88C0=那
    88C1=些
    88C2=恐
    88C3=惧
    88C4=被
    88C5=人
    88C6=膜
    88C7=拜
    88C8=神
    88C9=灵
    88CA=从
    88CB=们
    88CC=心
    88CD=中
    88CE=逐
    88CF=失
    88D0=了
    88D1=啊
    88D2=!
    88D3=发
    88D4=现
    88D5=什
    88D6=么
    88D7=哇
    88D8=~
    88D9=
    88DA=闪
    88DB=光
    88DC=好
    88DD=漂
    88DE=亮
    88DF=没
    88E0=看
    88E1=见
    88E2=…
    88E3=归
    88E4=我
      接着就来导入文本吧,运行WQSG 导出(导入) 工具,点击导入,选择ROM以及之前用菜の数生成的导入码表,选择用双字节FFFF填充(不填充的话就会显示多余的乱码文本)。然后点击开始导入翻译好的文本。

    图八:导入文本
      导入完成,接着就是做字库了。用CT打开ROM,选择菜单的工具/NDS文件信息系统,找到之前的字库文件 Font12.NFTR,双击就会自动跳到此文件的地址,然后按之前的设置,正常显示该字库。

    图九:利用NDS文件信息系统
      之后找到光标选中第一个汉字“亜”,按CTRL+D调出TILE编辑器窗口,点击字体选择新宋体,大小为小四,当然其他字体也行,主要是美观问题,确定。然后按TBL打开导入码表(注意此版本的CT只支持UNICODE编码的文本,所以之前要把导入码表另存为 UNICODE编码的文本),这样就可以生成字库了。保存,然后运行游戏看看你所做的成果吧。
    汉化成功!


    2楼2012-04-13 22:06
    回复
      你现在要弄懂最基本的 码表是什么 代码是什么 还有字库与之的联系


      IP属地:四川3楼2012-04-15 02:41
      回复
        你说的这个确实不太懂耶!现在暂时知道ct大概的用法和作用!然后到解读字库这一步还在研究!就是ndstool!比如说我现在把mm2r你们给的打好补丁的版本拿来解压,完了之后就找不到这个教程上面说的Font**.NFTR。然后你说的我去再查查!码表是懂的就是计算机语言二进制与日语的一种换算方式!字库就在这个代码里面,但是用工具换算的是二进制!


        4楼2012-04-15 06:37
        回复
          给你个浅显易懂的讲解
          字库的顺序 对应码表的顺序 怎么来识别这些字呢 就是看码表前面的代码 当你的码表和字库顺序同步了以后 你在游戏里面输入码表上面的代码 游戏里面 就会显示对应字库的字
          比如
          字库 的 “我”对应的是码表 “我”的 4E30(字库和码表匹配)
          如果你更改了 字库的我字的图形 改成了 “你” 那么 如果你的码表没有更改
          那么识别依然是4E30=“我” 但是游戏显示字体是调用字库的图形 这时候 你的码表和字库就不匹配 游戏里面的我字 就会全部变成你字 所以 你用原码表 继续输入“我”的时候 事实上用的 就是4E30这个代码 这个代码对应 字库的 “你” 这时候 码表和字库就不匹配了
          码表只是一个向导。 所以 你输入 我好呀 游戏里的我被替换为你了 游戏里显示的就是你好呀


          IP属地:四川5楼2012-04-15 21:43
          收起回复
            还不理解


            6楼2012-04-16 09:08
            回复
              实际上手了 你就知道了


              IP属地:四川7楼2012-04-16 13:46
              回复


                IP属地:新疆8楼2012-07-19 17:35
                回复
                  其实我一直没懂!


                  9楼2012-07-19 21:06
                  回复
                    我也来个浅显易懂的讲解。游戏里所有字体的位图都存放在字库里,并且每个字都有唯一的编码。如同班里的学生都有自己独特的学号一样,每个学号对应一名学生。同样每个编码都对应一个字。
                    假设“我”字的编码是4E30,游戏中某对话中有“俺”字,假设俺字编码是67F0。如果我们把编码67F0 替换为编码4E30,那么“我”字就会代替“俺”字出现在屏幕上,汉化就是编码替换的过程。
                    


                    IP属地:浙江10楼2012-07-19 23:06
                    回复
                      为了让囧管号早日升到10级的帖子


                      11楼2016-04-14 12:42
                      回复