找回密码
 立即注册
搜索
查看: 3587|回复: 29

[NDS] 没人吐槽这个?继立志一统汉化界后又立志横扫烧录卡业

[复制链接]
     
发表于 2009-11-15 00:40 | 显示全部楼层 |阅读模式
http://forum.tgbus.com/viewthread.php?tid=672589
揭秘死机的真相 :《勇者斗死机——中断的守护者》背后的故事
本帖最后由 Joyce 于 2009-11-12 20:59 编辑

看到很多人死机我心里不好受,看到大家死得那么惨还不知道原因我更难受,所以花时间码了不少字,给大家科普一下。

内容概要
1. 死机原因:DQ9太BT,榨干了NDS的机能,导致日文字库放在一个特殊的地方,
                     那个地方只有32KB空间(DS本身机能)。日文版用了15KB但是中文字库有200KB,
                     因此汉化版只能采用相当特殊的方法加载中文字库,导致需要频繁地读TF卡。
                     而其他游戏都不是这样,所以简单地说就是:DQ9 做的太NB,L5 的程序员太BT!


2.死机责任:ACG汉化组自然有,但更重要的是烧录卡内核程序千差万别,而且大部分本身就不完善,
                    比如该检测的地方不检测,造成冲突死机。由于内核操作涉及烧录卡厂商的商业机密,
                    不可能直接拿代码,因此要想解决死机问题只能由烧录卡厂商和汉化组共同合作,
                    把所有会导致冲突的地方回避掉。离开了烧录卡厂商汉化组无力完成。
                    但是某些商家只向钱看齐,对内核程序不负责任,对合作态度极不友善,
                    或是直接神隐,难觅其踪。在死机问题上,烧录卡厂商的只顾赚钱也难逃其咎!

目我前只能建议高频死机的同学去问问跟你们用一样烧录卡,却不怎么死机的同学的配置情况:例如TF卡,内核等。
另外建议DSONE以及DSONEI用户使用官方最新的内核,用TT内核的话容易死机。


公车还告诉我们已经有人臣服了,233MAX:http://forum.tgbus.com/viewthread.php?tid=676855
AceKard官方在2009.11.14下午给我发了邮件,说明了避免AK2/AK2i高频死机的方案,如下:
"AK2和AK2i使用最新的内核,长按A键启动游戏"

对一些死机频率特高的AK2i玩家是否有效我不清楚,因为没卡。不过就我的AK2的确不怎么死机。

附上官方的原话:“我们自己也在玩,大约都在14-20小时之间,死机次数在3-4次。 ”

有问题跟贴反馈,以上。

这里替AceKard官方解释下长按A进入游戏的原因
----------------------------------------------------------------------------------------------------------------------
Joyce:我那个补丁是检测0x2000204的地11位来判断段IO是否结束的,不知道你们的卡是否该这么检测?
AceKard官方:---------长按A启动后IO是否结束我们内部已做了判断。
Joyce:另外读TF卡的时候你们用到DMA没?
AceKard官方:----------长按A启动的模式下没有用到。
回复

使用道具 举报

     
发表于 2009-11-15 00:50 | 显示全部楼层
用模拟器吧
回复

使用道具 举报

     
发表于 2009-11-15 01:02 | 显示全部楼层
任何卡和任意内核都肯定会死机
回复

使用道具 举报

     
发表于 2009-11-15 01:10 | 显示全部楼层
继立志一桶汉化界后又立志横扫烧录卡业
回复

使用道具 举报

     
发表于 2009-11-15 01:17 | 显示全部楼层
本帖最后由 月神侠 于 2009-11-15 01:20 编辑

1.背景知识简介:
1.1. DQ9字库破解概述
      对于一般的NDS游戏,高频率使用的固定资源都会被预先载入内存(NDS内存大小为4M),以此来提高访问的速度,
例如我们常说的字库文件。不过DQ9就像制作人接受采访时说的那样:“DQ9将NDS机能发挥到了极致”,以至于都没有足够的内存空间载入字库文件,所以DQ9的字库被载入到ITCM(Instruction Tightly Coupled Memory)——被直接集成在CPU芯片中的高速缓存,大小为32KB。DQ9从ITCM中划出接近15KB用作存储字库,其余的用作执行一些高速运行的指令。
      现在问题出来了:汉化用的中文字库大小为200KB,而装载字库的ITCM才区区32KB!从硬件上肯定无法解决,总不能让大家把NDS拆了换一块ITCM吧?!万般无奈下,我想到一个非常无语的方法,我称其为“动态字库技术”。就是不预先将整个字库载入内存,而是需要哪个字再从ROM里面读取。
      有程序常识的人都知道,IO(读写文件操作)是很费时的,因为会涉及到大量复杂的底层操作。为了避免频繁的IO,一般都会先建立一个缓存,将数据预读进缓存,这样访问时就直接读内存,大大提高速度。所以说这么做是“万般无奈、非常无语”。
