Reicast (Dreamcast) Emulator Not Playing !
-
@pablo Can you add some logs to see what you have for ,$rootdir, $params and $ROM?
just add :
echo "$params" > test.log before aoss command.
Maybe it's just a null variable. -
So this is what params, rootdir and ROM gives me when trying to run System Manager:
#params -config config:homedir=/home/pi -config x11:fullscreen=1 -config input:evdev_device_id_1=0 -config input:joystick_device_id=-1 -config players:nb= -config audio:backend=oss -config audio:disable=0 #rootdir /opt/retropie #ROM /home/pi/RetroPie/roms/dreamcast/systemManager.cdi
Also, I spoke too soon about it only affecting certain roms. After a restart everything is down again.
-
@pablo you go players:nb= but you don't have any informations for this.
try to add :
[players]
nb=1 (or more)in your emu.cfg file
[EDIT] In reicast.sh you got a function "mapInput() try to change this line (at the end of function) :
params+="-config players:nb=$device_counter "
to
params+="-config players:nb=2 " -
Update on my case - manually installed reicast, still same error
edit - latest version of retropie on rpi3
-
Can anyone redirect me to where I can get the fully working bios from ?
Try many still no luck !
-
None of the above fixes the problem...
-
Thanks @Hyell, I realised what was causing this now. When I was doing the testing I only had my keyboard plugged in and my bluetooth controllers were off. It would seem that the player count ignores my keyboard and thus was making Dreamcast bomb.
-
@pablo :
Ok, have fun with this emulator :) -
Finally fixed my problem... For some strange reason whenever I would copy a rom file onto my SD it will miss 1MB in size. So if rom file was 720Mb, it would copy 719Mb onto sd card makin the rom file unusable. I used terminal command 'cp' to copy the file and finally it works like a charm!
-
still having problem getting reicast to workin on the pi 3 !
can't even enter the system manager ?
-
I'm desperate.
I have an Attract mode installation in a Pi3, and Reicast don't let me pass the date&hour screen. I changed the "reicast.sh" file for avoid the autoconfig (as I read in another post), and now reicast don't work (return automatically to the menu). So I decide to make an new installation with RetroPie clean install (without Attract mode) in another microSD. But now the Dreamcast emulator don't run even in the new installation.
Clean install case
- Clean install
- Set controllers (IPAC 2)
- I just copy the BIOS files.
- Run Systemmanager.
- Don't run. The emulator goes back to menu screen.
Attract mode case
- I save the original reicast.sh original file from the clean copy
- I overwrite the file
- I run Dreamcast emulator and it doesn't work.
I use Sftp for copy the files to the Pi. I supose had good BIOS files because I saw the date & time screen before.
What can I do?
Thanks! -
Hello,
It can be the same issue of pablo.
-
In attract mode case. When you say "it doesn't work", what do you mean?
You can pass the date/hour screen? -
when you can't pass date/hour screen, can you move the cursor? I can be a controller issue. Maybe it's not config to work with reicast. Can you check on the config directory of reicast if you go the good configuration file for your controller? (/opt/retropie/configs/dreamcast/mapping)
-
Your controller is on : /dev/input/ and have a name starting with "js"?
-
-
Hi @Hyell
1- Doesn't work = emulator don't run. Since I changed the reicast.sh file, the emulator don't start. I selected a game or Systemmanager, and then return to main screen. This is now my priority. I can't go to the date/hour screen!
2 - I can't move the cursor.
I made some config files with and without spaces:
(I put "/" for keep the text together in the quote)
[emulator]
mapping_name = Ultimarc IPAC 2 Ultimarc IPAC 2
emu_btn_escape = 45
/
[dreamcast]
btn_a = 56
btn_b = 42
btn_x = 29
btn_y = 57
btn_start = 44
btn_dpad1_left = 105
btn_dpad1_right = 106
btn_dpad1_up = 103
btn_dpad1_down = 108
/
[compat]
btn_trigger_left = 2
btn_trigger_right = 6This is the emu.cfg (I put "/" for keep the text together in the quote)
[audio]
backend = oss
disable = 0
/
[config]
Debug.SerialConsoleEnabled = 0
Dreamcast.Broadcast = 4
Dreamcast.Cable = 3
Dreamcast.RTC = 2097339897
Dreamcast.Region = 3
Dynarec.Enabled = 1
Dynarec.idleskip = 1
Dynarec.unstable-opt = 0
aica.LimitFPS = 1
aica.NoBatch = 0
aica.NoSound = 0
bios.UseReios = 0
pvr.MaxThreads = 3
pvr.Subdivide = 0
pvr.SynchronousRendering = 0
pvr.rend = 0
rend.UseMipmaps = 1
rend.WideScreen = 0
ta.skip = 0
/
[input]
evdev_device_id_1 = 3
evdev_device_id_2 = -1
evdev_device_id_3 = -1
evdev_device_id_4 = -1
evdev_mapping_1 = /opt/retropie/dreamcast/mappings/controller_Ultimarc_IPAC_2_Ultimarc_IPAC_2.cfg
joystick_device_id = -1
/
[reios]
ElfFile =
/
[validate]
OpenGlChecks = 03 - This is how looks like my /dev/input/ It's ok?
Now I see the input list... maybe I have to rename the config file to "Ultimarc_IPAC_2_Ultimarc_IPAC_2_9" ???
Anyway, I can't run the emulator!!
Thanks for your help :-)
-
@krlitosmtnez
Ok.
Can you copy here your reicast.sh file please? We will see why reicast don't start.And we will check your controller after.
-
I downloaded the file that you put above. I put at /opt/retropie/emulators/reicast/bin/
https://github.com/RetroPie/RetroPie-Setup/blob/master/scriptmodules/emulators/reicast/reicast.sh you can try with this one
Anyway, this is the content:
#!/usr/bin/env bash AUDIO="$1" ROM="$2" rootdir="/opt/retropie" configdir="$rootdir/configs" source "$rootdir/lib/inifuncs.sh" function mapInput() { local js_device local js_device_num local ev_device local ev_devices local ev_device_num local device_counter local conf="$configdir/dreamcast/emu.cfg" local params="" # get a list of all present js device numbers and device names # and device count for js_device in /dev/input/js*; do js_device_num=${js_device/\/dev\/input\/js/} for ev_device in /dev/input/event*; do ev_device_num=${ev_device/\/dev\/input\/event/} if [[ -d "/sys/class/input/event${ev_device_num}/device/js${js_device_num}" ]]; then file[$ev_device_num]=$(grep --exclude=*.bak -rl "$configdir/dreamcast/mappings/" -e "= $(</sys/class/input/event${ev_device_num}/device/name)") if [[ -f "${file[$ev_device_num]}" ]]; then #file[$ev_device_num]="${file[$ev_device_num]##*/}" ev_devices[$ev_device_num]=$(</sys/class/input/event${ev_device_num}/device/name) device_counter=$(($device_counter+1)) fi fi done done # emu.cfg: store up to four event devices and mapping files if [[ "$device_counter" -gt "0" ]]; then # reicast supports max 4 event devices if [[ "$device_counter" -gt "4" ]]; then device_counter="4" fi local counter=0 for ev_device_num in "${!ev_devices[@]}"; do if [[ "$counter" -lt "$device_counter" ]]; then counter=$(($counter+1)) params+="-config input:evdev_device_id_$counter=$ev_device_num " params+="-config input:evdev_mapping_$counter=${file[$ev_device_num]} " fi done while [[ "$counter" -lt "4" ]]; do counter=$(($counter+1)) params+="-config input:evdev_device_id_$counter=-1 " params+="-config input:evdev_mapping_$counter=-1 " done else # fallback to keyboard setup params+="-config input:evdev_device_id_1=0 " fi params+="-config input:joystick_device_id=-1 " params+="-config players:nb=$device_counter " echo "$params" } if [[ -f "$HOME/RetroPie/BIOS/dc_boot.bin" ]]; then params="-config config:homedir=$HOME -config x11:fullscreen=1 " getAutoConf reicast_input || params+=$(mapInput) if [[ "$AUDIO" == "OSS" ]]; then params+=" -config audio:backend=oss -config audio:disable=0 " aoss "$rootdir/emulators/reicast/bin/reicast" $params -config config:image="$ROM" >> /dev/null else params+=" -config audio:backend=alsa -config audio:disable=0" "$rootdir/emulators/reicast/bin/reicast" $params -config config:image="$ROM" >> /dev/null fi else dialog --msgbox "You need to copy the Dreamcast BIOS files (dc_boot.bin and dc_flash.bin) to the folder $biosdir to boot the Dreamcast emulator." 22 76 fi
Thanks again.
-
@krlitosmtnez
Can you add some log to see what param value is use?for example, add :
echo "$params" > /home/pi/testReicast.log
before :
if [[ "$AUDIO" == "OSS" ]]; then
Launch reicast and open /home/pi/testReicast.log. it's look like pablo issue
-
-
@krlitosmtnez
Ok, this part is not correct. You got an issue with your mapInput() function.
I think this part don't work with your controller :for js_device in /dev/input/js*; do js_device_num=${js_device/\/dev\/input\/js/} for ev_device in /dev/input/event*; do ev_device_num=${ev_device/\/dev\/input\/event/} if [[ -d "/sys/class/input/event${ev_device_num}/device/js${js_device_num}" ]]; then file[$ev_device_num]=$(grep --exclude=*.bak -rl "$configdir/dreamcast/mappings/" -e "= $(</sys/class/input/event${ev_device_num}/device/name)") if [[ -f "${file[$ev_device_num]}" ]]; then #file[$ev_device_num]="${file[$ev_device_num]##*/}" ev_devices[$ev_device_num]=$(</sys/class/input/event${ev_device_num}/device/name) device_counter=$(($device_counter+1)) fi fi done done
Can you add more logs? We will see if all file of your controller is OK.
(I think this code is OK) :for js_device in /dev/input/js*; do js_device_num=${js_device/\/dev\/input\/js/} echo "$js_device_num = $js_device_num" > /home/pi/testReicast.log for ev_device in /dev/input/event*; do ev_device_num=${ev_device/\/dev\/input\/event/} echo "ev_device_num = $ev_device_num" > /home/pi/testReicast.log echo "check if this exist : /sys/class/input/event$ev_device_num/device/js$js_device_num" if [[ -d "/sys/class/input/event${ev_device_num}/device/js${js_device_num}" ]]; then echo "Now check if this exist : /sys/class/input/event$ev_device_num/device/name" file[$ev_device_num]=$(grep --exclude=*.bak -rl "$configdir/dreamcast/mappings/" -e "= $(</sys/class/input/event${ev_device_num}/device/name)") if [[ -f "${file[$ev_device_num]}" ]]; then #file[$ev_device_num]="${file[$ev_device_num]##*/}" ev_devices[$ev_device_num]=$(</sys/class/input/event${ev_device_num}/device/name) echo "Add for controller : /sys/class/input/event$ev_device_num/device/name" device_counter=$(($device_counter+1)) fi fi done done
-
More close...
-config config:homedir=/home/pi -config x11:fullscreen=1 check if this exist : /sys/class/input/event0/device/js0 check if this exist : /sys/class/input/event1/device/js0 check if this exist : /sys/class/input/event2/device/js0 Now check if this exist : /sys/class/input/event2/device/name check if this exist : /sys/class/input/event3/device/js0 check if this exist : /sys/class/input/event4/device/js0 check if this exist : /sys/class/input/event5/device/js0 check if this exist : /sys/class/input/event6/device/js0 check if this exist : /sys/class/input/event7/device/js0 -config input:evdev_device_id_1=0 -config input:joystick_device_id=-1 -config players:nb=
-
One more thing. In case you see more devices (I don't know), this is because I reconnect the trackball to the Raspberri Pi 3.
Now the input list is:
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.