多语言展示
当前在线:1645今日阅读:23今日分享:25

【口袋妖怪改版教程】用ASM添加新的皮肤特性

这次的教程为大家带来的是添加新的特性,蓝本是绿宝石汉化版,阅读本教程前要有一定基础,比如thumb编译代码等等。皮肤特性,指的是妖精皮肤,普通皮肤,冰冻皮肤,天空皮肤这几个,具体效果自行百度
工具/原料
1

绿宝石rom

2

thumb

3

十六进制编辑器

方法/步骤
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 0xbattle_participants: .word 0xbattle_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    add 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 0xbattle_participants: .word 0xbattle_attacker: .word 0x0202420B

注意事项
1

插入的地址一定在设置时记得+1

2

NN记得改了

4

忘记了。。

推荐信息