drastic 深度解析:一款 NDS 模擬器為什麼能在安卓上跑得比實機還快

游戏工具 ·约 7 分钟 ·記筆記的貓:團子

drastic 是什麼

drastic 是 Exophase 開發的一款 Android 專用 NDS 模擬器——把任天堂 2004 年發布的雙屏掌機體驗,完整搬到了手機上。口袋妖怪鑽石珍珠、超級馬里奧 64 DS、塞爾達傳說夢幻沙漏……這些當年在 NDS 上風靡一時的遊戲,現在都能在手機上運行。

它不是同類裡唯一的選擇,但絕對是口碑最好的那一款。社區裡流傳的說法是:如果你用 Android 模擬 NDS,直接上 drastic官網 就對了。r2.6.0.4a 版本、12.30MB 的 APK,安裝包小得驚人,但能模擬的遊戲數量和相容性卻是頂級的。這篇文章想回答一個問題:一個 12MB 的模擬器,到底靠什麼在 Android 上把 NDS 遊戲跑得比實機還快?

drastic 主介面

安裝

drastic 的安裝非常簡單——它是標準的 Android APK,最新版本 r2.6.0.4a 的安裝包只有 12.30MB,drastic下載 完成後直接點擊安裝即可。首次安裝時 Android 可能會提示「未知來源」,這需要在手機設定的安全選項裡允許來自第三方的應用安裝。

安裝完成後首次啟動,drastic 會引導你定位 NDS 遊戲檔案(.nds 格式)。它支援從手機內部儲存或 microSD 卡讀取,不需要額外的 BIOS 檔案——這一點和某些需要 dumps 實機 firmware 的模擬器不同,門檻低了不少。找到遊戲檔案後點擊即可開始遊玩,上屏和下屏會自動適配手機的螢幕尺寸。

有一個細節值得注意:如果你之前裝過舊版本的 drastic,建議先卸載再安裝新版本,避免舊的鍵位映射或設定檔造成衝突。另外,drastic 不支援 3DS 或 2DS 遊戲——這不是懶,是架構上做不到,後面會詳細拆解。

為什麼它能跑得比實機快:快進機制的底層邏輯

我第一次用 drastic 的快進功能時很震驚——口袋妖怪裡練一隻寶可夢通常要在草地上走十幾分鐘打怪,開快進之後同樣的過程不到兩分鐘就結束了。而且它不是簡單的「跳幀」,遊戲裡的時間、經驗值、甚至音樂節奏都在正確加速。這背後的設計值得拆解。

drastic 的快進本質上是「繞過正常幀率限制,盡可能多地丟棄渲染幀」。正常情況下 NDS 的兩個螢幕都以 60fps 運行,模擬器需要在每一幀內完成 CPU 和 GPU 的全部工作然後等下一個幀的到來。快進模式下,這個「等」的環節被直接砍掉——CPU 全速跑遊戲邏輯,但 GPU 只挑一部分幀渲染到螢幕上,其餘的直接丟棄。

這個設計的巧妙之處在於:遊戲邏輯和渲染是兩條獨立的流水線。CPU 永遠以最高速度跑指令(這就是為什麼經驗值、遊戲時鐘都在正確加速),而 GPU 的輸出頻率變成了一個可配置的閥門。你在設定裡看到的「100% / 150% / 200% / 500%」本質上是這個閥門的目標開度,但實際能跑多快取決於手機硬體的算力上限。驍龍 8 Gen 3 的手機能輕鬆跑到 500%,而 Helio P20 可能只能到 150%——這不是模擬器的限制,是 ARM CPU 在 67MHz NDS 指令轉譯上的吞吐極限。

這裡有一個技術取捨:快進丟棄的是「顯示幀」而不是「遊戲邏輯幀」,所以不會出現按鈕失靈或對話跳過不完整的情況。但代價是——如果你在快進中需要精確操作(比如格鬥遊戲的連招),丟幀會讓你錯過時機。drastic 為此提供了 Hold 模式:按住快進鍵時快進,鬆手即恢復正常,適合跳過過場動畫後立即回到精確操作的場景。

