Hello大家好,欢迎收看本帖,话不多说直入主题。
本期的教程是绿宝石里的形态转换,原帖请看B站的懒得想名字的帖子,下面链接:https://tieba.baidu.com/p/7445011167
因为原本的代码并不能直接打入ROM,并且还有一些小问题,所以我请教了懒懒,修复了这些问题,下面是修复过的代码。
这个代码已经多次测试,可以直接打入ROM,只需要把上面的地址换成你的改版的空位即可,这个地址也是asm的地址。
根据原帖教程,这样就行了,接下来就是脚本,原帖的脚本还是有点问题的,你并不能一次性转换成功,后来经过多次实验,脚本最终可以一次转换成功,下面是脚本代码:
当然,这里脚本也不是最完美的,后面懒懒说,可能是setvar没结束的原因,大家可以把脚本这样写:
虽然我没试过,但是应该也是没问题的,只要让var成功运行就行。
本次教程到此结束,感谢各位的观看,另外感谢金毛虫和懒得想名字对修改代码时的帮助。
本期的教程是绿宝石里的形态转换,原帖请看B站的懒得想名字的帖子,下面链接:https://tieba.baidu.com/p/7445011167
因为原本的代码并不能直接打入ROM,并且还有一些小问题,所以我请教了懒懒,修复了这些问题,下面是修复过的代码。
代码:
.gba
.thumb
.create "3.0.gba",0x8000000
.close
.open "test.gba","3.0.gba",0x8000000
.org 0x8 【搜空位填上去】
push {r4,lr}
ldr r4, =0x020244EC
ldr r1, =0x020375E0
ldrh r1, [r1]
mov r2, #0x64
mul r1, r2
add r4, r1
mov r0, r4
get_species:
mov r1, #0xb
bl decrypt
ldr r1, =0x020375E0
ldrh r1, [r1,#0x2]
cmp r0, r1
bne exit
change_species:
mov r0, r4
mov r1, #0xb
ldr r2,=0x020375E0
add r2, #0x4
bl encrypt
mov r0, r4
bl statrecalc
exit:
pop {r4,pc}
encrypt:
ldr r3, =0x0806ACAD
bx r3
decrypt:
ldr r3, =0x0806A519
bx r3
statrecalc:
ldr r3, =0x08068D0D
bx r3
.pool
.close
根据原帖教程,这样就行了,接下来就是脚本,原帖的脚本还是有点问题的,你并不能一次性转换成功,后来经过多次实验,脚本最终可以一次转换成功,下面是脚本代码:
代码:
#freespace 0x00
#dynamic 0x1000000
#org @1
msgbox @a 0x2
special 0xA2
setvar 0x8005 0xA4【转换前精灵编号】
setvar 0x8006 0x6【转换后精灵编号】
waitstate
msgbox @b 0x2
release
callasm 0x8【asm地址+1】
releaseall
end
#org @a
= 我来帮你用汉堡\n转喷火龙吧
#org @b
= 已经完成了
当然,这里脚本也不是最完美的,后面懒懒说,可能是setvar没结束的原因,大家可以把脚本这样写:
代码:
#freespace 0x00
#dynamic 0x1000000
#org @1
msgbox @a 0x2
special 0xA2
setvar 0x8005 0xA4
setvar 0x8006 0x6
waitstate
callasm 0x8EC9D61
msgbox @b 0x2
releaseall
end
#org @a
= 我来帮你用汉堡\n转喷火龙吧
#org @b
= 已经完成了
虽然我没试过,但是应该也是没问题的,只要让var成功运行就行。
本次教程到此结束,感谢各位的观看,另外感谢金毛虫和懒得想名字对修改代码时的帮助。