《恶魔城晓月圆舞曲》开启DEBUG模式的方法
作者:0 DAY-S[EGCG] '转载请注明出处
工具:NO$ GBA,晓月中文版(基于日版汉化)
内存2000010保存游戏当前的状态值(游戏状态变量是一个全局变量。)
具体含义如下:
(以下列表来自blitz.phpwebhosting.com)
value Where
00 At Konami
01 Main menu
02 "Game Start" & "Select Data" menus
03 Konami screen
04 In game
05 Game Over
06 Credits
07 Intro
08 Boss Rush
09 Unknown
0A Soul Trade
0B Sound Test
0C Nintendo screen
0D Konami or Language Select (日版没有语言选项)
0E Debug: Main
0F "Do nothing"
10 Debug: "Exit"
11 Debug: "1967"
12 Debug: "2229"
13 Debug: "2739"
14 Debug: "4531"
使用工具:NO$ GBA,晓月汉化版(基于0996日版)
用NO$ GBA载入游戏,下断点"[2000010] !"(不包括引号部分,
具体含义请自行查看NO$ GBA的GBA HELP)。
在进入KONAMI LOGO的时候游戏中断,程序运行到如下位置:
0800062C 4A03 ldr r2,=84BCA78h
0800062E 6811 ldr r1,[r2]
08000630 2300 mov r3,0h
08000632 7408 strb r0,[r1,10h] ;写入游戏状态
08000634>6810 ldr r0,[r2]
08000636 7483 strb r3,[r0,12h] ;
08000638 7443 strb r3,[r0,11h] ;子状态内存初始化
0800063A 4770 bx r14
按F8一次,运行到子程序返回,来到这里:
08000796 20F8 mov r0,0F8h
08000798 0140 lsl r0,r0,5h
0800079A 8020 strh r0,[r4]
0800079C 2000 mov r0,0h ;0 = At Konami
0800079E F7FFFF45 bl 800062Ch ;游戏状态内存初始化程序
080007A2>B001 add sp,4h
080007A4 BC30 pop r4,r5
080007A6 BC01 pop r0
080007A8 4700 bx r0
仔细看过第一段程序就会注意到r0显然是调用参数(参数含义见上表)。
重新载入游戏,将参数改为0E,即把0800079C处的 mov r0,0h 改为 mov r0,0h。
800079C: 2000 改为 200E (在ROM中地址为79C,GBA把ROM映射到8000000以后的地址。)
运行游戏,果然直接来到了DEBUG菜单画面,修改成功。
DEBUG模式的具体内容请自行参看,恕不敷述。
(这个DEBUG模式过于鸡肋,功能很不完整)
用同样的方法可知白夜的游戏状态变量是200000C。
遗憾的是白夜没有DEBUG模式,其他含义值就不再列出,
有兴趣的可以自己尝试一下。
这个例子其实是很简单的,关键在于阐述一种思路。一个
正确的思路可以有效的减少工作量。
0DAY-S原写于2006-05-29 12:49
回复Comments
作者:
{commentrecontent}