• 宝可梦 剑/盾 扩展票‎‎》第2弹《冠之雪原》10月23日已经开放下载!
  • 欢迎来到神奇宝贝百科!您可以注册一个符合用户名方针的账户来参与百科的建设!
  • 编辑百科其实很容易!如果您在百科发现了一些内容出现缺失或错误,您可以直接注册一个账号来修改它们~
  • 如果搜索不到想要的内容,您可以阅读神奇宝贝百科:浏览了解如何搜寻到想要的内容。
  Bag 防尘护目镜 Sprite.png非正式术语  

时钟电路(漏洞)

来自神奇宝贝百科
跳到导航 跳到搜索
Bag 谜芝果 Sprite.png 这篇文章可能涉及部分未获得宝可梦相关企业授权的内容。
神奇宝贝百科仅记述这些内容,而并非支持任何侵权行为。

时钟电路漏洞,又称树果漏洞(日文︰きのみ問題,英文︰Berry glitch),是一个被发现在《紅寶石/藍寶石》中的漏洞,由GBA游戏卡时钟电路(RTC)的设计缺陷导致。

触发漏洞

此现象在游戏发售早期发生,只会在已经运行了1年以上的《紅寶石/藍寶石》中出现,漏洞会在游戏开始后第366天开始出现,具体的现象表现为即便时钟运作,以下事件依然不会随时间触发:

但以下事件依然会正常触发:

漏洞产生原因

紅寶石/藍寶石綠寶石》游戏卡使用精工S-3511 石英晶振进行电路驱动,但此晶振电路无法获取真实的日期时间,其时间计算方式是由一串规则计算而来,时钟的运作只是一个“相对值”,类似石英钟:

  1. 游戏卡时钟电路启动时的基准时间为“2000年1月1日 00:00:00”,之后时钟电路会不断运作,并且在除电池电量耗尽的情况下会一直向未来运作。
  2. 而当玩家开始《紅寶石/藍寶石綠寶石》的新游戏,玩家需要在主角家中钟表上设定时间,钟表表面默认为上午10时,而玩家设定的时间会被作为作为“起始时间戳0时”,游戏的报告会用一个五位数记录游戏流逝的时间,其中初始零时记为00000。
  3. 之后游戏内在每次存档时,会与时钟比对,在此基础上将时钟电路上从“起始时间戳”开始,经过的日、时、分、秒数(年月全部换算为日数)以及星期转化为一串数字,并作为时间戳存储在游戏的报告内,这个经过时间是随着现实时间流逝,与实际游戏时间无关,在游戏关闭的时候,游戏的“经过时间”(并非是游戏的实际游玩时间)依然会向后运作。
  4. 每次游戏内种植树果和进行周期性事件后,存档会记录下下次事件刷新和树果成熟的时间戳,直到时钟电路的时间运行到这个刷新的时间戳之后,所有的事件才会刷新,树果也会成熟。

例:游戏卡的时钟电路启动后3小时(电路时间为2000年1月1日3时0分)玩家开始了新游戏,而玩家一开始在主角家中调整钟表的时间为上午12点(距离游戏内钟表默认时间上午10点相差2小时),并在此时报告,游戏会以此时作为“起始时间0时”开始计算游戏的经过时间,而在5天后的下午1点再开机并存档的时候,此时时钟电路的时间则是2000年1月6日4时0分,即便游戏实际只运行了1分钟,游戏存档的时间戳记录的时间仍然是5天1小时。如果在此时种下一颗橙橙果,而第三世代中橙橙果的成熟时间是12个小时,那么时间戳会记录下这株橙橙果的成熟时间戳是“5天13小时”,当时钟电路走到“2000年1月6日16时”的时候,这株橙橙果便会成熟。

用表格表达就是:

事件 遊戲卡時鐘電路啟動 3小時後報告第一次的啟動並設置為12:00 AM 5天後的1:00 PM種下一顆橙橙果 橙橙果成長至第一階段 橙橙果成長至第二階段 橙橙果成長至第三階段 橙橙果成熟
時鐘電路(RTC)時間 2000-01-01 00:00:00 2000-01-01 03:00:00 2000-01-06 04:00:00 2000-01-06 07:00:00 2000-01-06 10:00:00 2000-01-06 13:00:00 2000-01-06 16:00:00
存檔時間戳記錄 不存在 0天0小時0分0秒 5天1小時0分0秒 5天4小時0分0秒 5天7小時0分0秒 5天10小時0分0秒 5天13小時0分0秒
主角家中的時鐘 不存在 12:00:00 AM 1:00:00 PM 4:00:00 PM 7:00:00 PM 10:00:00 PM 1:00:00 AM

