口袋吧互动社区

 找回密码
 注册加入口袋吧

QQ登录

只需一步,快速开始

扫一扫,访问微社区

通关攻略
ORAS图文攻略一周目/ 二周目
XY图文攻略一周目/ 二周目
黑2白2图文攻略一周目/ 二周目
黑白图文攻略一周目/ 二周目
心金魂银图文攻略一周目/ 二周目
白金图文攻略一周目/ 二周目/ 珍珠钻石图文攻略
绿宝石流程攻略/ 火红叶绿通关攻略/ 红蓝宝石剧情攻略
时暗探险队完美攻略/ 赤青救助攻略
游戏ROM火热下载:
口袋妖怪黑2中文版/ 口袋妖怪白2中文版
口袋妖怪黑(中文)/ 口袋妖怪白(中文)
心金(中文)/ 魂银(中文) /白金(中文)
绿宝石386中文版/ 火红完美中文版
NDS模拟器/ GBA模拟器中文版
游戏精华资料库
OR/AS
X/Y
黑白2/ 黑白
心金魂银/ 白金/ 珍珠钻石
绿宝石/ 红蓝宝石/ 火红叶绿/ 金银水晶
口袋×信长/ 护林员/ 玛古纳之门/ 空时暗探险队/ 赤青救助队
PBO战报/ 战术研究文
口袋图鉴手机版:www.koudai8.com/pmdex/m
查看: 31100|回复: 32

[绿宝石] 【教程】通过正常游戏孵化任何PM(非修改)

[复制链接]
发表于 2016-5-4 00:33 | 显示全部楼层 |阅读模式
本帖最后由 shankenew 于 2016-5-6 17:05 编辑

利用绿宝石红榴漏洞(Pomeg Berry Glitch)孵化编号386以内的任意PM



风险提示

本流程涉及到利用游戏漏洞,有可能造成不可预知的负面后果。

目前已经证实的负面效果有:将1,2号箱子的部分正常PM变成坏蛋(Bad eggs),损失携带金钱等。

请第一次尝试的时候务必确保存档安全,及时做好备份措施。




什么是红榴漏洞?

让有一定HP努力值的PM的当前HP处于1点,再喂给该PM一个红榴果(作用:降低HP努力提升亲密度),会使得该PM的HP变成一个正常游戏中不可能出现的数字。

举例来说,有一只100级的神奇宝贝有8点HP基础得点,HP是1/100。对它使用红榴后,它的HP基础得点会变为0,这时它的HP就会变成-1/98。但因为游戏在这里使用的数据存储方式是无符号整数存储,HP会变成一个很大的数字,在这例子里就是65535,然后会显示为?35。







孵化出任意PM的原理

触发红榴漏洞之后,经过一系列操作,会打乱队伍中某个PM的数据组织顺序(Data Substructures)。继而可以让某些数据项成为新的决定PM种类的数据。

第三世代PM的数据组织结构如下表:




The order of the structures is determined by the personality value of the Pokémon modulo 24, as shown below, where G, A, E, and M stand for the substructures growth, attacks, EVs and condition, and miscellaneous, respectively.

数据子结构的组织顺序取决于PM的PID对24取模的结果。下表中的G,A,E,M分别代表成长(Growth)、攻击(Attack)、努力值及状态(EVs & Conditions)和杂项(Miscellnaneous)。



数据组织顺序如下表:






一个操作实例:获得一个从蛋中孵出的Deoxys

