Skyscraper request: tg16 platform
@muldjord I tried to set up EmulationStation to show PC Engine as TurboGrafx-16 in the same way I have Genesis instead of Megadrive. I mostly have it working, but I still have to use the
roms/pcenginefolder to make it play nice with Skyscraper. Would it be trivial to add a
tg16platform so my folders can stop masquerading?
(Specifically, even with symlinked directories in
tg16; since SS writes "
roms/pcengine" to the gamelist, when I had
es_systems.cfg, I got the error (from ES) that the rom paths (
pcengine, per the gamelist) were outside the system path (
tg16, per es_systems.cfg) and so they were all skipped. ES then saw the roms in
tg16, but showed them all without metadata, since it "skipped" all the ones in the gamelist.
Would it be trivial to add a tg16 platform so my folders can stop masquerading?
You don't need to move the folder to make it appear as
tg16, just need to instruct EmulationStation to use the
tg16theme to display the folder - just like for Genesis/Megadrive.
<system> <name>pcengine</name> <fullname>TG16</fullname> <path>/home/pi/RetroPie/roms/pcengine</path> <extension>.7z .pce .ccd .chd .cue .zip .7Z .PCE .CCD .CHD .CUE .ZIP</extension> <command>/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ pcengine %ROM%</command> <platform>pcengine</platform> <theme>tg16</theme> </system>
You can do that by adding a
/opt/retropie/configs/alland add to it:
then re-install one of the PC-Engine emulators so the changes are applied to EmulatonStation.
You don't need to move the folder to make it appear as tg16, just need to instruct EmulationStation to use the tg16 theme to display the folder - just like for Genesis/Megadrive.
That's what I meant by "masquerading." It's a
pcenginesystem pretending to be a
tg16system. I'd like my filesystem and
cfgfile to point to
tg16for TG-16 titles, is all. This workaround will have to do, until then.
ecto last edited by ecto
@sleve_mcdichael You can use the commandline
Skyscraper -p pcengine -s whatever -i /home/pi/RetroPie/roms/tg16to change the roms folder of pcengine. This way I even have
tg-cdseparated from the rest. You would still need to change the
platforms.cfgto change the theme. Look up Skyscraper on github. The documentation is really good!
sleve_mcdichael last edited by
@ecto oh yeah, I forgot about just setting the input folder. I could even put that in
[pcengine]section. I suppose that's probably my best option, then. Could use
gameListFolder=, and the only place it'll say "pcengine" is in the Skyscraper config and when I type the command.
I got it working, basically.
inputFolder=, et al, were the answer.
# ... [pcengine] # use "tg16" folders for pce/tg16 titles inputFolder="/home/pi/RetroPie/roms/tg16" gameListFolder="/home/pi/.emulationstation/gamelists/tg16" mediaFolder="/home/pi/.emulationstation/downloaded_media/tg16" cacheFolder="/home/pi/.skyscraper/cache/tg16" # importFolder="/home/pi/.skyscraper/import/tg16" # ...
Then I moved everything around in my filesystem to match these changes.
This allowed me to point
roms/tg16folder and still have the gamelists display correctly in ES. I did have to clear out the tg16 videos from my media folder (symlinked to ones in
cache/pcenginethat no longer exist) and build the gamelist one more time to fix the links but after that, it works fine!
importFolderdon't really affect the gamelist end result, I just included them so that if a proper
tg16platform ever is added, everything will already be in the right place. (Edit: Setting
importFoldergave me an error that the path does not exist when I tried to
--cache editon a rom. Even though it doesn't exist for any of the other systems either, but since this one is defined specifically I guess it really wants it to exist. Commenting out that line eliminated the error.)
There was one more hitch. The runcommand launch art doesn't use the
<image>file defined in the gamelist, but rather looks for a file matching the rom's name, in a folder matching the system name called by the
es_systems.cfg). The original solution, that I had done with Genesis/Megadrive, was just to symlink the media folder to one matching the
run commandnamed system. But in the interest of completeness, I now decided to go the other route and just change the run command to call the proper system instead. So I changed
_SYS_ tg16and then all I had to do was copy the
tg16(symlinked, so as not to duplicate data unnecessarily. I could have just renamed them, but keeping the links intact for the config and rom folders, allows me to retain the dual nature of the systems, while simultaneously keeping it hidden beneath the surface.)
Now I guess the only problem is it works so well on the surface, I keep forgetting and trying to use
-p tg16by accident :-S
Edit: well there was a little more under the hood work involved in getting the system(s) fully switched over. Both
retroarch.cfgreference a system folder, so I scrapped the symlinks and just renamed the config folders, then replaced all instances of "megadrive" or "pcengine" with "genesis" and "tg16" in those files. Bonus: I learned about the
sed 's/<old_text>/<new_text>/g' <file>
sed 's/\/pcengine\//\/tg16\//g' emulators.cfg
...prints the result to stdout. (I wanted to match the string
/pcengine/and not just
pcenginejust in case it was in an emulator's name or something. It looks like they all just said "
pce" but it doesn't hurt to make sure.)
You can pipe it to an output file with
sed 's/\/pcengine\//\/tg16\//g' emulators.cfg > emulators.cfg.new
sed -i 's/\/pcengine\//\/tg16\//g' emulators.cfg
...modifies the original file with