查看完整版本: [-- 【原创】【讨论】世嘉土星游戏汉化教程1 --]

【 浮游城 - Castle in the Sky | 开放邀请注册,PS|SS|WII|DC下载研究中心 】 -> 【 ISO 游戏交流区 | ISO Game Communion 】 -> 【原创】【讨论】世嘉土星游戏汉化教程1 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

YZB 2021-11-16 11:39


本贴原创,转载的话请注明出处


很早以前,很多人询问过我,想让我写个ss游戏的汉化教程,因为原来一直比较忙,这段时间终于比较空闲下来,在我们的组长sky0611的督促下,终于可以静下来慢慢写了

开头第一篇,先来点简单的基础,聊聊ss游戏的运行原理吧,毕竟了解了运行原理才可以比较熟悉的汉化游戏.以下说明全部是我个人经验以及猜测,如果有说得不对的地方,欢迎指正


有关世嘉土星(下面简称SS)的详细的资料可以去看yaba模拟器的维基百科,里面写得很详细
https://wiki.yabause.org/index.php5?title=SH-2CPU

首先ss的内存分为2个区,一个是高段区,大小为0x100000,也就是1m,地址从0x06000000-0x06100000,这部分称为高段区,跑程序 dma复制什么的比较快,一般ss游戏程序方面的文件都是会优先放到这里

另外一个是低段区,大小也为0x100000,也是1m,地址从0x00200000-0x00300000,这部分称为低段区,速度虽然比高段区慢点,但是肉眼是区分不出来的,而且也是可以跑程序的


ss的显存分为vdp1 vdp2
vdp1 大小为512kb 地址从0x5c0000-0x05C80000, vdp1作用一般是做为处理活动块图层

vdp2 大小为512kb 地址从0x5e0000-0x05e80000, vdp2作用一般是做为背景图层

另外还有一个颜色表,地址为0x05F00000,大小为4kb,也就是0x1000,作为vdp1和vdp2图层为16色或者256色的时候当颜色表来使用
想看详细的资料就去上面的网址,里面写得非常详细清楚了.

ss主机在开机以后,会先运行bios,播放bios里面预留的开机动画,在播放期间会进行一系列的操作,各种初始化 以及验证(因为ss主机在国内大部分都是加过直读了的,所以抛开光驱解锁以及原版盘验证这些,那里比较复杂,其实我也不太明白,所以接下来的说明都是默认光驱以及其他验证都是通过的)

在播放完第一段bios动画以后,程序会优先检测是否插上了卡带,是的,你没看错,卡带的优先级别比光盘还要高,在检测到没有插入卡带或者卡带里面的ip头数据和bios对不上才会去读取检测光盘

刚才说到了ip头数据,这里做一下展开说明
因为ss是以cd rom光盘为媒介的,格式又是标准的ISO9660文件系统,而ISO9660文件系统其中有一个定义就是,光盘最开始的32kb是保留的,在这32kb里面可以放其他数据
所以SEGA呢,据我了解应该是从sega cd主机开始就这样玩了,把这32kb拿来放游戏信息以及校检数据,这地方从sega cd到ss到dc都是如此(只是dc读取的不是最开始的32kb而已),可以说是sega的老传统技能了


说回土星,通常我们把这32kb数据称为ip文件,当ss开机以后,没有检测到有卡带插在主机上,或者卡带内的ip文件头部不正确的话,才会去读取光盘的ip文件,也就是光盘最开始的32kb数据,这32kb默认是读取到ss的高内存0x06002000这个地方,32kb也就是0x8000大小,地址也就是从0x06002000-0x0600a000(注意,这里是固定的,不能更改)

把32kb数据读进内存以后,bios播放完第一段动画会跳到06002100这个地方,也就是ip文件的0x100地址这里。(这里重点说一下,这里的地址是指2048的iso格式地址,而不是redump那种2352的bin格式,bin格式因为含有edc ecc校检,所以实际上,在2352的bin格式中每2048字节的数据就会含有一个304字节的扇区数据,用来校检和修正这2048字节的数据是否正确,其中有16个字节扇区头部数据在2048数据的头部,后面剩下的edc ecc校检数据在尾部,看下图)[attachment=111883]