事先的准备

  • 一只级别足够高,有一些HP努力值的PM(这里以[#260 Swampert]为例),用以触发红榴漏洞。下面的叙述中简称A
  • 两箱子完全相同的某编号PM,以一定间隔置于1、2号两个箱子(这里以[#064 Kadabra])为例,具体间隔可以参考下面的例子),下述简称B。这样多数量的完全相同PM可以使用绿宝石战斗边疆的复制漏洞获得。至于对于这只PM有何具体要求,在下文中会详细说明


步骤

  • 将A置于队首,并控制它到1点HP。带上若干只处于濒死状态的PM,最后再带上一只B。
  • 喂给A一个红榴果(Pomeg Cherry),触发漏洞。


  • 触发与野生PM的战斗,由A切换到B,然后逃跑。(为了顺利逃跑,建议在PM等级较低的地方进行本步骤)


  • 将B存回电脑的任意一个箱子。
  • 对A使用任意能够回复HP的道具,下图以高级伤药(Hyper Potion)为例
  • 再次去野外触发遇敌。

    调出“Pokemon”菜单,查看A的状态       

    按下方向键,直到光标正好指到“CANCEL”选项。

    按住上方向键,直到出现下图所示的情形。然后退出战斗

  • 如果足够幸运,你可以在1,2号箱子里的众多坏蛋(bag eggs)中找到一个好蛋(egg),如果不够幸运,请从步骤1重新来过。
  • 将这个蛋孵化,得到目标






一些重要的补充说明

最终得到的蛋孵化出什么完全由B决定,所以下面详细解释B和孵化出的东西有何关联。

这里的B,也就是勇吉拉[#064 Kadabra],我选取了PID为:0x56B0009。经过红榴漏洞,得到的目标的PID会在此基础上加上0x40000000。也就是0x456B0009。0x56B0009对24取模为1,0x456B0009对24取模为17。对应一开始的表格,也就是数据顺序由 GAME 变为 EMAG 。目标的 Growth 对应原来的 EVs & Conditions。而 Growth 的前两个字节(byte)决定了PM的种类。也就是我们只需要让原来的 EVs & Conditions 的前两个字节是我们目标PM的编号(要查询编号,请参看本链接)。这里 #386 Deoxys 的编号16进制下为0x19A,分拆成两个byte就是 0x1 和 0x9A,在十进制下为 1 和 154,也就是我们只需要让勇吉拉的物攻努力值为1,HP努力值为154,经过红榴漏洞之后,得到的蛋的PM种类对应的就是 #386 Deoxys。

总结:以上改变蛋的物种效果,本质上就是利用游戏漏洞,打乱了原来的数据结构的排列顺序。至于以何种方式打乱,需要知道我们使用的称为“B”的PM的PID是多少,然后查上面提供的表格。一般来说,以努力值(E)代替物种(G)的方法比较普适,可以得到全部的386种PM。

也有一些PID提供了以攻击技能(A)代替物种(G)的置乱方式。具体技能的编码表,我会在最后的参考链接里给出。由于技能数目不足386,这种方式不能获得全部386种PM,但相对上述的以(E)代替(G)的方式也有好处,就是有机会通过这种方式获得理想个体值的PM。上述的那个实例几乎无法对获得PM的个体值做任何的控制。

最后提醒一下:由于数据被全部打乱,获得的PM的技能会出现非法乱码,为了防止出现死机等不良情况,请把获得的PM放到饲养屋提升足够的等级,用合法技能全部替代后再领出。

吐槽:我获得的这只Deoxys是不听话的,而听话与否由Miscellaneous的最后一个bit决定,然而本例中的置乱方式下,目标的(M)对应的是原来的(A),最后一个bit和第四个技能的PP数相关,为了是最后一个bit为1,我需要第四个技能的PP数在128以上。而游戏内PP数最大就是64,也就是我无论如何都不可能在游戏内通过这种方式获得一只听话的Deoxys,真是残念。

通过这个漏洞获得的坏蛋可以参与与NPC的战斗,而且可以无限制逃跑,该成果可以应用到绿宝石速通上,然而好像红榴果获得的时机在流程中有些偏后了。




感谢 & 参考链接

感谢@方块ACE 实际测试后给出的反馈意见。

视频教程(Youtube链接,能否收看视个人网络环境)

Video tutorial for Pomeg Berry Glitch

Bulbapedia相关页面:

评分

参与人数 1经验值 +5 收起 理由
方块ACE + 5 感谢分享

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-5-4 01:27 | 显示全部楼层
本帖最后由 shankenew 于 2016-5-4 15:55 编辑

补充一句:PID是可以乱数控制的。具体的控制方法请参看我上一篇Gen3的乱数教程

另外有问题请先仔细阅读,尽力理解之后再进行发问,谢谢。

最新进展:经过实际操作,得到了完美个体的色违Lugia

回复

使用道具 举报

发表于 2016-5-4 09:31 | 显示全部楼层
布鲁斯泰剧,别说话快让我抱腿
回复

使用道具 举报

发表于 2016-5-4 13:21 | 显示全部楼层
红榴漏洞以前听说过,可以触发诸如宠物蛋对战之类的BUG。
但是没想到居然可以拿来孵蛋,真是厉害!
不过复杂的16进制计算实在令人望而生畏啊
回复

使用道具 举报

发表于 2016-5-4 13:58 | 显示全部楼层
66666、数据帝、这居然还是孵所有的精灵=Δ=有空要去试试(ˉ﹃ˉ)
回复

使用道具 举报

发表于 2016-5-4 23:08 | 显示全部楼层
666666……居然可以孵出神兽……
回复

使用道具 举报

发表于 2016-5-5 15:22 | 显示全部楼层
如果我没有理解错的话,性格值取模=16 17 22 23的精灵不能利用此方法改变种族[G的数据位置不变]。顺便记录下:E代替G[努力值决定种类]=00 01 02 03 06 07 12 13/A代替G[技能决定种类]=04 05 08 09 10 11 14 15 18 19 20 21。

***

实践中发现似乎必须使用一次#21果让1HP的精灵至少减2才行,如果是-1,就直接=0判定为濒死了。另外使用这个方法貌似会有以下几点副作用:
[1]产生大量坏蛋。这东西没有办法通过正常手段去掉吧……难道一个个地通信换走?
[2]箱子里无辜非B普通精灵会有变成坏蛋的风险[LZ居然不提醒一下]。
[3]损失身上一半钱。

***
那么问题来了:
[1]出现能孵化的蛋的概率大概有多少?试了10多次都没有成功……全是清一色的坏蛋。
[2]箱子里的B和队伍里的B只需要种族相同即可?还是要求箱子里的B全是完全一样[复制]的?换种问法,就是蛋里精灵是只由队伍里的B所决定,还是由具体变成这只蛋的箱子里的原精灵B所决定?
[3]能否具体解释每一步操作时都发生了什么……

评分

参与人数 1树果 +1 收起 理由
shankenew + 1 已经通过qq私信,有时间的话可以回复一下。

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-5-5 18:14 | 显示全部楼层
方块ACE 发表于 2016-5-5 15:22
如果我没有理解错的话,性格值取模=16 17 22 23的精灵不能利用此方法改变种族[G的数据位置不变]。顺便记录 ...

风险提示不够明显是我的疏忽,不过看到”坏蛋“一词,我想有经验的人都会打起精神了。
坏蛋的处理我没什么经验,我研究这个的存档都是安全起见复制出来的存档。

确实不是所有PM的HP为1吃果子都能数据溢出,需要HP至少减2,说的很对。

[1]概率,我实验数据规模肯定不足,直观感觉操作无误的话成功率20%至少是有的,连续成功,或者一次产出多个可用的蛋的事情也屡屡发生。10次还没成功的话,我们私下交流一下操作细节。

[2]都已经复制了两箱子B,为啥不顺手取一个放到队伍里呢?我觉得应该是需要和箱子里完全一致。

[3]说到底我只是youtube上偶然发现了这么个东西,搬运过来。我的理解程度应该在本教程里详尽地写了出来。至于那些遇敌里,按键里,游戏内存内部发生了什么具体变化,我现在肯定是不清楚的,欢迎去youtube看原视频,是不是我听力有什么疏漏也不一定。
回复

使用道具 举报

发表于 2016-5-7 00:45 | 显示全部楼层
只听说这bug能弄一队濒死,没想到还可以这么玩
技术宅毁灭世界
回复

使用道具 举报

发表于 2016-5-7 11:38 | 显示全部楼层
Youtube上不了……LZ是怎么登那个网站的呢?是翻墙还是??

点评

各种形式的翻,比如肉身翻, etc。  发表于 2016-5-9 21:00
回复

使用道具 举报

发表于 2016-6-7 12:27 | 显示全部楼层
方块ACE 发表于 2016-5-5 15:22
如果我没有理解错的话,性格值取模=16 17 22 23的精灵不能利用此方法改变种族[G的数据位置不变]。顺便记录 ...

『实践中发现似乎必须使用一次#21果让1HP的精灵至少减2才行』,那不知道PM里面计算是取整还是四舍五入的。因为按照HP的计算公式(二代以后):
HP=[个体值+种族值*2+努力值/4]*等级/100+10+等级,
要降低10点努力值,作用后造成2点减血的话,需要的等级(设为Lv)为:10/4*Lv/100=2。
等级需要80级吧。
回复

使用道具 举报

发表于 2016-6-7 12:46 | 显示全部楼层
数据被全部打乱,只有技能会乱码吗?是不是可能在其他属性上会出现一些不可能的搭配?乱码的特性?又或者过高的个体值?
回复

使用道具 举报

发表于 2016-6-7 13:17 | 显示全部楼层
刚刚试验了几把,因为是抱着试试看的想法,没有和楼主那样复制B(主要是还没到那段剧情也不知道怎么触发那个BUG),
就是随便找了点PM把1、2箱子填满了。
然后A是用的七夕青鸟,B是九尾。只是把PID和努力值按照楼主的修改为0x056B0009和1、154
(级别太低没办法发图片,我放到其他网站上了)



然后试了几把,大概是3、4次就碰到了一个好蛋。

但这个蛋孵出来不是想要的那个,居然是之前放蛋的位置上的原怪兽:







甚至孵化前在具体资料里面就可以看到是“轻叶兽”的字样了。
但等级因为变蛋重新变成了5级,技能也出错了……但仍正确的那两个技能(1、3)是原PM的技能。

不知道是怎么回事,是不是必须要复制一堆B才能实现?
回复

使用道具 举报

发表于 2016-6-7 16:06 | 显示全部楼层
又试了一次,这次把B也换成了19级的勇吉拉。然后3盘又碰到了一个好蛋,结果孵化出来还是原来位置上的小白虫(甲壳蛹),图片就不贴了……
回复

使用道具 举报

发表于 2016-6-7 17:51 | 显示全部楼层
回 ifso:
打乱的不只有技能,精灵的种类[这个方法最大的作用就是孵出难以入手的精灵]和个体都会受到影响。但属性和特性不会出问题,这些能力是由精灵的种族决定的,一旦种族确定,属性也跟着被确定;特性也只会是该精灵的两个特性之一[0或1]。个体值虽然会受影响但不会超过0-31的范围。

回 诗眠风:
HP=[个体值+种族值*2+努力值/4]*等级/100+10+等级

从公式中可以看出,努力值-10也就是HP会减少0.025*等级。因为最终结果是要取整的,所以理论上最低可以用一只41级的精灵来实现一次努力-10=HP-2的效果。举个例子,41级个体30努力128的妙蛙花,由公式计算HP=(30+80*2+128/4)*0.41+41+10=142.02,取整为142。吃个#21号果后,HP=(30+80*2+118/4)*0.41+41+10=140.995,取整为140。当然等级低的时候这种巧合比较难遇到。

B确实是必须完全一样[也就是要复制得到]。方法可以参考
http://www.koudai8.com/newbbs/thread-476618-1-1.html 3楼底部
回复

使用道具 举报

发表于 2016-6-8 11:01 | 显示全部楼层
本帖最后由 诗眠风 于 2016-6-8 14:15 编辑
方块ACE 发表于 2016-6-7 17:51
回 ifso:
打乱的不只有技能,精灵的种类[这个方法最大的作用就是孵出难以入手的精灵]和个体都会受到影响 ...


谢谢指点,那看来PM中计算是用的floor(),而不是round()咯,那的确是有很大几率在80级以前触发-2的,当然保险的话吧拿一个80级的A是最好的咯……

还有一点疑问:

上面的教程一开始就提到了:

两箱子完全相同的某编号PM,以一定间隔置于1、2号两个箱子(这里以[#064 Kadabra])为例,具体间隔可以参考下面的例子


这个“下面的例子”,我看了下后面的图,和箱子有关的似乎只有一个好蛋和很多坏蛋的那个图,那个图中似乎有若干个勇吉拉(B),以为间隔4个(每5个)的“间隔”放在箱子中。
前面提到的“间隔”是不是这个意思?

不过,似乎还有更多的木守宫(青蛙),不知道是复制的还是不一样的。
所以不知道是要复制几种PM“间隔”了放嘛?

另外还有几个空格,当然我实验的时候也会出现空格,不过不知道是不是一开始就有的,
也就是说是把1、2箱塞满,还是空着就行?

如果复制大量的B,直接把箱子2填满可以嘛?(我前面测试的几次箱子1里面都不会出现蛋,蛋都出现在箱子2)





(之前的内容我编辑掉了,另外发了个新帖:
http://bbs.koudai8.com/thread-523046-1-1.html
不过那个帖子似乎要审核,暂时还只有我自己可以看到……
明明就是把两个帖子的内容复制了一下的说……)
回复

使用道具 举报

发表于 2016-6-8 11:51 | 显示全部楼层
本帖最后由 方块ACE 于 2016-6-8 12:08 编辑

1]绿宝石104号道路的两个NPC每人14400[金珠+5000]。火叶度假胜地两个大小姐一人20000一人19600,另外这俩人总计带着2个金珠x3星沙x2[+16000];你觉得哪个赚钱快呢……而且火叶这俩NPC还是挨着的;虽然携带的精灵也多一些,但总体来说刷起来要快很多。

2]金字塔里的训练师全部都只使用1只精灵[这个规则下再用3只简直丧心病狂了]。在“对付NPC的原则就是能躲则躲,交手是相当不划算的”这一句所在自然段里我提到了,可能写得不是很明显……

3]大挑战地区所出现的所有普通NPC使用的精灵数据[包括其携带道具]可以参考附录1。大概来说是4周目及以上4周目以上NPC使用的精灵才有偷窃价值;这也不失为一种思路吧,但我个人感觉一般到这个时候其实也能捡到一些有用的道具里,并不需要刻意去偷。而且说来特别有用的道具,其实也只有剩饭/贝壳之铃[后者在金字塔里有时候效果好过剩饭,因为剩饭需要完整的一回合来发挥,而贝壳之铃可以用来打野生精灵时即时吸血]和专爱头巾[金字塔第一神器]了,也不太好遇到。特别是高周目的时候,NPC使用的精灵非常凶残……

S/L大法就不在我的讨论范围内喽/

4]攻略区一般会员没有发帖权限;这个设置我也没有办法更改……如果对我的帖子有想法的话,欢迎与我取得联系。

PS.这个是其他会员人的帖子。与这个主题无关的讨论还请单独发帖。
回复

使用道具 举报

发表于 2016-6-8 14:17 | 显示全部楼层
方块ACE 发表于 2016-6-8 11:51
1]绿宝石104号道路的两个NPC每人14400[金珠+5000]。火叶度假胜地两个大小姐一人20000一人19600,另外这俩人 ...


sorry,之前的内容我编辑掉了,另外发了个新帖:
http://bbs.koudai8.com/thread-523046-1-1.html
不过那个帖子似乎要审核,暂时还只有我自己可以看到……
明明就是把两个帖子的内容复制了一下的说……

另外关于这个话题,我这边还有一个问题(我也编辑在前面了,这里再复制一遍吧):
上面的教程一开始就提到了:

两箱子完全相同的某编号PM,以一定间隔置于1、2号两个箱子(这里以[#064 Kadabra])为例,具体间隔可以参考下面的例子


这个“下面的例子”,我看了下后面的图,和箱子有关的似乎只有一个好蛋和很多坏蛋的那个图,那个图中似乎有若干个勇吉拉(B),以为间隔4个(每5个)的“间隔”放在箱子中。
前面提到的“间隔”是不是这个意思?

不过,似乎还有更多的木守宫(青蛙),不知道是复制的还是不一样的。
所以不知道是要复制几种PM“间隔”了放嘛?

另外还有几个空格,当然我实验的时候也会出现空格,不过不知道是不是一开始就有的,
也就是说是把1、2箱塞满,还是空着就行?

如果复制大量的B,直接把箱子2填满可以嘛?(我前面测试的几次箱子1里面都不会出现蛋,蛋都出现在箱子2)


简而言之就是箱子里到底是怎么放的(发个之前箱子的图也好)
回复

使用道具 举报

 楼主| 发表于 2016-6-23 01:23 | 显示全部楼层
诗眠风 发表于 2016-6-8 14:17
sorry,之前的内容我编辑掉了,另外发了个新帖:
http://bbs.koudai8.com/thread-523046-1-1.html
不 ...

又是好久没看论坛了。

回复一下。

那个一定的间隔是我个人的理解错误,事实上你可以以B填充满前两个箱子,这样没有问题。

原因是,这个bug只会在前两个箱子触发(第二个箱子的最后几个位置不能触发),你可以全部放置B。

我也是受到了视频流程的误导,后来听了一个讲解原理的视频才搞清楚。
回复

使用道具 举报

发表于 2016-6-23 08:15 | 显示全部楼层
shankenew 发表于 2016-6-23 01:23
又是好久没看论坛了。

回复一下。

好的,谢谢,我试试看。
其实如果是模拟器的话,拷贝记录双开两个号传同一个PM,也就是相当于复制了吧……
回复

使用道具 举报

发表于 2016-6-26 08:45 | 显示全部楼层
想不到宝石里面也有这么有趣的bug,不过我最不擅长弄数据性的资料了,感觉这种方法随机性很大
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册加入口袋吧

本版积分规则

QQ|小黑屋|手机版|Archiver|口袋吧 ( 京ICP备05002314|京公网安备11010602010112 )

GMT+8, 2023-6-1 13:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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