口袋改版资源吧 关注:242,531贴子:1,538,530

【不定期更新】形态转换研究

只看楼主收藏回复

截止目前一共有718种以上的神奇宝贝,每种神奇宝贝或多或少都有所不同,有些甚至每一只都完全不同。有一些只是外表不同,另外一些则是不仅外表不同,连能力都有所差别。
神奇宝贝的不同型态有些可以自由转换,有些则是固定不变的。在早先,图鉴首页显示默认的总是玩家初次遇到的型态,而在第五世代,可以在吹寄市升级图鉴,自由选择显示在图鉴首页的神奇宝贝,也包括不同颜色的神奇宝贝。
—————神奇宝贝百科
而这里我们所要的仅是自由转换形态,其余的自己脑补。


1楼2015-01-04 12:51回复
    帮顶


    IP属地:广东来自手机贴吧2楼2015-01-04 12:56
    收起回复
      2025-08-09 03:20:23
      广告
      不感兴趣
      开通SVIP免广告
      然后呢?


      来自Android客户端3楼2015-01-04 13:05
      收起回复
        还有特别篇的阿伯怪背纹不一样,这是打算重新翻新系统啊


        来自Android客户端5楼2015-01-04 13:15
        回复
          等更新,最近技术贴好多
          -——°
          我真的很想和你在大雪纷飞的天空下散步,因为一不小心,我们就白了头。哈哈哈哈哈哈骗你的!其实,没有下雪也没有你


          IP属地:湖南来自Android客户端6楼2015-01-04 13:18
          回复
            楼主网速碉堡中,慢点更新


            来自手机贴吧7楼2015-01-04 13:19
            回复
              目前有着自由转换形态的精灵为:
              第3世代
              皮卡丘-换装。
              漂浮泡泡-天气[战斗中]。
              代欧奇希斯-版本限定/战斗外切换。
              第4世代
              结草儿和结草贵妇-战斗后随场地切换。
              樱花儿-天气[战斗中]。
              洛托姆-战斗外切换。
              骑拉帝纳-在破格世界外携带白金玉魂维持起源形态。
              洁咪-战斗外切换[天空型态的洁咪在冰冻状态和夜间会转换为陆地型态。]。
              阿尔宙斯-携带石板切换。
              第5世代
              达摩狒狒-不倒翁模式特性HP少于一半切换。
              四季鹿和芽吹鹿-根据季节改变其外表。
              三云神-战斗外切换。
              酋雷姆-合体。
              凯路迪欧-习得技能神秘之剑,转化为觉悟的样子。一旦凯路迪欧忘记神秘之剑便会变回一般型态。
              美洛耶塔-对战中使用古老之歌。
              盖诺赛克特-携带卡带影响到技能破坏技术的属性和盖诺赛克特背上炮的颜色。
              第6世代
              多丽米亚-美容
              坚盾剑怪-攻击防守
              哲尔尼亚斯-战斗非战斗形态
              胡巴-未知
              另外还有超级进化,不过这里我们不弄这个,做法类似美洛耶塔。


              8楼2015-01-04 13:21
              回复
                形态最简单的方法就是利用精灵空位替换,加上扩充技术其实精灵空位不成问题。
                当然如果你觉得这种方法不好我也没法阻拦你。
                之后的部分嘛→_→我就随便误导了,所以先警告一下这帖如果造成你的改版崩溃我也不会负责的。
                另外在这贴里我只涉及火红版本,宝石版的应该大致相同。
                还有可能我的风格写法比较粗暴,所以就希望聚聚能指点一下。
                然后新人不建议看这个,先建立好基础先,伸手党先剁手后问,别问我什么是变数,什么是寄存器,什么是脚本→_→
                最后如果问我为什么不直接做个补丁闪人→_→废话这么多
                答:关你毛事,反正我就不想让人没劳动得成果,随便打几个补丁就说做个改版。起码也能知道一些原理(好吧其实我是想来水经验→_→)


                10楼2015-01-04 13:22
                回复
                  2025-08-09 03:14:23
                  广告
                  不感兴趣
                  开通SVIP免广告
                  首先得认识这几个比较基本的东西。
                  精灵数据位置-partystart-0x02024284-精灵数据的位置,每只为100字节。
                  破解器-decrypter-0x0803FBE8-得到特定数据的返回值。
                  加密器-encrypter-0x0804037C-修改数据并重新加密计算。
                  能力计算器-statrecalculate-0x0803E47C-重新计算能力数值


                  11楼2015-01-04 13:24
                  回复
                    接下来是个简单的转换版本,
                    r0=精灵数据地址
                    r1=选项
                    r2=参数地址
                    .text
                    .align 2
                    .thumb
                    .thumb_func
                    .global forme_change
                    main:
                    push {r0-r3,lr}
                    ldr r0, partystart
                    mov r1, #0xb
                    ldr r2, var
                    bl encrypt
                    bl statrecalc
                    pop {r0-r3,pc}
                    encrypt:
                    ldr r3, encrypter
                    bx r3
                    statrecalc:
                    ldr r3, statrec
                    bx r3
                    .align
                    encrypter:.word 0x0804037D
                    partystart:.word 0x02024284
                    statrec:.word 0x0803E47D
                    var:.word 0x020370C0
                    只影响首位精灵,在变数8004输入种族编号,脚本callasm+1
                    测试过后并无大碍,除了让绿毛虫裂空座那种超种族替换可能会导致数据崩溃。


                    12楼2015-01-04 13:24
                    回复
                      之后的我们大部分都照这个框架来写
                      不过首先这只能影响首位,所以我们做一些调整
                      ldr r4, partystart
                      ldr r1, var1
                      ldrh r1, [r1]
                      mov r2, #0x64
                      mul r1, r2
                      add r4, r1
                      现在r4就等于var1设定的精灵数据位置


                      13楼2015-01-04 13:24
                      回复
                        然后合体之后就是半成品了
                        main:
                        push {r0-r4,lr}
                        ldr r4, partystart
                        ldr r1, var1
                        ldrh r1, [r1]
                        mov r2, #0x64
                        mul r1, r2
                        add r4, r1
                        mov r0, r4
                        mov r1, #0xb
                        ldr r2, var
                        bl encrypt
                        mov r0, r4
                        bl statrecalc
                        pop {r0-r4,pc}
                        encrypt:
                        ldr r3, encrypter
                        bx r3
                        statrecalc:
                        ldr r3, statrec
                        bx r3


                        14楼2015-01-04 13:25
                        回复
                          现在得加一个判断种族,利用破解器
                          r0=精灵数据地址
                          r1=选项
                          之后r0得到返回值
                          get_species:
                          mov r1, #0xb
                          bl decrypt
                          ldr r1, var2
                          ldrh r1, [r1]
                          cmp r0, r1
                          bne exit


                          15楼2015-01-04 13:25
                          回复
                            再合体
                            main:
                            push {r0-r4,lr}
                            ldr r4, partystart
                            ldr r1, var1
                            ldrh r1, [r1]
                            mov r2, #0x64
                            mul r1, r2
                            add r4, r1
                            mov r0, r4
                            get_species:
                            mov r1, #0xb
                            bl decrypt
                            ldr r1, var2
                            ldrh r1, [r1]
                            cmp r0, r1
                            bne exit
                            mov r0, r4
                            mov r1, #0xb
                            ldr r2, var
                            bl encrypt
                            mov r0, r4
                            bl statrecalc
                            exit:
                            pop {r0-r4,pc}
                            encrypt:
                            ldr r3, encrypter
                            bx r3
                            decrypt:
                            ldr r3, decrypter
                            bx r3
                            statrecalc:
                            ldr r3, statrec
                            bx r3


                            16楼2015-01-04 13:25
                            回复