夢幻(漏洞)

  Bag 防尘护目镜 SV Sprite.png非正式术语  
来自神奇宝贝百科

梦幻漏洞(日文︰fifth法,英文︰Mew glitch),也被称作百变怪漏洞逃离训练家漏洞,是一个存在于所有第一世代游戏的游戏漏洞,最早在2003年被报告,並且成為都市傳說。这个漏洞让玩家可以捕捉任意正常的宝可梦,例如在正常流程中无法获得的梦幻。也是最简单的遇到错误宝可梦错误训练家的方法。

通过该漏洞遇到野生梦幻

触发方法

方法一可以用于所有第一世代游戏,方法二用于《皮卡丘》时,需要先到25号道路华蓝之岬正辉获得船票,此时就可以绕过华蓝道馆去解决民宅的火箭队事件,到5号道路去抓一只凯西。

方法一

最早被大众所知的方法,是利用8号道路上面对地下通道(7-8号道路)入口的赌徒25号道路上拥有呆呆兽短裤小子来实现,玩家必须没有打败过这两位训练家,另外还需要有一只具有飞翔招式的宝可梦。

玩家需要站在地下通道入口,确认自己的位置位于赌徒的正上方,然后往正下方走,走到赌徒会注意到主角的位置时,迅速按下Start键打开菜单,此时尽管赌徒会出现在画面中,但不会向主角要求对战。

菜单出现后,玩家需要使用飞翔移动到华蓝市,此时赌徒的头上会出现感叹号,但主角将会在他走过来并挑战之前飞走。

到达华蓝市后,Start、A、B键将会失效,这是因为游戏判定玩家正处于战斗状态。在这里,玩家需要走到25号道路与上述短裤小子战斗,注意需要让其主动走向主角,即至少走到他面前2格距离的位置,走到面前1格的位置或主动挑战会引起死机。

战胜短裤小子后,上面失效的按钮将会重新起效,此时玩家需要回到8号道路,进入8号道路后,将会自动弹出菜单,关闭菜单后,战斗将立刻开始,战斗对象为等级7的野生梦幻。

  • 若结合等级提升错误使遇到的梦幻变为1级,收服时需要保证队伍有空位。否则捕捉到的1级梦幻传到正辉的电脑后,从电脑中取出时会死机(该问题在《皮卡丘》中存在)。

方法二

上述方法一中8号道路上的赌徒可以替换为24号道路上金球桥西边的童子军,战斗对象则可以替换为华蓝道馆内的泳裤小伙子。由于游戏进行到这里时招式飞翔并没有获得,所以要捕捉一只凯西,利用瞬间移动来代替,这也是在游戏早期就获得梦幻的一种途径[视频 1]

  • 如果使用泳裤小伙子触发该漏洞,玩家只能在还没有打败华蓝道馆之前触发,因为该训练家属于道馆里的训练家。

漏洞原理

8号道路上的赌徒与24号道路上的童子军可以被用于这个漏洞的原因是他们的视线范围很大,只要主角在他们面前,并且能看到他们,无论多远他们都会走过来主动向主角挑战。然而当游戏绘制NPC的图像时,会先将它放到某个默认位置,然后再放到正确位置,这就给了玩家去打开菜单的时间。在玩家打开菜单并飞走后,游戏会错误地判定主角正处于战斗状态,导致某些其他的数据被读取而引起了这个漏洞。

只要某个训练家符合这个特点,就可以被使用,而符合这个特点的训练家并不只有这两个。

从一开始的训练家处逃走所用的招式,并不一定是飞翔或瞬间移动,只要是能在地图上瞬移的招式或物品均可,如挖洞离洞绳等等。

之所以上面的方法中遇到了梦幻,是因为这个漏洞最终所遇到的宝可梦,取决于玩家触发漏洞后对战的最后一只宝可梦的特殊数值。

具体而言[1],起始于地址0xCD23(《皮卡丘》是0xCD22)的一串12字节分段会记录最后一次对战的宝可梦信息。以短裤小子为例:

8E 11 00 3C 00 1E 00 1D 00 1C 00 15
  • 第二个字节0x11记录对手等级17
  • 其后的十个字节记录对手的状态 (HP/攻击力/防御力/速度/特殊)。每个状态占用2字节。
  • 分段的两侧各有八字节的分段,每字节值均为07。与其余状态(如后文提到的攻击等级)相关。
  • 末尾字节0x15即地址0xCD2E0xCD2DY记录了对手的特殊值。上述方法1、2中,短裤小子的最后一只宝可梦为等级17的呆呆兽,泳裤小伙子的则是等级16的大舌贝,它们的特殊数值均为十进制的21(0x15)。

