desmume

义项:任天堂DS模拟器
desmume

desmume(DeSmuME)是一个自由开源的任天堂 DS(Nintendo DS)掌机模拟器,用 C 与 C++ 编写,可在 Windows、macOS、Linux 等平台运行[1][2]。它最初由开发者 YopYop156 创建,名为 YopYop DS,后由社区团队接手维护,以 GPL 协议发布[1]。该软件既能运行自行开发的演示程序,也能运行商业游戏,并被移植到 PSP、Libretro 等其他平台[3][4]。

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

desmume 是一款以软件方式复现 任天堂DS 掌机硬件行为的程序。它的运行目标是与该掌机同名的镜像文件,这类文件通常以 .nds 为扩展名,内容可以是商业发行游戏,也可以是爱好者自行编写的自制程序[3][2]。在模拟器的分类里,它属于主机级模拟器,模拟对象是整台掌机的处理器、图形单元、音频单元与输入设备,而非某个单独的游戏[2]。

该软件以自由软件形式发布,采用 GNU 通用公共许可证第 2 版或更高版本授权,源代码公开可获取,因此除官方版本外还派生出多种第三方构建[1]。其名称由 emu(模拟器缩写)、DS 与 me 三部分拼合,可理解为「我的 DS 模拟器」[1]。

原理

模拟器要还原的核心是任天堂 DS 的双处理器架构。该掌机同时使用一颗 ARM9 与一颗 ARM7 处理器,前者承担主要运算与图形调度,后者负责音频、触控等辅助任务,两者共享内存并需要保持时序同步[5]。desmume 采用逐指令解释执行与动态重编译两条路径:解释器按照取指、译码、执行的顺序逐条处理指令,动态重编译则把成块的 ARM 指令预先翻译成宿主机的机器码并缓存起来,后续执行时直接跳入缓存,从而降低翻译开销[6]。动态重编译只在 x86 与 x86-64 宿主上可用,其他架构回落到解释器[6]。

图形部分同样有两条实现路径。软件光栅化由模拟器自身的 3D 引擎完成,OpenGL 路径则把渲染任务交给宿主显卡;命令行参数中可以指定 3D 引擎的取值,0 为关闭 3D,1 为内置软件光栅化器(默认),2 为基于 osmesa 或 gtkglext 的 OpenGL 实现[2]。音频与输入需要在宿主侧重新映射:鼠标指针充当触控笔,点击对应触摸,键盘方向键对应十字键,Z 键对应 A 键、X 键对应 B 键,回车对应 START 键,退格键对应合盖动作,摇杆事件也可由用户自行配置[2]。

存档兼容是另一层工作。desmume 能自动识别卡带使用的存储介质类型,也允许手动指定,可选值包括 EEPROM 的 4kbit、64kbit、512kbit 三档,FRAM 256kbit,以及 FLASH 2mbit 与 4mbit[2]。上层功能如即时存档、金手指与录像都建立在这套存储模拟之上。

发展历程

项目起点可追溯到 YopYop156 以 YopYop DS 为名发布的早期版本,最初只有法语界面,后来由使用者翻译成英语等语言,早期能运行的仅是自制演示程序和少量支持无线多启动的样例[1][6]。在 0.3.3 版本之后,原作者以法国关于模拟器的法律条款发生变化为由停止开发并公开源码;此后这一说法被指出是愚人节玩笑,但开发者仍然选择退出[1][6]。

原作者退出后,若干基于旧代码的第三方增强版本各自发布,这些开发者随后联合并合并成果,0.5.0 成为合并后的首个发行版,项目也由此转为团队维护[6]。此后的版本节奏逐渐稳定:2009 年 7 月 8 日的 0.9.4 引入存档自动检测、新的存档文件格式与完整重录支持;2009 年 11 月 27 日的 0.9.5 重写了主模拟循环并改变了计时方式;2010 年 5 月 19 日的 0.9.6 集中修复模拟错误并提出面向自制软件作者的功能[7]。

2012 年 4 月 9 日的 0.9.8 为 macOS 用户带来新的 Cocoa 前端;2013 年 4 月 30 日的 0.9.9 加入全新的 JIT 处理器核心,运行效率明显提高[1][7]。2015 年 4 月 15 日的 0.9.11 侧重 Cocoa 前端改进,并处理了与存档相关的问题[7]。2022 年 5 月 23 日发布的 0.9.13 支持高分辨率 3D 渲染,新增「GPU 缩放因子」选项,可把 3D 画面提升到原生 256×192 像素以上,同时对 Cocoa 与 Windows 前端作了增强[8][9]。

