[转帖]《晓月》开启被屏蔽的Q版娃娃造型
2016-8-13 04:20 编辑 <br /><br />-原帖作者:MR.WONDERFUL-原帖转自:EMU-ZONE
《恶魔城晓月圆舞曲》HACK教程(二)开启被屏蔽的Q版娃娃造型(表篇)
前几个月抽空看了下晓月的程序,小有发现,拼凑了几篇HACK教程,拖沓至今,汗^^^
在下是
恶魔城
的FAN,欢迎诸位交流相关剧情,历史,美图及程序.
QQ17591419
《
恶魔城
晓月圆舞曲》HACK教程(二)开启被屏蔽的Q版娃娃造型(表篇)
作者:0 DAY-S 转载请注明出处
工具:NO$ GBA,晓月中文版(基于日版汉化)
在晓月中,当装备第51号红魂“杀人玩偶”时,按上B会随机丢出Q版娃娃,但只有苍真和弥娜的坐姿。
(见图一,二)通过查看VRAM图(见图三),发现娃娃有未调用的图。这说明可能存在被屏蔽的娃娃程序。
图一 图二
图三
如何找到该程序呢?思路有两种,一是对装备红魂的内存地址(201325D)设置写断点,按上B中断
后往下跟,注意寄存器中的程序指针;二是对丢出娃娃的声音程序设断(详细见教程(一))。两种
方法均可找到以下程序: Q版娃娃OBJ基址:20005EC
子程序段共3段
00 娃娃初始化程序
01 丢出娃娃程序
02 娃娃消失程序
///////////////////////////////////////////// 0802409C B5F0 push r4-r7,lr
0802409E 464F mov r7,r9
080240A0 4646 mov r6,r8
080240A2 B4C0 push r6,r7
080240A4 1C07 mov r7,r0
080240A6 6978 ldr r0,
080240A8 4680 mov r8,r0
080240AA 2180 mov r1,80h
080240AC 0049 lsl r1,r1,1h
080240AE 4689 mov r9,r1
080240B0 7AB8 ldrb r0, ;Q版娃娃的程序指针控制
080240B2 2801 cmp r0,1h ;ID等于1
080240B4 D063 beq 802417Eh ;跳
080240B6 2801 cmp r0,1h
080240B8 DC02 bgt 80240C0h ;ID大于1
080240BA 2800 cmp r0,0h
080240BC D004 beq 80240C8h ;ID等于0
080240BE E10F b 80242E0h
080240C0 2802 cmp r0,2h
080240C2 D100 bne 80240C6h
080240C4 E0EC b 80242A0h ;ID等于2
080240C6 E10B b 80242E0h ;ID大于2
080240C8 4848 ldr r0,=80DF904h ;该地址为一图象指针
080240CA 1C01 mov r1,r0
080240CC 3148 add r1,48h
080240CE 6C80 ldr r0, ;得到娃娃图象数据基指针
080240D0 684D ldr r5, ;指针
080240D2 688E ldr r6, ;指针
080240D4 2180 mov r1,80h
080240D6 0249 lsl r1,r1,9h
080240D8 F016FBEA bl 803A8B0h
080240DC 4C44 ldr r4,=84BCA78h
080240DE 6821 ldr r1,
080240E0 4A44 ldr r2,=131C0h ;关键内存,0D表示娃娃的图
080240E2 1889 add r1,r1,r2
080240E4 6008 str r0,
080240E6 1C28 mov r0,r5
080240E8 2100 mov r1,0h
080240EA 2201 mov r2,1h
080240EC 2302 mov r3,2h
080240EE F017FBEB bl 803B8C8h
080240F2 6820 ldr r0,
080240F4 4B3F ldr r3,=131C0h ;关键内存
080240F6 18C0 add r0,r0,r3
080240F8 6802 ldr r2,
080240FA 1C38 mov r0,r7
080240FC 1C31 mov r1,r6
080240FE 2302 mov r3,2h
08024100 F016FC68 bl 803A9D4h
08024104 F7DCFCC2 bl 8000A8Ch ;随机数生成程序
08024108 1C01 mov r1,r0 ;r0返回随机数
0802410A 2001 mov r0,1h ;(只有0,1。2,3被屏蔽)
0802410C 4001 and r1,r0
0802410E 1C38 mov r0,r7
08024110 2200 mov r2,0h
08024112 2301 mov r3,1h
08024114 F01AF962 bl 803E3DCh ;Q版娃娃动作调用
08024118 4837 ldr r0,=803AA81h ;娃娃动作和坐标处理程序
0802411A 6078 str r0,
0802411C 1C39 mov r1,r7
0802411E 315C add r1,5Ch
08024120 200D mov r0,0Dh
08024122 7008 strb r0,
08024124 1C3A mov r2,r7
08024126 3259 add r2,59h
08024128 7810 ldrb r0,
0802412A 2102 mov r1,2h
0802412C 4308 orr r0,r1
0802412E 7010 strb r0,
08024130 20E5 mov r0,0E5h ;丢娃娃的声音
08024132 F0B1FED9 bl 80D5EE8h ;声音调用
注意这里:
08024104 F7DCFCC2 bl 8000A8Ch ;随机数生成程序
08024108 1C01 mov r1,r0 ;r0返回随机数
0802410A 2001 mov r0,1h ;(只有0,1。2,3被屏蔽)
0802410C 4001 and r1,r0 ;
0802410E 1C38 mov r0,r7
08024110 2200 mov r2,0h
08024112 2301 mov r3,1h
08024114 F01AF962 bl 803E3DCh ;Q版娃娃动作调用
很显然随机数生成程序靠r0返回结果,并且靠and运算控制范围。
这里的随机数作为Q版娃娃图象数据和程序的寻址参数。
那么我们将0802410A 2001 mov r0,1h 改为 mov r0,3h就可以返回0-3的随机数了。
回到游戏中,经测试果然随机增加了两种娃娃造型,一种是Q版苍真的站姿(见图四),一种
是Q版苍真出剑。(见图五)Y^0^Y
图四 图五
预告:在里篇中我会记录讲解新的Q版娃娃的方法,敬请期待。
2016-8-13 04:20 编辑 <br /><br />本来我应该懂这些的
但是没学好到一点都看不懂……= =||||
2016-8-13 04:20 编辑 <br /><br />LZ暴强.....
会不会做个补丁出来???期待.....
2016-8-13 04:20 编辑 <br /><br />都用到汇编啦
2016-8-13 04:20 编辑 <br /><br />弓虽..................
2016-8-13 04:20 编辑 <br /><br />wayi 大哥,转贴里的QQ不是你的吧?
2016-8-13 04:20 编辑 <br /><br />QQ号是原作者的……
正好问问公主,我苍月挖墙角到298%了,问题还是没能有幸刷出LEVELUP和MONEY UP来,为此我耿耿于怀……
数据混乱到某些剧情再度复活,可惜BOSS没一起复活……
2016-8-13 04:20 编辑 <br /><br />当年汇编语言没好好学……现在只能CJ滴飘过……
2016-8-13 04:20 编辑 <br /><br />有意思~~~~~~~~~
2016-8-13 04:20 编辑 <br /><br />原帖由 wayi 于 2006-8-9 12:56 发表
QQ号是原作者的……
正好问问公主,我苍月挖墙角到298%了,问题还是没能有幸刷出LEVELUP和MONEY UP来,为此我耿耿于怀……
数据混乱到某些剧情再度复活,可惜BOSS没一起复活……
剧情复活或者错位出现应该没关系…………但是出城逆走的话有可能导致游戏不能……比如从那个飞装甲后面进去就强制死机…… 也得小心呢