RetroDECK icon indicating copy to clipboard operation
RetroDECK copied to clipboard

Create a list of emulators with available options and properties

Open WallK opened this issue 1 year ago • 6 comments

List should have emulator name, available options and properties Proposition -- YAML format (or JSON)

Proposed example:

yuzu:
  name: YUZU
  options:
  - option1: true
  - option2: false
  - resettable: true
  properties:
  - standalone: true
  - property2: false
mgba:
  name: mGBA
  options:
  - option1: true
  - option2: false
  - resettable: true
  properties:
  - standalone: false
  - property2: true

or

{
  "yuzu": {
    "name": "YUZU",
    "options": [
      {
        "option1": true
      },
      {
        "option2": false
      },
      {
        "resettable": true
      }
    ],
    "properties": [
      {
        "standalone": true
      },
      {
        "property2": false
      }
    ]
  },
  "mgba": {
    "name": "mGBA",
    "options": [
      {
        "option1": true
      },
      {
        "option2": false
      },
      {
        "resettable": true
      }
    ],
    "properties": [
      {
        "standalone": false
      },
      {
        "property2": true
      }
    ]
  }
}

WallK avatar Jan 12 '24 07:01 WallK

We should add libretro as a master group as many configs are in common (we can override them by core):

yuzu:
  pretty_name: YUZU
  options:
  - option1: true
  - option2: false
  - resettable: true
  properties:
  - libretro: false
  - property2: false
  
retroarch:
  pretty_name: RetroArch
  options:
  - load_state: true
  properties:
  - libretro: true
  - property2: true
  
dosbox_pure_libretro:
  pretty_name: DOSBox PURE
  properties:
  - libretro: true	# this inherit all the options from libretro as this is true
  options:
  - property2: false	# this overrides property2 for this core only

Pretty names can be found in this file, but we can decide to deprecate it and merge it here, but we would need to edit the function to read it.

XargonWan avatar Jan 12 '24 08:01 XargonWan

List of options is extensible Format is not even close to final

We should have two pretty names, one is for using in the FE verbatim, second (shorter one) to use for string creation For example "Reset the" + description + name + "to default settings" becomes "Reset the Wii U emulator Cemu to default settings"

WallK avatar Jan 12 '24 08:01 WallK

List of options is extensible Format is not even close to final

We should have two pretty names, one is for using in the FE verbatim, second (shorter one) to use for string creation For example "Reset the" + description + name + "to default settings" becomes "Reset the Wii U emulator Cemu to default settings"

Agreed, but we can say that the id is the dosbox_pure_libretro pretty name can be DOSBox PURE and a description field can be added like Cool DOS Emulator that does things.

dosbox_pure_libretro:
  pretty_name: DOSBox PURE
  description: Cool DOS Emulator that does things
  properties:
  - libretro: true	# this inherit all the options from libretro as this is true
  options:
  - property2: false	# this overrides property2 for this core only

For example "Reset the" + description + name + "to default settings" becomes "Reset the Wii U emulator Cemu to default settings"

Code be like reset id:

reset dosbox_pure_libretro

XargonWan avatar Jan 12 '24 08:01 XargonWan

A we may add more parents in the future, such as ARES and MAME (SA) we can edit the list like this:

yuzu:
  pretty_name: YUZU
  options:
  - option1: true
  - option2: false
  - resettable: true
  properties:
  - property2: false
  
retroarch:
  pretty_name: RetroArch
  options:
  - load_state: true
  properties:
  - property2: true
  
dosbox_pure_libretro:
  pretty_name: DOSBox PURE
  parent: retroarch       # I removed the libretro bool and I added the parent
  options:
  - property2: false	# this overrides property2 for this core only

XargonWan avatar Jan 12 '24 08:01 XargonWan

Parents could be a part of a structure, not a property, right? Also, I'm not sure I understood the names and description proposal (: Ideally, you could make couple of entries so we could see an example

WallK avatar Jan 12 '24 08:01 WallK

Parents could be a part of a structure, not a property, right?

You mean like this?

yuzu:
  pretty_name: YUZU
  options:
  - option1: true
  - option2: false
  - resettable: true
  properties:
  - property2: false
  
retroarch:
  pretty_name: RetroArch
  options:
  - load_state: true
  properties:
  - property2: true
  cores:
    dosbox_pure:
      pretty_name: DOSBox PURE
      options:
      - property2: false	# this overrides property2 for this core only

Also, I'm not sure I understood the names and description proposal (:

When you're calling a function you call the emulator by id and not by pretty_name, but for the frontend you don't use the id but pretty name + description as you saud before.

XargonWan avatar Jan 12 '24 09:01 XargonWan