从0x100这里开始就是校检ip数据和显示SEGA那几个大字的地方了,也就是判断这些数据是否和bios内的一致,不一致则返回到bios的9球管理画面




这里继续展开对ip文件的说明,网上应该有比较详细的资料,我这里只简单说一下,ip文件的前0x100字节,是该游戏的信息,比如游戏名字 版本 年份 时间什么的,从0x100开始才是程序入口,显示sega画面,验证数据,最后才进入游戏


这里重点说一下ip头的0xf0这个地址,这个地址非常重要,在程序进入ip文件入口以后,也就是0x100这里,在校检数据以及显示sega画面之后,会根据这个地址(一般这个地址为0x06004000或者0x06010000),把光盘内的第一个文件读取到这个地址中,可以当成该游戏的主程序文件(注意,这里是固定的,不能更改),然后一般的游戏都会直接跳转到这个地址开始运行游戏,另外注意一下,ip在内存中的地址为0x06002000-0600a000,如果主程序的地址为0x06004000的话,就会把ip文件覆盖掉一大部分,所以ip文件大部分后面都是留空的,因为一般都会被主程序覆盖


但是也有一些例外,不走寻常路,比如我遇到过几个capcom的游戏,会把ip文件常驻在内存中,把一些常用的函数放到这里在游戏中调用,或者有的游戏会把主程序文件读进去以后,但不跳到主程序的开头,而是跳过头部N个字节在

总之在显示完sega这几个大字校检正常以后,就可以正式开始各种骚操作了,主动权就回到游戏手中


聊到这里,既然知道了运行原理,那么重构一个iso镜像就很简单了

首先我们把游戏的ip文件抽取出来,然后把游戏文件复制到硬盘里面,最后利用makeisofs这样的制作iso文件的工具就可以很轻松的把游戏镜像制作出来了

