帮助排行榜

口袋妖怪网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 42670|回复: 55

[黑·白] 5代隐藏参数的生成过程

[复制链接]

39

主题

426

帖子

2432

积分

贵宾

还没有心情,写一个吧~

威望
4
帅气
12
聪明
448
强壮
6
美丽
0
可爱
0
星沙
0
金钱
31264
发表于 2011-4-22 13:20:38 | 显示全部楼层 |阅读模式
好吧,想来想去决定还是写一下这篇东西

5代的性格值、性格、个体生成相对于4代实在是过于凶残,本以为性格值和个体无关(嘛,确实是没有关系,不像4代是有关的),应该比4代更简单,结果发现这想法实在是太AMAI了,看了后面的计算公式相信谁都会这么想(不过会有多少人能坚持看到那呢?)。

先概括的说一下,5代里同样有性格值seed乱数列(没错,就是一个数列),只不过性格值、个体值都和这个数列没有直接关系(好吧,偶先orz一下),只不过是从这个数列里二次加工才得到所谓的性格值乱数列和个体值乱数列,不过这两个乱数列仍然不就是性格值和个体值了(怎么样,orz了没),还需要进行一些计算才得到最终的性格值和个体。

一些必要的逻辑运算符:
And:与。将a,b 转化为2进制数,再进行对比,每个数位上都是1结果就取1,如果不是就取0,将得到的结果转化为原来进制的数,就是结果。
例子:
1011110101
0101110101
0001110101
Xor:异或。将a,b 转化为2进制数,再进行对比,每个数位上的0或1如果相同,那么结果就取0,如果不同就取1,将得到的结果转化为原来进制的数,就是结果。
例子:
1011110101
0101110101
1110000000
Or:或。将a,b 转化为2进制数,再进行对比,每个数位上只要有1结果就取1,如果不是就取0,将得到的结果转化为原来进制的数,就是结果。
例子:
1011110101
0101110101
1111110101
^:位异或。将第一个操作数的每一位与第二个操作数中对应的每一位进行比较。如果一位是 0,另一对应位是 1,则相应结果位设置为 1。如果两位都是 0 或两位都是 1,则相应结果位设置为 0
例子:
1011110101
0101110101
1110000000
>>右移。将操作数右移,左端补0
例子:
10111101010101110101>>5

01011110101010111010
00101111010101011101
00010111101010101110
00001011110101010111
00000101111010101011


那么具体过程开始了:
应该有一些会刷乱数的同学已经知道在刷之前需要知道nazoVCountTimer0GxStatFrameMAC地址、启动游戏时间这些参数。那么这些参数到底怎么用?
nazo:在比较早出厂的卡带是确定的:黑0x2215f10、白0x2215f30
写成如下形式AABBCCDD,不足8位首位补0,也就是AA=02BB=21CC=5fDD=10,这个是黑的情况,白请自行解决。
然后计算nazo+0xfc(注:这是16进制的加法),得到结果后同样写成AA'BB'CC'DD'的形式,黑的话是这样0x2215f10+0xfc=0x 221600C,那么AA'=02BB'=21CC'=60DD'=0C
继续计算nazo+0xfc+0x4c,得到结果后写成AA''BB''CC''DD'' 的形式,0x2215f10+0xfc+0x4c=0x 2216058,即AA''=02BB''=21CC''=60DD''=58
VCount:同样是确定的:黑0x60、白0x5f
写成EEFF,不足4位首位补0,黑的话就是EE=00FF=60
Timer0:黑0x 0c790x0c7a、白0xc680xc69
写成GGHH,这个因为不确定所以例子就不写了。
GxStatFrameGxStat=0x6000000FrameNDS=8NDSL=6,然后进行xor运算,结果写成IIJJKKLL形式。比如NDS情况就是(0x6000000xor8
0x6000000=1100000000000000000000000008=1000=000000000000000000000001000
110000000000000000000000000
000000000000000000000001000

110000000000000000000001000=0x6000008
II=06JJ=00KK=00LL=08
MAC地址:在本体设定里可以看到形式为M1-M2-M3-M4-M5-M6的数,分别对应Mnn=123456)即可,然后再计算M1' =M1^LLM2'=M2^KKM3'=M3^JJM4'=M4^II^为位异或运算)。
启动游戏时间:写为yymmddNNhhmiss,这个看名字应该知道都是表示哪个了,要注意的有两个:NN是星期几,星期日=0hh12点以后是计算hh+0x40。当然这些数字都是要转换成16进制数字的。
还有一个A键连打参数,写成OOPP。当进游戏时什么都不按则为0x2fff,只按A键的话是0x2ffe
这些参数进行计算确定后排成如下格式:

