主题 : 【分享】关于机战镜像隔断码的一些研究(附带机战F完结篇的静态修改探讨)
级别: 模拟名流
UID: 76310
精华: 10
发帖: 337
威望: 16 星
金钱: 4779 浮游币
贡献值: 0 点
好评度: 1042 点
人气: 0 点
在线时间: 168(时)
注册时间: 2005-11-02
最后登录: 2009-04-26
楼主  发表于: 2006-12-27 00:04

【分享】关于机战镜像隔断码的一些研究(附带机战F完结篇的静态修改探讨)

  近期看了一篇关于汉化PS游戏的教程,其中讲到关于PS镜像的隔断码的问题。现在我把它总结一下,希望对于制造修改器的人有些帮助。
  PS的镜像文件跟我们一般的CD文件有些不同,它除了有要使用的文件数据之外,还有很多的隔断码。如果我们用一款叫CDRWin的刻录软件来复制PS光碟的时候,就会发现PS光碟的扇区格式是Mode Form1 (Data)、Mode Form2 (Audio)、Mode Form2 (Empty)三种。对于Mode Form1 (Data),它是一种纠正能力很强的格式,其中包括了错误修正码ECC和错误侦测码EDC。每个扇区存放2048Byte的数据。而Mode Form2 则是一种纠错能力没有那么强的格式,这种格式只包含了EDC码而没有ECC码。这样一来,一个扇区就不仅仅是放2048个字节了。那它是怎么分布的呢?
  对于Mode2 Form1来说,每个扇区有2353个字节,其中同步字节12个、扇区标题4个、扇区子标题8个、用户数据2048个、EDC4个、ECC276个。因此细心的人会发现,机战的人物数据中会每隔一定字节数目就会出现一断的隔断码,其实那些隔断码就是“前一个扇区的EDC+前一个扇区的ECC+本扇区的同步字节+本扇区的标题+本扇区的子标题”,一共是304个字节。然后有2048字节的用户数据,之后有是304个字节的隔断码……如此类推。
  对于Mode2 Form2来说,每个扇区有2353个字节,其中同步字节12个、扇区标题4个、扇区子标题8个、用户数据2324个、EDC4个。其他说明跟Mode2 Form1类似。
  若这些隔断码被改动的话,对于VGS这些不能直接读取镜像文件的模拟器来说,就会因为数据校验不过而死机,而对于EPS这些可以直接读取镜像文件的模拟器来说,它本身会自动跳过那些隔断码,因此不会造成死机,但是如果把这个镜像文件刻录成碟拿到PS机上玩的话很可能会死机。因此也就是为什么我们建议打了补丁之后要用ECCregen来校验的原因了。
  鉴于以上的说明,我们做修改器的时候就有了一种新的思想。因为用虚拟光驱打开镜像文件然后把里面的文件复制出来的时候,是没有这些ECC、EDC之类的隔断码的,所以数据排列是非常整齐的,这对于制造修改器来说,就可以利用整齐这一点来制造。当文件被修改了之后再直接写入镜像文件中。写入的方法就是避开那些隔断码。刚才说过了,对于Mode2 Form1的用户数据是2048Byte,隔断码是304byte,因此我们写镜像文件的时候可以先找到文件的起始偏移地址,然后写入前2048个字节。之后在镜像文件中直接跳过304个字节,然后又写入2048个字节的数据,如此类推,直到写完。如果想直接从镜像文件中提取没有这些隔断码的数据,也可以先找到起始的偏移地址,然后提取2048个字节,之后偏移304个字节,然后再读取304个字节……

  我这几天发布的α和α外传的人物查看器就是用这种方法实现的。接下来我会继续研究写入的程序。
  以上的方法对于那些有大段隔断码的文件修改非常适用。至于对于那些仅仅有一个字节隔断码的,例如机体数据,暂时还没有找到解决的方法,但用上面的方法,却是可以提取到不含ECC和EDC大段隔断码的机体数据,比起以前来说应该修改更加方便。

  若有什么不明白可以跟帖,一起讨论。
