编辑: 丶蓶一 2013-10-19
NDS自制软件教程3 NDS自制软件教程3 这一节,我们介绍如何处理用户的按键操作.

REG_KEYINPUT 寄存器: NDS有一个硬件寄存器,当按键被按下时,寄存器的值会改变.寄存器REG_KEYINPUT 位于内存地址的0x4000130处.它是只读寄存器.当按键时,值会改变: KEYS Bit ? Key ndslib' define ? ? ? Down if ? Up if ?

0 ? ? ? ? A KEY_A Cleared ? Set ?

1 ? ? ? ? B KEY_B Cleared ? Set ?

2 ? ? Select KEY_SELECT ? ? Cleared ? Set ?

3 ? ? Start KEY_START ? ? ? Cleared ? Set ?

4 ? Directional Right ? ? ? ? KEY_RIGHT ? ? ? Cleared ? Set ?

5 ? Directional Left KEY_LEFT ? ? ? ? Cleared ? Set ?

6 ? Directional Up KEY_UP Cleared ? Set ?

7 ? Directional Down ? ? ? ? KEY_DOWN ? ? ? Cleared ? Set ?

8 ? Right Alternate Button ? KEY_R Cleared ? Set ?

9 ? Left Alternate Button ? KEY_L Cleared ? Set REG_KEYXY 寄存器: 你会注意到这里漏掉了两个键, 'X' 和'Y'. 这两个键是从不同的寄存器读取的,REG_KEYXY寄存器,在内存地址0x04000136处.不幸的是这个寄存器只能被ARM7读取. 为了让它能被ARM9读取,在LIBNDS的ARM7样板代码中,ARM7在垂直间隔中断时读取寄存器值并储存在IPC数据结构中,IPC可被ARM9读取.这是相关代码片: void InterruptHandler(void) { ? [...] ? but = REG_KEYXY;

? [...] ? IPC->heartbeat = heartbeat;

? IPC->buttons ? = but;

? IPC->touchX ? = x;

? [...] } REG_KEYXY 寄存器不仅包含X、Y键状态位,它还包括触控笔和NDS屏幕和上或打开的状态位: XKEYS Bit Key ? ? 'ndslib' define ? Down if... ? Up if ... ?

0 ? ? X

1

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题