1. 硬件选择:自制还是买成品?
最近入手了个手柄,手头正好有个闲置的小米 9,琢磨着能不能把它改造成一台复古掌机。
市面上现成的掌机主要有 Android 和 Linux 两种方案。整体来看,Android 目前优势更明显,除了能玩模拟器游戏,还能直接运行原生安卓应用。
| 项目 | Android 掌机 | Linux 掌机 (ArkOS / JELOS / Batocera) |
|---|---|---|
| 启动速度 | 20~40 秒 | 5 秒以内 |
| UI 一致性 | ❌ 多 App 无统一样式 | ✅ 完整游戏平台风格 |
| PS2(AetherSX2) | ✅ 可玩(Snapdragon / Dimensity) | ❌ 官方 Linux 版 Core 不成熟 |
| Switch(Yuzu) | ✅ 安卓有社区版 Yuzu | ❌ 完全无解 |
| PSP/NDS/GBA 等 | ✅ 但调用 APK,界面割裂 | ✅ 全集成 Core,UI 统一 |
| 云游戏 / Steam Link | ✅ 完全支持 | ⚠️ 只能 Moonlight(若有 Core) |
| 系统自由度 | 限制 root,定制难 | ✅ 想怎么魔改都行 |
| 易用性 | ✅ 下载 ROM → 配 APK → 玩 | ⚠️ 需要 BIOS / Core 手动配置 |
| 适合人群 | 玩模拟器 + 云游戏 + 装 APP | 想要'开机就是游戏机'的感觉 |
| 视觉体验 | 类似安卓电视盒 + 各种前端 | 像原生游戏机固件,主题风统一 |
有个挺有意思的现象:安卓本质也是 Linux 的魔改版,为什么有些模拟器只能在安卓上跑?查了一圈发现主要是生态问题。比如 PS2 模拟器的作者 Tahlreth 只开发了 AetherSX2 for Android,底层用了 Android NDK + Vulkan/OpenGL ES 来实现 JIT。这些技术栈几乎是安卓独有的,直接移植到 Linux 难度很大。
JIT / 动态重编译器(Dynarec)
JIT(即时编译)是模拟器场景下的核心性能优化技术。它能在程序运行时,将宿主设备不兼容的原始指令(如游戏机专属指令集)实时转换为宿主硬件可直接执行的机器码,而不是逐条解释执行。同时,它会持续监测并识别频繁执行的'热点代码',通过函数内联、循环展开等手段生成更高效的机器码,大幅减少指令翻译开销。这让原本因'指令不兼容 + 解释低效'而卡顿的程序(如 PS2、Switch 游戏),在手机等设备上也能流畅运行,平衡了跨平台兼容性与执行效率。
做复古掌机最难的部分其实就是模拟器本身,涉及到对汇编指令的模拟和调度,也就是上面提到的 JIT。之前写过一点 GB 模拟器的 Demo,后来忙了就搁置了。
再看看市场情况。以热门的安伯尼克为例,35XX 用的是 T700,1 颗 2.5GHz Cortex-A76 大核加 3 颗 2.3GHz 小核;406V 用的是 T820,1 颗 2.7GHz Cortex-A76 大核加 3 颗 2.3GHz 小核。虽然性能有提升,但幅度不大,价格却翻了 2~3 倍。
手里这台闲置的小米 9 搭载高通骁龙 855。对比 T820,855 的单核性能几乎翻倍,整体多核也强 1.5–2 倍以上,GPU 更是 T820 的 3 倍以上。年初买的二手小米 9 大概 350 元,现在可能更便宜。加上手机手柄,总成本也就 406V 的一半。既然自己动手能省一半钱,性能还翻倍,顺便学点知识,折腾一下显然是更明智的选择。
2. 天马 G 前端的安装与配置
国内目前流行的方案是天马 G 前端。不管是玩家还是工作室,基本都用这个。网上有很多打包好的教程,照着做就行。
安装主要分三步:App 安装、配置文件处理、ROM 资源整理。
2.1 APKS 安装
大致包含 MT 管理器、天马 G 主程序、RA(RetroArch)以及各个独立模拟器。我是用 ADB 安装的,这样比较干净。安装完成后启动一次赋予权限即可,不需要额外搞什么复杂的操作。








