跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言大前端java

基于小米 9 与天马 G 前端的复古掌机搭建指南

综述由AI生成探讨了利用闲置小米 9 手机结合天马 G 前端构建复古掌机的方案。通过对比安卓与 Linux 掌机在启动速度、UI 一致性及模拟器兼容性等方面的差异,论证了安卓方案的可行性与性价比。详细介绍了天马 G 的安装流程,涵盖 APK 部署、配置文件配置及 ROM 资源管理方法。此外,解析了天马 G 基于 QT 的技术架构及 Android 端启动核心代码逻辑,为开发者提供了系统级前端调用的参考。

道系青年发布于 2026/4/6更新于 2026/5/2139 浏览
基于小米 9 与天马 G 前端的复古掌机搭建指南

1 复古掌机的选择

近期入手了一款手柄,利用闲置的小米 9 手机尝试构建复古掌机。

市场上现成的复古掌机主要分为安卓和 Linux 两种。整体来看,安卓方案目前占优,因为除了模拟器游戏,还能运行原生安卓应用。

项目Android 掌机Linux 掌机 (ArkOS / JELOS / Batocera)
启动速度20~40 秒5 秒以内
UI 一致性❌ 多 app 无统一样式✅ 完整游戏平台风格
PS2(AetherSX2)✅ 可玩(Snapdragon / Dimensity / Unisoc)❌ 官方 Linux 版 core 不成熟
Switch(Yuzu)✅ 安卓有社区版 Yuzu❌ 完全无解
PSP/NDS/GBA etc✅ 但调用 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(即时编译)/ 动态重编译器(Dynarec)是模拟器、虚拟机等场景中核心的性能优化技术。它能在程序运行时,将宿主设备不兼容的原始指令实时转换为宿主硬件可直接执行的机器码,而非逐条解释执行;同时监测并识别频繁执行的'热点代码',通过函数内联、循环展开等优化手段生成更高效的机器码,大幅减少指令翻译开销,让原本因'指令不兼容 + 解释低效'卡顿的程序在设备上实现流畅运行,平衡了跨平台兼容性与执行效率。

就复古掌机而言,核心难点在于模拟器,涉及对汇编指令的模拟和调度,即上述的 JIT 技术。

以热门设备安伯尼克为例,截至 2025 年 10 月 11 日的数据如下:

文章配图

35XX 型号搭载 T700 芯片,含 1 颗 2.5GHz Cortex-A76 大核及 3 颗 2.3GHz Cortex-A76 大核;406V 型号搭载 T820 芯片,含 1 颗 2.7GHz Cortex-A76 大核及 3 颗 2.3GHz Cortex-A76 大核。总体性能虽有提升,幅度有限,但价格却翻了 2~3 倍。

对比手中的闲置小米 9(高通骁龙 855 处理器),其单核性能几乎翻倍,整体多核性能约为 T820 的 1.5–2 倍以上,GPU 性能更是 T820 的 3 倍以上。年初二手小米 9 价格约 350 元,加上手机手柄后总成本仅为新款掌机的一半左右。当前市场安卓掌机价格偏高,自行折腾不仅成本减半、性能翻倍,还能学习相关知识,是更为明智的选择。

2 天马 G 前端的安装

目前国内流行的前端主要为天马 G,无论是玩家还是工作室普遍采用。

文章配图

网上可获取安装包,参考视频平台教程即可安装。安装分为三个步骤:首先是 App,然后是配置,最后是 Roms。

2.1 APKS

文章配图

内容大致包含 MT 管理器(用于拷贝文件)、天马 G(整体入口)、RA(RetroArch)及其他独立模拟器。建议使用 adb 进行安装。安装完成后启动一次赋予权限,无需额外操作。

2.2 配置

配置主要包括三项:PG_安卓主题包 v1.2 230514.zip、PG_天马 G 安卓配置 v1.2 230415.zip 以及 Android 文件夹。

前两个 zip 文件是天马 G 的配置文件,包含金手指、存档等内容。Android 文件夹的处理逻辑如下:

文章配图

在 Android 11 及以上系统中,每个 App 的数据目录(Android/data/包名)受系统沙盒保护,普通文件管理器无法直接写入。但天马 G 前端需让多个独立 App(Pegasus、RetroArch、AetherSX2)共享配置文件、ROM 路径和启动脚本,因此需提前手动放置配置。

2.3 Roms