回到8号道路(或24号道路)时,游戏会尝试重新载入先前中断的对战。由于不明原因,程序会使用 CD2E (CD2D) 的值作为内部编号读取对手,值较小时读取的是野生战斗,而199 (十进制) 以上的值甚至会读取到训练家战斗。数值为0x15(21D)决定读取的是内部编号21的梦幻。而后一位字节07决定了对手的等级。

可能遇到的对手

宝可梦

特殊值为1-199时遇到的是正常宝可梦和错误宝可梦,参见宝可梦列表(按第一世代内部编号)

训练家

训练家类型 特殊值
Jacred 200
短裤小子 201
捕虫少年 202
迷你裙 203
水手 204
童子军 205
女童子军 206
怪兽狂 207
理科男 208
登山男 209
飙车族 210
趁火打劫者 211
电工大叔 212
杂耍艺人 213
垂钓者 214
泳裤小伙子 215
光头男 216
赌徒 217
大姐姐 218
超能力者 219
电气摇滚团 220
杂耍艺人 221
驯兽师 222
养鸟人 223
空手道王 224
青绿
作为劲敌
225
大木博士 226
西尔佛经理 227
研究员 228
坂木 229
火箭队手下 230
精英训练家
231
精英训练家
232
希巴 233
小刚 234
小霞 235
马志士 236
莉佳 237
阿桔 238
夏伯 239
娜姿 240
绅士 241
青绿
作为劲敌
242
青绿
作为冠军
243
科拿 244
祈祷师 245
菊子 246
阿渡 247

其他方法

上述方法中,均依靠了视线范围很大的训练家来触发漏洞,但在某些特定情况下,玩家不需要依靠他们却依然可以达到同样效果。

此方法来源于一个设定,游戏对遇野生宝可梦的处理优先度,是高于NPC训练家发现主角的,所以,如果某个训练家的视线范围内有可以遇野生宝可梦的地方,而且玩家恰好在这个位置遇到了野生宝可梦,便获得了触发漏洞的机会。

此时只需在与野生宝可梦的战斗中,让主角所持的所有宝可梦变为濒死状态,游戏在一般情况下会立刻将主角传送回最后一个使用过的宝可梦中心的门口,但如果是在某个NPC训练家视线范围内发生的战斗,在传送之前游戏会先判定该训练家发现了主角,并设定为战斗状态,然后再进行传送(体现为黑屏中出现了训练家发现主角的感叹号标志)。于是便同样达到了在NPC训练家发现主角后立刻逃走的效果,漏洞就被触发了。

能满足这个条件的训练家并不多,最明显的例子是常青森林中最后一位捕虫少年

此方法不易在实机实现,因为运气成分要求过高。

漏洞延伸

利用百变怪使该漏洞取得任意结果

特殊数值为255时遇到的训练家

由于这个漏洞最终结果取决于触发漏洞后对战的最后一只宝可梦的特殊数值,所以对战不同的训练家或野生宝可梦,最终将会遇到不同的宝可梦,比如月见山中的某个少女拥有一只11级的喇叭芽,它的特殊数值为22。触发漏洞后与她对战,最终遇到的就会是等级为7的暴鲤龙(暴鲤龙的内部编号为22)。

由于这个特性的存在,便可以利用野生的百变怪来获得任意需要的宝可梦,而不用去考虑任何关于敌方宝可梦特殊数值是多少的问题,这个方法的原理是当百变怪使用变身后,由于某些原因它的各项数值并不是本身所固有的数值,而是继承了变身对象的数值。触发漏洞后遇野生百变怪,并在它使用变身后打倒它或直接逃走,后面遇到的宝可梦,即是由玩家自身携带的那只宝可梦的特殊数值所决定。

在第一世代中,正常的宝可梦只有151只,所以在使用这个方法时,会遇到很多非正常的东西,例如错误宝可梦,甚至可以和大木博士对战

如果携带的宝可梦特殊数值超过了255,那么游戏将会从0重新开始计算,即256和0等同,257和1等同,以此类推。这也是唯一通过这个漏洞获得内部编号为5以下的宝可梦的方法。(因为正常情况下无任何宝可梦的特殊数值可能低于5)

某些数值(如248-255)将会使玩家遇到病毒性的训练家(ZZAZZ错误即是特殊数值为248、251、252、254、255时触发),导致资料文件损坏,所以在非必要情况下,不要尝试这些操作。

移除挡路的卡比兽

第一世代的正常游戏流程中,12号道路16号道路玉虹市西边)上各有一只挡路的卡比兽,在一般情况下,需要完成宝可梦塔相关剧情,并取得宝可梦之笛后,才能让它们在路上消失,流程才能继续进行。

然而,利用梦幻漏洞,可以直接在不取得宝可梦之笛的情况下,移除掉挡路的卡比兽。

