【口袋妖怪改版教程】增加羊皮外衣,多重鳞片

2025-10-18 19:59:19

1、首先,新建一个ASM文本文件,具体方法如下:

右键,新建文本文件,然后右键那个新文件,将.txt改成.asm,注意文件名字不可以为汉字。

2、粘贴下列源码,注意选择你需要的版本

3、火红版本

.text

.align 2

.thumb

.thumb_func

.global multiscaleandfurcoat

Main:

ldr r2, [sp, #0x28]

ldrb r0, [r2]

cmp r0, #0x3F

bne Multiscale

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

bne Return

HalveDamage:

lsr r7, r7, #0x1

mov r0, r8

lsr r0, r0, #0x1

mov r8, r0

FurCoat:

cmp r0, #0xNN(羊皮外衣编号)

bne Return

DefenseBoost:

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 multiscaleandfurcoat

Main:

ldrb r0, [r2]

cmp r0, #0x3F

bne Multiscale

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

bne Return

HalveDamage:

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

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 multiscaleandfurcoat

Main:

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 Return

HalveDamage:

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、最后保存测试

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