Rom 资源涉及版权问题,模拟器或工作室通常不会明面提供,需自行寻找。国内相关社区整合包内容较全,网上多为此类资源。

Rom 即为正常的游戏镜像,理论上直接拷贝至 SD 卡或手机即可,但为满足天马 G 前端 UI 要求,需增加特定文件。

以《恶魔城 白夜协奏曲》为例,需准备以下文件:

文章配图

包括主图、副图及介绍动画。此外整体还有一个 metadata 文件,直接使用精简包内的即可。完成后放入手机根目录的 Roms 文件夹下。若使用社区发布的整合包,精简包内已预先处理好这些内容。

2.4 运行

运行过程较为顺利。

文章配图

界面效果华丽,相比一般 Linux 掌机的文字界面,确实美观且方便。

文章配图

使用 USB 外接手柄非常方便,几乎感觉不到延迟。

但手机也存在局限,主要是屏幕尺寸问题。运行部分游戏时两侧会有较大黑边,影响体验,不过 PSP 游戏显示效果较好。

文章配图

总体满意,既降低了成本,又利用了闲置物品,满足了技术探索的需求。

3 天马 G 的技术原理

天马 G 是一个开源项目,官网地址:https://pegasus-frontend.org/

实际使用中它与预期略有不同,天马 G 本质上只是一个前端,功能相当于 ROM 管理器和模拟器启动器 Launcher。所有核心内容依赖于各家模拟器自己的 APK。

文章配图

整套实现基于 QT,因此支持多平台。功能本身不复杂,没有核心技术壁垒,主要是调用第三方模拟器。查看 Android 核心代码如下:

public static String launchAmCommand(String[] args_arr) {
    final LinkedList<String> args = new LinkedList(Arrays.asList(args_arr));
    if (args.isEmpty()) return "No arguments provided to 'am'";
    final String am_command = args.pop().toLowerCase();
    if (!am_command.equals("start")) return "For 'am', only the 'start' command is supported at the moment, '" + am_command + "' is not";
    try {
        Intent intent = IntentHelper.parseIntentCommand(args);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        m_self.startActivity(intent);
    } catch (Exception e) {
        return e.toString() + ": " + e.getMessage();
    }
    return null;
}

拼接好参数后,JNI 直接调用 startActivity 去调用三方模拟器。天马 G 提供的是一套 UI 框架。如果直接安装 RetroArch,其实也能玩,且更方便。

4 FPGA 的扩充

对模拟器性能提升比较关注,能否接 FPGA 来提升性能?计划留待后续探讨。

目录

  1. 1 复古掌机的选择
  2. 2 天马 G 前端的安装
  3. 2.1 APKS
  4. 2.2 配置
  5. 2.3 Roms
  6. 2.4 运行
  7. 3 天马 G 的技术原理
  8. 4 FPGA 的扩充
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • B-树模拟实现详解
  • Flutter 三方库 bavard 的鸿蒙化适配指南:语义化聊天协议与机器人逻辑
  • VSCode 通过 SSH 远程连接 Ubuntu 配置指南
  • 工业级存储芯片 CSNP32GCR01-AOW 在无人机飞控系统中的应用实践
  • C++ 跳表核心原理与性能解析
  • 数据结构实战:队列原理与 C 语言实现
  • 三款主流云电脑部署 DeepSeek 实测对比:性能、成本与体验分析
  • 2026 年高校 AIGC 检测标准汇总:论文 AI 率多少算正常
  • 华为 ICT 大赛 2024-2025 网络赛道考试分析
  • 基于 Spring Boot 的 Web 三大核心交互案例精讲
  • 利用 AI 快速解析 COM.MFASHIONGALLERY.EMAG 接口
  • 快速选择算法实战:第 K 大元素与最小 K 个数
  • Linux 常用命令大全:系统管理与安全运维
  • Kohya_SS AI 绘画模型训练实战指南
  • 基于 Python 和 Vue3 的大学生校园线上招聘系统
  • 前端 Base64 格式文件上传详解:原理、实现与最佳实践
  • Ubuntu 虚拟机部署 OpenClaw 个人 AI 助手指南
  • OpenClaw 接入飞书机器人与 Ollama 本地大模型部署指南
  • AG-UI:构建 AI 前端交互的统一协议
  • SkyWalking 全链路监控实战:Spring Cloud、Dubbo、RocketMQ 集成指南

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online