主题 : 【原创】【讨论】世嘉土星游戏汉化教程1
YZB
级别: 超级版主

UID: 12451
精华: 6
发帖: 19097
威望: 173 星
金钱: 2015 浮游币
贡献值: 10169 点
好评度: 54867 点
人气: 4322 点
在线时间: 19723(时)
注册时间: 2004-10-02
最后登录: 2024-11-28
楼主  发表于: 2021-11-16 11:39

【原创】【讨论】世嘉土星游戏汉化教程1

管理提醒: 本帖被 YZB 执行加亮操作(2021-11-28)

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


很早以前,很多人询问过我,想让我写个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校检数据在尾部,看下图)


从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个文件-_-)所以对于这些游戏,千万不能在光盘内增加或者减少文件数量。

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


最后老规矩,附件带有一个压缩包 ss_make_iso.rar (1155 K) 下载次数:23 ,压缩包里面带有一个全版本通用的ip文件,解压这个压缩包以后,虚拟光驱载

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

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



另外一个压缩包为游戏,特意选了一个很小的用来做测试 AI Shougi (Japan).zip (1835 K) 下载次数:7

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


by SGGG_yzb2021.11.16
[ 此帖被YZB在2021-11-16 12:44重新编辑 ]
本帖最近评分记录:
  • 人气:+5(kona) 辛苦了,送你 1 点人气
  • 好评度:+5(zengzidane) 授之于渔,功德无量!
  • Internet那么大,哪里不是我的家
    级别: 模拟小生
    UID: 321917
    精华: 0
    发帖: 123
    威望: 0 星
    金钱: 7 浮游币
    贡献值: 17 点
    好评度: 367 点
    人气: 0 点
    在线时间: 193(时)
    注册时间: 2022-01-03
    最后登录: 2023-01-14
    沙发  发表于: 2022-01-06 14:40

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


    hutianlu 于 2022-01-06 15:33 补充内容:
    这就是那个DC汉化教程 [upload=1]
    OK兄弟们!全体目光向我看齐!看我看我!
    Internet那么大,哪里不是我的家
    级别: 模拟小生
    UID: 321917
    精华: 0
    发帖: 123
    威望: 0 星
    金钱: 7 浮游币
    贡献值: 17 点
    好评度: 367 点
    人气: 0 点
    在线时间: 193(时)
    注册时间: 2022-01-03
    最后登录: 2023-01-14
    板凳  发表于: 2022-01-08 12:15

    回 16楼(YZB) 的帖子

    感谢大佬!我这就去研究一下crystaltile,如果有不会的还会来向您请教的
    OK兄弟们!全体目光向我看齐!看我看我!
    Internet那么大,哪里不是我的家
    级别: 模拟小生
    UID: 321917
    精华: 0
    发帖: 123
    威望: 0 星
    金钱: 7 浮游币
    贡献值: 17 点
    好评度: 367 点
    人气: 0 点
    在线时间: 193(时)
    注册时间: 2022-01-03
    最后登录: 2023-01-14
    地板  发表于: 2022-01-10 13:03

    再次请教一个问题:怎么样能在Winhex里显示日文?
    我在其他的教程里看到别人的Winhex里能显示日文,并且告诉在“基本设置”里能够选择添加日文字符集,但是我的基本设置里却不能添加日文字符集啊……只有西欧语言和越南语等等几个……
    如果Winhex能显示日文的话那找文本岂不是更容易了?我在一堆文件里挑出来了几个疑似文本的文件,打算一会测试一下
    OK兄弟们!全体目光向我看齐!看我看我!
    Internet那么大,哪里不是我的家
    级别: 模拟小生
    UID: 321917
    精华: 0
    发帖: 123
    威望: 0 星
    金钱: 7 浮游币
    贡献值: 17 点
    好评度: 367 点
    人气: 0 点
    在线时间: 193(时)
    注册时间: 2022-01-03
    最后登录: 2023-01-14
    草席  发表于: 2022-01-11 22:15

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

    那么接下来应该怎么办呢?字库我目前没找到,关键词看了一圈也没有,毫无头绪QAQ  
    OK兄弟们!全体目光向我看齐!看我看我!
    Internet那么大,哪里不是我的家
    级别: 模拟小生
    UID: 321917
    精华: 0
    发帖: 123
    威望: 0 星
    金钱: 7 浮游币
    贡献值: 17 点
    好评度: 367 点
    人气: 0 点
    在线时间: 193(时)
    注册时间: 2022-01-03
    最后登录: 2023-01-14
    5楼  发表于: 2022-01-12 17:23

    回 20楼(YZB) 的帖子

    谢谢~
    我这就去试试
    OK兄弟们!全体目光向我看齐!看我看我!
    Internet那么大,哪里不是我的家
    级别: 模拟小生
    UID: 321917
    精华: 0
    发帖: 123
    威望: 0 星
    金钱: 7 浮游币
    贡献值: 17 点
    好评度: 367 点
    人气: 0 点
    在线时间: 193(时)
    注册时间: 2022-01-03
    最后登录: 2023-01-14
    6楼  发表于: 2022-01-12 18:35

    回 20楼(YZB) 的帖子

    非常不幸……果然没用Shift-J
    那么该怎么样找到游戏对应的专用码表呢?
    OK兄弟们!全体目光向我看齐!看我看我!
    Internet那么大,哪里不是我的家
    级别: 模拟小生
    UID: 321917
    精华: 0
    发帖: 123
    威望: 0 星
    金钱: 7 浮游币
    贡献值: 17 点
    好评度: 367 点
    人气: 0 点
    在线时间: 193(时)
    注册时间: 2022-01-03
    最后登录: 2023-01-14
    7楼  发表于: 2022-01-13 20:09

    回 23楼(YZB) 的帖子

    原来是这样,居然需要自己制作码表┭┮﹏┭┮我有事儿干了
    是不是得到游戏字库之后制作码表会更加容易呢?有没有可能同一个系列、工作室的游戏都是用一款码表呢?
    那么游戏内字库的大小大概是多少kb呢?或者字库有没有可能藏在一个大文件里?我这款游戏里有5个比较大的文件,加起来45MB,他们都是SAKURA开头随后写的编号,而且没有后缀,我在考虑字库有没有可能藏在里面
    或者说字库常见的格式都是什么?.bin?.all?或者.snd?
    OK兄弟们!全体目光向我看齐!看我看我!
    Internet那么大,哪里不是我的家
    级别: 模拟小生
    UID: 321917
    精华: 0
    发帖: 123
    威望: 0 星
    金钱: 7 浮游币
    贡献值: 17 点
    好评度: 367 点
    人气: 0 点
    在线时间: 193(时)
    注册时间: 2022-01-03
    最后登录: 2023-01-14
    8楼  发表于: 2022-01-13 22:29

    回 26楼(YZB) 的帖子

    我嘞个大去,居然是贴的图片……RED好懒啊(汗)
    不过我感觉游戏内应该会有字库的,因为本作有6个短片剧情,其中还是有一部分对话的,只不过我现在也没找到那部分对话的文本和字库……
    那么该怎样鉴别游戏中的对话到底是图片还是文字呢?
    修改图片是不是比修改文字更容易呢?
    具体应该怎样修改图片呢?
    (求知的眼神)
    OK兄弟们!全体目光向我看齐!看我看我!
    Internet那么大,哪里不是我的家
    级别: 模拟小生
    UID: 321917
    精华: 0
    发帖: 123
    威望: 0 星
    金钱: 7 浮游币
    贡献值: 17 点
    好评度: 367 点
    人气: 0 点
    在线时间: 193(时)
    注册时间: 2022-01-03
    最后登录: 2023-01-14
    9楼  发表于: 2022-01-14 09:44

    回 28楼(YZB) 的帖子

    大佬太敬业了,ღ( ′・ᴗ・` )比心
    OK兄弟们!全体目光向我看齐!看我看我!
    Internet那么大,哪里不是我的家
    级别: 模拟小生
    UID: 321917
    精华: 0
    发帖: 123
    威望: 0 星
    金钱: 7 浮游币
    贡献值: 17 点
    好评度: 367 点
    人气: 0 点
    在线时间: 193(时)
    注册时间: 2022-01-03
    最后登录: 2023-01-14
    10楼  发表于: 2022-01-20 13:39

    今天偶然发现我汉化的这游戏里还是有两条音轨的,貌似是开场动画音乐、警告音和一首结局歌


    之前一直都没发现,所以镜像里也没加音轨,重构镜像的时候搞了一下音轨,结果虚拟光驱根本加载不进去还报错,这是啥情况呢?
    对了这个游戏我手头的cue和你实例的cue格式不太一样,我传上来给你看一下吧 ,英文名那个是原版cue,1是我改过的cue
    CUE.rar (1 K) 下载次数:2
    OK兄弟们!全体目光向我看齐!看我看我!
    Internet那么大,哪里不是我的家
    级别: 模拟小生
    UID: 321917
    精华: 0
    发帖: 123
    威望: 0 星
    金钱: 7 浮游币
    贡献值: 17 点
    好评度: 367 点
    人气: 0 点
    在线时间: 193(时)
    注册时间: 2022-01-03
    最后登录: 2023-01-14
    11楼  发表于: 2022-01-20 13:43

    还有就是我用yabause打开原版的CUE文件,只会出现飘落一片樱花叶的特效,然后开场动画和游戏内容都没有加载;打开修改过后的CUE也是同理,这是啥情况?
    OK兄弟们!全体目光向我看齐!看我看我!
    Internet那么大,哪里不是我的家
    级别: 模拟小生
    UID: 321917
    精华: 0
    发帖: 123
    威望: 0 星
    金钱: 7 浮游币
    贡献值: 17 点
    好评度: 367 点
    人气: 0 点
    在线时间: 193(时)
    注册时间: 2022-01-03
    最后登录: 2023-01-14
    12楼  发表于: 2022-01-20 22:54

    回 33楼(YZB) 的帖子

    我这个确实不是redump,我是从emu.jy6d.com/v/20211208075220.html上面下载的
    这种一个bin+一个cue的游戏文件也没啥问题吧,我只是觉得redump镜像太多看着闹心
    我用酒精120刻录cue,土星实机能读取的,这应该就没啥问题吧
    OK兄弟们!全体目光向我看齐!看我看我!
    Internet那么大,哪里不是我的家
    级别: 模拟小生
    UID: 321917
    精华: 0
    发帖: 123
    威望: 0 星
    金钱: 7 浮游币
    贡献值: 17 点
    好评度: 367 点
    人气: 0 点
    在线时间: 193(时)
    注册时间: 2022-01-03
    最后登录: 2023-01-14
    13楼  发表于: 2022-01-21 21:59

    回 35楼(YZB) 的帖子

    我去,原来是这个原因啊,那么是不是完全汉化结束之后把iso再变成bin,然后对应好cue文件的时间绝对值,音频就能正常播放了?
    OK兄弟们!全体目光向我看齐!看我看我!
    Internet那么大,哪里不是我的家
    级别: 模拟小生
    UID: 321917
    精华: 0
    发帖: 123
    威望: 0 星
    金钱: 7 浮游币
    贡献值: 17 点
    好评度: 367 点
    人气: 0 点
    在线时间: 193(时)
    注册时间: 2022-01-03
    最后登录: 2023-01-14
    14楼  发表于: 2022-01-21 22:16

    回 37楼(YZB) 的帖子

    感谢,那我就放心了
    OK兄弟们!全体目光向我看齐!看我看我!