00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
00
DD
CC
BB
AA
DD'
CC'
BB'
AA'
DD'
CC'
BB'
AA'
DD''
CC''
BB''
AA''
10
DD''
CC''
BB''
AA''
HH
GG
FF
EE
00
00
M5
M6
M1'
M2'
M3'
M4'
20
yy
mm
dd
NN
hh
mi
ss
00
00
00
00
00
00
00
00
00
30
PP
OO
00
00

然后通过SHA-1hash化得到164位的2进制数,这个就是性格值seed列进行运算所需要的初始值。SHA-1hash化方法过于复杂,就不写在这里有兴趣的话GOOGLE下即可。
好吧,偶相信到这基本上已经没人还有耐心看下去了,不过这只是个开始,因为只得到了个初始值而已。

性格值乱数列生成方法:
先计算性格值seed{XS[n]}
XS [n+1] = XS [n] * 0x5D588B656C078965 + 0x269EC3
XS [0]是上面计算出的初始值,如果这个初始值(二进制数)多于65位,则把65位以上的位数舍掉只取后64位作为初始值。对于计算出的每一个XS[n],这是个16进制的数,将该数转换成2进制的数,将该2进制数后32位舍去,只取前32位(如果不足32位,在首位补0),作为一个新的数列{X[n]},该数列就称为性格值乱数列。使用的是从X[1]开始而不是X[0]
而我们所说的消费乱数其实就是在移动数列的指标项n。比如当前乱数是X[17],如果消费掉了3个乱数那么当前乱数就是X[20],这个请务必了解。
性格值乱数消费有多种方法,大家只要记得两个常用的即可。
存档:就是这么简单,而且没有精灵存档同样可以消费,数量为1
音符鸟说话:必须要录完音的,如果是它自己的声音则没有效果。打开精灵界面点查看属性,放出自己录的声音后乱数消费1

在说性格值正式生成前再说下这个乱数列另外个用处,就是决定到底遇上哪些精灵。你没有看错,乱数列把你能遇到的野生精灵都决定了。
计算X= X [n]*100>>32
计算时要注意X [n]要转换成2进制数,10010进制的也要转换成2进制数,>>是右移运算,>>32就是右移32位。得到的X转换成10进制数,这个数一定是0-99之间的。按照下表决定出现的精灵。

X
出现的精灵
0~19
0
20~39
1
40~49
2
50~59
3
60~69
4
70~79
5
80~84
6
85~89
7
90~93
8
94~97
9
98
10
99
11
其中右侧的0-11是代码,通过一张表可以与精灵名称对应。具体表
看到的是这种形式(括号里为等级)
0
1
2
3
4
5
6
7
8
9
10
11
ワルビル(34)
デスカーン(34)
ワルビル(35)
デスカーン(35)
ワルビル(36)
デスカーン(36)
ワルビル(36)
デスカーン(36)
ワルビル(37)
デスカーン(37)
ワルビル(37)
デスカーン(37)
和上表对应即可知道遇到的是哪个精灵。