三套鍵位映射:為什麼不是一套搞定

drastic 最多能保存三套獨立的鍵位映射方案——這個設計乍一看有點多餘,直到我同時用 Xbox 無線手柄、8BitDo 便攜手柄和 Switch Pro 手柄玩不同遊戲的時候才意識到它的必要性。

這三套方案的存在理由不是「奢侈」,是 NDS 本身的硬體特性決定的。NDS 有獨特的雙屏 + 觸控筆設計,上屏是 256×192 的 3D 顯示,下屏是同尺寸的觸控螢幕。移植到手機後,觸控可以用手指操作,但八個物理按鍵(A/B/X/Y/L/R/Start/Select)和十字方向鍵需要映射到外部手柄。問題是——不同手柄的按鍵佈局和數量完全不同:Xbox 手柄有 Menu / View 兩個額外鍵可以映射特殊功能,8BitDo 便攜手柄按鍵少,而某些廉價藍牙手柄甚至連肩鍵都沒有。

更細微的差異在於「同一手柄,不同遊戲需要不同映射」。格鬥遊戲需要把 L/R 肩鍵對齊 NDS 的 L/R,而 RPG 遊戲裡 L/R 很少用到,可以把它們映射到「快進 Hold」或「畫面交換」這種特殊功能上。三套方案讓你不需要每次換遊戲都重新進設定改映射——存好「格鬥方案」「RPG 方案」「觸控輔助方案」,切換手柄或切換遊戲時一秒到位。

鍵位映射介面

還有一個細節:drastic 從 2.2.0.0a 版本起對 MOGA 手柄做了原生支援——這款 2013 年推出的 Android 專用手柄在當年很流行,現在雖然停產了但二手市場還能找到。原生支援意味著配對後零配置就能玩,按鍵自動映射。這是一種很有意思的兼容策略:不只是支援新硬體,還照顧了社區裡仍然在用舊裝置的玩家。

為什麼不支援 3DS:硬體代差不是一個版本能彌補的

很多人第一次接觸 drastic 都會問:「既然它能模擬 NDS,順手把 3DS 也支援了不行嗎?」答案是不行——這不是開發者懶,是 NDS 和 3DS 之間的硬體代差遠比大多數人意識到的大。

NDS 用的是雙 ARM 9 處理器(67MHz 和 133MHz),自研的 2D+3D 雙引擎 GPU,4MB 主 RAM。3DS 是完全不同的一代:双核 ARM 11(268MHz)、PICA200 GPU(支援 OpenGL ES 1.1+)、128MB 主 RAM 加 6MB 獨立顯存。用 Exophase 自己的話說,「3DS 是一個完全不同的系統,和 NDS 的差距就像 N64 到 GameCube 的跨度」。

從模擬器開發的角度看,這相當於兩個完全不同的 CPU 指令集轉譯器、兩套 GPU 渲染管線、甚至連遊戲檔案格式都不一樣(.nds vs .cci / .cia)。把 drastic 改成能模擬 3DS,工作量接近寫一個全新的模擬器——不如直接用專門的 3DS 模擬器 Citra。

這個取捨反而讓 drastic 變得更好:它把全部精力砸在 NDS 這一個目標上,做到了這個平台上能做到的極致。與其做一個什麼都能跑一點但什麼都跑不好的萬能手,不如做一個在單一平台上無可匹敵的專家。這也是我在看它的快進機制、鍵位映射、甚至 UI 細節時一直感受到的設計哲學——少即是多,專注一個目標把它做到極限。

本文為個人基於網路公開資料整理編寫,非官方內容,僅供學習交流參考;軟體版權歸原作者所有,請支持正版;使用過程中遇到問題請查閱官方管道,本文不承擔任何責任。

團子還試過這些