樱花大战吧 关注:21,286贴子:426,181
  • 19回复贴,共1

【教程】SS土星游戏的破解汉化

只看楼主收藏回复

樱战粉们都知道,樱花大战最早于1996年发售于世嘉的土星(SS)家用游戏机平台上,取得了巨大成功,成为了SS平台上的压轴作品——随后又发售了许多外传作品,SS平台上的樱花大战总共有6部:《樱花大战》、《樱花大战2 ~愿君平安~》、《樱花大战 花组通信》、《樱花大战 花组对战方块》、《樱花大战 蒸汽广播节目》、《樱花大战 帝击画报》
但是重点是什么呢?SS主机由于双CPU的特殊设计原因导致游戏开发困难,平台游戏较少,而汉化游戏更是少!仅有22款!其中樱花大战的汉化作品一个都没有!
今日楼主在网上冲浪时偶然发现一篇高质量文章讲解如何汉化SS游戏,考虑到樱花大战外传作品的质量都很高而且都没有汉化,就在此分享一下~
如果你有意愿参与游戏汉化,并且需要游戏源文件的话请来这里:https://tieba.baidu.com/p/7655734434 这是楼主前段时间整理的SS平台《樱花大战》全部游戏光盘映像~
汉化教程原地址:http://bbs.chinaemu.org/read-htm-tid-129016.html 感谢这位大佬的悉心指导!


IP属地:四川1楼2021-12-18 16:34回复
    接下来开始内容转载


    IP属地:四川2楼2021-12-18 16:39
    回复
      2026-08-01 16:14:12
      广告
      不感兴趣
      开通SVIP免广告
      很早以前,很多人询问过我,想让我写个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后缀名的文件,这些可以不用理会,没有也关系


      IP属地:四川3楼2021-12-18 16:42
      回复
        上面洋洋洒洒的一大堆,其实大部分都是原理解释,真正操作起来就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”
        地址:pan.baidu.com/s/1GX9bBby9VXlZwio1jKPYTw 密钥:SEGA
        压缩包里面带有一个全版本通用的ip文件,解压这个压缩包以后,虚拟光驱载
        入游戏镜像,把游戏 文件全部复制到data目录,然后修改ip.bin文件头部以及第0xf0地址,改成原游戏相同的
        最后双击运行1.bat即可(如果想要修改iso的名字,用记事本打开bat文件,把相应的名字修改即可)
        外一个压缩包为游戏,特意选了一个很小的用来做测试“AI Shougi (Japan).zip”
        地址:pan.baidu.com/s/1H4g6a9iys1NfdBgmUe9PGA 密钥:SEGA
        最后感谢环节,感谢sonic3D大大的资料,感谢组长sky0611的鞭策,以及大伙的支持,欢迎更多人投入到ss dc的怀抱中 ,有不明白的可以跟帖回复
        by SGGG_yzb2021.11.16
        PentiumII于2021.12.18转载


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



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


          IP属地:四川5楼2021-12-18 16:55
          回复
            另外补充一下,虽然ip部分的内存地址一般会被覆盖掉,但是一般也都是从0x06004000开始被覆盖,但是ip是从0x06002000开始的,也就是有0x2000的地址是可以用的,排除掉前面部分,大概还有0x1000地址可以用来写程序或者其他,大概是4kb,也就是0x06003000-0x06004000之间,这点空间写点小程序足够用了,当然也还要具体看游戏是否会用到这里%20如果游戏是从0x0601000开始的话,很可能前面这些空间都可以使用,那就有64kb的使用空间了,排除掉系统的也还有50多kb可以用,用来修改游戏,汉化游戏,放程序足够了,甚至可以放个小型的字库%20再加上ss有4m加速卡可以用,可以说,ss的汉化完全不用担心没有多余的内存空间存放扩充的字库


            IP属地:四川6楼2021-12-18 16:57
            回复
              太硬核了,小白跪了


              IP属地:福建来自Android客户端7楼2021-12-18 18:12
              收起回复
                B先个有分享樱战的up玖瑤君是你吗?


                IP属地:福建来自Android客户端8楼2021-12-20 10:46
                收起回复
                  2026-08-01 16:08:12
                  广告
                  不感兴趣
                  开通SVIP免广告
                  OK我已经掌握重构镜像的大概原理了,只要能找到一个好的翻译和润色,预计半年之内能汉化完这部作品的短片剧情


                  IP属地:四川9楼2021-12-26 16:53
                  回复
                    谁能来当汉化呢?我找了一圈,身边没有会日语的朋友,那么就只能和万能的吧友们合作了


                    IP属地:四川10楼2021-12-26 21:50
                    回复


                      IP属地:江苏11楼2021-12-26 23:10
                      回复
                        问题来了,我想问1+2汉化镜像有了吗!?
                        我刚刚玩完公主的皇冠 简体ss镜像版本,实在太棒。。。要弥补以前没玩的樱1和2


                        IP属地:广东12楼2022-09-11 19:54
                        收起回复
                          太厉害啦,已经收藏帖子啦。感谢分享汉化教程,想学习


                          IP属地:广东13楼2026-06-27 18:38
                          回复