铸剑物语吧 关注:6,919贴子:210,082

我终于解封了,发点修改福利

只看楼主收藏回复



IP属地:新疆1楼2021-09-05 20:23回复
    我的号在前年莫名其妙地被全吧永久封禁(理由居然是我发小广告,尽管我从没发过T_T),今天登上账号发现又莫名其妙地解封了
    所以永久封禁的意思原来是想让人放弃贴吧吗


    IP属地:新疆2楼2021-09-05 20:30
    回复
      言归正传,我关注铸吧也有一段时间了,发一些关于游戏的修改就当是为铸吧作贡献好了。


      IP属地:新疆3楼2021-09-05 20:33
      回复
        1.关于铸3的角色升级点数代码:
        020036BA:0123(代码格式为rawcode)(在主角升级增加能力的界面开启金手指)
        2.关于铸1的角色升级点数代码:
        03001463:63(代码格式为rawcode)(注意:该条金手指修改的区域为gba的fast wram区域,因此只能在升级增加能力界面使用,否则可能会造成死机)ps:这条代码是我自己做的
        3.关于一个cb与raw转换的问题:
        大家在网上寻找cb码时可能都会遇到让把0改为8的说法,其实,对于单字节修改而言,应该将0改为3


        IP属地:新疆4楼2021-09-05 20:51
        收起回复
          4.关于gs码(gameshark),cb码(codebreaker)与raw码:
          这两种金手指是北美的两家金手指厂商生产出来的正牌金手指,本来是用于在游戏机上插入对应硬件(也就是说,有一种“机器”叫gameshark,并且可以插入gba游戏机以使游戏机可以运行对应的金手指)来使用的,但是现在的gba模拟器一般也提供对这两种金手指的软件支持。
          理解这一点的意义在于,两家厂商为了防止金手指被破解,都采用了暗号化方法加密了他们的金手指。这也是为什么我们现在看到的金手指很多看上去很怪,例如
          B1BEA190F347
          17CF08B36EA5
          这样的金手指就是经过了暗号化。
          再比如绿宝石著名的穿墙金手指C518E2595ADBAF5B,格式是gameshark v1的,其实解码后是这样一条金手指
          0808820C:2100(rawcode格式)
          了解这一点的意义又在于,原理上讲最清晰的金手指格式就是raw码(也就是在内存中的真实地址,形式上类似于逻辑地址),但是由于金手指厂商提供的多为gs/cb码,才导致现在rawcode反而没有gs/cb知名。因此,要想学会用金手指修改gba游戏,首先要学会在不同模拟器上运行raw码。(用ce/金山之类直接修改内存的可忽略)


          IP属地:新疆5楼2021-09-05 21:11
          收起回复
            暂时就说这些吧,以后想到什么了再说
            大家有修改方面的心得也可以在这个帖子里交流


            IP属地:新疆6楼2021-09-05 21:19
            回复
              顶一下


              IP属地:新疆7楼2021-10-08 20:37
              回复
                楼主继续更新啊


                IP属地:广东来自Android客户端8楼2021-10-12 16:45
                收起回复
                  5.从铸剑物语3武器修改说起:
                  其实,铸剑物语3的武器修改,早在@dashash13 的时代就已经研究透了,并且一直都有人在铸吧反复提及,包括精品区那个内存机制研究的贴子,这也是楼主一直没有就这方面发贴的原因。
                  不过,鉴于gba修改方面的确仍有不少小白,楼主就稍微再说一说铸3武器的修改。不过,这个贴子将不着重于金手指代码的发布,而会谈一谈与这些金手指有关的内容。
                  首先,修改铸三武器需要知道一件事情:铸三的主人公身上最多只能携带30把武器。对此事有疑问的话不妨动手实验实验,看身上带满30把武器后是否还能从武器屋购入新铸模
                  知道这一事实后,我们还需要知道另一个事实:在各种游戏中,我们通常都会遇到数据,并且,在许多游戏中,同类型的数据往往是以相同规律存储的。
                  举个例子,口袋妖怪系列游戏中,玩家可以携带6只精灵。在计算机看来,这6只精灵就是6组数据,每一组数据包括了精灵的种类,等级,hp等信息。并且,这些数据的存储是十分规律的。这种规律体现在两个方面:一方面,假设第一只精灵a的种类数据后面的是a的等级数据,那么第二只精灵b的种类数据后面就也是b的等级数据;另一方面,假如第一只精灵的种类数据后面隔17个地址是第二个精灵的种类数据,那么第一只精灵的hp数据后面隔17个地址就也是第二个精灵的hp地址。
                  明白这一点的重要意义在于,假如你知道了第一只精灵的hp修改金手指,又知道了两只精灵的数据间隔是17,那么你马上就能知道这6只精灵所有的hp修改金手指。不仅如此,你还可以猜到,确定一个精灵的各方面属性的,就是这17个数据,从而通过简单的实验方法,找出修改精灵种类,等级等其他方面的金手指。因为每隔17个数据,就会对应到下一只精灵的同种数据,因此这17个数据,就是一只精灵的所有数据。(当然,如果hp数据不是一只精灵在计算机存储中的第一个属性,那么两个hp数据之间夹着的就不是一只精灵完整的数据,而是第一只精灵排在hp后面的属性与第二只精灵排在hp前的属性)
                  如果以上两点明白后,我们就不难理解,铸剑物语3的武器修改金手指的相关内容了:
                  首先,请参考https://tieba.baidu.com/p/3344275836这个贴子里的“第一个武器”系列金手指(代码格式为raw码),注意看到这些金手指之间明显的关联性:地址仅仅相差1。这表明武器这些数据在存储时是挨着的。
                  之后,注意该贴1L最后一句话“地址+1C(hex)为下一个武器的地址",这句话相当于我上面举的口袋妖怪的那个例子的17。
                  楼主决定说上面那些基本就够了,考虑考虑的话,这里基本就能明白(因为本身其实也不难)。不过楼主最后补充两点:
                  1.玩家在铸3中的武器存储是类似于口袋妖怪的。唯一的一点区别在于,口袋妖怪中,如果玩家将一个pm放入电脑,那么第二个pm的数据会自动进入第一个pm的位置,其他的类推。
                  区分这一点的意义在于,假设玩家一开始,背包里第一只pm是a,第二只是b,玩家使用一条金手指,让第一只pm的hp变为999,此时a的hp变为999。当玩家把a放入电脑时,b的hp将变为999。
                  但是,在铸剑物语3中,这样的事情却不会发生。假设玩家在游戏流程中获得的第一把剑为a,第二把剑为b。玩家使用一条金手指,使第一把武器的tec变为255。此时,a的tec变为255。但是,当玩家将a剑卖了之后,b剑的tec并不会变为255。


                  IP属地:新疆9楼2021-10-12 23:12
                  收起回复
                    接楼上
                    尽管,b剑在玩家的武器列表中也许处于第一个位置
                    之后,假如玩家购买了一个新铸模,并用它打造了一把剑c,这时如果玩家仍然开着第一把武器tec变为255的金手指,玩家就会发现,新造的c的tec变为了255。尽管c剑在玩家现实的武器列表中也许并不排在第一位,可是由于a剑卖出后,第一位武器的位置便空了,因此新的c剑的数据就会存储到a原来的位置。
                    这一点理解后,我们自然会问:那么,我不想专门去记我在游戏中获得武器的时间顺序,有没有什么办法能直接更改这些武器的顺序呢?
                    答案是,有倒是有,但是武器不能超过6把
                    估计一看到6,大家就猜到了这个方法没错,讲这六把武器存在钓鱼点的武器托管商人处,再取出来时取出来的顺序就对应第一到六把武器的地址顺序
                    当然,如果你能记住你获得武器的先后顺序,并且即使你出售武器时也记得很清楚,那也可以不用这种方法
                    再或者,你也可以选择将30把武器的金手指全部输入模拟器,要修改时就一个一个地开,看哪一个对应你想要修改的那把武器
                    2.考虑到有些小白不知道地址如何推算,楼主在这里举一个例子:
                    例如,从上面楼主引用的那个贴子中可以看到,将第一把武器的tec改为255的金手指是020010EB:FF,这里的FF是十六进制的255,而前面的020010EB则是储存第一把武器tec的地址,再结合该贴指出1ch以降,因此可以知道,第二把武器满tec的金手指为02001107:FF。其中,02001107(h)=020010eb(h)+1c(h),h是十六进制后缀,表明某个数字是十六进制数
                    另外,我们可能会问,如何用电脑计算十六进制加法呢?在window系统下方法是这样的:首先,按开始键+r键打开运行窗口(不会按组合键的可以自行百度)之后在运行窗口中输入calc,即可打开windows系统自带的计算器。win10系统需要开启计算器的程序员模式,在弹出的计算器窗口中找找应该能找到,之后就直接输入加数,再输入加号,再输入另一个加数,再按等号就行了


                    IP属地:新疆10楼2021-10-13 18:37
                    收起回复
                      再顶一下


                      IP属地:新疆11楼2021-10-15 12:20
                      回复
                        又顶一下


                        IP属地:新疆12楼2021-11-24 07:38
                        回复
                          6.铸2角色升级时所获得的属性点数的金手指:
                          03001546:0123
                          格式为rawcode
                          注意:本条金手指修改的内存区域也是gba的fast wram区域,因此只能在升级界面使用,否则可能会造成死机。
                          所谓在升级界面使用是指,在升级时打开金手指,加完点数之后记得关掉


                          IP属地:新疆13楼2021-11-28 11:27
                          回复
                            自顶


                            IP属地:新疆14楼2021-11-28 11:33
                            回复
                              楼主多发点正好缺那个tec的码


                              IP属地:浙江来自Android客户端15楼2021-11-28 17:25
                              收起回复