« NDS架构 (index)

NDS架构

Chapter 6: I/O


目录

  1. 卡带与内存的访问
  2. 外部设备
  3. 无线网络

长话短说,I/O严格交由ARM7处理。 事实上,除传递数据之外,你不会看到ARM7处理器有多少操作......这真是太可惜了。

卡带与内存的访问

有一个连接三个endpoint的外部内存接口:Slot-1(用于放置NDS卡带)、Slot-2(用于放置GBA卡带或配件)以及4 MB PSRAM(主内存)。 两个CPU均可访问该接口。接口中包含可以修改的寄存器,以便设定CPU优先级,在同一时间有两个总线请求时优先哪颗CPU。

Image
外部存储器模型,标记了数据总线的宽度。

现在要说重要的一点:NDS卡带没有内存映射。为了让任一CPU读取游戏数据,首先必须把内容复制到RAM中。 这是通过向卡带发送包含8位命令和32位地址引用的数据块来实现的。 之后,可以通过32位寄存器或DMA手动获取数据。 数据总线宽度只有8位,但速度最高可达5.96 MB每秒(如任天堂所述)。

用于保存备份的芯片(如 EEPROM、FLASH和FRAM)可以通过SPI总线(串行)访问。该总线使用自己的一套命令集,并连接到一个24位地址总线。

使用本来的引脚排布的话,Slot-2卡槽是内存映射的。但在DS模式下,为了适配提供扩展功能的硬件(额外的RAM、震动等),地址会被移位。 就像GBA一样,ROM总线为16位宽,RAM总线则有8位宽。

外部设备

ARM7也连接到另一个SPI节点,即触摸屏控制器的接口。该接口可以操作底部屏幕(电阻式,需要使用触控笔)和闪存存储器(固件就存储在这里,稍后再做详细介绍)。

Image
愿望之屋 天使的记忆(2007)前面提到的总机难题。 为了营救小姑娘,玩家必须同时用两根手指滑动屏幕才能开灯。

Image
但如果你做错了......

这个触摸屏的一个有趣的特点,除了检测X/Y位置的功能,它还可以返回对角线位置(用于计算"压力值",表示施加压力的区域)。 不幸的是,这个特性从未在官方SDK中公开。据我所知,没有游戏最终使用了这个未记录的特性,除了自制游戏。

许多人指出,《愿望之屋 天使的记忆》依靠这个特性来解决其中一个谜题,需要用户同时使用两个手指。 然而,情况并非如此。 在使用no$gba debugger实验之后,可以发现这个谜题并没有用到压力数据, 而是检查X/Y值是否交替剧烈变化。 游戏将这种效果解释为用户用两个手指按压屏幕的结果。

最后,同一堆东西里还有实时时钟 (real-time clock, RTC)。

无线网络

最后但同样重要的是,掌机包含一个运行在2.4 GHz频段的无线控制器,提供了一些创新功能:


Previous: 5. 音频

Next: 7. 操作系统


Rodrigo Copetti © 2026 RSS Feed

切换至现代版

主页 · 文章 · 支持 · 关于作者 · 关于此网站