1、首先,新建一个ASM文本文件,具体方法如下:右键,新建文本文件,然后右键那个新文件,将.txt改成.asm,注意文件名字不可以为汉字。
2、粘贴下列源码,注意选择你需要的版本
3、火红版本.text.align 2.thumb.thumb_func.global multiscaleandfurcoatMain: ldr r2, [sp, #0x28] ldrb r0, [r2] cmp r0, #0x3F bne Multiscale ldr r0, .Return bx r0Multiscale: cmp r0, #0xNN(多重鳞片编号) bne FurCoatCheckHP: ldr r1, [sp, #0x4] ldrh r0, [r1, #0x28] ldrh r1, [r1, #0x2C] cmp r1, r0 bne ReturnHalveDamage: lsr r7, r7, #0x1 mov r0, r8 lsr r0, r0, #0x1 mov r8, r0FurCoat: cmp r0, #0xNN(羊皮外衣编号) bne ReturnDefenseBoost: ldr r1, [sp, #0x14] mov r0, r1 add r1, r0, r0 str r1, [sp, #0x14]Return: ldr r2, .Return2 bx r2.align 2.Return: .word 0x0803F0E9.Return2: .word 0x0803F103
4、宝石版本.text.align 2.thumb.thumb_func.global multiscaleandfurcoatMain: ldrb r0, [r2] cmp r0, #0x3F bne Multiscale ldr r3, [sp, #0x4] ldr r0, .Return bx r0Multiscale: cmp r0, #0xNN(多重鳞片编号) bne FurcoatCheckHP: ldr r1, [sp, #0x4] ldrh r0, [r1, #0x28] ldrh r1, [r1, #0x2C] cmp r1, r0 bne ReturnHalveDamage: lsr r7, r7, #0x1 mov r0, r8 lsr r0, r0, #0x1 mov r8, r0FurCoat: cmp r0, #0xNN(羊皮外衣编号) bne ReturnDefenseBoost: ldr r1, [sp, #0x18] mov r0, r1 add r1, r0, r0 str r1, [sp, #0x18]Return: ldr r2, .Return2 bx r2.align 2.Return: .word 0x08069921.Return2: .word 0x08069939
5、接着,把源码里的NN改成你需要的编号,保存用thumb编译
6、编译好后将数据贴入你的rom内,记住粘贴的空位地址
7、将下列地址数据进行更改:宝石版本:00 48 00 47 xx xx xx 08 写到069918上火红版本:00 48 00 47 xx xx xx 08 写到03F0E0上xx xx xx 08是你的源码空位地址+1
8、代码解析:宝石版本.text.align 2.thumb.thumb_func.global multiscaleandfurcoatMain: ldrb r0, [r2] cmp r0, #0x3F bne Multiscale//这里r0储存了特性编号,如果不是3F则跳转判断多重鳞片处,是则按照跳转前的程序进行 ldr r3, [sp, #0x4] ldr r0, .Return bx r0//返回Multiscale: cmp r0, #0xNN(多重鳞片编号) bne Furcoat//判断多重鳞片,不是则去判断羊皮外衣(真麻烦。。)CheckHP: ldr r1, [sp, #0x4] ldrh r0, [r1, #0x28] ldrh r1, [r1, #0x2C] cmp r1, r0//对比目前宠物最大的HP和现在的HP,如果不相同则跳走结束程序 bne ReturnHalveDamage: lsr r7, r7, #0x1 mov r0, r8 lsr r0, r0, #0x1 mov r8, r0//将伤害降低FurCoat: cmp r0, #0xNN(羊皮外衣编号) bne Return//羊皮外衣判断,不是则结束DefenseBoost: ldr r1, [sp, #0x18] mov r0, r1//r0r1都是目前的防御力 add r1, r0, r0 str r1, [sp, #0x18]/+防御相加写入内存Return: ldr r2, .Return2 bx r2.align 2.Return: .word 0x08069921.Return2: .word 0x08069939
9、最后保存测试