1.2. 烧录卡IO概述
       烧录卡从SLOT-2需要软件烧录,发展到SLOT-1直接copy CLEANROM就可以玩无疑是一个巨大的进步。但并不想多数玩家想的那样,SLOT-1“真的支持CLEANROM RUN”。ROM原本的存贮介质是NDS卡带,而烧录卡用的是TF卡,NDS卡带和TF卡的IO(读/写文件)机制是截然不同的。
       在SLOT-2时代,烧录卡解决这个问题的方式就是用烧录软件对ROM里面的IO程序进行替换,将原来用于DS卡带的IO函数替换成TF卡的IO函数,这就是烧录过程的本质所在。SLOT-1到来之后技术出现了进步,采用了内存补丁技术:不直接在ROM上做文章,而是等ROM载入内存之后直接改内存里面的IO函数。这就不难理解为什么SLOT-1运行需要内核支持了,内核的一个很重要的作用就是给ROM打上内存补丁。
       至此可以做出一个结论:无论SLOT-1还是SLOT-2的烧录卡都有对IO进行处理,烧录卡有着自己特有的IO体系。


2.字库破解难点
主要有以下三点:
2.1. 如何hack游戏程序,使之能从ROM里面读取字库数据?
2.2. 既然烧录卡都有着自己独特的IO那读字库的时候如何去调用这些IO?
2.3. 字库IO是一个额外附加的过程,很有可能与正常读取ROM文件IO发生冲突,如何避免冲突?
第一个难点我花了两周的时间来处理,还算很顺利的解决了。

第二个难点足足问题花了我和j一个多月的时间。因为内核只能在NDS上运行,没法在PC上debug,很多东西我们只能靠现象去猜测,然后设计方案在NDS上实验,根据运行结果再猜测,再修正方案……不断往复上述过程直到得出正确的运行结果。这个破解过程很累,很枯燥,很辛苦。刚开始都是无限黑屏,什么烧录卡都进不去游戏。折腾了半个月R4终于可以运行,真激动死我了;又折腾了三周终于让市面上的主流卡都可以运行了。

第三个难点就是导致汉化版DQ9随机死机的本质原因。NDS是单线程的,不存在操作系统的概念,一旦CPU发生冲突那必定死机。解决这个问题很难,因为涉及的烧录卡IO在底层的实现,这个只有厂商才知道了。如果有厂商的协助解决起来到是很方便的:我可以根据提供的资料做出适合该卡的IO调用方案,或者厂商根据我的IO调用特点修正内核。
      我联系了多个厂商,遗憾的是只有一家厂商友好地跟我们合作了,并且解决了问题。更可贵的是他们选择了自己更新内核,没有麻烦我出手。
反观某烧录卡的技术人员,竟然以烧录卡在国内销量少、卖利润低,市场主要在国外为理由拒绝协助解决问题!AK、M3、R4、EZ等厂家则像从人间蒸发了一样杳无音信。

      实际上这个问题很隐蔽,它不是一定会发生,只要你的烧录卡IO够快就没事。我用M3Real、AK2、dsonei+1G金士顿日产TF卡测试只要不开金手指就没死机过;AK2i Timely测试过;DSTT河马测试过;R4正版参加内测的玩家测试过。都没发现某些人说的那么厉害的死机现象,通关期间死机一两次倒是有,不过当时因为开了金手指,也就被当成老金的问题了。

另外有玩家质疑说,冲突并非导致死机的原因,理由是死机多发于场景切换。其实这正恰恰证明了冲突就是罪魁祸首。


上屏幕会一直显示地图和人物的名字。每次场景切换都要从ROM读取场景数据,而且场景数据都很大,花的时间也较长;同时也会读取地图和人物的名字的字库数据,所以这里容易引发IO冲突。当然这些都是表象而已,利用NO$GBA debug做断点跟踪,证实了我的猜测是对的。


3. 问题总结
    “明明是三个人的电影”——玩家、烧录卡商、汉化组,但是烧录卡商拿到钱之后就一直缺席;本来是一场精彩纷呈的三角关系,却成了毫无激情的二人行(比喻的有点那啥了= =)。
     死机问题自然是汉化导致的。一般游戏汉化只需简单的将文本和图片改成中文即可,出现汉化版死机肯定是有汉化BUG。但是DQ9采用“动态字库技术”带来某些卡高频死机烧录卡厂商也有责任:为什么每次IO之前不检测上次IO是否结束???为什么我联系你们除了一家之外都没音信???
     本来很简单很容易解决的事情,到了某些厂商那里就变得那么难了……
不少玩家问我能否解“汉化带来的死机BUG”,昨晚还有人“勒令ACG汉化组承诺限期解决死机问题”。面对这些我感到很无奈、很无力,商家这么不合作我也没辙呀;同时也感到玩家和汉化组都很悲哀,为何玩家出了钱却得不到像样的售后服务?难道国外市场赚钱就可以无视国内市场的售后服务了?为什么汉化组一分钱都没从烧录卡商那里得到却要帮他们擦屁股、背骂名?

