{
  "version": 3,
  "id": "ppsspp",
  "name": "PPSSPP",
  "revision": "2026-09-30.6",
  "origin": {
    "kind": "url",
    "url": "https://kouch.dev/emulators/ppsspp.kod"
  },
  "args": [
    "{rom}"
  ],
  "working_dir": null,
  "env": {},
  "window_mode": "fullscreen",
  "quit": {
    "method": "close",
    "force_kill_after_ms": 8000
  },
  "on_disconnect": "hold_neutral",
  "dsu": null,
  "native_gamepads": "disable_in_emulator_config",
  "update_check": true,
  "auto_update": false,
  "systems": [
    {
      "id": "psp",
      "folder": "psp",
      "name": "PlayStation Portable",
      "art": {
        "thumbnails": "Sony - PlayStation Portable"
      }
    }
  ],
  "extensions": [
    "iso",
    "cso",
    "chd",
    "pbp"
  ],
  "max_players": 1,
  "players": [
    {
      "dsu": null,
      "vpad": null,
      "motion": false
    }
  ],
  "hotkeys": {
    "pause": {
      "keys": [
        "f8"
      ]
    },
    "save_state": {
      "keys": [
        "f2"
      ]
    },
    "load_state": {
      "keys": [
        "f3"
      ]
    },
    "reset": null,
    "screenshot": {
      "keys": [
        "f10"
      ]
    },
    "quit": null,
    "fullscreen": {
      "keys": [
        "f11"
      ]
    }
  },
  "pause": {
    "method": "hotkey",
    "chord": {
      "keys": [
        "f8"
      ]
    }
  },
  "user_data": {
    "folders": {
      "saves": "saves",
      "states": "states",
      "screenshots": "screenshots",
      "config": "config",
      "system": "system"
    },
    "cloud": [
      "saves"
    ],
    "links": [
      {
        "link": "{emulator_dir}/memstick",
        "target": "{config}"
      },
      {
        "link": "{config}/PSP/SAVEDATA",
        "target": "{saves}"
      },
      {
        "link": "{config}/PSP/PPSSPP_STATE",
        "target": "{states}"
      },
      {
        "link": "{config}/PSP/SCREENSHOT",
        "target": "{screenshots}"
      }
    ],
    "config_edits": [
      {
        "file": "{config}/PSP/SYSTEM/ppsspp.ini",
        "format": "ini",
        "set": {
          "General.FirstRun": "False",
          "General.CheckForNewVersion": "False",
          "General.DiscordRichPresence": "False",
          "General.PauseOnLostFocus": "False",
          "General.ScreenshotsAsPNG": "True",
          "Graphics.FullScreen": "True"
        }
      },
      {
        "file": "{config}/PSP/SYSTEM/controls.ini",
        "format": "ini",
        "set": {
          "ControlMapping.Pause (no menu)": "1-138",
          "ControlMapping.Pause": "",
          "ControlMapping.Save State": "1-132",
          "ControlMapping.Load State": "1-133",
          "ControlMapping.Screenshot": "1-140",
          "ControlMapping.Toggle Fullscreen": "1-141",
          "ControlMapping.Up": "2{seat_pad_1}-19",
          "ControlMapping.Down": "2{seat_pad_1}-20",
          "ControlMapping.Left": "2{seat_pad_1}-21",
          "ControlMapping.Right": "2{seat_pad_1}-22",
          "ControlMapping.Cross": "2{seat_pad_1}-96",
          "ControlMapping.Circle": "2{seat_pad_1}-97",
          "ControlMapping.Square": "2{seat_pad_1}-99",
          "ControlMapping.Triangle": "2{seat_pad_1}-100",
          "ControlMapping.L": "2{seat_pad_1}-102",
          "ControlMapping.R": "2{seat_pad_1}-103",
          "ControlMapping.Start": "2{seat_pad_1}-108",
          "ControlMapping.Select": "2{seat_pad_1}-109",
          "ControlMapping.An.Up": "2{seat_pad_1}-4002",
          "ControlMapping.An.Down": "2{seat_pad_1}-4003",
          "ControlMapping.An.Left": "2{seat_pad_1}-4001",
          "ControlMapping.An.Right": "2{seat_pad_1}-4000"
        }
      }
    ]
  },
  "options": [
    {
      "id": "renderer",
      "label": "Renderer",
      "tab": "graphics",
      "type": "choice",
      "role": "renderer",
      "section": "Renderer",
      "restart": true,
      "default": "VULKAN",
      "values": [
        {
          "value": "VULKAN",
          "label": "Vulkan"
        },
        {
          "value": "DIRECT3D11",
          "label": "Direct3D 11 (Windows)",
          "os": [
            "windows"
          ]
        },
        {
          "value": "OPENGL",
          "label": "OpenGL"
        }
      ],
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PSP/SYSTEM/ppsspp.ini",
        "format": "ini",
        "key": "Graphics.GraphicsBackend"
      }
    },
    {
      "id": "resolution",
      "label": "Internal resolution",
      "tab": "graphics",
      "type": "choice",
      "role": "internal_resolution",
      "section": "Resolution",
      "default": 2,
      "values": [
        {
          "value": 1,
          "label": "Native (480×272)"
        },
        {
          "value": 2,
          "label": "2× (960×544)"
        },
        {
          "value": 3,
          "label": "3× (1440×816) for 720p"
        },
        {
          "value": 4,
          "label": "4× (1920×1088) for 1080p"
        },
        {
          "value": 5,
          "label": "5× (2400×1360)"
        },
        {
          "value": 6,
          "label": "6× (2880×1632) for 1440p"
        },
        {
          "value": 8,
          "label": "8× (3840×2176) for 4K"
        }
      ],
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PSP/SYSTEM/ppsspp.ini",
        "format": "ini",
        "key": "Graphics.InternalResolution"
      }
    },
    {
      "id": "msaa",
      "label": "Anti-aliasing",
      "tab": "graphics",
      "type": "choice",
      "role": "anti_aliasing",
      "section": "Resolution",
      "description": "With the Vulkan renderer only.",
      "default": 0,
      "values": [
        {
          "value": 0,
          "label": "Off"
        },
        {
          "value": 1,
          "label": "2× MSAA"
        },
        {
          "value": 2,
          "label": "4× MSAA"
        },
        {
          "value": 3,
          "label": "8× MSAA"
        }
      ],
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PSP/SYSTEM/ppsspp.ini",
        "format": "ini",
        "key": "Graphics.MultiSampleLevel"
      }
    },
    {
      "id": "anisotropy",
      "label": "Anisotropic filtering",
      "tab": "graphics",
      "type": "choice",
      "role": "anisotropic",
      "section": "Image quality",
      "default": 4,
      "values": [
        {
          "value": 0,
          "label": "Off"
        },
        {
          "value": 1,
          "label": "2×"
        },
        {
          "value": 2,
          "label": "4×"
        },
        {
          "value": 3,
          "label": "8×"
        },
        {
          "value": 4,
          "label": "16×"
        }
      ],
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PSP/SYSTEM/ppsspp.ini",
        "format": "ini",
        "key": "Graphics.AnisotropyLevel"
      }
    },
    {
      "id": "texture_filter",
      "label": "Texture smoothing",
      "tab": "graphics",
      "type": "choice",
      "role": "enhancement",
      "section": "Image quality",
      "default": 1,
      "values": [
        {
          "value": 1,
          "label": "Automatic"
        },
        {
          "value": 2,
          "label": "Nearest"
        },
        {
          "value": 3,
          "label": "Linear"
        },
        {
          "value": 4,
          "label": "Automatic, best quality"
        }
      ],
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PSP/SYSTEM/ppsspp.ini",
        "format": "ini",
        "key": "Graphics.TextureFiltering"
      }
    },
    {
      "id": "stretch",
      "label": "Stretch to fill",
      "tab": "graphics",
      "type": "toggle",
      "role": "aspect",
      "section": "Display",
      "default": false,
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PSP/SYSTEM/ppsspp.ini",
        "format": "ini",
        "key": "[DisplayLayout.Landscape].DisplayStretch",
        "on": "True",
        "off": "False"
      }
    },
    {
      "id": "vsync",
      "label": "V-Sync",
      "tab": "graphics",
      "type": "toggle",
      "role": "vsync",
      "section": "Display",
      "default": true,
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PSP/SYSTEM/ppsspp.ini",
        "format": "ini",
        "key": "Graphics.VerticalSync",
        "on": "True",
        "off": "False"
      }
    },
    {
      "id": "volume",
      "label": "Volume",
      "tab": "audio",
      "type": "slider",
      "min": 0,
      "max": 100,
      "step": 5,
      "default": 100,
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PSP/SYSTEM/ppsspp.ini",
        "format": "ini",
        "key": "Sound.GameVolume"
      }
    }
  ],
  "presets": [
    {
      "id": "performance",
      "label": "Performance",
      "description": "Twice the handheld’s resolution, no extras.",
      "values": {
        "resolution": 2,
        "msaa": 0,
        "anisotropy": 0
      }
    },
    {
      "id": "balanced",
      "label": "Balanced",
      "description": "Sharp on a 720p screen, with anisotropic filtering.",
      "values": {
        "resolution": 3,
        "msaa": 0,
        "anisotropy": 4
      }
    },
    {
      "id": "quality",
      "label": "Quality",
      "description": "Sharp on a 1080p screen, with anisotropic filtering.",
      "values": {
        "resolution": 4,
        "msaa": 0,
        "anisotropy": 4
      }
    }
  ],
  "auto": {
    "renderer": "VULKAN"
  },
  "unsupported": {
    "rumble": "The console had no rumble.",
    "netplay": "Online play goes through the emulator’s own ad hoc network settings.",
    "mods": "Texture packs go in a folder named after the game’s id, which Kouch can’t read from a disc image yet.",
    "motion": "The console had no motion sensors."
  },
  "platforms": {
    "windows": {
      "launch": {
        "kind": "exe",
        "path": "PPSSPPWindows64.exe"
      },
      "source": {
        "kind": "github_release",
        "repo": "hrydgard/ppsspp",
        "asset": "PPSSPP-v*-Windows-x64.zip",
        "url": null,
        "sha256": null,
        "install_subdir": null,
        "executable": "PPSSPPWindows64.exe",
        "auto_update": false,
        "feed": null
      },
      "user_data": {
        "folders": {
          "saves": "saves",
          "states": "states",
          "screenshots": "screenshots",
          "config": "config",
          "system": "system"
        },
        "cloud": [
          "saves"
        ],
        "links": [
          {
            "link": "{emulator_dir}/memstick",
            "target": "{config}"
          },
          {
            "link": "{config}/PSP/SAVEDATA",
            "target": "{saves}"
          },
          {
            "link": "{config}/PSP/PPSSPP_STATE",
            "target": "{states}"
          },
          {
            "link": "{config}/PSP/SCREENSHOT",
            "target": "{screenshots}"
          }
        ],
        "config_edits": [
          {
            "file": "{config}/PSP/SYSTEM/ppsspp.ini",
            "format": "ini",
            "set": {
              "General.FirstRun": "False",
              "General.CheckForNewVersion": "False",
              "General.DiscordRichPresence": "False",
              "General.PauseOnLostFocus": "False",
              "General.ScreenshotsAsPNG": "True",
              "Graphics.FullScreen": "True"
            }
          },
          {
            "file": "{config}/PSP/SYSTEM/controls.ini",
            "format": "ini",
            "set": {
              "ControlMapping.Pause (no menu)": "1-138",
              "ControlMapping.Pause": "",
              "ControlMapping.Save State": "1-132",
              "ControlMapping.Load State": "1-133",
              "ControlMapping.Screenshot": "1-140",
              "ControlMapping.Toggle Fullscreen": "1-141",
              "ControlMapping.Up": "2{seat_pad_1}-19",
              "ControlMapping.Down": "2{seat_pad_1}-20",
              "ControlMapping.Left": "2{seat_pad_1}-21",
              "ControlMapping.Right": "2{seat_pad_1}-22",
              "ControlMapping.Cross": "2{seat_pad_1}-96",
              "ControlMapping.Circle": "2{seat_pad_1}-97",
              "ControlMapping.Square": "2{seat_pad_1}-99",
              "ControlMapping.Triangle": "2{seat_pad_1}-100",
              "ControlMapping.L": "2{seat_pad_1}-102",
              "ControlMapping.R": "2{seat_pad_1}-103",
              "ControlMapping.Start": "2{seat_pad_1}-108",
              "ControlMapping.Select": "2{seat_pad_1}-109",
              "ControlMapping.An.Up": "2{seat_pad_1}-4002",
              "ControlMapping.An.Down": "2{seat_pad_1}-4003",
              "ControlMapping.An.Left": "2{seat_pad_1}-4001",
              "ControlMapping.An.Right": "2{seat_pad_1}-4000"
            }
          }
        ]
      }
    },
    "linux": {
      "launch": {
        "kind": "exe",
        "path": "PPSSPP.AppImage"
      },
      "source": {
        "kind": "github_release",
        "repo": "hrydgard/ppsspp",
        "asset": "PPSSPP-v*-anylinux-x86_64.AppImage",
        "url": null,
        "sha256": null,
        "install_subdir": null,
        "executable": "PPSSPP.AppImage",
        "auto_update": false,
        "feed": null
      },
      "env": {
        "XDG_CONFIG_HOME": "{user_data}",
        "XDG_DATA_HOME": "{user_data}/xdg-data",
        "XDG_CACHE_HOME": "{user_data}/xdg-cache"
      },
      "user_data": {
        "folders": {
          "saves": "saves",
          "states": "states",
          "screenshots": "screenshots",
          "config": "config",
          "system": "system"
        },
        "cloud": [
          "saves"
        ],
        "links": [
          {
            "link": "{user_data}/ppsspp",
            "target": "{config}"
          },
          {
            "link": "{config}/PSP/SAVEDATA",
            "target": "{saves}"
          },
          {
            "link": "{config}/PSP/PPSSPP_STATE",
            "target": "{states}"
          },
          {
            "link": "{config}/PSP/SCREENSHOT",
            "target": "{screenshots}"
          }
        ],
        "config_edits": [
          {
            "file": "{config}/PSP/SYSTEM/ppsspp.ini",
            "format": "ini",
            "set": {
              "General.FirstRun": "False",
              "General.CheckForNewVersion": "False",
              "General.DiscordRichPresence": "False",
              "General.PauseOnLostFocus": "False",
              "General.ScreenshotsAsPNG": "True",
              "Graphics.FullScreen": "True"
            }
          },
          {
            "file": "{config}/PSP/SYSTEM/controls.ini",
            "format": "ini",
            "set": {
              "ControlMapping.Pause (no menu)": "1-138",
              "ControlMapping.Pause": "",
              "ControlMapping.Save State": "1-132",
              "ControlMapping.Load State": "1-133",
              "ControlMapping.Screenshot": "1-140",
              "ControlMapping.Toggle Fullscreen": "1-141",
              "ControlMapping.Up": "1{seat_pad_1}-19",
              "ControlMapping.Down": "1{seat_pad_1}-20",
              "ControlMapping.Left": "1{seat_pad_1}-21",
              "ControlMapping.Right": "1{seat_pad_1}-22",
              "ControlMapping.Cross": "1{seat_pad_1}-189",
              "ControlMapping.Circle": "1{seat_pad_1}-190",
              "ControlMapping.Square": "1{seat_pad_1}-191",
              "ControlMapping.Triangle": "1{seat_pad_1}-188",
              "ControlMapping.L": "1{seat_pad_1}-193",
              "ControlMapping.R": "1{seat_pad_1}-192",
              "ControlMapping.Start": "1{seat_pad_1}-197",
              "ControlMapping.Select": "1{seat_pad_1}-196",
              "ControlMapping.An.Up": "1{seat_pad_1}-4003",
              "ControlMapping.An.Down": "1{seat_pad_1}-4002",
              "ControlMapping.An.Left": "1{seat_pad_1}-4001",
              "ControlMapping.An.Right": "1{seat_pad_1}-4000"
            }
          }
        ]
      }
    }
  }
}
