口袋妖怪吧 关注:1,068,255贴子:32,327,714

【开坑缓更系列】如何确认宝可梦是否合法

只看楼主收藏回复

吧里的新人们经常奇迹到一些pm是否合法,所以我打算开一个从数据的角度解jie析pou一个宝可梦是否合法的坑,感觉中文圈没有相关的这些资料。
本帖会从一个pm数据的各个部分分解讲起,并7代开始反推回前代,短时间内整理不完,顺带会非常琐碎,所以缓更。
首先定义一下什么是合法宝可梦,这是我个人定义,也是主流的定义:
通过游戏捕获或孵化或配信,正常获得的宝可梦 + 与通过上述途径产生的数据完全不可分辨的宝可梦
也就是说这些宝可梦让GF真正认真地去检查也不会查出什么问题。(无力吐槽了)
举例:
1、乱数孵化的蛋闪,只要父母能够合法获得,数据由游戏生成,合法。

2、沉重球巨金怪,正常游戏不能通过任何获得,能够直接分辨,不合法。

3、GTS得到的配信,能上GTS就一定没有配信的奖章,能够分辨,不合法。


1楼2017-04-25 14:15回复
    占楼,顺带我为了方便,我会用某软件举例,希望讨论不要超过本吧允许的范围。


    2楼2017-04-25 14:16
    回复
      战略性mark一下


      IP属地:上海来自Android客户端3楼2017-04-25 14:17
      回复
        大佬贴留名


        IP属地:江苏4楼2017-04-25 14:19
        回复
          4代部分配信好像没有经典缎带,也就是可以上GTS。但数量很少,而且一定没有卡标。


          IP属地:德国来自iPhone客户端5楼2017-04-25 14:21
          收起回复
            占楼为王


            IP属地:山东来自Android客户端7楼2017-04-25 14:23
            回复
              核心问题1:宝可梦数据是怎么存的?
              数据就是一串二进制01序列,如果有点计算机基础知识的话,就知道1位0或1叫做1bit(位),8bit = byte(字节)。然后7代宝可梦存储占用的空间为232byte(0xE8), 也就是232*8位01。实际存储在内存里以及存档里的这些数字是通过加密打乱过后的,但是可以通过一定方式解密,重新���得能够直接“看到”并分析的数据结构。
              至于详细的分布的话看下图(7代宝可梦解剖图)
              而处在队伍中的宝可梦为了表示状态,会有更多的字节(260byte = 0x104)表示。


              9楼2017-04-25 14:35
              回复
                按爪


                IP属地:江苏来自Android客户端10楼2017-04-25 14:43
                回复
                  大佬又开技术贴了。膜拜


                  IP属地:浙江来自Android客户端12楼2017-04-25 14:45
                  回复
                    黑色部分为未使用的字节,于是你会发现除去这些字节外,剩下大部分都是字符串:昵称,初训家名称,持有人名称,每个都占用了24字节,也就24个英文字符,12个全角汉字,但实际没有那么长。英文字符会用00隔开,所以只有11个英文(需要0xFF作为字符串结束的标志),至于中文也是两字节一个字,为什么不用满就不知道了。。。
                    顺带日月里种类名汉字的编码方式与国际通用标准unicode不同,简体中文宝可梦每个字符的实际允许范围是0xE800-0xEB0E,如果你还记得“霓虹自舔狂”的话。。


                    13楼2017-04-25 14:46
                    收起回复
                      简单举例:妙蛙种子

                      波克基古

                      卡璞鸣鸣


                      14楼2017-04-25 14:52
                      收起回复
                        跑偏了,那慢慢从9楼的解剖图开始
                        1、加密常数:顾名思义就是用来给后面的数据打乱加密的一个常数。值得一提的是,在6代以前是用PID加密的,6代开始就专给了一个数字用于加密。 加密使用的是LCRNG
                        2、完整性:检查数据性的,应全为0
                        3、求和,英文很贴切Checksum: 字面意思为后面所有字节的和,也是用来检查的


                        15楼2017-04-25 15:01
                        回复
                          4、种类:也就是图鉴编号,一个字节只能表示2^8 =256,现在图鉴已经802了,所以用了两个字节
                          至于形态问题之后再说
                          5、持有物:游戏里所有物品都有个ID,具体的种百里有,就不贴链了。(所以你想在这个地方改个大师球完全不会对其他地方产生影响。。)


                          16楼2017-04-25 15:04
                          回复
                            w大佬的贴一向先收藏在慢慢看


                            IP属地:澳大利亚来自iPhone客户端17楼2017-04-25 15:05
                            回复