公主联盟吧 关注:8,732贴子:214,519
  • 17回复贴,共1

gba公主同盟神圈/珍圈asm解析

只看楼主收藏回复



IP属地:河南来自Android客户端1楼2024-07-27 13:41回复
    想了解到底是获得神圈还是获得珍圈,就必须先找到道具的获取程序。
    想找到道具的获取程序,那就必须先找到道具的储存地址。


    IP属地:河南来自Android客户端2楼2024-07-27 13:46
    回复
      从修改人物装备金手指逆向到了道具背包地址,过程没有记下来,现在忘了


      IP属地:河南来自Android客户端3楼2024-07-27 13:50
      收起回复
        能力值和道具值为xyzF7BDE,
        道具R的三个值为xyz,
        xy=R÷2 ,
        R单数时z=0+名声,
        R双数时z=8+名声。


        IP属地:河南来自Android客户端5楼2024-07-27 13:55
        回复
          03004EB0开始是背包地址,
          一个字节控制8种道具,
          一个字节8位,一位代表一个道具。


          IP属地:河南来自Android客户端6楼2024-07-27 13:58
          回复
            神圈与珍圈的获取,是从43关开始的,动画结束之后,炼金合成物就变成了神圈或/珍圈,这个时候给相应的道具地址断点就行了


            IP属地:河南来自Android客户端9楼2024-07-27 14:02
            收起回复
              道具的获取与删除判断就在
              0807B2CE 2E00 cmp r6, 0h
              0807B2D0 D00D beq 807B2EEh


              IP属地:中国台湾10楼2024-07-27 14:14
              回复

                炼金物的删除


                IP属地:中国台湾11楼2024-07-27 14:15
                回复

                  神圈的获取


                  IP属地:中国台湾12楼2024-07-27 14:17
                  回复

                    往上追溯,查找到了道具数值以及写入删除操作。
                    08619777=F7,F7即247号道具,炼金物,00代表删除此道具
                    08619781=6C,6C即108号道具,神圈,01代表获得此道具
                    到rom中查看

                    1FF70000,1F是用于计算函数跳转,F7为道具炼金物,00为删除道具。
                    1F6C0001,1F是用于计算函数跳转,6C为道具神圈,01为获得道具。
                    再仔细一看,不远处还有一个1F890001,0x89即137,再看一下珍圈,正好是137,也就是说,这就是珍圈的写入数据。


                    IP属地:中国台湾13楼2024-07-27 14:32
                    回复
                      附上1F计算函数跳转过程


                      图1代码共经历了N次,我记录下了其中关键的3次,
                      08619776→0861977A→08619780,
                      但为什么是08619780的神圈而不是08619789的珍圈呢?
                      问题应该是出在了0861977A这里。


                      IP属地:中国台湾14楼2024-07-27 14:44
                      回复

                        这部分就是0861977A的函数,可以看见08619780是由0861977B+5而来,
                        在0807FA1C处读取了03004F01的数据,
                        并以此数据的第三位进行了跳转判断,
                        若03004F01第三位为0,则跳转至08067C94,获得珍圈
                        若03004F01第三位为1,则不会跳转,获得神圈


                        IP属地:中国台湾15楼2024-07-27 14:53
                        回复
                          之后回到32关,在32关获得炼金道具时,03004F01的数据会发生变化。
                          在同一回合内,由同一人获取,第三位的数据可能为零,也可能为一,所以,神圈的获取应该是随机的,并且在32关获取时就已经确定。


                          IP属地:河南来自Android客户端17楼2024-07-27 15:05
                          收起回复
                            综上所述,神圈与珍圈的获取决于03004F01中的第三位,这个地址处的数据究竟是什么我并没有仔细研究。
                            但有一点可以明确,重开并不会影响到这个地址的数据,也就是说神圈的获取与重开没有任何关系,同时,MVP也不会影响到这个数据。


                            IP属地:河南来自Android客户端18楼2024-07-27 15:17
                            回复
                              厉害了,也不给个精品说不过去


                              IP属地:吉林来自Android客户端19楼2024-07-27 15:20
                              回复