docs: name profiles as their projects write them

emulator: carried the file stem on 67 profiles, so site links read like ids. Each now takes the project's own name (libretro .info corename, README title, window title or site title). tests/test_profile_names.py allows the stem only on a commented list: lowercase project names, test cores, aliases and the template.
This commit is contained in:
Abdessamad Derraz committed 2026-10-24 00:40:13 +02:00
1 parent f51bc069d5
commit f2e21f3a44
68 files changed
+163 -67

No files matched your search

+1 -1
View File
@@ -1,4 +1,4 @@
emulator: advanced_tests
emulator: "Advanced Test"
type: libretro
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: amiarcadia
emulator: "AmiArcadia"
type: libretro
core_classification: official_port
source: "https://github.com/warmenhoven/amiarcadia"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: beebem
emulator: "BeebEm"
type: standalone
core_classification: other
source: "https://github.com/stardot/beebem-windows"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: beetle_saturn
emulator: "Beetle Saturn"
type: libretro
core_classification: community_fork
core: mednafen_saturn_libretro
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: corsixth
emulator: "CorsixTH"
type: standalone
core_classification: game_engine
source: "https://github.com/CorsixTH/CorsixTH"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: devilutionx
emulator: "DevilutionX"
type: standalone
core_classification: game_engine
source: "https://github.com/diasurgical/DevilutionX"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: dxx-rebirth
emulator: "DXX-Rebirth"
type: standalone
core_classification: game_engine
source: "https://github.com/dxx-rebirth/dxx-rebirth"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: eka2l1
emulator: "EKA2L1"
type: standalone + libretro
core_classification: community_fork
source:
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: ep128emu_core
emulator: "ep128emu"
type: libretro
core_classification: community_fork
display_name: "Enterprise - 64/128 (ep128emu)"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: fallout1-ce
emulator: "Fallout Community Edition"
type: standalone
core_classification: game_engine
source: "https://github.com/alexbatalov/fallout1-ce"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: fallout2-ce
emulator: "Fallout 2 Community Edition"
type: standalone
core_classification: game_engine
source: "https://github.com/alexbatalov/fallout2-ce"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: future-pinball-fploader
emulator: "BAM FPLoader"
type: standalone
core_classification: enhanced_fork
source: "https://github.com/ravarcade/BAM_FPloader"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: future-pinball
emulator: "Future Pinball"
type: standalone
core_classification: game_engine
source: "https://futurepinball.com/"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: gopher64
emulator: "Gopher64"
type: standalone
core_classification: other
source: "https://github.com/gopher64/gopher64"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: lightspark
emulator: "Lightspark"
type: standalone
core_classification: game_engine
source: "https://github.com/lightspark/lightspark"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: "mednafen_gba"
emulator: "Beetle GBA"
type: libretro
core_classification: frozen_snapshot
source: "https://github.com/libretro/beetle-gba-libretro"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: mednafen_pce
emulator: "Beetle PCE"
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/beetle-pce-libretro"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: mednafen_pce_fast
emulator: "Beetle PCE Fast"
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/beetle-pce-fast-libretro"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: mednafen_snes
emulator: "Beetle bsnes"
type: libretro
core_classification: frozen_snapshot
source: "https://github.com/libretro/beetle-bsnes-libretro"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: mednafen_supafaust
emulator: "Beetle Supafaust"
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/supafaust"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: mednafen_supergrafx
emulator: "Beetle SuperGrafx"
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/beetle-supergrafx-libretro"
+1 -1
View File
@@ -1,7 +1,7 @@
# mesen-s - SNES / Game Boy / Game Boy Color emulator
# Profiled from: libretro/Mesen-S (libretro port) + SourMesen/Mesen-S (upstream)
emulator: mesen-s
emulator: "Mesen-S"
display_name: "Mesen-S"
type: libretro
core_classification: official_port
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: mpv
emulator: "MPV"
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/libretro-mpv"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: nekop2
emulator: "Neko Project II"
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/libretro-meowPC98"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: openbor
emulator: "OpenBOR"
type: standalone
core_classification: game_engine
source: "https://github.com/DCurrent/openbor"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: openjk
emulator: "OpenJK"
type: standalone
core_classification: game_engine
source: "https://github.com/JACoders/OpenJK"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: pce-emu
emulator: "PCE.emu"
type: standalone
core_classification: community_fork
source: "https://github.com/Rakashazi/emu-ex-plus-alpha"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: play
emulator: "Play!"
type: libretro
core_classification: official_port
source: "https://github.com/jpd002/Play-"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: pokketstation
emulator: "Pokket"
type: libretro
core_classification: official_port
source: "https://github.com/mentalfoundry/Pokket"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: project64
emulator: "Project64"
type: standalone
core_classification: other
source: "https://github.com/project64/project64"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: px68k
emulator: "PX68k"
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/px68k-libretro"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: radio
emulator: "Radio"
type: utility
core_classification: pure_libretro
source: "https://git.libretro.com/libretro/libretro-radio"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: ruffle
emulator: "Ruffle"
type: standalone
core_classification: game_engine
source: "https://github.com/ruffle-rs/ruffle"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: sameduck
emulator: "SameDuck"
type: libretro
core_classification: official_port
source: "https://github.com/LIJI32/SameBoy"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: sdlpop
emulator: "SDLPoP"
type: standalone
core_classification: game_engine
source: "https://github.com/NagyD/SDLPoP"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: shadps4
emulator: "shadPS4"
type: standalone
source: "https://github.com/shadps4-emu/shadPS4"
upstream: "https://github.com/shadps4-emu/shadPS4"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: skyemu
emulator: "SkyEmu"
type: standalone + libretro
core_classification: official_port
source: https://github.com/skylersaleh/SkyEmu/blob/v5/src/libretro.c
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: snes9x
emulator: "Snes9x"
type: libretro
core_classification: official_port
source: "https://github.com/libretro/snes9x"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: solarus
emulator: "Solarus"
type: standalone
core_classification: game_engine
source: "https://gitlab.com/solarus-games/solarus"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: swanstation
emulator: "SwanStation"
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/swanstation"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: test_netplay
emulator: "netplay-test"
type: libretro
core_classification: pure_libretro
profiled_date: "2026-03-25"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: testaudio_callback
emulator: "TestAudio Callback"
type: libretro
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: testaudio_no_callback
emulator: "TestAudio NoCallback"
type: libretro
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: testaudio_playback_wav
emulator: "TestAudio Playback Wav"
type: libretro
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: testgl_compute_shaders
emulator: "TestGL ComputeShaders"
type: libretro
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: testgl_ff
emulator: "TestGL (FF)"
type: libretro
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: testinput_buttontest
emulator: "Button Test"
type: libretro
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: testretroluxury
emulator: "Test RetroLuxury"
type: libretro
core_classification: pure_libretro
source: "https://github.com/libretro/retroluxury"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: testsw
emulator: "TestSW"
type: libretro
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: testsw_vram
emulator: "TestSW VRAM"
type: libretro
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: testvulkan_async_compute
emulator: "TestVulkan AsyncCompute"
type: libretro
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: ti99sim-sdl1
emulator: "TI-99/Sim 0.15.0"
display_name: "TI-99/Sim 0.15.0 (SDL1)"
type: standalone
core_classification: frozen_snapshot
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: ti99sim
emulator: "TI-99/Sim"
display_name: "TI-99/Sim"
type: standalone
source: https://github.com/christianhaitian/ti99sim
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: trident
emulator: "Trident"
display_name: "Nintendo - 3DS (Trident)"
type: libretro
core_classification: community_fork
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: tsugaru
emulator: "Tsugaru"
display_name: Tsugaru
type: standalone
source: "https://github.com/captainys/TOWNSEMU"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: uae4arm
emulator: "UAE4ARM"
type: libretro
core_classification: community_fork
cores: [uae4arm, "uae4arm_32b"]
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: uqm
emulator: "The Ur-Quan Masters"
type: standalone
core_classification: game_engine
source: "https://github.com/juj/sc2-uqm"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: video_processor
emulator: "V4L2"
type: utility
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-video-processor"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: visual-pinball
emulator: "Visual Pinball X"
type: standalone
core_classification: game_engine
source: "https://github.com/vpinball/vpinball"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: vitavoyager
emulator: "vitaVoyager"
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/vitavoyager"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: x16emu
emulator: "Commander X16 Emulator"
type: standalone
source: "https://github.com/X16Community/x16-emulator"
upstream: "https://github.com/X16Community/x16-emulator"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: x64sdl
emulator: "VICE SDL"
type: libretro
core_classification: community_fork
source: "https://github.com/r-type/sdlvice-libretro"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: xm6pro68k
emulator: "XM6 Pro-68k"
type: standalone
core_classification: enhanced_fork
source: "https://mijet.eludevisibility.org/XM6%20Pro-68k/XM6%20Pro-68k.html"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: xm6typeg
emulator: "XM6 TypeG"
type: standalone
core_classification: enhanced_fork
source: "http://retropc.net/pi/xm6/index.html"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: yabasanshiro
emulator: "YabaSanshiro"
type: libretro
core_classification: official_port
source: "https://github.com/libretro/yabause/tree/yabasanshiro"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: yabause
emulator: "Yabause"
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/yabause"
+1 -1
View File
@@ -1,4 +1,4 @@
emulator: ymir
emulator: "Ymir"
type: standalone + libretro
core_classification: community_fork
source:
+96
View File
@@ -0,0 +1,96 @@
"""A profile's `emulator:` is the name the project gives itself.
The site titles every emulator page and link with it. A value equal to the
file stem reads as an id ("corsixth", "shadps4") unless the project writes its
own name that way.
"""
from __future__ import annotations
import sys
import unittest
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(REPO_ROOT / "scripts"))
from common import load_emulator_profiles # noqa: E402
STEM_NAMED = {
# Template and test cores, no emulator page.
"00_example": "template",
"test": "type test",
"testgl": "type test",
"testvulkan": "type test",
"vidtest": "type test",
# Aliases, no emulator page.
"mednafen_lynx": "alias",
"mednafen_ngp": "alias",
"mednafen_pcfx": "alias",
"mednafen_psx": "alias",
"mednafen_psx_hw": "alias",
"mednafen_saturn": "alias",
"mednafen_vb": "alias",
"mednafen_wswan": "alias",
"mkxp-z": "alias",
"parallel_n64_debug": "alias",
# Libretro cores whose .info corename is the stem.
"2048": "corename 2048",
"a5200": "corename a5200",
"b2": "corename b2",
"bnes": "corename bnes",
"boom3": "corename boom3",
"bsnes": "corename bsnes, the project writes bsnes",
"bsnes-jg": "corename bsnes-jg",
"galaksija": "corename galaksija",
"nes": "corename nes",
"uzem": "corename uzem",
"vecx": "corename vecx",
"xemu": "corename xemu, the project writes xemu",
"yaps2": "corename yaps2, README title yaps2",
# Lowercase project names.
"advanced_drastic": "README title advanced_drastic",
"ares": "the project writes ares",
"ccleste": "README title ccleste",
"dhewm3": "window title dhewm3 (ENGINE_VERSION)",
"dsda-doom": "README title dsda-doom",
"fheroes2": "README title fheroes2",
"hode": "README title hode",
"ioquake3": "the project writes ioquake3",
"izapple2": "README title izapple2",
"jgenesis": "README title jgenesis",
"np2pi": "repository and binary np2pi, no title in the source",
"rpix86": "the author writes rpix86",
"simple64": "window title simple64",
"sixtyforce": "site title sixtyforce",
"veesem": "README title veesem",
}
class ProfileNames(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.profiles = load_emulator_profiles(
REPO_ROOT / "emulators", skip_aliases=False
)
def test_emulator_name_is_not_the_file_stem(self) -> None:
stem_named = sorted(
stem
for stem, profile in self.profiles.items()
if str(profile.get("emulator", "")) == stem
and stem not in STEM_NAMED
)
self.assertEqual(stem_named, [], "set emulator: to the project's own name")
def test_allow_list_has_no_stale_entry(self) -> None:
stale = sorted(
stem
for stem in STEM_NAMED
if str(self.profiles.get(stem, {}).get("emulator", "")) != stem
)
self.assertEqual(stale, [])
if __name__ == "__main__":
unittest.main()