ASM汇编 【绿宝石】活动块显示头像

霹雳雷霆帅的掉渣的绿毛猴

啥也不会的废物
元老
2022-08-05
65
1
56
1,008
24
本次教程是让对话中显示头像的asm,以前悠然大佬也写过类似的教程,具体可以看贴吧这个帖子https://tieba.baidu.com/p/5715838712?see_lz=0
我是看的不太懂,可能是技术有限,只会抄作业的原因,下面我发的教程也是头像显示,属于活动块obj的原理好像,是我向懒得想名字请教后,她发给我的,我已经装在我的改版里了,目前没问题,接下来我们开始教程。

步骤①:先找个空位写入:000000C00000
步骤②:再找另一个空位写入:00130013 xxxxxx08 F04F610800000000A8C62E0829740008
【xxxxxx08处填步骤①的指针】
步骤③:接下来再次找空位,打入下面两个asm:

显示头像asm【有两处需要自己填入地址】
代码:
push {r4, lr}
add sp, #-16
ldr r0, =图片&调色板表格地址,自己找空位,记得多留点位置,用00填充
ldr r1, =0x020375E8
ldrh r1, [r1]
lsl r1, #3
add r4, r0, r1
mov r1, sp
ldr r0, [r4]
str r0, [r1]
mov r0, #1
lsl r0, #11 ;0x800
strh r0, [r1, #4]
mov r0, #0x13
lsl r0, #8
strh r0, [r1, #6]
mov r0, r1
ldr r3, =(0x08034530|1)
bl call_bx
add r1, sp, #8
ldr r0, [r4, #4]
str r0, [r1]
mov r0, #0x13
lsl r0, #8
strh r0, [r1, #4]
mov r0, r1
ldr r3, =(0x0803458C|1)
bl call_bx
ldr r0, =步骤②的地址
ldr r3, =0x020375E8
sub r3,#2
ldrb r1, [r3,#1]
ldrb r2, [r3]
mov r3, #0
ldr r4, =(0x08006DF4|1)
bl call_bx2
ldr r1, =0x020375E8
strb r0, [r1]
add sp, #16
pop {r4, pc}
call_bx:
bx r3
call_bx2:
bx r4

删除头像asm
代码:
push {lr}
ldr r0, =0x020375E8
ldrb r0, [r0]
mov r1, #0x44
mul r0, r1
ldr r2, =0x02020630
add r0, r2
ldr r3, =(0x08007620|1)
bl call_bx
pop {pc}
call_bx:
bx r3


④打完asm后,你就可以把头像导入ROM,记住图片和色板的地址,填到第一个asm那里记录的头像表格就行了,八字节一个头像,前四个图片指针,后四个色板指针,最后再通过脚本运行到对话中了。

脚本示例:
代码:
#freespace 0x00
#dynamic 0x10EE600
#org @1
lockall
setvar 0x8008 0x0  //图片编号,第一个0
setvar 0x8007 0x2553  //图片坐标,2553是左边,c853是右边,具体啥位置可以自己调整
callasm 0x8xxxxxx+1   //显示头像asm,记得地址+1
msgbox @a 0x4    //对话
callasm 0x8yyyyyy+1   //删除头像asm,记得地址+1
closeonkeypress
end

#org @a
= 我有头像了



到这里本期教程结束,这个对于大佬来说没啥难度,对我这种不懂代码的人来说可以说是有很大难度的,好在有作业可以抄,抄多了也能明白一丢丢的,哈哈哈哈,希望做绿宝石改版的能够用的到。这个应该也只能用在绿宝石里吧?如果有错误的地方,底下提出来我修改一下,有疑问也可以提出来。
下面放两张离个海的测试图
Cache_-2085b3382f1346d5.jpg

Cache_6a52ff5d5dc38dc7.jpg
 
最后编辑:

在线成员

现在没有会员在线。

论坛统计

主题
342
消息
1,571
会员
2,325
最新会员
风见幽香

关于我们

  • 宝可梦以及其他相关名称是任天堂的商标,版权归宝可梦公司所有。宝可饭堂是一个同人游戏中文社区,不隶属于宝可梦公司。在宝可饭堂上的粉丝游戏亦未获得其授权,请支持正版游戏。
© 2022- pokefans.cn
点此延长宝可饭堂生命