(再次注意,对于MODE2/2352的游戏来说,把镜像里面的游戏文件全部复制到硬盘成了一件困难的事情,因为载入虚拟光驱复制某些文件的时候总会遇到提示出错的情况,排除因为直接修改镜像导致edc ecc校检数据不一致的情况以外,原始的redump文件出现这个问题只能是因为使用了MODE2/2352格式,因为MODE2/2352格式减少了大部分的edc ecc数据,节约了容量,这样一张光盘就可以存更多的数据.

但是MODE2/2352格式数据也带来了一个问题,那就是这些数据不能修正了,也就是也有可能从光盘读取进来的这些数据,可能是损坏错误的,所以MODE2/2352数据一般是声音或者CG视频之类的,就算数据有点损坏,最多也就是出点杂音或者花屏之类,总比读进去的是错误的程序,然后运行到这里出现死机 黑屏的时候要好得多


那么怎么区分游戏是否使用了MODE2/2352格式呢,很简单,以redump的bin文件为例子,解压游戏以后会有一个cue文件,用记事本打开这个cue文件,你会看见都是里面都是英文,试着搜索一下这个cue里面是否含有MODE2 2352 之类的字眼,如果没有,就万事大吉了,如果有,就自己想办法提取那些文件吧


当然还有最后一种情况,虽然不是MODE2/2352格式,但是也总是有那么几个文件不能提取出来,对于这些文件,一般是音轨文件的索引,大部分的游戏是不会根据这些索引来定位文件的,所以这些文件可以不用留,这种文件一般名字带有CDDA track之类的字眼或者是.da后缀名的文件,这些可以不用理会,没有也关系


上面洋洋洒洒的一大堆,其实大部分都是原理解释,真正操作起来就2步
1 虚拟光驱载入镜像以后提取ip文件
2 复制游戏文件到硬盘
3 生成iso镜像


这样生成的iso镜像就可以用模拟器测试了(注意一下,某些带有很多音轨游戏直接测试iso话,也许会在游戏中出现黑屏 花屏等现象,那是因为读取音轨出错的现象,如有有音轨,请继续按下面的方法加载音轨以后再测试)

因为iso格式是没有音轨的,如果一个游戏使用了音轨应该怎么办才能加载播放音轨呢(如果游戏只是带有一个音轨的话,那么这个音轨大概率只是警告这是ss盘片的音轨,测试期间可以不用附加上去,到最后完成的时候再考虑是否加入进去)

其实方法也很简单,这里我用附件的游戏来做例子

把你生成的iso和原始的redump文件放在一起,然后用记事本打开原始的cue文件


CATALOG 0000000000000
FILE "AI Shougi (Japan) (Track 1).bin" BINARY
  TRACK 01 MODE1/2352
    INDEX 01 00:00:00
FILE "AI Shougi (Japan) (Track 2).bin" BINARY
  TRACK 02 AUDIO
    INDEX 00 00:00:00
    INDEX 01 00:02:00



这个cue文件里面你会发现带有"AI Shougi (Japan) (Track 1).bin" 这个文件名,把名字改成你的iso名字,注意不能是中文名 ,后缀也要改,以及名字前后的"符号都要保留原样,然后把下面一行的2352改成2048保存就可以了


修改后的cue文件是这样的

CATALOG 0000000000000
FILE "1.iso" BINARY
  TRACK 01 MODE1/2048
    INDEX 01 00:00:00
FILE "AI Shougi (Japan) (Track 2).bin" BINARY
  TRACK 02 AUDIO
    INDEX 00 00:00:00
    INDEX 01 00:02:00
这样用虚拟光驱载入这个cue的时候,就会自动加载音轨了,期间用模拟器测试或者用其他工具重新生成一个打包的bin+cue文件都可以

说到这里,这一期就算讲完了,这篇呢,与其说是汉化教程,还不如说是镜像修改重构教程

因为汉化过程中毕竟要修改很多文件,文件或者减少或者增大,如果单纯对镜像操作的话比较麻烦,重做镜像的话就没有这方面的压力了,寻找字库 文本方面也比较轻松一点,理论上大部分的ss游戏都可以按这个方法来重做镜像,少部分可能因为直接定位LBA读取的游戏例外,目前我没遇到过。

还有注意某些游戏不会以文件名来定位读取,而是按该文件在光盘内的编号来读取(比如说程序会直接指定读取光盘内的第5个文件-_-)所以对于这些游戏,千万不能在光盘内增加或者减少文件数量。

当然重做镜像也有缺点,因为重做后的镜像和原来的镜像相比,相差可以说是非常大,所以制作出来的补丁可能比原来的镜像更大,所以直接分享补丁的方式就不可能了,要分享只能分享整个镜像文件,这样的话会有触犯法律的后果,当然这方面不在我们的讨论范围之类


最后老规矩,附件带有一个压缩包[attachment=111885],压缩包里面带有一个全版本通用的ip文件,解压这个压缩包以后,虚拟光驱载

入游戏镜像,把游戏文件全部复制到data目录,然后修改ip.bin文件头部以及第0xf0地址,改成原游戏相同的

最后双击运行1.bat即可(如果想要修改iso的名字,用记事本打开bat文件,把相应的名字修改即可)[attachment=111884]


另外一个压缩包为游戏,特意选了一个很小的用来做测试[attachment=111886]

最后感谢环节,感谢sonic3D大大的资料,感谢组长sky0611的鞭策,以及大伙的支持,欢迎更多人投入到ss dc的怀抱中 ,有不明白的可以跟帖回复


by SGGG_yzb2021.11.16

YZB 2021-11-16 13:02
单独发一下抽取ip文件的方法吧,如果使用压缩包内的ip文件制作出来的镜像不能使用,可以尝试使用原版的ip文件,抽取方法如下
使用虚拟光驱把原始镜像载入以后,使用IsoBuster这个工具(请妆Ρπ搜索下载)
打开 IsoBuster移动到游戏盘符
在卷标上鼠标右键,选择抽取数据-指定节段地址,然后抽取类型选择用户数据-2048,长度选择16,然后点开始抽取,另存为ip.bin文件即可
[attachment=111887]

[attachment=111888]

[attachment=111889]



目前只遇到三国志2 赤壁之战是这样的,因为游戏很多程序使用了ip里面的函数,使用不能替换,只能使用原版的ip文件

ausu 2021-11-16 14:16
看不懂才是最牛鼻的,膜拜大佬,愿主保佑你。。。

gxb 2021-11-16 15:25
顶,现在搞汉化的已经没有十几二十年前那么多了

老陆 2021-11-16 20:06
据说光荣的游戏汉化破解比较麻烦

xiong_online 2021-11-17 08:00
终于有SS相关的教程了,谢谢分享,幸苦了

milkbaby 2021-11-17 09:45
感谢分享教程,汉化不易,感谢汉化组作出的努力!

YZB 2021-11-18 13:03
写了很多都是原理解释,其实这篇教程就是写怎么重新做iso,认真看一下还是很简单的,要改的地方也只有一处,复制文件点一下bat就完事了

YZB 2021-11-18 13:03
年纪越来越大,压力也越来越大了,养家糊口,力不从心了啊

YZB 2021-11-18 13:06
大厂的游戏都比较难,因为ss是cd格式,而且光盘放电脑里面所有的文件都能看到,所有很多游戏厂商为了保护资源都会做点加密压缩之类的防范防范,如果不会点程序和汇编的话很难搞

fragranse 2021-11-20 00:25
想确定下:
真实光盘存在的是话,是直接2048这种格式,还是redump 2532 这种格式的?
也是想知道光盘格式本身带不带这种校检啊

黑猫冬冬 2021-11-20 21:52
啥时候把梦幻之星DC版汉化一下就给力了。

YZB 2021-11-22 00:11
扇区信息的数据光盘上肯定会有的,当年的nero我记得刻录数据碟的时候就可以选择刻录成哪种格式

lanyer 2021-11-22 13:00
支持技术分析。早年做过ps,ss光盘研究。反而现今的dvd介质更简单一些。

YZB 2021-12-03 21:16
另外补充一下,虽然ip部分的内存地址一般会被覆盖掉,但是一般也都是从0x06004000开始被覆盖,但是ip是从0x06002000开始的,也就是有0x2000的地址是可以用的,排除掉前面部分,大概还有0x1000地址可以用来写程序或者其他,大概是4kb,也就是0x06003000-0x06004000之间,这点空间写点小程序足够用了,当然也还要具体看游戏是否会用到这里

如果游戏是从0x0601000开始的话,很可能前面这些空间都可以使用,那就有64kb的使用空间了,排除掉系统的也还有50多kb可以用,用来修改游戏,汉化游戏,放程序足够了,甚至可以放个小型的字库

再加上ss有4m加速卡可以用,可以说,ss的汉化完全不用担心没有多余的内存空间存放扩充的字库

hutianlu 2022-01-06 14:40
YZB大佬,我前来求教啦~
根据您的教程我在多次失败之后搞懂了Winhex的操作,成功重构了《樱花大战 花组对战方块》的镜像(*^▽^*)
在此向您表示感谢!
既然重构镜像成功了,接下来该进行那一步操作呢?比如说提取文本?如果说真是提取文本的话该用哪款软件操作呢?我手里有一篇DreamCast游戏汉化的教程,既然都是SEGA的游戏机,是否汉化原理相同呢?这篇教程中的操作是否适用于Saturn的游戏汉化?
感谢大佬的教程,以后我研究破解就跟您走了∠(°ゝ°)
[upload=1]


hutianlu 于 2022-01-06 15:33 补充内容:
这就是那个DC汉化教程 [upload=1]

YZB 2022-01-07 22:17
90%的家用机或者掌机的汉化流程都是差不多的,基本上就是找字库,找文本,导出文本,翻译,导入文本

所以学会了其中一个平台的汉化,其他品台也差不多一样会了

当然流程虽然是一样,但是如果涉及到修改原游戏汇编程序的话,那这里就不一样了

不过一般情况下是不会涉及到原游戏的程序修改的,除非是需要扩充字库,扩充文本或者是原游戏的文件带有压缩加密之类的,不然就不需要修改原游戏的程序


学汉化的话,16进制编辑器是基本操作,自己需要找一款熟悉的16位编辑器(推荐winhex)


如果你是初学者,找不到文本,字库,可以使用下面几种方法

1   按文件名和文件名的后缀判断,一般字库是带有font  fon  fnt 字样的
2   使用修改替换法,当你怀疑某个文件是字库或者文本的时候,可以用16进制编辑器把这个文件大批量修改一下,或者全部改成00,然后重新制作iso,进游戏查看

3   如果你会模拟器调试的话,可以直接用模拟器调试追踪


最后,请网上搜索CrystalTile或者CrystalTile2的使用教程,这个软件也可以说是汉化的基础

hutianlu 2022-01-08 12:15
感谢大佬!我这就去研究一下crystaltile,如果有不会的还会来向您请教的

hutianlu 2022-01-10 13:03
再次请教一个问题:怎么样能在Winhex里显示日文?
我在其他的教程里看到别人的Winhex里能显示日文,并且告诉在“基本设置”里能够选择添加日文字符集,但是我的基本设置里却不能添加日文字符集啊……只有西欧语言和越南语等等几个……
如果Winhex能显示日文的话那找文本岂不是更容易了?我在一堆文件里挑出来了几个疑似文本的文件,打算一会测试一下

hutianlu 2022-01-11 22:15
 我测试出游戏中的一部分文本了!将文件抹除之后游戏能够正常运行且竞技模式结束后会出现部分花屏,说明找到了竞技模式下各人物的贴图与文本文件~

那么接下来应该怎么办呢?字库我目前没找到,关键词看了一圈也没有,毫无头绪QAQ  [attachment=112257]

YZB 2022-01-11 22:41
引用
引用第18楼hutianlu于2022-01-10 13:03发表的  :
再次请教一个问题:怎么样能在Winhex里显示日文?
我在其他的教程里看到别人的Winhex里能显示日文,并且告诉在“基本设置”里能够选择添加日文字符集,但是我的基本设置里却不能添加日文字符集啊……只有西欧语言和越南语等等几个……
如果Winhex能显示日文的话那找文本岂不是更容易了?我在一堆文件里挑出来了几个疑似文本的文件,打算一会测试一下


在winhex的选项里面有字体选项,如果里面没有日文字符集的话可能需要安装吧,winhex软件使用问题你可以搜索看看
不过还有另外一种显示日文编码的方法,那就是用CrystalTile2

CrystalTile2(以下简称ct2)里面有强大的码表显示功能,你可以自己写个码表,然后用ct2载入显示码表内的字符
在码表栏里选择码表,选完以后,选择启用码表就可以了 [attachment=112258]


启用以后 [attachment=112259]





不过我遇到的很多ss游戏,大部分是不会使用标准的日文sj编码的,绝大部分是用了自定义编码(大概是因为ss内存和显存太小的原因吧)
我上传一个日文编码的码表集吧,你可以碰碰运气

hutianlu 2022-01-12 17:23
谢谢~
我这就去试试

hutianlu 2022-01-12 18:35
非常不幸……果然没用Shift-J
那么该怎么样找到游戏对应的专用码表呢?

YZB 2022-01-12 20:51
对应的码表只能自己做

首先得找到存放文本脚本的文件

当找到这个文件以后,先想办法找到游戏中出现的文本是在这个文件的哪个一个位置(1 winhex打开这个文件粗略的查看结构,如果看不出来就大批量的修改这个文件,达到游戏中出现文本的画面,文字出现异常为止,然后逐步减少,最后定位是哪个字节可以改变文本)

当定位到在一个文件里面的哪一个字节可以改变游戏中出现的文字的时候,就可以观察规律了。
大部分的日文游戏是2个字节代表一个字符,也就是编码,比如sj编码8140就表示空格符号

至于这个游戏,只能自己慢慢查看规律了

hutianlu 2022-01-13 20:09
原来是这样,居然需要自己制作码表┭┮﹏┭┮我有事儿干了
是不是得到游戏字库之后制作码表会更加容易呢?有没有可能同一个系列、工作室的游戏都是用一款码表呢?
那么游戏内字库的大小大概是多少kb呢?或者字库有没有可能藏在一个大文件里?我这款游戏里有5个比较大的文件,加起来45MB,他们都是SAKURA开头随后写的编号,而且没有后缀,我在考虑字库有没有可能藏在里面
或者说字库常见的格式都是什么?.bin?.all?或者.snd?

YZB 2022-01-13 20:59
找到字库以后靠编码当然很容易就可以制作出码表了

字库可能藏在光盘的任何地方,关于字库具体游戏具体分析,一个游戏不代表所有,有的同一个系列也许也可能用不同的格式

一般的字库后缀是fon 之类,snd后缀一般是声音

如果自己实在找不出来,只能批量替换文件测试,如果替换某个文件以后,游戏中的对话字幕全部出现异常(注意是全部,不是一个)那就是字库了

YZB 2022-01-13 21:59
好吧,看了一下这个游戏,你贴图那里使用的不是字库,是一张图片来的,这个游戏应该没有多少文字,所以应该都是使用的贴图,没有使用字库

hutianlu 2022-01-13 22:29
我嘞个大去,居然是贴的图片……RED好懒啊(汗)
不过我感觉游戏内应该会有字库的,因为本作有6个短片剧情,其中还是有一部分对话的,只不过我现在也没找到那部分对话的文本和字库……
那么该怎样鉴别游戏中的对话到底是图片还是文字呢?
修改图片是不是比修改文字更容易呢?
具体应该怎样修改图片呢?
(求知的眼神)

YZB 2022-01-13 23:19
这个问题问得好,正好明天有空,我写个找图片文件的教程吧

hutianlu 2022-01-14 09:44
大佬太敬业了,ღ( ′・ᴗ・` )比心

YZB 2022-01-14 12:41
已发
http://bbs.chinaemu.org/read-htm-tid-129073.html

hutianlu 2022-01-20 13:39
今天偶然发现我汉化的这游戏里还是有两条音轨的,貌似是开场动画音乐、警告音和一首结局歌
[attachment=112355]
之前一直都没发现,所以镜像里也没加音轨,重构镜像的时候搞了一下音轨,结果虚拟光驱根本加载不进去还报错,这是啥情况呢?
对了这个游戏我手头的cue和你实例的cue格式不太一样,我传上来给你看一下吧 ,英文名那个是原版cue,1是我改过的cue
[attachment=112356]

hutianlu 2022-01-20 13:43
还有就是我用yabause打开原版的CUE文件,只会出现飘落一片樱花叶的特效,然后开场动画和游戏内容都没有加载;打开修改过后的CUE也是同理,这是啥情况?

YZB 2022-01-20 21:38
引用
引用第32楼hutianlu于2022-01-20 13:43发表的  :
还有就是我用yabause打开原版的CUE文件,只会出现飘落一片樱花叶的特效,然后开场动画和游戏内容都没有加载;打开修改过后的CUE也是同理,这是啥情况?


为什么我下载的这个游戏的cue是这样的 [attachment=112367]





你这个不是 redump的镜像吧
另外模拟器并不是100%精确模拟,当原版也出现同样问题的话,就可以考虑是镜像有问题或者模拟器支持得不好了

hutianlu 2022-01-20 22:54
我这个确实不是redump,我是从emu.jy6d.com/v/20211208075220.html上面下载的
这种一个bin+一个cue的游戏文件也没啥问题吧,我只是觉得redump镜像太多看着闹心
我用酒精120刻录cue,土星实机能读取的,这应该就没啥问题吧

YZB 2022-01-21 20:48
引用
引用第34楼hutianlu于2022-01-20 22:54发表的 回 33楼(YZB) 的帖子 :
我这个确实不是redump,我是从emu.jy6d.com/v/20211208075220.html上面下载的
这种一个bin+一个cue的游戏文件也没啥问题吧,我只是觉得redump镜像太多看着闹心
我用酒精120刻录cue,土星实机能读取的,这应该就没啥问题吧


直接刻录当然没有问题
但是你现在是重新生成的镜像,而且镜像大小还改变了
仔细查看你的cue,会发现每个音轨都是写了绝对值的起始时间,那么如果你的镜像大小改变的话,这个绝对值的时间就全部都错误了.......

hutianlu 2022-01-21 21:59
我去,原来是这个原因啊,那么是不是完全汉化结束之后把iso再变成bin,然后对应好cue文件的时间绝对值,音频就能正常播放了?

YZB 2022-01-21 22:07
引用
引用第36楼hutianlu于2022-01-21 21:59发表的 回 35楼(YZB) 的帖子 :
我去,原来是这个原因啊,那么是不是完全汉化结束之后把iso再变成bin,然后对应好cue文件的时间绝对值,音频就能正常播放了?


完全汉化结束后可以使用Redump的镜像,载入虚拟光驱重新做一个镜像就可以了

hutianlu 2022-01-21 22:16
感谢,那我就放心了

czg945 2023-02-04 19:52
感谢分享,虽然可能看不懂。


查看完整版本: [-- 【原创】【讨论】世嘉土星游戏汉化教程1 --] [-- top --]


Powered by PHPWind Code © 2003-08 PHPWind
Gzip enabled

You can contact us