Skip to content

Commit

Permalink
New Thumbnail Contrib How-To Guide, and phrasing/format revisions (#1015
Browse files Browse the repository at this point in the history
)

* Revised thumbnails user guide

- Clarified phrasing on custom thumbnails and naming, e.g. matching thumbnail to displayed game name rather than "according to RA naming convention" etc per se.
- Combined some redundancy wording and examples of thumbnail subfolder setup. 
- Minor bold/format changes to Thumbnail Update methods

* Thumbnail Contribution How To, edits to roms-playlists-thumbnails.md

- New guide section added for how users can contribute thumbnails to the github repository. (We probably want to split "Thumbnails" into separate page from Playlists at this point.) The guide has been tested and iterated and proven outside of this docs/github update (on reddit) and has created new thumbnail contributors.
- Custom Thumbnail section: more revisions and re-phrasings and hierarchy and elegance (I hope) for readers
- Named Logos section, revised wording so that the meaning is clearer, and clarified format references/alignment to thumbnail guide

* WIP updates to Thumbnail Contrib Guide

WIP updates to Thumbnail Contribution guide and also phrasing about custom thumbnails and custom icon/logos.

* Update roms-playlists-thumbnails.md

Anchor link testing

* WIP revisions to Custom Thumbnails & Contrib guide

WIP revisions to Custom Thumbnails & Contrib guide

* WIP edits to new Contrib Guide

and more edits to Custom Thumbnails etc phrasing, bullets, etc.

* 2 word edit to roms-playlists-thumbnails.md

Tiny wording edit

* Editing Contribution Guide

Also more small revisions to Custom Thumbnails

* finalized Contribute Guide How-To

And more small edits.  Except now I'm wondering about a disaster: is markdown viewable on the final libretro docs page/site, or is the markdown only correctly viewable on github itself?  Hopefully what I saw is a false alarm.
  • Loading branch information
OctopusButtons authored Jan 3, 2025
1 parent f605712 commit 6b2c301
Showing 1 changed file with 85 additions and 20 deletions.
105 changes: 85 additions & 20 deletions docs/guides/roms-playlists-thumbnails.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,14 @@ RetroArch can display three types of thumbnails (small still pictures) for games
Most menu drivers support displaying two pictures when browsing the playlist. Displayed thumbnail types can be configured system-wide and also per playlist.
All menu drivers can display fullscreen thumbnails when pressing Start, and Y button (left) can be used to cycle between available pictures.

Thumbnails can be retrieved multiple ways:
Thumbnails can be retrieved in multiple ways:

* Playlist thumbnail downloader (recommended): under Online Updater menu, all available thumbnails can be downloaded for a playlist. RetroArch will connect to http://thumbnails.libretro.com.
* Individual thumbnail downloader: there is a Download Thumbnails option for each entry in playlists. For RetroArch version 1.17.0 or later, you may hit download up to 3 times to try the flexible matches.
* On-demand thumbnail downloader: if the respective option is enabled, RetroArch will try to download each thumbnail as the playlist is browsed. For RetroArch versions 1.17.0 or later, you may try flicking back and forth between entries up to 3 times to try the flexible matches. By default, on-demand thumbnail downloader does not try to fetch thumbnails based on ROM name, enable Settings / Playlist / Use filenames for thumbnail matching options for that.
* **Playlist thumbnail downloader (recommended)**: under Online Updater menu, all available thumbnails can be downloaded for a playlist. RetroArch will connect to http://thumbnails.libretro.com and retrieve the available thumbnail.
- _WARNING_: the Playlist Thumbnails Updater process will over-write [custom thumbnails](#custom-thumbnails) set by the user for any game that has an associated thumbnail on the server.
* **Individual thumbnail downloader**: there is a Download Thumbnails option for each entry in playlists. For RetroArch version 1.17.0 or later, you may hit download up to 3 times to try the flexible matches.
* **On-demand thumbnail downloader**: if the respective option is enabled, RetroArch will try to download each thumbnail as the playlist is browsed. For RetroArch versions 1.17.0 or later, you may try flicking back and forth between entries up to 3 times to try the flexible matches. By default, on-demand thumbnail downloader does not try to fetch thumbnails based on ROM name, enable Settings / Playlist / Use filenames for thumbnail matching options for that.

Thumbnail packs are no longer available, use one of the above methods, or see Custom thumbnails section below.
Thumbnail packs are no longer available, use one of the above methods, or see [Custom Thumbnails](#custom-thumbnails) section below.

## Playlist File Format Details

Expand Down Expand Up @@ -173,16 +174,34 @@ Since playlists are managed in text-only JSON format, there are a few third-part


## Custom thumbnails
Users who wish to use their own thumbnails can do so by naming PNG image files according to the RetroArch naming convention. In RetroArch versions later than 1.19.1, other image formats can be also enabled (jpg, bmp, tga).
Users can set a custom thumbnail (i.e. a thumbnail that is different from the one automatically provided by RetroArch) by following the process below.

### Thumbnail paths and filenames
Thumbnails should be stored in subfolders within the configured RetroArch `thumbnails` directory within a subfolder named exactly the same as the playlist, except without `.lpl` at the end. **Example: If your playlist is named `Atari - 2600.lpl`, then your Atari 2600 root thumbnail folder should be called `thumbnails/Atari - 2600/`.**
!!! Terminology Note: "Game Name"
The term _Game Name_ refers to the name displayed [within a playlist in RetroArch](#retroarch-playlist-scanner), _not_ to the filename of the underlying file on the computer or device. _Game Name_ in this document is synonymous with playlist item label, playlist entry, content name, game title.

Within this root thumbnail folder called `Atari - 2600`, you should then create subfolders named `Named_Boxarts`, `Named_Snaps`, or `Named_Titles` for boxart/cover art, in-game snapshots, and title screens, respectively.
- __File & Filename__. Name a PNG image file with a base filename that matches a game title displayed in a playlist. _Example_: if the game name is `Q-Bert's Qubes (USA)`, the intended image file must be named `Q-Bert's Qubes (USA).png` _(See below for additional flexible name matching options.)_
- __Location.__ Place the PNG in the [correct folder](#thumbnail-folder-paths) for the relevant playlist.
- __Use a compatible image type.__ In RetroArch versions later than 1.19.1, image formats other than PNG can be enabled (jpg, bmp, tga).
- __Replace invalid characters.__ The thumbnail's base filename should exactly match the game's title displayed in the playlist with an important exception. The characters `` &*/:`<>?\| `` in playlisted game titles must be replaced with `_` in the corresponding thumbnail filename.

The thumbnail filename should exactly match the game's title as listed in the playlist with an important exception. **The following characters in playlist titles must be replaced with `_` in the corresponding thumbnail filename:** `` &*/:`<>?\| ``
**Flexible name matching.** RetroArch versions 1.17.0 or later will attempt up to 3 different match techniques to associate a playlist item with a [properly located](#thumbnail-folder-paths) local thumbnail image file, in the following order:

**Example: If your content is named `Q*bert's Qubes (USA)` in the playlist, then its thumbnails should be named `Q_bert's Qubes (USA).png` and stored at these paths:**
1. __ROM file name <-> .png file name match__. A ROM file `Q-Bert's Qubes (USA) (1983).a26` would receive the thumbnail `Q-Bert's Qubes (USA) (1983).png` if it exists, regardless of how the game name appears in the RetroArch interface.
2. __Game name <-> .png file name match__. `Q*Bert's Qubes (USA)` in a playlist would receive the thumbnail `Q_Bert's Qubes (USA).png` if it exists. `*` is an invalid character and must be replaced with `_` in the image filename.
3. __Short game name <-> .png file name match__. RetroArch looks for a local thumbnail named after a shortened form of the game name ignoring all text starting at the first round bracket, in other words ignoring informational tags like Region etc. `Q-Bert's Qubes (USA) (1983) (Parker Brothers) [h]` in a playlist would receive `Q-Bert's Qubes.png` if that local image file exists.

### Thumbnail folder paths
Thumbnail image files must be stored in subfolders according to this structure:

- `thumbnails` directory within Retroarch folder (or in different location configured by user via Settings > Directory > Thumbnails)
- `Playlist Name` folder with the exact same name as the playlist, except without `.lpl` at the end. For example, `Atari - 2600`
- `Named_Boxarts` subfolder for boxart/cover art
- `Named_Snaps` subfolder for in-game snapshots
- `Named_Titles` subfolder for in-game introductory title screens

**Example** of a Windows path to a correctly set boxart folder: `RetroArch-Win64\thumbnails\Atari - 2600\Named_Boxarts`

**Example** of correct thumbnail file setup for content named `Q*bert's Qubes (USA)` in a default Atari 2600 playlist:

```
thumbnails/
Expand All @@ -194,12 +213,58 @@ The thumbnail filename should exactly match the game's title as listed in the pl
Named_Titles/
Q_bert's Qubes (USA).png
```
For RetroArch versions 1.17.0 or later, flexible naming is applied, up to 3 options are tried for each playlist entry, in the following order:
- ROM file name with .png extension: `Q-Bert's Qubes (1983)(Parker Bros)[b].png`
- Database entry / playlist label with .png extension, as explained above: `Q_Bert's Qubes (USA).png`
- Short name: same as previous, but only up to first round bracket: `Q_Bert's Qubes.png`

### Named logos
In RetroArch versions later than 1.19.1, there is an option for the XMB menu driver to display custom images in the playlist, instead of the default content icon, see [this example](https://github.com/libretro/RetroArch/pull/16758#issuecomment-2211771227). For this to work, create a folder called `Named_Logos` in the same structure as above, and put the logo images there using the same file name convention as above.

Logo support is only possible with XMB menu driver, and the online thumbnail repositories do not contain logo collections.
_Note the replacement of the playlist game name's `*` with `_` in the filenames, in accordance with invalid characters described above._

## Contributing Thumbnails: How To
Thumbnails (along with [documentation](https://docs.libretro.com/meta/how-to-contribute/)) are an area where users who are not experienced in programming can contribute to RetroArch and in a way that helps all users. If you are interested in:

- adding a thumbnail that you see is missing
- correcting a thumbnail that is inaccurate or mistaken
- replacing an existing thumbnail with a more representative or more aesthetic image

follow the steps below.

### Overview
1. Make an account on github.com
2. "Fork" (copy) a [libretro thumbnail repository](https://github.com/libretro-thumbnails/libretro-thumbnails) to your own working area in github
3. Make your image file changes to your copy of the project (aka your fork), while following [libretro thumbnail rules](https://github.com/libretro-thumbnails/libretro-thumbnails/blob/master/README.md) and the detailed guidelines below
4. Create a "Pull Request" to request that the official project members review your proposed changes in order to accept it into RetroArch

### Detailed Steps

- __Fork the repository.__ Visit the github.com [libretro thumbnail repository](https://github.com/libretro-thumbnails/libretro-thumbnails) directory that you want to contribute to and click the fork button. You must fork it at the level of specific console. The Fork button won't appear if you're viewing a lower level folder in the respository like "boxart" or "snaps.”
- _Example_. If you are doing GBA thumbnail work you should fork
[Nintendo_-_Game_Boy_Advance](https://github.com/libretro-thumbnails/Nintendo_-_Game_Boy_Advance/).
- **Why "Fork" your own**? Every part RetroArch's code and materials are open and accessible on github for input from any public volunteer (via Pull Request), but only official admins have direct edit access. Forking means copying your own copy of the project to freely draft changes in your own separate work area. Later you’ll send your proposed changes to the official project.
- _Warning_: You must visit and fork the _current_ github project for the libretro thumbnail repository, for example [this one for SNES](https://github.com/libretro-thumbnails/Nintendo_-_Super_Nintendo_Entertainment_System), not to be confused with the similar-looking [archived version](https://github.com/libretro/libretro-thumbnails) which is inactive.
- Correct: https://github.com/libretro-thumbnails/
- Incorrect: https://github.com/libretro/libretro-thumbnails
- __Add / Upload your new image file.__ When viewing a specific thumbnail type folder (e.g. Named_boxarts, Named_titles, Named_snaps) within *your fork* of the thumbnails repository, click the pulldown button (near top right) that says **Add file** to see 2 options:
- +Create new File
- Upload File.
- __Choose "Upload File"__. Select your new chosen image file. In this stage you are uploading to your fork/branch of the project.
- __Follow all guidelines for a proper contribution.__
- Your choice of image file should meet the libretro thumbnail [rules in the ReadMe](https://github.com/libretro-thumbnails/libretro-thumbnails/blob/master/README.md), e.g. width scaled down to 512px.
- For snaps (in-game screenshots), choose a good clear artful image that shows the art, spirit, or action of the game in normal or ideal gameplay. For examples of well-chosen well-composed in-game screenshots, see the back-of-box images printed on officially published games.
- Name your image file correctly.
- If replacing an existing image, name your new image file exactly as the previous one to guarantee that it will be matched to the relevant game name in RetroArch. (Unless your contribution is to correct an erroneous filename that doesn't match the game name database.)
- If uploading a new thumbnail that has no prior existing version, research the naming conventions of libretro and how the game is named in databases. Name the image file according to the game name that RetroArch assigns in the playlist.
- Use the correct path. Choose the correct console system folder and thumbnail type folder in the repository.
- __Commit.__ The "Commit" button will save your change to your copy of the repository. You should generally commit to your own _master_.
- __Pull Request (PR)__. Look for the button or option for a Pull Request when you Commit, though you may wait until you have finalized multiple changes (commits) and then include them all in a single PR. A Pull Request means sending a request to the official members to take your contribution (i.e. merge your fork) into the RetroArch repository. Admins will review your proposed changes and decide whether to accept it. You will eventually see a confirmation that it was approved or a discussion message if changes are needed. It may take time (even weeks or months) before an admin is able to examine the request, so please be patient.
- __Verify that your Pull Request is active and correct.__ For example, if you made a Pull Request to contribute a Gameboy thumbnail then you can [view the request publicly listed at the official repository](https://github.com/libretro-thumbnails/Nintendo_-_Game_Boy/pulls).
- _Warning_: It is possible to accidentally send a Pull Request to yourself if you committed your changes to your sub-branch instead of your own _master_. If needed, approve your PR to yourself to merge your sub-branch changes to your master, then do a Pull Request from your master to the official Libretro master project. For clarity on github.com, you can hover on any abbreviated branch path label to see a pop-up of the full path label.

__About "Syncing."__ Contribution work involves changing your copy of the project while other people may be changing the official repository _after_ you created your fork. Github provides options to keep both your copy ("downstream") and the official repository ("upstream") up-to-date with ongoing changes. If you make multiple changes within your fork, you can use the **Contribute button** > Open Pull Request to send all your changes as one PR. You can use the __Sync button__ button to update your fork with other people’s changes that have happened upstream.

### The Thumbnail Server

RetroArch retrieves thumbnails from a server (https://thumbnails.libretro.com/) that is updated periodically with imports from the Libretro thumbnail repository on github. After a pull request is approved for a contribution, some time may pass before the updates are sent to the server. The final server update must occur before users will see new image contributions in RetroArch playlists.

## Custom icons/logos for playlist items
RetroArch versions later than 1.19.1 include an option for the XMB menu driver to display custom per-game icons/logos in the playlist, instead of the default content icon, see [this example](https://github.com/libretro/RetroArch/pull/16758#issuecomment-2211771227). The required file format and subfolder structure follows the same pattern as [custom thumbnails](#custom-thumbnails):

- Create a folder called `Named_Logos` alongside the `Named_Boxarts` thumbnail subfolder for the intended playlist
- Put the logo image files there with base filenames that match the associated game's displayed name in the RetroArch playlist.

**Limitations.** Logo support is only possible with XMB menu driver. The online thumbnail repositories do not contain logo collections.

0 comments on commit 6b2c301

Please sign in to comment.