{
  "version": 3,
  "id": "pcsx2",
  "name": "PCSX2",
  "revision": "2026-09-30.6",
  "origin": {
    "kind": "url",
    "url": "https://kouch.dev/emulators/pcsx2.kod"
  },
  "args": [
    "-batch",
    "-nogui",
    "-fullscreen",
    "-datapath",
    "{config}",
    "--",
    "{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": "ps2",
      "folder": "ps2",
      "name": "PlayStation 2",
      "art": {
        "thumbnails": "Sony - PlayStation 2"
      }
    }
  ],
  "extensions": [
    "iso",
    "chd",
    "cso",
    "zso",
    "gz",
    "m3u"
  ],
  "max_players": 8,
  "players": [
    {
      "dsu": null,
      "vpad": null,
      "motion": false
    },
    {
      "dsu": null,
      "vpad": null,
      "motion": false
    },
    {
      "dsu": null,
      "vpad": null,
      "motion": false
    },
    {
      "dsu": null,
      "vpad": null,
      "motion": false
    },
    {
      "dsu": null,
      "vpad": null,
      "motion": false
    },
    {
      "dsu": null,
      "vpad": null,
      "motion": false
    },
    {
      "dsu": null,
      "vpad": null,
      "motion": false
    },
    {
      "dsu": null,
      "vpad": null,
      "motion": false
    }
  ],
  "hotkeys": {
    "pause": {
      "keys": [
        "f10"
      ]
    },
    "save_state": {
      "keys": [
        "f1"
      ]
    },
    "load_state": {
      "keys": [
        "f3"
      ]
    },
    "reset": null,
    "screenshot": {
      "keys": [
        "f8"
      ]
    },
    "quit": null,
    "fullscreen": {
      "keys": [
        "alt",
        "enter"
      ]
    }
  },
  "pause": {
    "method": "hotkey",
    "chord": {
      "keys": [
        "f10"
      ]
    }
  },
  "user_data": {
    "folders": {
      "saves": "saves",
      "states": "states",
      "screenshots": "screenshots",
      "config": "config",
      "system": "system"
    },
    "cloud": [
      "saves"
    ],
    "config_edits": [
      {
        "file": "{config}/PCSX2/inis/PCSX2.ini",
        "format": "ini",
        "set": {
          "UI.SettingsVersion": "1",
          "UI.SetupWizardIncomplete": "false",
          "UI.ConfirmShutdown": "false",
          "UI.PauseOnFocusLoss": "false",
          "UI.HideMouseCursor": "true",
          "EmuCore.EnableDiscordPresence": "false",
          "AutoUpdater.CheckAtStartup": "false",
          "Folders.Bios": "{system}",
          "Folders.MemoryCards": "{saves}/memcards",
          "Folders.Savestates": "{states}",
          "Folders.Snapshots": "{screenshots}",
          "Folders.Videos": "{screenshots}/videos",
          "Folders.Cache": "{storage}/cache",
          "InputSources.SDL": "true",
          "InputSources.XInput": "false",
          "InputSources.DInput": "false",
          "InputSources.Keyboard": "true",
          "InputSources.Mouse": "false",
          "Hotkeys.TogglePause": "Keyboard/F10",
          "Hotkeys.OpenPauseMenu": "",
          "Hotkeys.HoldTurbo": "",
          "Hotkeys.SaveStateToSlot": "Keyboard/F1",
          "Hotkeys.LoadStateFromSlot": "Keyboard/F3",
          "Hotkeys.Screenshot": "Keyboard/F8",
          "Hotkeys.ToggleFullscreen": "Keyboard/Alt & Keyboard/Return"
        }
      }
    ],
    "system_required": true,
    "system_files": [
      {
        "names": [],
        "patterns": [
          "*.bin"
        ],
        "sizes": [
          4194304
        ],
        "kind": "file",
        "what": "Start-up ROM (BIOS)",
        "required": true,
        "features": "every game; the emulator knows the file by its contents, so its name doesn’t matter",
        "regions": [
          "JP",
          "US",
          "EU",
          "Asia",
          "China"
        ]
      }
    ]
  },
  "options": [
    {
      "id": "multitap",
      "label": "Multitap",
      "tab": "multiplayer",
      "type": "choice",
      "section": "Controllers",
      "description": "Without it only players 1 and 2 play. Most multiplayer games want it on port 1.",
      "default": "off",
      "values": [
        {
          "value": "off",
          "label": "Off (2 players)",
          "edits": [
            {
              "file": "{config}/PCSX2/inis/PCSX2.ini",
              "format": "ini",
              "set": {
                "Pad.MultitapPort1": "false",
                "Pad.MultitapPort2": "false",
                "Pad1.Type": "DualShock2",
                "Pad1.Up": "SDL-{seat_pad_1}/DPadUp",
                "Pad1.Down": "SDL-{seat_pad_1}/DPadDown",
                "Pad1.Left": "SDL-{seat_pad_1}/DPadLeft",
                "Pad1.Right": "SDL-{seat_pad_1}/DPadRight",
                "Pad1.Cross": "SDL-{seat_pad_1}/FaceSouth",
                "Pad1.Circle": "SDL-{seat_pad_1}/FaceEast",
                "Pad1.Square": "SDL-{seat_pad_1}/FaceWest",
                "Pad1.Triangle": "SDL-{seat_pad_1}/FaceNorth",
                "Pad1.Select": "SDL-{seat_pad_1}/Back",
                "Pad1.Start": "SDL-{seat_pad_1}/Start",
                "Pad1.L1": "SDL-{seat_pad_1}/LeftShoulder",
                "Pad1.R1": "SDL-{seat_pad_1}/RightShoulder",
                "Pad1.L2": "SDL-{seat_pad_1}/+LeftTrigger",
                "Pad1.R2": "SDL-{seat_pad_1}/+RightTrigger",
                "Pad1.L3": "SDL-{seat_pad_1}/LeftStick",
                "Pad1.R3": "SDL-{seat_pad_1}/RightStick",
                "Pad1.LUp": "SDL-{seat_pad_1}/-LeftY",
                "Pad1.LDown": "SDL-{seat_pad_1}/+LeftY",
                "Pad1.LLeft": "SDL-{seat_pad_1}/-LeftX",
                "Pad1.LRight": "SDL-{seat_pad_1}/+LeftX",
                "Pad1.RUp": "SDL-{seat_pad_1}/-RightY",
                "Pad1.RDown": "SDL-{seat_pad_1}/+RightY",
                "Pad1.RLeft": "SDL-{seat_pad_1}/-RightX",
                "Pad1.RRight": "SDL-{seat_pad_1}/+RightX",
                "Pad1.LargeMotor": "SDL-{seat_pad_1}/LargeMotor",
                "Pad1.SmallMotor": "SDL-{seat_pad_1}/SmallMotor",
                "Pad2.Type": "DualShock2",
                "Pad2.Up": "SDL-{seat_pad_2}/DPadUp",
                "Pad2.Down": "SDL-{seat_pad_2}/DPadDown",
                "Pad2.Left": "SDL-{seat_pad_2}/DPadLeft",
                "Pad2.Right": "SDL-{seat_pad_2}/DPadRight",
                "Pad2.Cross": "SDL-{seat_pad_2}/FaceSouth",
                "Pad2.Circle": "SDL-{seat_pad_2}/FaceEast",
                "Pad2.Square": "SDL-{seat_pad_2}/FaceWest",
                "Pad2.Triangle": "SDL-{seat_pad_2}/FaceNorth",
                "Pad2.Select": "SDL-{seat_pad_2}/Back",
                "Pad2.Start": "SDL-{seat_pad_2}/Start",
                "Pad2.L1": "SDL-{seat_pad_2}/LeftShoulder",
                "Pad2.R1": "SDL-{seat_pad_2}/RightShoulder",
                "Pad2.L2": "SDL-{seat_pad_2}/+LeftTrigger",
                "Pad2.R2": "SDL-{seat_pad_2}/+RightTrigger",
                "Pad2.L3": "SDL-{seat_pad_2}/LeftStick",
                "Pad2.R3": "SDL-{seat_pad_2}/RightStick",
                "Pad2.LUp": "SDL-{seat_pad_2}/-LeftY",
                "Pad2.LDown": "SDL-{seat_pad_2}/+LeftY",
                "Pad2.LLeft": "SDL-{seat_pad_2}/-LeftX",
                "Pad2.LRight": "SDL-{seat_pad_2}/+LeftX",
                "Pad2.RUp": "SDL-{seat_pad_2}/-RightY",
                "Pad2.RDown": "SDL-{seat_pad_2}/+RightY",
                "Pad2.RLeft": "SDL-{seat_pad_2}/-RightX",
                "Pad2.RRight": "SDL-{seat_pad_2}/+RightX",
                "Pad2.LargeMotor": "SDL-{seat_pad_2}/LargeMotor",
                "Pad2.SmallMotor": "SDL-{seat_pad_2}/SmallMotor"
              }
            }
          ]
        },
        {
          "value": "port1",
          "label": "On port 1 (up to 5 players)",
          "edits": [
            {
              "file": "{config}/PCSX2/inis/PCSX2.ini",
              "format": "ini",
              "set": {
                "Pad.MultitapPort1": "true",
                "Pad.MultitapPort2": "false",
                "Pad1.Type": "DualShock2",
                "Pad1.Up": "SDL-{seat_pad_1}/DPadUp",
                "Pad1.Down": "SDL-{seat_pad_1}/DPadDown",
                "Pad1.Left": "SDL-{seat_pad_1}/DPadLeft",
                "Pad1.Right": "SDL-{seat_pad_1}/DPadRight",
                "Pad1.Cross": "SDL-{seat_pad_1}/FaceSouth",
                "Pad1.Circle": "SDL-{seat_pad_1}/FaceEast",
                "Pad1.Square": "SDL-{seat_pad_1}/FaceWest",
                "Pad1.Triangle": "SDL-{seat_pad_1}/FaceNorth",
                "Pad1.Select": "SDL-{seat_pad_1}/Back",
                "Pad1.Start": "SDL-{seat_pad_1}/Start",
                "Pad1.L1": "SDL-{seat_pad_1}/LeftShoulder",
                "Pad1.R1": "SDL-{seat_pad_1}/RightShoulder",
                "Pad1.L2": "SDL-{seat_pad_1}/+LeftTrigger",
                "Pad1.R2": "SDL-{seat_pad_1}/+RightTrigger",
                "Pad1.L3": "SDL-{seat_pad_1}/LeftStick",
                "Pad1.R3": "SDL-{seat_pad_1}/RightStick",
                "Pad1.LUp": "SDL-{seat_pad_1}/-LeftY",
                "Pad1.LDown": "SDL-{seat_pad_1}/+LeftY",
                "Pad1.LLeft": "SDL-{seat_pad_1}/-LeftX",
                "Pad1.LRight": "SDL-{seat_pad_1}/+LeftX",
                "Pad1.RUp": "SDL-{seat_pad_1}/-RightY",
                "Pad1.RDown": "SDL-{seat_pad_1}/+RightY",
                "Pad1.RLeft": "SDL-{seat_pad_1}/-RightX",
                "Pad1.RRight": "SDL-{seat_pad_1}/+RightX",
                "Pad1.LargeMotor": "SDL-{seat_pad_1}/LargeMotor",
                "Pad1.SmallMotor": "SDL-{seat_pad_1}/SmallMotor",
                "Pad3.Type": "DualShock2",
                "Pad3.Up": "SDL-{seat_pad_2}/DPadUp",
                "Pad3.Down": "SDL-{seat_pad_2}/DPadDown",
                "Pad3.Left": "SDL-{seat_pad_2}/DPadLeft",
                "Pad3.Right": "SDL-{seat_pad_2}/DPadRight",
                "Pad3.Cross": "SDL-{seat_pad_2}/FaceSouth",
                "Pad3.Circle": "SDL-{seat_pad_2}/FaceEast",
                "Pad3.Square": "SDL-{seat_pad_2}/FaceWest",
                "Pad3.Triangle": "SDL-{seat_pad_2}/FaceNorth",
                "Pad3.Select": "SDL-{seat_pad_2}/Back",
                "Pad3.Start": "SDL-{seat_pad_2}/Start",
                "Pad3.L1": "SDL-{seat_pad_2}/LeftShoulder",
                "Pad3.R1": "SDL-{seat_pad_2}/RightShoulder",
                "Pad3.L2": "SDL-{seat_pad_2}/+LeftTrigger",
                "Pad3.R2": "SDL-{seat_pad_2}/+RightTrigger",
                "Pad3.L3": "SDL-{seat_pad_2}/LeftStick",
                "Pad3.R3": "SDL-{seat_pad_2}/RightStick",
                "Pad3.LUp": "SDL-{seat_pad_2}/-LeftY",
                "Pad3.LDown": "SDL-{seat_pad_2}/+LeftY",
                "Pad3.LLeft": "SDL-{seat_pad_2}/-LeftX",
                "Pad3.LRight": "SDL-{seat_pad_2}/+LeftX",
                "Pad3.RUp": "SDL-{seat_pad_2}/-RightY",
                "Pad3.RDown": "SDL-{seat_pad_2}/+RightY",
                "Pad3.RLeft": "SDL-{seat_pad_2}/-RightX",
                "Pad3.RRight": "SDL-{seat_pad_2}/+RightX",
                "Pad3.LargeMotor": "SDL-{seat_pad_2}/LargeMotor",
                "Pad3.SmallMotor": "SDL-{seat_pad_2}/SmallMotor",
                "Pad4.Type": "DualShock2",
                "Pad4.Up": "SDL-{seat_pad_3}/DPadUp",
                "Pad4.Down": "SDL-{seat_pad_3}/DPadDown",
                "Pad4.Left": "SDL-{seat_pad_3}/DPadLeft",
                "Pad4.Right": "SDL-{seat_pad_3}/DPadRight",
                "Pad4.Cross": "SDL-{seat_pad_3}/FaceSouth",
                "Pad4.Circle": "SDL-{seat_pad_3}/FaceEast",
                "Pad4.Square": "SDL-{seat_pad_3}/FaceWest",
                "Pad4.Triangle": "SDL-{seat_pad_3}/FaceNorth",
                "Pad4.Select": "SDL-{seat_pad_3}/Back",
                "Pad4.Start": "SDL-{seat_pad_3}/Start",
                "Pad4.L1": "SDL-{seat_pad_3}/LeftShoulder",
                "Pad4.R1": "SDL-{seat_pad_3}/RightShoulder",
                "Pad4.L2": "SDL-{seat_pad_3}/+LeftTrigger",
                "Pad4.R2": "SDL-{seat_pad_3}/+RightTrigger",
                "Pad4.L3": "SDL-{seat_pad_3}/LeftStick",
                "Pad4.R3": "SDL-{seat_pad_3}/RightStick",
                "Pad4.LUp": "SDL-{seat_pad_3}/-LeftY",
                "Pad4.LDown": "SDL-{seat_pad_3}/+LeftY",
                "Pad4.LLeft": "SDL-{seat_pad_3}/-LeftX",
                "Pad4.LRight": "SDL-{seat_pad_3}/+LeftX",
                "Pad4.RUp": "SDL-{seat_pad_3}/-RightY",
                "Pad4.RDown": "SDL-{seat_pad_3}/+RightY",
                "Pad4.RLeft": "SDL-{seat_pad_3}/-RightX",
                "Pad4.RRight": "SDL-{seat_pad_3}/+RightX",
                "Pad4.LargeMotor": "SDL-{seat_pad_3}/LargeMotor",
                "Pad4.SmallMotor": "SDL-{seat_pad_3}/SmallMotor",
                "Pad5.Type": "DualShock2",
                "Pad5.Up": "SDL-{seat_pad_4}/DPadUp",
                "Pad5.Down": "SDL-{seat_pad_4}/DPadDown",
                "Pad5.Left": "SDL-{seat_pad_4}/DPadLeft",
                "Pad5.Right": "SDL-{seat_pad_4}/DPadRight",
                "Pad5.Cross": "SDL-{seat_pad_4}/FaceSouth",
                "Pad5.Circle": "SDL-{seat_pad_4}/FaceEast",
                "Pad5.Square": "SDL-{seat_pad_4}/FaceWest",
                "Pad5.Triangle": "SDL-{seat_pad_4}/FaceNorth",
                "Pad5.Select": "SDL-{seat_pad_4}/Back",
                "Pad5.Start": "SDL-{seat_pad_4}/Start",
                "Pad5.L1": "SDL-{seat_pad_4}/LeftShoulder",
                "Pad5.R1": "SDL-{seat_pad_4}/RightShoulder",
                "Pad5.L2": "SDL-{seat_pad_4}/+LeftTrigger",
                "Pad5.R2": "SDL-{seat_pad_4}/+RightTrigger",
                "Pad5.L3": "SDL-{seat_pad_4}/LeftStick",
                "Pad5.R3": "SDL-{seat_pad_4}/RightStick",
                "Pad5.LUp": "SDL-{seat_pad_4}/-LeftY",
                "Pad5.LDown": "SDL-{seat_pad_4}/+LeftY",
                "Pad5.LLeft": "SDL-{seat_pad_4}/-LeftX",
                "Pad5.LRight": "SDL-{seat_pad_4}/+LeftX",
                "Pad5.RUp": "SDL-{seat_pad_4}/-RightY",
                "Pad5.RDown": "SDL-{seat_pad_4}/+RightY",
                "Pad5.RLeft": "SDL-{seat_pad_4}/-RightX",
                "Pad5.RRight": "SDL-{seat_pad_4}/+RightX",
                "Pad5.LargeMotor": "SDL-{seat_pad_4}/LargeMotor",
                "Pad5.SmallMotor": "SDL-{seat_pad_4}/SmallMotor",
                "Pad2.Type": "DualShock2",
                "Pad2.Up": "SDL-{seat_pad_5}/DPadUp",
                "Pad2.Down": "SDL-{seat_pad_5}/DPadDown",
                "Pad2.Left": "SDL-{seat_pad_5}/DPadLeft",
                "Pad2.Right": "SDL-{seat_pad_5}/DPadRight",
                "Pad2.Cross": "SDL-{seat_pad_5}/FaceSouth",
                "Pad2.Circle": "SDL-{seat_pad_5}/FaceEast",
                "Pad2.Square": "SDL-{seat_pad_5}/FaceWest",
                "Pad2.Triangle": "SDL-{seat_pad_5}/FaceNorth",
                "Pad2.Select": "SDL-{seat_pad_5}/Back",
                "Pad2.Start": "SDL-{seat_pad_5}/Start",
                "Pad2.L1": "SDL-{seat_pad_5}/LeftShoulder",
                "Pad2.R1": "SDL-{seat_pad_5}/RightShoulder",
                "Pad2.L2": "SDL-{seat_pad_5}/+LeftTrigger",
                "Pad2.R2": "SDL-{seat_pad_5}/+RightTrigger",
                "Pad2.L3": "SDL-{seat_pad_5}/LeftStick",
                "Pad2.R3": "SDL-{seat_pad_5}/RightStick",
                "Pad2.LUp": "SDL-{seat_pad_5}/-LeftY",
                "Pad2.LDown": "SDL-{seat_pad_5}/+LeftY",
                "Pad2.LLeft": "SDL-{seat_pad_5}/-LeftX",
                "Pad2.LRight": "SDL-{seat_pad_5}/+LeftX",
                "Pad2.RUp": "SDL-{seat_pad_5}/-RightY",
                "Pad2.RDown": "SDL-{seat_pad_5}/+RightY",
                "Pad2.RLeft": "SDL-{seat_pad_5}/-RightX",
                "Pad2.RRight": "SDL-{seat_pad_5}/+RightX",
                "Pad2.LargeMotor": "SDL-{seat_pad_5}/LargeMotor",
                "Pad2.SmallMotor": "SDL-{seat_pad_5}/SmallMotor"
              }
            }
          ]
        },
        {
          "value": "both",
          "label": "On both ports (up to 8 players)",
          "edits": [
            {
              "file": "{config}/PCSX2/inis/PCSX2.ini",
              "format": "ini",
              "set": {
                "Pad.MultitapPort1": "true",
                "Pad.MultitapPort2": "true",
                "Pad1.Type": "DualShock2",
                "Pad1.Up": "SDL-{seat_pad_1}/DPadUp",
                "Pad1.Down": "SDL-{seat_pad_1}/DPadDown",
                "Pad1.Left": "SDL-{seat_pad_1}/DPadLeft",
                "Pad1.Right": "SDL-{seat_pad_1}/DPadRight",
                "Pad1.Cross": "SDL-{seat_pad_1}/FaceSouth",
                "Pad1.Circle": "SDL-{seat_pad_1}/FaceEast",
                "Pad1.Square": "SDL-{seat_pad_1}/FaceWest",
                "Pad1.Triangle": "SDL-{seat_pad_1}/FaceNorth",
                "Pad1.Select": "SDL-{seat_pad_1}/Back",
                "Pad1.Start": "SDL-{seat_pad_1}/Start",
                "Pad1.L1": "SDL-{seat_pad_1}/LeftShoulder",
                "Pad1.R1": "SDL-{seat_pad_1}/RightShoulder",
                "Pad1.L2": "SDL-{seat_pad_1}/+LeftTrigger",
                "Pad1.R2": "SDL-{seat_pad_1}/+RightTrigger",
                "Pad1.L3": "SDL-{seat_pad_1}/LeftStick",
                "Pad1.R3": "SDL-{seat_pad_1}/RightStick",
                "Pad1.LUp": "SDL-{seat_pad_1}/-LeftY",
                "Pad1.LDown": "SDL-{seat_pad_1}/+LeftY",
                "Pad1.LLeft": "SDL-{seat_pad_1}/-LeftX",
                "Pad1.LRight": "SDL-{seat_pad_1}/+LeftX",
                "Pad1.RUp": "SDL-{seat_pad_1}/-RightY",
                "Pad1.RDown": "SDL-{seat_pad_1}/+RightY",
                "Pad1.RLeft": "SDL-{seat_pad_1}/-RightX",
                "Pad1.RRight": "SDL-{seat_pad_1}/+RightX",
                "Pad1.LargeMotor": "SDL-{seat_pad_1}/LargeMotor",
                "Pad1.SmallMotor": "SDL-{seat_pad_1}/SmallMotor",
                "Pad3.Type": "DualShock2",
                "Pad3.Up": "SDL-{seat_pad_2}/DPadUp",
                "Pad3.Down": "SDL-{seat_pad_2}/DPadDown",
                "Pad3.Left": "SDL-{seat_pad_2}/DPadLeft",
                "Pad3.Right": "SDL-{seat_pad_2}/DPadRight",
                "Pad3.Cross": "SDL-{seat_pad_2}/FaceSouth",
                "Pad3.Circle": "SDL-{seat_pad_2}/FaceEast",
                "Pad3.Square": "SDL-{seat_pad_2}/FaceWest",
                "Pad3.Triangle": "SDL-{seat_pad_2}/FaceNorth",
                "Pad3.Select": "SDL-{seat_pad_2}/Back",
                "Pad3.Start": "SDL-{seat_pad_2}/Start",
                "Pad3.L1": "SDL-{seat_pad_2}/LeftShoulder",
                "Pad3.R1": "SDL-{seat_pad_2}/RightShoulder",
                "Pad3.L2": "SDL-{seat_pad_2}/+LeftTrigger",
                "Pad3.R2": "SDL-{seat_pad_2}/+RightTrigger",
                "Pad3.L3": "SDL-{seat_pad_2}/LeftStick",
                "Pad3.R3": "SDL-{seat_pad_2}/RightStick",
                "Pad3.LUp": "SDL-{seat_pad_2}/-LeftY",
                "Pad3.LDown": "SDL-{seat_pad_2}/+LeftY",
                "Pad3.LLeft": "SDL-{seat_pad_2}/-LeftX",
                "Pad3.LRight": "SDL-{seat_pad_2}/+LeftX",
                "Pad3.RUp": "SDL-{seat_pad_2}/-RightY",
                "Pad3.RDown": "SDL-{seat_pad_2}/+RightY",
                "Pad3.RLeft": "SDL-{seat_pad_2}/-RightX",
                "Pad3.RRight": "SDL-{seat_pad_2}/+RightX",
                "Pad3.LargeMotor": "SDL-{seat_pad_2}/LargeMotor",
                "Pad3.SmallMotor": "SDL-{seat_pad_2}/SmallMotor",
                "Pad4.Type": "DualShock2",
                "Pad4.Up": "SDL-{seat_pad_3}/DPadUp",
                "Pad4.Down": "SDL-{seat_pad_3}/DPadDown",
                "Pad4.Left": "SDL-{seat_pad_3}/DPadLeft",
                "Pad4.Right": "SDL-{seat_pad_3}/DPadRight",
                "Pad4.Cross": "SDL-{seat_pad_3}/FaceSouth",
                "Pad4.Circle": "SDL-{seat_pad_3}/FaceEast",
                "Pad4.Square": "SDL-{seat_pad_3}/FaceWest",
                "Pad4.Triangle": "SDL-{seat_pad_3}/FaceNorth",
                "Pad4.Select": "SDL-{seat_pad_3}/Back",
                "Pad4.Start": "SDL-{seat_pad_3}/Start",
                "Pad4.L1": "SDL-{seat_pad_3}/LeftShoulder",
                "Pad4.R1": "SDL-{seat_pad_3}/RightShoulder",
                "Pad4.L2": "SDL-{seat_pad_3}/+LeftTrigger",
                "Pad4.R2": "SDL-{seat_pad_3}/+RightTrigger",
                "Pad4.L3": "SDL-{seat_pad_3}/LeftStick",
                "Pad4.R3": "SDL-{seat_pad_3}/RightStick",
                "Pad4.LUp": "SDL-{seat_pad_3}/-LeftY",
                "Pad4.LDown": "SDL-{seat_pad_3}/+LeftY",
                "Pad4.LLeft": "SDL-{seat_pad_3}/-LeftX",
                "Pad4.LRight": "SDL-{seat_pad_3}/+LeftX",
                "Pad4.RUp": "SDL-{seat_pad_3}/-RightY",
                "Pad4.RDown": "SDL-{seat_pad_3}/+RightY",
                "Pad4.RLeft": "SDL-{seat_pad_3}/-RightX",
                "Pad4.RRight": "SDL-{seat_pad_3}/+RightX",
                "Pad4.LargeMotor": "SDL-{seat_pad_3}/LargeMotor",
                "Pad4.SmallMotor": "SDL-{seat_pad_3}/SmallMotor",
                "Pad5.Type": "DualShock2",
                "Pad5.Up": "SDL-{seat_pad_4}/DPadUp",
                "Pad5.Down": "SDL-{seat_pad_4}/DPadDown",
                "Pad5.Left": "SDL-{seat_pad_4}/DPadLeft",
                "Pad5.Right": "SDL-{seat_pad_4}/DPadRight",
                "Pad5.Cross": "SDL-{seat_pad_4}/FaceSouth",
                "Pad5.Circle": "SDL-{seat_pad_4}/FaceEast",
                "Pad5.Square": "SDL-{seat_pad_4}/FaceWest",
                "Pad5.Triangle": "SDL-{seat_pad_4}/FaceNorth",
                "Pad5.Select": "SDL-{seat_pad_4}/Back",
                "Pad5.Start": "SDL-{seat_pad_4}/Start",
                "Pad5.L1": "SDL-{seat_pad_4}/LeftShoulder",
                "Pad5.R1": "SDL-{seat_pad_4}/RightShoulder",
                "Pad5.L2": "SDL-{seat_pad_4}/+LeftTrigger",
                "Pad5.R2": "SDL-{seat_pad_4}/+RightTrigger",
                "Pad5.L3": "SDL-{seat_pad_4}/LeftStick",
                "Pad5.R3": "SDL-{seat_pad_4}/RightStick",
                "Pad5.LUp": "SDL-{seat_pad_4}/-LeftY",
                "Pad5.LDown": "SDL-{seat_pad_4}/+LeftY",
                "Pad5.LLeft": "SDL-{seat_pad_4}/-LeftX",
                "Pad5.LRight": "SDL-{seat_pad_4}/+LeftX",
                "Pad5.RUp": "SDL-{seat_pad_4}/-RightY",
                "Pad5.RDown": "SDL-{seat_pad_4}/+RightY",
                "Pad5.RLeft": "SDL-{seat_pad_4}/-RightX",
                "Pad5.RRight": "SDL-{seat_pad_4}/+RightX",
                "Pad5.LargeMotor": "SDL-{seat_pad_4}/LargeMotor",
                "Pad5.SmallMotor": "SDL-{seat_pad_4}/SmallMotor",
                "Pad2.Type": "DualShock2",
                "Pad2.Up": "SDL-{seat_pad_5}/DPadUp",
                "Pad2.Down": "SDL-{seat_pad_5}/DPadDown",
                "Pad2.Left": "SDL-{seat_pad_5}/DPadLeft",
                "Pad2.Right": "SDL-{seat_pad_5}/DPadRight",
                "Pad2.Cross": "SDL-{seat_pad_5}/FaceSouth",
                "Pad2.Circle": "SDL-{seat_pad_5}/FaceEast",
                "Pad2.Square": "SDL-{seat_pad_5}/FaceWest",
                "Pad2.Triangle": "SDL-{seat_pad_5}/FaceNorth",
                "Pad2.Select": "SDL-{seat_pad_5}/Back",
                "Pad2.Start": "SDL-{seat_pad_5}/Start",
                "Pad2.L1": "SDL-{seat_pad_5}/LeftShoulder",
                "Pad2.R1": "SDL-{seat_pad_5}/RightShoulder",
                "Pad2.L2": "SDL-{seat_pad_5}/+LeftTrigger",
                "Pad2.R2": "SDL-{seat_pad_5}/+RightTrigger",
                "Pad2.L3": "SDL-{seat_pad_5}/LeftStick",
                "Pad2.R3": "SDL-{seat_pad_5}/RightStick",
                "Pad2.LUp": "SDL-{seat_pad_5}/-LeftY",
                "Pad2.LDown": "SDL-{seat_pad_5}/+LeftY",
                "Pad2.LLeft": "SDL-{seat_pad_5}/-LeftX",
                "Pad2.LRight": "SDL-{seat_pad_5}/+LeftX",
                "Pad2.RUp": "SDL-{seat_pad_5}/-RightY",
                "Pad2.RDown": "SDL-{seat_pad_5}/+RightY",
                "Pad2.RLeft": "SDL-{seat_pad_5}/-RightX",
                "Pad2.RRight": "SDL-{seat_pad_5}/+RightX",
                "Pad2.LargeMotor": "SDL-{seat_pad_5}/LargeMotor",
                "Pad2.SmallMotor": "SDL-{seat_pad_5}/SmallMotor",
                "Pad6.Type": "DualShock2",
                "Pad6.Up": "SDL-{seat_pad_6}/DPadUp",
                "Pad6.Down": "SDL-{seat_pad_6}/DPadDown",
                "Pad6.Left": "SDL-{seat_pad_6}/DPadLeft",
                "Pad6.Right": "SDL-{seat_pad_6}/DPadRight",
                "Pad6.Cross": "SDL-{seat_pad_6}/FaceSouth",
                "Pad6.Circle": "SDL-{seat_pad_6}/FaceEast",
                "Pad6.Square": "SDL-{seat_pad_6}/FaceWest",
                "Pad6.Triangle": "SDL-{seat_pad_6}/FaceNorth",
                "Pad6.Select": "SDL-{seat_pad_6}/Back",
                "Pad6.Start": "SDL-{seat_pad_6}/Start",
                "Pad6.L1": "SDL-{seat_pad_6}/LeftShoulder",
                "Pad6.R1": "SDL-{seat_pad_6}/RightShoulder",
                "Pad6.L2": "SDL-{seat_pad_6}/+LeftTrigger",
                "Pad6.R2": "SDL-{seat_pad_6}/+RightTrigger",
                "Pad6.L3": "SDL-{seat_pad_6}/LeftStick",
                "Pad6.R3": "SDL-{seat_pad_6}/RightStick",
                "Pad6.LUp": "SDL-{seat_pad_6}/-LeftY",
                "Pad6.LDown": "SDL-{seat_pad_6}/+LeftY",
                "Pad6.LLeft": "SDL-{seat_pad_6}/-LeftX",
                "Pad6.LRight": "SDL-{seat_pad_6}/+LeftX",
                "Pad6.RUp": "SDL-{seat_pad_6}/-RightY",
                "Pad6.RDown": "SDL-{seat_pad_6}/+RightY",
                "Pad6.RLeft": "SDL-{seat_pad_6}/-RightX",
                "Pad6.RRight": "SDL-{seat_pad_6}/+RightX",
                "Pad6.LargeMotor": "SDL-{seat_pad_6}/LargeMotor",
                "Pad6.SmallMotor": "SDL-{seat_pad_6}/SmallMotor",
                "Pad7.Type": "DualShock2",
                "Pad7.Up": "SDL-{seat_pad_7}/DPadUp",
                "Pad7.Down": "SDL-{seat_pad_7}/DPadDown",
                "Pad7.Left": "SDL-{seat_pad_7}/DPadLeft",
                "Pad7.Right": "SDL-{seat_pad_7}/DPadRight",
                "Pad7.Cross": "SDL-{seat_pad_7}/FaceSouth",
                "Pad7.Circle": "SDL-{seat_pad_7}/FaceEast",
                "Pad7.Square": "SDL-{seat_pad_7}/FaceWest",
                "Pad7.Triangle": "SDL-{seat_pad_7}/FaceNorth",
                "Pad7.Select": "SDL-{seat_pad_7}/Back",
                "Pad7.Start": "SDL-{seat_pad_7}/Start",
                "Pad7.L1": "SDL-{seat_pad_7}/LeftShoulder",
                "Pad7.R1": "SDL-{seat_pad_7}/RightShoulder",
                "Pad7.L2": "SDL-{seat_pad_7}/+LeftTrigger",
                "Pad7.R2": "SDL-{seat_pad_7}/+RightTrigger",
                "Pad7.L3": "SDL-{seat_pad_7}/LeftStick",
                "Pad7.R3": "SDL-{seat_pad_7}/RightStick",
                "Pad7.LUp": "SDL-{seat_pad_7}/-LeftY",
                "Pad7.LDown": "SDL-{seat_pad_7}/+LeftY",
                "Pad7.LLeft": "SDL-{seat_pad_7}/-LeftX",
                "Pad7.LRight": "SDL-{seat_pad_7}/+LeftX",
                "Pad7.RUp": "SDL-{seat_pad_7}/-RightY",
                "Pad7.RDown": "SDL-{seat_pad_7}/+RightY",
                "Pad7.RLeft": "SDL-{seat_pad_7}/-RightX",
                "Pad7.RRight": "SDL-{seat_pad_7}/+RightX",
                "Pad7.LargeMotor": "SDL-{seat_pad_7}/LargeMotor",
                "Pad7.SmallMotor": "SDL-{seat_pad_7}/SmallMotor",
                "Pad8.Type": "DualShock2",
                "Pad8.Up": "SDL-{seat_pad_8}/DPadUp",
                "Pad8.Down": "SDL-{seat_pad_8}/DPadDown",
                "Pad8.Left": "SDL-{seat_pad_8}/DPadLeft",
                "Pad8.Right": "SDL-{seat_pad_8}/DPadRight",
                "Pad8.Cross": "SDL-{seat_pad_8}/FaceSouth",
                "Pad8.Circle": "SDL-{seat_pad_8}/FaceEast",
                "Pad8.Square": "SDL-{seat_pad_8}/FaceWest",
                "Pad8.Triangle": "SDL-{seat_pad_8}/FaceNorth",
                "Pad8.Select": "SDL-{seat_pad_8}/Back",
                "Pad8.Start": "SDL-{seat_pad_8}/Start",
                "Pad8.L1": "SDL-{seat_pad_8}/LeftShoulder",
                "Pad8.R1": "SDL-{seat_pad_8}/RightShoulder",
                "Pad8.L2": "SDL-{seat_pad_8}/+LeftTrigger",
                "Pad8.R2": "SDL-{seat_pad_8}/+RightTrigger",
                "Pad8.L3": "SDL-{seat_pad_8}/LeftStick",
                "Pad8.R3": "SDL-{seat_pad_8}/RightStick",
                "Pad8.LUp": "SDL-{seat_pad_8}/-LeftY",
                "Pad8.LDown": "SDL-{seat_pad_8}/+LeftY",
                "Pad8.LLeft": "SDL-{seat_pad_8}/-LeftX",
                "Pad8.LRight": "SDL-{seat_pad_8}/+LeftX",
                "Pad8.RUp": "SDL-{seat_pad_8}/-RightY",
                "Pad8.RDown": "SDL-{seat_pad_8}/+RightY",
                "Pad8.RLeft": "SDL-{seat_pad_8}/-RightX",
                "Pad8.RRight": "SDL-{seat_pad_8}/+RightX",
                "Pad8.LargeMotor": "SDL-{seat_pad_8}/LargeMotor",
                "Pad8.SmallMotor": "SDL-{seat_pad_8}/SmallMotor"
              }
            }
          ]
        }
      ],
      "apply": {
        "kind": "arg",
        "args": []
      }
    },
    {
      "id": "renderer",
      "label": "Renderer",
      "tab": "graphics",
      "type": "choice",
      "role": "renderer",
      "section": "Renderer",
      "restart": true,
      "default": -1,
      "values": [
        {
          "value": -1,
          "label": "Automatic"
        },
        {
          "value": 14,
          "label": "Vulkan"
        },
        {
          "value": 15,
          "label": "Direct3D 12 (Windows)",
          "os": [
            "windows"
          ]
        },
        {
          "value": 3,
          "label": "Direct3D 11 (Windows)",
          "os": [
            "windows"
          ]
        },
        {
          "value": 12,
          "label": "OpenGL"
        },
        {
          "value": 13,
          "label": "Software (slow, most accurate)"
        }
      ],
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PCSX2/inis/PCSX2.ini",
        "format": "ini",
        "key": "EmuCore/GS.Renderer"
      }
    },
    {
      "id": "resolution",
      "label": "Internal resolution",
      "tab": "graphics",
      "type": "choice",
      "role": "internal_resolution",
      "section": "Resolution",
      "default": 1,
      "values": [
        {
          "value": 1,
          "label": "Native (480p)"
        },
        {
          "value": 2,
          "label": "2× (for 720p)"
        },
        {
          "value": 3,
          "label": "3× (for 1080p)"
        },
        {
          "value": 4,
          "label": "4× (for 1440p)"
        },
        {
          "value": 5,
          "label": "5× (1800p)"
        },
        {
          "value": 6,
          "label": "6× (for 4K)"
        },
        {
          "value": 8,
          "label": "8× (for 5K)"
        }
      ],
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PCSX2/inis/PCSX2.ini",
        "format": "ini",
        "key": "EmuCore/GS.upscale_multiplier"
      }
    },
    {
      "id": "fxaa",
      "label": "Anti-aliasing (FXAA)",
      "tab": "graphics",
      "type": "toggle",
      "role": "anti_aliasing",
      "section": "Resolution",
      "default": false,
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PCSX2/inis/PCSX2.ini",
        "format": "ini",
        "key": "EmuCore/GS.fxaa",
        "on": "true",
        "off": "false"
      }
    },
    {
      "id": "anisotropy",
      "label": "Anisotropic filtering",
      "tab": "graphics",
      "type": "choice",
      "role": "anisotropic",
      "section": "Image quality",
      "default": 0,
      "values": [
        {
          "value": 0,
          "label": "Off"
        },
        {
          "value": 2,
          "label": "2×"
        },
        {
          "value": 4,
          "label": "4×"
        },
        {
          "value": 8,
          "label": "8×"
        },
        {
          "value": 16,
          "label": "16×"
        }
      ],
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PCSX2/inis/PCSX2.ini",
        "format": "ini",
        "key": "EmuCore/GS.MaxAnisotropy"
      }
    },
    {
      "id": "texture_filter",
      "label": "Texture smoothing",
      "tab": "graphics",
      "type": "choice",
      "role": "enhancement",
      "section": "Image quality",
      "default": 2,
      "values": [
        {
          "value": 2,
          "label": "As the game sets it (bilinear)"
        },
        {
          "value": 0,
          "label": "Nearest"
        },
        {
          "value": 1,
          "label": "Bilinear everywhere"
        },
        {
          "value": 3,
          "label": "Bilinear, not on 2D sprites"
        }
      ],
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PCSX2/inis/PCSX2.ini",
        "format": "ini",
        "key": "EmuCore/GS.filter"
      }
    },
    {
      "id": "widescreen",
      "label": "Widescreen patches",
      "tab": "graphics",
      "type": "toggle",
      "role": "aspect",
      "section": "Display",
      "description": "Uses a widescreen patch for the game when the emulator has one; other games stay 4:3.",
      "default": false,
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PCSX2/inis/PCSX2.ini",
        "format": "ini",
        "key": "EmuCore.EnableWideScreenPatches",
        "on": "true",
        "off": "false"
      }
    },
    {
      "id": "aspect",
      "label": "Screen shape",
      "tab": "graphics",
      "type": "choice",
      "role": "aspect",
      "section": "Display",
      "default": "Auto 4:3/3:2",
      "values": [
        {
          "value": "Auto 4:3/3:2",
          "label": "The game’s own"
        },
        {
          "value": "4:3",
          "label": "4:3"
        },
        {
          "value": "16:9",
          "label": "16:9"
        },
        {
          "value": "Stretch",
          "label": "Stretch to fill"
        }
      ],
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PCSX2/inis/PCSX2.ini",
        "format": "ini",
        "key": "EmuCore/GS.AspectRatio"
      }
    },
    {
      "id": "vsync",
      "label": "V-Sync",
      "tab": "graphics",
      "type": "toggle",
      "role": "vsync",
      "section": "Display",
      "default": false,
      "apply": {
        "kind": "config_edit",
        "file": "{config}/PCSX2/inis/PCSX2.ini",
        "format": "ini",
        "key": "EmuCore/GS.VsyncEnable",
        "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}/PCSX2/inis/PCSX2.ini",
        "format": "ini",
        "key": "SPU2/Output.StandardVolume"
      }
    }
  ],
  "presets": [
    {
      "id": "performance",
      "label": "Performance",
      "description": "Native resolution, no extras.",
      "values": {
        "resolution": 1,
        "anisotropy": 0,
        "fxaa": false
      }
    },
    {
      "id": "balanced",
      "label": "Balanced",
      "description": "Sharper 3D for a 720p screen, with anisotropic filtering.",
      "values": {
        "resolution": 2,
        "anisotropy": 4,
        "fxaa": false
      }
    },
    {
      "id": "quality",
      "label": "Quality",
      "description": "Sharp 3D for a 1080p screen, with full anisotropic filtering.",
      "values": {
        "resolution": 3,
        "anisotropy": 16,
        "fxaa": false
      }
    }
  ],
  "auto": {
    "renderer": -1
  },
  "unsupported": {
    "netplay": "The emulator has no online play.",
    "mods": "Texture packs go in a folder named after the game’s serial number, which Kouch can’t read from a disc image yet.",
    "motion": "The console’s pads had no motion sensors."
  },
  "platforms": {
    "windows": {
      "launch": {
        "kind": "exe",
        "path": "pcsx2-qt.exe"
      },
      "source": {
        "kind": "github_release",
        "repo": "PCSX2/pcsx2",
        "asset": "pcsx2-v*-windows-x64-Qt.7z",
        "url": null,
        "sha256": null,
        "install_subdir": null,
        "executable": "pcsx2-qt.exe",
        "auto_update": false,
        "feed": null
      }
    },
    "linux": {
      "launch": {
        "kind": "exe",
        "path": "PCSX2.AppImage"
      },
      "source": {
        "kind": "github_release",
        "repo": "PCSX2/pcsx2",
        "asset": "pcsx2-v*-linux-appimage-x64-Qt.AppImage",
        "url": null,
        "sha256": null,
        "install_subdir": null,
        "executable": "PCSX2.AppImage",
        "auto_update": false,
        "feed": null
      },
      "env": {
        "XDG_CONFIG_HOME": "{user_data}/xdg-config",
        "XDG_DATA_HOME": "{user_data}/xdg-data",
        "XDG_CACHE_HOME": "{user_data}/xdg-cache"
      }
    }
  }
}