回复

使用道具 举报

     
发表于 2009-11-15 01:21 | 显示全部楼层
我有吐糟就输了的感觉
回复

使用道具 举报

     
发表于 2009-11-15 07:46 | 显示全部楼层
蛋定地等天幻版
回复

使用道具 举报

发表于 2009-11-15 09:14 | 显示全部楼层
2U和天幻有这种特殊字库的解决方案么?
回复

使用道具 举报

     
发表于 2009-11-15 09:30 | 显示全部楼层
没人出来说 玩游戏学日语么?
回复

使用道具 举报

发表于 2009-11-15 10:34 | 显示全部楼层
AK2I 回开始的村子买东西死过一次,目前6小时没啥大问题,不过一直不敢召第四个人,据称召了之后猛死
回复

使用道具 举报

     
发表于 2009-11-15 10:43 | 显示全部楼层
我联系了多个厂商,遗憾的是只有一家厂商友好地跟我们合作了,并且解决了问题。更可贵的是他们选择了自己更新内核,没有麻烦我出手。
这句“没有麻烦我出手”讲得还真是牛X呀……
回复

使用道具 举报

发表于 2009-11-15 10:50 | 显示全部楼层
本帖最后由 100082685 于 2009-11-15 10:51 编辑

学日语吧,DQ9我玩的都审美疲劳了还从来不死机
回复

使用道具 举报

头像被屏蔽
     
发表于 2009-11-15 10:55 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2009-11-15 14:11 | 显示全部楼层
日语这东西,早学早受益
回复

使用道具 举报

     
发表于 2009-11-15 14:22 | 显示全部楼层
切,等美版不就得了,我很淡定
回复

使用道具 举报

     
发表于 2009-11-15 14:51 | 显示全部楼层
我们的版本字库拆开分着放,尽量减少容量,也许大概可能不会死机……吧……

上帝保佑真主阿拉阿弥陀佛阿门阿门……
回复

使用道具 举报

     
发表于 2009-11-15 14:58 | 显示全部楼层
如果他家自己出烧录 确实会有吸引力 OEM 用软件 卖硬件的模式
回复

使用道具 举报

     
发表于 2009-11-15 15:07 | 显示全部楼层
R4打到转职神殿这里,死了2回- -;r4有没新内核能降低点死机情况、
回复

使用道具 举报

     
发表于 2009-11-16 11:03 | 显示全部楼层
笑而不语
回复

使用道具 举报

发表于 2009-11-16 11:15 | 显示全部楼层
玩的那么累还玩个JB
回复

使用道具 举报

     
发表于 2009-11-16 11:17 | 显示全部楼层
但是某些商家只向钱看齐

===============

夸自己呢吧
回复

使用道具 举报

发表于 2009-11-16 11:30 | 显示全部楼层
学日语吧

某日我在地铁上看到一宅男拿了一DS打DQ9,过了一会大概遇到生僻词了又从口袋里掏出第二台DS查乐引,这是多么强大的精神力!
回复

使用道具 举报

     
发表于 2009-11-16 11:44 | 显示全部楼层
学日语吧

某日我在地铁上看到一宅男拿了一DS打DQ9,过了一会大概遇到生僻词了又从口袋里掏出第二台DS查乐引,这是多么强大的精神力!
射命丸文文 发表于 2009-11-16 11:30


买第二个DS当词典用

这是多么强大的任臣
回复

使用道具 举报

     
发表于 2009-11-16 12:33 | 显示全部楼层
我们的版本字库拆开分着放,尽量减少容量,也许大概可能不会死机……吧……

上帝保佑真主阿拉阿弥陀佛阿门阿门……
pkzero 发表于 2009-11-15 14:51


期待
回复

使用道具 举报

发表于 2009-11-16 12:49 | 显示全部楼层
玩个游戏还查字典,累不?
遇到不懂的字词语法直接跳过,安慰自己游戏玩的就是系统,剧情就是扯。
遇到不看字也不卡关的游戏反而要逐句抠语法,和别人说只玩系统不看剧情等于白玩。
回复

使用道具 举报

     
发表于 2009-11-16 13:04 | 显示全部楼层
烧录卡厂商负责任的确是不多是真的
回复

使用道具 举报

发表于 2009-11-16 13:35 | 显示全部楼层
问下模拟器会死机吗?模拟器不死我上模拟器搞了。
回复

使用道具 举报

发表于 2009-11-16 13:42 | 显示全部楼层
这样玩游戏太麻烦了~

或许有人觉得DIY很好玩,不过,对于我来说,挺麻烦的~
回复

使用道具 举报

发表于 2009-11-16 13:46 | 显示全部楼层
问下模拟器会死机吗?模拟器不死我上模拟器搞了。
hoshino612 发表于 2009-11-16 13:35


不死
回复

使用道具 举报

头像被屏蔽
     
发表于 2009-11-16 13:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-9-18 15:54 , Processed in 0.217910 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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