原文地址:http://www.ndsbbs.com/read.php?tid=180038
最近因为方向键坏掉~又想玩RY传说~于是开始着手研究DS的操作挂钩~
简单点说~就是把RY传说这个本来不能用触摸的游戏改成全程触摸版~
〇,修改必备
1,必备工具:IDEAS模拟器(本人用的1020版~因为速度比1024快~),16位修改器,静态反汇编工具,编译工具
之所以要IDEAS是因为在主流模拟器里只有IDEAS提供免费的调试功能~虽然十分的简陋(可以说啥功能都没有)~但是总比没有要强几倍~
16位修改器和静态反汇编工具~本人推荐用CT2的那个专为DS ROM优化后的版本~那个版本直接支持ARM指令反汇编~
一,思路分析
要挂钩操作无疑要做以下几件事情
1,找到按键的程序可识别地址
2,找到触摸屏的程序可识别地址
3,找到合适的地方下断
为了解决前2项问题~首先想到的最简单的方法当然是用EC直接搜~
二,EC搜索
相信有一定模糊搜索基础的人可以很快找到方案来搜索按键判定和触摸判定~也就是说~这个步骤理论上来说应该是一点难度没有的可以快速解决的~可是事实上的情形却复杂的多~
1,按键部分:用EC顺利搜索出几个地址表现出按键的变化~但是试着锁定后发现~无论哪一个都无法对游戏内容产生影响~也就是说用EC搜到的这几个变量仅仅是程序可表现的~而非程序可识别的~简单点说就是你可以看他来判断按了啥键~但是不能通过改变他来改变按的键~
2,触摸部分:用EC直接啥都搜不到~
在按键和触摸2个方面皆碰壁~给人的唯一结论是~用这种只就其表不问其根的方法来搜索本质就行不通~于是下面俺开始介绍文章的正式部分~
通过DEBUGGER来动态调试ROM~
三,关于DS的输入识别所必须具备的知识
别以为这个只是科普讲座~这个可是后面DEBUG过程中最重要的依据~所以请仔细看过这段~
DS是由2个处理器同时处理程序的系统~ARM9为主处理器~ARM7为协处理器~ARM9用来处理游戏的绝大部分信息~而ARM7辅助处理声音~I/O等一些底层信息~
关于ARM9和ARM7的分工我暂不多说~但是需要注意的是~在很多底层方面的东西ARM9是无法正常访问的~
接着说说DS的按键和触摸屏输入的过程~
按键部分~DS有一个16位的只读按键寄存器~其作用就是识别按键并将按键信息存放其内~而这个寄存器映射在内存空间上的地址是0x04000130...