Skip to main content

Overview

Dynamic Input Textures allow texture packs to automatically display correct button prompts based on the user’s actual input device - showing keyboard keys, Xbox buttons, PlayStation buttons, or other controller types as appropriate.

How It Works

The system replaces rectangular regions in game textures with input-specific button images. When you press ‘A’ on a Wiimote mapped to ‘X’ on an Xbox controller, the game will display an Xbox ‘X’ button instead of a generic ‘A’ prompt.

Setup

Directory Structure

Game ID Naming

Folder names can be:
  • Complete Game ID: SMNE01 (New Super Mario Bros. Wii NTSC)
  • Region-agnostic ID: SMN (New Super Mario Bros. Wii, all regions)
  • Any name with empty GAMEID.txt file underneath

Enable Custom Textures

Enable “Load Custom Textures” in Graphics Settings > Advanced tab for dynamic input textures to work.

JSON Configuration

Required Fields

string
required
Base texture PNG file containing regions to replace
object
required
Map of emulated devices to button regions
object
Map of host devices to button images (required if default_host_controls not set)

Global Fields

string
Output folder name (default: <gameid>_Generated)
boolean
Maintain button image aspect ratios (default: true)
object
Default device-to-image mappings applied to all textures

Complete Examples

Basic Configuration

Understanding Regions

Regions define rectangular areas in the base image to replace with button icons. Each region is an array of four coordinates:

Multiple Regions

One button can replace multiple regions in the same texture:
Coordinates are pixel offsets into the base image. Ensure they don’t exceed image dimensions.

Emulated Device Names

GameCube Controllers

  • GCPad1, GCPad2, GCPad3, GCPad4

Wiimotes

  • Wiimote1, Wiimote2, Wiimote3, Wiimote4

Button Path Examples

Host Device Strings

Keyboard

Xbox Controllers

Wildcard (Any Device)

Gamepad button names use backticks: `Button A`, `Button X`, etc.

Image Requirements

Base Texture

  • PNG format required
  • Should be the game texture you’re modifying
  • Can be upscaled or redrawn versions

Button Images

  • PNG format required
  • Transparent backgrounds recommended
  • Will be scaled to fit regions (unless preserve_aspect_ratio: true)

Creating a Pack

1

Dump Game Textures

Enable “Dump Textures” in Graphics Settings and play the game to capture textures with button prompts
2

Create Button Assets

Design PNG images for each button on each input device type you want to support
3

Identify Regions

Open base textures in an image editor and note the pixel coordinates of button prompt locations
4

Write Configuration

Create JSON file mapping emulated controls to regions and host controls to images
5

Test

Load the game with different controller types and verify correct button images appear

Troubleshooting

  • Verify “Load Custom Textures” is enabled
  • Check folder is named correctly (matching Game ID)
  • Ensure JSON has no syntax errors
  • Verify output_textures keys match actual game texture filenames
  • Check host device string matches your controller type
  • Verify button name mapping is correct
  • Use wildcard "" device if specific device detection fails
  • Set "preserve_aspect_ratio": true
  • Adjust region dimensions to match button image aspect ratios
  • Ensure button PNGs are the correct resolution

Resource Packs

Package custom textures for distribution

Graphics Mods

Modify rendering behavior and effects