1、新建一个ASM文件粘贴代码
2、代码如下:.text.thumb_func.global pmmain: lsl r0, r1, #0x1 add r0, r1 lsl r0, #0x2 add r0, r2 ldrb r0, [r0, #0x2] push {r4} mov r4, r0 bl get_ability cmp r0, #NN(天空皮肤) bne no_aerilate cmp r4, #0x0 bne return mov r0, #0x2 b returnno_aerilate: cmp r0, #NN(普通皮肤) bne no_normalize mov r0, #0x0 b returnno_normalize: cmp r0, #NN(冰冻皮肤) bne no_refrigerate cmp r4, #0x0 bne return mov r0, #0xf b returnno_refrigerate: cmp r0, #0xNN(妖精皮肤) bne return cmp r4, #0x0 bne return mov r0, #0x仙属性编号 b returnreturn: pop {r4} mov r8, r0 ldr r0, exit bx r0 get_ability: ldr r0, battle_participants mov r1, #0x58 ldr r2, battle_attacker ldrb r2, [r2] mul r1, r2 mov r2, #0x20 add r1, r2 add r0, r1 ldrb r0, [r0].align 2exit: .word 0x08047079battle_participants: .word 0x02024084battle_attacker: .word 0x0202420B
3、把里面的NN改成你要的新特性编号,保存编译。
4、把弄好的bin文件粘贴到rom里
5、将0804706C处改成00 48 00 47 xx xx xx 08,xx xx xx 08是你的数据地址+1
6、代码解析:代码如下:.text.thumb_func.global pmmain: lsl r0, r1, #0x1 a颊俄岿髭dd r0, r1 lsl r0, #0x2 add r0, r2 ldrb r0, [r0, #0x2] push {r4} mov r4, r0//前面基本无视 bl get_ability//跳转到取得战斗中宠物的特性编号,并存入寄存器r0返回 cmp r0, #NN(天空皮肤)//对比 bne no_aerilate//不是则跳转下一个特性判断 cmp r4, #0x0//r4=使用技能的属性,判断是否为普通系 bne return //不是则跳走 mov r0, #0x2//属性改变 b return//下同no_aerilate: cmp r0, #NN(普通皮肤) bne no_normalize mov r0, #0x0 b returnno_normalize: cmp r0, #NN(冰冻皮肤) bne no_refrigerate cmp r4, #0x0 bne return mov r0, #0xf b returnno_refrigerate: cmp r0, #0xNN(妖精皮肤) bne return cmp r4, #0x0 bne return mov r0, #0x仙属性编号 b returnreturn: pop {r4} mov r8, r0 ldr r0, exit bx r0 get_ability: ldr r0, battle_participants mov r1, #0x58 ldr r2, battle_attacker ldrb r2, [r2] mul r1, r2 mov r2, #0x20 add r1, r2 add r0, r1 ldrb r0, [r0].align 2exit: .word 0x08047079battle_participants: .word 0x02024084battle_attacker: .word 0x0202420B