由于《紅寶石/藍寶石》中此函数的运算缺陷,时钟电路内的“2000年”的时候,存档的时间戳会忽略累计年份,导致时间戳如果在时钟电路的这两个年份内运作超过一个闰年到“第367天”的时候,漏洞会导致该日不会变为“第367天”,而是自动重置到“第1天”,游戏中当时间电路和存档时间戳会发生错位,而在“第366天”触发的周期性事件和种下的隔日成熟的树果,本应在“第367天”刷新和成熟,但由于时钟电路的“第367天”错误的变为“第1天”,因此所有事件的刷新和树果的成熟将因为没有到达重置的时间而被冻结,直到366天之后,时钟电路进行到“2002年1月2日”之后,时间戳累积到“第367天”到来的时候才会解除。

用表格表达就是:

事件 遊戲卡時鐘電路啟動 3小時後報告第一次的啟動並設置為12:00 AM 第366天的11:00PM 第367天的0时(事件冻结) 第733天的0时(事件解冻)
時鐘電路(RTC)時間 2000-01-01 00:00:00 2000-01-01 03:00:00 2001-01-02 02:00:00 2001-01-02 05:00:00 2002-01-03 02:00:00
存檔時間戳記錄 不存在 0天0小時0分0秒 366天23小時0分0秒 0天0小時0分0秒(漏洞触发) 367天0小時0分0秒


而游戏启动时时钟电路已经运行到2001年1月1日之后的报告则不会触发漏洞。

类似漏洞

电池耗尽

时钟电路的电池耗尽的时候,时钟电路会被强制重置为2000年1月1日 00:00:00,但正常电池耗尽的游戏会在标题屏幕有警告信息来警告时钟无法运作。相反,触发了时钟电路漏洞的游戏反而不会出现这条警告信息。

更换电池后的漏洞

某些场合被称为新电池漏洞,在更换电池后,时钟电路依然会从2000年1月1日 00:00:00开始重新计算,时钟电路数据将会早于报告的时间戳,导致时间错位,而当错位发生的时候,游戏存档的时间戳将无法到达下一个刷新时间,导致所有的事件都被冻结,直到时钟电路的时间再度运转到和游戏时间戳一致或快于游戏时间戳,然后再运行到时间戳设定的刷新时间之后才会再度恢复正常。

例:假设游戏的“起始零时”是时钟电路的2000年1月1日0时,而时钟电路已经走到2011年1月1日0时,时间戳则记录为4018天0时,此时种下一颗橙橙果,那么时间戳会设定下一次橙橙果成熟的日期是4018天12时,而假设此时电池突然耗尽,那么更换电池后,时钟电路回到了2000年1月1日0时,那么时钟需要再经过4018天12时,也就是11年零12个小时,这株橙橙果才会成熟,而且时间戳才会更新下一次事件的刷新时间。

用表格表达就是:

事件 遊戲卡时钟和游戏同时啟動 11年后的0:00PM種下一顆橙橙果 时钟电路更换新电池(事件冻结) 自然时间4018天(11年)后事件解冻 橙橙果成熟
時鐘電路(RTC)時間 2000-01-01 00:00:00 2011-01-01 00:00:00 2000-01-01 00:00:00 2011-01-01 00:00:00 2011-01-01 12:00:00
存檔時間戳記錄 0天0小時0分0秒 4018天0小時0分0秒 4018天0小時0分0秒(漏洞触发) 4018天0小時0分0秒(漏洞解除) 4018天12小時0分0秒

这一漏洞不仅《紅寶石/藍寶石》会触发,包括没有漏洞的《綠寶石》也会触发这种新电池漏洞,而由于此漏洞在游戏发售后多年,时钟耗尽时才会发生,因此官方并未针对这种问题给出解决办法,官方的修复程序也无法修复此漏洞。

漏洞修复

这是一个日本官网欧美官网都有公告说明的游戏漏洞,由于是宝可梦第一次出现大规模且必定会发生的恶性漏洞,因此任天堂多次对此漏洞进行了批量修复,首先在新版本的《紅寶石/藍寶石》上,已经修补了此漏洞,而对于已经销售的早期版本《紅寶石/藍寶石》,也提供了多种修复方式,除此之外,玩家还可以将游戏卡寄至任天堂进行修复(寄送维修服务已于2016年9月停止支援)。

修复程序的修复原理是将位于2001年之前的时钟电路强制调整为2001年1月1日,并将存档时间戳一并后延,以跳过发生漏洞的2000年。

火紅/葉綠》和《綠寶石

火紅/葉綠》的修复程序界面

任天堂在《火紅/葉綠》和《綠寶石》自带修复程序,需要玩家以以下操作进行修复:

  1. 将一台GBA连接到游戏连接电缆的1P上,插入并打开《火紅/葉綠》或《綠寶石》,在游戏标题按select和B,进入修复程序,按A
  2. 另一台GBA连接到游戏连接电缆的2P上,插入《紅寶石/藍寶石》,按住select和start开机,进入修复程序,根据提示进行修复。
  3. 每次重新进行游戏或更换过电池重新进行游戏后,需要再度进行修复。

