设为首页收藏本站喵玉殿官方微博

 找回密码
 少女注册中
搜索
查看: 4715|回复: 4

[提问其他] 关于渔场汉化版妖妖梦的Ph魔理沙线的对话失败问题修复

[复制链接]
发表于 2015-4-27 00:22:09 | 显示全部楼层 |阅读模式
本帖最后由 古明地黒子 于 2015-4-27 00:30 编辑

  一开始发到了游戏区……
  最后变成了大家讨论魔理沙是不是sabi的问题。。。
  

  游戏区链接:
  关于妖妖梦的渔场汉化版中ph魔理沙线的对话问题的修复
  http://bbs.nyasama.com/forum.php?mod=viewthread&tid=46932&fromuid=219314

-------------------------------------
  昨天(2015/4/26)花了一下午找到问题修好了pwp作业没写(预计今天在三次元会被打死

  修复补丁链接:http://pan.baidu.com/s/1sjule9J

  覆盖同名文件即可

  具体问题是这样的:妖妖梦的Ph魔理沙线,在和紫妈对话的时候,对话到“究竟是給我,還是給那個世界的人”(原句“私にというか、あの世の人にだが”)时候,对话会卡死,只能按Ctrl才能进行。如果Rep文件的作者是用的是日文版并且没有按Ctrl的时候,对话会一直死在那里但是Rep会进行下去,然后就会看到一直在对话但是人物按照接下来的Rep继续运动动………最后会出现游戏崩溃的情况………
  出错的效果
  卡死在图示这里,按Z键没有反应。接下来的对话看不到。
  

错误出现

错误出现

  ………问题的根源找到了,是dat文件里msg8.dat的问题。一开始问题是不知道如何替换成正确的文本。使用二进制编辑器已经定位到错误的文本,偏移值是1502(hex)。不知道文字与文字之间的二进制部分怎么改才是对的。

  贴吧有人问过 http://tieba.baidu.com/p/1259645406
  (最后帖子里六神把wiki里的对话贴出来,终于看到剧情pwp)

  这个是中文版的可能错误的部分(选中部分)
  偏移值是1502到1527(hex)。
  
  这个是日文版的对应部分
  偏移值是 14FE到1527(hex)。
  
  正准备把这篇文章发到网上时候向大家求助应该怎么改,突然在写文章时候发现,日文版和中文版的对应部分的末尾是一样的。于是我尝试将中文版的14FE到1502用和日文版对应部分相同的值填充(其实就是两个00)。

  然后就成功了。
  

  和渔场版的相比,似乎原句结尾少了一个”~”的符号。应该不影响意思表达吧。

  然后我重新打包成了.dat格式。分享给大家。

--------
  另外发现,妖妖梦的日文版的th07.dat用Brightmoon解压,Ph的对话文件msg8.dat会变成396Kb....大概是Bug,用Touhou Toolkit就好了。 (ゝω•́)つ
  我一开始还以为是日文版和中文版的dat文件不同,这样的话文件看起来就是一样的了。

  如果没有猜错的话,汉化组的工作就是将对话文件里的文本部分全部翻译了吧。大概是修改到那句话的时候疏忽了。汉化文字的内容必须比原文少或相同,然后多的部分用空白字符补过去。
  我尝试将日文版正确的文字的分隔部分来替换汉化版里的,但是失败。必须汉化的部分文本。换句话说,就是文字分隔部分(也就是非文字部分)不仅得内容相同,位置都不能变。

  这样也能理解汉化的文字没有标点的问题……必须汉化成的字数少于或者等于日文原文的字数。因为字数不能变只能砍标点了 _(:3 」∠ )_
  举个例子,翻译就得像这样

  私にというか、あの世の人にだが
  究竟是給我,還是給那個世界的人

  字数完全相同,所以句末的符号被砍掉了。汉化组真是辛苦了,如果翻译出来字数不对还要重新调整意思,达到字数一致。

  其实这个错误的原因就是这句话多一个“~”然后覆盖了非文字的数据……_(:3 」∠ )_
-------------------------------------


发表于 2015-4-27 08:16:00 来自手机 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
回复

使用道具 举报

 楼主| 发表于 2015-4-27 10:28:02 | 显示全部楼层
本帖最后由 古明地黒子 于 2015-4-27 10:55 编辑
drzzm32 发表于 2015-4-27 08:16
额……等字长替换通常出现在对exe的修改,比如字符串直接编译入代码……
这样就必须考虑字符串长度,而且还 ...

是这样的,对于妖妖梦来说,游戏文本是放在封包文件里的一个叫msg8.dat的文件中的
然而这个文件并不是纯文本,而是一个二进制文件。
所以只能用十六进制编辑器打开,进行等长度替换。
用十六进制编辑器打开后,文件中除了文本的内容
其他的数据部分具体应该怎么样谁也不知道


所以只能等长度替换了,至少当年的汉化组是这么做的。
我也解包了日文版的相应文件,逐个字节比较也可以以发现
汉化版出现Bug的那句话,确实比日文版多两个文字(8字节)的长度
这个多了的4个字节覆盖掉了非文本数据。
然后就Bug了
把这个文字再改回和日文版一样的数据就行了


---------------------------
看图中就是
汉化版是这样的
究竟是給我,還是給那個世界的人?~

对比日文版
私にというか、あの世の人にだが

究竟是給我,還是給那個世界的人?~
私にというか、あの世の人にだが

多出来的 ?~ 正好覆盖了后面的
00 00 72 00
从00 00 72 00 到 03 10 01 00 00 00(图中选中部分)
这部分被ZUN不知道用来干啥用
总之不能动
覆盖了这部分最后导致出现bug
---------------
另外BrightMoon确实有Bug,你看
妖妖梦的日文版的th07.dat用Brightmoon解压,Ph的对话文件msg8.dat会变成396Kb....
但是文件原内容是不会改变的,解压出来的文件相当于原来的13Kb没有动再加上了383Kb的垃圾数据
Bug大概不会这么高级,让解压出来的文件这么正好覆盖在一句话的后面,还带上两个符合句子意思的符号(还是中文标点
所以应该就是人为的疏忽吧


点评

神主封包时会加密。其实这应该分析它的文件结构……比如字符串之前或之后是字符串长度定义……这种感觉  发表于 2015-4-27 12:26
回复

使用道具 举报

发表于 2015-4-27 12:27:23 来自手机 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
回复

使用道具 举报

发表于 2015-4-27 18:34:02 | 显示全部楼层
本帖最后由 wz520 于 2015-4-27 18:36 编辑

话说既然用了 thtk 了,为什么没注意到 thmsg ?(好吧,我也是刚刚才发现)

  1. thmsg d7 msg8.dat msg8.txt
复制代码
当然编码是SJIS,根据情况可能需要先转码一下

点评

卧槽,我竟然才发现。。。。。。  发表于 2015-5-4 10:45
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 少女注册中

本版积分规则

合作与事务联系|无图版|手机版|小黑屋|喵玉殿

GMT+8, 2025-10-31 03:44

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表