RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    Dreamcast - Reicast - Time and Date

    Scheduled Pinned Locked Moved Help and Support
    dreamcastreicast
    45 Posts 10 Posters 16.4k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • gizmo98G
      gizmo98 Global Moderator
      last edited by

      I have no solution. This is a long standing issue.

      1 Reply Last reply Reply Quote 2
      • T
        tipoto
        last edited by tipoto

        I have my own solution for this reicast issue. I don't have a RPI and I don't use Retropie (I have an Odroid XU4 with OGST), but my solution should works on the Pi too.

        You will need to edit the emu.cfg file in the reicast folder (I don't know the location in Retropie)
        The Dreamcast.RTC field has to be edited every time you launch a game. It actually needs your local time minus or plus the offset between your local time and Greenwich time (GMT), AND you need to add 20 years (the result has to be converted in seconds).

        So here are the steps to get your time/date always updated when you launch a Dreamcast game:

        1. Backup these 2 files ....reicast/data/dc_flash.bin and /....reicast/emu.cfg, just in case.
        2. If reicast always asks you to set the time/date, then you need to fix that first, otherwise you can go to the next step. Here is how to fix this first problem:
        • Install dreamcast emulator "NullDC" on a PC
        • Start dreamcast without a game and you are in the bios
        • Make your settings (date,time,language) and exit the bios
        • NullDC just has created a new file in the /data directory : dc_nvmem.bin
        • Rename dc_nvmem.bin to dc_flash.bin and copy the file into your RPI "....reicast/data", overwrite existing file
        • Start reicast with or without a game to check if you don't have the Time/Date screen again
        1. You need to run these lines before launching a game. So the lines have to be added to your launcher script in Retropie. Here they are (You need to edit the path to reicast folder in Retropie):
        ### Update the time/date in emu.cfg
        time_offset=$(date +'%:::z') # Get how many hours of difference between local time and Greenwich time (GTM)
        newtime=$(date -d "$(date -d "+20 years $time_offset hours" +%D) $(date -d "+20 years $time_offset hours" +%T)" +"%s")
        # The result is in seconds (ex: 2125613317) with an offset of +20 years
        sudo perl -i -p -e "s|Dreamcast.RTC = .*|Dreamcast.RTC = "$newtime"|" /path/to/reicast/emu.cfg # Replace Dreamcast.RTC value in emu.cfg
        

        It should work with any timezones.

        I have an RTC battery so the time is always up to date, but if you don't have one or if you're not connected to your network, it should at least remove the Time/Date screen when you launch a rom (I guess).

        S 2 Replies Last reply Reply Quote 2
        • S
          spud11 @tipoto
          last edited by spud11

          @tipoto Thank you. (Just added you both FYI @backstander @gizmo98 )

          I'll have a go later on with respect to this, but I just wanted to clarify something.

          With Retropie, we do have an emu.cfg. It appears in the /opt/retropie/configs/dreamcast/ folder.

          Are you saying that the code below is added to the emu.cfg as so, so that it looks like this?:

          [code]
          ###Update the time/date in emu.cfg
          time_offset=$(date +'%:::z') # Get how many hours of difference between local time and Greenwich time (GTM)
          newtime=$(date -d "$(date -d "+20 years $time_offset hours" +%D) $(date -d "+20 years $time_offset hours" +%T)" +"%s")
          #The result is in seconds (ex: 2125613317) with an offset of +20 years
          sudo perl -i -p -e "s|Dreamcast.RTC = .*|Dreamcast.RTC = "$newtime"|" /path/to/reicast/emu.cfg # Replace Dreamcast.RTC value in emu.cfg
          [/code]
          
          [audio]
          disable = 0
          
          [config]
          Debug.SerialConsoleEnabled = 0
          Dreamcast.Broadcast = 4
          Dreamcast.Cable = 3
          Dreamcast.RTC = 1543276800
          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 = 1
          ta.skip = 0
          
          [dispmanx]
          height = 1080
          maintain_aspect = no
          width = 1920
          
          [input]
          evdev_device_id_1 = 9
          evdev_device_id_2 = 7
          evdev_device_id_3 = -1
          evdev_device_id_4 = -1
          evdev_mapping_1 = /opt/retropie/configs/dreamcast/mappings/controller_DragonRiseInc.GenericUSBJoystick.cfg
          evdev_mapping_2 = /opt/retropie/configs/dreamcast/mappings/controller_DragonRiseInc.GenericUSBJoystick_Player2.cfg
          joystick_device_id = -1
          
          [omx]
          audio_hdmi = yes
          audio_latency = 100
          
          [players]
          nb = 2
          
          [reios]
          ElfFile = 
          
          [testing]
          ta.HashCheckFile = 
          ta.HashLogFile = 
          
          [validate]
          OpenGlChecks = 0
          

          Or that the code goes into a launch file (which would probably be runcommand-onstart.sh for Retropie) ?

          RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

          1 Reply Last reply Reply Quote 1
          • S
            spud11 @tipoto
            last edited by spud11

            @tipoto Hi. So I have experimented a little bit with your code but can't get it to work. For anyone else interested, this is what I did. I have previously used NullDC to create a new dc_flash.bin so just retained that bios.

            I added the following to runcommand-onstart.sh:

            ### DREAMCAST - REICAST - Time and date correction
            ### Update the time/date in emu.cfg
            ### Get how many hours of difference between local time and Greenwich time (GTM)
            ### Replace Dreamcast.RTC value in emu.cfg
            ### The result is in seconds (ex: 2125613317) with an offset of +20 years
            Time="time_offset=$(date +'%:::z')
            newtime=$(date -d "$(date -d "+20 years $time_offset hours" +%D) $(date -d "+20 years $time_offset hours" +%T)" +"%s")
            sudo perl -i -p -e "s|Dreamcast.RTC = .*|Dreamcast.RTC = "$newtime"|" /opt/retropie/configs/dreamcast/emu.cfg"
            

            and:

            	reicast-audio-oss)
            		joycommand="$Time &"
            		eval $joycommand
            	;;
            

            There was no change. Perhaps someone else could experiment with tipoto's code?

            RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

            1 Reply Last reply Reply Quote 1
            • T
              tipoto
              last edited by tipoto

              To answer your first question, emu.cfg has to be edited by the script, not manually, but I think you figured it out when you did your test.

              I looked at the retropie wiki and it seems that you modified or created the right script "runcommand-onstart.sh", which has to be placed here: /opt/retropie/configs/all/.
              However, you modified my code and it can't work this way.

              If you need a function and a case statement, then try this instead:

              dreamcast_time_fn () {
              	### DREAMCAST - REICAST - Time and date correction
              	### Update the time/date in emu.cfg
              	### 1) Get how many hours of difference between local time and Greenwich time (GTM)
              	### 2) Calculate the current time in seconds (ex: 2125613317) with an offset of +20 years
              	### 3) Replace Dreamcast.RTC value in emu.cfg with the result
              
              	time_offset=$(date +'%:::z') 
              	newtime=$(date -d "$(date -d "+20 years $time_offset hours" +%D) $(date -d "+20 years $time_offset hours" +%T)" +"%s")
              	sudo perl -i -p -e "s|Dreamcast.RTC = .*|Dreamcast.RTC = "$newtime"|" /opt/retropie/emulators/reicast/emu.cfg
              }
              

              and, inside a case statement:

              	reicast-audio-oss)
              		dreamcast_time_fn
              	;;
              

              "reicast-audio-oss" looks weird to me, but I don't have Retropie so I don't know what is the variable when you launch reicast. Make sure it is the right value.
              Also I assume that the case statement is the right way to go, but again, make sure it is correct.

              EDIT:
              2 more things:

              • Just in case, make sure to give the permissions on the bios file "dc_flash.bin"
              • You need to make sure that reicast starts without displaying the time/date screen, my script won't fix that by itself, it will only make sure that the date is updated with the current time when you launch a game. When reicast starts, it checks the emu.cfg, then it grabs the "Dreamcast.RTC" value, then it updates the bios with it.
              B 1 Reply Last reply Reply Quote 1
              • B
                backstander @tipoto
                last edited by backstander

                @tipoto
                Where are you putting the "case statement":

                	reicast-audio-oss)
                		dreamcast_time_fn
                	;;
                

                Does that go in /opt/retropie/configs/all/runcommand-onstart.sh as well?

                Also, shouldn't there be a test before running dreamcast_time_fn () to ensure that reicast is the emulator being ran so this doesn't have to execute every time the Runcommand is invoked?

                1 Reply Last reply Reply Quote 1
                • T
                  tipoto
                  last edited by

                  Like I said, I don't have Retropie, so I don't know the structure and how it works exactly.
                  About this:

                  	reicast-audio-oss)
                  		dreamcast_time_fn
                  	;;
                  

                  This code is part of a case statement and it comes from spud11, I just edited what he wrote in his post to make it look good. My original post didn't content this part. You have to make sure by yourself that this case statement is correct and logical. If so, it has to be in /opt/retropie/configs/all/runcommand-onstart.sh, after the function dreamcast_time_fn (not before)

                  I don't know how Retropie gives you the information about the starting emulator, hopefully someone in the forum could help for this detail. When spud11 added the case statement, I thought it was part of the Retropie structure and it was the answer to that. But double check with someone whom knows Retropie.

                  You will need something that looks like this (but adapted to Retropie):

                  launched_emulator="$1"
                  case "$lauched_emulator" in
                  	reicast)
                  		dreamcast_time_fn
                  	;;
                  
                  	mupen64plus)
                  		# your code
                  	;;
                  
                  	*)
                  		# your code
                  	;;
                  esac
                  

                  It would be great to have someone in the forum to tell you exactly where to add my function and how to tell Retropie to launch it only with reicast.

                  S 1 Reply Last reply Reply Quote 1
                  • S
                    spud11 @tipoto
                    last edited by spud11

                    @tipoto Hi. Yes, I do recognise the case statement you are using. Might be easier, to give things a bit more structure, for me to extract from my runcommand-onstart.sh the appropriate parts I have (adapted to your new code - thank you!). I've also created the new dc_flash.bin as per instructions just to make sure my old one wasn't the problem.

                    My runcommand-onstart.sh is very long, so I'll just take out the parts that are relevant and then we can look at it again and, hopefully, as you pointed out, one of the moderators might take an interest:

                    ### Code begins
                    ### Game/ROM full path
                    rom="${3##*/}"
                    
                    dreamcast_time_fn () {
                    	### DREAMCAST - REICAST - Time and date correction
                    	### Update the time/date in emu.cfg
                    	### 1) Get how many hours of difference between local time and Greenwich time (GTM)
                    	### 2) Calculate the current time in seconds (ex: 2125613317) with an offset of +20 years
                    	### 3) Replace Dreamcast.RTC value in emu.cfg with the result
                    
                    	time_offset=$(date +'%:::z') 
                    	newtime=$(date -d "$(date -d "+20 years $time_offset hours" +%D) $(date -d "+20 years $time_offset hours" +%T)" +"%s")
                    	sudo perl -i -p -e "s|Dreamcast.RTC = .*|Dreamcast.RTC = "$newtime"|" /opt/retropie/configs/dreamcast/emu.cfg
                    }
                    
                    case $2 in
                    
                    	reicast-audio-oss)
                    		$dreamcast_time_fn
                    	;;
                    esac
                    

                    I've added the $ sign to the command above as I believe it will need it.
                    For the sake of completeness, my runcommand.info file, followed by my runcommand.log, are as follows:

                    dreamcast
                    reicast-audio-oss
                    /home/pi/RetroPie/roms/dreamcast/NBA Showtime.cdi
                    /opt/retropie/emulators/reicast/bin/reicast.sh oss "/home/pi/RetroPie/roms/dreamcast/NBA Showtime.cdi"
                    

                    As you will see from the above, case $2 (which is what I use) is reicast-audio-oss. And the log:

                    Parameters: 
                    Executing: /opt/retropie/emulators/reicast/bin/reicast.sh oss "/home/pi/RetroPie/roms/dreamcast/NBA Showtime.cdi"
                    

                    There are no errors from the log, but there is also no change to the outcome - I still need to do the time/date thing.

                    RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                    1 Reply Last reply Reply Quote 1
                    • T
                      tipoto
                      last edited by tipoto

                      Nope, don't add $ to call the function, I'm surprised you didn't get an error with that.

                      However even if my function is eventually called, it seems that it won't fix the fact that you will be asked for the date/time, you need to fix this issue first, then my script will make sure that it won't happen again and you will always have the current time on with your saves on the VMU.

                      It's weird that you still have this screen since you created a fresh bios as I asked to do. What type of bios did you create (Region free, NTSC, PAL... ?), if it was a region free, try a specific one (PAL or NTSC), it won't restrain you to play any game, it will just chose a frame rate by default (50 or 60 fps). Also, try to change the permissions on the bios, just in case reicast doesn't manage to edit the file.
                      To do so, you can do:

                      sudo chmod 777 /path/to/the/bios/dc_flash.bin
                      

                      EDIT:
                      By the way, the function is not really necessary, you can put the content of the function directly into the case statement if you want, it's up to you.

                      S 1 Reply Last reply Reply Quote 1
                      • S
                        spud11 @tipoto
                        last edited by

                        @tipoto Okay, I'm having trouble changing the permissions from 0755 to 0777 even with sudo. I'll need to check which bios I created too. Unfortunately, I've got to go out now. Thanks for your help.

                        RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                        1 Reply Last reply Reply Quote 1
                        • T
                          tipoto
                          last edited by tipoto

                          Oh... I forgot to mention something very important! When you create the new dc_flash.bin with NullDC (by renaming dc_nvmem.bin), you have to launch a game and set the date/time! Otherwise the manipulation is completely useless.
                          After that it should work in your RPI without asking for the time/date anymore.

                          Another thing that I just noticed, even with my script, if you don't play a game for too long (maybe one month or so), it will ask for the time/date again since the registered time in dc_flash.bin and the time inemu.cfg will be too different.
                          Once the gap is too big, it seems that reicast doesn't refresh dc_flash.bin properly anymore.
                          I just had to recreate a dc_flash.bin right now for this reason. The problem has been fixed immediately with the new file, so it should work for you too. ;)

                          S 2 Replies Last reply Reply Quote 1
                          • S
                            spud11 @tipoto
                            last edited by

                            @tipoto Hi. I've finally got back to this. Thanks for the extra info too.

                            I haven't yet checked which version of the BIOS I'm using (ie Region free etc), because I haven't yet got past the issue with the write permissions using my current dc_flash.bin. If it's necessary to write to this file, then that is currently a stumbling block.

                            Using both WinSCP and Putty, I've tried to change the permissions both of the BIOS folder and of the individual file dc_flash.bin, both without success. The permissions remain 755 rather than 777, meaning no write access for Group and Others.

                            Tried sudo chmod 777 dc_flash.bin from within the folder and sudo chmod -R 0777 /home/pi/RetroPie/BIOS without success.

                            I'd like to try to sort this out before experimenting much further. Hopefully, someone will chime in on why the BIOS files can't be made 0777.

                            RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                            1 Reply Last reply Reply Quote 0
                            • S
                              spud11 @tipoto
                              last edited by

                              @tipoto Okay. Just went back to NullDC - it's a US NTSC Bios. I set the date to 12/28/1998 and it now loads automatically in NullDC without requesting further time/date input, but having tried it again in Retropie, it requires further time/date input.

                              As you suggested, I removed the case statement so it now appears as follows in runcommand-onstart.sh:

                              reicast-audio-oss)
                              		time_offset=$(date +'%:::z')
                              		newtime=$(date -d "$(date -d "+20 years $time_offset hours" +%D) $(date -d "+20 years $time_offset hours" +%T)" +"%s")
                              		sudo perl -i -p -e "s|Dreamcast.RTC = .*|Dreamcast.RTC = "$newtime"|" /opt/retropie/configs/dreamcast/emu.cfg
                              	;;
                              

                              There are no errors in the log. Unless it is the 777 write permissions, I'm not sure what the problem is.

                              RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                              1 Reply Last reply Reply Quote 0
                              • T
                                tipoto
                                last edited by tipoto

                                I think you misunderstand a few things, so I need to clarify:

                                • You need to set the time/date in NullDC, which means that you have set 06/24/2017 and the current time. Don't leave it in 1998.
                                • In the new code that you kept in your runcommand-onstart.sh, you actually kept the case statement and you removed the function, which is fine, but I just wanted to clarify this since you were saying that you removed the case statement and it's not the case.

                                For the permissions change, first of all I want to mention that it's maybe not necessary to do it, I was just suggesting to do it since we didn't get any result with the other things that we tried, maybe it will work without modifying the permissions. With that said, if you are still stuck, it is worth trying this option. If you don't manage to change the permissions, maybe it's because you are logged as root and you try to use sudo, if it's the case, don't use sudo.
                                And if you are not logged as root, you can try to do it, but it should normally work when you are logged as pi with using sudo.

                                S 1 Reply Last reply Reply Quote 1
                                • S
                                  spud11 @tipoto
                                  last edited by spud11

                                  @tipoto You, sir, are brilliant!

                                  The workaround does work. I went back to NullDC and created a new bios, setting the date to the current date of 06/25/2017, then copied that bios into my Retropie bios folder. (The bios is US NTSC, for anyone else who wants to give this a go).

                                  The case statement (rather than the function, as you pointed out) in runcommand-onstart.sh is:

                                   reicast-audio-oss)
                                  		time_offset=$(date +'%:::z')
                                  		newtime=$(date -d "$(date -d "+20 years $time_offset hours" +%D) $(date -d "+20 years $time_offset hours" +%T)" +"%s")
                                  		sudo perl -i -p -e "s|Dreamcast.RTC = .*|Dreamcast.RTC = "$newtime"|" /opt/retropie/configs/dreamcast/emu.cfg
                                  	;;
                                  

                                  The permissions in respect of the bios remain 755 which is fine as it seems to work anyway.

                                  I note also your point that the bios might have to be recreated every now and again for it to continue working, but this workaround is very good (in my view) and hopefully others using Retropie will be able to replicate it easily enough.

                                  I hope a moderator picks up your instructions, tipoto, and adds it to the wiki.

                                  My next step will be to go back to the "function" method, so that I can set it up to work concurrently with xboxdrv in a case statement applying to Reicast.

                                  Thank you!

                                  Edit: One thing I should add is that I didn't need to set the date/time "in game" once. It just seemed to work straightaway and I've now tested with half a dozen games and even reset the Pi in between games and it continues to work.

                                  RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                                  1 Reply Last reply Reply Quote 0
                                  • T
                                    tipoto
                                    last edited by tipoto

                                    I'm glad that the new bios worked this time! :)

                                    But I'm also curious to know if the script works too! ;)
                                    The fact that you can now skip the time/date screen is only due to the new bios (you don't need any script for that), but my little script allows the system to also update the time every time you launch a game. That way you always have a logical time when you save a game on the VMU, it should also prevent reicast to display the time screen again since the date and time will be refreshed regularly (it's why you have to launch a game on a regular basis otherwise the screen will eventually come back again).

                                    Could you just open reicast without any game, so you can have access to the system manager? Here you should read the date and time, if it's up to date, it means my script has been launched, otherwise it means that the case statement doesn't do anything.
                                    If the time is not refreshed, could you send me your runcommand-onstart.sh file, so I can take a look at it?

                                    Thanks!

                                    S 2 Replies Last reply Reply Quote 1
                                    • space cadetS
                                      space cadet
                                      last edited by

                                      I've been trying to figure this out as well. Thanks for the info on the bios!

                                      1 Reply Last reply Reply Quote 0
                                      • S
                                        spud11 @tipoto
                                        last edited by spud11

                                        @tipoto No problems. I'm not 100% sure how to invoke the bios without starting a game so I've set out below both my attract mode and the emulator commands and was just wondering whether you might be able to suggest changes that would invoke the bios (although I know you don't have retropie).

                                        I'll try to send you the runcommand-onstart.sh in my next post. This is now quite a long file, 99% of which you can ignore, but it might be too long to send in a post. It's only in the very last part of that file that there is reference now to the reicast case statement.

                                        Attract mode file:

                                        # Generated by Attract-Mode v2.2.1
                                        #
                                        executable           /opt/retropie/supplementary/runcommand/runcommand.sh
                                        args                 0 _SYS_ dreamcast "[romfilename]"
                                        rompath              /home/pi/RetroPie/roms/dreamcast
                                        romext               .cdi;.gdi;.CDI;.GDI
                                        system               Sega Dreamcast
                                        info_source          thegamesdb.net
                                        artwork    flyer           /home/pi/RetroPie/roms/dreamcast/boxart
                                        artwork    marquee         /home/pi/RetroPie/roms/dreamcast/marquee
                                        artwork    snap            /home/pi/RetroPie/roms/dreamcast/snap
                                        artwork    wheel           /home/pi/RetroPie/roms/dreamcast/wheel
                                        

                                        Emulators.cfg:

                                        reicast-audio-omx = "CON:/opt/retropie/emulators/reicast/bin/reicast.sh omx %ROM%"
                                        default = "reicast-audio-oss"
                                        reicast-audio-oss = "CON:/opt/retropie/emulators/reicast/bin/reicast.sh oss %ROM%"
                                        

                                        A copy of reicast.sh:

                                        #!/usr/bin/env bash
                                        
                                        # This file is part of The RetroPie Project
                                        #
                                        # The RetroPie Project is the legal property of its developers, whose names are
                                        # too numerous to list here. Please refer to the COPYRIGHT.md file distributed with this source.
                                        #
                                        # See the LICENSE.md file at the top-level directory of this distribution and
                                        # at https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md
                                        #
                                        
                                        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 "
                                                device_counter=1
                                            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
                                            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
                                            exit 1
                                        fi
                                        
                                        params=(-config config:homedir=$HOME -config x11:fullscreen=1)
                                        getAutoConf reicast_input && params+=($(mapInput))
                                        [[ -n "$AUDIO" ]] && params+=(-config audio:backend=$AUDIO -config audio:disable=0)
                                        [[ -n "$ROM" ]] && params+=(-config config:image="$ROM")
                                        if [[ "$AUDIO" == "oss" ]]; then
                                            aoss "$rootdir/emulators/reicast/bin/reicast" "${params[@]}" >/dev/null
                                        else
                                            "$rootdir/emulators/reicast/bin/reicast" "${params[@]}" >/dev/null
                                        fi
                                        

                                        RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          spud11 @tipoto
                                          last edited by spud11

                                          @tipoto I've taken out quite a bit of my runcommand-onstart.sh to make it fit, but all relevant stuff is in there:

                                          #!/bin/sh
                                          ### Uncomment one or all of the following if you need to find some information about the emulator or roms
                                          ### Name of the emulator
                                          #echo $1 >> /dev/shm/runcommand.log
                                          
                                          ### Name of the software used for running the emulation
                                          #echo $2 >> /dev/shm/runcommand.log
                                          
                                          ### Name of the rom
                                          #echo $3 >> /dev/shm/runcommand.log
                                          
                                          ### Executed command line
                                          #echo $4 >> /dev/shm/runcommand.log
                                          
                                          
                                          ### Code begins
                                          ### Game/ROM full path
                                          rom="${3##*/}"
                                          
                                          ### APPLE 2 - LINAPPLE - This is not a libretro core.  In the linapple.conf appearing in the /opt/retropie/configs/apple2/ and in the /opt/retropie/emulators/linapple/ folders, keyboard emulation (keyboard centered) has been chosen.  The keyboard is hardcoded to the number pad, so the direction and fire button keys are all linked to the Number Pad.  Choose 1 joystick only (Joystick 0 = Player 1) as the second fire button on Joystick 0 won't work for some reason if Joystick 1 (Player 2) is selected.  (Joystick 1 should have a "0" next to it). Exit is F10 and help is F1.
                                          Player1_appleII="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \
                                          --silent \
                                          --detach-kernel-driver \
                                          --deadzone=4000 \
                                          --deadzone-trigger 15% \
                                          --force-feedback \
                                          --mimic-xpad \
                                          --trigger-as-button \
                                          --ui-buttonmap x=void,y=void,lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void \
                                          --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \
                                          --device-name "Player_1" \
                                          --evdev-absmap ABS_X=y1,ABS_Y=x1 \
                                          --ui-axismap X1=KEY_KP4:KEY_KP6,Y1=KEY_KP8:KEY_KP2 \
                                          --evdev-keymap BTN_THUMB2=a,BTN_PINKIE=b,BTN_BASE3=back,BTN_BASE6=start \
                                          --ui-buttonmap a=KEY_KP0,b=KEY_KPDOT \
                                          --ui-buttonmap back=KEY_UNKNOWN,start=KEY_UNKNOWN,start+back=KEY_F1,back+start=KEY_F10"
                                          
                                          
                                          ### LASERDISC - DAPHNE - DRAGON's LAIR.  This is not a libretro core.
                                          Player1_daphne="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \
                                          --silent \
                                          --detach-kernel-driver \
                                          --deadzone=4000 \
                                          --deadzone-trigger 15% \
                                          --force-feedback \
                                          --mimic-xpad \
                                          --trigger-as-button \
                                          --ui-buttonmap y=void,lb=void,rb=void,tl=void,tr=void,guide=void \
                                          --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \
                                          --device-name "Player_1" \
                                          --evdev-absmap ABS_X=y1,ABS_Y=x1 \
                                          --ui-axismap X1=KEY_LEFT:KEY_RIGHT,Y1=KEY_UP:KEY_DOWN \
                                          --evdev-keymap BTN_THUMB2=a,BTN_PINKIE=b,BTN_TRIGGER=x,BTN_BASE3=back,BTN_BASE6=start \
                                          --ui-buttonmap a=KEY_SPACE,b=KEY_LEFTALT,x=KEY_LEFTSHIFT,back=KEY_UNKNOWN,start=KEY_UNKNOWN,lt=KEY_5,rt=KEY_1 \
                                          --ui-buttonmap back+start=KEY_ESC,start+back=KEY_P"
                                          
                                          
                                          ### ARCADE - LR-FBALPHA - USES RETROARCH KEYS - The mappings below enable the joysticks to operate either in 4-Way or in 8-Way mode depending on the game.  This is a libretro core.
                                          ### CORE INPUT REMAPPING - in a game (eg Bubble Bobble), hold "space" and press "F1" to enter lr-fbalpha's Retroarch menu.  Note: I've set up my Player 1 joystick in Retroarch's general menu so that the button formation is A, B, X and Y (most like the XBox 360 Controller formation).  However, Retroarch and lr-fbalpha mimic the SNES Controller.  With the SNES Controller, Button Y is the fire button and Button B is the jump button.  So that the first button (Button A) on my DragonRise controller is the "fire" button, enter core input remapping, quick menu, controls and change the "fire" button from Y to A for both Players 1 and 2.  Remember to "Save Core Remap".  This will mean that the "fire" button (A) and the "jump" button (B) are now next to each other - no stretching of fingers required.  (Also, now there is no need for a separate rom config file in roms folder).
                                          ### Player1_4Way_FBA and Player2_4Way_FBA map Joysticks 1 and 2 with four way restriction for use with libretro emulators other than lr-mame2003.  The keyboard mappings below are the same keys that are mapped for Users 1 and 2 in Retroarch.
                                          ### For Player 1, the Left Trigger button (3rd row, 1st small red button, on Arcade Table) will now start Player 1 and the Right Trigger (3rd row, 2nd small red button) will now start Player 2; holding down the Select button and pressing the Start button will exit the emulator.  For Player 2, Select and Start do nothing.  For Player 3, Select is Coin 1 and Start will start Player 3.  Hold down Select and press Start will exit.  For Player 4, Select is Coin 2 and Start will start Player 4 and Player 3.  Holding down both will exit the emulator.
                                          Player1_4Way_FBA="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \
                                          --silent \
                                          --detach-kernel-driver \
                                          --deadzone=4000 \
                                          --deadzone-trigger 15% \
                                          --force-feedback \
                                          --mimic-xpad \
                                          --trigger-as-button \
                                          --ui-buttonmap tl=void,tr=void,guide=void \
                                          --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \
                                          --device-name "Player_1" \
                                          --evdev-absmap ABS_X=y1,ABS_Y=x1 \
                                          --four-way-restrictor \
                                          --evdev-keymap BTN_THUMB2=a,BTN_PINKIE=b,BTN_TRIGGER=x,BTN_THUMB=y,BTN_TOP2=lb,BTN_TOP=rb,BTN_BASE3=back,BTN_BASE6=start,BTN_BASE2=lt,BTN_BASE5=rt \
                                          --ui-axismap X1=KEY_LEFT:KEY_RIGHT,Y1=KEY_UP:KEY_DOWN \
                                          --ui-buttonmap a=KEY_X,b=KEY_Z,x=KEY_S,y=KEY_A,lb=KEY_Q,rb=KEY_W,back=KEY_UNKNOWN,start=KEY_UNKNOWN,back+start=KEY_SPACE+KEY_ESC,lt=KEY_RIGHTSHIFT+KEY_ENTER,rt=KEY_6+KEY_2"
                                          
                                          Player2_4Way_FBA="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \
                                          --silent \
                                          --detach-kernel-driver \
                                          --deadzone=4000 \
                                          --deadzone-trigger 15% \
                                          --force-feedback \
                                          --mimic-xpad \
                                          --trigger-as-button \
                                          --ui-buttonmap back=void,start=void,tl=void,tr=void,guide=void,lt=void,rt=void \
                                          --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.1:1.0-event-joystick \
                                          --device-name "Player_2" \
                                          --evdev-absmap ABS_X=y1,ABS_Y=x1 \
                                          --four-way-restrictor \
                                          --evdev-keymap BTN_THUMB=a,BTN_TOP=b,BTN_PINKIE=x,BTN_TRIGGER=y,BTN_THUMB2=lb,BTN_TOP2=rb \
                                          --ui-axismap X1=KEY_D:KEY_G,Y1=KEY_R:KEY_F \
                                          --ui-buttonmap a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_SPACE,y=KEY_LEFTSHIFT,lb=KEY_V,rb=KEY_B"
                                          
                                          ### Player3_4Way_FBA and Player4_4Way_FBA map Joysticks 3 and 4 with four way restriction for use with libretro emulators other than lr-mame2003.  The keyboard mappings below are the same keys that are mapped for Users 1 and 2 in Retroarch (with axes appropriately altered).
                                          Player3_4Way_FBA="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \
                                          --silent \
                                          --detach-kernel-driver \
                                          --deadzone=4000 \
                                          --deadzone-trigger 15% \
                                          --force-feedback \
                                          --mimic-xpad \
                                          --trigger-as-button \
                                          --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void \
                                          --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.2:1.0-event-joystick \
                                          --device-name "Player_3" \
                                          --evdev-absmap ABS_X=x1,ABS_Y=y1 \
                                          --four-way-restrictor \
                                          --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start \
                                          --ui-axismap X1=KEY_DOWN:KEY_UP,Y1=KEY_RIGHT:KEY_LEFT \
                                          --ui-buttonmap a=KEY_X,b=KEY_Z,x=KEY_S,y=KEY_A,back=KEY_RIGHTSHIFT,start=KEY_ENTER,back+start=KEY_SPACE+KEY_ESC"
                                          
                                          Player4_4Way_FBA="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \
                                          --silent \
                                          --detach-kernel-driver \
                                          --deadzone=4000 \
                                          --deadzone-trigger 15% \
                                          --force-feedback \
                                          --mimic-xpad \
                                          --trigger-as-button \
                                          --ui-buttonmap rb=void,tl=void,tr=void,guide=void,lt=void,rt=void \
                                          --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.4:1.0-event-joystick \
                                          --device-name "Player_4" \
                                          --evdev-absmap ABS_X=x1,ABS_Y=y1 \
                                          --four-way-restrictor \
                                          --evdev-keymap BTN_THUMB=a,BTN_TOP=b,BTN_PINKIE=x,BTN_TRIGGER=y,BTN_BASE=lb,BTN_THUMB2=back,BTN_TOP2=start \
                                          --ui-axismap X1=KEY_F:KEY_R,Y1=KEY_G:KEY_D \
                                          --ui-buttonmap a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_SPACE,y=KEY_LEFTSHIFT,lb=KEY_UNKNOWN,back=KEY_6,start=KEY_2,back+start=KEY_SPACE+KEY_ESC"
                                          
                                          ### Player1_8Way_FBA and Player2_8Way_FBA map Joysticks 1 and 2 with no restriction for use with libretro emulators other than lr-mame2003.  The keyboard mappings below are the same keys that are mapped for Users 1 and 2 in Retroarch.
                                          Player1_8Way_FBA="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \
                                          --silent \
                                          --detach-kernel-driver \
                                          --deadzone=4000 \
                                          --deadzone-trigger 15% \
                                          --force-feedback \
                                          --mimic-xpad \
                                          --trigger-as-button \
                                          --ui-buttonmap tl=void,tr=void,guide=void \
                                          --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \
                                          --device-name "Player_1" \
                                          --evdev-absmap ABS_X=y1,ABS_Y=x1 \
                                          --evdev-keymap BTN_THUMB2=a,BTN_PINKIE=b,BTN_TRIGGER=x,BTN_THUMB=y,BTN_TOP2=lb,BTN_TOP=rb,BTN_BASE3=back,BTN_BASE6=start,BTN_BASE2=lt,BTN_BASE5=rt \
                                          --ui-axismap X1=KEY_LEFT:KEY_RIGHT,Y1=KEY_UP:KEY_DOWN \
                                          --ui-buttonmap a=KEY_X,b=KEY_Z,x=KEY_S,y=KEY_A,lb=KEY_Q,rb=KEY_W,back=KEY_UNKNOWN,start=KEY_UNKNOWN,back+start=KEY_SPACE+KEY_ESC,lt=KEY_RIGHTSHIFT+KEY_ENTER,rt=KEY_6+KEY_2"
                                          
                                          Player2_8Way_FBA="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \
                                          --silent \
                                          --detach-kernel-driver \
                                          --deadzone=4000 \
                                          --deadzone-trigger 15% \
                                          --force-feedback \
                                          --mimic-xpad \
                                          --trigger-as-button \
                                          --ui-buttonmap back=void,start=void,tl=void,tr=void,guide=void,lt=void,rt=void \
                                          --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.1:1.0-event-joystick \
                                          --device-name "Player_2" \
                                          --evdev-absmap ABS_X=y1,ABS_Y=x1 \
                                          --evdev-keymap BTN_THUMB=a,BTN_TOP=b,BTN_PINKIE=x,BTN_TRIGGER=y,BTN_THUMB2=back,BTN_TOP2=start \
                                          --ui-axismap X1=KEY_D:KEY_G,Y1=KEY_R:KEY_F \
                                          --ui-buttonmap a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_SPACE,y=KEY_LEFTSHIFT,lb=KEY_V,rb=KEY_B"
                                          
                                          ### Player3_8Way_FBA and Player4_8Way_FBA map Joysticks 3 and 4 with no restriction for use with libretro emulators other than lr-mame2003.  The keyboard mappings below are the same keys that are mapped for Users 1 and 2 in Retroarch (with axes appropriately altered).
                                          Player3_8Way_FBA="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \
                                          --silent \
                                          --detach-kernel-driver \
                                          --deadzone=4000 \
                                          --deadzone-trigger 15% \
                                          --force-feedback \
                                          --mimic-xpad \
                                          --trigger-as-button \
                                          --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void \
                                          --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.2:1.0-event-joystick \
                                          --device-name "Player_3" \
                                          --evdev-absmap ABS_X=x1,ABS_Y=y1 \
                                          --evdev-keymap BTN_THUMB=a,BTN_TOP=b,BTN_PINKIE=x,BTN_TRIGGER=y,BTN_THUMB2=back,BTN_TOP2=start \
                                          --ui-axismap X1=KEY_DOWN:KEY_UP,Y1=KEY_RIGHT:KEY_LEFT \
                                          --ui-buttonmap a=KEY_X,b=KEY_Z,x=KEY_S,y=KEY_A,back=KEY_RIGHTSHIFT,start=KEY_ENTER,back+start=KEY_SPACE+KEY_ESC"
                                          
                                          Player4_8Way_FBA="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \
                                          --silent \
                                          --detach-kernel-driver \
                                          --deadzone=4000 \
                                          --deadzone-trigger 15% \
                                          --force-feedback \
                                          --mimic-xpad \
                                          --trigger-as-button \
                                          --ui-buttonmap rb=void,tl=void,tr=void,guide=void,lt=void,rt=void \
                                          --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.4:1.0-event-joystick \
                                          --device-name "Player_4" \
                                          --evdev-absmap ABS_X=x1,ABS_Y=y1 \
                                          --evdev-keymap BTN_THUMB=a,BTN_TOP=b,BTN_PINKIE=x,BTN_TRIGGER=y,BTN_BASE=lb,BTN_THUMB2=back,BTN_TOP2=start \
                                          --ui-axismap X1=KEY_F:KEY_R,Y1=KEY_G:KEY_D \
                                          --ui-buttonmap a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_SPACE,y=KEY_LEFTSHIFT,back=KEY_6,lb=KEY_UNKNOWN,start=KEY_2,back+start=KEY_SPACE+KEY_ESC"
                                          
                                          
                                          ### GAME BOY ADVANCE - Gameboy Advance Emulator GPSP defaults to Player 2's joystick.  This is not a libretro core. Player1_gpsp enables Player 1's joystick to operate simultaneously with Player 2's joystick, as Player 1's joystick is mapped to the default keys.  GPSP keys replicate the Gameboy Advance, so the default keys are D-Pad = up/down/left/right; A Button = z; B Button = x; Left Shoulder Button (on the GBA) = a; Right Shoulder Button (on the GBA) = s; Start Button (on the GBA) = enter; Select Button (on the GBA) = backspace.  The enter key is the pause button.  As it is easy to accidentally press it, the pause key is now mapped to start+back (the 2 left red buttons on 3rd row ie hold the start button and press back). The escape key is exit which is mapped to back+start as per normal (ie hold back and press start).
                                          Player1_gpsp="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \
                                          --silent \
                                          --detach-kernel-driver \
                                          --deadzone=4000 \
                                          --deadzone-trigger 15% \
                                          --force-feedback \
                                          --mimic-xpad \
                                          --trigger-as-button \
                                          --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void \
                                          --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \
                                          --device-name "Player_1" \
                                          --evdev-absmap ABS_X=y1,ABS_Y=x1 \
                                          --evdev-keymap BTN_THUMB2=a,BTN_PINKIE=b,BTN_TRIGGER=x,BTN_THUMB=y,BTN_BASE3=back,BTN_BASE6=start \
                                          --ui-axismap X1=KEY_LEFT:KEY_RIGHT,Y1=KEY_UP:KEY_DOWN \
                                          --ui-buttonmap a=KEY_Z,b=KEY_X,x=KEY_A,y=KEY_S,back=KEY_BACKSPACE,start=KEY_UNKNOWN,start+back=KEY_ENTER,back+start=KEY_ESC"
                                          
                                          
                                          ### NINTENDO 64 - NOT REQUIRED BECAUSE MAPPED PROPERLY VIA MUPEN64PLUS'S OWN INTERNAL CONTROLS - N64 emulator = mupen64plus-GLideN64-highres.  This emulator maps the "escape" key for exiting the emulator with the following command in mupen64plus.cfg: 
                                          ### # SDL keysym for stopping the emulator 
                                          ###   Kbd Mapping Stop = 27
                                          ### 27 is the ASCII code for the Escape key.  See www.asciitable.com .  So with this emulator the escape key is mapped to mupen64plus-GLideN64-highres's keyboard controls and then is mapped to select+start in xboxdrv.
                                          ### The other keys are mapped in the InputAutoCfg.ini and are as follows:
                                          ### DPad R = key(100)	- "d" key
                                          ### DPad L = key(97)	- "a" key
                                          ### DPad D = key(115)	- "s" key
                                          ### DPad U = key(119)	- "w" key
                                          ### Start = key(13)		- "enter" key
                                          ### Z Trig = key(122)	- "z" key
                                          ### B Button = key(306)	- "
                                          ### A Button = key(304)
                                          ### C Button R = key(108)
                                          ### C Button L = key(106)
                                          ### C Button D = key(107)
                                          ### C Button U = key(105)
                                          ### R Trig = key(99)
                                          ### L Trig = key(120)
                                          ### Mempak switch = key(44)
                                          ### Rumblepak switch = key(46)
                                          Player1_n64="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \
                                          --silent \
                                          --detach-kernel-driver \
                                          --deadzone=4000 \
                                          --deadzone-trigger 15% \
                                          --force-feedback \
                                          --mimic-xpad \
                                          --trigger-as-button \
                                          --ui-buttonmap tl=void,tr=void,guide=void \
                                          --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \
                                          --device-name "Player_1" \
                                          --evdev-absmap ABS_X=y1,ABS_Y=x1 \
                                          --evdev-keymap BTN_THUMB2=a,BTN_PINKIE=b,BTN_TRIGGER=x,BTN_THUMB=y,BTN_TOP2=lb,BTN_TOP=rb,BTN_BASE3=back,BTN_BASE6=start,BTN_BASE2=lt,BTN_BASE5=rt \
                                          --ui-buttonmap start=KEY_ENTER \
                                          --ui-buttonmap back+start=KEY_ESC"
                                          
                                          
                                          ### DREAMCAST - REICAST - Time and date correction
                                          ### dreamcast_time_fn () {
                                          	### DREAMCAST - REICAST - Time and date correction
                                          	### Update the time/date in emu.cfg
                                          	### 1) Get how many hours of difference between local time and Greenwich time (GTM)
                                          	### 2) Calculate the current time in seconds (ex: 2125613317) with an offset of +20 years
                                          	### 3) Replace Dreamcast.RTC value in emu.cfg with the result
                                          ###	time_offset=$(date +'%:::z') 
                                          ###	newtime=$(date -d "$(date -d "+20 years $time_offset hours" +%D) $(date -d "+20 years $time_offset hours" +%T)" +"%s")
                                          ###	sudo perl -i -p -e "s|Dreamcast.RTC = .*|Dreamcast.RTC = "$newtime"|" /opt/retropie/configs/dreamcast/emu.cfg
                                          ### }
                                          
                                          
                                          ### Autofire for Defender - fire button (X) (3rd button, 1st row), hold down and fires multiple times
                                          ###sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \
                                          ###--silent \
                                          ###--detach-kernel-driver \
                                          ###--deadzone=4000 \
                                          ###--deadzone-trigger 15% \
                                          ###--force-feedback \
                                          ###--mimic-xpad \
                                          ###--trigger-as-button \
                                          ###--ui-buttonmap tl=void,tr=void,guide=void \
                                          ###--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \
                                          ###--device-name "Player_1" \
                                          ###--evdev-absmap ABS_X=y1,ABS_Y=x1 \
                                          ###--evdev-keymap BTN_THUMB2=a,BTN_PINKIE=b,BTN_TRIGGER=x,BTN_THUMB=y,BTN_TOP2=lb,BTN_TOP=rb,BTN_BASE3=back,BTN_BASE6=start,BTN_BASE2=lt,BTN_BASE5=rt \
                                          ###--ui-axismap X1=KEY_LEFT:KEY_RIGHT,Y1=KEY_UP:KEY_DOWN \
                                          ###--ui-buttonmap a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_SPACE,y=KEY_LEFTSHIFT,lb=KEY_C,rb=KEY_V,back=KEY_5+KEY_1,start=KEY_6+KEY_2,lt=KEY_UNKNOWN,rt=KEY_UNKNOWN \
                                          ###--buttonmap x^autofire:100=x \
                                          ###--ui-buttonmap back+start=macro:/opt/retropie/configs/all/advmame_exit.macro \
                                          ###&
                                          
                                          
                                          ### Arcade Games that use 4 way restricted joysticks - 208 of 208 identified games plus Arkanoid and Tempest derivatives
                                          RestrictedArcadeGames=""alibaba.zip"|"amidar.zip"|"armwrest.zip"|"astinvad.zip"|"atetris.zip"|"anteater.zip"|"armorcar.zip"|"astrob.zip"|"astrof.zip"|"bagman.zip"|"ballbomb.zip"|"barrier.zip"|"blkhole.zip"|"blasto.zip"|"blockade.zip"|"btime.zip"|"carjmbre.zip"|"carnival.zip"|"cavelon.zip"|"chameleo.zip"|"checkman.zip"|"chinhero.zip"|"circusc.zip"|"ckong.zip"|"commando.zip"|"congo.zip"|"dazzler.zip"|"devilfsh.zip"|"digdug.zip"|"digdug2.zip"|"digger.zip"|"disco.zip"|"dkong.zip"|"dkong3.zip"|"dkongjr.zip"|"docastle.zip"|"dommy.zip"|"dorodon.zip"|"frogger.zip"|"galaga.zip"|"galaxian.zip"|"galxwars.zip"|"guzzler.zip"|"invrvnge.zip"|"invinco.zip"|"jjack.zip"|"joust2.zip"|"jrpacman.zip"|"jumpcoas.zip"|"jungler.zip"|"kchamp.zip"|"kicker.zip"|"kingball.zip"|"ladybug.zip"|"lasso.zip"|"levers.zip"|"lnc.zip"|"locomotn.zip"|"logger.zip"|"lrescue.zip"|"lupin3.zip"|"mappy.zip"|"marvins.zip"|"mikie.zip"|"mmonkey.zip"|"monsterb.zip"|"moonal2.zip"|"moonqsr.zip"|"mrdo.zip"|"mrflea.zip"|"mrjong.zip"|"mrtnt.zip"|"mspacman.zip"|"mystston.zip"|"naughtyb.zip"|"netwars.zip"|"olibochu.zip"|"ozmawars.zip"|"pacnpal.zip"|"pacplus.zip"|"pengo.zip"|"perestro.zip"|"pickin.zip"|"pignewt.zip"|"pisces.zip"|"pleiads.zip"|"pooyan.zip"|"popflame.zip"|"puckman.zip"|"pacman.zip"|"pulsar.zip"|"qbert.zip"|"qbertqub.zip"|"qix.zip"|"radarscp.zip"|"retofinv.zip"|"rocnrope.zip"|"route16.zip"|"samurai.zip"|"tsamurai.zip"|"scregg.zip"|"sindbadm.zip"|"solarfox.zip"|"sonofphx.zip"|"invadpt2.zip"|"panic.zip"|"shollow.zip"|"spclaser.zip"|"sqbert.zip"|"streakng.zip"|"sbagman.zip"|"superpac.zip"|"superqix.zip"|"ssi.zip"|"swat.zip"|"tactcian.zip"|"tankbatt.zip"|"taxidrvr.zip"|"elecyoyo.zip"|"theend.zip"|"timelimt.zip"|"tomahawk.zip"|"todruaga.zip"|"tranqgun.zip"|"triplep.zip"|"tutankhm.zip"|"vanvan.zip"|"volfied.zip"|"vsgongf.zip"|"wiping.zip"|"warpwarp.zip"|"zigzag.zip"|"zzyzzyxx.zip"|"alphaho.zip"|"pacnchmp.zip"|"comotion.zip"|"copsnrob.zip"|"cosmicg.zip"|"cosmos.zip"|"crash.zip"|"crush.zip"|"redufo.zip"|"diamond.zip"|"dorunrun.zip"|"dominos.zip"|"drmicro.zip"|"drgnbstr.zip"|"dremshpr.zip"|"elvactr.zip"|"eyes.zip"|"firetrap.zip"|"40love.zip"|"galpanic.zip"|"gundealr.zip"|"hardhat.zip"|"headon.zip"|"headon2.zip"|"heiankyo.zip"|"hexa.zip"|"hustle.zip"|"intrepid.zip"|"ironhors.zip"|"karianx.zip"|"kungfum.zip"|"lvgirl94.zip"|"logicpro.zip"|"logicpr2.zip"|"msjiken.zip"|"kikcubic.zip"|"mineswpr.zip"|"mtrap.zip"|"dowild.zip"|"mrgoemon.zip"|"natodef.zip"|"rallyx.zip"|"nrallyx.zip"|"pepper2.zip"|"pettanp.zip"|"popeye.zip"|"punchout.zip"|"raiders5.zip"|"rampage.zip"|"reikaids.zip"|"robby.zip"|"rthunder.zip"|"sidetrac.zip"|"schaser.zip"|"spaceinv.zip"|"spacezap.zip"|"spectar.zip"|"springer.zip"|"stratvox.zip"|"sia2650.zip"|"spnchout.zip"|"tapper.zip"|"rbtapper.zip"|"targ.zip"|"telmahjn.zip"|"theglob.zip"|"thief.zip"|"timber.zip"|"toypop.zip"|"wwjgtin.zip"|"wndrmomo.zip"|"yamyam.zip"|"zerozone.zip"|"zookeep.zip"|"pairs.zip"|"higemaru.zip"|"elecyoy2.zip"|"arkangc.zip"|"arkanoid.zip"|"arkatayt.zip"|"arkatour.zip"|"arkbl2.zip"|"arkbl3.zip"|"arkbloc2.zip"|"arkblock.zip"|"arknid2j.zip"|"arknid2u.zip"|"arknoid2.zip"|"arknoidj.zip"|"arknoidu.zip"|"arknoiuo.zip"|"arkretrn.zip"|"tempest.zip"|"tempest1.zip"|"tempest2.zip"|"tempest3.zip"|"temptube.zip""
                                          
                                          
                                          ### Kill xboxdrv
                                          xboxkill="sudo killall xboxdrv"
                                          
                                          
                                          ### SEE GAMES/ROMS UNDER ADVMAME - INSERTING THE ROMS INTO THEIR OWN CODE BLOCK DEFINITION DOES NOT WORK IN THIS CASE.  2 Player Co-operative or 2 Player Simultaneous Arcade games - for Advance Mame.  These are games where 2 players are playing at the same time with different joysticks. With 2 Player Co-operative games, Player 1 uses Player 1's joystick and Player 2 uses Player 2's joystick. (Note: Smash TV and Robotron 2084 which use both joysticks to move and fire are included in the simultaneous games meaning only one player can play because both joysticks are in use.) 
                                          ### For 2 player alternate games using Advance Mame (ie games where one person takes their turn and then the next player takes their turn), Player 1 and Player 2 use Player 1's joystick.  Player 2 can't use a separate joystick.   To avoid this "hot seating", these xboxdrv configurations allow 2 Player Co-operative games to continue to use 2 joysticks while for 2 Player alternate games which use hotseating normally, Player 1's and 2's joystick controls now mirror each other by using the same keys, so there is no need for "hotseating".
                                          
                                          
                                          ### Execute the driver with the configuration needed
                                          ### $1 is the name of the system emulation (eg mame-libretro), not the name of the emulator (eg not lr-mame2003), nor the name of the folder (eg not "arcade", not "mame-libretro", not "arcade-vertical"
                                          ### $1 - The system (eg: atari2600, nes, snes, megadrive, fba, etc).
                                          ### $2 - The emulator (eg: lr-stella, lr-fceumm, lr-picodrive, pifba, etc).
                                          ### $3 - The full path to the rom file.
                                          ### $4 - The full command line used to launch the emulator.
                                          ### This information can be obtained from /dev/shm/runcommand.info
                                          
                                          case $2 in
                                          
                                          	advmame)
                                          	case $rom in
                                          		"aerofgt.zip"|"aerofgtb.zip"|"aerofgtc.zip"|"sonicwi2.zip"|"sonicwi3.zip"|"alien3.zip"|"avspu.zip"|"aliens.zip"|"alpham2.zip"|"altbeast.zip"|"altbeas2.zip"|"altbeas4.zip"|"altbeas5.zip"|"altbeaj1.zip"|"altbeaj.zip"|"altbeaj3.zip"|"androdun.zip"|"armwar.zip"|"baddudes.zip"|"batcir.zip"|"btoads.zip"|"bnzabros.zip"|"bublbobl.zip"|"bublbobr.zip"|"bublbob1.zip"|"bublbob2.zip"|"bubblebobbleultra.zip"|"bubblem.zip"|"bubsympe.zip"|"bubsymph.zip"|"bubsympu.zip"|"burnforc.zip"|"burnfrco.zip"|"burningf.zip"|"burningh.zip"|"dino.zip"|"dinoj.zip"|"dinou.zip"|"captaven.zip"|"captavna.zip"|"captavne.zip"|"captavnj.zip"|"captavnu.zip"|"captavuu.zip"|"captcomm.zip"|"captcomu.zip"|"captcomj.zip"|"cawing.zip"|"cawingj.zip"|"cawingr1.zip"|"cawingu.zip"|"edrandy.zip"|"edrandy1.zip"|"edrandyj.zip"|"ctribe.zip"|"ctribeb.zip"|"contra.zip"|"contrab.zip"|"contraj.zip"|"contrajb.zip"|"crimfght.zip"|"crimfgt2.zip"|"crimfgtj.zip"|"crsword.zip"|"darius.zip"|"darius2.zip"|"darius2d.zip"|"dariuse.zip"|"dariusg.zip"|"dariusgj.zip"|"dariusgu.zip"|"dariusgx.zip"|"dariusj.zip"|"dariuso.zip"|"diehard.zip"|"ddrgn2u.zip"|"ddrgnw1.zip"|"ddrago3b.zip"|"ddragon.zip"|"ddragon2.zip"|"ddragon3.zip"|"ddragonb.zip"|"ddragonu.zip"|"ddragonw.zip"|"ddsom.zip"|"ddsoma.zip"|"ddsomj.zip"|"ddsomjr1.zip"|"ddsomr1.zip"|"ddsomr2.zip"|"ddsomu.zip"|"ddsomur1.zip"|"ddtod.zip"|"ddtoda.zip"|"ddtodh.zip"|"ddtodj.zip"|"ddtodjr1.zip"|"ddtodr1.zip"|"ddtodu.zip"|"ddtodur1.zip"|"dynamcop.zip"|"dynwar.zip"|"dynwarj.zip"|"exedexes.zip"|"ffight.zip"|"ffightj.zip"|"ffightj1.zip"|"ffightu.zip"|"ffightua.zip"|"gdarius.zip"|"gdarius2.zip"|"gdariusb.zip"|"gground.zip"|"gaun2pg1.zip"|"gaun2pg2.zip"|"gaun2pr3.zip"|"gaun22p1.zip"|"gaun22pg.zip"|"gaunt2.zip"|"gaunt2g.zip"|"gaunt2p.zip"|"gaunt2pg.zip"|"gaunt2pj.zip"|"gaunt22p.zip"|"gauntdl.zip"|"gauntg.zip"|"gauntgr3.zip"|"gauntgr6.zip"|"gauntgr8.zip"|"gauntj.zip"|"gauntj12.zip"|"gauntr1.zip"|"gauntr2.zip"|"gauntr4.zip"|"gauntr5.zip"|"gauntr7.zip"|"gauntr9.zip"|"gpilots.zip"|"gokuparo.zip"|"goldnax1.zip"|"goldnax2.zip"|"goldnax3.zip"|"goldnaxe.zip"|"goldnaxj.zip"|"goldnaxu.zip"|"ga2.zip"|"ga2j.zip"|"ga2u.zip"|"mt_gaxe.zip"|"mt_gaxe2.zip"|"gwar.zip"|"gwara.zip"|"gwarb.zip"|"gwarj.zip"|"hbarrel.zip"|"hbarrelw.zip"|"iceclimb.zip"|"iceclmbj.zip"|"iceclmrj.zip"|"joust.zip"|"joustr.zip"|"joustwr.zip"|"knights.zip"|"knightsj.zip"|"knightsu.zip"|"lresort.zip"|"lwings.zip"|"lwings2.zip"|"lwingsjp.zip"|"lifefrce.zip"|"lifefrcj.zip"|"mario.zip"|"mariojp.zip"|"mslug.zip"|"mslug2.zip"|"mslug3.zip"|"mslug3b6.zip"|"mslug3n.zip"|"mslug4.zip"|"mslug5.zip"|"mslugx.zip"|"mwalk.zip"|"mwalkbl.zip"|"mwalkj.zip"|"mwalku.zip"|"nbbatman.zip"|"gaiden.zip"|"progear.zip"|"progeara.zip"|"progearj.zip"|"punisher.zip"|"punishrj.zip"|"punishru.zip"|"rampage.zip"|"rampage2.zip"|"rmpgwt.zip"|"rmpgwt11.zip"|"robocop2.zip"|"robocp2j.zip"|"robocp2u.zip"|"robotron.zip"|"robotryo.zip"|"rtypeleo.zip"|"rtypelej.zip"|"salamand.zip"|"salamanj.zip"|"salamndr2.zip"|"sengokh.zip"|"sengokmj.zip"|"sengoku.zip"|"sengoku2.zip"|"sengoku3.zip"|"sexyparo.zip"|"shocktro.zip"|"shocktr2.zip"|"sscope2.zip"|"simpsn2p.zip"|"skullfng.zip"|"skykid.zip"|"skykidd.zip"|"skykiddo.zip"|"skykiddx.zip"|"smashtv.zip"|"smashtv4.zip"|"smashtv5.zip"|"smashtv6.zip"|"spclorda.zip"|"spclordb.zip"|"spclordg.zip"|"spclords.zip"|"spidman.zip"|"spidmanu.zip"|"streetsm.zip"|"streets1.zip"|"streetsj.zip"|"streetsw.zip"|"ssriders.zip"|"scobra.zip"|"scobrab.zip"|"scobras.zip"|"scobrase.zip"|"tmnt.zip"|"tmnt2.zip"|"tmnt2a.zip"|"tmnt2pj.zip"|"tmnt2po.zip"|"tmnt22p.zip"|"tmntj.zip"|"tmntu.zip"|"tmntua.zip"|"timecrs2.zip"|"twinbee.zip"|"unsquad.zip"|"vendet2p.zip"|"viostorm.zip"|"viostrma.zip"|"viostrmj.zip"|"viostrmu.zip"|"vcop.zip"|"vcop2.zip"|"wof.zip"|"wofa.zip"|"wofj.zip"|"wofu.zip"|"wow.zip"|"xmen.zip"|"xenophob.zip"|"1943.zip"|"arabianm.zip"|"armora.zip"|"atarifb.zip"|"crimec.zip"|"cotton2.zip"|"deadconx.zip"|"dbreedm72.zip"|"ddonpach.zip"|"dondokod.zip"|"elvactr.zip"|"gigawing.zip"|"gunbird.zip"|"kchamp.zip"|"klax.zip"|"marble.zip"|"milliped.zip"|"narc.zip"|"ninjak.zip"|"penbros.zip"|"pbobblenzip"|"qix.zip"|"spacduel.zip"|"spacewar.zip"|"atetris.zip"|"atetrisa.zip"|"ctribe.zip"|"timesold.zip"|"timesold1.zip"|"twotiger.zip"|"victroad.zip"|"vindictr.zip"|"xybots.zip"|"logicpro.zip"|"pang.zip"|"pipedrmu.zip"|"hattrick.zip"|"mk.zip"|"umk3.zip"|"ssf2t.zip"|"sf2.zip"|"sf.zip"|"ssf2.zip"|"sfa3.zip"|"sf2ce.zip"|"vf.zip"|"vf2.zip"|"vf3.zip"|"kbash.zip"|"offroad.zip"|"rampart.zip"|"rampart2p.zip"|"ssprint.zip"|"neobombe.zip"|"simpsons2p.zip"|"simpsons.zip"|"snowbros.zip"|"warlords.zip"|"openice.zip"|"kizuna.zip"|"nbajamte.zip"|"nbajam.zip") # Configuration used only for these 2 Player Simultaneous (Co-Operative Play) ROMs
                                          				$xboxkill
                                          				joycommand="$Player1_AdvMame_Sim & $Player2_AdvMame_Sim &"
                                          				eval $joycommand
                                          			;;
                                          			*) # Configuration for every other ROM in respect of this emulator including 2 Player Alternate "hotseating" ROMS
                                          				$xboxkill
                                          				joycommand="$Player1_AdvMame_Alt & $Player2_AdvMame_Alt &"
                                          				eval $joycommand
                                          			;;
                                          		esac
                                          	;;
                                          
                                          	lr-mame2003)
                                          	case $rom in
                                          			$RestrictedArcadeGames) # Configuration only for these ROMs. Players 1 and 3 mapped to the same keys; Players 2 and 4 mapped to the same keys; All joysticks work simultaneously in portrait and landscape modes.
                                          				$xboxkill
                                          				joycommand="$Player1_4Way_Mame2003 & $Player2_4Way_Mame2003 & $Player3_4Way_Mame2003 & $Player4_4Way_Mame2003 &"
                                          				eval $joycommand
                                          			;;
                                          			*) # Configuration for every other ROM. Players 1 and 3 mapped to the same keys; Players 2 and 4 mapped to the same keys; All joysticks work simultaneously in portrait and landscape modes.
                                          				$xboxkill
                                          				joycommand="$Player1_8Way_Mame2003 & $Player2_8Way_Mame2003 & $Player3_8Way_Mame2003 & $Player4_8Way_Mame2003 &"
                                          				eval $joycommand
                                          			;;
                                          		esac
                                          	;;
                                          
                                          	amiberry-a1200)
                                          		$xboxkill
                                          		joycommand="$Player1_Amiga & $Player2_Amiga &"
                                          		eval $joycommand
                                          	;;
                                          
                                          	gpsp)
                                          		$xboxkill
                                          		joycommand="$Player1_gpsp &"
                                          		eval $joycommand
                                          	;;
                                          
                                          	reicast-audio-oss)
                                          		time_offset=$(date +'%:::z')
                                          		newtime=$(date -d "$(date -d "+20 years $time_offset hours" +%D) $(date -d "+20 years $time_offset hours" +%T)" +"%s")
                                          		sudo perl -i -p -e "s|Dreamcast.RTC = .*|Dreamcast.RTC = "$newtime"|" /opt/retropie/configs/dreamcast/emu.cfg
                                          	;;
                                          
                                          	linapple)
                                          		$xboxkill
                                          		joycommand="$Player1_appleII &"
                                          		eval $joycommand
                                          	;;
                                          
                                          	daphne)
                                          		$xboxkill
                                          		joycommand="$Player1_daphne &"
                                          		eval $joycommand
                                          	;;
                                          
                                          	vice-x64)
                                          		$xboxkill
                                          		joycommand="$Player1_c64 & $Player2_c64 &"
                                          		eval $joycommand
                                          	;;
                                          
                                          	atari800)
                                          		$xboxkill
                                          		joycommand="$Player1_atari800 & $Player2_atari800 &"
                                          		eval $joycommand
                                          	;;
                                          
                                          	hatari-compatible)
                                          		$xboxkill
                                          		joycommand="$Player1_atariST & $Player2_atariST &"
                                          		eval $joycommand
                                          	;;
                                          
                                          	lr-caprice32)
                                           		$xboxkill
                                           		joycommand="$Player1_Amstrad &"
                                           		eval $joycommand
                                          	;;
                                          
                                          	lr-fbalpha)
                                          	case $rom in
                                          		$RestrictedArcadeGames) # Configuration only for these ROMs. 4-way restricted.  Players 1 and 3 mapped to the same keys; Players 2 and 4 mapped to the same keys; All joysticks work simultaneously in portrait and landscape modes.
                                          				$xboxkill
                                          				joycommand="$Player1_4Way_FBA & $Player2_4Way_FBA & $Player3_4Way_FBA & $Player4_4Way_FBA &"
                                          				eval $joycommand
                                          			;;
                                          			*) # Configuration for every other ROM. Players 1 and 3 mapped to the same keys; Players 2 and 4 mapped to the same keys; All joysticks work simultaneously in portrait and landscape modes.
                                          				$xboxkill
                                          				joycommand="$Player1_8Way_FBA & $Player2_8Way_FBA & $Player3_8Way_FBA & $Player4_8Way_FBA &"
                                          				eval $joycommand
                                          			;;
                                          		esac
                                          	;;
                                          
                                          esac
                                          
                                          

                                          RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                                          1 Reply Last reply Reply Quote 0
                                          • T
                                            tipoto
                                            last edited by tipoto

                                            Ok, I finally decided to install an image with HyperPie on my old RPI2 that I wasn't using anymore.

                                            It seems that reicast refreshes the time and date automatically on RetroPie, you don't need any extra code for that! So you can remove the script I sent you (even thought it was correct and at the right place), I need it on my XU4, but it's not necessary on the RPI.

                                            Actually the solution for the bios was on the first link of your first post of this topic (which is on the Wiki as well):
                                            https://retropie.org.uk/forum/topic/364/every-time-i-play-dreamcast-displays-the-setting-screen-time-date/51

                                            The last thing that you may want to do, is to create a fake game to have access to the reicast System Manager, in case you want to format or manage the space on your VMUs.
                                            Here is what you have to do:

                                            • Create a fake game by typing this command on a terminal:
                                            ln -sv fileThatDoesNotExist ~/RetroPie/roms/dreamcast/systemManager.cdi
                                            
                                            • Edit the Dreamcast romlist file /home/pi/.attract/romlists/Sega Dreamcast.txt
                                              Add this line right after the first line:
                                              systemManager;System Manager;Sega Dreamcast;...
                                              You need to complete the line properly, replace "..." by the something that matches the structure that you have in this file.

                                            You should be all set with that.

                                            S 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            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.