# Emulator **Repository Path**: liobruce/emulator ## Basic Information - **Project Name**: Emulator - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-01 - **Last Updated**: 2026-09-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Smart Emulator Smart Emulator 是一款基于 Libretro 核心的 Android 多平台模拟器应用,支持运行 NES、GB/GBA 和 SNES/SFC 游戏。 ## 功能特性 ### 核心模拟功能 - **多平台支持**: 集成 FCEUmm (NES)、mGBA (GB/GBA)、Snes9x (SNES/SFC) 三大模拟器核心 - **高清输出**: 支持自适应分辨率显示,自动适配不同屏幕尺寸 - **帧率控制**: 精确的帧同步和音频输出,确保流畅的游戏体验 - **状态存档**: 支持随时保存和加载游戏进度状态 ### ROM 兼容性 - **多种格式支持**: 支持 NES、GB、GBA、SNES 等主流游戏rom格式 - **压缩文件支持**: 可直接读取 ZIP、7z、RAR、TAR、GZIP、XZ、BZIP2 等压缩包内的rom文件 - **自动识别**: 智能检测rom文件类型并选择合适的模拟器核心 - **大文件支持**: 支持最大 256MB 的 rom 文件提取 ### 用户界面 - **虚拟手柄**: 内置可配置的虚拟游戏按键,支持多种平台布局 - **触屏控制**: 支持多点触控和手势操作 - **最近游戏**: 自动记录最近运行的游戏,方便快速访问 - **系统 UI 隐藏**: 游戏时自动隐藏状态栏,提供沉浸式体验 ## 系统要求 - Android 5.0 (API 21) 或更高版本 - 支持 ARMv8a (64位) 架构的设备 - 至少 100MB 可用存储空间 ## 使用说明 ### 运行游戏 1. 点击界面上的"选择 ROM"按钮 2. 从文件管理器中选择游戏文件或压缩包 3. 如果是压缩包,系统会列出所有可用的 rom 文件供选择 4. 选择后自动启动对应的模拟器核心 ### 虚拟手柄操作 - **方向键**: 上下左右移动 - **A/B 键**: 主要操作按钮 - **X/Y 键**: 辅助功能按钮 - **L/R 键**: 肩部按键 (适用于 SNES/GBA) - **Start/Select**: 开始/选择键 - **菜单键**: 打开游戏内菜单 (保存状态、设置等) ### 保存状态 1. 在游戏中按菜单键调出功能菜单 2. 选择"保存状态"选项 3. 状态文件会自动保存到应用数据目录 ## 项目架构 ``` smart-tools/emulator/ ├── app/src/main/ │ ├── cpp/ # JNI 原生代码 │ │ └── libretro_jni.cpp # Libretro 核心接口 │ ├── kotlin/ │ │ └── smart/tools/emulator/ │ │ ├── MainActivity.kt # 主界面 Activity │ │ ├── GameActivity.kt # 游戏界面 Activity │ │ ├── core/ │ │ │ ├── CoreSpec.kt # 模拟器核心规格定义 │ │ │ ├── EmulatorSession.kt # 模拟器会话管理 │ │ │ ├── Libretro.kt # JNI 接口封装 │ │ │ ├── RomArchive.kt # 压缩包解析 │ │ │ ├── RomHistory.kt # 游戏历史记录 │ │ │ └── SystemFiles.kt # 系统文件管理 │ │ └── widget/ │ │ ├── EmulatorView.kt # 游戏画面渲染 │ │ └── VirtualPadView.kt # 虚拟手柄控件 │ └── res/ # 资源文件 ├── third_party/ │ ├── fceumm/ # FCEUmm 模拟器核心源码 │ └── ... # 其他第三方库 ``` ### 核心模块说明 | 模块 | 功能描述 | |------|----------| | `EmulatorSession` | 管理模拟器核心运行循环,处理音视频同步 | | `Libretro` | 通过 JNI 调用原生 Libretro 核心 | | `RomArchive` | 解析各种压缩格式,提取 rom 文件 | | `VirtualPadView` | 自定义视图,实现虚拟游戏按键 | | `EmulatorView` | SurfaceView 实现,高性能视频渲染 | ## 构建指南 ### 环境要求 - Android Studio Hedgehog 或更高版本 - Gradle 8.0+ - Android NDK (用于编译原生代码) ### 编译步骤 1. 克隆项目仓库 2. 使用 Android Studio 打开项目 3. 等待 Gradle 同步完成 4. 选择 Build > Make Project ### 第三方核心 项目已集成以下开源模拟器核心: - [FCEUmm](https://github.com/TEmem/fceUmm) - NES 模拟器 - [mGBA](https://github.com/mgba-emu/mgba) - GB/GBA 模拟器 - [Snes9x](https://github.com/snes9xgit/snes9x) - SNES 模拟器 ## 许可证 本项目遵循 Apache License 2.0 许可协议。 ## 贡献者 感谢以下开源项目为本项目提供支持: - [Libretro](https://www.libretro.com/) - 模拟器框架 - 各第三方模拟器核心开发者 ## 反馈与支持 如有问题或建议,欢迎通过 Gitee Issues 页面提交反馈。