Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 45 additions & 8 deletions docs/FRONTENDS.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ Skyscraper will preserve the following metadata when re-generating a game list f

Folder data is not cached by Skyscraper, thus if you delete your `gamelist.xml`, Skyscraper cannot restore the edited folder elements from cache.

Automatic addition of folder elements if [`addFolder`](CONFIGINI.md#addfolders) is true:
Automatic addition of folder elements if [`addFolder`](CONFIGINI.md#addfolders) is true:
If at least one ROM is within a subfolder and this subfolder is not yet part of the `gamelist.xml` file, it will be added with two mandatory subelements:

- `<path/>` reflects the relative subpath from the system folder and
- `<path/>` reflects the relative subpath from the system folder and
- `<name/>`, which represents the direct parent folder of a ROM by default. However, you may edit this to any name which should be shown in EmulationStation.

!!! example
Expand Down Expand Up @@ -81,7 +81,7 @@ files into the `downloaded_media` folder (e.g.
`~/ES-DE/downloaded_media/<PLATFORM>/screenshots/` for screenshots) from where
ES-DE will pick them up. ES-DE does not support textures currently. Any manual
or fanart data present in the cache will be put automagically into
`~/ES-DE/downloaded_media/<PLATFORM>` where ES-DE will load it.
`~/ES-DE/downloaded_media/<PLATFORM>` where ES-DE will load it.
This frontend automatically enables the output of backcovers, fanart and manuals
during gamelist creation, whenever cached data is present for a game.

Expand Down Expand Up @@ -116,7 +116,7 @@ Over time the fork of EmulationStation in Batocera has diverted stark from the
initial EmulationStation. Thus, the gamelist format is somewhat different, but
the textual scraping elements are still the same. Most notably Batocera
EmulationStation stores a lot of additional information in the gamelist, and the
set of information may differ for each game.
set of information may differ for each game.
Skyscraper aims to cover the most frequent used elements for scraping, currently
fanarts, manuals and videos. See the [scraping
modules](SCRAPINGMODULES.md#capabilities-of-scrapers) for support of these
Expand All @@ -143,7 +143,7 @@ every `<PLATFORM>` you scrape.
- Default media file location: `/userdata/roms/<PLATFORM>/{images,videos,manuals}`

If you set a game list location and do not specifiy the ROM folder (input
folder) and media folder, then these are set relatively to the game list folder.
folder) and media folder, then these are set relatively to the game list folder.
This frontend automatically enables the output of backcovers, fanart and manuals
whenever cached data is present for a game.

Expand Down Expand Up @@ -217,7 +217,7 @@ Windows desktop users can use SMB shares and can adapt the following steps.
```
You may also set the default [frontend in the
configuration](CONFIGINI.md#frontend), then you can even drop the `-f` CLI
parameter.
parameter.
If you want to use your existing Batocera gamelist and mediafiles (to save
some online scrape cycles), you can do so by using the
[esgamelist](SCRAPINGMODULES.md#emulationstation-style-gamelists) scraping
Expand Down Expand Up @@ -283,9 +283,46 @@ You need to add the individual platform rom directories to Pegasus (if they are

!!! info

If you are generating game lists for Pegasus, it is highly recommended to disable third-party game list data sources! Otherwise you will have a mish-mash or different sources showing up in Pegasus. Start the Pegasus frontend, press ESC on the keyboard and choose _Settings_ -> _Enable/disable data sources_ and disable everything in that submenu.
If you are generating game lists for Pegasus, it is highly recommended to disable third-party game list data sources! Otherwise you will have a mish-mash or different sources showing up in Pegasus. Start the Pegasus frontend, press ESC on the keyboard and choose _Settings_ -> _Enable/disable data sources_ and disable everything in that submenu.
Then reload the game lists or restart Pegasus, and all of the platforms should show up with media and game information generated by Skyscraper.

#### Metadata preservation

Skyscraper will preserve any metadata key-value pairs added to the header and / or individual game list entries.
Skyscraper will preserve any metadata key-value pairs added to the header and / or individual game list entries.

### RetroArch

- Default game list location: `/opt/retropie/configs/all/retroarch/playlists`
- Default game list filename: `<DB_NAME>.lpl` (using its own platform name format)
- Default media dir location: `/opt/retropie/configs/all/retroarch/thumbnails/<DB_NAME>/Named_*`

Despite the presence of all of these other fancy frontends, the lower-level RetroArch layer that manages most of your emulator cores has a perfectly-capable GUI in the form of a playlist creator/viewer. The playlists contain each platform's game list, and the playlist viewer has support for covers, screenshots, and logos for each ROM.

#### Configuration

When generating for RetroArch, Skyscraper uses a built-in mapping of platform names to RetroArch database names (e.g., `nes` → `Nintendo - Nintendo Entertainment System`). If we don't have it in our system, this can be easily added in `platforms_idmap.csv`.

You can optionally use the `-e` parameter with `frontendExtra="<CORE_PATH>;<CORE_NAME>"` to set a default core path/name for the playlist. Or set it in `config.ini`:

```ini
[retroarch]
frontendExtra="<CORE_PATH>;<CORE_NAME>"
```

#### Media Support

RetroArch supports the following media types:

| Media Type | RetroArch Directory |
| :---------- | :-------------- |
| Covers (Box Art) | `Named_Boxarts` |
| Screenshots | `Named_Snaps` |
| Marquees/Wheels (Logos) | `Named_Logos` |

All media files are matched to games by their sanitized game title, not by ROM filename. Title screenshots (`Named_Titles`) are not currently supported.

Media may not all be in PNG formats. You should turn on the _Settings_ -> _Playlists_ -> _Allow All Supported Image Types for Thumbnails_ option in your RetroArch config to support JPEG image displays.

#### Metadata preservation

Skyscraper will preserve existing game titles and paths when re-generating a game list for RetroArch. If an existing playlist file is found and you choose to skip existing entries, Skyscraper will use the old game list as a reference.
253 changes: 127 additions & 126 deletions platforms_idmap.csv
Original file line number Diff line number Diff line change
@@ -1,141 +1,142 @@
folder,screenscraper_id,mobygames_id,tgdb_id
folder,screenscraper_id,mobygames_id,tgdb_id,retroarch_dbname

# Mapping between platform folder and
# - screenscraper system id
# - mobygames platform id
# - thegamesdb platform id
# - retroarch database name
#
# If you need more than one match use the alias property in platforms.json.
#
# Use supplementary/scraperdata/peas_and_idmap_verify.py to view platform names
# of the ids below.
# of the ids below.

### Begin RetroPie OOTB supported systems

# platform/folder,screenscraper_id,moby_id,tgdb_id
3do,29,35,25
ags,138,3,1
amiga,64,19,4911
amstradcpc,65,60,4914
apple2,86,31,4942
arcade,75,143,23
arcadia,94,162,4963
atari2600,26,28,22
atari5200,40,33,26
atari7800,41,34,27
atari800,43,39,4943
atarijaguar,27,17,28
atarilynx,28,18,4924
atarist,42,24,4937
c64,66,27,40
channelf,80,76,4928
coco,144,62,4941
coleco,48,29,31
crvision,241,212,5005
daphne,49,-1,-1
dragon32,91,79,4952
dreamcast,23,8,16
fba,75,143,23
fds,106,22,4936
fm7,97,126,4978
gameandwatch,52,-1,4950
gamegear,21,25,20
gb,9,10,4
gba,12,12,5
gbc,10,11,41
gc,13,14,2
intellivision,115,30,32
love,-1,-1,-1
macintosh,146,74,37
mame,75,143,23
mame-advmame,75,143,23
mame-libretro,75,143,23
mame-mame4all,75,143,23
mastersystem,2,26,35
megadrive,1,16,36|18
moto,141,147,-1
msx,113,57,4929
n64,14,9,3
nds,15,44,8
neogeo,142,36,24
nes,3,22,7
ngp,25,52,4922
ngpc,82,53,4923
openbor,214,-1,-1
oric,131,111,4986
pc,135,2,1
pc88,221,94,4933
pc98,208,95,4934
pcengine,31,40,34
pcfx,72,-1,4930
pico8,234,103,4958
pokemini,211,152,4957
ports,135,3,1
ps2,58,7,11
psp,61,46,13
psx,57,6,10
samcoupe,213,120,4979
saturn,22,23,17
scummvm,123,-1,-1
sega32x,19,21,33
segacd,20,20,21
sg-1000,109,114,4949
snes,4,15,6
solarus,223,-1,-1
steam,138,-1,-1
stratagus,-1,-1,-1
ti99,205,47,4953
tic80,222,-1,-1
trs-80,144,58,4941
vectrex,102,37,4939
videopac,104,128,4927
virtualboy,11,38,4918
wii,16,82,9
wonderswan,45,48,4925
wonderswancolor,46,49,4926
x1,220,121,4977
x68000,79,106,4931
zmachine,215,169,-1
zx81,77,119,5010
zxspectrum,76,41,4913
# platform/folder,screenscraper_id,moby_id,tgdb_id,retroarch_dbname
3do,29,35,25,The 3DO Company - 3DO
ags,138,3,1,
amiga,64,19,4911,Commodore - Amiga
amstradcpc,65,60,4914,Amstrad - CPC
apple2,86,31,4942,
arcade,75,143,23,FBNeo - Arcade Games
arcadia,94,162,4963,Emerson - Arcadia 2001
atari2600,26,28,22,Atari - 2600
atari5200,40,33,26,Atari - 5200
atari7800,41,34,27,Atari - 7800
atari800,43,39,4943,Atari - 8-bit
atarijaguar,27,17,28,Atari - Jaguar
atarilynx,28,18,4924,Atari - Lynx
atarist,42,24,4937,Atari - ST
c64,66,27,40,Commodore - 64
channelf,80,76,4928,Fairchild - Channel F
coco,144,62,4941,
coleco,48,29,31,Coleco - ColecoVision
crvision,241,212,5005,VTech - CreatiVision
daphne,49,-1,-1,
dragon32,91,79,4952,
dreamcast,23,8,16,Sega - Dreamcast
fba,75,143,23,FBNeo - Arcade Games
fds,106,22,4936,Nintendo - Family Computer Disk System
fm7,97,126,4978,
gameandwatch,52,-1,4950,
gamegear,21,25,20,Sega - Game Gear
gb,9,10,4,Nintendo - Game Boy
gba,12,12,5,Nintendo - Game Boy Advance
gbc,10,11,41,Nintendo - Game Boy Color
gc,13,14,2,Nintendo - GameCube
intellivision,115,30,32,Mattel - Intellivision
love,-1,-1,-1,
macintosh,146,74,37,
mame,75,143,23,MAME
mame-advmame,75,143,23,MAME
mame-libretro,75,143,23,MAME
mame-mame4all,75,143,23,MAME
mastersystem,2,26,35,Sega - Master System - Mark III
megadrive,1,16,36|18,Sega - Mega Drive - Genesis
moto,141,147,-1,Thomson - MOTO
msx,113,57,4929,Microsoft - MSX
n64,14,9,3,Nintendo - Nintendo 64
nds,15,44,8,Nintendo - Nintendo DS
neogeo,142,36,24,SNK - Neo Geo
nes,3,22,7,Nintendo - Nintendo Entertainment System
ngp,25,52,4922,SNK - Neo Geo Pocket
ngpc,82,53,4923,SNK - Neo Geo Pocket Color
openbor,214,-1,-1,
oric,131,111,4986,
pc,135,2,1,DOS
pc88,221,94,4933,NEC - PC-8001 - PC-8801
pc98,208,95,4934,NEC - PC-98
pcengine,31,40,34,NEC - PC Engine - TurboGrafx 16
pcfx,72,-1,4930,NEC - PC-FX
pico8,234,103,4958,
pokemini,211,152,4957,Nintendo - Pokemon Mini
ports,135,3,1,
ps2,58,7,11,Sony - PlayStation 2
psp,61,46,13,Sony - PlayStation Portable
psx,57,6,10,Sony - PlayStation
samcoupe,213,120,4979,
saturn,22,23,17,Sega - Saturn
scummvm,123,-1,-1,ScummVM
sega32x,19,21,33,Sega - 32X
segacd,20,20,21,Sega - Mega-CD - Sega CD
sg-1000,109,114,4949,Sega - SG-1000
snes,4,15,6,Nintendo - Super Nintendo Entertainment System
solarus,223,-1,-1,
steam,138,-1,-1,
stratagus,-1,-1,-1,
ti99,205,47,4953,
tic80,222,-1,-1,TIC-80
trs-80,144,58,4941,
vectrex,102,37,4939,GCE - Vectrex
videopac,104,128,4927,Magnavox - Odyssey2
virtualboy,11,38,4918,Nintendo - Virtual Boy
wii,16,82,9,Nintendo - Wii
wonderswan,45,48,4925,Bandai - WonderSwan
wonderswancolor,46,49,4926,Bandai - WonderSwan Color
x1,220,121,4977,Sharp - X1
x68000,79,106,4931,Sharp - X68000
zmachine,215,169,-1,
zx81,77,119,5010,Sinclair - ZX 81
zxspectrum,76,41,4913,Sinclair - ZX Spectrum

### End of RetroPie OOTB supported systems

3ds,17,101,4912
actionmax,81,-1,4976
apple2gs,217,-1,-1
arduboy,263,215,-1
astrocade,44,160,4968
atarijaguarcd,171,-1,29
atomiswave,53,-1,23
bbcmicro,37,92,5013
cd32,130,56,4947
cdi,133,73,4917
cdtv,129,83,-1
easyrpg,231,-1,-1
fmtowns,253,102,4932
gamecom,121,50,4940
gmaster,103,-1,-1
j2me,-1,-1,5018
megaduck,90,-1,4948
msx2,116,-1,-1
n64dd,122,-1,-1
naomi,56,-1,23
neogeocd,70,54,4956
palm,219,65,-1
pcenginecd,114,45,4955
plus4,99,115,5007|5006
ps3,59,81,12
ps4,60,141,4919
psvita,62,105,39
pv1000,74,125,4964
scv,67,138,4966
supervision,207,109,4959
switch,225,203,4971
symbian,-1,67,-1
vic20,73,43,4945
vircon32,272,-1,-1
vsmile,120,42,4988
wiiu,18,132,38
xbox,32,13,14
xbox360,33,69,15
3ds,17,101,4912,Nintendo - Nintendo 3DS
actionmax,81,-1,4976,
apple2gs,217,-1,-1,
arduboy,263,215,-1,Arduboy Inc - Arduboy
astrocade,44,160,4968,
atarijaguarcd,171,-1,29,
atomiswave,53,-1,23,Atomiswave
bbcmicro,37,92,5013,
cd32,130,56,4947,Commodore - CD32
cdi,133,73,4917,Philips - CD-i
cdtv,129,83,-1,Commodore - CDTV
easyrpg,231,-1,-1,
fmtowns,253,102,4932,
gamecom,121,50,4940,Tiger - Game.com
gmaster,103,-1,-1,Hartung - Game Master
j2me,-1,-1,5018,
megaduck,90,-1,4948,
msx2,116,-1,-1,Microsoft - MSX2
n64dd,122,-1,-1,Nintendo - Nintendo 64DD
naomi,56,-1,23,Sega - Naomi
neogeocd,70,54,4956,SNK - Neo Geo CD
palm,219,65,-1,
pcenginecd,114,45,4955,NEC - PC Engine CD - TurboGrafx-CD
plus4,99,115,5007|5006,Commodore - Plus-4
ps3,59,81,12,Sony - PlayStation 3
ps4,60,141,4919,Sony - PlayStation 4
psvita,62,105,39,Sony - PlayStation Vita
pv1000,74,125,4964,Casio - PV-1000
scv,67,138,4966,Epoch - Super Cassette Vision
supervision,207,109,4959,Watara - Supervision
switch,225,203,4971,
symbian,-1,67,-1,
vic20,73,43,4945,Commodore - VIC-20
vircon32,272,-1,-1,Vircon32
vsmile,120,42,4988,VTech - V.Smile
wiiu,18,132,38,Nintendo - Wii U
xbox,32,13,14,Microsoft - Xbox
xbox360,33,69,15,Microsoft - Xbox 360
2 changes: 2 additions & 0 deletions skyscraper.pro
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ HEADERS += src/skyscraper.h \
src/batocera.h \
src/attractmode.h \
src/pegasus.h \
src/retroarch.h \
src/openretro.h \
src/thegamesdb.h \
src/zxinfodk.h \
Expand Down Expand Up @@ -163,6 +164,7 @@ SOURCES += src/main.cpp \
src/batocera.cpp \
src/attractmode.cpp \
src/pegasus.cpp \
src/retroarch.cpp \
src/openretro.cpp \
src/thegamesdb.cpp \
src/zxinfodk.cpp \
Expand Down
2 changes: 1 addition & 1 deletion src/abstractfrontend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -336,4 +336,4 @@ bool AbstractFrontend::doCopy(GameEntry::Types t, const QString &cacheFn,
qDebug() << "Copied" << t;
}
return success;
}
}
1 change: 1 addition & 0 deletions src/abstractfrontend.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ class AbstractFrontend : public QObject {
virtual bool canSkip() { return false; };
virtual bool loadOldGameList(const QString &) { return false; };
virtual void preserveFromOld(GameEntry &){};
virtual const QString getPlatformOutputName() { return config->platform; };
virtual QString getGameListFileName() { return QString(); };
virtual QString getInputFolder() { return QString(); };
virtual QString getGameListFolder() { return QString(); };
Expand Down
Loading