在《皮卡丘》中,12号道路的卡比兽必须先完成岩山隧道剧情才能触发(因为游戏进行到这里时玩家并没有获得飞翔,也没有野生的凯西供玩家捕捉)。

  • 移除12号道路上卡比兽的方法:[视频 2]
    1. 6号道路利用飞翔或瞬间移动在某个训练家看到主角之前逃走,目的地为枯叶市
    2. 向东走,从11号道路的一侧进入12号道路,看到卡比兽后回到11号道路,并与任意训练家对战。
    3. 对战完毕后,回到6号道路,菜单自动弹出,关闭菜单,战斗自动开始。
    4. 打败遇到的宝可梦或逃走后,回到12号道路,原来挡在这里的卡比兽将会消失。
  • 移除16号道路卡比兽的方法:[视频 3]
    1. 8号道路利用飞翔或瞬间移动在赌徒看到主角之前逃走,此处和捕捉梦幻的方法一一致,但目的地为玉虹市
    2. 向西走到16号道路,看到卡比兽后往回走,通过地下通道(7-8号道路)回到8号道路,然后继续走到紫苑镇(此时8号道路上所有训练家都不会找主角挑战,即使他和主角从未对战过,因为在步骤1中所做的事的原因游戏判定主角正与赌徒对战)。
    3. 到达紫苑镇后,往北走到10号道路,与任意训练家对战。
    4. 对战完毕后,回到8号道路,菜单自动弹出,关闭菜单,战斗自动开始。
    5. 打败遇到的宝可梦或逃走后,回到16号道路,原来挡在这里的卡比兽将会消失。

导致这个错误的原因

在游戏中,有一些宝可梦只能对战一次,而且在地图上有图像,各种传说的宝可梦均属于这种类型,由于只能对战一次,当对战完毕后,将会把这只宝可梦的图像在地图上移除,而挡路的卡比兽则也属于这种类型。

恰巧,梦幻漏洞所触发的战斗,便就是这种类型的战斗,当玩家走到卡比兽的所在地后,游戏将会把卡比兽的相关数据载入内存,这时候再去触发战斗,当战斗完毕后,由于战斗类型一致,游戏将认为玩家已和卡比兽战斗过,于是便从地图上移除了卡比兽的图像。

另外利用这个漏洞也可以移除24号道路上的火箭队手下[视频 4]

改变遇到宝可梦的级别或训练家的队伍

在通常情况下,这个漏洞最终所遇到的宝可梦等级为7级,但触发漏洞后,由于某些原因,玩家所对战的最后一只宝可梦的攻击等级决定了后面遇宝可梦的等级,攻击等级在通常情况下可以被提升6级或降低6级,表示为-6或+6,比如对方攻击等级被降低了两级(-2),后面遇到的宝可梦就为5级(7-2=5),所以玩家只要对对战的最后一只宝可梦使用6次叫声,降低对方攻击等级6级,就可以使最后遇到的宝可梦变为1级(7-6=1),1级的宝可梦在第一世代中是不能通过正常途径取得的,因为程序员可能是为了防止“等级提升错误”的发生,所以在游戏中没有任何1级的野生宝可梦可以遇到,而在这里获得的1级宝可梦,只要它符合“等级提升速度中等偏慢”,便可以利用这个错误使它获得54点以下的经验,而直接升到100级。

另外,前面提到的决定野生宝可梦等级的内存地址,在遇到训练家时会用来决定队伍编号(体现为降低或提升对方攻击等级后,最终会遇到同一训练家的不同队伍),因为同一类型的训练家往往不止一个,在游戏中它们并不单独存储,而只是对同一种训练家存储了若干个队伍信息,同时保存了该类型训练家在各个位置对应哪个队伍编号。例如:当控制对方特殊值为243时,最终结果将会遇到冠军青绿,正常情况下(不降低攻击等级)他的队伍是在正常游戏里不存在的,但是,如果降低对方4、5、6级攻击(即控制表示对方攻击等级的内存地址为1、2或3)即可遇到正常队伍的冠军青绿,而1、2、3号队伍即分别是含三种最初的伙伴最终进化形的队伍,于是可以推断出,游戏在冠军战时就是根据玩家的初始宝可梦来控制该地址以达到对方具有不同队伍的(前期的劲敌青绿同理)。但是,某些种类的训练家的某些队伍是无法通过这种方式遇到的,因为正常情况下攻击等级只可以在1到13之间变动,而有些种类的训练家在游戏里超过了13个。

参考视频

  1. 捕捉1级梦幻+等级提升错误:Bilibili
  2. 移除12号道路上的卡比兽:Bilibili
  3. 移除16号道路上的卡比兽:Bilibili
  4. 移除24号道路上的火箭队手下Bilibili

注释

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