Skip to content

Repository files navigation

丁果盒 / DingooBox

丁果盒(DingooBox)是一款面向 Android 的 Dingoo A320 游戏前端,基于 AloysHF/DingooEmu libretro 核心构建。 界面使用 Jetpack Compose 和 Material 3,原生桥接层通过 JNI 驱动模拟核心。

当前版本:1.0.2

Android 包名:io.github.uplush.dingoobox

安卓前端调用

DingooBox 支持天马 G 等安卓前端通过 VIEW URI 或 ROM 路径参数直接启动 Dingoo .app 游戏。建议先将 ROM 所在目录加入 DingooBox 游戏库,这样在 Android 分区存储环境下无需申请“所有文件访问权限”。

extensions: app
launch: am start
 -n io.github.uplush.dingoobox/.MainActivity
 -a android.intent.action.VIEW
 -d file://{file.path}

也可以使用天马 G 常见的 ROM 参数:

am start -n io.github.uplush.dingoobox/.MainActivity -e ROM "{file.path}"

同时兼容 rompathgame_path 参数名及 content:// URI。从外部前端 启动的游戏退出后,会返回调用前端。

主要功能

  • 通过系统文件选择器批量添加 Dingoo .app 游戏,并直接在原文件夹运行, 兼容依赖同目录资源文件的游戏
  • MiNiQ 游戏库主页、固定抽屉、搜索、列表/网格切换和四种排序
  • 游戏封面、基于 DingooEmu 验证截图库的批量封面下载、游戏摘要、最近游玩和累计时长数据库
  • 长按游戏菜单与 MiNiQ 一致:开始游戏、读取存档、游戏摘要、选择封面图片、创建快捷方式
  • 常规、显示、音频、高级四页应用设置
  • MiNiQ 文件化设置仓库、简体中文/英文运行时切换和旧版设置迁移
  • 与 MiNiQ 统一的设置、触摸控制、映射、快捷键四页控制设置
  • 实体手柄按键/摇杆轴捕获、全局/按游戏控制方案及命名方案保存与载入
  • MiNiQ 式横屏和竖屏虚拟按键编辑器(网格吸附位置、单键大小、透明度、可见性)
  • 320×240 RGB565 画面和 22,050 Hz 立体声音频
  • 屏幕方向键、A/B/X/Y、L/R、开始和选择键
  • Android 实体手柄按键支持
  • MiNiQ 全屏四页 PauseMenu:暂停菜单、游戏信息、应用设置、控制设置
  • 横屏、竖屏游戏画面右上角均提供 MiNiQ 同款 PauseMenu 触控图标
  • MiNiQ 全屏保存/读取页、快速存档、五个手动槽、自动续玩提示及统一存档管理器
  • 与 MiNiQ 完全对应的用户数据目录和命名:即时存档位于 Android/data/io.github.uplush.dingoobox/files/savestates/<ROM SHA-256>/, 文件名为 auto.statequick.stateslot1.stateslot5.state
  • 快进、截图、重启、沉浸式全屏、比例/过滤、FPS/速度叠加
  • MiNiQ 式截图保存:暂停菜单截图会打开系统“另存为”界面,让用户选择路径; 手柄截图快捷键直接保存到系统相册 Pictures/DingooBox
  • 仅包含 arm64-v8a,原生库按 16 KB 页面大小对齐

支持环境

  • Android 7.0(API 24)或更高版本
  • 64 位 ARM Android 设备
  • 构建:Android Studio 自带 JBR 21、Android SDK Platform 37.0、Gradle 9.5.0
  • alpha17 起构建 JNI:NDK 28.2.13676358、CMake 3.22.1
  • 重新编译模拟器核心:Rust stable、aarch64-linux-android target、cargo-ndk

构建

DingooEmu 核心通过 Git Submodule 集成在 native/DingooEmu,主仓库会锁定到 经过 DingooBox 验证的核心提交。

首次克隆请使用:

git clone --recurse-submodules https://github.com/uplush/DingooBox.git
cd DingooBox

如果已经克隆过仓库,或核心目录为空,请执行:

git submodule update --init --recursive

仓库同时包含供 arm64-v8a 使用的预编译 libdingooemu.solibc++_shared.so,可以直接构建 APK:

./gradlew assembleDebug

Windows PowerShell:

.\gradlew.bat assembleDebug

生成文件位于 app/build/outputs/apk/debug/app-debug.apk。Debug 与 Release 构建使用相同的正式包名,不追加 .debug

存档失败诊断:清空日志、复现一次失败,再导出原生标签:

adb logcat -c
# 在游戏内尝试保存一次
adb logcat -d -s DingooState:I DingooCore:E *:S

重新构建 DingooEmu 核心

修改或更新核心源码后,需要重新生成 libdingooemu.so

Linux/macOS:

git submodule update --init --recursive
rustup target add aarch64-linux-android
cargo install cargo-ndk
ANDROID_NDK_HOME=/path/to/ndk/28.2.13676358 ./scripts/build-core.sh
./gradlew assembleDebug

Windows PowerShell:

git submodule update --init --recursive
rustup target add aarch64-linux-android
cargo install cargo-ndk
$env:ANDROID_NDK_HOME = "$env:LOCALAPPDATA\Android\Sdk\ndk\28.2.13676358"
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\build-core.ps1
.\gradlew.bat assembleDebug

已知限制

  • 在线封面下载仅匹配 DingooEmu 上游验证截图目录中的 .app 游戏;目录外游戏仍可从长按菜单选择本地图片。
  • 语言切换、显示滤镜和声音柔化已经连接运行时;DingooEmu 没有等价 核心接口的 Pokémon Mini 液晶模式、原机音效和屏幕震动设置不会显示。
  • 本仓库不提供签名密钥。自行构建的 Debug APK 使用 Android 开发调试证书; 正式分发 APK 时请使用自己的 Release 签名。

来源与授权

  • DingooEmu 原作者:@AloysHF
  • DingooEmu 原项目:AloysHF/DingooEmu
  • 原作者已明确表示欢迎二创,并要求保留署名和原项目地址。
  • Dingoo(丁果科技)、Dingoo A320 及相关名称和商标归各自权利人所有。

界面与交互架构基于 uplush/MiNiQ 源码适配, 锁定提交 596088d5c684d7990ef27d5f8e49d1897205ece6。逐文件来源与 Dingoo 适配点 见 MINIQ_UI_PORT.md

许可证

Android 前端使用 BSD 3-Clause License。内置 DingooEmu 源码及其 第三方组件保留各自许可证,详见 THIRD_PARTY_NOTICES.mdnative/DingooEmu/LICENSEnative/DingooEmu/THIRD_PARTY_LICENSES.md

About

An Android frontend for Dingoo A320 games, powered by DingooEmu/libretro and Jetpack Compose.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages