# Skins

**Skins** are custom controller overlays that let you personalize the look and feel of Provenance's on-screen controls. Choose from hundreds of community-created designs, from classic console aesthetics to modern minimalist layouts.

## What Are Skins?

Skins change the visual appearance of your on-screen controller buttons and d-pad while you play. Each skin is designed for a specific system (e.g., NES, Game Boy, PlayStation) and can completely transform your gaming experience.

**Examples of popular skin styles:**

* 🎨 **Console-accurate** - Recreates the original hardware's button layout and colors
* 🌈 **Custom colors** - Transparent, neon, retro themes
* 📱 **Minimalist** - Simple, clean buttons that don't obstruct gameplay
* 🎮 **Game-themed** - Styled after specific games (Pokémon, Mario, Sonic)
* 👻 **Invisible** - For Backbone/Kishi users who want physical controls only

## ✨ Key Features

**Skins are 100% FREE for all users!** No Provenance Plus subscription required.

**Highlights:**

* ⚡ Fast rendering and loading
* 🔄 Smooth orientation changes
* 💾 Optimized memory usage
* 🎮 Full support for all RetroArch cores
* 📱 Works on iPhone, iPad, and Apple TV
* 🎨 **Multi-theme variants** — multiple color schemes in one skin file
* 🌊 **Animated backgrounds** — frame sequences, APNG, or GIF
* ⌨️ **Keyboard overlays** — for C64, Atari, ZX Spectrum and other keyboard systems
* 📳 **Per-button haptics** — custom haptic intensity per button

## Supported Systems

Skins work with **all systems except**:

* ❌ Nintendo DS (not currently supported)

**Fully supported systems include:**

* ✅ NES, SNES, N64
* ✅ Game Boy, GBC, GBA
* ✅ Nintendo 3DS (iOS/iPadOS/macOS only — not supported on tvOS)
* ✅ Genesis, Sega CD, Dreamcast
* ✅ PlayStation, PSP
* ✅ Atari, Neo Geo, TurboGrafx-16
* ✅ And 30+ more!

***

## How to Get Skins

### Download from DeltaStyles.com