接下来是真正的性格值,性格的决定了。分成固定战斗和野生、地图乱跑、蛋生3种。固定战斗也包括主角。
固定战斗和野生:
X [n]*2>>32为同步率判定。因为这个结果只有01两种,虽然偶没有具体测试到底是0为同步率成功还是1为同步率成功,不过可以肯定能够判定同步率是否成功。
X [n]^0x00010000(有时是X [n] ^0x80010000)为性格值。这是目前为止唯一不确定的因素,因为几乎所有的性格值都是X[n]^0x00010000但也有比较少的情况性格值是X [n]^0x80010000
如果第一步同步率没有成功时、(X[n+2]*25)>>32作为性格。
地图乱跑:
X [n]是性格值。
(X [n+1]*25)>>32是性格。
蛋生:
(X [n]*25)>>32是性格,不过还要和下一步结合来看。
如果父母一方带不变石的情况下,(X [n+1]*2)>>32进行性格遗传判定,如果判定遗传成功则覆盖上一步结果,如判定遗传失败则保留上一步结果。
以下为带不变石情况,如果不带的话则使用前一个乱数(如带不变石用的乱数是n+2,则不带不变石用的乱数是n+1)。
父母为雄雌且雌性是梦特性时通过(X [n+2]*5)>>32进行梦特性遗传判定,将结果转换成10进制数如果结果大于2时为梦特性遗传。不是梦特性时乱数X [n+2]同样消费,只是没有效果。
如果父母里有百变怪的话乱数再消费1,也就是X [n+3]
以下情况是有百变怪,如果没有则使用前一个乱数,和不变石情况需要一起考虑,最多要用到前两个乱数。
(X [n+4]*6)>>32来决定遗传到哪个个体值(HABCDS对应012345),X [n+5] >>31决定后亲遗传哪个个体值。有哪方带了パワー系道具的话那个个体固定遗传(这是废话)。如果个体重复则跳过,跳过2个再计算(X [n+5]后是X [n+7]),直到遗传到3个个体值。
(X [n+6]*0xffffffff)>>32为性格值。


个体值乱数列
如果以为上面的性格值乱数列够变态的话那这个个体值乱数列就更要命了。
初步概念:个体值乱数列并不就是一个数列,它是由无数张表所组成,每张表含有624个数。如果624个数用光则跳到下一张表从新从0数到623。第0张表作为seed所以从第一张表才作使用。

0张表的数:
t[0] = XS[1]的前32
t[n] = ((t[n-1] 的前2) xor t[n-1])*0x6c078965 +n


中间表的数
k[0] = (t[A] and 0x80000000) or (t and 0x7fffffff)
k[1] = (k[0]/2) xor t[C]
k[0]是奇数时t[A] = k[1]xor0x9908b0df、偶数时t[A] = k[1]
n=0-226A=nB=n+1C=n+397
n=227622A=nB=n+1C=n-227
n=623A=623B=0C=396
其中k[0]k[1]保证是322进制数。

个体值决定
记第0张表为E,保证k[0~3] 322进制数
k[0] = (E/0x800) xor E
k[1] = ((k[0]*0x80) and 0x9d2c5680) xor k[0]
k[2] = ((k[1]*0x8000) and 0xefc60000) xor k[1]
k[3] = (k[2]/0x40000) xor k[2]
个体值=k[3]/0x8000000;舍去小数。
野生精灵、固定战斗、化石复活
t[n]- t[n+5]按照上面方法计算,按照HABCDS排列
蛋生
t[n+7]- t[n+12]按照上面方法计算,按照HABCDS排列
地图乱跑
t[n+1]- t[n+16]按照上面方法计算,按照HABDSC排列(注:打死以后复活情况不明)



以上就是5代精灵那些隐藏参数的生成方法。偶写这篇东西不是鼓励大家去修改反而是希望大家不要去修改,以为改的多么完美其实漏洞百出。另外不要相信修改器上没有的就是数据不存在,举个简单例子,修改器上是没有48h-5Dh这些值的,但偶可以很明确的告诉你这些值都是存在而且有意义的,所以要想不被查出来最好的办法就是别去做。