应用

最直接的用途是在个人电脑上运行掌机游戏。由于商业卡带需要依赖实体设备读取,实际使用中通常由用户自行准备镜像文件,模拟器本身只提供运行环境[3]。多数发行版把它收录进软件仓库,Debian 与 Ubuntu 均提供名为 desmume 的软件包,其中包含 GTK 界面、GTK-Glade 界面与命令行界面等不同入口,便于在桌面环境或脚本中调用[10][11]。

对开发者而言,它提供了较完整的调试与观察工具。命令行可开启 ARM9 与 ARM7 的 GDB 远程调试端口,界面侧则包含内存查看器、寄存器查看器、调色板查看器、图块查看器、精灵查看器、背景层查看器与 3D 矩阵查看器等组件,用于检查程序在掌机上的实际运行状态[2][6]。内置的音视频录制与游戏回放功能则被用于制作流程演示和速通录像[6]。

跨平台移植扩大了它的使用范围。除官方支持的 Windows、macOS、Linux 外,社区还把它移植到 PlayStation Portable 与 Libretro 前端等环境,NetBSD 的软件集合中即收录了以该项目为基础的 Libretro 核心[12][4]。这些移植版通常受限于目标硬件的性能与输入方式,完成度不一[12]。

局限

无线联机功能长期不完整。项目官方问答曾说明 0.9.1 与 0.9.2 时期并不支持 Wi-Fi,相关工作进展缓慢[13]。2010 年 4 月曾有开发者报告联机测试取得进展,但同年 6 月 Wi-Fi 功能被开发者移除,理由是任天堂方面的举措,此后该功能一直保持关闭状态;随着任天堂结束 DS 游戏的在线服务,这一问题也随之失去实际意义[6]。

部分硬件特性难以完全还原。麦克风支持在 macOS 上较为完整,Windows 与 Linux 上只有部分支持;动态重编译核心也仅面向 x86 与 x86-64 宿主机,其他架构只能使用解释器并承担相应的速度损失[6]。此外,模拟器并不附带游戏内容,实际能否运行仍取决于用户自备的镜像文件与具体卡带类型[3]。

移植版本的限制更为明显。PlayStation Portable 版缺少触摸屏,处理能力也不足以让游戏全速运行,早期概念验证版本因此被认为实用价值有限;较新的社区移植仍只支持 PSP-2000 及之后的机型,无法在初代 PSP-1000 上启动,且多数工作由主处理器承担,速度偏慢[6][12]。

参见

  • 任天堂DS —— 本词条所模拟的掌机硬件,其双处理器与双屏结构决定了模拟器的主要设计。

  • 模拟器 —— desmume 所属的软件类别,通过在通用计算机上复现专用硬件行为来运行原有软件。

  • 动态重编译 —— 0.9.9 版本引入的加速机制,将成块指令预先翻译后缓存执行。

  • Libretro —— 提供统一前端接口的项目,desmume 以核心形式被其收录。

  • GNU通用公共许可证 —— desmume 采用的自由软件许可协议。

参考资料

  1. DeSmuME [引用日期2026-10-29]
  2. desmume [引用日期2026-10-29]
  3. 套件:desmume(0.9.13-4 以及其他的) [引用日期2026-10-29]
  4. emulators/libretro-desmume - The NetBSD Packages Collection [引用日期2026-10-29]
  5. Desume and its speed [引用日期2026-10-29]
  6. DeSmuME | encyclopedia article by TheFreeDictionary [引用日期2026-10-29]
  7. Desmume模拟器 [引用日期2026-10-29]
  8. Releases · TASEmulators/desmume [引用日期2026-10-29]
  9. DeSmuME [引用日期2026-10-29]
  10. 软件包:desmume(0.9.11-3) [引用日期2026-10-29]
  11. 软件包: desmume (0.9.13-4build1) [ports] [universe] [引用日期2026-10-29]
  12. DeSmuME PSP [引用日期2026-10-29]
  13. General Questions [引用日期2026-10-29]
词条评价
词条统计

浏览次数:1 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:25:47Z

历史版本

本条目引用的词条
任天堂DS 模拟器 动态重编译 Libretro GNU通用公共许可证