[**DeltaStyles**](https://deltastyles.com) is the largest community repository for Provenance-compatible skins.

**What's available:**

* 🎨 Hundreds of free skins
* 🎮 Organized by system (NES, GBA, PlayStation, etc.)
* 🌈 Multiple color themes per system
* 👥 Community uploads and ratings

**File format:** `.deltaskin`

**Compatibility:** Provenance supports both **Delta skins** and **Manic skins** - they're the same format!

### Other Sources

* **PlayCase.gg** - Curated skin collection
* **Reddit** (r/EmulationOniOS) - Community-shared skins
* **Discord** - Provenance community often shares custom skins

***

## How to Import Skins

{% tabs %}
{% tab title="Safari Download" %}

1. **Visit DeltaStyles.com** on your iPhone/iPad
2. **Browse by system** (e.g., Game Boy Advance)
3. **Tap "Download"** on a skin you like
4. Safari will download the `.deltaskin` file
5. **Tap the downloaded file** in Safari's download manager
6. **Select "Open in Provenance"**
7. ✅ Skin is now imported!
   {% endtab %}

{% tab title="AirDrop" %}

1. Download skins on your Mac/another device
2. **AirDrop the `.deltaskin` files** to your iPhone/iPad
3. **Tap the file** when it arrives
4. **Select "Open in Provenance"**
   {% endtab %}

{% tab title="Files App" %}

1. Save `.deltaskin` files to iCloud Drive or local storage
2. Open **Files app**
3. Navigate to the skin file
4. **Tap and hold** → **Share** → **Provenance**
   {% endtab %}

{% tab title="Import via Settings" %}

1. Open **Provenance**
2. Tap **Settings** (gear icon)
3. Scroll to **Controller Skins**
4. Tap a system (e.g., "Game Boy Advance")
5. Tap **"+"** to import from Files app
   {% endtab %}
   {% endtabs %}

***

## How to Apply Skins

{% tabs %}
{% tab title="Global Default (Per System)" %}
Apply a skin to **all games** for a specific system:

1. Open **Provenance**
2. Tap **Settings** → **Controller Skins**
3. **Select a system** (e.g., "Super Nintendo")
4. **Tap the skin** you want to use
5. **Select "Set as Default"**
6. ✅ This skin will now be used for all SNES games
   {% endtab %}

{% tab title="Per-Game Skin" %}
Apply a unique skin to a **specific game only**:

1. **Long-press a game** in your library
2. Tap **"Game Settings"**
3. Scroll to **Controller Skin**
4. **Select a skin** from the list
5. ✅ This game will now use that skin (overrides global default)
   {% endtab %}

{% tab title="Switch Mid-Game" %}
Change skins without exiting your game:

1. While playing, **open the pause menu** (pause button)
2. Tap **Settings**
3. Tap **Controller Skin**
4. **Select a new skin**
5. Resume playing with the new skin applied
   {% endtab %}
   {% endtabs %}

***

## Skin Browser

Provenance includes a built-in **skin browser** for managing your collection:

**How to access:**

* Settings → Controller Skins → \[System Name]

**Features:**

* 📸 **Preview thumbnails** - See what each skin looks like
* 🗑️ **Delete skins** - Swipe left to remove unwanted skins
* 🌟 **Mark favorites** - Star your most-used skins for quick access
* 📂 **Organize by system** - Automatic sorting by console

**Performance tip:** The skin browser features smooth, responsive scrolling even with large collections.

***

## Creating Custom Skins

### Can I Make My Own Skins?

**Yes!** Custom skin creation is supported, but it requires design tools and familiarity with the `.deltaskin` file format.

**What you need:**

* 🎨 **Image editor** (Photoshop, GIMP, Affinity Designer)
* 📐 **Understanding of JSON** (skin configuration file)
* 📱 **iOS device resolution knowledge** (different layouts for iPhone/iPad)

### File Structure

A `.deltaskin` file is actually a **ZIP archive** containing:

```
MySkin.deltaskin/
├── info.json          # Skin metadata (name, author, system)
├── portrait.png       # Portrait mode controller image
├── landscape.png      # Landscape mode controller image
├── edgeToEdge.png     # (Optional) Full-screen layout
└── assets/            # (Optional) Additional graphics
    ├── preview.png    # Thumbnail for skin browser
    └── bg001.png      # (Optional) Animated background frames
```

### `info.json` Structure

```json
{
  "name": "My Custom Skin",
  "identifier": "com.yourname.myskin",
  "gameTypeIdentifier": "public.aoshuang.game.gba",
  "author": "Your Name",
  "version": "1.0",
  "orientation": "portrait",
  "mappings": {
    "a": { "x": 280, "y": 380, "width": 60, "height": 60 },
    "b": { "x": 340, "y": 320, "width": 60, "height": 60 },
    "dpad": { "x": 40, "y": 360, "width": 100, "height": 100 }
  }
}
```

**Key fields:**

* `gameTypeIdentifier` - System this skin is for (see [System Identifiers](#system-identifiers) below)
* `mappings` - Button positions (x, y coordinates + dimensions)
* `orientation` - "portrait", "landscape", or both

### System Identifiers

Common system identifiers for `info.json` — use the Provenance/ManicEmu identifiers (`public.aoshuang.game.*`) for broadest compatibility:

| System            | Identifier                    |
| ----------------- | ----------------------------- |
| NES               | `public.aoshuang.game.nes`    |
| SNES              | `public.aoshuang.game.snes`   |
| Nintendo 64       | `public.aoshuang.game.n64`    |
| Nintendo DS       | `public.aoshuang.game.ds`     |
| Game Boy          | `public.aoshuang.game.gb`     |
| Game Boy Color    | `public.aoshuang.game.gbc`    |
| Game Boy Advance  | `public.aoshuang.game.gba`    |
| PlayStation       | `public.aoshuang.game.ps1`    |
| PSP               | `public.aoshuang.game.psp`    |
| Sega Genesis / MD | `public.aoshuang.game.md`     |
| Sega CD           | `public.aoshuang.game.mcd`    |
| Sega 32X          | `public.aoshuang.game.32x`    |
| Game Gear         | `public.aoshuang.game.gg`     |
| Dreamcast         | `public.aoshuang.game.dc`     |
| PC Engine / TG-16 | `public.aoshuang.game.pce`    |
| Atari 2600        | `public.aoshuang.game.2600`   |
| Atari 7800        | `public.aoshuang.game.7800`   |
| Neo Geo           | `public.aoshuang.game.neogeo` |
| Commodore 64      | `public.aoshuang.game.c64`    |

Delta-compatible skins (`com.rileytestut.delta.game.*`) also work in Provenance.

**For a complete list**, check the [Provenance skin catalog](https://provenance-emu.com/skins/) source code.

***

## Advanced ManicSkin Features

Provenance supports advanced skin capabilities that go beyond static button layouts. These features are configured in `info.json` and give skin creators powerful new options.

{% hint style="info" %}
These features require the latest version of Provenance. Check [App Store](https://wiki.provenance-emu.com/getting-started/installing-provenance/app-store) or [advanced installs](https://wiki.provenance-emu.com/getting-started/installing-provenance/advanced) for the most current builds.
{% endhint %}

### Multi-Theme Variants

A single skin file can contain multiple visual themes (e.g., light mode / dark mode / game-specific palettes). Users select themes via a segmented control in the skin picker.

```json
{
  "name": "Lux GBA",
  "themes": [
    { "identifier": "dark",  "displayName": "Dark Mode" },
    { "identifier": "light", "displayName": "Light Mode" },
    { "identifier": "purple", "displayName": "Purple Haze" }
  ]
}
```

Each theme identifier corresponds to asset variants bundled inside the `.deltaskin` ZIP. The skin validator will catch missing theme assets before import.

### Animated Backgrounds

Skins can include animated backgrounds behind the game screen using frame sequences, APNG, or GIF files.

{% tabs %}
{% tab title="Frame Sequence" %}

```json
"backgroundAnimation": {
  "type": "frames",
  "frames": ["bg001.png", "bg002.png", "bg003.png", "bg004.png"],
  "fps": 12,
  "loops": 0
}
```

`loops: 0` means loop infinitely. Include the frame images inside your `.deltaskin` ZIP.
{% endtab %}

{% tab title="APNG / GIF" %}

```json
"backgroundAnimation": {
  "type": "apng",
  "source": "background.png"
}
```

Or for GIF:

```json
"backgroundAnimation": {
  "type": "gif",
  "source": "background.gif"
}
```

{% endtab %}
{% endtabs %}

**Supported `blendMode` values:** `normal`, `multiply`, `screen`, `overlay` (optional field, defaults to `normal`).

### Keyboard Overlay

For systems with keyboard input (Commodore 64, Atari 8-bit, ZX Spectrum, etc.), skins can include an on-screen keyboard overlay.

```json
"keyboardOverlay": {
  "layout": "full",
  "position": "bottom",
  "opacity": 0.85,
  "autoShow": true
}
```

**Layout variants:**

| `layout`      | Description                          |
| ------------- | ------------------------------------ |
| `full`        | Standard QWERTY keyboard             |
| `compact`     | Condensed layout for smaller screens |
| `functionRow` | Function keys only (F1–F12)          |
| `c64`         | Commodore 64 key layout              |
| `zxSpectrum`  | ZX Spectrum key layout               |
| `amstradCPC`  | Amstrad CPC key layout               |
| `atariST`     | Atari ST key layout                  |

* `position`: `"top"` or `"bottom"` — where the keyboard appears on screen
* `autoShow`: `true` to show keyboard automatically when a text input is focused

### Per-Button Haptics

Individual buttons can have custom haptic feedback intensity, letting skin creators match haptic feel to button importance or game genre.

Add `hapticStrength` to any button mapping:

```json
"mappings": {
  "a": { "x": 280, "y": 380, "width": 60, "height": 60, "hapticStrength": "heavy" },
  "b": { "x": 340, "y": 320, "width": 60, "height": 60, "hapticStrength": "medium" },
  "start": { "x": 180, "y": 450, "width": 44, "height": 44, "hapticStrength": "light" }
}
```

**Haptic strength values:** `none`, `light`, `medium`, `heavy`, `rigid`, `soft`

### Skin Validator

Provenance automatically validates `.deltaskin` files on import:

* **Errors** (block import): missing `info.json`, invalid `gameTypeIdentifier`, referenced image files not found in ZIP, malformed JSON
* **Warnings** (shown after import): missing optional fields, deprecated field names, oversized assets

The validator helps skin creators catch issues before distributing their work.

***

### Tools for Skin Creation

**Recommended workflow:**

1. **Download an existing skin** as a template
2. **Unzip the `.deltaskin` file** (rename to `.zip` → extract)
3. **Edit PNG images** in your image editor
4. **Adjust `info.json` mappings** if needed
5. **Re-zip the folder** → rename to `.deltaskin`
6. **Import into Provenance** and test

**Advanced tools:**

* **Delta Skin Editor** (web-based tool) - Simplifies mapping button coordinates
* **Skin Template PSDs** - Pre-made Photoshop templates (search GitHub/Reddit)

**External skin creation guides:**

* [**Manic EMU Homemade Skin Guide**](https://manicemu.site/Homemade-Skin-Guide-EN/) — Extremely detailed guide covering press animations, custom function buttons, and advanced skin features (uses the same `.deltaskin` format)
* [**DeltaCore Skins Spec**](https://github.com/rileytestut/DeltaCore/wiki/Skins) — Official technical specification for the `.deltaskin` format (JSON schema, coordinate systems, image requirements)

***

## Tips & Best Practices

### For Best Performance

1. ✅ **Use optimized PNGs** - Compress images to reduce file size (tinypng.com)
2. ✅ **Avoid overly complex designs** - Simple graphics load faster
3. ✅ **Test on your device** - Preview how skins look at actual screen size
4. ✅ **Delete unused skins** - Keep your collection organized

### For Better Gameplay

1. 🎮 **Match button placement to your grip** - Different layouts feel better for different hand sizes
2. 🔆 **Consider transparency** - Semi-transparent buttons let you see more of the game
3. 📱 **Test both orientations** - Some games play better in portrait vs landscape
4. 👀 **Check button visibility** - Make sure buttons are easy to see against game graphics

### Popular Community Recommendations

**Best all-around skins (per DeltaStyles ratings):**

* **GBA:** "Atomic Purple" (classic transparent purple)
* **SNES:** "Classic Gray" (original SNES controller recreation)
* **PlayStation:** "DualShock" (authentic PS1 button layout)
* **Game Boy:** "DMG Original" (1989 gray brick aesthetic)

***

## Troubleshooting

<details>

<summary><strong>Skin Not Showing in Browser</strong></summary>

**Problem:** Imported skin doesn't appear in the skin list

**Solutions:**

1. ✅ **Check file extension** - Must be `.deltaskin` (not `.zip`)
2. ✅ **Verify system** - Skin must match a supported system (DS not yet supported; 3DS not supported on tvOS)
3. ✅ **Restart Provenance** - Force quit app and reopen
4. ✅ **Re-import** - Delete and re-download the skin

</details>

<details>

<summary><strong>Skin Looks Corrupted or Glitchy</strong></summary>

**Problem:** Buttons are misaligned, missing, or stretched

**Solutions:**

1. ✅ **Re-download skin** - File may have been corrupted during download
2. ✅ **Check device compatibility** - Some skins are iPhone-only or iPad-only
3. ✅ **Update Provenance** - Ensure you're on the latest version from the App Store
4. ✅ **Report to skin creator** - Leave feedback on DeltaStyles or GitHub

</details>

<details>

<summary><strong>Buttons Don't Respond</strong></summary>

**Problem:** Tapping skin buttons doesn't register input

**Solutions:**

1. ✅ **Check `info.json` mappings** - Button coordinates may be wrong
2. ✅ **Disable "Touch Controls"** - Settings → ensure touch controls are enabled
3. ✅ **Try a different skin** - Test if the issue is skin-specific
4. ✅ **Restart game** - Close and relaunch the game

</details>

<details>

<summary><strong>Performance Slowdown with Skins</strong></summary>

**Problem:** Game lags or stutters after applying a skin

**Solutions:**

1. ✅ **Use simpler skins** - Complex, high-resolution graphics add overhead
2. ✅ **Update to the latest version** - Contains skin performance improvements
3. ✅ **Close background apps** - Free up memory
4. ✅ **Disable visual filters** - Turn off CRT/Smoothing in settings

</details>

***

## Storage & File Management

### Where Are Skins Stored?

Skins are stored on your device in Provenance's app container.

**iCloud sync:** On Apple TV (tvOS), iCloud/CloudKit sync is included for free. On iPhone, iPad, and Mac, **Provenance Plus** is required for iCloud sync of skins, your game library, save states, BIOS files, and custom artwork. [Learn more about Provenance Plus →](https://wiki.provenance-emu.com/faqs#what-is-provenance-plus)

**File size:** Most skins are 500KB - 2MB each (negligible storage impact).

### How to Organize Many Skins

**Recommended workflow:**

1. **Delete unused skins** - Swipe left in skin browser
2. **Name skins clearly** - Use descriptive names when creating custom skins
3. **Keep backups** - Save favorite skins to iCloud Drive or Files app

### Sharing Skins

**How to share your custom skins:**

1. Export the `.deltaskin` file from Provenance
2. Upload to DeltaStyles.com (create free account)
3. Or share via AirDrop, Discord, Reddit

**Community etiquette:**

* 🙏 Credit original artists if you modify their work
* 📝 Include a preview screenshot when sharing
* 🔄 Share source files (PSD/Figma) for easier community remixing

***

## Frequently Asked Questions

<details>

<summary><strong>Do skins work on Apple TV?</strong></summary>

Yes, for most systems! Skins render on Apple TV when using touch-based systems (though most users prefer physical controllers). Note: Nintendo 3DS skins are not supported on tvOS.

</details>

<details>

<summary><strong>Can I use the same skin on multiple systems?</strong></summary>

No — each skin is designed for a specific system's button layout (SNES skins won't work for GBA).

</details>

<details>

<summary><strong>Are animated skins supported?</strong></summary>

Yes! Animated backgrounds are supported via the `backgroundAnimation` field in `info.json`. Skin creators can use frame sequences (PNG), APNG, or GIF files. See [Animated Backgrounds](#animated-backgrounds) above.

</details>

<details>

<summary><strong>Do skins affect game performance?</strong></summary>

Minimal impact thanks to optimized rendering in current versions.

</details>

<details>

<summary><strong>Can I disable skins entirely?</strong></summary>

Yes — select the default "Standard" skin for any system to use Provenance's built-in controls.

</details>

<details>

<summary><strong>Where can I request a specific skin design?</strong></summary>

Check the [Provenance Discord](https://discord.gg/provenance) or r/EmulationOniOS — community designers often take requests!

</details>

***

## Next Steps

* 🎨 [**Browse skins at DeltaStyles →**](https://deltastyles.com)
* 🎮 [**Controllers & Controls Guide**](https://wiki.provenance-emu.com/using-provenance/controllers-and-controls) - Optimize your control setup
* 📱 [**Performance Optimization**](https://wiki.provenance-emu.com/platforms-and-performance/performance-optimization) - Get the best gameplay experience
* ⚙️ [**Troubleshooting Guide**](https://wiki.provenance-emu.com/help-and-community/troubleshooting) - Fix common issues

***

**Have an amazing skin to share?** Submit it to the [Skin Catalog](https://wiki.provenance-emu.com/using-provenance/skins-guide/skin-catalog-contributing) so it appears in the built-in Skin Browser for everyone — or join the [Provenance community on Discord](https://discord.gg/provenance) and show off your creations!

*Update to the latest version from the App Store for the best skins experience.*


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.provenance-emu.com/using-provenance/skins-guide.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
