任意门(漏洞)
任意門漏洞(日文︰どこかしらドアバグ,英文︰Dokokashira door glitch)是日文《紅/綠/藍》中出现的游戏漏洞,最初由日本搜集游戏漏洞的网站Pokemonbug发现。透过这个漏洞不用挑战联盟就能登入名人堂,也可以到其它地方。
這個漏洞雖然可以在國際版中的《紅/綠/藍》中觸發,但效果異於在日文版中的效果,且不能傳送至其它地方。
具体步骤
在得到常青市友好商店店员拜托主角交给大木博士的包裹后,打开包包,把托付物品排到第二位。再把光标移动到托付物品上,先按下选择键,再选择取消,重复两次后,光标会变成白色。在这之后,与野生宝可梦战斗时打开菜单,选择第一只宝可梦,它便会变成アネ゙デパミ゙。使用这只错误宝可梦击倒对手或者逃跑来结束战斗,这个漏洞就被成功触发了。 逃跑之前一定要打开战斗菜单一次,否则进入真新镇后会因位置原因,玩家会重新回到家门口,使得漏洞触发失败。
略过联盟挑战直接登入名人堂
完成以上步骤之后,走83步,在最後一步时进入位于真新镇的青綠的家,这样一来,玩家会被传送到7号道路。向西步行至玉虹市,进入宝可梦中心后马上出来,否则会死机。然后透过玉虹百货公司的右门进入玉虹百货公司,这样玩家会直接进入阿渡的房间。此时不要与阿渡对话,向上走进入冠军的房间后,也不要与青綠对话。继续向上走,大木博士会进入冠军的房间,也不用与他对话,直接手动登入名人堂即可通关。
如果前面进入的是玉虹大厦,进行同样的操作后将直接被传送到殿堂,虽然殿堂图像会变得混乱,但仍旧能正常通关。
作用原理
在游戏中,“选择”按钮的其中一个作用便是切换包包中物品的顺序,正常操作是在一个物品处按下“选择”,然后在想与它交换位置的另一个物品处再次按下,然而,在早期版本中,由于程序员的疏忽,当在一个物品处按下“选择”然后不做任何其他动作而直接关闭包包时,游戏却依然记录了被选择的那个物品的位置。
在游戏早期,玩家只持有一只宝可梦,而由于“选择”按钮的错误,当玩家拿到第二个物品并用“选择”按钮选择它时,游戏便记录下了位置“2”,此时打开同行宝可梦列表点击第一只宝可梦,游戏便错误的认为玩家要切换第二只宝可梦与第一只的位置,然而第二只宝可梦根本不存在。
游戏内存中,最后一只宝可梦的种类数据后面有一段特殊数据,标记了同行宝可梦在何处终止,具体内存地址为$d123+持有宝可梦数量*2,比如玩家持有两只宝可梦,这个地址就是$d123+2*2=$d127,它的值为FF(255),以便游戏能够认为这段数据以前是同行宝可梦信息,然而却有一个例外,当玩家只有一只宝可梦时,正常情况下第二只宝可梦的种类数据所应该在的位置,便是这段标记终止的数据,即一个地址在不同情况下能起到两个不同作用,这个问题在玩家拥有两只或两只以上宝可梦后将不复存在(尽管还是可以切换存在的和不存在的宝可梦,但不会触发任意门,因为无论什么情况下$d127、$d129、$d131、$d133、$d135的作用都只能是终止数据,而不会是种类,所以无论怎么切换宝可梦的顺序都不会使它们有任何变化)。如图所示,玩家持有一只妙蛙种子,它的内部编号为153,$d124即是它的种类相关数据,所以为153,而$d125即是同行宝可梦终止数据,为255。所以上述那个切换的动作,即是将终止数据$d125,切换到了前面表示第一只宝可梦种类的$d124,这也就是为何切换完成后第一只宝可梦会变为アネ゙デパミ゙的原因,因为这只错误宝可梦的内部编号就是FF(255)。(关于内部编号,参见宝可梦列表(按第一世代内部编号))
由于没有了正常的同行宝可梦终止数据,所以游戏只能寻找下一个值为FF的地址来代替,然而正常情况下,下一个值为FF的地址离$d124非常远,游戏会认为从$d125开始直到下一个FF值之间的所有数据均为玩家持有的宝可梦数据,于是大量内存地址都受到了影响,受影响的地址正常情况下将有超过600个,游戏将认为玩家拥有一个成员数量非常庞大的宝可梦同行宝可梦,并将这数百个内存地址都强行拖入到宝可梦数据的相关判定里。宝可梦数据中也包括了宝可梦的状态(即中毒、麻痹等等),而这些状态都是用不同数值表示的。
发生这种错误后,地址$d335对应第199只宝可梦的HP,而这只宝可梦又恰巧被判定为中毒状态,中毒在战斗外的效果就是每走4步HP减少1点,所以$d335这个值在触发漏洞之后,每走4步,就会减少1,而$d335的作用正是每个地图中某个地方的传送点相关,在每个地图中作用不同,在真新镇中,它是青綠家进入以后所到的地方,默认为39,而每到一个新的地方,它的值都会被重置一次(重置该值不是漏洞,而是游戏固有机制,因为不同地图中的传送点所能到的位置肯定是不一样的)。另外,由于它被判定为中毒,所以在真新镇中走39x4=156步后会出现提示xx倒下,继续走将会出现更多类似的提示,因为并非只有这一只中毒的宝可梦,上面图中多个每走4步就减少1的值,均为某只宝可梦被判定为中毒的结果,由此在内存中产生了相当多的垃圾数据,这便是地图出现各种显示错误的原因,因为这些地址对应了游戏中各种机能,并非只是传送点。
上述直接登入名人堂的方法中,走84步后$d335的值将为39-84/4=18,编号18的地点是7号道路,临近玉虹市,走到玉虹市后之所以要进入宝可梦中心,是为了重置掉$d335,否则将使该值小于想要的数而无法达成目的,而进入宝可梦中心并走出重置该值为122然后直接走到玉虹百货公司的右侧入口时,这个值将为113,所以进入玉虹百货公司就会直接移动到阿渡的房间,继续往前走就会直接通关。而如果进入的是玉虹大厦,直接走到玉虹百货公司的右侧入口时$d335将正好为殿堂对应的118,所以将直接通关。
具体地点编号可以查阅地点编号(第一世代)。
关于地图上传送点的进一步延伸,可以参考资料损坏错误。
地图常量
下面的表格是每个地图中$d335所对应的传送点以及移动到这些地图时$d335的初始值。(进入某个地图会重置该值,进入该地图除下表以外的房子并出来也会重置该值)
$d335的值 | 地点 | 传送点 |
---|---|---|
39 | 真新镇 | 劲敌的家 |
42 | 常青市 | 友好商店 |
52 | 深灰市 | 深灰科学博物馆 |
63 | 华蓝市 | 宝可梦中心附近的房子 |
90 | 枯叶市 | 宝可梦发烧友俱乐部 |
122 | 玉虹市 | 玉虹百货公司的右侧入口 |
142 | 紫苑镇 | 宝可梦塔 |
153 | 浅红市 | 有在讨论正辉的人的房子 |
166 | 红莲镇 | 红莲道馆 |
177 | 金黄市 | 格斗道场 |
非日语版中的类“任意门”
在非日语版中,虽然不可以在游戏早期就触发这个漏洞,但通过某些手段(如ZZAZZ漏洞)可以在游戏内存中起到类似的效果,但是,这种方式触发的类“任意门”并不具有任意传送的效果。
任意门的根本原理是删除掉同行宝可梦终止数据,由于触发ZZAZZ漏洞后会导致内存中大量覆盖153的值,所以这个漏洞在特定情况下也能将同行宝可梦终止数据的255替换成153,即同行宝可梦中有1、3、4、6只宝可梦时,具体原因可以参考ZZAZZ漏洞的条目。(对应影响的内存地址分别为$d165、$d167、$d168、$d16a)
但是由于触发之后,并没有哪只宝可梦的HP对应传送点的地址,所以不能达到真正的任意门效果。
虽然不能任意传送,但也会有某些效果每4步就会发生变化,最明显的体现就是某些地图内,每走4步,音乐就会发生改变。同时,也保留了每走一些步数就会显示某只宝可梦倒下的效果。包包里的某些物品数量,也会每走4步就减少1个。地图显示错误也依旧会发生。
下面示范视频中,演示了每走4步,宝可梦中心的音乐就改变一次的效果。
示範視頻
遊戲漏洞 | |
---|---|
第一世代 | 0 ERROR • MissingNo. • ZZAZZ错误 • 道具复制 • 道具下溢错误 • 地图254 • 对战大木博士 故障市 • 合并宝可梦错误 • 记录冲浪错误 • 居合斩漏洞 • 老人漏洞 • 梦幻漏洞 • 《皮卡丘》的图像错误 任意门 • 剩余HP错误 • 双属性克制信息显示错误 • 脱离连接俱乐部 • 选择按钮错误 • 资料损坏错误 |
第二世代 | 捕虫大赛数据复制 • 城都宝可梦错误 • 错误维度 • 代币盒错误 时拉比的蛋 • 写生错误 • 训练家之屋错误 • 重要物品合并 |
第三世代 | 榴石果漏洞 • 时钟电路漏洞 • 整个盒子的坏蛋 • 对战塔盒子复制 |
第四世代 | 变身招式保留错误 • 冲浪漏洞 • 榴石果漏洞 • 追打所造成的异常天气 |
第五世代 | GTS变形错误 • 自由落体重力漏洞 |
第六世代 | 列表 |
第七世代 | 列表 |
第八世代 | 列表 |
第九世代 | 列表 |
多个世代 | 克隆漏洞 • 任意代码注入 • 溢出 • 随机数异常 • 更改时间系统 多回合攻击类招式漏洞 • 讲究道具锁定漏洞 • 蓄力的招式覆盖错误 |
跨世代服务 | Pokémon HOME漏洞 |
旁支系列 | 宝可梦+信长的野望漏洞 • 宝可梦大集结漏洞 |
相关列表 | 错误招式 • 错误属性 • 错误地点 • 错误音乐 • 错误道具 • 错误训练家 • 错误宝可梦 • 坏蛋 |
这个页面属于神奇宝贝百科游戏工程,欢迎加入游戏工程。 |