[ 此贴被Triple-E在2006-12-27 15:36重新编辑 ]
本帖最近评分记录:
  • 金钱:10(Triple-E)
  • 金钱:10(Triple-E)
  • 金钱:10(Triple-E)
  • 级别: 模拟名流
    UID: 76310
    精华: 10
    发帖: 337
    威望: 16 星
    金钱: 4779 浮游币
    贡献值: 0 点
    好评度: 1042 点
    人气: 0 点
    在线时间: 168(时)
    注册时间: 2005-11-02
    最后登录: 2009-04-26
    沙发  发表于: 2006-12-27 10:59

    完结篇不是有人做了吗?
    级别: 模拟名流
    UID: 76310
    精华: 10
    发帖: 337
    威望: 16 星
    金钱: 4779 浮游币
    贡献值: 0 点
    好评度: 1042 点
    人气: 0 点
    在线时间: 168(时)
    注册时间: 2005-11-02
    最后登录: 2009-04-26
    板凳  发表于: 2006-12-27 11:36

    如果F完结篇没有什么隔断码的话应该好做,只需要提取纪录机体数据那个文件(用虚拟光驱载入然后复制出来)进行格式扫描就可以得到机体的参数,然后再按照没2048个字节隔304个字节这样写进去。其实写入的程序已经有人做了,我拿来用就行了,至于做修改器我就要一个非常非常详细的,格式明确的解释。每个字节每个参数代表什么都最好有。
    级别: 模拟名流
    UID: 76310
    精华: 10
    发帖: 337
    威望: 16 星
    金钱: 4779 浮游币
    贡献值: 0 点
    好评度: 1042 点
    人气: 0 点
    在线时间: 168(时)
    注册时间: 2005-11-02
    最后登录: 2009-04-26
    地板  发表于: 2006-12-27 12:41

    直接插入的话会牵涉到那304个字节的问题,我打算先复制出来,改好后再写入bin去,这样修改器做起来比较方便。
    级别: 模拟名流
    UID: 76310
    精华: 10
    发帖: 337
    威望: 16 星
    金钱: 4779 浮游币
    贡献值: 0 点
    好评度: 1042 点
    人气: 0 点
    在线时间: 168(时)
    注册时间: 2005-11-02
    最后登录: 2009-04-26
    草席  发表于: 2006-12-27 13:08

    图片:
    那也是,现在提取机体数据的程序已经完成了,其中不含那304个字节的。现在对其做点研究,就可以出炉了。

    两份教程对机体地形适应的解释有些出入,能否讲详细点

    另外,F完结篇的武器数据似乎不是跟在机体后面的,机体那里仅仅有个武器代号而已,那么F完结篇的武器是放在什么地方的呢?而当机体(RR RR SS 00)*n以后的数据又是些什么?
    [ 此贴被sssqq在2006-12-27 15:15重新编辑 ]
    级别: 模拟名流
    UID: 76310
    精华: 10
    发帖: 337
    威望: 16 星
    金钱: 4779 浮游币
    贡献值: 0 点
    好评度: 1042 点
    人气: 0 点
    在线时间: 168(时)
    注册时间: 2005-11-02
    最后登录: 2009-04-26
    5楼  发表于: 2006-12-27 13:28

    武器5之后的纪录是什么来的?
    [ 此贴被sssqq在2006-12-27 15:16重新编辑 ]
    级别: 模拟名流
    UID: 76310
    精华: 10
    发帖: 337
    威望: 16 星
    金钱: 4779 浮游币
    贡献值: 0 点
    好评度: 1042 点
    人气: 0 点
    在线时间: 168(时)
    注册时间: 2005-11-02
    最后登录: 2009-04-26
    6楼  发表于: 2006-12-28 23:26

    我看的那篇是关于PS游戏汉化的教程
    级别: 模拟名流
    UID: 76310
    精华: 10
    发帖: 337
    威望: 16 星
    金钱: 4779 浮游币
    贡献值: 0 点
    好评度: 1042 点
    人气: 0 点
    在线时间: 168(时)
    注册时间: 2005-11-02
    最后登录: 2009-04-26
    7楼  发表于: 2006-12-29 10:57

    F完结篇的全机体资料,包括其武器

    F完结篇中共有机体426台 武器1330种 机师361位!机师资料迟点奉上。
    附件: F完结篇机体资料.rar (33 K) 下载次数:129
    本帖最近评分记录:
  • 金钱:10(Triple-E)