Behavior difference launching from ES vs command line
This is so strange. I am playing with an old dos-based emulator, M2000 by Marcel De Kogel, and my integration path for RetroPie 4.6 on my rpi 4 was simply to launch dosbox with a -conf parameter that would load that emulator and pass the rom to it to load as a tape.
I tried it from the command line, it works perfectly:
/opt/retropie/emulators/dosbox-sdl2/bin/dosbox -conf "/home/pi/RetroPie/roms/p2000t/Monkey.conf"
Monkey.conf is just the default /home/pi/.dosbox-sdl2/dosbox-sdl2-SVN.conf file with this small block added to the [autoexec] section at the end:
[autoexec] # Lines in this section will be run at startup. # You can put your MOUNT lines here. mount c /home/pi/RetroPie/roms/p2000t C: CD m2000 m2000 -tape "..\monkey.cas" EXIT
This works perfectly from the command line - the emulator launches, tells me it loaded the correct tape, and then waits for me to type CLOAD and then RUN to get the game going.
When launched from EmulationStation the emulator does launch and load the tape, but starts beeping incessantly as if there was input flowing to it, and I can only type about 4 characters before it seems to get completely overwhelmed.
I tried monitoring input via sudo evtest to see if there was some errant input device but there is none. I compared the contents of /dev/shm/runcommand.log to my command line and it was identical.
Any ideas on where the strange difference could be coming from?
One final clue - once I try to launch through EmulationStation and see the failure condition, I am unable to launch successfully via command line either unless I wait a few minutes, suggesting something continuing to run for a time in the background (even though I have completely exited EmulationStation at that point).
Sigh. After a few hours I figured out a fix/workaround, of course right after posting my question, so now posting the answer for posterity.
I would try to launch from ES again and again with different emulator configs, give up for a while, come back to debug some more from the command line, and things would work. Repeat ad nauseam.
So what changed between failed tests through ES and successful tests from the command line? My wireless joystick timed out and went to sleep. Seriously.
The takeaway is that this specific M2000 emulator behaves poorly in the presence of a joystick (even when sudo evtest reports 0 events). Luckily it also provides a config option to ignore joysticks, so my working config for this system is now:
[autoexec] # Lines in this section will be run at startup. # You can put your MOUNT lines here. mount c /home/pi/RetroPie/roms/p2000t C: CD m2000 m2000 -joystick 0 -tape "..\monkey.cas" EXIT
Time for a well-deserved Monkey Kong break.
I assume you create a separate system in EmulationStation ? Can you post the runcommand log ?
Correct, @mitu , I created a separate system that lists the conf files:
<system> <name>p2000t</name> <fullname>Philips P2000</fullname> <path>/home/pi/RetroPie/roms/p2000t</path> <extension>.conf .CONF</extension> <command>/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ p2000t %ROM%</command> <platform>p2000t</platform> <theme>p2000t</theme> </system>
Runcommand looked good:
Parameters: Executing: /opt/retropie/emulators/dosbox-sdl2/bin/dosbox -conf "/home/pi/RetroPie/roms/p2000t/Monkey.conf" fluidsynth: warning: Requested a period size of 64, got 480 instead fluidsynth: warning: Failed to set thread to high priority fluidsynth: warning: Failed to pin the sample data to RAM; swapping is possible. DOSBox version SVN Copyright 2002-2019 DOSBox Team, published under GNU GPL. --- CONFIG: Loading primary settings from config file /home/pi/RetroPie/roms/p2000t/Monkey.conf SDL: Current window pixel format: SDL_PIXELFORMAT_ARGB8888 MIDI:fluidsynth: loaded soundfont: /usr/share/sounds/sf2/FluidR3_GM.sf2 MIDI: Opened device:fluidsynth One joystick reported, initializing with 4axis Using joystick Xbox 360 Wireless Receiver with 6 axes, 15 buttons and 1 hat(s) Using driver "opengl" for renderer
I am happy to investigate more if it helps the community. If we collectively believe this is a problem with a 20-year old emulator, I am also content to call this one good enough and run without a joystick. :)