fuuuuck ton of stuff

This commit is contained in:
Georges-Antoine Assi
2025-02-22 19:37:41 -05:00
parent bd9d2ffbc3
commit b4512e9d19
43 changed files with 1561 additions and 1032 deletions
+1
View File
@@ -1 +1,2 @@
.DS_Store
.cache
+134 -1
View File
@@ -1,5 +1,138 @@
site_name: RomM Docs
docs_dir: romm.wiki
site_url: https://wiki.romma.app/
site_author: RomM Team
site_description: Your beautiful, powerful, self-hosted rom manager
repo_url: "https://github.com/rommapp/wiki"
repo_name: rommapp/wiki
theme:
name: material
name: material
logo: resources/romm/logo.png
features:
- navigation.instant
- navigation.instant.prefetch
- navigation.footer
- navigation.indexes
- navigation.tracking
- navigation.top
- search.suggest
- search.highlight
- content.tabs.link
- content.code.annotation
- content.code.copy
- content.action.edit
- content.action.view
language: en
palette:
# Dark mode
- scheme: slate
toggle:
icon: material/toggle-switch
name: Switch to light mode
primary: custom
accent: custom
# Light mode
- scheme: default
toggle:
icon: material/toggle-switch-off-outline
name: Switch to dark mode
primary: custom
accent: custom
plugins:
- search
- mkdocs-video
- social:
cards_layout_options:
font_family: Roboto
background_color: "#371f69"
color: "#ede5f8"
logo: romm.wiki/assets/images/romm-logo.png
title: RomM Docs
description: Your beautiful, powerful, self-hosted rom manager
- glightbox:
skip_classes:
- skip-lightbox
- markdownextradata: {}
- literate-nav:
nav_file: Navigation.md
- git-revision-date-localized:
enable_creation_date: true
type: timeago
# - git-committers:
# repository: MisterCalvin/romm-mkdocs
# branch: develop
# exclude_committers:
# - "web-flow" # GitHub web UI edits
# token: !ENV GITHUB_TOKEN
markdown_extensions:
- pymdownx.blocks.caption
- pymdownx.highlight:
anchor_linenums: true
- pymdownx.inlinehilite
# - pymdownx.snippets:
# base_path:
# - romm.wiki
# - docs/assets/snippets
# check_paths: true
- admonition
- pymdownx.arithmatex:
generic: true
- footnotes
- pymdownx.details
- pymdownx.superfences
- pymdownx.mark
- attr_list
- pymdownx.emoji:
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg
copyright: Copyright © 2025 RomM Team
extra:
social:
- icon: fontawesome/brands/github
link: https://github.com/rommapp/romm
name: rommapp/romm
- icon: fontawesome/brands/discord
link: https://discord.com/invite/RGPJHNMMwJ
name: RomM Discord Channel
- icon: fontawesome/solid/globe
link: https://romm.app/
name: romm.app
analytics:
provider: google
property: !ENV GOOGLE_PROPERTY_ID
feedback:
title: Was this page helpful?
ratings:
- icon: material/emoticon-happy-outline
name: This page was helpful
data: 1
note: >-
Thanks for your feedback!
- icon: material/emoticon-sad-outline
name: This page could be improved
data: 0
note: >-
Thanks for your feedback!
env:
branch: !ENV [GITHUB_REF_NAME, "main"]
commit_sha: !ENV [commit_sha, ""] # Will be empty on main, show SHA on develop
username: !ENV GITHUB_REPOSITORY_OWNER
repo_name: !ENV GITHUB_REPOSITORY
#version:
#provider: mike
#default: latest
#pre_release: true
extra_css:
- resources/css/extra.css
watch:
- romm.wiki
- romm.wiki/resources
View File
+7
View File
@@ -5,7 +5,14 @@ description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"cairosvg>=2.7.1",
"mike>=2.1.3",
"mkdocs>=1.6.1",
"mkdocs-git-revision-date-localized-plugin>=1.3.0",
"mkdocs-glightbox>=0.4.0",
"mkdocs-literate-nav>=0.6.1",
"mkdocs-markdownextradata-plugin>=0.2.6",
"mkdocs-material>=9.6.5",
"mkdocs-video>=1.5.0",
"pillow>=11.1.0",
]
-52
View File
@@ -1,52 +0,0 @@
[EmulatorJS](https://emulatorjs.org/) is a web-based emulator for various system; that is, it allows you to run old games in your web browser. It's based on [Emscripten](https://emscripten.org/), which is a toolchain for compiling C and C++ code to WebAssembly.
> [!CAUTION]
> Due to a [change by Apple in iOS 18.2](https://bugs.webkit.org/show_bug.cgi?id=284752), emulation is severely limited, and likely non-functional, on iOS devices.
> [!CAUTION]
> PSP emulation with the PPSSPP core requires [special setup with a reverse proxy](https://emulatorjs.org/docs/options#ejs_threads), or launching Chrome browser with the `--disable-web-security` and `--enable-features=SharedArrayBuffer` flags, which WE STRONGLY DISCOURAGE as it disables important security features.
> [!WARNING]
> Emulation is a complex and resource-intensive process. As such, it may not work well in all browser, especially older or less powerful ones. If you're having trouble running a game, try using a different browser or device.
### Loading saves and states
Our integration with EmulatorJS automates the process of loading and saving save files and save states. Before starting the game, select a save and/or state file to load (if one is available). Anytime you save the game (or create a save state), the save and state files stored with RomM will be updated, so there's no need to manually download or upload them.
### Supported systems
Note that only the following systems are currently supported:
* 3DO
* Amiga
* Arcade/MAME
* Atari 2600
* Atari 5200
* Atari 7800
* Atari Jaguar
* Atari Lynx
* Commodore 64
* ColecoVision
* Neo Geo Pocket
* Neo Geo Pocket Color
* Nintendo 64
* Nintendo Entertainment System (NES)
* Nintendo Family Computer (Famicom)
* Nintendo DS
* Game Boy
* Game Boy Color
* Game Boy Advance
* PC-FX
* PlayStation (PS)
* Sega 32X
* Sega CD
* Sega Game Gear
* Sega Master System
* Sega Genesis/Megadrive
* Sega Saturn
* Super Nintendo Entertainment System (SNES)
* Super Famicom
* TurboGraphx-16/PC Engine
* Virtual Boy
* WonderSwan
* WonderSwan Color
-73
View File
@@ -1,73 +0,0 @@
This is a complete list of available environment variables; required variables are marked with a `✓`.
> [!TIP]
> You can also set environment variables with a `_FILE` suffix, which will load the contents of the file specified in the variable into the variable without the suffix. For example, setting `ROMM_AUTH_SECRET_KEY_FILE=/run/secrets/romm_auth_secret_key` and creating a file with the secret key at the specified path will set `ROMM_AUTH_SECRET_KEY` to the contents of the file. [Learn more.](https://docs.docker.com/compose/how-tos/use-secrets/)
## Application settings
|Variable|Description|Required|Default|
|---|---|:---:|---|
|ROMM_AUTH_SECRET_KEY|Generate a key with `openssl rand -hex 32`|✓||
|DISABLE_CSRF_PROTECTION|Disables [CSRF protection](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html) (not recommended)||`false`|
|DISABLE_DOWNLOAD_ENDPOINT_AUTH|Disable auth on download endpoint (WebRcade, Tinfoil)||`false`|
|DISABLE_USERPASS_LOGIN|Disables login with username and password (when using OIDC)||`false`|
|UPLOAD_TIMEOUT|Timeout for file uploads (in seconds)||`600`|
|SCAN_TIMEOUT|Timeout for the background scan/rescan tasks (in seconds)||`14400`|
|DISABLE_EMULATOR_JS|Disables playing in browser with [EmulatorJS](https://github.com/rommapp/romm/wiki/EmulatorJS-Player)||`false`|
|DISABLE_RUFFLE_RS|Disables playing flash games with [RuffleRS](https://github.com/rommapp/romm/wiki/RuffleRS-Player)||`false`|
|TZ|Sets the timezone||`UTC`|
|GUNICORN_WORKERS|Number of processes running the app||`2`|
|ROMM_BASE_PATH|Base folder path for library, resources and assets||`/romm`|
|LOGLEVEL|Logging level for the app||`INFO`|
|FORCE_COLOR|Forces color output||`false`|
|NO_COLOR|Disables color output||`false`|
## Dependencies
|Variable|Description|Required|Default|
|---|---|:---:|---|
|DB_HOST|Host name of database instance|✓|`127.0.0.1`|
|DB_PORT|Port number of database instance||`3306`|
|DB_NAME|Should match MYSQL_DATABASE in mariadb||`romm`|
|DB_USER|Database username (in MariaDB, should match MARIADB_USER)|✓||
|DB_PASSWD|Database password (in MariaDB, should match MARIADB_PASSWORD)|✓||
|ROMM_DB_DRIVER|Database driver to use (options: `mariadb`, `mysql`, `postgresql`)||`mariadb`|
|REDIS_HOST|Host name of Redis/Valkey instance||`127.0.0.1`|
|REDIS_PORT|Port number of Redis/Valkey instance||`6379`|
|REDIS_USERNAME|Username for Redis/Valkey instance|||
|REDIS_PASSWORD|Password for Redis/Valkey instance|||
|REDIS_DB|Database number for Redis/Valkey instance||`0`|
|REDIS_SSL|Enable SSL for Redis instance||`false`|
|SENTRY_DSN|DSN for Sentry error tracking|||
## Metadata providers
|Variable|Description|Required|Default|
|---|---|:---:|---|
|IGDB_CLIENT_ID|Client ID for IGDB API|||
|IGDB_CLIENT_SECRET|Client secret for IGDB API|||
|MOBYGAMES_API_KEY|Mobygames secret API key|||
|STEAMGRIDDB_API_KEY|SteamGridDB secret API key|||
## Authentication
|Variable|Description|Required|Default|
|---|---|:---:|---|
|OIDC_ENABLED|Enable OpenID Connect (OIDC) authentication||`false`|
|OIDC_PROVIDER|Name of the OIDC provider in use|||
|OIDC_CLIENT_ID|Client ID for OIDC authentication|||
|OIDC_CLIENT_SECRET|Client secret for OIDC authentication|||
|OIDC_REDIRECT_URI|Absolute redirect URI for OIDC authentication|||
|OIDC_SERVER_APPLICATION_URL|Absolute URL of the OIDC server application|||
|OIDC_TLS_CACERTFILE|Path to a file containing trusted CA certificates|||
## Background tasks
|Variable|Description|Required|Default|
|---|---|:---:|---|
|ENABLE_RESCAN_ON_FILESYSTEM_CHANGE|Enable rescanning of library when filesystem changes||`false`|
|RESCAN_ON_FILESYSTEM_CHANGE_DELAY|Delay in minutes before rescanning library when filesystem changes||`5`|
|ENABLE_SCHEDULED_RESCAN|Enable scheduled rescanning of library||`false`|
|SCHEDULED_RESCAN_CRON|Cron expression for scheduled rescanning||`"0 3 * * *"`|
|ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDB|Enable scheduled updating of Switch TitleDB index||`false`|
|SCHEDULED_UPDATE_SWITCH_TITLEDB_CRON|Cron expression for scheduled updating of Switch TitleDB||`"0 4 * * *"`|
@@ -0,0 +1,73 @@
This is a complete list of available environment variables; required variables are marked with a `✓`.
!!! tip
You can also set environment variables with a `_FILE` suffix, which will load the contents of the file specified in the variable into the variable without the suffix. For example, setting `ROMM_AUTH_SECRET_KEY_FILE=/run/secrets/romm_auth_secret_key` and creating a file with the secret key at the specified path will set `ROMM_AUTH_SECRET_KEY` to the contents of the file. [Learn more.](https://docs.docker.com/compose/how-tos/use-secrets/)
## Application settings
| Variable | Description | Required | Default |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | :------: | ------- |
| ROMM_AUTH_SECRET_KEY | Generate a key with `openssl rand -hex 32` | ✓ | |
| DISABLE_CSRF_PROTECTION | Disables [CSRF protection](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html) (not recommended) | | `false` |
| DISABLE_DOWNLOAD_ENDPOINT_AUTH | Disable auth on download endpoint (WebRcade, Tinfoil) | | `false` |
| DISABLE_USERPASS_LOGIN | Disables login with username and password (when using OIDC) | | `false` |
| UPLOAD_TIMEOUT | Timeout for file uploads (in seconds) | | `600` |
| SCAN_TIMEOUT | Timeout for the background scan/rescan tasks (in seconds) | | `14400` |
| DISABLE_EMULATOR_JS | Disables playing in browser with [EmulatorJS](https://github.com/rommapp/romm/wiki/EmulatorJS-Player) | | `false` |
| DISABLE_RUFFLE_RS | Disables playing flash games with [RuffleRS](https://github.com/rommapp/romm/wiki/RuffleRS-Player) | | `false` |
| TZ | Sets the timezone | | `UTC` |
| GUNICORN_WORKERS | Number of processes running the app | | `2` |
| ROMM_BASE_PATH | Base folder path for library, resources and assets | | `/romm` |
| LOGLEVEL | Logging level for the app | | `INFO` |
| FORCE_COLOR | Forces color output | | `false` |
| NO_COLOR | Disables color output | | `false` |
## Dependencies
| Variable | Description | Required | Default |
| -------------- | ------------------------------------------------------------------ | :------: | ----------- |
| DB_HOST | Host name of database instance | ✓ | `127.0.0.1` |
| DB_PORT | Port number of database instance | | `3306` |
| DB_NAME | Should match MYSQL_DATABASE in mariadb | | `romm` |
| DB_USER | Database username (in MariaDB, should match MARIADB_USER) | ✓ | |
| DB_PASSWD | Database password (in MariaDB, should match MARIADB_PASSWORD) | ✓ | |
| ROMM_DB_DRIVER | Database driver to use (options: `mariadb`, `mysql`, `postgresql`) | | `mariadb` |
| REDIS_HOST | Host name of Redis/Valkey instance | | `127.0.0.1` |
| REDIS_PORT | Port number of Redis/Valkey instance | | `6379` |
| REDIS_USERNAME | Username for Redis/Valkey instance | | |
| REDIS_PASSWORD | Password for Redis/Valkey instance | | |
| REDIS_DB | Database number for Redis/Valkey instance | | `0` |
| REDIS_SSL | Enable SSL for Redis instance | | `false` |
| SENTRY_DSN | DSN for Sentry error tracking | | |
## Metadata providers
| Variable | Description | Required | Default |
| ------------------- | -------------------------- | :------: | ------- |
| IGDB_CLIENT_ID | Client ID for IGDB API | | |
| IGDB_CLIENT_SECRET | Client secret for IGDB API | | |
| MOBYGAMES_API_KEY | Mobygames secret API key | | |
| STEAMGRIDDB_API_KEY | SteamGridDB secret API key | | |
## Authentication
| Variable | Description | Required | Default |
| --------------------------- | ------------------------------------------------- | :------: | ------- |
| OIDC_ENABLED | Enable OpenID Connect (OIDC) authentication | | `false` |
| OIDC_PROVIDER | Name of the OIDC provider in use | | |
| OIDC_CLIENT_ID | Client ID for OIDC authentication | | |
| OIDC_CLIENT_SECRET | Client secret for OIDC authentication | | |
| OIDC_REDIRECT_URI | Absolute redirect URI for OIDC authentication | | |
| OIDC_SERVER_APPLICATION_URL | Absolute URL of the OIDC server application | | |
| OIDC_TLS_CACERTFILE | Path to a file containing trusted CA certificates | | |
## Background tasks
| Variable | Description | Required | Default |
| -------------------------------------- | ------------------------------------------------------------------ | :------: | ------------- |
| ENABLE_RESCAN_ON_FILESYSTEM_CHANGE | Enable rescanning of library when filesystem changes | | `false` |
| RESCAN_ON_FILESYSTEM_CHANGE_DELAY | Delay in minutes before rescanning library when filesystem changes | | `5` |
| ENABLE_SCHEDULED_RESCAN | Enable scheduled rescanning of library | | `false` |
| SCHEDULED_RESCAN_CRON | Cron expression for scheduled rescanning | | `"0 3 * * *"` |
| ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDB | Enable scheduled updating of Switch TitleDB index | | `false` |
| SCHEDULED_UPDATE_SWITCH_TITLEDB_CRON | Cron expression for scheduled updating of Switch TitleDB | | `"0 4 * * *"` |
@@ -2,26 +2,26 @@
To access the IGDB API you'll need a Twitch account and a valid phone number for 2FA verification. Up-to-date instructions are available in the [IGDB API documentation](https://api-docs.igdb.com/#account-creation). When registering your application in the Twitch Developer Portal, fill out the form like so:
* Name: Something **unique or random** like `correct-horse-battery-staple` or `KVV8NDXMSRFJ2MRNPNRSL7GQT`
* OAuth Redirect URLs: `localhost`
* Category: `Application Integration`
* Client Type: `Confidential`
- Name: Something **unique or random** like `correct-horse-battery-staple` or `KVV8NDXMSRFJ2MRNPNRSL7GQT`
- OAuth Redirect URLs: `localhost`
- Category: `Application Integration`
- Client Type: `Confidential`
> [!IMPORTANT]
> **The name you pick has to be unique! Picking an existing name will fail silently, with no error messages. We recommend using `romm-<random hash>`, like `romm-3fca6fd7f94dea4a05d029f654c0c44b`**
!!! important
**The name you pick has to be unique! Picking an existing name will fail silently, with no error messages. We recommend using `romm-<random hash>`, like `romm-3fca6fd7f94dea4a05d029f654c0c44b`**
Note the client ID and secret that appear on screen, and use them to set `IGDB_CLIENT_ID` and `IGDB_CLIENT_SECRET` in your environment variables.
|![IGDB_Creation](https://github.com/rommapp/romm/assets/3247106/7a93bf68-f6d9-46a5-ab72-719f2d5ec9d3)|![IGDB_Secret](https://github.com/rommapp/romm/assets/3247106/7a9dc056-52be-41c4-aec5-e2758aa520b5)|
|---|---|
| ![IGDB_Creation](https://github.com/rommapp/romm/assets/3247106/7a93bf68-f6d9-46a5-ab72-719f2d5ec9d3) | ![IGDB_Secret](https://github.com/rommapp/romm/assets/3247106/7a9dc056-52be-41c4-aec5-e2758aa520b5) |
| ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
## MobyGames
To access the MobyGames API, [create a MobyGames account](https://www.mobygames.com/user/register/) and then visit your profile page. Click the **API** link under your user name to sign up for an API key. Copy the key shown and use it to set `MOBYGAMES_API_KEY`.
> [!IMPORTANT]
> **MobyGames API became a [paid feature](https://www.mobygames.com/info/api/#non-commercial). Any existing key can be used as usual, but any new API key created will be under a paywall**
!!! important
> **MobyGames API became a [paid feature](https://www.mobygames.com/info/api/#non-commercial). Any existing key can be used as usual, but any new API key created will be under a paywall**
## ScreenScraper
@@ -8,20 +8,20 @@ This quick start guide will help you get a RomM instance up and running. It is s
This guide will assume that you already have the following done, if not - stop here and come back when you do.
* Docker and Docker Compose installed
* OpenSSL installed (optional)
* A Twitch account (optional)
* 2-factor authentication set up on your Twitch account
* *This is required to get a dev account and an IGDB key*
* A MobyGames account (optional)
* Your Roms organized in the correct format
- Docker and Docker Compose installed
- OpenSSL installed (optional)
- A Twitch account (optional)
- 2-factor authentication set up on your Twitch account
- _This is required to get a dev account and an IGDB key_
- A MobyGames account (optional)
- Your Roms organized in the correct format
> [!CAUTION]
> Not setting up RomM with a metadata API will work for basic operation but can cause issues with, for instance, the Playnite plugin. It is recommended to setup IGDB API keys to avoid issues during setup.
!!! warning
Not setting up RomM with a metadata API will work for basic operation but can cause issues with, for instance, the Playnite plugin. It is recommended to setup IGDB API keys to avoid issues during setup.
#### Twitch and MobyGames API Keys
Head over to [API key docs](Generate-API-Keys) to get your Twitch and/or MobyGames keys, then come back here
Head over to [API key docs](../Getting-Started/Generate-API-Keys.md) to get your Twitch and/or MobyGames keys, then come back here
#### Generating Authentication Keys
@@ -46,19 +46,19 @@ Now that we have everything gathered, we can begin getting your instance set up!
1. Download a copy of the latest [docker-compose.example.yml](https://github.com/rommapp/romm/blob/release/examples/docker-compose.example.yml) file from GitHub
2. Edit the file and modify the following values to configure the database
* `MYSQL_ROOT_PASSWORD`: Sets the root password of the database. Use a unique and secure password (*use a password generator for simplicity*)
* `MYSQL_DATABASE`: Sets the database name for RomM. This can be modified - but it's not necessary
* `MYSQL_USER`: User to connect to the database with. This can be modified - but it's not necessary
* `MYSQL_PASSWORD`: Password for the user to connect to the database with. Use a unique and secure password (*use a password generator for simplicity*)
3. Modify the following values in the **environment** to configure the application. *-- Other values can be changed, but should not be done unless you know what you are doing, and are outside the scope of this guide*
* `DB_NAME`: Name of the database set in the database section
* `DB_USER`: Name of the user to connect to the database
* `DB_PASSWD`: Password of the user to connect to the database
- `MYSQL_ROOT_PASSWORD`: Sets the root password of the database. Use a unique and secure password (_use a password generator for simplicity_)
- `MYSQL_DATABASE`: Sets the database name for RomM. This can be modified - but it's not necessary
- `MYSQL_USER`: User to connect to the database with. This can be modified - but it's not necessary
- `MYSQL_PASSWORD`: Password for the user to connect to the database with. Use a unique and secure password (_use a password generator for simplicity_)
3. Modify the following values in the **environment** to configure the application. _-- Other values can be changed, but should not be done unless you know what you are doing, and are outside the scope of this guide_
- `DB_NAME`: Name of the database set in the database section
- `DB_USER`: Name of the user to connect to the database
- `DB_PASSWD`: Password of the user to connect to the database
4. Modify the following values in the **volumes** to configure the application
* `/path/to/library`: Path to the directory where your rom files will be stored
* `/path/to/assets`: Path to the directory where you will store your saves, etc
* `/path/to/config`: Path to the directory where you will store the config.yml
5. Save the file as *docker-compose.yml* instead of *docker-compose.example.yml*. It should look soomething like this:
- `/path/to/library`: Path to the directory where your rom files will be stored
- `/path/to/assets`: Path to the directory where you will store your saves, etc
- `/path/to/config`: Path to the directory where you will store the config.yml
5. Save the file as _docker-compose.yml_ instead of _docker-compose.example.yml_. It should look soomething like this:
![336102458-386dbff4-85ca-4926-86e4-48dc47771451](https://github.com/user-attachments/assets/081f8991-92ae-4129-8923-124f8146ab5b)
@@ -81,9 +81,9 @@ Now that the container is running, we will configure it by importing your roms
This method is certainly viable, but not recommended if you have a lot of roms and/or multiple platforms. It is good for adding after the fact as your collection grows, but wouldn't be recommended for the first set up, nor for multi-file roms
1. Log into RomM with your user credentials
2. Navigate to *Library* -> *Upload roms*
3. Select the platform, then click *ADD ROMS* and select the roms you want to upload in the file selector that appears
4. Click *UPLOAD* to begin uploading the roms
2. Navigate to _Library_ -> _Upload roms_
3. Select the platform, then click _ADD ROMS_ and select the roms you want to upload in the file selector that appears
4. Click _UPLOAD_ to begin uploading the roms
5. Repeat for all the roms/platforms you have
<img src="https://github.com/rommapp/romm/assets/3247106/3e398e7a-d653-472c-9f11-82b2f0b52840" width="780">
@@ -93,10 +93,10 @@ This method is certainly viable, but not recommended if you have a lot of roms a
This method is generally the fastest and recommended for first time setup
1. Stop your RomM instance. `docker compose down` if you are in the terminal and directory containing the docker-compose file, otherwise `docker stop romm`
2. Go to the library folder created by RomM, set in the docker-compose file under *:/romm/library* and create a folder named `roms`
2. Go to the library folder created by RomM, set in the docker-compose file under _:/romm/library_ and create a folder named `roms`
3. Copy your platform folders/rom files into the `roms` folder you created
4. Start the RomM instance back up. `docker compose up -d` if you are in the terminal and directory containing the docker-compose file, otherwise `docker start romm`
5. Log into RomM with your user credentials
6. Navigate to *Library* -> *Scan*
6. Navigate to _Library_ -> _Scan_
7. The system will now begin scanning the rom files and applying metadata to them. You can click on any of the items that it has tagged to see the metadata it pulled without having to stop the scan
8. After the scan completes, click the RomM logo to go back to the main screen. You should see the platforms and recent games it has scanned. You are now ready to rock and RomM!
@@ -92,35 +92,36 @@ Items marked with ❗ are important to set, as RomM may not correctly otherwise!
#### ⚡ Details
* Domain Names: `romm.mydomain.com` (replace mydomain with your own)* Scheme: `http`
* Forward Hostname/IP: <device IP> (like 192.168.X.X)
* Forward Port: `8080`
* Cache Assets: `off`
* Block Common Exploits: `on`
* Websockets Support: `on` ❗
* Access List: -
- Domain Names: `romm.mydomain.com` (replace mydomain with your own)\* Scheme: `http`
- Forward Hostname/IP: <device IP> (like 192.168.X.X)
- Forward Port: `8080`
- Cache Assets: `off`
- Block Common Exploits: `on`
- Websockets Support: `on` ❗
- Access List: -
#### 🛡️ SSL
Strongly recommended, but only required if you plan to secure your site (use HTTPS)
* SSL Certificate: "Request a new SSL Certificate"
* Force SSL: `on`
* HTTP/2 Support: `on`
* HSTS Enabled: `off`
* Email Address for Let's Encrypt: <your email address>
* I Agree to the TOS: `on`
- SSL Certificate: "Request a new SSL Certificate"
- Force SSL: `on`
- HTTP/2 Support: `on`
- HSTS Enabled: `off`
- Email Address for Let's Encrypt: <your email address>
- I Agree to the TOS: `on`
#### ⚙️ Advanced
Custom Nginx Confguration ❗
Custom Nginx Confguration ❗
```
proxy_max_temp_file_size 0;
```
|Details|SSL|Advanced|
|---|---|---|
|![image](https://github.com/user-attachments/assets/e106a8e9-8b27-41ef-8ba2-d43c3b68b269)|![image2](https://github.com/user-attachments/assets/6c82c785-792a-410a-80f2-d95839cba47b)|![image3](https://github.com/user-attachments/assets/566ae834-99b5-42f3-b46b-306b8f73b5b4)|
| Details | SSL | Advanced |
| ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ |
| ![image](https://github.com/user-attachments/assets/e106a8e9-8b27-41ef-8ba2-d43c3b68b269) | ![image2](https://github.com/user-attachments/assets/6c82c785-792a-410a-80f2-d95839cba47b) | ![image3](https://github.com/user-attachments/assets/566ae834-99b5-42f3-b46b-306b8f73b5b4) |
## Traefik
@@ -129,32 +130,32 @@ proxy_max_temp_file_size 0;
```yml
http:
romsdomainse:
entryPoints:
- "https"
rule: "Host(`roms.domain.se`)"
middlewares:
- default-headers
- https-redirectscheme
tls:
certResolver: http
service: romsdomainse
entryPoints:
- "https"
rule: "Host(`roms.domain.se`)"
middlewares:
- default-headers
- https-redirectscheme
tls:
certResolver: http
service: romsdomainse
services:
romsdomainse:
loadBalancer:
servers:
- url: "http://192.168.1.100:8080"
passHostHeader: true
loadBalancer:
servers:
- url: "http://192.168.1.100:8080"
passHostHeader: true
```
### Using labels in docker compose
```yml
labels:
- "traefik.enable=true"
- "traefik.http.services.romm.loadbalancer.server.port=8080"
- "traefik.http.routers.romm.rule=Host(`romm.YOUR_DOMAIN.com`)"
- "traefik.http.routers.romm.entrypoints=websecure"
- 'traefik.http.routers.romm.tls=true'
- 'traefik.http.routers.romm.tls.certresolver=https'
- "traefik.enable=true"
- "traefik.http.services.romm.loadbalancer.server.port=8080"
- "traefik.http.routers.romm.rule=Host(`romm.YOUR_DOMAIN.com`)"
- "traefik.http.routers.romm.entrypoints=websecure"
- "traefik.http.routers.romm.tls=true"
- "traefik.http.routers.romm.tls.certresolver=https"
```
-5
View File
@@ -1,5 +0,0 @@
<div align="center">
Official Website: <a href="https://romm.app" >https://romm.app</a> | Demo Website: <a href="https://romm.app" >https://demo.romm.app</a>
<div>
<br />
<img style="width: 800px;" src="./resources/social_preview.svg" />
@@ -2,14 +2,14 @@
Scheduled tasks can be enabled and configured with the following environment variables:
|Variable|Description|Value|
|---|---|:---:|
|ENABLE_SCHEDULED_RESCAN|Enable scheduled rescanning of library|`true`|
|SCHEDULED_RESCAN_CRON|Cron expression for scheduled rescanning|`"0 3 * * *"`|
|ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDB|Enable scheduled updating of Switch TitleDB index|`true`|
|SCHEDULED_UPDATE_SWITCH_TITLEDB_CRON|Cron expression for scheduled updating of Switch TitleDB|`"0 4 * * *"`|
|ENABLE_SCHEDULED_UPDATE_MAME_XML|Enable scheduled updating of MAME XML index|`true`|
|SCHEDULED_UPDATE_MAME_XML_CRON|Cron expression for scheduled updating of MAME XML|`"0 5 * * *"`|
| Variable | Description | Value |
| -------------------------------------- | -------------------------------------------------------- | :-----------: |
| ENABLE_SCHEDULED_RESCAN | Enable scheduled rescanning of library | `true` |
| SCHEDULED_RESCAN_CRON | Cron expression for scheduled rescanning | `"0 3 * * *"` |
| ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDB | Enable scheduled updating of Switch TitleDB index | `true` |
| SCHEDULED_UPDATE_SWITCH_TITLEDB_CRON | Cron expression for scheduled updating of Switch TitleDB | `"0 4 * * *"` |
| ENABLE_SCHEDULED_UPDATE_MAME_XML | Enable scheduled updating of MAME XML index | `true` |
| SCHEDULED_UPDATE_MAME_XML_CRON | Cron expression for scheduled updating of MAME XML | `"0 5 * * *"` |
### Scheduled rescan
@@ -33,10 +33,10 @@ RomM can also monitor the filesystem for events (files created/moved/deleted) an
The watcher can be enabled and configured with the following environment variables:
|Variable|Description|Value|
|---|---|:---:
|ENABLE_RESCAN_ON_FILESYSTEM_CHANGE|Enable rescanning of library when filesystem changes|`true`
|RESCAN_ON_FILESYSTEM_CHANGE_DELAY|Delay in minutes before rescanning library when filesystem changes|`5`|
| Variable | Description | Value |
| ---------------------------------- | ------------------------------------------------------------------ | :----: |
| ENABLE_RESCAN_ON_FILESYSTEM_CHANGE | Enable rescanning of library when filesystem changes | `true` |
| RESCAN_ON_FILESYSTEM_CHANGE_DELAY | Delay in minutes before rescanning library when filesystem changes | `5` |
The watcher will monitor the `/library/roms` folder for changes to the filesystem, such as files being added, moved or deleted. It will ignore certain events (like modifying the file content or metadata), and will skip default OS files (like `.DS_Store` on mac).
@@ -40,7 +40,7 @@ As Redis is [required for authentication](https://github.com/zurdi15/romm/wiki/A
## Configuration folder
Mounting the `config.yml` file is now done by mounting a `config` folder.. Place your existing ``config.yml`` file inside a folder and bind it to `/romm/config`:
Mounting the `config.yml` file is now done by mounting a `config` folder.. Place your existing `config.yml` file inside a folder and bind it to `/romm/config`:
```
- /path/to/config:/romm/config
@@ -10,20 +10,19 @@ We’ve put together some guidelines for those anyone who wants to use our name
The logo should always be used in its standard colors: <img src="resources/romm/ede5f8.png" height="16px" width="16px"> #ede5f8, <img src="resources/romm/bea4e1.png" height="16px" width="16px"> #bea4e1, <img src="resources/romm/371f69.png" height="16px" width="16px"> #371f69, <img src="resources/romm/553e98.png" height="16px" width="16px"> #553e98, <img src="resources/romm/e6c7a7.png" height="16px" width="16px"> #e6c7a7, and <img src="resources/romm/e1a38d.png" height="16px" width="16px"> #e1a38d.
## Do these things
* Use our logo to link to any page or site owned or operated by the project.
* Use our logo in a blog post or news article about the project.
* Use our logo to inform others that your project integrates with RomM.
* Always use our logo in the colors provided.
* Always use our name in a way that makes it clear you are not affiliated with the project.
- Use our logo to link to any page or site owned or operated by the project.
- Use our logo in a blog post or news article about the project.
- Use our logo to inform others that your project integrates with RomM.
- Always use our logo in the colors provided.
- Always use our name in a way that makes it clear you are not affiliated with the project.
If you're working on a project that integrates with RomM and would like to use/remix the logo, **please reach out to us first**. We'd love to hear about what you're working on!
## Please don't do these things
* Use our name or logo in any way that would suggest you are us, are endorsed by us, or are part of the project.
* Use our name or logo in a way that implies partnership, sponsorship, or endorsement.
* Use our name or logo as the name or logo for your project, product, service, social media account, company, or website.
* Use our name or logo to promote, advertise or sell any private business, closed-source software, commercial product, or paid service.
- Use our name or logo in any way that would suggest you are us, are endorsed by us, or are part of the project.
- Use our name or logo in a way that implies partnership, sponsorship, or endorsement.
- Use our name or logo as the name or logo for your project, product, service, social media account, company, or website.
- Use our name or logo to promote, advertise or sell any private business, closed-source software, commercial product, or paid service.
@@ -1,6 +1,6 @@
### Why is not PSP emulation enabled if emulatorjs supports it?
PSP emulation with the PPSSPP core requires special setup with a reverse proxy, or launching Chrome browser with the ``--disable-web-security`` and ``--enable-features=SharedArrayBuffer`` flags, which **WE STRONGLY DISCOURAGE** as it disables important security features.
PSP emulation with the PPSSPP core requires special setup with a reverse proxy, or launching Chrome browser with the `--disable-web-security` and `--enable-features=SharedArrayBuffer` flags, which **WE STRONGLY DISCOURAGE** as it disables important security features.
### When will the next version of RomM come out?
+41
View File
@@ -0,0 +1,41 @@
---
search:
exclude: true
---
# Navigation
- [Introduction](index.md)
- Getting Started
- [Quick Start Guide](Getting-Started/Quick-Start-Guide.md)
- [Generate API Keys](Getting-Started/Generate-API-Keys.md)
- [Environment Variables](Getting-Started/Environment-Variables.md)
- [Reverse Proxy](Getting-Started/Reverse-Proxy.md)
- [Authentication](Getting-Started/Authentication.md)
- Platforms and Players
- [Supported Platforms](Platforms-and-Players/Supported-Platforms.md)
- [Custom Platforms](Platforms-and-Players/Custom-Platforms.md)
- [EmulatorJS Player](Platforms-and-Players/EmulatorJS-Player.md)
- [RuffleRS Player](Platforms-and-Players/RuffleRS-Player.md)
- System Setup Gudies
- [Unraid Setup](System-Setup/Unraid-Setup-Guide.md)
- [Synology Setup](System-Setup/Synology-Setup-Guide.md)
- [TrueNAS Setup](System-Setup/TrueNAS-Setup-Guide.md)
- [Tinfoil Integration](System-Setup/Tinfoil-Integration.md)
- OIDC Setup Guides
- [OIDC Setup With Authelia](OIDC-Guides/OIDC-Setup-With-Authelia.md)
- [OIDC Setup With Authentik](OIDC-Guides/OIDC-Setup-With-Authentik.md)
- [OIDC Setup With PocketID](OIDC-Guides/OIDC-Setup-With-PocketID.md)
- Tools
- [Igir Collection Manager](Tools/Igir-Collection-Manager.md)
- Maintenance
- [Scheduled Tasks](Maintenance/Scheduled-Tasks.md)
- [Upgrading to 3.0](Maintenance/Upgrading-to-3.0.md)
- [Troubleshooting](Troubleshooting/index.md)
- [Scanning Issues](Troubleshooting/Scanning-Issues.md)
- [Authentication Issues](Troubleshooting/Authentication-Issues.md)
- [Synology Issues](Troubleshooting/Synology-Issues.md)
- [Miscellanous Issues](Troubleshooting/Miscellaneous-Troubleshooting.md)
- Miscellaneous
- [FAQs](Miscellaneous/FAQs.md)
- [Branding Guidelines](Miscellaneous/Brand-Guidelines.md)
@@ -3,54 +3,62 @@
## A quick rundown of the technologies
### What is Authelia?
Authelia is an open-source authentication and authorization server providing two-factor authentication and single sign-on (SSO) for your applications via a web portal. It acts as a companion for reverse proxies by allowing, denying, or redirecting requests. Authelia can be deployed alongside your other services to centralize identity management.
### What is OAuth2?
OAuth2 (Open Authorization 2.0) is an industry-standard protocol for authorization. It allows applications (clients) to gain limited access to user accounts on an HTTP service without sharing the user’s credentials. Instead, it uses access tokens to facilitate secure interactions. OAuth2 is commonly used in scenarios where users need to authenticate via a third-party service.
### What is OpenID Connect (OIDC)?
OIDC (OpenID Connect) is an identity layer built on top of OAuth2. While OAuth2 primarily handles authorization, OIDC adds authentication, enabling applications to verify a user’s identity and obtain profile information. This makes OIDC suitable for SSO solutions, where user identity is central to access management.
## Setting up a Provider and Application in Authelia
### Step 1: Install and Configure Authelia
Before setting up a provider and app, ensure that Authelia is installed and running by following the [getting started](https://www.authelia.com/integration/prologue/get-started/) and [OIDC provider](https://www.authelia.com/configuration/identity-providers/openid-connect/provider/) guides.
### Step 2: Add a client
In Authelia's `configuration.yml`, under `identity_providers` → `oidc` → `clients`, add a new entry:
* A **random** `client_id` and `client_secret`
* See the [official recommendations](https://www.authelia.com/integration/openid-connect/frequently-asked-questions/#how-do-i-generate-a-client-identifier-or-client-secret) on how to generate these.
* `public` should be set to `false`.
* `redirect_uris` should include your RomM instance's URL + `/api/oauth/openid` (e.g., `http://romm.host.local/api/oauth/openid`).
* `scopes` includes `openid`, `email` and `profile`.
* `token_endpoint_auth_method` should be set to `client_secret_basic`.
* `userinfo_signed_response_alg` should be set to `none`.
- A **random** `client_id` and `client_secret`
- See the [official recommendations](https://www.authelia.com/integration/openid-connect/frequently-asked-questions/#how-do-i-generate-a-client-identifier-or-client-secret) on how to generate these.
- `public` should be set to `false`.
- `redirect_uris` should include your RomM instance's URL + `/api/oauth/openid` (e.g., `http://romm.host.local/api/oauth/openid`).
- `scopes` includes `openid`, `email` and `profile`.
- `token_endpoint_auth_method` should be set to `client_secret_basic`.
- `userinfo_signed_response_alg` should be set to `none`.
Refer to the [official docs](https://www.authelia.com/configuration/identity-providers/openid-connect/clients/) for more details.
This entry should look like this:
```yaml
#identity_providers:
# oidc:
# clients:
- client_id: "<randomly_generated>" # read above for how generate
client_name: "RomM" # will be displayed in Authelia to users
client_secret: "$pbkdf2-sha512$randomly_generated" # read above for how generate
public: false
authorization_policy: "two_factor" # or one_factor, depending on your needs
grant_types:
- authorization_code
redirect_uris:
- "http://romm.host.local/api/oauth/openid"
scopes:
- "openid"
- "email"
- "profile"
userinfo_signed_response_alg: "none"
token_endpoint_auth_method: "client_secret_basic"
- client_id: "<randomly_generated>" # read above for how generate
client_name: "RomM" # will be displayed in Authelia to users
client_secret: "$pbkdf2-sha512$randomly_generated" # read above for how generate
public: false
authorization_policy: "two_factor" # or one_factor, depending on your needs
grant_types:
- authorization_code
redirect_uris:
- "http://romm.host.local/api/oauth/openid"
scopes:
- "openid"
- "email"
- "profile"
userinfo_signed_response_alg: "none"
token_endpoint_auth_method: "client_secret_basic"
```
### Step 3: Configure RomM Environment Variables
To enable OIDC authentication in RomM, you need to set the following environment variables:
- `OIDC_ENABLED`: Set to `true` to enable OIDC authentication.
@@ -61,11 +69,13 @@ To enable OIDC authentication in RomM, you need to set the following environment
- `OIDC_SERVER_APPLICATION_URL`: The base URL for you Authelia instance, e.g. `http://authelia.host.local`.
### Step 4: Set your Email in RomM
In RomM, open your user profile and set your email address. This email **has to match** your user email in Authelia.
![Set email](https://raw.githubusercontent.com/rommapp/wiki/refs/heads/main/romm.wiki/resources/authelia/1-user-profile.png)
![Set email](../resources/authelia/1-user-profile.png)
### Step 5: Test the Integration
After configuring the environment variables, restart (or stop and remove) your RomM instance and navigate to the login page. You should see an option to log in using OIDC. Click on the OIDC button, and you'll be redirected to Authelia for authentication. Once authenticated, you'll be redirected back to RomM.
![Login with OIDC](https://raw.githubusercontent.com/rommapp/wiki/refs/heads/main/romm.wiki/resources/authelia/2-romm-login.png)
![Login with OIDC](../resources/authelia/2-romm-login.png)
@@ -3,59 +3,63 @@
## A quick rundown of the technologies
### What is Authentik?
Authentik is an open-source identity provider (IdP) designed to manage authentication, authorization, and user management across applications. It supports modern authentication protocols and provides tools to simplify integration, including single sign-on (SSO), multi-factor authentication (MFA), and auditing capabilities. Authentik can be deployed alongside your other services to centralize identity management.
### What is OAuth2?
OAuth2 (Open Authorization 2.0) is an industry-standard protocol for authorization. It allows applications (clients) to gain limited access to user accounts on an HTTP service without sharing the user’s credentials. Instead, it uses access tokens to facilitate secure interactions. OAuth2 is commonly used in scenarios where users need to authenticate via a third-party service.
### What is OpenID Connect (OIDC)?
OIDC (OpenID Connect) is an identity layer built on top of OAuth2. While OAuth2 primarily handles authorization, OIDC adds authentication, enabling applications to verify a user’s identity and obtain profile information. This makes OIDC suitable for SSO solutions, where user identity is central to access management.
## Setting up a Provider and Application in Authentik
### Step 1: Install and Configure Authentik
Before setting up a provider and app, ensure that Authentik is installed and running by following the [official installation guide.](https://docs.goauthentik.io/docs/install-config/install/docker-compose).
1. Access Authentik via its web interface.
2. Log in as an administrator.
3. Navigate to the “Admin Interface” to configure the necessary components.
![Authentik user dashboard](https://raw.githubusercontent.com/rommapp/wiki/refs/heads/main/romm.wiki/resources/authentik/1-user-dashboard.png)
![Authentik user dashboard](../resources/authentik/1-user-dashboard.png)
### Step 2: Create a Provider
A provider in Authentik acts as the bridge between RomM and Authentik.
1. **Navigate to Providers**:
- Go to the "Providers" section in the Authentik admin interface.
- Go to the "Providers" section in the Authentik admin interface.
2. **Create a New Provider**:
- Click on “Create” and choose the protocol (e.g., “OIDC Provider”).
![Create a new provider](https://raw.githubusercontent.com/rommapp/wiki/refs/heads/main/romm.wiki/resources/authentik/2-create-provider.png)
- Click on “Create” and choose the protocol (e.g., “OIDC Provider”).
![Create a new provider](../resources/authentik/2-create-provider.png)
3. **Select "OAuth2/OpenID Provider"**
![Select OAuth2 provider](https://raw.githubusercontent.com/rommapp/wiki/refs/heads/main/romm.wiki/resources/authentik/3-new-provider.png)
![Select OAuth2 provider](../resources/authentik/3-new-provider.png)
4. **Configure Provider Settings**:
- **Name**: Assign a unique name to the provider (e.g., "RomM OIDC Provider").
- **Authorization flow**: Select __implicit consent__.
- **Redirect URIs**: Add your RomM instance's URL + `/api/oauth/openid` (e.g., `http://romm.host.local/api/oauth/openid`).
- **Name**: Assign a unique name to the provider (e.g., "RomM OIDC Provider").
- **Authorization flow**: Select **implicit consent**.
- **Redirect URIs**: Add your RomM instance's URL + `/api/oauth/openid` (e.g., `http://romm.host.local/api/oauth/openid`).
5. **Copy the Client ID and Secret**:
- You'll need these to set `OIDC_CLIENT_ID` and `OIDC_CLIENT_SECRET` in your RomM instance.
![Provider settings](https://raw.githubusercontent.com/rommapp/wiki/refs/heads/main/romm.wiki/resources/authentik/4-provider-secrets.png)
- You'll need these to set `OIDC_CLIENT_ID` and `OIDC_CLIENT_SECRET` in your RomM instance.
![Provider settings](../resources/authentik/4-provider-secrets.png)
6. **Click Create**.
### Step 3: Register an Application
An app in Authentik represents the external service (in our case RomM) that will use the provider for authentication.
1. **Navigate to Applications**:
- Go to the "Applications" section in the admin interface.
![Applications](https://raw.githubusercontent.com/rommapp/wiki/refs/heads/main/romm.wiki/resources/authentik/5-applications.png)
- Go to the "Applications" section in the admin interface.
![Applications](../resources/authentik/5-applications.png)
2. **Create a New Application**:
- Click on “Create” and configure the app settings:
- **Name**: Provide a recognizable name (e.g., "RomM").
- **Slug**: Create a unique identifier for the app (e.g., "romm").
- **Provider**: Link the app to the previously created provider, "RomM OIDC Provider".
![New application](https://raw.githubusercontent.com/rommapp/wiki/refs/heads/main/romm.wiki/resources/authentik/6-new-application.png)
6. **Click Create**.
- Click on “Create” and configure the app settings: - **Name**: Provide a recognizable name (e.g., "RomM"). - **Slug**: Create a unique identifier for the app (e.g., "romm"). - **Provider**: Link the app to the previously created provider, "RomM OIDC Provider".
![New application](../resources/authentik/6-new-application.png)
3. **Click Create**.
### Step 4: Configure RomM Environment Variables
To enable OIDC authentication in RomM, you need to set the following environment variables:
- `OIDC_ENABLED`: Set to `true` to enable OIDC authentication.
@@ -66,11 +70,13 @@ To enable OIDC authentication in RomM, you need to set the following environment
- `OIDC_SERVER_APPLICATION_URL`: The URL of the Authentik application, e.g., `http://authentik.host.local/application/o/romm`.
### Step 5: Set your Email in RomM
In RomM, open your user profile and set your email address. This email **has to match** your user email in Authentik.
![Set email](https://raw.githubusercontent.com/rommapp/wiki/refs/heads/main/romm.wiki/resources/authentik/7-user-profile.png)
![Set email](../resources/authentik/7-user-profile.png)
### Step 6: Test the Integration
After configuring the environment variables, restart (or stop and remove) your RomM instance and navigate to the login page. You should see an option to log in using OIDC. Click on the OIDC button, and you'll be redirected to Authentik for authentication. Once authenticated, you'll be redirected back to RomM.
![Login with OIDC](https://raw.githubusercontent.com/rommapp/wiki/refs/heads/main/romm.wiki/resources/authentik/8-romm-login.png)
![Login with OIDC](../resources/authentik/8-romm-login.png)
@@ -3,37 +3,41 @@
## A quick rundown of the technologies
### What is Pocket ID?
Pocket ID is a simple OIDC provider that allows users to authenticate with their passkeys to your services.
The goal of Pocket ID is to be a simple and easy-to-use. There are other self-hosted OIDC providers like Keycloak or ORY Hydra but they are often too complex for simple use cases.
Additionally, what makes Pocket ID special is that it only supports passkey authentication, which means you don’t need a password.
### What is OAuth2?
OAuth2 (Open Authorization 2.0) is an industry-standard protocol for authorization. It allows applications (clients) to gain limited access to user accounts on an HTTP service without sharing the user’s credentials. Instead, it uses access tokens to facilitate secure interactions. OAuth2 is commonly used in scenarios where users need to authenticate via a third-party service.
### What is OpenID Connect (OIDC)?
OIDC (OpenID Connect) is an identity layer built on top of OAuth2. While OAuth2 primarily handles authorization, OIDC adds authentication, enabling applications to verify a user’s identity and obtain profile information. This makes OIDC suitable for SSO solutions, where user identity is central to access management.
## Setting up a client in Pocket ID
### Step 1: Install and Configure Pocket ID
Before setting up the OIDC client, ensure that Pocket ID is installed and running by following the [github.](https://github.com/stonith404/pocket-id#setup)
### Step 2: Add a client
Once you have logged in and configured a PassKey you now need to create an OIDC client, this will let Pocket ID know about the application that needs to be configured, and will give you the relevant keys to add to the RomM compose file.
Once you have logged in and configured a PassKey you now need to create an OIDC client, this will let Pocket ID know about the application that needs to be configured, and will give you the relevant keys to add to the RomM compose file.
- Make sure within Application Configuration that "Emails Verified" is ticked, most OIDC apps will need this.
- Go to OIDC Client
- Go to OIDC Client
- Click Add OIDC Client
- Name: RomM
- Callback URLs: https://{yoururl}/api/oauth/openid
- Click Save
- Name: RomM
- Callback URLs: https://{yoururl}/api/oauth/openid
- Click Save
- Stay on this page, you will be shown your client secret only THIS time.
### Step 3: Configure RomM Environment Variables
To enable OIDC authentication in RomM, you need to set the following environment variables:
- `OIDC_ENABLED`: Set to `true` to enable OIDC authentication.
@@ -44,11 +48,13 @@ To enable OIDC authentication in RomM, you need to set the following environment
- `OIDC_SERVER_APPLICATION_URL`: The authorization URL for you Pocket ID instance, e.g. `https://id.host.local/authorize`.
### Step 4: Set your Email in RomM
In RomM, open your user profile and set your email address. This email **has to match** your user email in Pocket ID.
![Set email](https://raw.githubusercontent.com/rommapp/wiki/refs/heads/main/romm.wiki/resources/authelia/1-user-profile.png)
![Set email](../resources/authelia/1-user-profile.png)
### Step 5: Test the Integration
After configuring the environment variables, restart (or stop and remove) your RomM instance and navigate to the login page. You should see an option to log in using OIDC. Click on the OIDC button, and you'll be redirected to Pocket ID for authentication. Once authenticated, you'll be redirected back to RomM.
![Login with OIDC](https://raw.githubusercontent.com/rommapp/wiki/refs/heads/main/romm.wiki/resources/pocketid/PocketID-login.png)
![Login with OIDC](../resources/pocketid/PocketID-login.png)
@@ -0,0 +1,52 @@
[EmulatorJS](https://emulatorjs.org/) is a web-based emulator for various system; that is, it allows you to run old games in your web browser. It's based on [Emscripten](https://emscripten.org/), which is a toolchain for compiling C and C++ code to WebAssembly.
!!! warning
Due to a [change by Apple in iOS 18.2](https://bugs.webkit.org/show_bug.cgi?id=284752), emulation is severely limited, and likely non-functional, on iOS devices.
!!! warning
PSP emulation with the PPSSPP core requires [special setup with a reverse proxy](https://emulatorjs.org/docs/options#ejs_threads), or launching Chrome browser with the `--disable-web-security` and `--enable-features=SharedArrayBuffer` flags, which WE STRONGLY DISCOURAGE as it disables important security features.
!!! warning
Emulation is a complex and resource-intensive process. As such, it may not work well in all browser, especially older or less powerful ones. If you're having trouble running a game, try using a different browser or device.
### Loading saves and states
Our integration with EmulatorJS automates the process of loading and saving save files and save states. Before starting the game, select a save and/or state file to load (if one is available). Anytime you save the game (or create a save state), the save and state files stored with RomM will be updated, so there's no need to manually download or upload them.
### Supported systems
Note that only the following systems are currently supported:
- 3DO
- Amiga
- Arcade/MAME
- Atari 2600
- Atari 5200
- Atari 7800
- Atari Jaguar
- Atari Lynx
- Commodore 64
- ColecoVision
- Neo Geo Pocket
- Neo Geo Pocket Color
- Nintendo 64
- Nintendo Entertainment System (NES)
- Nintendo Family Computer (Famicom)
- Nintendo DS
- Game Boy
- Game Boy Color
- Game Boy Advance
- PC-FX
- PlayStation (PS)
- Sega 32X
- Sega CD
- Sega Game Gear
- Sega Master System
- Sega Genesis/Megadrive
- Sega Saturn
- Super Nintendo Entertainment System (SNES)
- Super Famicom
- TurboGraphx-16/PC Engine
- Virtual Boy
- WonderSwan
- WonderSwan Color
@@ -1,4 +1,4 @@
[Ruffle](https://ruffle.rs/) is a web-based player for flash games. With flash now dscontinued, this is the best way to play your flash collection in the browser.
> [!NOTE]
> **Ruffle will only play games stored in platform folders called `flash` or `browser`.**
!!! important
**Ruffle will only play games stored in platform folders called `flash` or `browser`.**
@@ -0,0 +1,409 @@
Below is a list of all supported platforms/systems/consoles and their respective folder names. **The folder name is case-sensitive and must be used exactly as it appears in the list below.**
| Platform Name | Folder Name | IGDB | Mobygames |
| ----------------------------------------------------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| 1292 Advanced Programmable Video System | `1292-advanced-programmable-video-system` | <a href="https://www.igdb.com/platforms/1292-advanced-programmable-video-system" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/1292-advanced-programmable-video-system" target="_blank" rel="noopener norefer">Mobygames</a> |
| 3DO Interactive Multiplayer | `3do` | <a href="https://www.igdb.com/platforms/3do" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/3do" target="_blank" rel="noopener norefer">Mobygames</a> |
| ABC 80 | `abc-80` | | <a href="https://www.mobygames.com/platform/abc-80" target="_blank" rel="noopener norefer">Mobygames</a> |
| APF MP1000/Imagination Machine | `apf` | | <a href="https://www.mobygames.com/platform/apf" target="_blank" rel="noopener norefer">Mobygames</a> |
| AY-3-8500 | `ay-3-8500` | <a href="https://www.igdb.com/platforms/ay-3-8500" target="_blank" rel="noopener norefer">IGDB</a> | |
| AY-3-8603 | `ay-3-8603` | <a href="https://www.igdb.com/platforms/ay-3-8603" target="_blank" rel="noopener norefer">IGDB</a> | |
| AY-3-8605 | `ay-3-8605` | <a href="https://www.igdb.com/platforms/ay-3-8605" target="_blank" rel="noopener norefer">IGDB</a> | |
| AY-3-8606 | `ay-3-8606` | <a href="https://www.igdb.com/platforms/ay-3-8606" target="_blank" rel="noopener norefer">IGDB</a> | |
| AY-3-8607 | `ay-3-8607` | <a href="https://www.igdb.com/platforms/ay-3-8607" target="_blank" rel="noopener norefer">IGDB</a> | |
| AY-3-8610 | `ay-3-8610` | <a href="https://www.igdb.com/platforms/ay-3-8610" target="_blank" rel="noopener norefer">IGDB</a> | |
| AY-3-8710 | `ay-3-8710` | <a href="https://www.igdb.com/platforms/ay-3-8710" target="_blank" rel="noopener norefer">IGDB</a> | |
| AY-3-8760 | `ay-3-8760` | <a href="https://www.igdb.com/platforms/ay-3-8760" target="_blank" rel="noopener norefer">IGDB</a> | |
| Acorn Archimedes | `acorn-archimedes` | <a href="https://www.igdb.com/platforms/acorn-archimedes" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/acorn-32-bit" target="_blank" rel="noopener norefer">Mobygames</a> |
| Acorn Electron | `acorn-electron` | <a href="https://www.igdb.com/platforms/acorn-electron" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/electron" target="_blank" rel="noopener norefer">Mobygames</a> |
| Adventure Vision | `adventure-vision` | | <a href="https://www.mobygames.com/platform/adventure-vision" target="_blank" rel="noopener norefer">Mobygames</a> |
| AirConsole | `airconsole` | <a href="https://www.igdb.com/platforms/airconsole" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/airconsole" target="_blank" rel="noopener norefer">Mobygames</a> |
| Alice 32/90 | `alice-3290` | | <a href="https://www.mobygames.com/platform/alice-3290" target="_blank" rel="noopener norefer">Mobygames</a> |
| Altair 680 | `altair-680` | | <a href="https://www.mobygames.com/platform/altair-680" target="_blank" rel="noopener norefer">Mobygames</a> |
| Altair 8800 | `altair-8800` | | <a href="https://www.mobygames.com/platform/altair-8800" target="_blank" rel="noopener norefer">Mobygames</a> |
| Amazon Alexa | `amazon-alexa` | | <a href="https://www.mobygames.com/platform/amazon-alexa" target="_blank" rel="noopener norefer">Mobygames</a> |
| Amazon Fire TV | `amazon-fire-tv` | <a href="https://www.igdb.com/platforms/amazon-fire-tv" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/fire-os" target="_blank" rel="noopener norefer">Mobygames</a> |
| Amiga | `amiga` | <a href="https://www.igdb.com/platforms/amiga" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/amiga" target="_blank" rel="noopener norefer">Mobygames</a> |
| Amiga CD32 | `amiga-cd32` | <a href="https://www.igdb.com/platforms/amiga-cd32" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/amiga-cd32" target="_blank" rel="noopener norefer">Mobygames</a> |
| Amstrad CPC | `acpc` | <a href="https://www.igdb.com/platforms/acpc" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/cpc" target="_blank" rel="noopener norefer">Mobygames</a> |
| Amstrad PCW | `amstrad-pcw` | <a href="https://www.igdb.com/platforms/amstrad-pcw" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/amstrad-pcw" target="_blank" rel="noopener norefer">Mobygames</a> |
| Android | `android` | <a href="https://www.igdb.com/platforms/android" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/android" target="_blank" rel="noopener norefer">Mobygames</a> |
| Antstream | `antstream` | | <a href="https://www.mobygames.com/platform/antstream" target="_blank" rel="noopener norefer">Mobygames</a> |
| Apple I | `apple-i` | | <a href="https://www.mobygames.com/platform/apple-i" target="_blank" rel="noopener norefer">Mobygames</a> |
| Apple II | `appleii` | <a href="https://www.igdb.com/platforms/appleii" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/apple-ii" target="_blank" rel="noopener norefer">Mobygames</a> |
| Apple IIGD | `apple2gs` | | <a href="https://www.mobygames.com/platform/apple2gs" target="_blank" rel="noopener norefer">Mobygames</a> |
| Apple IIGS | `apple-iigs` | <a href="https://www.igdb.com/platforms/apple-iigs" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/apple-iigs" target="_blank" rel="noopener norefer">Mobygames</a> |
| Apple Pippin | `apple-pippin` | <a href="https://www.igdb.com/platforms/apple-pippin" target="_blank" rel="noopener norefer">IGDB</a> | |
| Arcade | `arcade` | <a href="https://www.igdb.com/platforms/arcade" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/arcade" target="_blank" rel="noopener norefer">Mobygames</a> |
| Arcadia 2001 | `arcadia-2001` | <a href="https://www.igdb.com/platforms/arcadia-2001" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/arcadia-2001" target="_blank" rel="noopener norefer">Mobygames</a> |
| Arduboy | `arduboy` | <a href="https://www.igdb.com/platforms/arduboy" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/arduboy" target="_blank" rel="noopener norefer">Mobygames</a> |
| Astral 2000 | `astral-2000` | | <a href="https://www.mobygames.com/platform/astral-2000" target="_blank" rel="noopener norefer">Mobygames</a> |
| Atari 2600 | `atari2600` | <a href="https://www.igdb.com/platforms/atari2600" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/atari-2600" target="_blank" rel="noopener norefer">Mobygames</a> |
| Atari 5200 | `atari5200` | <a href="https://www.igdb.com/platforms/atari5200" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/atari-5200" target="_blank" rel="noopener norefer">Mobygames</a> |
| Atari 7800 | `atari7800` | <a href="https://www.igdb.com/platforms/atari7800" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/atari-7800" target="_blank" rel="noopener norefer">Mobygames</a> |
| Atari 8-bit | `atari8bit` | <a href="https://www.igdb.com/platforms/atari8bit" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/atari-8-bit" target="_blank" rel="noopener norefer">Mobygames</a> |
| Atari Jaguar | `jaguar` | <a href="https://www.igdb.com/platforms/jaguar" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/jaguar" target="_blank" rel="noopener norefer">Mobygames</a> |
| Atari Jaguar CD | `atari-jaguar-cd` | <a href="https://www.igdb.com/platforms/atari-jaguar-cd" target="_blank" rel="noopener norefer">IGDB</a> | |
| Atari Lynx | `lynx` | <a href="https://www.igdb.com/platforms/lynx" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/lynx" target="_blank" rel="noopener norefer">Mobygames</a> |
| Atari ST/STE | `atari-st` | <a href="https://www.igdb.com/platforms/atari-st" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/atari-st" target="_blank" rel="noopener norefer">Mobygames</a> |
| Atari VCS | `atari-vcs` | | <a href="https://www.mobygames.com/platform/atari-vcs" target="_blank" rel="noopener norefer">Mobygames</a> |
| Atom | `atom` | | <a href="https://www.mobygames.com/platform/atom" target="_blank" rel="noopener norefer">Mobygames</a> |
| BBC Micro | `bbcmicro` | | <a href="https://www.mobygames.com/platform/bbcmicro" target="_blank" rel="noopener norefer">Mobygames</a> |
| BBC Microcomputer System | `bbcmicro` | <a href="https://www.igdb.com/platforms/bbcmicro" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/bbc-micro" target="_blank" rel="noopener norefer">Mobygames</a> |
| BREW | `brew` | | <a href="https://www.mobygames.com/platform/brew" target="_blank" rel="noopener norefer">Mobygames</a> |
| Bally Astrocade | `astrocade` | <a href="https://www.igdb.com/platforms/astrocade" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/bally-astrocade" target="_blank" rel="noopener norefer">Mobygames</a> |
| BeOS | `beos` | | <a href="https://www.mobygames.com/platform/beos" target="_blank" rel="noopener norefer">Mobygames</a> |
| BlackBerry OS | `blackberry` | <a href="https://www.igdb.com/platforms/blackberry" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/blackberry" target="_blank" rel="noopener norefer">Mobygames</a> |
| Blacknut | `blacknut` | | <a href="https://www.mobygames.com/platform/blacknut" target="_blank" rel="noopener norefer">Mobygames</a> |
| Blu-ray Player | `blu-ray-player` | <a href="https://www.igdb.com/platforms/blu-ray-player" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/blu-ray-disc-player" target="_blank" rel="noopener norefer">Mobygames</a> |
| Bubble | `bubble` | | <a href="https://www.mobygames.com/platform/bubble" target="_blank" rel="noopener norefer">Mobygames</a> |
| CD-i | `philips-cd-i` | | <a href="https://www.mobygames.com/platform/philips-cd-i" target="_blank" rel="noopener norefer">Mobygames</a> |
| CDC Cyber 70 | `cdccyber70` | <a href="https://www.igdb.com/platforms/cdccyber70" target="_blank" rel="noopener norefer">IGDB</a> | |
| CDTV | `commodore-cdtv` | | <a href="https://www.mobygames.com/platform/commodore-cdtv" target="_blank" rel="noopener norefer">Mobygames</a> |
| COSMAC | `fred-cosmac` | | <a href="https://www.mobygames.com/platform/fred-cosmac" target="_blank" rel="noopener norefer">Mobygames</a> |
| CP/M | `cpm` | | <a href="https://www.mobygames.com/platform/cpm" target="_blank" rel="noopener norefer">Mobygames</a> |
| Call-A-Computer time-shared mainframe computer system | `call-a-computer` | <a href="https://www.igdb.com/platforms/call-a-computer" target="_blank" rel="noopener norefer">IGDB</a> | |
| Camputers Lynx | `camputers-lynx` | | <a href="https://www.mobygames.com/platform/camputers-lynx" target="_blank" rel="noopener norefer">Mobygames</a> |
| Casio Loopy | `casio-loopy` | <a href="https://www.igdb.com/platforms/casio-loopy" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/casio-loopy" target="_blank" rel="noopener norefer">Mobygames</a> |
| Casio PV-1000 | `casio-pv-1000` | | <a href="https://www.mobygames.com/platform/casio-pv-1000" target="_blank" rel="noopener norefer">Mobygames</a> |
| Casio Programmable Calculator | `casio-programmable-calculator` | | <a href="https://www.mobygames.com/platform/casio-programmable-calculator" target="_blank" rel="noopener norefer">Mobygames</a> |
| Champion 2711 | `champion-2711` | | <a href="https://www.mobygames.com/platform/champion-2711" target="_blank" rel="noopener norefer">Mobygames</a> |
| Channel F | `fairchild-channel-f` | | <a href="https://www.mobygames.com/platform/fairchild-channel-f" target="_blank" rel="noopener norefer">Mobygames</a> |
| ClickStart | `clickstart` | | <a href="https://www.mobygames.com/platform/clickstart" target="_blank" rel="noopener norefer">Mobygames</a> |
| Coleco Adam | `colecoadam` | | <a href="https://www.mobygames.com/platform/colecoadam" target="_blank" rel="noopener norefer">Mobygames</a> |
| ColecoVision | `colecovision` | <a href="https://www.igdb.com/platforms/colecovision" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/colecovision" target="_blank" rel="noopener norefer">Mobygames</a> |
| Colour Genie | `colour-genie` | | <a href="https://www.mobygames.com/platform/colour-genie" target="_blank" rel="noopener norefer">Mobygames</a> |
| Commodore 128 | `c128` | | <a href="https://www.mobygames.com/platform/c128" target="_blank" rel="noopener norefer">Mobygames</a> |
| Commodore 16 | `c16` | <a href="https://www.igdb.com/platforms/c16" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/commodore-16-plus4" target="_blank" rel="noopener norefer">Mobygames</a> |
| Commodore C64/128/MAX | `c64` | <a href="https://www.igdb.com/platforms/c64" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/c64" target="_blank" rel="noopener norefer">Mobygames</a> |
| Commodore CDTV | `commodore-cdtv` | <a href="https://www.igdb.com/platforms/commodore-cdtv" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/cdtv" target="_blank" rel="noopener norefer">Mobygames</a> |
| Commodore PET | `cpet` | <a href="https://www.igdb.com/platforms/cpet" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/pet" target="_blank" rel="noopener norefer">Mobygames</a> |
| Commodore PET/CBM | `cpet` | | <a href="https://www.mobygames.com/platform/cpet" target="_blank" rel="noopener norefer">Mobygames</a> |
| Commodore Plus/4 | `c-plus-4` | <a href="https://www.igdb.com/platforms/c-plus-4" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/commodore-16-plus4" target="_blank" rel="noopener norefer">Mobygames</a> |
| Commodore VIC-20 | `vic-20` | <a href="https://www.igdb.com/platforms/vic-20" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/vic-20" target="_blank" rel="noopener norefer">Mobygames</a> |
| Compal 80 | `compal-80` | | <a href="https://www.mobygames.com/platform/compal-80" target="_blank" rel="noopener norefer">Mobygames</a> |
| Compucolor I | `compucolor-i` | | <a href="https://www.mobygames.com/platform/compucolor-i" target="_blank" rel="noopener norefer">Mobygames</a> |
| Compucolor II | `compucolor-ii` | | <a href="https://www.mobygames.com/platform/compucolor-ii" target="_blank" rel="noopener norefer">Mobygames</a> |
| Compucorp Programmable Calculator | `compucorp-programmable-calculator` | | <a href="https://www.mobygames.com/platform/compucorp-programmable-calculator" target="_blank" rel="noopener norefer">Mobygames</a> |
| CreatiVision | `creativision` | | <a href="https://www.mobygames.com/platform/creativision" target="_blank" rel="noopener norefer">Mobygames</a> |
| Cybervision | `cybervision` | | <a href="https://www.mobygames.com/platform/cybervision" target="_blank" rel="noopener norefer">Mobygames</a> |
| DOS | `dos` | <a href="https://www.igdb.com/platforms/dos" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/dos" target="_blank" rel="noopener norefer">Mobygames</a> |
| DVD Player | `dvd-player` | <a href="https://www.igdb.com/platforms/dvd-player" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/dvd-player" target="_blank" rel="noopener norefer">Mobygames</a> |
| Danger OS | `danger-os` | | <a href="https://www.mobygames.com/platform/danger-os" target="_blank" rel="noopener norefer">Mobygames</a> |
| Dedicated console | `dedicated-console` | | <a href="https://www.mobygames.com/platform/dedicated-console" target="_blank" rel="noopener norefer">Mobygames</a> |
| Dedicated handheld | `dedicated-handheld` | | <a href="https://www.mobygames.com/platform/dedicated-handheld" target="_blank" rel="noopener norefer">Mobygames</a> |
| Didj | `didj` | | <a href="https://www.mobygames.com/platform/didj" target="_blank" rel="noopener norefer">Mobygames</a> |
| DoJa | `doja` | | <a href="https://www.mobygames.com/platform/doja" target="_blank" rel="noopener norefer">Mobygames</a> |
| Donner Model 30 | `donner30` | <a href="https://www.igdb.com/platforms/donner30" target="_blank" rel="noopener norefer">IGDB</a> | |
| Dragon 32/64 | `dragon-32-slash-64` | <a href="https://www.igdb.com/platforms/dragon-32-slash-64" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/dragon-32-slash-64" target="_blank" rel="noopener norefer">Mobygames</a> |
| Dreamcast | `dc` | <a href="https://www.igdb.com/platforms/dc" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/dreamcast" target="_blank" rel="noopener norefer">Mobygames</a> |
| ECD Micromind | `ecd-micromind` | | <a href="https://www.mobygames.com/platform/ecd-micromind" target="_blank" rel="noopener norefer">Mobygames</a> |
| EDSAC | `edsac--1` | <a href="https://www.igdb.com/platforms/edsac--1" target="_blank" rel="noopener norefer">IGDB</a> | |
| Electron | `acorn-electron` | | <a href="https://www.mobygames.com/platform/acorn-electron" target="_blank" rel="noopener norefer">Mobygames</a> |
| Enterprise | `enterprise` | | <a href="https://www.mobygames.com/platform/enterprise" target="_blank" rel="noopener norefer">Mobygames</a> |
| Epoch Cassette Vision | `epoch-cassette-vision` | <a href="https://www.igdb.com/platforms/epoch-cassette-vision" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/epoch-cassette-vision" target="_blank" rel="noopener norefer">Mobygames</a> |
| Epoch Game Pocket Computer | `epoch-game-pocket-computer` | | <a href="https://www.mobygames.com/platform/epoch-game-pocket-computer" target="_blank" rel="noopener norefer">Mobygames</a> |
| Epoch Super Cassette Vision | `epoch-super-cassette-vision` | <a href="https://www.igdb.com/platforms/epoch-super-cassette-vision" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/epoch-super-cassette-vision" target="_blank" rel="noopener norefer">Mobygames</a> |
| Evercade | `evercade` | <a href="https://www.igdb.com/platforms/evercade" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/evercade" target="_blank" rel="noopener norefer">Mobygames</a> |
| ExEn | `exen` | | <a href="https://www.mobygames.com/platform/exen" target="_blank" rel="noopener norefer">Mobygames</a> |
| Exelvision | `exelvision` | | <a href="https://www.mobygames.com/platform/exelvision" target="_blank" rel="noopener norefer">Mobygames</a> |
| Exidy Sorcerer | `exidy-sorcerer` | <a href="https://www.igdb.com/platforms/exidy-sorcerer" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/exidy-sorcerer" target="_blank" rel="noopener norefer">Mobygames</a> |
| FM Towns | `fm-towns` | <a href="https://www.igdb.com/platforms/fm-towns" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/fmtowns" target="_blank" rel="noopener norefer">Mobygames</a> |
| FM-7 | `fm-7` | <a href="https://www.igdb.com/platforms/fm-7" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/fm-7" target="_blank" rel="noopener norefer">Mobygames</a> |
| Fairchild Channel F | `fairchild-channel-f` | <a href="https://www.igdb.com/platforms/fairchild-channel-f" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/channel-f" target="_blank" rel="noopener norefer">Mobygames</a> |
| Family Computer | `famicom` | <a href="https://www.igdb.com/platforms/famicom" target="_blank" rel="noopener norefer">IGDB</a> | |
| Family Computer Disk System | `fds` | <a href="https://www.igdb.com/platforms/fds" target="_blank" rel="noopener norefer">IGDB</a> | |
| Feature phone | `mobile-custom` | | <a href="https://www.mobygames.com/platform/mobile-custom" target="_blank" rel="noopener norefer">Mobygames</a> |
| Ferranti Nimrod Computer | `nimrod` | <a href="https://www.igdb.com/platforms/nimrod" target="_blank" rel="noopener norefer">IGDB</a> | |
| Fire TV | `amazon-fire-tv` | | <a href="https://www.mobygames.com/platform/amazon-fire-tv" target="_blank" rel="noopener norefer">Mobygames</a> |
| Freebox | `freebox` | | <a href="https://www.mobygames.com/platform/freebox" target="_blank" rel="noopener norefer">Mobygames</a> |
| G-cluster | `g-cluster` | | <a href="https://www.mobygames.com/platform/g-cluster" target="_blank" rel="noopener norefer">Mobygames</a> |
| GIMINI | `gimini` | | <a href="https://www.mobygames.com/platform/gimini" target="_blank" rel="noopener norefer">Mobygames</a> |
| GNEX | `gnex` | | <a href="https://www.mobygames.com/platform/gnex" target="_blank" rel="noopener norefer">Mobygames</a> |
| GP2X | `gp2x` | | <a href="https://www.mobygames.com/platform/gp2x" target="_blank" rel="noopener norefer">Mobygames</a> |
| GP2X Wiz | `gp2x-wiz` | | <a href="https://www.mobygames.com/platform/gp2x-wiz" target="_blank" rel="noopener norefer">Mobygames</a> |
| GP32 | `gp32` | | <a href="https://www.mobygames.com/platform/gp32" target="_blank" rel="noopener norefer">Mobygames</a> |
| GVM | `gvm` | | <a href="https://www.mobygames.com/platform/gvm" target="_blank" rel="noopener norefer">Mobygames</a> |
| Galaksija | `galaksija` | | <a href="https://www.mobygames.com/platform/galaksija" target="_blank" rel="noopener norefer">Mobygames</a> |
| Gamate | `gamate` | <a href="https://www.igdb.com/platforms/gamate" target="_blank" rel="noopener norefer">IGDB</a> | |
| Game & Watch | `g-and-w` | <a href="https://www.igdb.com/platforms/g-and-w" target="_blank" rel="noopener norefer">IGDB</a> | |
| Game Boy | `gb` | <a href="https://www.igdb.com/platforms/gb" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/gameboy" target="_blank" rel="noopener norefer">Mobygames</a> |
| Game Boy Advance | `gba` | <a href="https://www.igdb.com/platforms/gba" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/gameboy-advance" target="_blank" rel="noopener norefer">Mobygames</a> |
| Game Boy Color | `gbc` | <a href="https://www.igdb.com/platforms/gbc" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/gameboy-color" target="_blank" rel="noopener norefer">Mobygames</a> |
| Game Gear | `gamegear` | | <a href="https://www.mobygames.com/platform/gamegear" target="_blank" rel="noopener norefer">Mobygames</a> |
| Game Wave | `game-wave` | | <a href="https://www.mobygames.com/platform/game-wave" target="_blank" rel="noopener norefer">Mobygames</a> |
| Game.Com | `game-dot-com` | | <a href="https://www.mobygames.com/platform/game-dot-com" target="_blank" rel="noopener norefer">Mobygames</a> |
| Game.com | `game-dot-com` | <a href="https://www.igdb.com/platforms/game-dot-com" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/game-com" target="_blank" rel="noopener norefer">Mobygames</a> |
| GameStick | `gamestick` | | <a href="https://www.mobygames.com/platform/gamestick" target="_blank" rel="noopener norefer">Mobygames</a> |
| Gear VR | `gear-vr` | <a href="https://www.igdb.com/platforms/gear-vr" target="_blank" rel="noopener norefer">IGDB</a> | |
| Genesis/Mega Drive | `genesis-slash-megadrive` | | <a href="https://www.mobygames.com/platform/genesis-slash-megadrive" target="_blank" rel="noopener norefer">Mobygames</a> |
| Gizmondo | `gizmondo` | <a href="https://www.igdb.com/platforms/gizmondo" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/gizmondo" target="_blank" rel="noopener norefer">Mobygames</a> |
| Gloud | `gloud` | | <a href="https://www.mobygames.com/platform/gloud" target="_blank" rel="noopener norefer">Mobygames</a> |
| Glulx | `glulx` | | <a href="https://www.mobygames.com/platform/glulx" target="_blank" rel="noopener norefer">Mobygames</a> |
| Google Stadia | `stadia` | <a href="https://www.igdb.com/platforms/stadia" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/stadia" target="_blank" rel="noopener norefer">Mobygames</a> |
| HD DVD Player | `hd-dvd-player` | | <a href="https://www.mobygames.com/platform/hd-dvd-player" target="_blank" rel="noopener norefer">Mobygames</a> |
| HP 2100 | `hp2100` | <a href="https://www.igdb.com/platforms/hp2100" target="_blank" rel="noopener norefer">IGDB</a> | |
| HP 3000 | `hp3000` | <a href="https://www.igdb.com/platforms/hp3000" target="_blank" rel="noopener norefer">IGDB</a> | |
| HP 9800 | `hp-9800` | | <a href="https://www.mobygames.com/platform/hp-9800" target="_blank" rel="noopener norefer">Mobygames</a> |
| HP Programmable Calculator | `hp-programmable-calculator` | | <a href="https://www.mobygames.com/platform/hp-programmable-calculator" target="_blank" rel="noopener norefer">Mobygames</a> |
| Handheld Electronic LCD | `handheld-electronic-lcd` | <a href="https://www.igdb.com/platforms/handheld-electronic-lcd" target="_blank" rel="noopener norefer">IGDB</a> | |
| Heath/Zenith H8/H89 | `heathzenith` | | <a href="https://www.mobygames.com/platform/heathzenith" target="_blank" rel="noopener norefer">Mobygames</a> |
| Heathkit H11 | `heathkit-h11` | | <a href="https://www.mobygames.com/platform/heathkit-h11" target="_blank" rel="noopener norefer">Mobygames</a> |
| Hitachi S1 | `hitachi-s1` | | <a href="https://www.mobygames.com/platform/hitachi-s1" target="_blank" rel="noopener norefer">Mobygames</a> |
| Hugo | `hugo` | | <a href="https://www.mobygames.com/platform/hugo" target="_blank" rel="noopener norefer">Mobygames</a> |
| Hyper Neo Geo 64 | `hyper-neo-geo-64` | <a href="https://www.igdb.com/platforms/hyper-neo-geo-64" target="_blank" rel="noopener norefer">IGDB</a> | |
| HyperScan | `hyperscan` | <a href="https://www.igdb.com/platforms/hyperscan" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/hyperscan" target="_blank" rel="noopener norefer">Mobygames</a> |
| IBM 5100 | `ibm-5100` | | <a href="https://www.mobygames.com/platform/ibm-5100" target="_blank" rel="noopener norefer">Mobygames</a> |
| Ideal-Computer | `ideal-computer` | | <a href="https://www.mobygames.com/platform/ideal-computer" target="_blank" rel="noopener norefer">Mobygames</a> |
| Intel 8008 | `intel-8008` | | <a href="https://www.mobygames.com/platform/intel-8008" target="_blank" rel="noopener norefer">Mobygames</a> |
| Intel 8080 | `intel-8080` | | <a href="https://www.mobygames.com/platform/intel-8080" target="_blank" rel="noopener norefer">Mobygames</a> |
| Intel 8086 / 8088 | `intel-8086` | | <a href="https://www.mobygames.com/platform/intel-8086" target="_blank" rel="noopener norefer">Mobygames</a> |
| Intellivision | `intellivision` | <a href="https://www.igdb.com/platforms/intellivision" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/intellivision" target="_blank" rel="noopener norefer">Mobygames</a> |
| Intellivision Amico | `intellivision-amico` | <a href="https://www.igdb.com/platforms/intellivision-amico" target="_blank" rel="noopener norefer">IGDB</a> | |
| Interact Model One | `interact-model-one` | | <a href="https://www.mobygames.com/platform/interact-model-one" target="_blank" rel="noopener norefer">Mobygames</a> |
| Interton Video 2000 | `interton-video-2000` | | <a href="https://www.mobygames.com/platform/interton-video-2000" target="_blank" rel="noopener norefer">Mobygames</a> |
| Interton VC 4000 | `vc-4000` | <a href="https://www.igdb.com/platforms/vc-4000" target="_blank" rel="noopener norefer">IGDB</a> | |
| J2ME | `j2me` | | <a href="https://www.mobygames.com/platform/j2me" target="_blank" rel="noopener norefer">Mobygames</a> |
| Jolt | `jolt` | | <a href="https://www.mobygames.com/platform/jolt" target="_blank" rel="noopener norefer">Mobygames</a> |
| Jupiter Ace | `jupiter-ace` | | <a href="https://www.mobygames.com/platform/jupiter-ace" target="_blank" rel="noopener norefer">Mobygames</a> |
| KIM-1 | `kim-1` | | <a href="https://www.mobygames.com/platform/kim-1" target="_blank" rel="noopener norefer">Mobygames</a> |
| KaiOS | `kaios` | | <a href="https://www.mobygames.com/platform/kaios" target="_blank" rel="noopener norefer">Mobygames</a> |
| Kindle Classic | `kindle` | | <a href="https://www.mobygames.com/platform/kindle" target="_blank" rel="noopener norefer">Mobygames</a> |
| Laser 200 | `laser200` | | <a href="https://www.mobygames.com/platform/laser200" target="_blank" rel="noopener norefer">Mobygames</a> |
| LaserActive | `laseractive` | | <a href="https://www.mobygames.com/platform/laseractive" target="_blank" rel="noopener norefer">Mobygames</a> |
| LeapTV | `leaptv` | <a href="https://www.igdb.com/platforms/leaptv" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/leaptv" target="_blank" rel="noopener norefer">Mobygames</a> |
| Leapster | `leapster` | <a href="https://www.igdb.com/platforms/leapster" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/leapster" target="_blank" rel="noopener norefer">Mobygames</a> |
| Leapster Explorer/LeadPad Explorer | `leapster-explorer-slash-leadpad-explorer` | <a href="https://www.igdb.com/platforms/leapster-explorer-slash-leadpad-explorer" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/leapfrog-explorer" target="_blank" rel="noopener norefer">Mobygames</a> |
| Leapster Explorer/LeapPad Explorer | `leapster-explorer-slash-leadpad-explorer` | | <a href="https://www.mobygames.com/platform/leapster-explorer-slash-leadpad-explorer" target="_blank" rel="noopener norefer">Mobygames</a> |
| Legacy Computer | `legacy-computer` | <a href="https://www.igdb.com/platforms/legacy-computer" target="_blank" rel="noopener norefer">IGDB</a> | |
| Legacy Mobile Device | `mobile` | <a href="https://www.igdb.com/platforms/mobile" target="_blank" rel="noopener norefer">IGDB</a> | |
| Linux | `linux` | <a href="https://www.igdb.com/platforms/linux" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/linux" target="_blank" rel="noopener norefer">Mobygames</a> |
| Luna | `luna` | | <a href="https://www.mobygames.com/platform/luna" target="_blank" rel="noopener norefer">Mobygames</a> |
| MOS Technology 6502 | `mos-technology-6502` | | <a href="https://www.mobygames.com/platform/mos-technology-6502" target="_blank" rel="noopener norefer">Mobygames</a> |
| MRE | `mre` | | <a href="https://www.mobygames.com/platform/mre" target="_blank" rel="noopener norefer">Mobygames</a> |
| MSX | `msx` | <a href="https://www.igdb.com/platforms/msx" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/msx" target="_blank" rel="noopener norefer">Mobygames</a> |
| MSX2 | `msx2` | <a href="https://www.igdb.com/platforms/msx2" target="_blank" rel="noopener norefer">IGDB</a> | |
| Mac | `mac` | <a href="https://www.igdb.com/platforms/mac" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/macintosh" target="_blank" rel="noopener norefer">Mobygames</a> |
| Macintosh | `mac` | | <a href="https://www.mobygames.com/platform/mac" target="_blank" rel="noopener norefer">Mobygames</a> |
| Maemo | `maemo` | | <a href="https://www.mobygames.com/platform/maemo" target="_blank" rel="noopener norefer">Mobygames</a> |
| Mainframe | `mainframe` | | <a href="https://www.mobygames.com/platform/mainframe" target="_blank" rel="noopener norefer">Mobygames</a> |
| Matsushita/Panasonic JR | `matsushitapanasonic-jr` | | <a href="https://www.mobygames.com/platform/matsushitapanasonic-jr" target="_blank" rel="noopener norefer">Mobygames</a> |
| Mattel Aquarius | `mattel-aquarius` | | <a href="https://www.mobygames.com/platform/mattel-aquarius" target="_blank" rel="noopener norefer">Mobygames</a> |
| MeeGo | `meego` | | <a href="https://www.mobygames.com/platform/meego" target="_blank" rel="noopener norefer">Mobygames</a> |
| Mega Duck/Cougar Boy | `mega-duck-slash-cougar-boy` | <a href="https://www.igdb.com/platforms/mega-duck-slash-cougar-boy" target="_blank" rel="noopener norefer">IGDB</a> | |
| Memotech MTX | `memotech-mtx` | | <a href="https://www.mobygames.com/platform/memotech-mtx" target="_blank" rel="noopener norefer">Mobygames</a> |
| Meritum | `meritum` | | <a href="https://www.mobygames.com/platform/meritum" target="_blank" rel="noopener norefer">Mobygames</a> |
| Meta Quest 2 | `meta-quest-2` | <a href="https://www.igdb.com/platforms/meta-quest-2" target="_blank" rel="noopener norefer">IGDB</a> | |
| Meta Quest 3 | `meta-quest-3` | <a href="https://www.igdb.com/platforms/meta-quest-3" target="_blank" rel="noopener norefer">IGDB</a> | |
| Microbee | `microbee` | | <a href="https://www.mobygames.com/platform/microbee" target="_blank" rel="noopener norefer">Mobygames</a> |
| Microtan 65 | `microtan-65` | | <a href="https://www.mobygames.com/platform/microtan-65" target="_blank" rel="noopener norefer">Mobygames</a> |
| Microvision | `microvision--1` | <a href="https://www.igdb.com/platforms/microvision--1" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/microvision" target="_blank" rel="noopener norefer">Mobygames</a> |
| Mophun | `mophun` | | <a href="https://www.mobygames.com/platform/mophun" target="_blank" rel="noopener norefer">Mobygames</a> |
| Motorola 6800 | `motorola-6800` | | <a href="https://www.mobygames.com/platform/motorola-6800" target="_blank" rel="noopener norefer">Mobygames</a> |
| Motorola 68k | `motorola-68k` | | <a href="https://www.mobygames.com/platform/motorola-68k" target="_blank" rel="noopener norefer">Mobygames</a> |
| N-Gage | `ngage` | <a href="https://www.igdb.com/platforms/ngage" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/ngage" target="_blank" rel="noopener norefer">Mobygames</a> |
| N-Gage (service) | `ngage2` | | <a href="https://www.mobygames.com/platform/ngage2" target="_blank" rel="noopener norefer">Mobygames</a> |
| NEC PC-6000 Series | `nec-pc-6000-series` | <a href="https://www.igdb.com/platforms/nec-pc-6000-series" target="_blank" rel="noopener norefer">IGDB</a> | |
| Nascom | `nascom` | | <a href="https://www.mobygames.com/platform/nascom" target="_blank" rel="noopener norefer">Mobygames</a> |
| Neo Geo | `neogeoaes` | | <a href="https://www.mobygames.com/platform/neogeoaes" target="_blank" rel="noopener norefer">Mobygames</a> |
| Neo Geo AES | `neogeoaes` | <a href="https://www.igdb.com/platforms/neogeoaes" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/neo-geo" target="_blank" rel="noopener norefer">Mobygames</a> |
| Neo Geo CD | `neo-geo-cd` | <a href="https://www.igdb.com/platforms/neo-geo-cd" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/neo-geo-cd" target="_blank" rel="noopener norefer">Mobygames</a> |
| Neo Geo MVS | `neogeomvs` | <a href="https://www.igdb.com/platforms/neogeomvs" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/neo-geo" target="_blank" rel="noopener norefer">Mobygames</a> |
| Neo Geo Pocket | `neo-geo-pocket` | <a href="https://www.igdb.com/platforms/neo-geo-pocket" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/neo-geo-pocket" target="_blank" rel="noopener norefer">Mobygames</a> |
| Neo Geo Pocket Color | `neo-geo-pocket-color` | <a href="https://www.igdb.com/platforms/neo-geo-pocket-color" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/neo-geo-pocket-color" target="_blank" rel="noopener norefer">Mobygames</a> |
| Neo Geo X | `neo-geo-x` | | <a href="https://www.mobygames.com/platform/neo-geo-x" target="_blank" rel="noopener norefer">Mobygames</a> |
| New Nintendo 3DS | `new-nintendo-3ds` | <a href="https://www.igdb.com/platforms/new-nintendo-3ds" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/new-nintendo-3ds" target="_blank" rel="noopener norefer">Mobygames</a> |
| NewBrain | `newbrain` | | <a href="https://www.mobygames.com/platform/newbrain" target="_blank" rel="noopener norefer">Mobygames</a> |
| Newton | `newton` | | <a href="https://www.mobygames.com/platform/newton" target="_blank" rel="noopener norefer">Mobygames</a> |
| Nintendo 3DS | `3ds` | <a href="https://www.igdb.com/platforms/3ds" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/3ds" target="_blank" rel="noopener norefer">Mobygames</a> |
| Nintendo 64 | `n64` | <a href="https://www.igdb.com/platforms/n64" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/n64" target="_blank" rel="noopener norefer">Mobygames</a> |
| Nintendo 64DD | `nintendo-64dd` | <a href="https://www.igdb.com/platforms/nintendo-64dd" target="_blank" rel="noopener norefer">IGDB</a> | |
| Nintendo DS | `nds` | <a href="https://www.igdb.com/platforms/nds" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/nintendo-ds" target="_blank" rel="noopener norefer">Mobygames</a> |
| Nintendo DSi | `nintendo-dsi` | <a href="https://www.igdb.com/platforms/nintendo-dsi" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/nintendo-dsi" target="_blank" rel="noopener norefer">Mobygames</a> |
| Nintendo Entertainment System | `nes` | <a href="https://www.igdb.com/platforms/nes" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/nes" target="_blank" rel="noopener norefer">Mobygames</a> |
| Nintendo GameCube | `ngc` | <a href="https://www.igdb.com/platforms/ngc" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/gamecube" target="_blank" rel="noopener norefer">Mobygames</a> |
| Nintendo PlayStation | `nintendo-playstation` | <a href="https://www.igdb.com/platforms/nintendo-playstation" target="_blank" rel="noopener norefer">IGDB</a> | |
| Nintendo Switch | `switch` | <a href="https://www.igdb.com/platforms/switch" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/switch" target="_blank" rel="noopener norefer">Mobygames</a> |
| North Star | `northstar` | | <a href="https://www.mobygames.com/platform/northstar" target="_blank" rel="noopener norefer">Mobygames</a> |
| Noval 760 | `noval-760` | | <a href="https://www.mobygames.com/platform/noval-760" target="_blank" rel="noopener norefer">Mobygames</a> |
| Nuon | `nuon` | <a href="https://www.igdb.com/platforms/nuon" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/nuon" target="_blank" rel="noopener norefer">Mobygames</a> |
| OOParts | `ooparts` | <a href="https://www.igdb.com/platforms/ooparts" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/ooparts" target="_blank" rel="noopener norefer">Mobygames</a> |
| OS/2 | `os2` | | <a href="https://www.mobygames.com/platform/os2" target="_blank" rel="noopener norefer">Mobygames</a> |
| Oculus Go | `oculus-go` | <a href="https://www.igdb.com/platforms/oculus-go" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/oculus-go" target="_blank" rel="noopener norefer">Mobygames</a> |
| Oculus Quest | `oculus-quest` | <a href="https://www.igdb.com/platforms/oculus-quest" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/oculus-quest" target="_blank" rel="noopener norefer">Mobygames</a> |
| Oculus Rift | `oculus-rift` | <a href="https://www.igdb.com/platforms/oculus-rift" target="_blank" rel="noopener norefer">IGDB</a> | |
| Odyssey | `odyssey--1` | <a href="https://www.igdb.com/platforms/odyssey--1" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/odyssey" target="_blank" rel="noopener norefer">Mobygames</a> |
| Odyssey 2/Videopac G7000 | `odyssey-2-slash-videopac-g7000` | <a href="https://www.igdb.com/platforms/odyssey-2-slash-videopac-g7000" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/odyssey-2" target="_blank" rel="noopener norefer">Mobygames</a> |
| Ohio Scientific | `ohio-scientific` | | <a href="https://www.mobygames.com/platform/ohio-scientific" target="_blank" rel="noopener norefer">Mobygames</a> |
| OnLive Game System | `onlive-game-system` | <a href="https://www.igdb.com/platforms/onlive-game-system" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/onlive" target="_blank" rel="noopener norefer">Mobygames</a> |
| Orao | `orao` | | <a href="https://www.mobygames.com/platform/orao" target="_blank" rel="noopener norefer">Mobygames</a> |
| Oric | `oric` | | <a href="https://www.mobygames.com/platform/oric" target="_blank" rel="noopener norefer">Mobygames</a> |
| Ouya | `ouya` | <a href="https://www.igdb.com/platforms/ouya" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/ouya" target="_blank" rel="noopener norefer">Mobygames</a> |
| PC (Microsoft Windows) | `win` | <a href="https://www.igdb.com/platforms/win" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/windows" target="_blank" rel="noopener norefer">Mobygames</a> |
| PC Booter | `pc-booter` | | <a href="https://www.mobygames.com/platform/pc-booter" target="_blank" rel="noopener norefer">Mobygames</a> |
| PC Engine SuperGrafx | `supergrafx` | <a href="https://www.igdb.com/platforms/supergrafx" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/supergrafx" target="_blank" rel="noopener norefer">Mobygames</a> |
| PC-50X Family | `pc-50x-family` | <a href="https://www.igdb.com/platforms/pc-50x-family" target="_blank" rel="noopener norefer">IGDB</a> | |
| PC-6001 | `pc-6001` | | <a href="https://www.mobygames.com/platform/pc-6001" target="_blank" rel="noopener norefer">Mobygames</a> |
| PC-8000 | `pc-8000` | | <a href="https://www.mobygames.com/platform/pc-8000" target="_blank" rel="noopener norefer">Mobygames</a> |
| PC-8800 Series | `pc-8800-series` | <a href="https://www.igdb.com/platforms/pc-8800-series" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/pc88" target="_blank" rel="noopener norefer">Mobygames</a> |
| PC-9800 Series | `pc-9800-series` | <a href="https://www.igdb.com/platforms/pc-9800-series" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/pc98" target="_blank" rel="noopener norefer">Mobygames</a> |
| PC-FX | `pc-fx` | <a href="https://www.igdb.com/platforms/pc-fx" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/pc-fx" target="_blank" rel="noopener norefer">Mobygames</a> |
| PDP-1 | `pdp1` | <a href="https://www.igdb.com/platforms/pdp1" target="_blank" rel="noopener norefer">IGDB</a> | |
| PDP-10 | `pdp10` | <a href="https://www.igdb.com/platforms/pdp10" target="_blank" rel="noopener norefer">IGDB</a> | |
| PDP-11 | `pdp11` | <a href="https://www.igdb.com/platforms/pdp11" target="_blank" rel="noopener norefer">IGDB</a> | |
| PDP-8 | `pdp-8--1` | <a href="https://www.igdb.com/platforms/pdp-8--1" target="_blank" rel="noopener norefer">IGDB</a> | |
| PICO | `pico` | | <a href="https://www.mobygames.com/platform/pico" target="_blank" rel="noopener norefer">Mobygames</a> |
| PLATO | `plato--1` | <a href="https://www.igdb.com/platforms/plato--1" target="_blank" rel="noopener norefer">IGDB</a> | |
| PS Vita | `psvita` | | <a href="https://www.mobygames.com/platform/psvita" target="_blank" rel="noopener norefer">Mobygames</a> |
| Palm OS | `palm-os` | <a href="https://www.igdb.com/platforms/palm-os" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/palmos" target="_blank" rel="noopener norefer">Mobygames</a> |
| Panasonic Jungle | `panasonic-jungle` | <a href="https://www.igdb.com/platforms/panasonic-jungle" target="_blank" rel="noopener norefer">IGDB</a> | |
| Panasonic M2 | `panasonic-m2` | <a href="https://www.igdb.com/platforms/panasonic-m2" target="_blank" rel="noopener norefer">IGDB</a> | |
| Pandora | `pandora` | | <a href="https://www.mobygames.com/platform/pandora" target="_blank" rel="noopener norefer">Mobygames</a> |
| Pebble | `pebble` | | <a href="https://www.mobygames.com/platform/pebble" target="_blank" rel="noopener norefer">Mobygames</a> |
| Philips CD-i | `philips-cd-i` | <a href="https://www.igdb.com/platforms/philips-cd-i" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/cd-i" target="_blank" rel="noopener norefer">Mobygames</a> |
| Philips VG 5000 | `philips-vg-5000` | | <a href="https://www.mobygames.com/platform/philips-vg-5000" target="_blank" rel="noopener norefer">Mobygames</a> |
| Photo CD | `photocd` | | <a href="https://www.mobygames.com/platform/photocd" target="_blank" rel="noopener norefer">Mobygames</a> |
| Pippin | `pippin` | | <a href="https://www.mobygames.com/platform/pippin" target="_blank" rel="noopener norefer">Mobygames</a> |
| PlayStation | `ps` | <a href="https://www.igdb.com/platforms/ps" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/playstation" target="_blank" rel="noopener norefer">Mobygames</a> |
| PlayStation 2 | `ps2` | <a href="https://www.igdb.com/platforms/ps2" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/ps2" target="_blank" rel="noopener norefer">Mobygames</a> |
| PlayStation 3 | `ps3` | <a href="https://www.igdb.com/platforms/ps3" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/ps3" target="_blank" rel="noopener norefer">Mobygames</a> |
| PlayStation 4 | `ps4--1` | <a href="https://www.igdb.com/platforms/ps4--1" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/playstation-4" target="_blank" rel="noopener norefer">Mobygames</a> |
| PlayStation 5 | `ps5` | <a href="https://www.igdb.com/platforms/ps5" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/playstation-5" target="_blank" rel="noopener norefer">Mobygames</a> |
| PlayStation Now | `playstation-now` | | <a href="https://www.mobygames.com/platform/playstation-now" target="_blank" rel="noopener norefer">Mobygames</a> |
| PlayStation Portable | `psp` | <a href="https://www.igdb.com/platforms/psp" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/psp" target="_blank" rel="noopener norefer">Mobygames</a> |
| PlayStation VR | `psvr` | <a href="https://www.igdb.com/platforms/psvr" target="_blank" rel="noopener norefer">IGDB</a> | |
| PlayStation VR2 | `psvr2` | <a href="https://www.igdb.com/platforms/psvr2" target="_blank" rel="noopener norefer">IGDB</a> | |
| PlayStation Vita | `psvita` | <a href="https://www.igdb.com/platforms/psvita" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/ps-vita" target="_blank" rel="noopener norefer">Mobygames</a> |
| Playdate | `playdate` | <a href="https://www.igdb.com/platforms/playdate" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/playdate" target="_blank" rel="noopener norefer">Mobygames</a> |
| Playdia | `playdia` | <a href="https://www.igdb.com/platforms/playdia" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/playdia" target="_blank" rel="noopener norefer">Mobygames</a> |
| Plex Arcade | `plex-arcade` | | <a href="https://www.mobygames.com/platform/plex-arcade" target="_blank" rel="noopener norefer">Mobygames</a> |
| Plug & Play | `plug-and-play` | <a href="https://www.igdb.com/platforms/plug-and-play" target="_blank" rel="noopener norefer">IGDB</a> | |
| PocketStation | `pocketstation` | <a href="https://www.igdb.com/platforms/pocketstation" target="_blank" rel="noopener norefer">IGDB</a> | |
| Pokitto | `pokitto` | | <a href="https://www.mobygames.com/platform/pokitto" target="_blank" rel="noopener norefer">Mobygames</a> |
| Pokémon mini | `pokemon-mini` | <a href="https://www.igdb.com/platforms/pokemon-mini" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/pokemon-mini" target="_blank" rel="noopener norefer">Mobygames</a> |
| Poly-88 | `poly-88` | | <a href="https://www.mobygames.com/platform/poly-88" target="_blank" rel="noopener norefer">Mobygames</a> |
| R-Zone | `r-zone` | <a href="https://www.igdb.com/platforms/r-zone" target="_blank" rel="noopener norefer">IGDB</a> | |
| RCA Studio II | `rca-studio-ii` | | <a href="https://www.mobygames.com/platform/rca-studio-ii" target="_blank" rel="noopener norefer">Mobygames</a> |
| Research Machines 380Z | `research-machines-380z` | | <a href="https://www.mobygames.com/platform/research-machines-380z" target="_blank" rel="noopener norefer">Mobygames</a> |
| Roku | `roku` | | <a href="https://www.mobygames.com/platform/roku" target="_blank" rel="noopener norefer">Mobygames</a> |
| SAM Coupé | `sam-coupe` | | <a href="https://www.mobygames.com/platform/sam-coupe" target="_blank" rel="noopener norefer">Mobygames</a> |
| SC/MP | `scmp` | | <a href="https://www.mobygames.com/platform/scmp" target="_blank" rel="noopener norefer">Mobygames</a> |
| SD-200/270/290 | `sd-200270290` | | <a href="https://www.mobygames.com/platform/sd-200270290" target="_blank" rel="noopener norefer">Mobygames</a> |
| SDS Sigma 7 | `sdssigma7` | <a href="https://www.igdb.com/platforms/sdssigma7" target="_blank" rel="noopener norefer">IGDB</a> | |
| SEGA 32X | `sega-32x` | | <a href="https://www.mobygames.com/platform/sega-32x" target="_blank" rel="noopener norefer">Mobygames</a> |
| SEGA CD | `segacd` | | <a href="https://www.mobygames.com/platform/segacd" target="_blank" rel="noopener norefer">Mobygames</a> |
| SEGA Master System | `sega-master-system` | | <a href="https://www.mobygames.com/platform/sega-master-system" target="_blank" rel="noopener norefer">Mobygames</a> |
| SEGA Saturn | `saturn` | | <a href="https://www.mobygames.com/platform/saturn" target="_blank" rel="noopener norefer">Mobygames</a> |
| SG-1000 | `sg1000` | <a href="https://www.igdb.com/platforms/sg1000" target="_blank" rel="noopener norefer">IGDB</a> | |
| SK-VM | `sk-vm` | | <a href="https://www.mobygames.com/platform/sk-vm" target="_blank" rel="noopener norefer">Mobygames</a> |
| SMC-777 | `smc-777` | | <a href="https://www.mobygames.com/platform/smc-777" target="_blank" rel="noopener norefer">Mobygames</a> |
| SRI-500/1000 | `sri-5001000` | | <a href="https://www.mobygames.com/platform/sri-5001000" target="_blank" rel="noopener norefer">Mobygames</a> |
| SWTPC 6800 | `swtpc-6800` | | <a href="https://www.mobygames.com/platform/swtpc-6800" target="_blank" rel="noopener norefer">Mobygames</a> |
| Satellaview | `satellaview` | <a href="https://www.igdb.com/platforms/satellaview" target="_blank" rel="noopener norefer">IGDB</a> | |
| Sega 32X | `sega32` | <a href="https://www.igdb.com/platforms/sega32" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/sega32" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sega CD | `segacd` | <a href="https://www.igdb.com/platforms/segacd" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/sega-cd" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sega Game Gear | `gamegear` | <a href="https://www.igdb.com/platforms/gamegear" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/game-gear" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sega Master System/Mark III | `sms` | <a href="https://www.igdb.com/platforms/sms" target="_blank" rel="noopener norefer">IGDB</a> | |
| Sega Mega Drive/Genesis | `genesis-slash-megadrive` | <a href="https://www.igdb.com/platforms/genesis-slash-megadrive" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/genesis" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sega Pico | `sega-pico` | <a href="https://www.igdb.com/platforms/sega-pico" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/sega-pico" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sega Saturn | `saturn` | <a href="https://www.igdb.com/platforms/saturn" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/sega-saturn" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sharp MZ-2200 | `sharp-mz-2200` | <a href="https://www.igdb.com/platforms/sharp-mz-2200" target="_blank" rel="noopener norefer">IGDB</a> | |
| Sharp MZ-80B/2000/2500 | `sharp-mz-80b20002500` | | <a href="https://www.mobygames.com/platform/sharp-mz-80b20002500" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sharp MZ-80K/700/800/1500 | `sharp-mz-80k7008001500` | | <a href="https://www.mobygames.com/platform/sharp-mz-80k7008001500" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sharp X1 | `x1` | <a href="https://www.igdb.com/platforms/x1" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/sharp-x1" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sharp X68000 | `sharp-x68000` | <a href="https://www.igdb.com/platforms/sharp-x68000" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/sharp-x68000" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sharp Zaurus | `sharp-zaurus` | | <a href="https://www.mobygames.com/platform/sharp-zaurus" target="_blank" rel="noopener norefer">Mobygames</a> |
| Signetics 2650 | `signetics-2650` | | <a href="https://www.mobygames.com/platform/signetics-2650" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sinclair QL | `sinclair-ql` | <a href="https://www.igdb.com/platforms/sinclair-ql" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/sinclair-ql" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sinclair ZX81 | `sinclair-zx81` | <a href="https://www.igdb.com/platforms/sinclair-zx81" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/zx81" target="_blank" rel="noopener norefer">Mobygames</a> |
| Socrates | `socrates` | | <a href="https://www.mobygames.com/platform/socrates" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sol-20 | `sol-20` | <a href="https://www.igdb.com/platforms/sol-20" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/sol-20" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sord M5 | `sord-m5` | | <a href="https://www.mobygames.com/platform/sord-m5" target="_blank" rel="noopener norefer">Mobygames</a> |
| Spectravideo | `spectravideo` | | <a href="https://www.mobygames.com/platform/spectravideo" target="_blank" rel="noopener norefer">Mobygames</a> |
| Super A'can | `super-acan` | | <a href="https://www.mobygames.com/platform/super-acan" target="_blank" rel="noopener norefer">Mobygames</a> |
| Super Famicom | `sfam` | <a href="https://www.igdb.com/platforms/sfam" target="_blank" rel="noopener norefer">IGDB</a> | |
| Super Nintendo Entertainment System | `snes` | <a href="https://www.igdb.com/platforms/snes" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/snes" target="_blank" rel="noopener norefer">Mobygames</a> |
| Super Vision 8000 | `super-vision-8000` | | <a href="https://www.mobygames.com/platform/super-vision-8000" target="_blank" rel="noopener norefer">Mobygames</a> |
| Supervision | `supervision` | | <a href="https://www.mobygames.com/platform/supervision" target="_blank" rel="noopener norefer">Mobygames</a> |
| Sure Shot HD | `sure-shot-hd` | | <a href="https://www.mobygames.com/platform/sure-shot-hd" target="_blank" rel="noopener norefer">Mobygames</a> |
| SwanCrystal | `swancrystal` | <a href="https://www.igdb.com/platforms/swancrystal" target="_blank" rel="noopener norefer">IGDB</a> | |
| Symbian | `symbian` | | <a href="https://www.mobygames.com/platform/symbian" target="_blank" rel="noopener norefer">Mobygames</a> |
| TADS | `tads` | | <a href="https://www.mobygames.com/platform/tads" target="_blank" rel="noopener norefer">Mobygames</a> |
| TI Programmable Calculator | `ti-programmable-calculator` | | <a href="https://www.mobygames.com/platform/ti-programmable-calculator" target="_blank" rel="noopener norefer">Mobygames</a> |
| TI-99/4A | `ti-994a` | | <a href="https://www.mobygames.com/platform/ti-994a" target="_blank" rel="noopener norefer">Mobygames</a> |
| TIM | `tim` | | <a href="https://www.mobygames.com/platform/tim" target="_blank" rel="noopener norefer">Mobygames</a> |
| TRS-80 | `trs-80` | <a href="https://www.igdb.com/platforms/trs-80" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/trs-80" target="_blank" rel="noopener norefer">Mobygames</a> |
| TRS-80 Color Computer | `trs-80-color-computer` | <a href="https://www.igdb.com/platforms/trs-80-color-computer" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/trs-80-coco" target="_blank" rel="noopener norefer">Mobygames</a> |
| TRS-80 MC-10 | `trs-80-mc-10` | | <a href="https://www.mobygames.com/platform/trs-80-mc-10" target="_blank" rel="noopener norefer">Mobygames</a> |
| TRS-80 Model 100 | `trs-80-model-100` | | <a href="https://www.mobygames.com/platform/trs-80-model-100" target="_blank" rel="noopener norefer">Mobygames</a> |
| Taito X-55 | `taito-x-55` | | <a href="https://www.mobygames.com/platform/taito-x-55" target="_blank" rel="noopener norefer">Mobygames</a> |
| Tapwave Zodiac | `zod` | <a href="https://www.igdb.com/platforms/zod" target="_blank" rel="noopener norefer">IGDB</a> | |
| Tatung Einstein | `tatung-einstein` | <a href="https://www.igdb.com/platforms/tatung-einstein" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/tatung-einstein" target="_blank" rel="noopener norefer">Mobygames</a> |
| Tektronix 4050 | `tektronix-4050` | | <a href="https://www.mobygames.com/platform/tektronix-4050" target="_blank" rel="noopener norefer">Mobygames</a> |
| Tele-Spiel ES-2201 | `tele-spiel` | | <a href="https://www.mobygames.com/platform/tele-spiel" target="_blank" rel="noopener norefer">Mobygames</a> |
| Telstar Arcade | `telstar-arcade` | | <a href="https://www.mobygames.com/platform/telstar-arcade" target="_blank" rel="noopener norefer">Mobygames</a> |
| Terebikko / See 'n Say Video Phone | `terebikko-slash-see-n-say-video-phone` | <a href="https://www.igdb.com/platforms/terebikko-slash-see-n-say-video-phone" target="_blank" rel="noopener norefer">IGDB</a> | |
| Terminal | `terminal` | | <a href="https://www.mobygames.com/platform/terminal" target="_blank" rel="noopener norefer">Mobygames</a> |
| Texas Instruments TI-99 | `ti-99` | <a href="https://www.igdb.com/platforms/ti-99" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/ti-99" target="_blank" rel="noopener norefer">Mobygames</a> |
| Thomson MO5 | `thomson-mo5` | <a href="https://www.igdb.com/platforms/thomson-mo5" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/thomson-mo" target="_blank" rel="noopener norefer">Mobygames</a> |
| Thomson TO | `thomson-to` | | <a href="https://www.mobygames.com/platform/thomson-to" target="_blank" rel="noopener norefer">Mobygames</a> |
| Tiki 100 | `tiki-100` | | <a href="https://www.mobygames.com/platform/tiki-100" target="_blank" rel="noopener norefer">Mobygames</a> |
| Timex Sinclair 2068 | `timex-sinclair-2068` | | <a href="https://www.mobygames.com/platform/timex-sinclair-2068" target="_blank" rel="noopener norefer">Mobygames</a> |
| Tizen | `tizen` | | <a href="https://www.mobygames.com/platform/tizen" target="_blank" rel="noopener norefer">Mobygames</a> |
| Tomahawk F1 | `tomahawk-f1` | | <a href="https://www.mobygames.com/platform/tomahawk-f1" target="_blank" rel="noopener norefer">Mobygames</a> |
| Tomy Tutor | `tomy-tutor` | | <a href="https://www.mobygames.com/platform/tomy-tutor" target="_blank" rel="noopener norefer">Mobygames</a> |
| Triton | `triton` | | <a href="https://www.mobygames.com/platform/triton" target="_blank" rel="noopener norefer">Mobygames</a> |
| TurboGrafx CD | `turbografx-16-slash-pc-engine-cd` | | <a href="https://www.mobygames.com/platform/turbografx-16-slash-pc-engine-cd" target="_blank" rel="noopener norefer">Mobygames</a> |
| TurboGrafx-16 | `turbografx16--1` | | <a href="https://www.mobygames.com/platform/turbografx16--1" target="_blank" rel="noopener norefer">Mobygames</a> |
| TurboGrafx-16/PC Engine | `turbografx16--1` | <a href="https://www.igdb.com/platforms/turbografx16--1" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/turbo-grafx" target="_blank" rel="noopener norefer">Mobygames</a> |
| Turbografx-16/PC Engine CD | `turbografx-16-slash-pc-engine-cd` | <a href="https://www.igdb.com/platforms/turbografx-16-slash-pc-engine-cd" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/turbografx-cd" target="_blank" rel="noopener norefer">Mobygames</a> |
| V.Flash | `vflash` | | <a href="https://www.mobygames.com/platform/vflash" target="_blank" rel="noopener norefer">Mobygames</a> |
| V.Smile | `vsmile` | <a href="https://www.igdb.com/platforms/vsmile" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/vsmile" target="_blank" rel="noopener norefer">Mobygames</a> |
| VIS | `vis` | | <a href="https://www.mobygames.com/platform/vis" target="_blank" rel="noopener norefer">Mobygames</a> |
| Vectrex | `vectrex` | <a href="https://www.igdb.com/platforms/vectrex" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/vectrex" target="_blank" rel="noopener norefer">Mobygames</a> |
| Versatile | `versatile` | | <a href="https://www.mobygames.com/platform/versatile" target="_blank" rel="noopener norefer">Mobygames</a> |
| VideoBrain | `videobrain` | | <a href="https://www.mobygames.com/platform/videobrain" target="_blank" rel="noopener norefer">Mobygames</a> |
| Videopac+ G7400 | `videopac-g7400` | | <a href="https://www.mobygames.com/platform/videopac-g7400" target="_blank" rel="noopener norefer">Mobygames</a> |
| Virtual Boy | `virtualboy` | <a href="https://www.igdb.com/platforms/virtualboy" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/virtual-boy" target="_blank" rel="noopener norefer">Mobygames</a> |
| Virtual Console | `vc` | <a href="https://www.igdb.com/platforms/vc" target="_blank" rel="noopener norefer">IGDB</a> | |
| Visual Memory Unit / Visual Memory System | `visual-memory-unit-slash-visual-memory-system` | <a href="https://www.igdb.com/platforms/visual-memory-unit-slash-visual-memory-system" target="_blank" rel="noopener norefer">IGDB</a> | |
| WIPI | `wipi` | | <a href="https://www.mobygames.com/platform/wipi" target="_blank" rel="noopener norefer">Mobygames</a> |
| Wang 2200 | `wang2200` | | <a href="https://www.mobygames.com/platform/wang2200" target="_blank" rel="noopener norefer">Mobygames</a> |
| Watara/QuickShot Supervision | `watara-slash-quickshot-supervision` | <a href="https://www.igdb.com/platforms/watara-slash-quickshot-supervision" target="_blank" rel="noopener norefer">IGDB</a> | |
| Web browser | `browser` | <a href="https://www.igdb.com/platforms/browser" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/browser" target="_blank" rel="noopener norefer">Mobygames</a> |
| Wii | `wii` | <a href="https://www.igdb.com/platforms/wii" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/wii" target="_blank" rel="noopener norefer">Mobygames</a> |
| Wii U | `wiiu` | <a href="https://www.igdb.com/platforms/wiiu" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/wii-u" target="_blank" rel="noopener norefer">Mobygames</a> |
| Windows | `win` | | <a href="https://www.mobygames.com/platform/win" target="_blank" rel="noopener norefer">Mobygames</a> |
| Windows 3.x | `win3x` | | <a href="https://www.mobygames.com/platform/win3x" target="_blank" rel="noopener norefer">Mobygames</a> |
| Windows Apps | `windows-apps` | | <a href="https://www.mobygames.com/platform/windows-apps" target="_blank" rel="noopener norefer">Mobygames</a> |
| Windows Mobile | `windows-mobile` | <a href="https://www.igdb.com/platforms/windows-mobile" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/windowsphone" target="_blank" rel="noopener norefer">Mobygames</a> |
| Windows Phone | `winphone` | <a href="https://www.igdb.com/platforms/winphone" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/windows-phone" target="_blank" rel="noopener norefer">Mobygames</a> |
| WonderSwan | `wonderswan` | <a href="https://www.igdb.com/platforms/wonderswan" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/wonderswan" target="_blank" rel="noopener norefer">Mobygames</a> |
| WonderSwan Color | `wonderswan-color` | <a href="https://www.igdb.com/platforms/wonderswan-color" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/wonderswan-color" target="_blank" rel="noopener norefer">Mobygames</a> |
| XaviXPORT | `xavixport` | | <a href="https://www.mobygames.com/platform/xavixport" target="_blank" rel="noopener norefer">Mobygames</a> |
| Xbox | `xbox` | <a href="https://www.igdb.com/platforms/xbox" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/xbox" target="_blank" rel="noopener norefer">Mobygames</a> |
| Xbox 360 | `xbox360` | <a href="https://www.igdb.com/platforms/xbox360" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/xbox360" target="_blank" rel="noopener norefer">Mobygames</a> |
| Xbox Cloud Gaming | `xboxcloudgaming` | | <a href="https://www.mobygames.com/platform/xboxcloudgaming" target="_blank" rel="noopener norefer">Mobygames</a> |
| Xbox One | `xboxone` | <a href="https://www.igdb.com/platforms/xboxone" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/xbox-one" target="_blank" rel="noopener norefer">Mobygames</a> |
| Xbox Series X | `series-x` | <a href="https://www.igdb.com/platforms/series-x" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/xbox-series" target="_blank" rel="noopener norefer">Mobygames</a> |
| Xerox Alto | `xerox-alto` | | <a href="https://www.mobygames.com/platform/xerox-alto" target="_blank" rel="noopener norefer">Mobygames</a> |
| Z-machine | `z-machine` | | <a href="https://www.mobygames.com/platform/z-machine" target="_blank" rel="noopener norefer">Mobygames</a> |
| ZX Spectrum | `zxs` | <a href="https://www.igdb.com/platforms/zxs" target="_blank" rel="noopener norefer">IGDB</a> | |
| ZX Spectrum Next | `zx-spectrum-next` | | <a href="https://www.mobygames.com/platform/zx-spectrum-next" target="_blank" rel="noopener norefer">Mobygames</a> |
| ZX80 | `zx80` | | <a href="https://www.mobygames.com/platform/zx80" target="_blank" rel="noopener norefer">Mobygames</a> |
| ZX81 | `sinclair-zx81` | | <a href="https://www.mobygames.com/platform/sinclair-zx81" target="_blank" rel="noopener norefer">Mobygames</a> |
| Zeebo | `zeebo` | <a href="https://www.igdb.com/platforms/zeebo" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/zeebo" target="_blank" rel="noopener norefer">Mobygames</a> |
| Zilog Z80 | `z80` | | <a href="https://www.mobygames.com/platform/z80" target="_blank" rel="noopener norefer">Mobygames</a> |
| Zilog Z8000 | `zilog-z8000` | | <a href="https://www.mobygames.com/platform/zilog-z8000" target="_blank" rel="noopener norefer">Mobygames</a> |
| Zodiac | `zodiac` | | <a href="https://www.mobygames.com/platform/zodiac" target="_blank" rel="noopener norefer">Mobygames</a> |
| Zune | `zune` | | <a href="https://www.mobygames.com/platform/zune" target="_blank" rel="noopener norefer">Mobygames</a> |
| bada | `bada` | | <a href="https://www.mobygames.com/platform/bada" target="_blank" rel="noopener norefer">Mobygames</a> |
| digiBlast | `digiblast` | | <a href="https://www.mobygames.com/platform/digiblast" target="_blank" rel="noopener norefer">Mobygames</a> |
| iOS | `ios` | <a href="https://www.igdb.com/platforms/ios" target="_blank" rel="noopener norefer">IGDB</a> | <a href="https://www.mobygames.com/platform/iphone" target="_blank" rel="noopener norefer">Mobygames</a> |
| iPad | `ipad` | | <a href="https://www.mobygames.com/platform/ipad" target="_blank" rel="noopener norefer">Mobygames</a> |
| iPod Classic | `ipod-classic` | | <a href="https://www.mobygames.com/platform/ipod-classic" target="_blank" rel="noopener norefer">Mobygames</a> |
| iiRcade | `iircade` | | <a href="https://www.mobygames.com/platform/iircade" target="_blank" rel="noopener norefer">Mobygames</a> |
| tvOS | `tvos` | | <a href="https://www.mobygames.com/platform/tvos" target="_blank" rel="noopener norefer">Mobygames</a> |
| visionOS | `visionos` | <a href="https://www.igdb.com/platforms/visionos" target="_blank" rel="noopener norefer">IGDB</a> | |
| watchOS | `watchos` | | <a href="https://www.mobygames.com/platform/watchos" target="_blank" rel="noopener norefer">Mobygames</a> |
| webOS | `webos` | | <a href="https://www.mobygames.com/platform/webos" target="_blank" rel="noopener norefer">Mobygames</a> |
-410
View File
@@ -1,410 +0,0 @@
Below is a list of all supported platforms/systems/consoles and their respective folder names. **The folder name is case-sensitive and must be used exactly as it appears in the list below.**
|Platform Name|Folder Name|IGDB|Mobygames|
|---|---|---|---|
1292 Advanced Programmable Video System | `1292-advanced-programmable-video-system` | <a href="https://www.igdb.com/platforms/1292-advanced-programmable-video-system" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/1292-advanced-programmable-video-system" target="_blank" rel="noopener norefer">Mobygames</a>
3DO Interactive Multiplayer | `3do` | <a href="https://www.igdb.com/platforms/3do" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/3do" target="_blank" rel="noopener norefer">Mobygames</a>
ABC 80 | `abc-80` | | <a href="https://www.mobygames.com/platform/abc-80" target="_blank" rel="noopener norefer">Mobygames</a>
APF MP1000/Imagination Machine | `apf` | | <a href="https://www.mobygames.com/platform/apf" target="_blank" rel="noopener norefer">Mobygames</a>
AY-3-8500 | `ay-3-8500` | <a href="https://www.igdb.com/platforms/ay-3-8500" target="_blank" rel="noopener norefer">IGDB</a>| |
AY-3-8603 | `ay-3-8603` | <a href="https://www.igdb.com/platforms/ay-3-8603" target="_blank" rel="noopener norefer">IGDB</a>| |
AY-3-8605 | `ay-3-8605` | <a href="https://www.igdb.com/platforms/ay-3-8605" target="_blank" rel="noopener norefer">IGDB</a>| |
AY-3-8606 | `ay-3-8606` | <a href="https://www.igdb.com/platforms/ay-3-8606" target="_blank" rel="noopener norefer">IGDB</a>| |
AY-3-8607 | `ay-3-8607` | <a href="https://www.igdb.com/platforms/ay-3-8607" target="_blank" rel="noopener norefer">IGDB</a>| |
AY-3-8610 | `ay-3-8610` | <a href="https://www.igdb.com/platforms/ay-3-8610" target="_blank" rel="noopener norefer">IGDB</a>| |
AY-3-8710 | `ay-3-8710` | <a href="https://www.igdb.com/platforms/ay-3-8710" target="_blank" rel="noopener norefer">IGDB</a>| |
AY-3-8760 | `ay-3-8760` | <a href="https://www.igdb.com/platforms/ay-3-8760" target="_blank" rel="noopener norefer">IGDB</a>| |
Acorn Archimedes | `acorn-archimedes` | <a href="https://www.igdb.com/platforms/acorn-archimedes" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/acorn-32-bit" target="_blank" rel="noopener norefer">Mobygames</a>
Acorn Electron | `acorn-electron` | <a href="https://www.igdb.com/platforms/acorn-electron" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/electron" target="_blank" rel="noopener norefer">Mobygames</a>
Adventure Vision | `adventure-vision` | | <a href="https://www.mobygames.com/platform/adventure-vision" target="_blank" rel="noopener norefer">Mobygames</a>
AirConsole | `airconsole` | <a href="https://www.igdb.com/platforms/airconsole" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/airconsole" target="_blank" rel="noopener norefer">Mobygames</a>
Alice 32/90 | `alice-3290` | | <a href="https://www.mobygames.com/platform/alice-3290" target="_blank" rel="noopener norefer">Mobygames</a>
Altair 680 | `altair-680` | | <a href="https://www.mobygames.com/platform/altair-680" target="_blank" rel="noopener norefer">Mobygames</a>
Altair 8800 | `altair-8800` | | <a href="https://www.mobygames.com/platform/altair-8800" target="_blank" rel="noopener norefer">Mobygames</a>
Amazon Alexa | `amazon-alexa` | | <a href="https://www.mobygames.com/platform/amazon-alexa" target="_blank" rel="noopener norefer">Mobygames</a>
Amazon Fire TV | `amazon-fire-tv` | <a href="https://www.igdb.com/platforms/amazon-fire-tv" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/fire-os" target="_blank" rel="noopener norefer">Mobygames</a>
Amiga | `amiga` | <a href="https://www.igdb.com/platforms/amiga" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/amiga" target="_blank" rel="noopener norefer">Mobygames</a>
Amiga CD32 | `amiga-cd32` | <a href="https://www.igdb.com/platforms/amiga-cd32" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/amiga-cd32" target="_blank" rel="noopener norefer">Mobygames</a>
Amstrad CPC | `acpc` | <a href="https://www.igdb.com/platforms/acpc" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/cpc" target="_blank" rel="noopener norefer">Mobygames</a>
Amstrad PCW | `amstrad-pcw` | <a href="https://www.igdb.com/platforms/amstrad-pcw" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/amstrad-pcw" target="_blank" rel="noopener norefer">Mobygames</a>
Android | `android` | <a href="https://www.igdb.com/platforms/android" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/android" target="_blank" rel="noopener norefer">Mobygames</a>
Antstream | `antstream` | | <a href="https://www.mobygames.com/platform/antstream" target="_blank" rel="noopener norefer">Mobygames</a>
Apple I | `apple-i` | | <a href="https://www.mobygames.com/platform/apple-i" target="_blank" rel="noopener norefer">Mobygames</a>
Apple II | `appleii` | <a href="https://www.igdb.com/platforms/appleii" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/apple-ii" target="_blank" rel="noopener norefer">Mobygames</a>
Apple IIGD | `apple2gs` | | <a href="https://www.mobygames.com/platform/apple2gs" target="_blank" rel="noopener norefer">Mobygames</a>
Apple IIGS | `apple-iigs` | <a href="https://www.igdb.com/platforms/apple-iigs" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/apple-iigs" target="_blank" rel="noopener norefer">Mobygames</a>
Apple Pippin | `apple-pippin` | <a href="https://www.igdb.com/platforms/apple-pippin" target="_blank" rel="noopener norefer">IGDB</a>| |
Arcade | `arcade` | <a href="https://www.igdb.com/platforms/arcade" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/arcade" target="_blank" rel="noopener norefer">Mobygames</a>
Arcadia 2001 | `arcadia-2001` | <a href="https://www.igdb.com/platforms/arcadia-2001" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/arcadia-2001" target="_blank" rel="noopener norefer">Mobygames</a>
Arduboy | `arduboy` | <a href="https://www.igdb.com/platforms/arduboy" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/arduboy" target="_blank" rel="noopener norefer">Mobygames</a>
Astral 2000 | `astral-2000` | | <a href="https://www.mobygames.com/platform/astral-2000" target="_blank" rel="noopener norefer">Mobygames</a>
Atari 2600 | `atari2600` | <a href="https://www.igdb.com/platforms/atari2600" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/atari-2600" target="_blank" rel="noopener norefer">Mobygames</a>
Atari 5200 | `atari5200` | <a href="https://www.igdb.com/platforms/atari5200" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/atari-5200" target="_blank" rel="noopener norefer">Mobygames</a>
Atari 7800 | `atari7800` | <a href="https://www.igdb.com/platforms/atari7800" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/atari-7800" target="_blank" rel="noopener norefer">Mobygames</a>
Atari 8-bit | `atari8bit` | <a href="https://www.igdb.com/platforms/atari8bit" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/atari-8-bit" target="_blank" rel="noopener norefer">Mobygames</a>
Atari Jaguar | `jaguar` | <a href="https://www.igdb.com/platforms/jaguar" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/jaguar" target="_blank" rel="noopener norefer">Mobygames</a>
Atari Jaguar CD | `atari-jaguar-cd` | <a href="https://www.igdb.com/platforms/atari-jaguar-cd" target="_blank" rel="noopener norefer">IGDB</a>| |
Atari Lynx | `lynx` | <a href="https://www.igdb.com/platforms/lynx" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/lynx" target="_blank" rel="noopener norefer">Mobygames</a>
Atari ST/STE | `atari-st` | <a href="https://www.igdb.com/platforms/atari-st" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/atari-st" target="_blank" rel="noopener norefer">Mobygames</a>
Atari VCS | `atari-vcs` | | <a href="https://www.mobygames.com/platform/atari-vcs" target="_blank" rel="noopener norefer">Mobygames</a>
Atom | `atom` | | <a href="https://www.mobygames.com/platform/atom" target="_blank" rel="noopener norefer">Mobygames</a>
BBC Micro | `bbcmicro` | | <a href="https://www.mobygames.com/platform/bbcmicro" target="_blank" rel="noopener norefer">Mobygames</a>
BBC Microcomputer System | `bbcmicro` | <a href="https://www.igdb.com/platforms/bbcmicro" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/bbc-micro" target="_blank" rel="noopener norefer">Mobygames</a>
BREW | `brew` | | <a href="https://www.mobygames.com/platform/brew" target="_blank" rel="noopener norefer">Mobygames</a>
Bally Astrocade | `astrocade` | <a href="https://www.igdb.com/platforms/astrocade" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/bally-astrocade" target="_blank" rel="noopener norefer">Mobygames</a>
BeOS | `beos` | | <a href="https://www.mobygames.com/platform/beos" target="_blank" rel="noopener norefer">Mobygames</a>
BlackBerry OS | `blackberry` | <a href="https://www.igdb.com/platforms/blackberry" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/blackberry" target="_blank" rel="noopener norefer">Mobygames</a>
Blacknut | `blacknut` | | <a href="https://www.mobygames.com/platform/blacknut" target="_blank" rel="noopener norefer">Mobygames</a>
Blu-ray Player | `blu-ray-player` | <a href="https://www.igdb.com/platforms/blu-ray-player" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/blu-ray-disc-player" target="_blank" rel="noopener norefer">Mobygames</a>
Bubble | `bubble` | | <a href="https://www.mobygames.com/platform/bubble" target="_blank" rel="noopener norefer">Mobygames</a>
CD-i | `philips-cd-i` | | <a href="https://www.mobygames.com/platform/philips-cd-i" target="_blank" rel="noopener norefer">Mobygames</a>
CDC Cyber 70 | `cdccyber70` | <a href="https://www.igdb.com/platforms/cdccyber70" target="_blank" rel="noopener norefer">IGDB</a>| |
CDTV | `commodore-cdtv` | | <a href="https://www.mobygames.com/platform/commodore-cdtv" target="_blank" rel="noopener norefer">Mobygames</a>
COSMAC | `fred-cosmac` | | <a href="https://www.mobygames.com/platform/fred-cosmac" target="_blank" rel="noopener norefer">Mobygames</a>
CP/M | `cpm` | | <a href="https://www.mobygames.com/platform/cpm" target="_blank" rel="noopener norefer">Mobygames</a>
Call-A-Computer time-shared mainframe computer system | `call-a-computer` | <a href="https://www.igdb.com/platforms/call-a-computer" target="_blank" rel="noopener norefer">IGDB</a>| |
Camputers Lynx | `camputers-lynx` | | <a href="https://www.mobygames.com/platform/camputers-lynx" target="_blank" rel="noopener norefer">Mobygames</a>
Casio Loopy | `casio-loopy` | <a href="https://www.igdb.com/platforms/casio-loopy" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/casio-loopy" target="_blank" rel="noopener norefer">Mobygames</a>
Casio PV-1000 | `casio-pv-1000` | | <a href="https://www.mobygames.com/platform/casio-pv-1000" target="_blank" rel="noopener norefer">Mobygames</a>
Casio Programmable Calculator | `casio-programmable-calculator` | | <a href="https://www.mobygames.com/platform/casio-programmable-calculator" target="_blank" rel="noopener norefer">Mobygames</a>
Champion 2711 | `champion-2711` | | <a href="https://www.mobygames.com/platform/champion-2711" target="_blank" rel="noopener norefer">Mobygames</a>
Channel F | `fairchild-channel-f` | | <a href="https://www.mobygames.com/platform/fairchild-channel-f" target="_blank" rel="noopener norefer">Mobygames</a>
ClickStart | `clickstart` | | <a href="https://www.mobygames.com/platform/clickstart" target="_blank" rel="noopener norefer">Mobygames</a>
Coleco Adam | `colecoadam` | | <a href="https://www.mobygames.com/platform/colecoadam" target="_blank" rel="noopener norefer">Mobygames</a>
ColecoVision | `colecovision` | <a href="https://www.igdb.com/platforms/colecovision" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/colecovision" target="_blank" rel="noopener norefer">Mobygames</a>
Colour Genie | `colour-genie` | | <a href="https://www.mobygames.com/platform/colour-genie" target="_blank" rel="noopener norefer">Mobygames</a>
Commodore 128 | `c128` | | <a href="https://www.mobygames.com/platform/c128" target="_blank" rel="noopener norefer">Mobygames</a>
Commodore 16 | `c16` | <a href="https://www.igdb.com/platforms/c16" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/commodore-16-plus4" target="_blank" rel="noopener norefer">Mobygames</a>
Commodore C64/128/MAX | `c64` | <a href="https://www.igdb.com/platforms/c64" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/c64" target="_blank" rel="noopener norefer">Mobygames</a>
Commodore CDTV | `commodore-cdtv` | <a href="https://www.igdb.com/platforms/commodore-cdtv" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/cdtv" target="_blank" rel="noopener norefer">Mobygames</a>
Commodore PET | `cpet` | <a href="https://www.igdb.com/platforms/cpet" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/pet" target="_blank" rel="noopener norefer">Mobygames</a>
Commodore PET/CBM | `cpet` | | <a href="https://www.mobygames.com/platform/cpet" target="_blank" rel="noopener norefer">Mobygames</a>
Commodore Plus/4 | `c-plus-4` | <a href="https://www.igdb.com/platforms/c-plus-4" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/commodore-16-plus4" target="_blank" rel="noopener norefer">Mobygames</a>
Commodore VIC-20 | `vic-20` | <a href="https://www.igdb.com/platforms/vic-20" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/vic-20" target="_blank" rel="noopener norefer">Mobygames</a>
Compal 80 | `compal-80` | | <a href="https://www.mobygames.com/platform/compal-80" target="_blank" rel="noopener norefer">Mobygames</a>
Compucolor I | `compucolor-i` | | <a href="https://www.mobygames.com/platform/compucolor-i" target="_blank" rel="noopener norefer">Mobygames</a>
Compucolor II | `compucolor-ii` | | <a href="https://www.mobygames.com/platform/compucolor-ii" target="_blank" rel="noopener norefer">Mobygames</a>
Compucorp Programmable Calculator | `compucorp-programmable-calculator` | | <a href="https://www.mobygames.com/platform/compucorp-programmable-calculator" target="_blank" rel="noopener norefer">Mobygames</a>
CreatiVision | `creativision` | | <a href="https://www.mobygames.com/platform/creativision" target="_blank" rel="noopener norefer">Mobygames</a>
Cybervision | `cybervision` | | <a href="https://www.mobygames.com/platform/cybervision" target="_blank" rel="noopener norefer">Mobygames</a>
DOS | `dos` | <a href="https://www.igdb.com/platforms/dos" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/dos" target="_blank" rel="noopener norefer">Mobygames</a>
DVD Player | `dvd-player` | <a href="https://www.igdb.com/platforms/dvd-player" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/dvd-player" target="_blank" rel="noopener norefer">Mobygames</a>
Danger OS | `danger-os` | | <a href="https://www.mobygames.com/platform/danger-os" target="_blank" rel="noopener norefer">Mobygames</a>
Dedicated console | `dedicated-console` | | <a href="https://www.mobygames.com/platform/dedicated-console" target="_blank" rel="noopener norefer">Mobygames</a>
Dedicated handheld | `dedicated-handheld` | | <a href="https://www.mobygames.com/platform/dedicated-handheld" target="_blank" rel="noopener norefer">Mobygames</a>
Didj | `didj` | | <a href="https://www.mobygames.com/platform/didj" target="_blank" rel="noopener norefer">Mobygames</a>
DoJa | `doja` | | <a href="https://www.mobygames.com/platform/doja" target="_blank" rel="noopener norefer">Mobygames</a>
Donner Model 30 | `donner30` | <a href="https://www.igdb.com/platforms/donner30" target="_blank" rel="noopener norefer">IGDB</a>| |
Dragon 32/64 | `dragon-32-slash-64` | <a href="https://www.igdb.com/platforms/dragon-32-slash-64" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/dragon-32-slash-64" target="_blank" rel="noopener norefer">Mobygames</a>
Dreamcast | `dc` | <a href="https://www.igdb.com/platforms/dc" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/dreamcast" target="_blank" rel="noopener norefer">Mobygames</a>
ECD Micromind | `ecd-micromind` | | <a href="https://www.mobygames.com/platform/ecd-micromind" target="_blank" rel="noopener norefer">Mobygames</a>
EDSAC | `edsac--1` | <a href="https://www.igdb.com/platforms/edsac--1" target="_blank" rel="noopener norefer">IGDB</a>| |
Electron | `acorn-electron` | | <a href="https://www.mobygames.com/platform/acorn-electron" target="_blank" rel="noopener norefer">Mobygames</a>
Enterprise | `enterprise` | | <a href="https://www.mobygames.com/platform/enterprise" target="_blank" rel="noopener norefer">Mobygames</a>
Epoch Cassette Vision | `epoch-cassette-vision` | <a href="https://www.igdb.com/platforms/epoch-cassette-vision" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/epoch-cassette-vision" target="_blank" rel="noopener norefer">Mobygames</a>
Epoch Game Pocket Computer | `epoch-game-pocket-computer` | | <a href="https://www.mobygames.com/platform/epoch-game-pocket-computer" target="_blank" rel="noopener norefer">Mobygames</a>
Epoch Super Cassette Vision | `epoch-super-cassette-vision` | <a href="https://www.igdb.com/platforms/epoch-super-cassette-vision" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/epoch-super-cassette-vision" target="_blank" rel="noopener norefer">Mobygames</a>
Evercade | `evercade` | <a href="https://www.igdb.com/platforms/evercade" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/evercade" target="_blank" rel="noopener norefer">Mobygames</a>
ExEn | `exen` | | <a href="https://www.mobygames.com/platform/exen" target="_blank" rel="noopener norefer">Mobygames</a>
Exelvision | `exelvision` | | <a href="https://www.mobygames.com/platform/exelvision" target="_blank" rel="noopener norefer">Mobygames</a>
Exidy Sorcerer | `exidy-sorcerer` | <a href="https://www.igdb.com/platforms/exidy-sorcerer" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/exidy-sorcerer" target="_blank" rel="noopener norefer">Mobygames</a>
FM Towns | `fm-towns` | <a href="https://www.igdb.com/platforms/fm-towns" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/fmtowns" target="_blank" rel="noopener norefer">Mobygames</a>
FM-7 | `fm-7` | <a href="https://www.igdb.com/platforms/fm-7" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/fm-7" target="_blank" rel="noopener norefer">Mobygames</a>
Fairchild Channel F | `fairchild-channel-f` | <a href="https://www.igdb.com/platforms/fairchild-channel-f" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/channel-f" target="_blank" rel="noopener norefer">Mobygames</a>
Family Computer | `famicom` | <a href="https://www.igdb.com/platforms/famicom" target="_blank" rel="noopener norefer">IGDB</a>| |
Family Computer Disk System | `fds` | <a href="https://www.igdb.com/platforms/fds" target="_blank" rel="noopener norefer">IGDB</a>| |
Feature phone | `mobile-custom` | | <a href="https://www.mobygames.com/platform/mobile-custom" target="_blank" rel="noopener norefer">Mobygames</a>
Ferranti Nimrod Computer | `nimrod` | <a href="https://www.igdb.com/platforms/nimrod" target="_blank" rel="noopener norefer">IGDB</a>| |
Fire TV | `amazon-fire-tv` | | <a href="https://www.mobygames.com/platform/amazon-fire-tv" target="_blank" rel="noopener norefer">Mobygames</a>
Freebox | `freebox` | | <a href="https://www.mobygames.com/platform/freebox" target="_blank" rel="noopener norefer">Mobygames</a>
G-cluster | `g-cluster` | | <a href="https://www.mobygames.com/platform/g-cluster" target="_blank" rel="noopener norefer">Mobygames</a>
GIMINI | `gimini` | | <a href="https://www.mobygames.com/platform/gimini" target="_blank" rel="noopener norefer">Mobygames</a>
GNEX | `gnex` | | <a href="https://www.mobygames.com/platform/gnex" target="_blank" rel="noopener norefer">Mobygames</a>
GP2X | `gp2x` | | <a href="https://www.mobygames.com/platform/gp2x" target="_blank" rel="noopener norefer">Mobygames</a>
GP2X Wiz | `gp2x-wiz` | | <a href="https://www.mobygames.com/platform/gp2x-wiz" target="_blank" rel="noopener norefer">Mobygames</a>
GP32 | `gp32` | | <a href="https://www.mobygames.com/platform/gp32" target="_blank" rel="noopener norefer">Mobygames</a>
GVM | `gvm` | | <a href="https://www.mobygames.com/platform/gvm" target="_blank" rel="noopener norefer">Mobygames</a>
Galaksija | `galaksija` | | <a href="https://www.mobygames.com/platform/galaksija" target="_blank" rel="noopener norefer">Mobygames</a>
Gamate | `gamate` | <a href="https://www.igdb.com/platforms/gamate" target="_blank" rel="noopener norefer">IGDB</a>| |
Game & Watch | `g-and-w` | <a href="https://www.igdb.com/platforms/g-and-w" target="_blank" rel="noopener norefer">IGDB</a>| |
Game Boy | `gb` | <a href="https://www.igdb.com/platforms/gb" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/gameboy" target="_blank" rel="noopener norefer">Mobygames</a>
Game Boy Advance | `gba` | <a href="https://www.igdb.com/platforms/gba" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/gameboy-advance" target="_blank" rel="noopener norefer">Mobygames</a>
Game Boy Color | `gbc` | <a href="https://www.igdb.com/platforms/gbc" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/gameboy-color" target="_blank" rel="noopener norefer">Mobygames</a>
Game Gear | `gamegear` | | <a href="https://www.mobygames.com/platform/gamegear" target="_blank" rel="noopener norefer">Mobygames</a>
Game Wave | `game-wave` | | <a href="https://www.mobygames.com/platform/game-wave" target="_blank" rel="noopener norefer">Mobygames</a>
Game.Com | `game-dot-com` | | <a href="https://www.mobygames.com/platform/game-dot-com" target="_blank" rel="noopener norefer">Mobygames</a>
Game.com | `game-dot-com` | <a href="https://www.igdb.com/platforms/game-dot-com" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/game-com" target="_blank" rel="noopener norefer">Mobygames</a>
GameStick | `gamestick` | | <a href="https://www.mobygames.com/platform/gamestick" target="_blank" rel="noopener norefer">Mobygames</a>
Gear VR | `gear-vr` | <a href="https://www.igdb.com/platforms/gear-vr" target="_blank" rel="noopener norefer">IGDB</a>| |
Genesis/Mega Drive | `genesis-slash-megadrive` | | <a href="https://www.mobygames.com/platform/genesis-slash-megadrive" target="_blank" rel="noopener norefer">Mobygames</a>
Gizmondo | `gizmondo` | <a href="https://www.igdb.com/platforms/gizmondo" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/gizmondo" target="_blank" rel="noopener norefer">Mobygames</a>
Gloud | `gloud` | | <a href="https://www.mobygames.com/platform/gloud" target="_blank" rel="noopener norefer">Mobygames</a>
Glulx | `glulx` | | <a href="https://www.mobygames.com/platform/glulx" target="_blank" rel="noopener norefer">Mobygames</a>
Google Stadia | `stadia` | <a href="https://www.igdb.com/platforms/stadia" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/stadia" target="_blank" rel="noopener norefer">Mobygames</a>
HD DVD Player | `hd-dvd-player` | | <a href="https://www.mobygames.com/platform/hd-dvd-player" target="_blank" rel="noopener norefer">Mobygames</a>
HP 2100 | `hp2100` | <a href="https://www.igdb.com/platforms/hp2100" target="_blank" rel="noopener norefer">IGDB</a>| |
HP 3000 | `hp3000` | <a href="https://www.igdb.com/platforms/hp3000" target="_blank" rel="noopener norefer">IGDB</a>| |
HP 9800 | `hp-9800` | | <a href="https://www.mobygames.com/platform/hp-9800" target="_blank" rel="noopener norefer">Mobygames</a>
HP Programmable Calculator | `hp-programmable-calculator` | | <a href="https://www.mobygames.com/platform/hp-programmable-calculator" target="_blank" rel="noopener norefer">Mobygames</a>
Handheld Electronic LCD | `handheld-electronic-lcd` | <a href="https://www.igdb.com/platforms/handheld-electronic-lcd" target="_blank" rel="noopener norefer">IGDB</a>| |
Heath/Zenith H8/H89 | `heathzenith` | | <a href="https://www.mobygames.com/platform/heathzenith" target="_blank" rel="noopener norefer">Mobygames</a>
Heathkit H11 | `heathkit-h11` | | <a href="https://www.mobygames.com/platform/heathkit-h11" target="_blank" rel="noopener norefer">Mobygames</a>
Hitachi S1 | `hitachi-s1` | | <a href="https://www.mobygames.com/platform/hitachi-s1" target="_blank" rel="noopener norefer">Mobygames</a>
Hugo | `hugo` | | <a href="https://www.mobygames.com/platform/hugo" target="_blank" rel="noopener norefer">Mobygames</a>
Hyper Neo Geo 64 | `hyper-neo-geo-64` | <a href="https://www.igdb.com/platforms/hyper-neo-geo-64" target="_blank" rel="noopener norefer">IGDB</a>| |
HyperScan | `hyperscan` | <a href="https://www.igdb.com/platforms/hyperscan" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/hyperscan" target="_blank" rel="noopener norefer">Mobygames</a>
IBM 5100 | `ibm-5100` | | <a href="https://www.mobygames.com/platform/ibm-5100" target="_blank" rel="noopener norefer">Mobygames</a>
Ideal-Computer | `ideal-computer` | | <a href="https://www.mobygames.com/platform/ideal-computer" target="_blank" rel="noopener norefer">Mobygames</a>
Intel 8008 | `intel-8008` | | <a href="https://www.mobygames.com/platform/intel-8008" target="_blank" rel="noopener norefer">Mobygames</a>
Intel 8080 | `intel-8080` | | <a href="https://www.mobygames.com/platform/intel-8080" target="_blank" rel="noopener norefer">Mobygames</a>
Intel 8086 / 8088 | `intel-8086` | | <a href="https://www.mobygames.com/platform/intel-8086" target="_blank" rel="noopener norefer">Mobygames</a>
Intellivision | `intellivision` | <a href="https://www.igdb.com/platforms/intellivision" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/intellivision" target="_blank" rel="noopener norefer">Mobygames</a>
Intellivision Amico | `intellivision-amico` | <a href="https://www.igdb.com/platforms/intellivision-amico" target="_blank" rel="noopener norefer">IGDB</a>| |
Interact Model One | `interact-model-one` | | <a href="https://www.mobygames.com/platform/interact-model-one" target="_blank" rel="noopener norefer">Mobygames</a>
Interton Video 2000 | `interton-video-2000` | | <a href="https://www.mobygames.com/platform/interton-video-2000" target="_blank" rel="noopener norefer">Mobygames</a>
Interton VC 4000 | `vc-4000` | <a href="https://www.igdb.com/platforms/vc-4000" target="_blank" rel="noopener norefer">IGDB</a>| |
J2ME | `j2me` | | <a href="https://www.mobygames.com/platform/j2me" target="_blank" rel="noopener norefer">Mobygames</a>
Jolt | `jolt` | | <a href="https://www.mobygames.com/platform/jolt" target="_blank" rel="noopener norefer">Mobygames</a>
Jupiter Ace | `jupiter-ace` | | <a href="https://www.mobygames.com/platform/jupiter-ace" target="_blank" rel="noopener norefer">Mobygames</a>
KIM-1 | `kim-1` | | <a href="https://www.mobygames.com/platform/kim-1" target="_blank" rel="noopener norefer">Mobygames</a>
KaiOS | `kaios` | | <a href="https://www.mobygames.com/platform/kaios" target="_blank" rel="noopener norefer">Mobygames</a>
Kindle Classic | `kindle` | | <a href="https://www.mobygames.com/platform/kindle" target="_blank" rel="noopener norefer">Mobygames</a>
Laser 200 | `laser200` | | <a href="https://www.mobygames.com/platform/laser200" target="_blank" rel="noopener norefer">Mobygames</a>
LaserActive | `laseractive` | | <a href="https://www.mobygames.com/platform/laseractive" target="_blank" rel="noopener norefer">Mobygames</a>
LeapTV | `leaptv` | <a href="https://www.igdb.com/platforms/leaptv" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/leaptv" target="_blank" rel="noopener norefer">Mobygames</a>
Leapster | `leapster` | <a href="https://www.igdb.com/platforms/leapster" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/leapster" target="_blank" rel="noopener norefer">Mobygames</a>
Leapster Explorer/LeadPad Explorer | `leapster-explorer-slash-leadpad-explorer` | <a href="https://www.igdb.com/platforms/leapster-explorer-slash-leadpad-explorer" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/leapfrog-explorer" target="_blank" rel="noopener norefer">Mobygames</a>
Leapster Explorer/LeapPad Explorer | `leapster-explorer-slash-leadpad-explorer` | | <a href="https://www.mobygames.com/platform/leapster-explorer-slash-leadpad-explorer" target="_blank" rel="noopener norefer">Mobygames</a>
Legacy Computer | `legacy-computer` | <a href="https://www.igdb.com/platforms/legacy-computer" target="_blank" rel="noopener norefer">IGDB</a>| |
Legacy Mobile Device | `mobile` | <a href="https://www.igdb.com/platforms/mobile" target="_blank" rel="noopener norefer">IGDB</a>| |
Linux | `linux` | <a href="https://www.igdb.com/platforms/linux" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/linux" target="_blank" rel="noopener norefer">Mobygames</a>
Luna | `luna` | | <a href="https://www.mobygames.com/platform/luna" target="_blank" rel="noopener norefer">Mobygames</a>
MOS Technology 6502 | `mos-technology-6502` | | <a href="https://www.mobygames.com/platform/mos-technology-6502" target="_blank" rel="noopener norefer">Mobygames</a>
MRE | `mre` | | <a href="https://www.mobygames.com/platform/mre" target="_blank" rel="noopener norefer">Mobygames</a>
MSX | `msx` | <a href="https://www.igdb.com/platforms/msx" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/msx" target="_blank" rel="noopener norefer">Mobygames</a>
MSX2 | `msx2` | <a href="https://www.igdb.com/platforms/msx2" target="_blank" rel="noopener norefer">IGDB</a>| |
Mac | `mac` | <a href="https://www.igdb.com/platforms/mac" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/macintosh" target="_blank" rel="noopener norefer">Mobygames</a>
Macintosh | `mac` | | <a href="https://www.mobygames.com/platform/mac" target="_blank" rel="noopener norefer">Mobygames</a>
Maemo | `maemo` | | <a href="https://www.mobygames.com/platform/maemo" target="_blank" rel="noopener norefer">Mobygames</a>
Mainframe | `mainframe` | | <a href="https://www.mobygames.com/platform/mainframe" target="_blank" rel="noopener norefer">Mobygames</a>
Matsushita/Panasonic JR | `matsushitapanasonic-jr` | | <a href="https://www.mobygames.com/platform/matsushitapanasonic-jr" target="_blank" rel="noopener norefer">Mobygames</a>
Mattel Aquarius | `mattel-aquarius` | | <a href="https://www.mobygames.com/platform/mattel-aquarius" target="_blank" rel="noopener norefer">Mobygames</a>
MeeGo | `meego` | | <a href="https://www.mobygames.com/platform/meego" target="_blank" rel="noopener norefer">Mobygames</a>
Mega Duck/Cougar Boy | `mega-duck-slash-cougar-boy` | <a href="https://www.igdb.com/platforms/mega-duck-slash-cougar-boy" target="_blank" rel="noopener norefer">IGDB</a>| |
Memotech MTX | `memotech-mtx` | | <a href="https://www.mobygames.com/platform/memotech-mtx" target="_blank" rel="noopener norefer">Mobygames</a>
Meritum | `meritum` | | <a href="https://www.mobygames.com/platform/meritum" target="_blank" rel="noopener norefer">Mobygames</a>
Meta Quest 2 | `meta-quest-2` | <a href="https://www.igdb.com/platforms/meta-quest-2" target="_blank" rel="noopener norefer">IGDB</a>| |
Meta Quest 3 | `meta-quest-3` | <a href="https://www.igdb.com/platforms/meta-quest-3" target="_blank" rel="noopener norefer">IGDB</a>| |
Microbee | `microbee` | | <a href="https://www.mobygames.com/platform/microbee" target="_blank" rel="noopener norefer">Mobygames</a>
Microtan 65 | `microtan-65` | | <a href="https://www.mobygames.com/platform/microtan-65" target="_blank" rel="noopener norefer">Mobygames</a>
Microvision | `microvision--1` | <a href="https://www.igdb.com/platforms/microvision--1" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/microvision" target="_blank" rel="noopener norefer">Mobygames</a>
Mophun | `mophun` | | <a href="https://www.mobygames.com/platform/mophun" target="_blank" rel="noopener norefer">Mobygames</a>
Motorola 6800 | `motorola-6800` | | <a href="https://www.mobygames.com/platform/motorola-6800" target="_blank" rel="noopener norefer">Mobygames</a>
Motorola 68k | `motorola-68k` | | <a href="https://www.mobygames.com/platform/motorola-68k" target="_blank" rel="noopener norefer">Mobygames</a>
N-Gage | `ngage` | <a href="https://www.igdb.com/platforms/ngage" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/ngage" target="_blank" rel="noopener norefer">Mobygames</a>
N-Gage (service) | `ngage2` | | <a href="https://www.mobygames.com/platform/ngage2" target="_blank" rel="noopener norefer">Mobygames</a>
NEC PC-6000 Series | `nec-pc-6000-series` | <a href="https://www.igdb.com/platforms/nec-pc-6000-series" target="_blank" rel="noopener norefer">IGDB</a>| |
Nascom | `nascom` | | <a href="https://www.mobygames.com/platform/nascom" target="_blank" rel="noopener norefer">Mobygames</a>
Neo Geo | `neogeoaes` | | <a href="https://www.mobygames.com/platform/neogeoaes" target="_blank" rel="noopener norefer">Mobygames</a>
Neo Geo AES | `neogeoaes` | <a href="https://www.igdb.com/platforms/neogeoaes" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/neo-geo" target="_blank" rel="noopener norefer">Mobygames</a>
Neo Geo CD | `neo-geo-cd` | <a href="https://www.igdb.com/platforms/neo-geo-cd" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/neo-geo-cd" target="_blank" rel="noopener norefer">Mobygames</a>
Neo Geo MVS | `neogeomvs` | <a href="https://www.igdb.com/platforms/neogeomvs" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/neo-geo" target="_blank" rel="noopener norefer">Mobygames</a>
Neo Geo Pocket | `neo-geo-pocket` | <a href="https://www.igdb.com/platforms/neo-geo-pocket" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/neo-geo-pocket" target="_blank" rel="noopener norefer">Mobygames</a>
Neo Geo Pocket Color | `neo-geo-pocket-color` | <a href="https://www.igdb.com/platforms/neo-geo-pocket-color" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/neo-geo-pocket-color" target="_blank" rel="noopener norefer">Mobygames</a>
Neo Geo X | `neo-geo-x` | | <a href="https://www.mobygames.com/platform/neo-geo-x" target="_blank" rel="noopener norefer">Mobygames</a>
New Nintendo 3DS | `new-nintendo-3ds` | <a href="https://www.igdb.com/platforms/new-nintendo-3ds" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/new-nintendo-3ds" target="_blank" rel="noopener norefer">Mobygames</a>
NewBrain | `newbrain` | | <a href="https://www.mobygames.com/platform/newbrain" target="_blank" rel="noopener norefer">Mobygames</a>
Newton | `newton` | | <a href="https://www.mobygames.com/platform/newton" target="_blank" rel="noopener norefer">Mobygames</a>
Nintendo 3DS | `3ds` | <a href="https://www.igdb.com/platforms/3ds" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/3ds" target="_blank" rel="noopener norefer">Mobygames</a>
Nintendo 64 | `n64` | <a href="https://www.igdb.com/platforms/n64" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/n64" target="_blank" rel="noopener norefer">Mobygames</a>
Nintendo 64DD | `nintendo-64dd` | <a href="https://www.igdb.com/platforms/nintendo-64dd" target="_blank" rel="noopener norefer">IGDB</a>| |
Nintendo DS | `nds` | <a href="https://www.igdb.com/platforms/nds" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/nintendo-ds" target="_blank" rel="noopener norefer">Mobygames</a>
Nintendo DSi | `nintendo-dsi` | <a href="https://www.igdb.com/platforms/nintendo-dsi" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/nintendo-dsi" target="_blank" rel="noopener norefer">Mobygames</a>
Nintendo Entertainment System | `nes` | <a href="https://www.igdb.com/platforms/nes" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/nes" target="_blank" rel="noopener norefer">Mobygames</a>
Nintendo GameCube | `ngc` | <a href="https://www.igdb.com/platforms/ngc" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/gamecube" target="_blank" rel="noopener norefer">Mobygames</a>
Nintendo PlayStation | `nintendo-playstation` | <a href="https://www.igdb.com/platforms/nintendo-playstation" target="_blank" rel="noopener norefer">IGDB</a>| |
Nintendo Switch | `switch` | <a href="https://www.igdb.com/platforms/switch" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/switch" target="_blank" rel="noopener norefer">Mobygames</a>
North Star | `northstar` | | <a href="https://www.mobygames.com/platform/northstar" target="_blank" rel="noopener norefer">Mobygames</a>
Noval 760 | `noval-760` | | <a href="https://www.mobygames.com/platform/noval-760" target="_blank" rel="noopener norefer">Mobygames</a>
Nuon | `nuon` | <a href="https://www.igdb.com/platforms/nuon" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/nuon" target="_blank" rel="noopener norefer">Mobygames</a>
OOParts | `ooparts` | <a href="https://www.igdb.com/platforms/ooparts" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/ooparts" target="_blank" rel="noopener norefer">Mobygames</a>
OS/2 | `os2` | | <a href="https://www.mobygames.com/platform/os2" target="_blank" rel="noopener norefer">Mobygames</a>
Oculus Go | `oculus-go` | <a href="https://www.igdb.com/platforms/oculus-go" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/oculus-go" target="_blank" rel="noopener norefer">Mobygames</a>
Oculus Quest | `oculus-quest` | <a href="https://www.igdb.com/platforms/oculus-quest" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/oculus-quest" target="_blank" rel="noopener norefer">Mobygames</a>
Oculus Rift | `oculus-rift` | <a href="https://www.igdb.com/platforms/oculus-rift" target="_blank" rel="noopener norefer">IGDB</a>| |
Odyssey | `odyssey--1` | <a href="https://www.igdb.com/platforms/odyssey--1" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/odyssey" target="_blank" rel="noopener norefer">Mobygames</a>
Odyssey 2/Videopac G7000 | `odyssey-2-slash-videopac-g7000` | <a href="https://www.igdb.com/platforms/odyssey-2-slash-videopac-g7000" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/odyssey-2" target="_blank" rel="noopener norefer">Mobygames</a>
Ohio Scientific | `ohio-scientific` | | <a href="https://www.mobygames.com/platform/ohio-scientific" target="_blank" rel="noopener norefer">Mobygames</a>
OnLive Game System | `onlive-game-system` | <a href="https://www.igdb.com/platforms/onlive-game-system" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/onlive" target="_blank" rel="noopener norefer">Mobygames</a>
Orao | `orao` | | <a href="https://www.mobygames.com/platform/orao" target="_blank" rel="noopener norefer">Mobygames</a>
Oric | `oric` | | <a href="https://www.mobygames.com/platform/oric" target="_blank" rel="noopener norefer">Mobygames</a>
Ouya | `ouya` | <a href="https://www.igdb.com/platforms/ouya" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/ouya" target="_blank" rel="noopener norefer">Mobygames</a>
PC (Microsoft Windows) | `win` | <a href="https://www.igdb.com/platforms/win" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/windows" target="_blank" rel="noopener norefer">Mobygames</a>
PC Booter | `pc-booter` | | <a href="https://www.mobygames.com/platform/pc-booter" target="_blank" rel="noopener norefer">Mobygames</a>
PC Engine SuperGrafx | `supergrafx` | <a href="https://www.igdb.com/platforms/supergrafx" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/supergrafx" target="_blank" rel="noopener norefer">Mobygames</a>
PC-50X Family | `pc-50x-family` | <a href="https://www.igdb.com/platforms/pc-50x-family" target="_blank" rel="noopener norefer">IGDB</a>| |
PC-6001 | `pc-6001` | | <a href="https://www.mobygames.com/platform/pc-6001" target="_blank" rel="noopener norefer">Mobygames</a>
PC-8000 | `pc-8000` | | <a href="https://www.mobygames.com/platform/pc-8000" target="_blank" rel="noopener norefer">Mobygames</a>
PC-8800 Series | `pc-8800-series` | <a href="https://www.igdb.com/platforms/pc-8800-series" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/pc88" target="_blank" rel="noopener norefer">Mobygames</a>
PC-9800 Series | `pc-9800-series` | <a href="https://www.igdb.com/platforms/pc-9800-series" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/pc98" target="_blank" rel="noopener norefer">Mobygames</a>
PC-FX | `pc-fx` | <a href="https://www.igdb.com/platforms/pc-fx" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/pc-fx" target="_blank" rel="noopener norefer">Mobygames</a>
PDP-1 | `pdp1` | <a href="https://www.igdb.com/platforms/pdp1" target="_blank" rel="noopener norefer">IGDB</a>| |
PDP-10 | `pdp10` | <a href="https://www.igdb.com/platforms/pdp10" target="_blank" rel="noopener norefer">IGDB</a>| |
PDP-11 | `pdp11` | <a href="https://www.igdb.com/platforms/pdp11" target="_blank" rel="noopener norefer">IGDB</a>| |
PDP-8 | `pdp-8--1` | <a href="https://www.igdb.com/platforms/pdp-8--1" target="_blank" rel="noopener norefer">IGDB</a>| |
PICO | `pico` | | <a href="https://www.mobygames.com/platform/pico" target="_blank" rel="noopener norefer">Mobygames</a>
PLATO | `plato--1` | <a href="https://www.igdb.com/platforms/plato--1" target="_blank" rel="noopener norefer">IGDB</a>| |
PS Vita | `psvita` | | <a href="https://www.mobygames.com/platform/psvita" target="_blank" rel="noopener norefer">Mobygames</a>
Palm OS | `palm-os` | <a href="https://www.igdb.com/platforms/palm-os" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/palmos" target="_blank" rel="noopener norefer">Mobygames</a>
Panasonic Jungle | `panasonic-jungle` | <a href="https://www.igdb.com/platforms/panasonic-jungle" target="_blank" rel="noopener norefer">IGDB</a>| |
Panasonic M2 | `panasonic-m2` | <a href="https://www.igdb.com/platforms/panasonic-m2" target="_blank" rel="noopener norefer">IGDB</a>| |
Pandora | `pandora` | | <a href="https://www.mobygames.com/platform/pandora" target="_blank" rel="noopener norefer">Mobygames</a>
Pebble | `pebble` | | <a href="https://www.mobygames.com/platform/pebble" target="_blank" rel="noopener norefer">Mobygames</a>
Philips CD-i | `philips-cd-i` | <a href="https://www.igdb.com/platforms/philips-cd-i" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/cd-i" target="_blank" rel="noopener norefer">Mobygames</a>
Philips VG 5000 | `philips-vg-5000` | | <a href="https://www.mobygames.com/platform/philips-vg-5000" target="_blank" rel="noopener norefer">Mobygames</a>
Photo CD | `photocd` | | <a href="https://www.mobygames.com/platform/photocd" target="_blank" rel="noopener norefer">Mobygames</a>
Pippin | `pippin` | | <a href="https://www.mobygames.com/platform/pippin" target="_blank" rel="noopener norefer">Mobygames</a>
PlayStation | `ps` | <a href="https://www.igdb.com/platforms/ps" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/playstation" target="_blank" rel="noopener norefer">Mobygames</a>
PlayStation 2 | `ps2` | <a href="https://www.igdb.com/platforms/ps2" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/ps2" target="_blank" rel="noopener norefer">Mobygames</a>
PlayStation 3 | `ps3` | <a href="https://www.igdb.com/platforms/ps3" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/ps3" target="_blank" rel="noopener norefer">Mobygames</a>
PlayStation 4 | `ps4--1` | <a href="https://www.igdb.com/platforms/ps4--1" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/playstation-4" target="_blank" rel="noopener norefer">Mobygames</a>
PlayStation 5 | `ps5` | <a href="https://www.igdb.com/platforms/ps5" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/playstation-5" target="_blank" rel="noopener norefer">Mobygames</a>
PlayStation Now | `playstation-now` | | <a href="https://www.mobygames.com/platform/playstation-now" target="_blank" rel="noopener norefer">Mobygames</a>
PlayStation Portable | `psp` | <a href="https://www.igdb.com/platforms/psp" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/psp" target="_blank" rel="noopener norefer">Mobygames</a>
PlayStation VR | `psvr` | <a href="https://www.igdb.com/platforms/psvr" target="_blank" rel="noopener norefer">IGDB</a>| |
PlayStation VR2 | `psvr2` | <a href="https://www.igdb.com/platforms/psvr2" target="_blank" rel="noopener norefer">IGDB</a>| |
PlayStation Vita | `psvita` | <a href="https://www.igdb.com/platforms/psvita" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/ps-vita" target="_blank" rel="noopener norefer">Mobygames</a>
Playdate | `playdate` | <a href="https://www.igdb.com/platforms/playdate" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/playdate" target="_blank" rel="noopener norefer">Mobygames</a>
Playdia | `playdia` | <a href="https://www.igdb.com/platforms/playdia" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/playdia" target="_blank" rel="noopener norefer">Mobygames</a>
Plex Arcade | `plex-arcade` | | <a href="https://www.mobygames.com/platform/plex-arcade" target="_blank" rel="noopener norefer">Mobygames</a>
Plug & Play | `plug-and-play` | <a href="https://www.igdb.com/platforms/plug-and-play" target="_blank" rel="noopener norefer">IGDB</a>| |
PocketStation | `pocketstation` | <a href="https://www.igdb.com/platforms/pocketstation" target="_blank" rel="noopener norefer">IGDB</a>| |
Pokitto | `pokitto` | | <a href="https://www.mobygames.com/platform/pokitto" target="_blank" rel="noopener norefer">Mobygames</a>
Pokémon mini | `pokemon-mini` | <a href="https://www.igdb.com/platforms/pokemon-mini" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/pokemon-mini" target="_blank" rel="noopener norefer">Mobygames</a>
Poly-88 | `poly-88` | | <a href="https://www.mobygames.com/platform/poly-88" target="_blank" rel="noopener norefer">Mobygames</a>
R-Zone | `r-zone` | <a href="https://www.igdb.com/platforms/r-zone" target="_blank" rel="noopener norefer">IGDB</a>| |
RCA Studio II | `rca-studio-ii` | | <a href="https://www.mobygames.com/platform/rca-studio-ii" target="_blank" rel="noopener norefer">Mobygames</a>
Research Machines 380Z | `research-machines-380z` | | <a href="https://www.mobygames.com/platform/research-machines-380z" target="_blank" rel="noopener norefer">Mobygames</a>
Roku | `roku` | | <a href="https://www.mobygames.com/platform/roku" target="_blank" rel="noopener norefer">Mobygames</a>
SAM Coupé | `sam-coupe` | | <a href="https://www.mobygames.com/platform/sam-coupe" target="_blank" rel="noopener norefer">Mobygames</a>
SC/MP | `scmp` | | <a href="https://www.mobygames.com/platform/scmp" target="_blank" rel="noopener norefer">Mobygames</a>
SD-200/270/290 | `sd-200270290` | | <a href="https://www.mobygames.com/platform/sd-200270290" target="_blank" rel="noopener norefer">Mobygames</a>
SDS Sigma 7 | `sdssigma7` | <a href="https://www.igdb.com/platforms/sdssigma7" target="_blank" rel="noopener norefer">IGDB</a>| |
SEGA 32X | `sega-32x` | | <a href="https://www.mobygames.com/platform/sega-32x" target="_blank" rel="noopener norefer">Mobygames</a>
SEGA CD | `segacd` | | <a href="https://www.mobygames.com/platform/segacd" target="_blank" rel="noopener norefer">Mobygames</a>
SEGA Master System | `sega-master-system` | | <a href="https://www.mobygames.com/platform/sega-master-system" target="_blank" rel="noopener norefer">Mobygames</a>
SEGA Saturn | `saturn` | | <a href="https://www.mobygames.com/platform/saturn" target="_blank" rel="noopener norefer">Mobygames</a>
SG-1000 | `sg1000` | <a href="https://www.igdb.com/platforms/sg1000" target="_blank" rel="noopener norefer">IGDB</a>| |
SK-VM | `sk-vm` | | <a href="https://www.mobygames.com/platform/sk-vm" target="_blank" rel="noopener norefer">Mobygames</a>
SMC-777 | `smc-777` | | <a href="https://www.mobygames.com/platform/smc-777" target="_blank" rel="noopener norefer">Mobygames</a>
SRI-500/1000 | `sri-5001000` | | <a href="https://www.mobygames.com/platform/sri-5001000" target="_blank" rel="noopener norefer">Mobygames</a>
SWTPC 6800 | `swtpc-6800` | | <a href="https://www.mobygames.com/platform/swtpc-6800" target="_blank" rel="noopener norefer">Mobygames</a>
Satellaview | `satellaview` | <a href="https://www.igdb.com/platforms/satellaview" target="_blank" rel="noopener norefer">IGDB</a>| |
Sega 32X | `sega32` | <a href="https://www.igdb.com/platforms/sega32" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/sega32" target="_blank" rel="noopener norefer">Mobygames</a>
Sega CD | `segacd` | <a href="https://www.igdb.com/platforms/segacd" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/sega-cd" target="_blank" rel="noopener norefer">Mobygames</a>
Sega Game Gear | `gamegear` | <a href="https://www.igdb.com/platforms/gamegear" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/game-gear" target="_blank" rel="noopener norefer">Mobygames</a>
Sega Master System/Mark III | `sms` | <a href="https://www.igdb.com/platforms/sms" target="_blank" rel="noopener norefer">IGDB</a>| |
Sega Mega Drive/Genesis | `genesis-slash-megadrive` | <a href="https://www.igdb.com/platforms/genesis-slash-megadrive" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/genesis" target="_blank" rel="noopener norefer">Mobygames</a>
Sega Pico | `sega-pico` | <a href="https://www.igdb.com/platforms/sega-pico" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/sega-pico" target="_blank" rel="noopener norefer">Mobygames</a>
Sega Saturn | `saturn` | <a href="https://www.igdb.com/platforms/saturn" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/sega-saturn" target="_blank" rel="noopener norefer">Mobygames</a>
Sharp MZ-2200 | `sharp-mz-2200` | <a href="https://www.igdb.com/platforms/sharp-mz-2200" target="_blank" rel="noopener norefer">IGDB</a>| |
Sharp MZ-80B/2000/2500 | `sharp-mz-80b20002500` | | <a href="https://www.mobygames.com/platform/sharp-mz-80b20002500" target="_blank" rel="noopener norefer">Mobygames</a>
Sharp MZ-80K/700/800/1500 | `sharp-mz-80k7008001500` | | <a href="https://www.mobygames.com/platform/sharp-mz-80k7008001500" target="_blank" rel="noopener norefer">Mobygames</a>
Sharp X1 | `x1` | <a href="https://www.igdb.com/platforms/x1" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/sharp-x1" target="_blank" rel="noopener norefer">Mobygames</a>
Sharp X68000 | `sharp-x68000` | <a href="https://www.igdb.com/platforms/sharp-x68000" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/sharp-x68000" target="_blank" rel="noopener norefer">Mobygames</a>
Sharp Zaurus | `sharp-zaurus` | | <a href="https://www.mobygames.com/platform/sharp-zaurus" target="_blank" rel="noopener norefer">Mobygames</a>
Signetics 2650 | `signetics-2650` | | <a href="https://www.mobygames.com/platform/signetics-2650" target="_blank" rel="noopener norefer">Mobygames</a>
Sinclair QL | `sinclair-ql` | <a href="https://www.igdb.com/platforms/sinclair-ql" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/sinclair-ql" target="_blank" rel="noopener norefer">Mobygames</a>
Sinclair ZX81 | `sinclair-zx81` | <a href="https://www.igdb.com/platforms/sinclair-zx81" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/zx81" target="_blank" rel="noopener norefer">Mobygames</a>
Socrates | `socrates` | | <a href="https://www.mobygames.com/platform/socrates" target="_blank" rel="noopener norefer">Mobygames</a>
Sol-20 | `sol-20` | <a href="https://www.igdb.com/platforms/sol-20" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/sol-20" target="_blank" rel="noopener norefer">Mobygames</a>
Sord M5 | `sord-m5` | | <a href="https://www.mobygames.com/platform/sord-m5" target="_blank" rel="noopener norefer">Mobygames</a>
Spectravideo | `spectravideo` | | <a href="https://www.mobygames.com/platform/spectravideo" target="_blank" rel="noopener norefer">Mobygames</a>
Super A'can | `super-acan` | | <a href="https://www.mobygames.com/platform/super-acan" target="_blank" rel="noopener norefer">Mobygames</a>
Super Famicom | `sfam` | <a href="https://www.igdb.com/platforms/sfam" target="_blank" rel="noopener norefer">IGDB</a>| |
Super Nintendo Entertainment System | `snes` | <a href="https://www.igdb.com/platforms/snes" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/snes" target="_blank" rel="noopener norefer">Mobygames</a>
Super Vision 8000 | `super-vision-8000` | | <a href="https://www.mobygames.com/platform/super-vision-8000" target="_blank" rel="noopener norefer">Mobygames</a>
Supervision | `supervision` | | <a href="https://www.mobygames.com/platform/supervision" target="_blank" rel="noopener norefer">Mobygames</a>
Sure Shot HD | `sure-shot-hd` | | <a href="https://www.mobygames.com/platform/sure-shot-hd" target="_blank" rel="noopener norefer">Mobygames</a>
SwanCrystal | `swancrystal` | <a href="https://www.igdb.com/platforms/swancrystal" target="_blank" rel="noopener norefer">IGDB</a>| |
Symbian | `symbian` | | <a href="https://www.mobygames.com/platform/symbian" target="_blank" rel="noopener norefer">Mobygames</a>
TADS | `tads` | | <a href="https://www.mobygames.com/platform/tads" target="_blank" rel="noopener norefer">Mobygames</a>
TI Programmable Calculator | `ti-programmable-calculator` | | <a href="https://www.mobygames.com/platform/ti-programmable-calculator" target="_blank" rel="noopener norefer">Mobygames</a>
TI-99/4A | `ti-994a` | | <a href="https://www.mobygames.com/platform/ti-994a" target="_blank" rel="noopener norefer">Mobygames</a>
TIM | `tim` | | <a href="https://www.mobygames.com/platform/tim" target="_blank" rel="noopener norefer">Mobygames</a>
TRS-80 | `trs-80` | <a href="https://www.igdb.com/platforms/trs-80" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/trs-80" target="_blank" rel="noopener norefer">Mobygames</a>
TRS-80 Color Computer | `trs-80-color-computer` | <a href="https://www.igdb.com/platforms/trs-80-color-computer" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/trs-80-coco" target="_blank" rel="noopener norefer">Mobygames</a>
TRS-80 MC-10 | `trs-80-mc-10` | | <a href="https://www.mobygames.com/platform/trs-80-mc-10" target="_blank" rel="noopener norefer">Mobygames</a>
TRS-80 Model 100 | `trs-80-model-100` | | <a href="https://www.mobygames.com/platform/trs-80-model-100" target="_blank" rel="noopener norefer">Mobygames</a>
Taito X-55 | `taito-x-55` | | <a href="https://www.mobygames.com/platform/taito-x-55" target="_blank" rel="noopener norefer">Mobygames</a>
Tapwave Zodiac | `zod` | <a href="https://www.igdb.com/platforms/zod" target="_blank" rel="noopener norefer">IGDB</a>| |
Tatung Einstein | `tatung-einstein` | <a href="https://www.igdb.com/platforms/tatung-einstein" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/tatung-einstein" target="_blank" rel="noopener norefer">Mobygames</a>
Tektronix 4050 | `tektronix-4050` | | <a href="https://www.mobygames.com/platform/tektronix-4050" target="_blank" rel="noopener norefer">Mobygames</a>
Tele-Spiel ES-2201 | `tele-spiel` | | <a href="https://www.mobygames.com/platform/tele-spiel" target="_blank" rel="noopener norefer">Mobygames</a>
Telstar Arcade | `telstar-arcade` | | <a href="https://www.mobygames.com/platform/telstar-arcade" target="_blank" rel="noopener norefer">Mobygames</a>
Terebikko / See 'n Say Video Phone | `terebikko-slash-see-n-say-video-phone` | <a href="https://www.igdb.com/platforms/terebikko-slash-see-n-say-video-phone" target="_blank" rel="noopener norefer">IGDB</a>| |
Terminal | `terminal` | | <a href="https://www.mobygames.com/platform/terminal" target="_blank" rel="noopener norefer">Mobygames</a>
Texas Instruments TI-99 | `ti-99` | <a href="https://www.igdb.com/platforms/ti-99" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/ti-99" target="_blank" rel="noopener norefer">Mobygames</a>
Thomson MO5 | `thomson-mo5` | <a href="https://www.igdb.com/platforms/thomson-mo5" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/thomson-mo" target="_blank" rel="noopener norefer">Mobygames</a>
Thomson TO | `thomson-to` | | <a href="https://www.mobygames.com/platform/thomson-to" target="_blank" rel="noopener norefer">Mobygames</a>
Tiki 100 | `tiki-100` | | <a href="https://www.mobygames.com/platform/tiki-100" target="_blank" rel="noopener norefer">Mobygames</a>
Timex Sinclair 2068 | `timex-sinclair-2068` | | <a href="https://www.mobygames.com/platform/timex-sinclair-2068" target="_blank" rel="noopener norefer">Mobygames</a>
Tizen | `tizen` | | <a href="https://www.mobygames.com/platform/tizen" target="_blank" rel="noopener norefer">Mobygames</a>
Tomahawk F1 | `tomahawk-f1` | | <a href="https://www.mobygames.com/platform/tomahawk-f1" target="_blank" rel="noopener norefer">Mobygames</a>
Tomy Tutor | `tomy-tutor` | | <a href="https://www.mobygames.com/platform/tomy-tutor" target="_blank" rel="noopener norefer">Mobygames</a>
Triton | `triton` | | <a href="https://www.mobygames.com/platform/triton" target="_blank" rel="noopener norefer">Mobygames</a>
TurboGrafx CD | `turbografx-16-slash-pc-engine-cd` | | <a href="https://www.mobygames.com/platform/turbografx-16-slash-pc-engine-cd" target="_blank" rel="noopener norefer">Mobygames</a>
TurboGrafx-16 | `turbografx16--1` | | <a href="https://www.mobygames.com/platform/turbografx16--1" target="_blank" rel="noopener norefer">Mobygames</a>
TurboGrafx-16/PC Engine | `turbografx16--1` | <a href="https://www.igdb.com/platforms/turbografx16--1" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/turbo-grafx" target="_blank" rel="noopener norefer">Mobygames</a>
Turbografx-16/PC Engine CD | `turbografx-16-slash-pc-engine-cd` | <a href="https://www.igdb.com/platforms/turbografx-16-slash-pc-engine-cd" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/turbografx-cd" target="_blank" rel="noopener norefer">Mobygames</a>
V.Flash | `vflash` | | <a href="https://www.mobygames.com/platform/vflash" target="_blank" rel="noopener norefer">Mobygames</a>
V.Smile | `vsmile` | <a href="https://www.igdb.com/platforms/vsmile" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/vsmile" target="_blank" rel="noopener norefer">Mobygames</a>
VIS | `vis` | | <a href="https://www.mobygames.com/platform/vis" target="_blank" rel="noopener norefer">Mobygames</a>
Vectrex | `vectrex` | <a href="https://www.igdb.com/platforms/vectrex" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/vectrex" target="_blank" rel="noopener norefer">Mobygames</a>
Versatile | `versatile` | | <a href="https://www.mobygames.com/platform/versatile" target="_blank" rel="noopener norefer">Mobygames</a>
VideoBrain | `videobrain` | | <a href="https://www.mobygames.com/platform/videobrain" target="_blank" rel="noopener norefer">Mobygames</a>
Videopac+ G7400 | `videopac-g7400` | | <a href="https://www.mobygames.com/platform/videopac-g7400" target="_blank" rel="noopener norefer">Mobygames</a>
Virtual Boy | `virtualboy` | <a href="https://www.igdb.com/platforms/virtualboy" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/virtual-boy" target="_blank" rel="noopener norefer">Mobygames</a>
Virtual Console | `vc` | <a href="https://www.igdb.com/platforms/vc" target="_blank" rel="noopener norefer">IGDB</a>| |
Visual Memory Unit / Visual Memory System | `visual-memory-unit-slash-visual-memory-system` | <a href="https://www.igdb.com/platforms/visual-memory-unit-slash-visual-memory-system" target="_blank" rel="noopener norefer">IGDB</a>| |
WIPI | `wipi` | | <a href="https://www.mobygames.com/platform/wipi" target="_blank" rel="noopener norefer">Mobygames</a>
Wang 2200 | `wang2200` | | <a href="https://www.mobygames.com/platform/wang2200" target="_blank" rel="noopener norefer">Mobygames</a>
Watara/QuickShot Supervision | `watara-slash-quickshot-supervision` | <a href="https://www.igdb.com/platforms/watara-slash-quickshot-supervision" target="_blank" rel="noopener norefer">IGDB</a>| |
Web browser | `browser` | <a href="https://www.igdb.com/platforms/browser" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/browser" target="_blank" rel="noopener norefer">Mobygames</a>
Wii | `wii` | <a href="https://www.igdb.com/platforms/wii" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/wii" target="_blank" rel="noopener norefer">Mobygames</a>
Wii U | `wiiu` | <a href="https://www.igdb.com/platforms/wiiu" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/wii-u" target="_blank" rel="noopener norefer">Mobygames</a>
Windows | `win` | | <a href="https://www.mobygames.com/platform/win" target="_blank" rel="noopener norefer">Mobygames</a>
Windows 3.x | `win3x` | | <a href="https://www.mobygames.com/platform/win3x" target="_blank" rel="noopener norefer">Mobygames</a>
Windows Apps | `windows-apps` | | <a href="https://www.mobygames.com/platform/windows-apps" target="_blank" rel="noopener norefer">Mobygames</a>
Windows Mobile | `windows-mobile` | <a href="https://www.igdb.com/platforms/windows-mobile" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/windowsphone" target="_blank" rel="noopener norefer">Mobygames</a>
Windows Phone | `winphone` | <a href="https://www.igdb.com/platforms/winphone" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/windows-phone" target="_blank" rel="noopener norefer">Mobygames</a>
WonderSwan | `wonderswan` | <a href="https://www.igdb.com/platforms/wonderswan" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/wonderswan" target="_blank" rel="noopener norefer">Mobygames</a>
WonderSwan Color | `wonderswan-color` | <a href="https://www.igdb.com/platforms/wonderswan-color" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/wonderswan-color" target="_blank" rel="noopener norefer">Mobygames</a>
XaviXPORT | `xavixport` | | <a href="https://www.mobygames.com/platform/xavixport" target="_blank" rel="noopener norefer">Mobygames</a>
Xbox | `xbox` | <a href="https://www.igdb.com/platforms/xbox" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/xbox" target="_blank" rel="noopener norefer">Mobygames</a>
Xbox 360 | `xbox360` | <a href="https://www.igdb.com/platforms/xbox360" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/xbox360" target="_blank" rel="noopener norefer">Mobygames</a>
Xbox Cloud Gaming | `xboxcloudgaming` | | <a href="https://www.mobygames.com/platform/xboxcloudgaming" target="_blank" rel="noopener norefer">Mobygames</a>
Xbox One | `xboxone` | <a href="https://www.igdb.com/platforms/xboxone" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/xbox-one" target="_blank" rel="noopener norefer">Mobygames</a>
Xbox Series X | `series-x` | <a href="https://www.igdb.com/platforms/series-x" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/xbox-series" target="_blank" rel="noopener norefer">Mobygames</a>
Xerox Alto | `xerox-alto` | | <a href="https://www.mobygames.com/platform/xerox-alto" target="_blank" rel="noopener norefer">Mobygames</a>
Z-machine | `z-machine` | | <a href="https://www.mobygames.com/platform/z-machine" target="_blank" rel="noopener norefer">Mobygames</a>
ZX Spectrum | `zxs` | <a href="https://www.igdb.com/platforms/zxs" target="_blank" rel="noopener norefer">IGDB</a>| |
ZX Spectrum Next | `zx-spectrum-next` | | <a href="https://www.mobygames.com/platform/zx-spectrum-next" target="_blank" rel="noopener norefer">Mobygames</a>
ZX80 | `zx80` | | <a href="https://www.mobygames.com/platform/zx80" target="_blank" rel="noopener norefer">Mobygames</a>
ZX81 | `sinclair-zx81` | | <a href="https://www.mobygames.com/platform/sinclair-zx81" target="_blank" rel="noopener norefer">Mobygames</a>
Zeebo | `zeebo` | <a href="https://www.igdb.com/platforms/zeebo" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/zeebo" target="_blank" rel="noopener norefer">Mobygames</a>
Zilog Z80 | `z80` | | <a href="https://www.mobygames.com/platform/z80" target="_blank" rel="noopener norefer">Mobygames</a>
Zilog Z8000 | `zilog-z8000` | | <a href="https://www.mobygames.com/platform/zilog-z8000" target="_blank" rel="noopener norefer">Mobygames</a>
Zodiac | `zodiac` | | <a href="https://www.mobygames.com/platform/zodiac" target="_blank" rel="noopener norefer">Mobygames</a>
Zune | `zune` | | <a href="https://www.mobygames.com/platform/zune" target="_blank" rel="noopener norefer">Mobygames</a>
bada | `bada` | | <a href="https://www.mobygames.com/platform/bada" target="_blank" rel="noopener norefer">Mobygames</a>
digiBlast | `digiblast` | | <a href="https://www.mobygames.com/platform/digiblast" target="_blank" rel="noopener norefer">Mobygames</a>
iOS | `ios` | <a href="https://www.igdb.com/platforms/ios" target="_blank" rel="noopener norefer">IGDB</a>| <a href="https://www.mobygames.com/platform/iphone" target="_blank" rel="noopener norefer">Mobygames</a>
iPad | `ipad` | | <a href="https://www.mobygames.com/platform/ipad" target="_blank" rel="noopener norefer">Mobygames</a>
iPod Classic | `ipod-classic` | | <a href="https://www.mobygames.com/platform/ipod-classic" target="_blank" rel="noopener norefer">Mobygames</a>
iiRcade | `iircade` | | <a href="https://www.mobygames.com/platform/iircade" target="_blank" rel="noopener norefer">Mobygames</a>
tvOS | `tvos` | | <a href="https://www.mobygames.com/platform/tvos" target="_blank" rel="noopener norefer">Mobygames</a>
visionOS | `visionos` | <a href="https://www.igdb.com/platforms/visionos" target="_blank" rel="noopener norefer">IGDB</a>| |
watchOS | `watchos` | | <a href="https://www.mobygames.com/platform/watchos" target="_blank" rel="noopener norefer">Mobygames</a>
webOS | `webos` | | <a href="https://www.mobygames.com/platform/webos" target="_blank" rel="noopener norefer">Mobygames</a>
@@ -1,5 +1,7 @@
## Prerequisites
This guide assumes you're familiar with Docker and have basic knowledge of server management. You'll need:
- A Synology NAS or similar server
- Docker installed
- Basic command line knowledge
@@ -27,7 +29,7 @@ mkdir -p /volume1/data/media/games/library/roms
mkdir -p /volume1/data/media/games/library/bios
```
Note: For supported platforms and their specific folder names, refer to the [official RomM wiki](https://github.com/rommapp/romm/wiki/Supported-Platforms).
Note: For supported platforms and their specific folder names, refer to the [official RomM wiki](../Platforms-and-Players/Supported-Platforms.md).
#### Docker Data Folders
@@ -54,11 +56,12 @@ Generate your authentication key using:
openssl rand -hex 32
> 03a054b6ca27e0107c5eed552ea66bacd9f3a2a8a91e7595cd462a593f9ecd09
```
Save the output - you'll need it for the `ROMM_AUTH_SECRET_KEY` in your configuration.
#### API Integration Setup
RomM currecntly supports 3 metadata sources: IGDB, MobyGames and SteamGridDB. Follow the dedicated wiki page for [API key generation](Generate-Api-Keys.md) to set up your API keys. We recommend setting up IGDG at the minimum.
RomM currecntly supports 3 metadata sources: IGDB, MobyGames and SteamGridDB. Follow the dedicated wiki page for [API key generation](../Getting-Started/Generate-API-Keys.md) to set up your API keys. We recommend setting up IGDG at the minimum.
### 4. MariaDB Configuration
@@ -75,59 +78,59 @@ Create a `docker-compose.yml` file with the following content:
```yaml
services:
romm:
image: rommapp/romm:latest
container_name: romm
restart: unless-stopped
environment:
- PUID=1234 #CHANGE_TO_YOUR_UID
- PGID=12345 #CHANGE_TO_YOUR_GID
- TZ=US/New_York #CHANGE_TO_YOUR_TZ
- DB_HOST=mariadb-romm
- DB_NAME=romm
- DB_ROOT_PASSWORD=DB_ROOT_PASSWORD
- DB_USER=romm-user
- DB_PASSWD=DB_PASSWD
- DB_PORT=3306
- ROMM_AUTH_SECRET_KEY= # Add your generated key
- IGDB_CLIENT_ID= # Add your IGDB ID
- IGDB_CLIENT_SECRET= # Add your IGDB secret
volumes:
- /volume1/docker/romm/resources:/romm/resources
- /volume1/docker/romm/redis-data:/redis-data
- /volume1/data/media/games/library:/romm/library
- /volume1/data/media/games/assets:/romm/assets
- /volume1/data/media/games/config:/romm/config
ports:
- 7676:8080/tcp
network_mode: rommbridge
depends_on:
mariadb-romm:
condition: service_healthy
romm:
image: rommapp/romm:latest
container_name: romm
restart: unless-stopped
environment:
- PUID=1234 #CHANGE_TO_YOUR_UID
- PGID=12345 #CHANGE_TO_YOUR_GID
- TZ=US/New_York #CHANGE_TO_YOUR_TZ
- DB_HOST=mariadb-romm
- DB_NAME=romm
- DB_ROOT_PASSWORD=DB_ROOT_PASSWORD
- DB_USER=romm-user
- DB_PASSWD=DB_PASSWD
- DB_PORT=3306
- ROMM_AUTH_SECRET_KEY= # Add your generated key
- IGDB_CLIENT_ID= # Add your IGDB ID
- IGDB_CLIENT_SECRET= # Add your IGDB secret
volumes:
- /volume1/docker/romm/resources:/romm/resources
- /volume1/docker/romm/redis-data:/redis-data
- /volume1/data/media/games/library:/romm/library
- /volume1/data/media/games/assets:/romm/assets
- /volume1/data/media/games/config:/romm/config
ports:
- 7676:8080/tcp
network_mode: rommbridge
depends_on:
mariadb-romm:
condition: service_healthy
mariadb-romm:
image: mariadb:10.7
container_name: mariadb-romm
restart: unless-stopped
environment:
- MARIADB_ROOT_PASSWORD=MARIADB_ROOT_PASSWORD
- PUID=1234 #CHANGE_TO_YOUR_UID
- PGID=12345 #CHANGE_TO_YOUR_GID
- TZ=US/New_York #CHANGE_TO_YOUR_TZ
- MARIADB_DATABASE=romm
- MARIADB_USER=romm-user
- MARIADB_PASSWORD=MARIADB_PASSWORD
ports:
- "3309:3306"
network_mode: rommbridge
volumes:
- /volume1/docker/mariadb-romm:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--su-mysql", "--connect"]
timeout: 20s
retries: 10
start_period: 30s
interval: 10s
mariadb-romm:
image: mariadb:10.7
container_name: mariadb-romm
restart: unless-stopped
environment:
- MARIADB_ROOT_PASSWORD=MARIADB_ROOT_PASSWORD
- PUID=1234 #CHANGE_TO_YOUR_UID
- PGID=12345 #CHANGE_TO_YOUR_GID
- TZ=US/New_York #CHANGE_TO_YOUR_TZ
- MARIADB_DATABASE=romm
- MARIADB_USER=romm-user
- MARIADB_PASSWORD=MARIADB_PASSWORD
ports:
- "3309:3306"
network_mode: rommbridge
volumes:
- /volume1/docker/mariadb-romm:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--su-mysql", "--connect"]
timeout: 20s
retries: 10
start_period: 30s
interval: 10s
```
### 6. Initial Launch
@@ -1,55 +1,49 @@
This will help you configure the [Tinfoil](https://tinfoil.io/) integration for your Switch to work with your RomM library.
- [Prepare](#Prepare)
- [Configure](#Configure)
- [Additional](#Additional)
- Enjoy!
<img src="https://cdn2.steamgriddb.com/icon_thumb/1178cf1b6a47d41fc664b7d97e305840.png" alt="drawing" width="200"/>
## Prepare
Please note down the following in order to make this as smooth as possible, as well as some pre-reqs:
* RomM updated to at least [3.5.0](https://github.com/rommapp/romm/releases/tag/3.5.0)
* Add `DISABLE_DOWNLOAD_ENDPOINT_AUTH=true` to your environment variables and restart the container
* The URL you use to access RomM
* This can either be http or https
* The system will prefer local access though to avoid reverse proxy issues
* Feed URL: `/api/tinfoil/feed`
* The username and password you use to login to RomM
- RomM updated to at least [3.5.0](https://github.com/rommapp/romm/releases/tag/3.5.0)
- Add `DISABLE_DOWNLOAD_ENDPOINT_AUTH=true` to your environment variables and restart the container
- The URL you use to access RomM
- This can either be http or https
- The system will prefer local access though to avoid reverse proxy issues
- Feed URL: `/api/tinfoil/feed`
- The username and password you use to login to RomM
## Configure
## Configure
Now it's time to configure your switch - Please follow the steps, this will assume you have Tinfoil installed and know how to use the basic functions of it.
1. Open Tinfoil and go to File Browser
2. Scroll over to the selection and press - in order to access the new menu.
3. Enter these Options
- Protocol - Http or https depending on your connection
- Host - Host of your RomM instance
- Port - Port of your RomM Instance
- Path - /api/tinfoil/feed
- Username - Username of your RomM instance
- Password - Password of your RomM instance
- Title - Free text title, make it whatever you want.
- Enabled - Yes
4. Press X to save
- Protocol - Http or https depending on your connection
- Host - Host of your RomM instance
- Port - Port of your RomM Instance
- Path - /api/tinfoil/feed
- Username - Username of your RomM instance
- Password - Password of your RomM instance
- Title - Free text title, make it whatever you want.
- Enabled - Yes
4. Press X to save
5. Now close out of Tinfoil and go back in, so it can scan the TitleIDs - if everything is correct you will have this custom motd:
" RomM Swithc Library"
" RomM Swithc Library"
Now you will be able to see the files in "New Games" tab of Tinfoil OR you can access it within the "File Browser" section that you setup earlier.
![Image of Tinfoil](https://raw.githubusercontent.com/rommapp/wiki/refs/heads/main/romm.wiki/resources/tinfoil/tinfoilscreen.jpg)
![Image of Tinfoil](../resources/tinfoil/tinfoilscreen.jpg)
## Additional
## Additional
It didn't pull anything through to "New Games" and has not parsed any information about the titles?!
That would be becasue the filename it has tried to pull had no TitleID (Improvement to RomM coming soon :tm:)
Make sure the filename has the TitleID within the title like this:
![TitleID](https://raw.githubusercontent.com/rommapp/wiki/refs/heads/main/romm.wiki/resources/tinfoil/titleid.jpg)
![TitleID](../resources/tinfoil/titleid.jpg)
Once this is done, the next time Tinfoil is opened it is always parsed and re-scanned.
Once this is done, the next time Tinfoil is opened it is always parsed and re-scanned.
@@ -1,5 +1,7 @@
## Prerequisites
This guide assumes you're familiar with Docker and have basic knowledge of TrueNAS. You'll need:
- A running TrueNAS installation
- Your games setup in the [required folder structure](https://github.com/rommapp/romm/blob/release/README.md)
@@ -8,94 +10,97 @@ This guide assumes you're familiar with Docker and have basic knowledge of TrueN
### Install through the TrueNAS App Catalog (Recommended)
#### Step 1: Navigate to Romm app
Navigate to the App Catalog via Apps (Left Navbar) -> Discover Apps -> Romm -> Install
![Romm app](resources/truenas/appstore.png)
![Romm app](../resources/truenas/appstore.png)
#### Step 2: Installation configuration
Step through the installation UI. You will need to supply various credentials per the [Quick Start Guide](quick-start-guide). Most of the default values will work.
Step through the installation UI. You will need to supply various credentials per the [Quick Start Guide](../Getting-Started/Quick-Start-Guide.md). Most of the default values will work.
Note: You will likely want to set certain Storage Configurations to a Dataset within TrueNAS, such as your Romm Library and Assets storage. If you do this, ensure you provide ACL access to the UserID specified above (default: 568, apps user).
![Romm Library Example](resources/truenas/app-config.png)
![Romm Library Example](../resources/truenas/app-config.png)
#### Step 3: Save your configuration
Save, and you're done! If the app will not boot, refer to [Troubleshooting](#troubleshooting) or head on over to the [Discord](https://discord.gg/P5HtHnhUDH).
### Install via YAML
This installation path should only be used in the event that there is a bug with installing through the App Catalog, or you wish to have more flexibility than is provided by the installation UI.
#### Step 1: Navigate to YAML install
Navigate to the `Install via YAML` page via Apps (Left Navbar) -> Discover Apps -> Install via YAML
![Install via YAML](resources/truenas/install-via-yaml.png)
![Install via YAML](../resources/truenas/install-via-yaml.png)
#### Step 2: Paste in the following YML
Replace any empty values with credentials you've created per the [Quick Start Guide](quick-start-guide).
Replace any empty values with credentials you've created per the [Quick Start Guide](../Getting-Started/Quick-Start-Guide.md).
```yaml
services:
romm:
container_name: romm
depends_on:
romm-db:
condition: service_healthy
restart: True
deploy:
resources: # Resource constraints
limits:
cpus: '2.0'
memory: 4g
environment:
- DB_HOST=romm-db
- DB_NAME=romm
- DB_USER=romm-user
- DB_PASSWD= # Should match MARIADB_PASSWORD in mariadb
- ROMM_AUTH_SECRET_KEY= # Generate a key with `openssl rand -hex 32`
- IGDB_CLIENT_ID= # Generate an ID and SECRET in IGDB
- IGDB_CLIENT_SECRET= # https://api-docs.igdb.com/#account-creation
- MOBYGAMES_API_KEY= # https://www.mobygames.com/info/api/
- STEAMGRIDDB_API_KEY= # https://github.com/rommapp/romm/wiki/Generate-API-Keys#steamgriddb
image: rommapp/romm:latest
ports:
- '31100:8080'
restart: unless-stopped
user: '568:568'
volumes: # Any /mnt paths may optionally be replaced with a docker volume
- /mnt/tank/truenas/resources:/romm/resources # Replace /mnt...: file path with your own data structure
- romm_redis_data:/romm/redis-data # Docker will manage this volume
- /mnt/tank/truenas/roms:/romm/library # Replace /mnt...: file path with your own data structure
- /mnt/tank/truenas/assets:/romm/assets # Replace /mnt...: file path with your own data structure
- /mnt/tank/truenas/config:/romm/config # Replace /mnt...: file path with your own data structure
romm-db:
container_name: romm-db
environment:
- MARIADB_ROOT_PASSWORD= # Use a unique, secure password
- MARIADB_DATABASE=romm
- MARIADB_USER=romm-user
- MARIADB_PASSWORD= # Match MARIADB_ROOT_PASSWORD
healthcheck:
interval: 10s
retries: 5
start_interval: 10s
start_period: 30s
test:
- CMD
- healthcheck.sh
- '--connect'
- '--innodb_initialized'
timeout: 5s
image: mariadb:latest
restart: unless-stopped
volumes:
- mysql_data:/var/lib/mysql
version: '3'
romm:
container_name: romm
depends_on:
romm-db:
condition: service_healthy
restart: True
deploy:
resources: # Resource constraints
limits:
cpus: "2.0"
memory: 4g
environment:
- DB_HOST=romm-db
- DB_NAME=romm
- DB_USER=romm-user
- DB_PASSWD= # Should match MARIADB_PASSWORD in mariadb
- ROMM_AUTH_SECRET_KEY= # Generate a key with `openssl rand -hex 32`
- IGDB_CLIENT_ID= # Generate an ID and SECRET in IGDB
- IGDB_CLIENT_SECRET= # https://api-docs.igdb.com/#account-creation
- MOBYGAMES_API_KEY= # https://www.mobygames.com/info/api/
- STEAMGRIDDB_API_KEY= # https://github.com/rommapp/romm/wiki/Generate-API-Keys#steamgriddb
image: rommapp/romm:latest
ports:
- "31100:8080"
restart: unless-stopped
user: "568:568"
volumes: # Any /mnt paths may optionally be replaced with a docker volume
- /mnt/tank/truenas/resources:/romm/resources # Replace /mnt...: file path with your own data structure
- romm_redis_data:/romm/redis-data # Docker will manage this volume
- /mnt/tank/truenas/roms:/romm/library # Replace /mnt...: file path with your own data structure
- /mnt/tank/truenas/assets:/romm/assets # Replace /mnt...: file path with your own data structure
- /mnt/tank/truenas/config:/romm/config # Replace /mnt...: file path with your own data structure
romm-db:
container_name: romm-db
environment:
- MARIADB_ROOT_PASSWORD= # Use a unique, secure password
- MARIADB_DATABASE=romm
- MARIADB_USER=romm-user
- MARIADB_PASSWORD= # Match MARIADB_ROOT_PASSWORD
healthcheck:
interval: 10s
retries: 5
start_interval: 10s
start_period: 30s
test:
- CMD
- healthcheck.sh
- "--connect"
- "--innodb_initialized"
timeout: 5s
image: mariadb:latest
restart: unless-stopped
volumes:
- mysql_data:/var/lib/mysql
version: "3"
volumes:
mysql_data: Null
romm_redis_data: Null
mysql_data: Null
romm_redis_data: Null
```
#### Step 3: Save your configuration
@@ -105,6 +110,7 @@ Save, and you're done! If the app will not boot, refer to [Troubleshooting](#tro
## Troubleshooting
### General
- Ensure you have replaced empty values (UIDs, GIDs, passwords, API keys) with your own
- Ensure proper permissions are applied within TrueNAS
- Monitor logs via the app bash terminal during for any errors if the app is encountering issues
@@ -16,8 +16,8 @@ MariaDB is required to run RomM, so install it from the plugin registry. Only th
Now fill in all the environment variables; descriptions of the options and sensible defaults are listed in the [example docker-compose.yml](https://github.com/rommapp/romm/blob/release/examples/docker-compose.example.yml) file.
> [!WARNING]
> The network type must be set to "Custom: romm"
!!! warning
The network type must be set to "Custom: romm"
![mariadb environment variables](https://github.com/user-attachments/assets/a11906c5-25b2-46f1-906b-451a9ee39dca)
@@ -31,8 +31,8 @@ From the Unraid dashboard, click `APPS` in the navbar. In the search bar, search
Configure the required environment variables, ports and paths as per the [example docker-compose.yml](https://github.com/rommapp/romm/blob/release/examples/docker-compose.example.yml) file.
> [!WARNING]
> The network type must also be set to "Custom: romm"
!!! warning
The network type must also be set to "Custom: romm"
![romm docker tab](https://github.com/user-attachments/assets/4c4210c2-ed00-4790-a945-65cbe33620b0)
@@ -50,7 +50,6 @@ Apply the changes, then head to the `DOCKER` tab. You should see both containers
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/Oo5obHNy2iw/0.jpg)](https://www.youtube.com/watch?v=Oo5obHNy2iw)
[AlienTech42](https://www.youtube.com/@AlienTech42) has published [a great video](https://www.youtube.com/watch?v=ls5YcsFdwLQ) on installing and running RomM on Unraid. While a bit out of date vis-a-vis install instructions, it's still very useful for general setup and debugging. Check it out!
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/ls5YcsFdwLQ/0.jpg)](https://www.youtube.com/watch?v=ls5YcsFdwLQ)
@@ -17,20 +17,23 @@ The directory structure is important for running the bulk ROM renaming script. B
### Initial Setup Steps
1. Create a working copy of your ROMs:
```bash
cp -r roms/ roms-unverified/
```
This provides a safe working environment and allows for easy script adjustment if needed.
```bash
cp -r roms/ roms-unverified/
```
This provides a safe working environment and allows for easy script adjustment if needed.
2. Download DAT Files:
- For cartridge-based systems:
- Visit [No-Intro.org Daily Download](https://datomatic.no-intro.org/index.php?page=download&op=daily)
- Download the latest DAT compilation
- For optical media (e.g., PlayStation):
- Visit [redump.org](http://redump.org/downloads/)
- Download platform-specific DAT files
Extract the DAT files to your `dats` directory. You can optionally extract a subset of the .dat files into the directory instead.
- For cartridge-based systems:
- Visit [No-Intro.org Daily Download](https://datomatic.no-intro.org/index.php?page=download&op=daily)
- Download the latest DAT compilation
- For optical media (e.g., PlayStation):
- Visit [redump.org](http://redump.org/downloads/)
- Download platform-specific DAT files
Extract the DAT files to your `dats` directory. You can optionally extract a subset of the .dat files into the directory instead.
## Configuration
@@ -61,6 +64,7 @@ time npx -y igir@latest \
```
Make the script executable:
```bash
chmod a+x igir-romm-cleanup.sh
```
@@ -103,12 +107,14 @@ done
This will find any directory with `(Disc` in the name and move the files into a new directory without the `(Disc #)` string. For example:
Before:
```bash
Final Fantasy VII (Disc 1) (USA)
Final Fantasy VII (Disc 2) (USA)
```
Gets combined to:
```bash
Final Fantasy VII (USA)
```
-85
View File
@@ -1,85 +0,0 @@
## Scanning
### Scan is skipping all platforms/ends instantly
There are a few common reasons why a scan may end instantly/without scanning platforms
* Badly mounted library: verify that you mounted your roms folder at `/romm/library`
* Incorrect permissions: the app needs to read the files and folders in your library, check their permissions with `ls -lh`
* Invalid folder structure: verify that your folder structure matches the one in the [README](https://github.com/zurdi15/romm#-folder-structure)
### Roms not found for platform X, check romm folder structure
This is the same issue as the one above, and can be quickly solved by verifying your folder structure. RomM expects a library with a folder named `roms` in it, for example:
- `/server/media/library:/romm/library`
- `/server/media/games/roms:/romm/library/roms`
### Scan does not recognize a platform
When scanning the folders mounted in `/library/roms`, the scanner tries to match the folder name with the platform's slug in IGDB. If you notice that the scanner isn't detecting a platform, verify that the folder name matches the slug in the url of the [platform in IGDB](https://www.igdb.com/platforms). For example, the Nintendo 64DD has the URL https://www.igdb.com/platforms/nintendo-64dd, so the folder should be named `nintendo-64dd`.
### Scan times out after ~4 hours
The background scan task times out after 4 hours, which can happen if you have a very large library. The easiest work around is to keep running scans every 4 hours, **without** checking the "Complete rescan" option.
## Authentication
### Error: `403 Forbidden`
When authentication is enabled, most endpoints will return a `403 Forbidden` response if you're not authenticated, or if your sessions is in a broken state. The session key can be reset by [clearing your cookies](https://support.google.com/accounts/answer/32050).
CSRF protection is also enabled, which helps to mitigates [CSRF attacks](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html) (useful if your instance is public). If you encounter a `Forbidden (403) CSRF verification failed` error, simply reloading your browser should force it to fetch a fresh CSRF cookie.
### Error: `Unable to login: CSRF token verification failed`
This error is known to happen on Chrome, but could happen in other browsers; manually clear your cookies (specifically one called `csrftoken`) and hard reload your browser window (CMD+SHIFT+R on macOS, CTRL+F5 on Windows).
### Error: `400 Bad Request` on the Websocket endpoint
If you're running RomM behind a reverse-proxy (Caddy, NGINX, etc.), ensure that websockets are supported and enabled. This may vary depending on the reverse proxy solution being used. In the case of Nginx Proxy Manager, enable the "Websockets Support" toggle when editing the proxy host.
## Synology
### ErrNo 13: Access Denied
We have noticed recently a spate of access denied on Synology systems via Portainer or even docker manager. The ErrNo13 is directly related to Synology and it is a simple permission issue. To fix it please do the following:
1. Make sure SSH is enabled on your synology product. Refer to here if it is not [Enable SSH](https://kb.synology.com/en-uk/DSM/tutorial/How_to_login_to_DSM_with_root_permission_via_SSH_Telnet)
2. Connect to SSH and login as your admin username and password (Same login used to login to DSM web page)
3. Take a note on your user:group you can find this by typing ID when logged into SSH.
4. Type the following commands in the SSH window.
``` sudo chown -R user:group /path/to/library ```
``` sudo chmod -R a=,a+rX,u+w,g+w /path/to/library ```
``` sudo chown -R user:group /path/to/assets ```
``` sudo chmod -R a=,a+rX,u+w,g+w /path/to/assets ```
``` sudo chown -R user:group /path/to/config ```
``` sudo chmod -R a=,a+rX,u+w,g+w /path/to/config ```
You will find the relevant directories in your compose, this is basically the folders where you store your RomM information and we are just resetting permissions. Restart the containers and you should now have no issues scanning information in!
Any issues please ask in the Discord.
Thanks to [Docker IDs - DrFrankenstein](https://drfrankenstein.co.uk/step-2-setting-up-a-restricted-docker-user-and-obtaining-ids/) for the guidance from his blog.
## Miscellaneous
### Restarting the container when using SQLite drops all the data/requires a full re-scan
Verify that the database is mapped to a persistent storage volume in your docker compose or Unraid template.
```
"/path/to/database:/romm/database" # [Optional] Only needed if ROMM_DB_DRIVER=sqlite or not set
```
### Error: `Could not get twitch auth token: check client_id and client_secret`
This is likely due to misconfigured environment variables; verify that `CLIENT_ID` and `CLIENT_SECRET` are set correctly, and that both match the values in IGDB.
@@ -0,0 +1,18 @@
---
title: Troubleshooting Authentication
description: Troubleshooting issues relating to authentication
---
### Error: `403 Forbidden`
When authentication is enabled, most endpoints will return a `403 Forbidden` response if you're not authenticated, or if your sessions is in a broken state. The session key can be reset by [clearing your cookies](https://support.google.com/accounts/answer/32050).
CSRF protection is also enabled, which helps to mitigates [CSRF attacks](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html) (useful if your instance is public). If you encounter a `Forbidden (403) CSRF verification failed` error, simply reloading your browser should force it to fetch a fresh CSRF cookie.
### Error: `Unable to login: CSRF token verification failed`
This error is known to happen on Chrome, but could happen in other browsers; manually clear your cookies (specifically one called `csrftoken`) and hard reload your browser window (CMD+SHIFT+R on macOS, CTRL+F5 on Windows).
### Error: `400 Bad Request` on the Websocket endpoint
If you're running RomM behind a reverse-proxy (Caddy, NGINX, etc.), ensure that websockets are supported and enabled. This may vary depending on the reverse proxy solution being used. In the case of Nginx Proxy Manager, enable the "Websockets Support" toggle when editing the proxy host.
@@ -0,0 +1,16 @@
---
title: Miscellaneous Troubleshooting
description: Troubleshooting miscellaneous issues
---
### Restarting the container when using SQLite drops all the data/requires a full re-scan
Verify that the database is mapped to a persistent storage volume in your docker compose or Unraid template.
```
"/path/to/database:/romm/database" # [Optional] Only needed if ROMM_DB_DRIVER=sqlite or not set
```
### Error: `Could not get twitch auth token: check client_id and client_secret`
This is likely due to misconfigured environment variables; verify that `CLIENT_ID` and `CLIENT_SECRET` are set correctly, and that both match the values in IGDB.
@@ -0,0 +1,27 @@
---
title: Troubleshooting Scanning
description: Troubleshooting issues relating to library scanning
---
### Scan is skipping all platforms/ends instantly
There are a few common reasons why a scan may end instantly/without scanning platforms
- Badly mounted library: verify that you mounted your roms folder at `/romm/library`
- Incorrect permissions: the app needs to read the files and folders in your library, check their permissions with `ls -lh`
- Invalid folder structure: verify that your folder structure matches the one in the [README](https://github.com/zurdi15/romm#-folder-structure)
### Roms not found for platform X, check romm folder structure
This is the same issue as the one above, and can be quickly solved by verifying your folder structure. RomM expects a library with a folder named `roms` in it, for example:
- `/server/media/library:/romm/library`
- `/server/media/games/roms:/romm/library/roms`
### Scan does not recognize a platform
When scanning the folders mounted in `/library/roms`, the scanner tries to match the folder name with the platform's slug in IGDB. If you notice that the scanner isn't detecting a platform, verify that the folder name matches the slug in the url of the [platform in IGDB](https://www.igdb.com/platforms). For example, the Nintendo 64DD has the URL https://www.igdb.com/platforms/nintendo-64dd, so the folder should be named `nintendo-64dd`.
### Scan times out after ~4 hours
The background scan task times out after 4 hours, which can happen if you have a very large library. The easiest work around is to keep running scans every 4 hours, **without** checking the "Complete rescan" option.
@@ -0,0 +1,31 @@
---
title: Troubleshooting Synology
description: Troubleshooting issues when using Synology products
---
### ErrNo 13: Access Denied
We have noticed recently a spate of access denied on Synology systems via Portainer or even docker manager. The ErrNo13 is directly related to Synology and it is a simple permission issue. To fix it please do the following:
1. Make sure SSH is enabled on your synology product. Refer to here if it is not [Enable SSH](https://kb.synology.com/en-uk/DSM/tutorial/How_to_login_to_DSM_with_root_permission_via_SSH_Telnet)
2. Connect to SSH and login as your admin username and password (Same login used to login to DSM web page)
3. Take a note on your user:group you can find this by typing ID when logged into SSH.
4. Type the following commands in the SSH window.
`sudo chown -R user:group /path/to/library`
`sudo chmod -R a=,a+rX,u+w,g+w /path/to/library`
`sudo chown -R user:group /path/to/assets`
`sudo chmod -R a=,a+rX,u+w,g+w /path/to/assets`
`sudo chown -R user:group /path/to/config`
`sudo chmod -R a=,a+rX,u+w,g+w /path/to/config`
You will find the relevant directories in your compose, this is basically the folders where you store your RomM information and we are just resetting permissions. Restart the containers and you should now have no issues scanning information in!
Any issues please ask in the Discord.
Thanks to [Docker IDs - DrFrankenstein](https://drfrankenstein.co.uk/step-2-setting-up-a-restricted-docker-user-and-obtaining-ids/) for the guidance from his blog.
+6
View File
@@ -0,0 +1,6 @@
---
title: Troubleshooting
description: Common troubleshooting guides
---
Use the side-bar to your left for navigation
@@ -1,47 +0,0 @@
## ⚠️ Support for webRcade will be removed in version 3.0 in favor the built-in [EmulatorJS player](https://github.com/zurdi15/romm/wiki/EmulatorJS-Player) ⚠️
[WebRcade](https://github.com/webrcade/webrcade) is a platform that enables playing games entirely within the context of the browser across a [wide variety of platforms](https://docs.webrcade.com/platforms/), with support for game pads (Bluetooth and USB) for both front-end navigation and in-game.
RomM exposes an API endpoint that serves a compatible JSON feed of supported platforms and games. Since webRcade runs within the context of your browser, you RomM instances _does not_ need to be exposed to the web. Further documentation can be found in the [User Guide](https://docs.webrcade.com/userguide/).
**IMPORTANT: You must set the `ROMM_HOST` environment variable to your host ip or domain name (including http(s)://, subdomain and port if needed).**
**IMPORTANT: Due to limitations with webRcade, RomM authentication must be DISABLED for the integration to work.**
### Some notes and limitations before starting
* Save & state files cannot be exported from webRcade
* The JSON feed does not currently support [BIOS files](https://docs.webrcade.com/apps/emulators/psx/#bios-files)
* [Local feeds](#customizing-the-feed) will not stay up-to-date with your RomM library
* A bug in the latest release causes the game covers not to load if RomM is not accessible to the internet
### Loading the RomM feed
Head to the [main page](https://play.webrcade.com/) and after hovering over "Categories" click "Show Feeds". Hit the "Add Feed" button at the bottom, select "URL" and paste the following URL, replacing `host` with the URL of your RomM instance: `https://<host>/api/platforms/webrcade/feed`.
|Home page|Feeds|Feed URL|
|---|---|---|
|<img width="1511" alt="Screenshot 2023-12-27 at 11 24 26 PM" src="https://github.com/zurdi15/romm/assets/3247106/29274192-29e3-485d-a5b7-5cdb689c13d9">|<img width="1507" alt="Screenshot 2023-12-27 at 11 24 41 PM" src="https://github.com/zurdi15/romm/assets/3247106/f42658ab-da29-4c00-ba5e-faec99ee1a16">|<img width="624" alt="Screenshot 2023-12-27 at 11 25 01 PM" src="https://github.com/zurdi15/romm/assets/3247106/5438387d-a1f1-4fa6-b7fa-26b623b85c13">|
At this point webRcade should automatically load your library; if it doesn't, head back to the Feeds list, select "RomM Feed" at the bottom and click "Load".
### Customizing the feed
WebRcade also boasts an [editor](https://editor.webrcade.com/) that can identify supported games and download custom assets. You can leverage this editor to enhance your RomM feed by loading content served by the API and saving the modified feed locally. In the editor, click "Import", paste the RomM feed URL (as above) and hit "Ok". The page should refresh with the contents of the RomM feed.
|Editor|Import|
|---|---|
|<img width="1507" alt="Screenshot 2023-12-27 at 11 23 56 PM" src="https://github.com/zurdi15/romm/assets/3247106/261b1d2a-c6f9-41e3-ac97-8139a1f43ad6">|<img width="617" alt="Screenshot 2023-12-27 at 10 39 24 PM" src="https://github.com/zurdi15/romm/assets/3247106/c0a3df8b-b76f-4151-a7cf-910011bb98ca">|
Now select one of the platforms (or all of them) and, under the 3-dot menu, hit "Analyze". A window will appear displaying the progress of the analysis; webRcade is fetching assets from [webrcade-assets](https://github.com/webrcade-assets).
|Analyze|Progress|
|---|---|
|<img width="1293" alt="Screenshot 2023-12-27 at 11 27 11 PM" src="https://github.com/zurdi15/romm/assets/3247106/af0d4380-56c4-41a6-bdb4-1847957c1bf8">|<img width="255" alt="Screenshot 2023-12-27 at 11 27 34 PM" src="https://github.com/zurdi15/romm/assets/3247106/26e6ef93-37aa-491a-bc2e-6879720a13ad">|
When you've finished analyzing your library (and making any edits), hit "Save" in the sidebar. A local feed will then be created and stored in the browser's cache, which you can export with the "Export" option in the sidebar. Back in the [main window](https://play.webrcade.com), the local should now appear in your Feed list.
### Screenshot
<img width="1509" alt="Screenshot 2023-12-27 at 11 28 14 PM" src="https://github.com/zurdi15/romm/assets/3247106/f10adeca-031e-4279-823a-08e1879d7256">
-35
View File
@@ -1,35 +0,0 @@
### Getting Started
- [Quick Start Guide](Quick-Start-Guide)
- [Generate API Keys](Generate-API-Keys)
- [Environment Variables](Environment-Variables)
- [Reverse Proxy](Reverse-Proxy)
- [Authentication](Authentication)
### Platforms and Players
- [Supported Platforms](Supported-Platforms)
- [Custom Platforms](Custom-Platforms)
- [EmulatorJS Player](EmulatorJS-Player)
- [RuffleRS Player](RuffleRS-Player)
### System Setup Guides
- [Unraid Setup](Unraid-Setup-Guide)
- [Synology Setup](Synology-Setup-Guide)
- [TrueNAS Setup](TrueNAS-Setup-Guide)
- [Tinfoil Integration](Tinfoil-Integration)
### OIDC Setup Guides
- [OIDC Setup With Authelia](OIDC-Setup-With-Authelia)
- [OIDC Setup With Authentik](OIDC-Setup-With-Authentik)
- [OIDC Setup With PockedID](OIDC-Setup-With-PocketID)
### Tools
- [Igir Collection Manager](Igir-Collection-Manager-Guide)
### Maintenance
- [Scheduled Tasks](Scheduled-Tasks)
- [Troubleshooting](Troubleshooting)
- [Upgrading to 3.0](Upgrading-to-3.0)
### Miscellaneous
- [FAQs](FAQs)
- [Branding Guidelines](Brand-Guidelines)
+42 -12
View File
@@ -1,17 +1,47 @@
# Welcome to MkDocs
---
title: Introduction
description: An introduction to your beautiful, powerful, self-hosted rom manager
hide:
- toc
---
For full documentation visit [mkdocs.org](https://www.mkdocs.org).
<img src="./resources/romm/logotype.png" alt="RomM Logo">
/// caption
Welcome to the **RomM Project**, the ecosystem around the premier self-hosted, open source rom manager.
///
## Commands
<div style="text-align: center">
Official Website: <a href="https://romm.app" >https://romm.app</a> | Demo Website: <a href="https://romm.app" >https://demo.romm.app</a>
</div>
* `mkdocs new [dir-name]` - Create a new project.
* `mkdocs serve` - Start the live-reloading docs server.
* `mkdocs build` - Build the documentation site.
* `mkdocs -h` - Print help message and exit.
RomM (ROM Manager) allows you to scan, enrich, and browse your game collection with a clean and responsive interface. With support for multiple platforms, various naming schemes, and custom tags, RomM is a must-have for anyone who plays on emulators.
## Project layout
To get started with RomM, head over to the [Quick Start guide](Getting-Started/Quick-Start-Guide.md) in the main repository.
mkdocs.yml # The configuration file.
docs/
index.md # The documentation homepage.
... # Other markdown pages, images and other files.
### Philosophy
At the heart of this project is a commitment to freedom, collaboration, and transparency. We believe that software should be built for the benefit of its users, rather than solely to maximize profit or serve the interests of a few stakeholders, ensuring that it doesn't manipulate, exploit, or prioritize data collection.
By offering RomM as a self-hosted, open-source solution, we ensure that everyone has the ability to manage their game collections on their own terms, and own their data, all without being tied to proprietary systems or services.
**Rom is and will always be free and open-source software.**
The core app is licensed under [GNU AGPLv3](https://choosealicense.com/licenses/agpl-3.0/), which requires that all modifications to the code be made available under the same license. This ensures that the community can benefit from and build upon the contributions of others, promoting trust and transparency.
Other projects under the umbrella will be licensed under similar permissive licenses, such as [GNU GPLv3](https://choosealicense.com/licenses/gpl-3.0/) for software, or [CC0](https://choosealicense.com/licenses/cc0-1.0/) for documentation.
### Contributing
RomM is a collaborative project, and we welcome contributions from the community. Our code is available on GitHub, and we encourage you to contribute to the project by submitting bug reports, feature requests, or pull requests. Please check the contribution guidelines in each project for more information.
### Community
We strive to create a safe and respectful space where everyone can contribute and benefit from the project by fostering a welcoming and inclusive environment for all users, regardless of their background or identity.
Join us on Discord, where you can ask questions, submit ideas, get help, showcase your collection, and discuss RomM with other users.
<div style="text-align: center">
<a href="https://discord.gg/RGPJHNMMwJ">
<img src="https://invidget.switchblade.xyz/RGPJHNMMwJ" alt="Join our Discord">
</a>
</div>
+50
View File
@@ -0,0 +1,50 @@
[data-md-color-scheme="slate"] {
--md-primary-fg-color: #371f69;
--md-primary-fg-color--light: #553e98;
--md-primary-fg-color--dark: #371f69;
--md-accent-fg-color: #bea4e1;
--md-accent-fg-color--transparent: #bea4e133;
--md-accent-bg-color: #ede5f8;
--md-accent-bg-color--light: #e1a38d;
/* Improve active link visibility in dark mode */
--md-typeset-a-color: #bea4e1;
--md-nav-link-color--active: #ede5f8;
}
[data-md-color-scheme="default"] {
--md-primary-fg-color: #553e98;
--md-primary-fg-color--light: #bea4e1;
--md-primary-fg-color--dark: #371f69;
--md-accent-fg-color: #e6c7a7;
--md-accent-fg-color--transparent: #e6c7a733;
--md-accent-bg-color: #ede5f8;
--md-accent-bg-color--light: #e1a38d;
}
.banner {
height: 24px; /* Made slightly taller for the warning icon */
position: sticky;
top: 0;
left: 0;
width: 100%;
z-index: 100; /* Increased to ensure it stays above other elements */
text-align: center;
background-color: #856404;
line-height: 24px; /* Vertically center the text */
font-weight: 500; /* Make text slightly bolder */
}
.banner + .md-header {
top: 24px; /* Match the banner height */
}
/* Adjust the main content area when banner is present */
.banner ~ .md-main {
height: calc(100vh - 88px); /* Adjust for banner + header height */
}
.banner a:hover {
color: #ffffff;
text-decoration: none;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" version="1.0" viewBox="0 0 375 375"><path fill="#553e98" d="M8.828 220.458h25.176c1.41 0 2.52-1.207 2.52-2.618v-23.566a2.49 2.49 0 0 1 2.515-2.516h15.105c1.41 0 2.52 1.106 2.52 2.516v23.664c0 1.41 1.105 2.52 2.516 2.52h25.175c1.41 0 2.52-1.207 2.52-2.618v-24.875c0-5.94-4.332-10.273-10.274-10.273h-.906a2.49 2.49 0 0 1-2.515-2.516c0-1.41 1.105-2.52 2.515-2.52h.906c5.942 0 10.274-4.327 10.274-10.269V156.31c0-9.465-6.95-16.414-16.414-16.414H8.828a2.49 2.49 0 0 0-2.516 2.516v75.527c0 1.41 1.106 2.52 2.516 2.52m30.21-51.864a2.49 2.49 0 0 1-2.515-2.515c0-1.41 1.106-2.52 2.516-2.52h15.105c1.41 0 2.52 1.11 2.52 2.52s-1.11 2.515-2.52 2.515Zm73.382 51.863h24.37c11.883 0 20.543-8.66 20.543-20.543v-39.477c0-11.883-8.66-20.543-20.543-20.543h-24.37c-11.883 0-20.544 8.66-20.544 20.543v39.477c0 11.883 8.66 20.543 20.543 20.543m12.183-23.16a2.493 2.493 0 0 1-2.516-2.52v-29.203c0-1.41 1.106-2.52 2.516-2.52s2.52 1.11 2.52 2.52v29.203c0 1.41-1.11 2.52-2.52 2.52m40.356 23.16h25.074c1.41 0 2.52-1.11 2.52-2.52v-44.812a2.49 2.49 0 0 1 2.515-2.516c1.41 0 2.52 1.105 2.52 2.516v45.015c0 1.309 1.207 2.317 2.516 2.317h25.175c1.309 0 2.52-1.008 2.52-2.317v-45.015a2.49 2.49 0 0 1 2.515-2.516c1.41 0 2.52 1.105 2.52 2.516v44.812c0 1.41 1.207 2.52 2.617 2.52h25.074c1.41 0 2.52-1.11 2.52-2.52v-75.527c0-1.41-1.211-2.516-2.617-2.516h-42.7c-1.41 0-2.519 1.207-2.519 2.617v14a2.49 2.49 0 0 1-2.516 2.516c-1.41 0-2.52-1.11-2.52-2.516v-14.101c0-1.41-1.206-2.516-2.616-2.516h-42.7a2.49 2.49 0 0 0-2.515 2.516v75.527c0 1.41 1.207 2.52 2.617 2.52m105.697 0h25.074c1.41 0 2.52-1.11 2.52-2.52v-44.812a2.49 2.49 0 0 1 2.515-2.516c1.41 0 2.52 1.105 2.52 2.516v45.015c0 1.309 1.207 2.317 2.515 2.317h25.176c1.309 0 2.52-1.008 2.52-2.317v-45.015a2.49 2.49 0 0 1 2.515-2.516c1.41 0 2.52 1.105 2.52 2.516v44.812c0 1.41 1.207 2.52 2.617 2.52h25.074c1.41 0 2.52-1.11 2.52-2.52v-75.527c0-1.41-1.211-2.516-2.618-2.516h-42.699c-1.41 0-2.52 1.207-2.52 2.617v14a2.49 2.49 0 0 1-2.515 2.516c-1.41 0-2.52-1.11-2.52-2.516v-14.101c0-1.41-1.206-2.516-2.617-2.516h-42.699a2.49 2.49 0 0 0-2.515 2.516v75.527c0 1.41 1.207 2.52 2.617 2.52m0 0"/></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

Generated
+311
View File
@@ -11,6 +11,34 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 },
]
[[package]]
name = "cairocffi"
version = "1.7.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "cffi" },
]
sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611 },
]
[[package]]
name = "cairosvg"
version = "2.7.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "cairocffi" },
{ name = "cssselect2" },
{ name = "defusedxml" },
{ name = "pillow" },
{ name = "tinycss2" },
]
sdist = { url = "https://files.pythonhosted.org/packages/d5/e6/ec5900b724e3c44af7f6f51f719919137284e5da4aabe96508baec8a1b40/CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0", size = 8399085 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/01/a5/1866b42151f50453f1a0d28fc4c39f5be5f412a2e914f33449c42daafdf1/CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b", size = 43235 },
]
[[package]]
name = "certifi"
version = "2025.1.31"
@@ -20,6 +48,39 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393 },
]
[[package]]
name = "cffi"
version = "1.17.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pycparser" },
]
sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 },
{ url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 },
{ url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 },
{ url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 },
{ url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 },
{ url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 },
{ url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 },
{ url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 },
{ url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 },
{ url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 },
{ url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 },
{ url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 },
{ url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 },
{ url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 },
{ url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 },
{ url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 },
{ url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 },
{ url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 },
{ url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 },
{ url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 },
{ url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 },
{ url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 },
]
[[package]]
name = "charset-normalizer"
version = "3.4.1"
@@ -76,6 +137,28 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 },
]
[[package]]
name = "cssselect2"
version = "0.7.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "tinycss2" },
{ name = "webencodings" },
]
sdist = { url = "https://files.pythonhosted.org/packages/e7/fc/326cb6f988905998f09bb54a3f5d98d4462ba119363c0dfad29750d48c09/cssselect2-0.7.0.tar.gz", hash = "sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a", size = 35888 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/9d/3a/e39436efe51894243ff145a37c4f9a030839b97779ebcc4f13b3ba21c54e/cssselect2-0.7.0-py3-none-any.whl", hash = "sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969", size = 15586 },
]
[[package]]
name = "defusedxml"
version = "0.7.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 },
]
[[package]]
name = "ghp-import"
version = "2.1.0"
@@ -88,6 +171,30 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 },
]
[[package]]
name = "gitdb"
version = "4.0.12"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "smmap" },
]
sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794 },
]
[[package]]
name = "gitpython"
version = "3.1.44"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "gitdb" },
]
sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599 },
]
[[package]]
name = "idna"
version = "3.10"
@@ -130,6 +237,48 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/bd/0f/2ba5fbcd631e3e88689309dbe978c5769e883e4b84ebfe7da30b43275c5a/jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb", size = 134596 },
]
[[package]]
name = "lxml"
version = "5.3.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/ef/f6/c15ca8e5646e937c148e147244817672cf920b56ac0bf2cc1512ae674be8/lxml-5.3.1.tar.gz", hash = "sha256:106b7b5d2977b339f1e97efe2778e2ab20e99994cbb0ec5e55771ed0795920c8", size = 3678591 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/3b/f4/5121aa9ee8e09b8b8a28cf3709552efe3d206ca51a20d6fa471b60bb3447/lxml-5.3.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e69add9b6b7b08c60d7ff0152c7c9a6c45b4a71a919be5abde6f98f1ea16421c", size = 8191889 },
{ url = "https://files.pythonhosted.org/packages/0a/ca/8e9aa01edddc74878f4aea85aa9ab64372f46aa804d1c36dda861bf9eabf/lxml-5.3.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4e52e1b148867b01c05e21837586ee307a01e793b94072d7c7b91d2c2da02ffe", size = 4450685 },
{ url = "https://files.pythonhosted.org/packages/b2/b3/ea40a5c98619fbd7e9349df7007994506d396b97620ced34e4e5053d3734/lxml-5.3.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4b382e0e636ed54cd278791d93fe2c4f370772743f02bcbe431a160089025c9", size = 5051722 },
{ url = "https://files.pythonhosted.org/packages/3a/5e/375418be35f8a695cadfe7e7412f16520e62e24952ed93c64c9554755464/lxml-5.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2e49dc23a10a1296b04ca9db200c44d3eb32c8d8ec532e8c1fd24792276522a", size = 4786661 },
{ url = "https://files.pythonhosted.org/packages/79/7c/d258eaaa9560f6664f9b426a5165103015bee6512d8931e17342278bad0a/lxml-5.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4399b4226c4785575fb20998dc571bc48125dc92c367ce2602d0d70e0c455eb0", size = 5311766 },
{ url = "https://files.pythonhosted.org/packages/03/bc/a041415be4135a1b3fdf017a5d873244cc16689456166fbdec4b27fba153/lxml-5.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5412500e0dc5481b1ee9cf6b38bb3b473f6e411eb62b83dc9b62699c3b7b79f7", size = 4836014 },
{ url = "https://files.pythonhosted.org/packages/32/88/047f24967d5e3fc97848ea2c207eeef0f16239cdc47368c8b95a8dc93a33/lxml-5.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c93ed3c998ea8472be98fb55aed65b5198740bfceaec07b2eba551e55b7b9ae", size = 4961064 },
{ url = "https://files.pythonhosted.org/packages/3d/b5/ecf5a20937ecd21af02c5374020f4e3a3538e10a32379a7553fca3d77094/lxml-5.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:63d57fc94eb0bbb4735e45517afc21ef262991d8758a8f2f05dd6e4174944519", size = 4778341 },
{ url = "https://files.pythonhosted.org/packages/a4/05/56c359e07275911ed5f35ab1d63c8cd3360d395fb91e43927a2ae90b0322/lxml-5.3.1-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:b450d7cabcd49aa7ab46a3c6aa3ac7e1593600a1a0605ba536ec0f1b99a04322", size = 5345450 },
{ url = "https://files.pythonhosted.org/packages/b7/f4/f95e3ae12e9f32fbcde00f9affa6b0df07f495117f62dbb796a9a31c84d6/lxml-5.3.1-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:4df0ec814b50275ad6a99bc82a38b59f90e10e47714ac9871e1b223895825468", size = 4908336 },
{ url = "https://files.pythonhosted.org/packages/c5/f8/309546aec092434166a6e11c7dcecb5c2d0a787c18c072d61e18da9eba57/lxml-5.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d184f85ad2bb1f261eac55cddfcf62a70dee89982c978e92b9a74a1bfef2e367", size = 4986049 },
{ url = "https://files.pythonhosted.org/packages/71/1c/b951817cb5058ca7c332d012dfe8bc59dabd0f0a8911ddd7b7ea8e41cfbd/lxml-5.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b725e70d15906d24615201e650d5b0388b08a5187a55f119f25874d0103f90dd", size = 4860351 },
{ url = "https://files.pythonhosted.org/packages/31/23/45feba8dae1d35fcca1e51b051f59dc4223cbd23e071a31e25f3f73938a8/lxml-5.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a31fa7536ec1fb7155a0cd3a4e3d956c835ad0a43e3610ca32384d01f079ea1c", size = 5421580 },
{ url = "https://files.pythonhosted.org/packages/61/69/be245d7b2dbef81c542af59c97fcd641fbf45accf2dc1c325bae7d0d014c/lxml-5.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3c3c8b55c7fc7b7e8877b9366568cc73d68b82da7fe33d8b98527b73857a225f", size = 5285778 },
{ url = "https://files.pythonhosted.org/packages/69/06/128af2ed04bac99b8f83becfb74c480f1aa18407b5c329fad457e08a1bf4/lxml-5.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d61ec60945d694df806a9aec88e8f29a27293c6e424f8ff91c80416e3c617645", size = 5054455 },
{ url = "https://files.pythonhosted.org/packages/8a/2d/f03a21cf6cc75cdd083563e509c7b6b159d761115c4142abb5481094ed8c/lxml-5.3.1-cp312-cp312-win32.whl", hash = "sha256:f4eac0584cdc3285ef2e74eee1513a6001681fd9753b259e8159421ed28a72e5", size = 3486315 },
{ url = "https://files.pythonhosted.org/packages/2b/9c/8abe21585d20ef70ad9cec7562da4332b764ed69ec29b7389d23dfabcea0/lxml-5.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:29bfc8d3d88e56ea0a27e7c4897b642706840247f59f4377d81be8f32aa0cfbf", size = 3816925 },
{ url = "https://files.pythonhosted.org/packages/94/1c/724931daa1ace168e0237b929e44062545bf1551974102a5762c349c668d/lxml-5.3.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c093c7088b40d8266f57ed71d93112bd64c6724d31f0794c1e52cc4857c28e0e", size = 8171881 },
{ url = "https://files.pythonhosted.org/packages/67/0c/857b8fb6010c4246e66abeebb8639eaabba60a6d9b7c606554ecc5cbf1ee/lxml-5.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b0884e3f22d87c30694e625b1e62e6f30d39782c806287450d9dc2fdf07692fd", size = 4440394 },
{ url = "https://files.pythonhosted.org/packages/61/72/c9e81de6a000f9682ccdd13503db26e973b24c68ac45a7029173237e3eed/lxml-5.3.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1637fa31ec682cd5760092adfabe86d9b718a75d43e65e211d5931809bc111e7", size = 5037860 },
{ url = "https://files.pythonhosted.org/packages/24/26/942048c4b14835711b583b48cd7209bd2b5f0b6939ceed2381a494138b14/lxml-5.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a364e8e944d92dcbf33b6b494d4e0fb3499dcc3bd9485beb701aa4b4201fa414", size = 4782513 },
{ url = "https://files.pythonhosted.org/packages/e2/65/27792339caf00f610cc5be32b940ba1e3009b7054feb0c4527cebac228d4/lxml-5.3.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:779e851fd0e19795ccc8a9bb4d705d6baa0ef475329fe44a13cf1e962f18ff1e", size = 5305227 },
{ url = "https://files.pythonhosted.org/packages/18/e1/25f7aa434a4d0d8e8420580af05ea49c3e12db6d297cf5435ac0a054df56/lxml-5.3.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c4393600915c308e546dc7003d74371744234e8444a28622d76fe19b98fa59d1", size = 4829846 },
{ url = "https://files.pythonhosted.org/packages/fe/ed/faf235e0792547d24f61ee1448159325448a7e4f2ab706503049d8e5df19/lxml-5.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:673b9d8e780f455091200bba8534d5f4f465944cbdd61f31dc832d70e29064a5", size = 4949495 },
{ url = "https://files.pythonhosted.org/packages/e5/e1/8f572ad9ed6039ba30f26dd4c2c58fb90f79362d2ee35ca3820284767672/lxml-5.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:2e4a570f6a99e96c457f7bec5ad459c9c420ee80b99eb04cbfcfe3fc18ec6423", size = 4773415 },
{ url = "https://files.pythonhosted.org/packages/a3/75/6b57166b9d1983dac8f28f354e38bff8d6bcab013a241989c4d54c72701b/lxml-5.3.1-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:71f31eda4e370f46af42fc9f264fafa1b09f46ba07bdbee98f25689a04b81c20", size = 5337710 },
{ url = "https://files.pythonhosted.org/packages/cc/71/4aa56e2daa83bbcc66ca27b5155be2f900d996f5d0c51078eaaac8df9547/lxml-5.3.1-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:42978a68d3825eaac55399eb37a4d52012a205c0c6262199b8b44fcc6fd686e8", size = 4897362 },
{ url = "https://files.pythonhosted.org/packages/65/10/3fa2da152cd9b49332fd23356ed7643c9b74cad636ddd5b2400a9730d12b/lxml-5.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:8b1942b3e4ed9ed551ed3083a2e6e0772de1e5e3aca872d955e2e86385fb7ff9", size = 4977795 },
{ url = "https://files.pythonhosted.org/packages/de/d2/e1da0f7b20827e7b0ce934963cb6334c1b02cf1bb4aecd218c4496880cb3/lxml-5.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:85c4f11be9cf08917ac2a5a8b6e1ef63b2f8e3799cec194417e76826e5f1de9c", size = 4858104 },
{ url = "https://files.pythonhosted.org/packages/a5/35/063420e1b33d3308f5aa7fcbdd19ef6c036f741c9a7a4bd5dc8032486b27/lxml-5.3.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:231cf4d140b22a923b1d0a0a4e0b4f972e5893efcdec188934cc65888fd0227b", size = 5416531 },
{ url = "https://files.pythonhosted.org/packages/c3/83/93a6457d291d1e37adfb54df23498101a4701834258c840381dd2f6a030e/lxml-5.3.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:5865b270b420eda7b68928d70bb517ccbe045e53b1a428129bb44372bf3d7dd5", size = 5273040 },
{ url = "https://files.pythonhosted.org/packages/39/25/ad4ac8fac488505a2702656550e63c2a8db3a4fd63db82a20dad5689cecb/lxml-5.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dbf7bebc2275016cddf3c997bf8a0f7044160714c64a9b83975670a04e6d2252", size = 5050951 },
{ url = "https://files.pythonhosted.org/packages/82/74/f7d223c704c87e44b3d27b5e0dde173a2fcf2e89c0524c8015c2b3554876/lxml-5.3.1-cp313-cp313-win32.whl", hash = "sha256:d0751528b97d2b19a388b302be2a0ee05817097bab46ff0ed76feeec24951f78", size = 3485357 },
{ url = "https://files.pythonhosted.org/packages/80/83/8c54533b3576f4391eebea88454738978669a6cad0d8e23266224007939d/lxml-5.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:91fb6a43d72b4f8863d21f347a9163eecbf36e76e2f51068d59cd004c506f332", size = 3814484 },
]
[[package]]
name = "markdown"
version = "3.7"
@@ -243,6 +392,55 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 },
]
[[package]]
name = "mkdocs-git-revision-date-localized-plugin"
version = "1.3.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "babel" },
{ name = "gitpython" },
{ name = "mkdocs" },
{ name = "pytz" },
]
sdist = { url = "https://files.pythonhosted.org/packages/73/85/6dc9d4eca486ed5734a05f7fd5c612a8e60a35e65610dad6aa9c58118c3f/mkdocs_git_revision_date_localized_plugin-1.3.0.tar.gz", hash = "sha256:439e2f14582204050a664c258861c325064d97cdc848c541e48bb034a6c4d0cb", size = 384797 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/67/e5/ffeb92db53af8c3aa2d92e21a3cf6b5f83eee7e03b9cf9234ef6b30230d5/mkdocs_git_revision_date_localized_plugin-1.3.0-py3-none-any.whl", hash = "sha256:c99377ee119372d57a9e47cff4e68f04cce634a74831c06bc89b33e456e840a1", size = 22549 },
]
[[package]]
name = "mkdocs-glightbox"
version = "0.4.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/86/5a/0bc456397ba0acc684b5b1daa4ca232ed717938fd37198251d8bcc4053bf/mkdocs-glightbox-0.4.0.tar.gz", hash = "sha256:392b34207bf95991071a16d5f8916d1d2f2cd5d5bb59ae2997485ccd778c70d9", size = 32010 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/c1/72/b0c2128bb569c732c11ae8e49a777089e77d83c05946062caa19b841e6fb/mkdocs_glightbox-0.4.0-py3-none-any.whl", hash = "sha256:e0107beee75d3eb7380ac06ea2d6eac94c999eaa49f8c3cbab0e7be2ac006ccf", size = 31154 },
]
[[package]]
name = "mkdocs-literate-nav"
version = "0.6.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "mkdocs" },
]
sdist = { url = "https://files.pythonhosted.org/packages/4d/f9/c48a04f3cf484f8016a343c1d7d99c3a1ef01dbb33ceabb1d02e0ecabda7/mkdocs_literate_nav-0.6.1.tar.gz", hash = "sha256:78a7ab6d878371728acb0cdc6235c9b0ffc6e83c997b037f4a5c6ff7cef7d759", size = 16437 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/51/3b/e00d839d3242844c77e248f9572dd34644a04300839a60fe7d6bf652ab19/mkdocs_literate_nav-0.6.1-py3-none-any.whl", hash = "sha256:e70bdc4a07050d32da79c0b697bd88e9a104cf3294282e9cb20eec94c6b0f401", size = 13182 },
]
[[package]]
name = "mkdocs-markdownextradata-plugin"
version = "0.2.6"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "mkdocs" },
{ name = "pyyaml" },
]
sdist = { url = "https://files.pythonhosted.org/packages/19/c4/142510a1ea41465f63dc0419748ce693d96d714f4fe06d086fcd11b4435b/mkdocs_markdownextradata_plugin-0.2.6.tar.gz", hash = "sha256:4aed9b43b8bec65b02598387426ca4809099ea5f5aa78bf114f3296fd46686b5", size = 6882 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/a8/4e/c09876f08fa9faaa5e1178f3d77b7af3f343258689bd6f3b72593b2f74e3/mkdocs_markdownextradata_plugin-0.2.6-py3-none-any.whl", hash = "sha256:34dd40870781784c75809596b2d8d879da783815b075336d541de1f150c94242", size = 6665 },
]
[[package]]
name = "mkdocs-material"
version = "9.6.5"
@@ -274,6 +472,19 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 },
]
[[package]]
name = "mkdocs-video"
version = "1.5.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "lxml" },
{ name = "mkdocs" },
]
sdist = { url = "https://files.pythonhosted.org/packages/cf/16/45213649b6756744f36f31014fc8673df1d7c998bb9a801c2d769fff4114/mkdocs-video-1.5.0.tar.gz", hash = "sha256:0defc018f4b7927f8afffc4d8e039c84dfba636dffc5e25e2bfa8d6350bc8eca", size = 5633 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/cc/3a/b51e305eca21cdd58f4eb06973099ba0ea679b1f437a92a49f8fc576310e/mkdocs_video-1.5.0-py3-none-any.whl", hash = "sha256:b35613d4dacbac2dfa94d8c2600383cda14ad99a1fa1542b5fc4e9c6d19e9fe1", size = 6570 },
]
[[package]]
name = "packaging"
version = "24.2"
@@ -301,6 +512,44 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 },
]
[[package]]
name = "pillow"
version = "11.1.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/f3/af/c097e544e7bd278333db77933e535098c259609c4eb3b85381109602fb5b/pillow-11.1.0.tar.gz", hash = "sha256:368da70808b36d73b4b390a8ffac11069f8a5c85f29eff1f1b01bcf3ef5b2a20", size = 46742715 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/95/20/9ce6ed62c91c073fcaa23d216e68289e19d95fb8188b9fb7a63d36771db8/pillow-11.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2062ffb1d36544d42fcaa277b069c88b01bb7298f4efa06731a7fd6cc290b81a", size = 3226818 },
{ url = "https://files.pythonhosted.org/packages/b9/d8/f6004d98579a2596c098d1e30d10b248798cceff82d2b77aa914875bfea1/pillow-11.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a85b653980faad27e88b141348707ceeef8a1186f75ecc600c395dcac19f385b", size = 3101662 },
{ url = "https://files.pythonhosted.org/packages/08/d9/892e705f90051c7a2574d9f24579c9e100c828700d78a63239676f960b74/pillow-11.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9409c080586d1f683df3f184f20e36fb647f2e0bc3988094d4fd8c9f4eb1b3b3", size = 4329317 },
{ url = "https://files.pythonhosted.org/packages/8c/aa/7f29711f26680eab0bcd3ecdd6d23ed6bce180d82e3f6380fb7ae35fcf3b/pillow-11.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fdadc077553621911f27ce206ffcbec7d3f8d7b50e0da39f10997e8e2bb7f6a", size = 4412999 },
{ url = "https://files.pythonhosted.org/packages/c8/c4/8f0fe3b9e0f7196f6d0bbb151f9fba323d72a41da068610c4c960b16632a/pillow-11.1.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:93a18841d09bcdd774dcdc308e4537e1f867b3dec059c131fde0327899734aa1", size = 4368819 },
{ url = "https://files.pythonhosted.org/packages/38/0d/84200ed6a871ce386ddc82904bfadc0c6b28b0c0ec78176871a4679e40b3/pillow-11.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9aa9aeddeed452b2f616ff5507459e7bab436916ccb10961c4a382cd3e03f47f", size = 4496081 },
{ url = "https://files.pythonhosted.org/packages/84/9c/9bcd66f714d7e25b64118e3952d52841a4babc6d97b6d28e2261c52045d4/pillow-11.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3cdcdb0b896e981678eee140d882b70092dac83ac1cdf6b3a60e2216a73f2b91", size = 4296513 },
{ url = "https://files.pythonhosted.org/packages/db/61/ada2a226e22da011b45f7104c95ebda1b63dcbb0c378ad0f7c2a710f8fd2/pillow-11.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:36ba10b9cb413e7c7dfa3e189aba252deee0602c86c309799da5a74009ac7a1c", size = 4431298 },
{ url = "https://files.pythonhosted.org/packages/e7/c4/fc6e86750523f367923522014b821c11ebc5ad402e659d8c9d09b3c9d70c/pillow-11.1.0-cp312-cp312-win32.whl", hash = "sha256:cfd5cd998c2e36a862d0e27b2df63237e67273f2fc78f47445b14e73a810e7e6", size = 2291630 },
{ url = "https://files.pythonhosted.org/packages/08/5c/2104299949b9d504baf3f4d35f73dbd14ef31bbd1ddc2c1b66a5b7dfda44/pillow-11.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:a697cd8ba0383bba3d2d3ada02b34ed268cb548b369943cd349007730c92bddf", size = 2626369 },
{ url = "https://files.pythonhosted.org/packages/37/f3/9b18362206b244167c958984b57c7f70a0289bfb59a530dd8af5f699b910/pillow-11.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:4dd43a78897793f60766563969442020e90eb7847463eca901e41ba186a7d4a5", size = 2375240 },
{ url = "https://files.pythonhosted.org/packages/b3/31/9ca79cafdce364fd5c980cd3416c20ce1bebd235b470d262f9d24d810184/pillow-11.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ae98e14432d458fc3de11a77ccb3ae65ddce70f730e7c76140653048c71bfcbc", size = 3226640 },
{ url = "https://files.pythonhosted.org/packages/ac/0f/ff07ad45a1f172a497aa393b13a9d81a32e1477ef0e869d030e3c1532521/pillow-11.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cc1331b6d5a6e144aeb5e626f4375f5b7ae9934ba620c0ac6b3e43d5e683a0f0", size = 3101437 },
{ url = "https://files.pythonhosted.org/packages/08/2f/9906fca87a68d29ec4530be1f893149e0cb64a86d1f9f70a7cfcdfe8ae44/pillow-11.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:758e9d4ef15d3560214cddbc97b8ef3ef86ce04d62ddac17ad39ba87e89bd3b1", size = 4326605 },
{ url = "https://files.pythonhosted.org/packages/b0/0f/f3547ee15b145bc5c8b336401b2d4c9d9da67da9dcb572d7c0d4103d2c69/pillow-11.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b523466b1a31d0dcef7c5be1f20b942919b62fd6e9a9be199d035509cbefc0ec", size = 4411173 },
{ url = "https://files.pythonhosted.org/packages/b1/df/bf8176aa5db515c5de584c5e00df9bab0713548fd780c82a86cba2c2fedb/pillow-11.1.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:9044b5e4f7083f209c4e35aa5dd54b1dd5b112b108648f5c902ad586d4f945c5", size = 4369145 },
{ url = "https://files.pythonhosted.org/packages/de/7c/7433122d1cfadc740f577cb55526fdc39129a648ac65ce64db2eb7209277/pillow-11.1.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:3764d53e09cdedd91bee65c2527815d315c6b90d7b8b79759cc48d7bf5d4f114", size = 4496340 },
{ url = "https://files.pythonhosted.org/packages/25/46/dd94b93ca6bd555588835f2504bd90c00d5438fe131cf01cfa0c5131a19d/pillow-11.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:31eba6bbdd27dde97b0174ddf0297d7a9c3a507a8a1480e1e60ef914fe23d352", size = 4296906 },
{ url = "https://files.pythonhosted.org/packages/a8/28/2f9d32014dfc7753e586db9add35b8a41b7a3b46540e965cb6d6bc607bd2/pillow-11.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b5d658fbd9f0d6eea113aea286b21d3cd4d3fd978157cbf2447a6035916506d3", size = 4431759 },
{ url = "https://files.pythonhosted.org/packages/33/48/19c2cbe7403870fbe8b7737d19eb013f46299cdfe4501573367f6396c775/pillow-11.1.0-cp313-cp313-win32.whl", hash = "sha256:f86d3a7a9af5d826744fabf4afd15b9dfef44fe69a98541f666f66fbb8d3fef9", size = 2291657 },
{ url = "https://files.pythonhosted.org/packages/3b/ad/285c556747d34c399f332ba7c1a595ba245796ef3e22eae190f5364bb62b/pillow-11.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:593c5fd6be85da83656b93ffcccc2312d2d149d251e98588b14fbc288fd8909c", size = 2626304 },
{ url = "https://files.pythonhosted.org/packages/e5/7b/ef35a71163bf36db06e9c8729608f78dedf032fc8313d19bd4be5c2588f3/pillow-11.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:11633d58b6ee5733bde153a8dafd25e505ea3d32e261accd388827ee987baf65", size = 2375117 },
{ url = "https://files.pythonhosted.org/packages/79/30/77f54228401e84d6791354888549b45824ab0ffde659bafa67956303a09f/pillow-11.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:70ca5ef3b3b1c4a0812b5c63c57c23b63e53bc38e758b37a951e5bc466449861", size = 3230060 },
{ url = "https://files.pythonhosted.org/packages/ce/b1/56723b74b07dd64c1010fee011951ea9c35a43d8020acd03111f14298225/pillow-11.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8000376f139d4d38d6851eb149b321a52bb8893a88dae8ee7d95840431977081", size = 3106192 },
{ url = "https://files.pythonhosted.org/packages/e1/cd/7bf7180e08f80a4dcc6b4c3a0aa9e0b0ae57168562726a05dc8aa8fa66b0/pillow-11.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ee85f0696a17dd28fbcfceb59f9510aa71934b483d1f5601d1030c3c8304f3c", size = 4446805 },
{ url = "https://files.pythonhosted.org/packages/97/42/87c856ea30c8ed97e8efbe672b58c8304dee0573f8c7cab62ae9e31db6ae/pillow-11.1.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:dd0e081319328928531df7a0e63621caf67652c8464303fd102141b785ef9547", size = 4530623 },
{ url = "https://files.pythonhosted.org/packages/ff/41/026879e90c84a88e33fb00cc6bd915ac2743c67e87a18f80270dfe3c2041/pillow-11.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e63e4e5081de46517099dc30abe418122f54531a6ae2ebc8680bcd7096860eab", size = 4465191 },
{ url = "https://files.pythonhosted.org/packages/e5/fb/a7960e838bc5df57a2ce23183bfd2290d97c33028b96bde332a9057834d3/pillow-11.1.0-cp313-cp313t-win32.whl", hash = "sha256:dda60aa465b861324e65a78c9f5cf0f4bc713e4309f83bc387be158b077963d9", size = 2295494 },
{ url = "https://files.pythonhosted.org/packages/d7/6c/6ec83ee2f6f0fda8d4cf89045c6be4b0373ebfc363ba8538f8c999f63fcd/pillow-11.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ad5db5781c774ab9a9b2c4302bbf0c1014960a0a7be63278d13ae6fdf88126fe", size = 2631595 },
{ url = "https://files.pythonhosted.org/packages/cf/6c/41c21c6c8af92b9fea313aa47c75de49e2f9a467964ee33eb0135d47eb64/pillow-11.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:67cd427c68926108778a9005f2a04adbd5e67c442ed21d95389fe1d595458756", size = 2377651 },
]
[[package]]
name = "platformdirs"
version = "4.3.6"
@@ -310,6 +559,15 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 },
]
[[package]]
name = "pycparser"
version = "2.22"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 },
]
[[package]]
name = "pygments"
version = "2.19.1"
@@ -353,6 +611,15 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 },
]
[[package]]
name = "pytz"
version = "2025.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/5f/57/df1c9157c8d5a05117e455d66fd7cf6dbc46974f832b1058ed4856785d8a/pytz-2025.1.tar.gz", hash = "sha256:c2db42be2a2518b28e65f9207c4d05e6ff547d1efa4086469ef855e4ab70178e", size = 319617 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/eb/38/ac33370d784287baa1c3d538978b5e2ea064d4c1b93ffbd12826c190dd10/pytz-2025.1-py2.py3-none-any.whl", hash = "sha256:89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57", size = 507930 },
]
[[package]]
name = "pyyaml"
version = "6.0.2"
@@ -453,6 +720,27 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 },
]
[[package]]
name = "smmap"
version = "5.0.2"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303 },
]
[[package]]
name = "tinycss2"
version = "1.4.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "webencodings" },
]
sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 },
]
[[package]]
name = "urllib3"
version = "2.3.0"
@@ -495,21 +783,44 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 },
]
[[package]]
name = "webencodings"
version = "0.5.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 },
]
[[package]]
name = "wiki"
version = "0.1.0"
source = { virtual = "." }
dependencies = [
{ name = "cairosvg" },
{ name = "mike" },
{ name = "mkdocs" },
{ name = "mkdocs-git-revision-date-localized-plugin" },
{ name = "mkdocs-glightbox" },
{ name = "mkdocs-literate-nav" },
{ name = "mkdocs-markdownextradata-plugin" },
{ name = "mkdocs-material" },
{ name = "mkdocs-video" },
{ name = "pillow" },
]
[package.metadata]
requires-dist = [
{ name = "cairosvg", specifier = ">=2.7.1" },
{ name = "mike", specifier = ">=2.1.3" },
{ name = "mkdocs", specifier = ">=1.6.1" },
{ name = "mkdocs-git-revision-date-localized-plugin", specifier = ">=1.3.0" },
{ name = "mkdocs-glightbox", specifier = ">=0.4.0" },
{ name = "mkdocs-literate-nav", specifier = ">=0.6.1" },
{ name = "mkdocs-markdownextradata-plugin", specifier = ">=0.2.6" },
{ name = "mkdocs-material", specifier = ">=9.6.5" },
{ name = "mkdocs-video", specifier = ">=1.5.0" },
{ name = "pillow", specifier = ">=11.1.0" },
]
[[package]]