libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.14k stars 1.82k forks source link

`retroarch -L mycore.so` does not open without game file argument passed #16132

Closed davidhedlund closed 8 months ago

davidhedlund commented 8 months ago

First and foremost consider this:

Description

retroarch -L requires a game file name. However, it's inconvenient to include the file path to the game file every single time. I rather load the game from the file browser in RetroArch.

Expected behavior

retroarch -L mycore.so should open RetroArch.

Actual behavior

[What is actually happening]

Steps to reproduce the bug

This does not work for me:

retroarch -L mycore.so

The file name to a game is required:

retroarch -L mycore.so mycontent.zip

But apparently it's not possible to run just:

retroarch -L mycore.so

man retroarch says:

       -L PATH, --libretro PATH
              Path to a libretro implementation which is to be used.  This option will override any setting in a config file.  This option is only available  if  RetroArch  is  compiled
              with dynamic libretro loading.

It does not say anything that the file to a game must be passed. Have I missed something?

Bisect Results

[Try to bisect and tell us when this started happening]

Version/Commit

You can find this information under Information/System Information

Environment information

i30817 commented 8 months ago

Did you try it with scummvm for instance? Or the standalone engine playlist tab, like the doom ports.

Some cores have the functionality to boot without content given, or with content implicit to the core. They're usually recognizable by the run core option appearing on the main menu after you load the core.

It's possibly what you're asking 'load' instead of 'load and run' without content just needs a fallback though.

RobLoach commented 8 months ago

It depends on the core you're loading. If the core supports no content, it'll run. If it requires content, it has nothing to run so it won't.

Please avoid posting some of these issues. The issue queue is not a support forum.

davidhedlund commented 8 months ago

It depends on the core you're loading. If the core supports no content, it'll run.

Thank you. Shouldn't this be documented?

RobLoach commented 8 months ago

If you think it should be documented, then feel free to submit a pull request. https://github.com/libretro/docs/blob/master/docs/guides/cli-intro.md

davidhedlund commented 8 months ago

If you think it should be documented, then feel free to submit a pull request. https://github.com/libretro/docs/blob/master/docs/guides/cli-intro.md

I can do that. But I have yet not succeeded with just "retroarch -L core.so" for any core, I've tried a bunch of cores (bsnes_hd_beta_libretro.so, mednafen_psx_hw_libretro.so, snes9x2010_libretro.so, swanstation_libretro.so) -- all of them requires games to open RA.

Please let me know if you are aware of any core that will open without a game from the CLI.

RobLoach commented 8 months ago
hizzlekizzle commented 8 months ago

You should be able to tell which cores do not need a content argument passed from the CLI by opening RetroArch, loading the core and then looking on the main menu for "start core". The core info files also have a line under 'libretro features': supports_no_game = "true"

davidhedlund commented 8 months ago

If you think it should be documented, then feel free to submit a pull request. https://github.com/libretro/docs/blob/master/docs/guides/cli-intro.md

Done:

davidhedlund commented 8 months ago

then looking on the main menu for "start core".

Can

You should be able to tell which cores do not need a content argument passed from the CLI by opening RetroArch, loading the core and then looking on the main menu for "start core". The core info files also have a line under 'libretro features': supports_no_game = "true"

All of this was helpful, especially supports_no_game = "true" -- I added all of it. Thank you!

Here's all of them from the core info files included in your Appimage:

RetroArch-Linux-x86_64/RetroArch-Linux-x86_64.AppImage.home/.config/retroarch/cores$ grep -r supports_no_game | grep true | sort
2048_libretro.info:supports_no_game = "true"
advanced_tests_libretro.info:supports_no_game = "true"
anarch_libretro.info:supports_no_game = "true"
bk_libretro.info:supports_no_game = "true"
cannonball_libretro.info:supports_no_game = "true"
cap32_libretro.info:supports_no_game = "true"
craft_libretro.info:supports_no_game = "true"
cruzes_libretro.info:supports_no_game = "true"
dinothawr_libretro.info:supports_no_game = "true"
dolphin_launcher_libretro.info:supports_no_game = "true"
dosbox_core_libretro.info:supports_no_game = "true"
dosbox_libretro.info:supports_no_game = "true"
dosbox_pure_libretro.info:supports_no_game = "true"
dosbox_svn_ce_libretro.info:supports_no_game = "true"
dosbox_svn_libretro.info:supports_no_game = "true"
emuscv_libretro.info:supports_no_game = "true"
ep128emu_core_libretro.info:supports_no_game = "true"
fake08_libretro.info:supports_no_game = "true"
galaksija_libretro.info:supports_no_game = "true"
gam4980_libretro.info:supports_no_game = "true"
gong_libretro.info:supports_no_game = "true"
moonlight_libretro.info:supports_no_game = "true"
mrboom_libretro.info:supports_no_game = "true"
mu_libretro.info:supports_no_game = "true"
numero_libretro.info:supports_no_game = "true"
nxengine_libretro.info:supports_no_game = "true"
opentyrian_libretro.info:supports_no_game = "true"
opera_libretro.info:supports_no_game = "true"
pascal_pong_libretro.info:supports_no_game = "true"
pcem_libretro.info:supports_no_game = "true"
puae2021_libretro.info:supports_no_game = "true"
puae_libretro.info:supports_no_game = "true"
px68k_libretro.info:supports_no_game = "true"
quasi88_libretro.info:supports_no_game = "true"
remotejoy_libretro.info:supports_no_game = "true"
scummvm_libretro.info:supports_no_game = "true"
squirreljme_libretro.info:supports_no_game = "true"
testaudio_callback_libretro.info:supports_no_game = "true"
testaudio_no_callback_libretro.info:supports_no_game = "true"
testaudio_playback_wav_libretro.info:supports_no_game = "true"
testgl_compute_shaders_libretro.info:supports_no_game = "true"
testgl_ff_libretro.info:supports_no_game = "true"
testgl_libretro.info:supports_no_game = "true"
testinput_buttontest_libretro.info:supports_no_game = "true"
test_libretro.info:supports_no_game = "true"
test_netplay_libretro.info:supports_no_game = "true"
testretroluxury_libretro.info:supports_no_game = "true"
testsw_libretro.info:supports_no_game = "true"
testsw_vram_libretro.info:supports_no_game = "true"
testvulkan_async_compute_libretro.info:supports_no_game = "true"
testvulkan_libretro.info:supports_no_game = "true"
theodore_libretro.info:supports_no_game = "true"
thepowdertoy_libretro.info:supports_no_game = "true"
vice_x128_libretro.info:supports_no_game = "true"
vice_x64dtv_libretro.info:supports_no_game = "true"
vice_x64_libretro.info:supports_no_game = "true"
vice_x64sc_libretro.info:supports_no_game = "true"
vice_xcbm2_libretro.info:supports_no_game = "true"
vice_xcbm5x0_libretro.info:supports_no_game = "true"
vice_xpet_libretro.info:supports_no_game = "true"
vice_xplus4_libretro.info:supports_no_game = "true"
vice_xscpu64_libretro.info:supports_no_game = "true"
vice_xvic_libretro.info:supports_no_game = "true"
vircon32_libretro.info:supports_no_game = "true"
xrick_libretro.info:supports_no_game = "true"