本文只发PMGBAPM525KD8三处,不允许转往别处

评分

参与人数 4威望 +1012 收起 理由
diouxis + 1 不是说好回复就可以看得嘛,怎么要10ww?
kilalala + 10 威望⑩ひどいな,虽然我并不想看
不思議メ猫 + 999 奖励
疾風瞬 + 2 好帖

查看全部评分

152

主题

1万

帖子

3万

积分

管理员

帝国城管侧使徒

威望
90
帅气
48
聪明
1651
强壮
881
美丽
19
可爱
49
星沙
1
金钱
40744

十周年纪念

发表于 2011-4-22 13:25:51 | 显示全部楼层
好帖
回复 支持 反对

使用道具 举报

131

主题

2万

帖子

2万

积分

版主

威望
54
帅气
15
聪明
292
强壮
1
美丽
7
可爱
4
星沙
0
金钱
84263
发表于 2011-4-22 13:55:52 | 显示全部楼层
我个人觉的
这帖子给我看了只会刺激我去做完美的PM
[[口袋妖怪不可思议的迷宫 时之探险队·暗之探险队·空之探险队]]
回复 支持 反对

使用道具 举报

186

主题

566

帖子

794

积分

饲育家

银河队员

威望
0
帅气
0
聪明
208
强壮
16
美丽
120
可爱
81
星沙
0
金钱
12166
发表于 2011-4-22 15:17:13 | 显示全部楼层
谁能概括一下,我看不懂……
回复 支持 反对

使用道具 举报

5

主题

91

帖子

251

积分

奔跑少年

这是……新功能?

威望
0
帅气
0
聪明
91
强壮
0
美丽
0
可爱
1
星沙
0
金钱
1114
发表于 2011-4-22 15:50:41 | 显示全部楼层
= =看上去真麻烦。

有些地方不懂,LZ的意思是,用修改器那个“正规值生成”会有疏漏?

好像在哪里看过修改合法PM的教程。
回复 支持 反对

使用道具 举报

6

主题

23

帖子

56

积分

新人训练师

威望
0
帅气
0
聪明
16
强壮
0
美丽
0
可爱
0
星沙
0
金钱
302
发表于 2011-4-22 16:36:22 | 显示全部楼层
完全不懂    从来 不用“正规值生成”
回复 支持 反对

使用道具 举报

1

主题

8

帖子

32

积分

新人训练师

威望
0
帅气
0
聪明
9
强壮
0
美丽
0
可爱
0
星沙
0
金钱
201
发表于 2011-4-22 17:42:43 | 显示全部楼层
回复看看,增长知识
回复 支持 反对

使用道具 举报

55

主题

3272

帖子

5346

积分

版主

威望
10
帅气
28
聪明
726
强壮
304
美丽
27
可爱
120
星沙
0
金钱
33336
发表于 2011-4-22 19:41:10 | 显示全部楼层
甘すぎる
我根本就没法wifi呀
管他怎么设我照样凭喜好修改solo战斗地铁去口牙
回复 支持 反对

使用道具 举报

0

主题

24

帖子

32

积分

新人训练师

威望
0
帅气
0
聪明
11
强壮
1
美丽
4
可爱
0
星沙
0
金钱
355
发表于 2011-4-22 20:49:33 | 显示全部楼层
威望10的限制去了吧
我才3啊
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

积分

纯白之心

威望
0
帅气
0
聪明
3
强壮
0
美丽
0
可爱
0
星沙
0
金钱
95
发表于 2011-4-22 21:00:08 | 显示全部楼层
好奇ing,学习下
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|PMGBA ( 闽ICP备06006686号  

GMT+8, 2016-12-9 19:30 , Processed in 0.347919 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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