# Obtainium Emulation Pack
An [Obtainium](https://github.com/ImranR98/Obtainium) import file that adds popular Android
emulation applications to Obtainium.
The maintainer of Obtainium also hosts a collection of Crowdsourced app configurations.
[apps.obtainium.imranr.dev](https://apps.obtainium.imranr.dev)
## Prerequisite
> [!TIP]
> Which APK you need to download will depend on your device.
> If you're unsure, you can download `app-release.apk`
Download and Install the [latest release of Obtainium](https://github.com/ImranR98/Obtainium/releases/latest)
## Setup
### Option 1. Import Method
> [!TIP]
> This is recommended installation method for beginners and/or new devices
1. On your android emulation device, navigate to the [latest release](https://github.com/RJNY/Obtainium-Emulation-Pack/releases/latest) of the Obainium Emulation Pack.
1. Download the file titled `obtainium-emulation-pack-vX.X.X.json` to your device.
1. Open Obtainium.
1. Navigate to Import/Export.
1. Select `Obtainium Import` and open `obtainium-emulation-pack-vX.X.X.json`
1. You should see packages imported to your obtainium.
### Option 2. Click-to-Install Method
1. Visit this page on your android emulation device
1. Click the "Add to Obtainium!" links of the emulators you wish to track
## Applications
### Dual Screen
| Application Name | Add to Obtainium | Included in export json? |
|------------------|------------------|---------------------------|
| Azahar | Add to Obtainium! | ❌ |
| Cemu | Add to Obtainium! | ❌ |
| MelonDS | Add to Obtainium! | ❌ |
### Emulator
| Application Name | Add to Obtainium | Included in export json? |
|------------------|------------------|---------------------------|
| ARMSX2 | Add to Obtainium! | ✅ |
| Azahar | Add to Obtainium! | ✅ |
| Cemu | Add to Obtainium! | ✅ |
| Citra MMJ | Add to Obtainium! | ✅ |
| Citron | Add to Obtainium! | ✅ |
| Citron Nightly | Add to Obtainium! | ❌ |
| Dolphin Emulator | Add to Obtainium! | ✅ |
| Dolphin Emulator (Dev build) | Add to Obtainium! | ❌ |
| Dolphin-MMJR2-VBI | Add to Obtainium! | ❌ |
| DuckStation (Beta) | Add to Obtainium! | ✅ |
| Eden | Add to Obtainium! | ✅ |
| Eden Nightly | Add to Obtainium! | ❌ |
| Flycast | Add to Obtainium! | ✅ |
| Kenji-NX | Add to Obtainium! | ❌ |
| MelonDS | Add to Obtainium! | ✅ |
| MelonDS Nightly | Add to Obtainium! | ❌ |
| NetherSX2-Classic | Add to Obtainium! | ✅ |
| NetherSX2-Patch | Add to Obtainium! | ❌ |
| PPSSPP | Add to Obtainium! | ✅ |
| RPCSX | Add to Obtainium! | ✅ |
| RetroArch (AArch64) | Add to Obtainium! | ✅ |
| RetroArch Nightly (AArch64) | Add to Obtainium! | ❌ |
| ScummVM | Add to Obtainium! | ✅ |
| Vita3K | Add to Obtainium! | ✅ |
| Vita3K ZX | Add to Obtainium! | ✅ |
### Frontend
| Application Name | Add to Obtainium | Included in export json? |
|------------------|------------------|---------------------------|
| Daijishō | Add to Obtainium! | ✅ |
| Pegasus | Add to Obtainium! | ✅ |
### PC Emulation
| Application Name | Add to Obtainium | Included in export json? |
|------------------|------------------|---------------------------|
| GameHub Lite | Add to Obtainium! | ✅ |
| GameNative | Add to Obtainium! | ✅ |
| Winlator | Add to Obtainium! | ✅ |
| Winlator CMod | Add to Obtainium! | ✅ |
| Winlator-Ludashi | Add to Obtainium! | ✅ |
### Streaming
| Application Name | Add to Obtainium | Included in export json? |
|------------------|------------------|---------------------------|
| Artemis | Add to Obtainium! | ✅ |
| Moonlight | Add to Obtainium! | ✅ |
### Track Only
| Application Name | Add to Obtainium | Included in export json? |
|------------------|------------------|---------------------------|
| AdrenoToolsDrivers | Add to Obtainium! | ✅ |
| Obtainium Emulation Pack | Add to Obtainium! | ✅ |
### Utilities
| Application Name | Add to Obtainium | Included in export json? |
|------------------|------------------|---------------------------|
| ES-DE Android Apps | Add to Obtainium! | ✅ |
| OdinTools | Add to Obtainium! | ✅ |
| Syncthing-Fork | Add to Obtainium! | ✅ |
## FAQ
### A note about stable, beta, nightly and canary versions of the same app
You cannot install more than one version of the same app. For example: You must choose between RetroArch (stable) or RetroArch (nightly). You cannot have both.
To make things easier for beginners, I've omitted nightly, beta and canary versions where a stable
one exists.
You can manually add beta/nightly applications by using the links in the README
### How do I updated Obtainium Emulation Pack?
Same as install method. It'll update existing resources.
It will not remove any other resources you've added.
### Why do some applications say TRACK ONLY?
As the name implies, these application versions are only tracked, not pulled.
This was done because we _can't_ pull these resources, but you may still care to know when these
resources have updates so you can pull them manually. For example: NetherSX2 can't provide an APK
for legal reasons, but you'll get update notifications so you don't have to manually check or be
stuck with outdated resources.
### How do I use TRACK ONLY resources?
When you get notified of an update to your track only resource:
- visit the link to your resource
- download it manually
- in obtainium > click resource > click "Mark Updated"
### Can this break?
Yes. Absolutely it can.
Any of the scrapers that use regex can break if the application maintainers break convention.
The applications pulling from GitHub are more stable and less likely to break.
## Development & Contribution
### Contributing
You are welcome to make a PR with a contribution.
#### 1. Making changes to the pack
##### Adding / Removing Applications
To add, update or remove an application, you need to:
1. make edits to `src/applications.json`.
1. run `make release` in the root directory
#### 2. Pre-Commit
Before you commit, make sure to run `make release`.
This will:
- template the README and update the table
- update the minified json release file
After running `make release`, please check for the following:
- `obtainium-emulation-pack-latest.json` has been updated
- `README.md` has been updated.
- Does the README table generate a friendly application name? If not, see documentation for `nameOverride`
- Does the README table generate a friendly applicaation URL? If not, see documentation for `urlOverride`
- Is the application in beta? If so, please exclude it from the JSON using `meta.excludeFromExport`
### Developer Documentation
#### Meta field options
My scripts will do specific actions if specific application keys are present in the
`application.json`
| key | type | default | description |
| --------------------- | ------ | ------- | ------------------------------------------------------------------------------------------------------------------------- |
| meta.exludeFromExport | bool | false | Excludes the app from the release export json. |
| meta.exludeFromTable | bool | false | Excludes the app from the README table. |
| meta.nameOverride | string | null | Overwrite emulator name, useful if the default name is not human friendly |
| meta.urlOverride | string | null | Overwrite the application preview link. If empty, the readme table will use the application scraper link as the homepage. |