宝可梦XD 暗之旋风 黑暗洛奇亚

紅寶石/藍寶石》与宝可梦XD 暗之旋风 黑暗洛奇亚进行联动后,将会自动下载修复程序。

宝可梦圆形竞技场

美版《紅寶石/藍寶石》从宝可梦圆形竞技场的特典光盘中下载竞技场的基拉祈会自动下载修复程序。

宝可梦频道

欧版和澳版《紅寶石/藍寶石》从宝可梦频道~与皮卡丘一起!~下载基拉祈会自动下载修复程序。

宝可梦整理箱 红宝石&蓝宝石

非日版《紅寶石/藍寶石》利用宝可梦整理箱 红宝石&蓝宝石的游玩《紅寶石/藍寶石》游戏功能时会自动下载修复程序。

E卡刷卡器

任天堂E卡刷卡器的说明

日本方面随杂志附赠特制专用E卡来刷入修复程序。

任天堂GameCube

任天堂GameCube的一些演示台也提供了修复程序的下载。

新电池漏洞的非官方修复方式

重新开始游戏

更换电池后,重新开始游戏会让游戏报告的“时间戳0时”重置,进而会让游戏正常运作,但如果此时时钟电路的年份并未超过2001年的话,《紅寶石/藍寶石》运行1年后依然会触发原始的漏洞,依然需要官方修复。

修改电路和存档的时间戳

原本的《紅寶石/藍寶石》漏洞,在触发了漏洞后,只要利用官方修复程序即可修复,但这种方法并不能解决新电池漏洞。

对于新电池的漏洞的研究最早由Furlock's Forest Wiki的维护者Adam提出,并通过自己编写的自制程序,读取《紅寶石/藍寶石綠寶石》游戏卡内部时钟电路的时间,将其运转的时间设置为等于或略晚于游戏报告的时间戳,即可解除问题,但此方法虽然能够解决问题,却会导致游戏内原本正确的时间变得与真实时间不一致。

而先利用第三方设备(如月光宝盒、Retro Freak)或者软件(如配合NDS使用的GBA Backup)提取游戏存档,再利用存档修改程序将报告的“起始时间戳0时”设置为0天0时0分0秒,时间戳设置为当前时刻距离2000年1月1日的天数和时间,然后再导入游戏卡内,之后利用Furlock's Forest Wiki的程序将时钟电路运转的时间设置为等于或略晚于游戏报告的时间戳,即可让时间电路的时钟和游戏存档的时间戳同步,在与现实世界当前时间一致的情况下解除所有问题。

细节

  • 时钟电路漏洞与计算机的时间不同步的问题有着许多共同点:即当硬件的时钟与系统文件的时间印记不同步的时候,可能会导致系统内对文件的修改变为无效,计算机可以通过调整硬件的时钟来解决问题。但GBA游戏卡却没有给出官方的调整硬件时钟的手段,一旦发生问题除了重新开始游戏没有不借助外力解决问题的办法,除非靠第三方程序和硬件来令几个有关时间的数值同步。
  • 第四世代开始,宝可梦游戏的时间和日期获取不再交由游戏卡自己的时钟电路,而是交由主机底层系统的时间,系统记录的是真实的时间,而且根据时间变化记录内的时间戳还可以同步刷新,从而根本上避免了这一漏洞的继续发生。

外部链接


遊戲漏洞
第一世代 0 ERRORMissingNo.ZZAZZ错误道具复制道具下溢错误地图254对战大木博士
故障市合并宝可梦错误记录冲浪错误居合斩漏洞老人漏洞梦幻漏洞《皮卡丘》的图像错误
任意门剩余HP错误双属性克制信息显示错误脱离连接俱乐部选择按钮错误资料损坏错误
第二世代 捕虫大赛数据复制城都宝可梦错误错误维度代币盒错误时拉比的蛋写生错误训练家之屋错误
重要物品合并
第三世代 榴石果漏洞时钟电路漏洞整个盒子的坏蛋
第四世代 变身招式保留错误冲浪漏洞榴石果漏洞追打所造成的异常天气
第五世代 多回合攻击类招式漏洞GTS变形错误讲究道具锁定漏洞蓄力的招式覆盖错误自由落体重力漏洞
第六世代 多回合攻击类招式漏洞讲究道具锁定漏洞蓄力的招式覆盖错误
第七世代 多回合攻击类招式漏洞讲究道具锁定漏洞蓄力的招式覆盖错误
第八世代 多回合攻击类招式漏洞蓄力的招式覆盖错误
多个世代 克隆漏洞任意代码注入溢出
相关列表 错误招式错误属性错误地点错误道具错误训练家错误宝可梦坏蛋
神奇宝贝百科游戏工程.png 这个页面属于神奇宝贝百科游戏工程,欢迎加入游戏工程 Wikilogo.png