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

    Multiple rom locations

    Scheduled Pinned Locked Moved Help and Support
    rom locationdrives
    11 Posts 3 Posters 5.9k 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.
    • IanDaemonI
      IanDaemon @hansolo77
      last edited by IanDaemon

      @hansolo77 Here's some info that should help:

      https://emulationstation.org/gettingstarted.html#config

      https://retropie.org.uk/forum/topic/11026/multiple-rom-path-for-a-single-system

      • 5 Favorite Arcade Games in MAME
      • Cocktail Cabinet Games
      • Check out the MAME RoW
      hansolo77H 1 Reply Last reply Reply Quote 0
      • hansolo77H
        hansolo77 @IanDaemon
        last edited by

        @iandaemon said in Multiple rom locations:

        https://retropie.org.uk/forum/topic/11026/multiple-rom-path-for-a-single-system

        This might be all I need. I had a feeling it would be simple. Now I just need to wait till pay day, buy a new drive, and see about making it all work. Thanks!

        Who's Scruffy Looking?

        brandflake11B 1 Reply Last reply Reply Quote 0
        • brandflake11B
          brandflake11 @hansolo77
          last edited by

          @hansolo77 You could also do softlinks to achieve the same thing if the above doesn't work out for you. This will make a directory in your roms folder that actually points to the external drive. Here is an example (it needs absolute paths):

          ln -s /media/externaldrive/gamefolder /home/pi/RetroPie/roms/system

          When the drive is connected, it will point to the drive and the ROMs will appear. When it's not, the link will point but the folder being pointed to won't exist.

          1 Reply Last reply Reply Quote 0
          • hansolo77H
            hansolo77
            last edited by

            I'm going to be trying to tackle this over the weekend. I'm just trying to wrap my head around how this works. My plan is to put a few of the roms on the internal drive that I really like, so I can have them ready to go. Then the external drive would essentially be cold storage for the rest of them. My understanding struggle at this point is how the gamelist.xml would work. Would I need to have 2 gamelist.xml files, one for the internal and one for the external? If I go with "option A", where I create a 2nd system, would EmulationStation work if I had one system "SegaCD" where the path is internal and another system "SegaCD" where the path is external? Also, would I have 2 entries on the EmulationStation screen for SegaCD? If I go with "option B" where I make symlinks, I feel like that would only work if the system isn't split.

            The part that's really confusing me, I did a test last night where I dumped only Metal Gear Solid for PSX onto the internal drive. I also copied the gamelist.xml over so EmulationStation would know it exists. The problem is, when I go into the PSX system in EmulationStation, it shows the entire gamelist, not just Metal Gear Solid. That's why I'm thinking I'll need either a separate gamelist for internal/external or have to have just the entire system on one or the other.

            Who's Scruffy Looking?

            1 Reply Last reply Reply Quote 0
            • hansolo77H
              hansolo77
              last edited by hansolo77

              I did a little further testing. I can now have "Metal Gear Solid" in the PSX system be the only game that shows (ES log shows it can't find the other games so it ignores them). Trying to do the symlink is giving me some issues. I created a path on the USB called /roms and start dumping the full cd-image systems over. When I try to create the symlink though, I get an error:

              ln -s /media/retropie/Passport/roms /home/pi/RETROPIE/
              ln: failed to create symbolic link '/home/pi/RETROPIE/roms': File exists
              

              Is this not the right way to do it? I won't have just one system in the usb/roms folder. Do I instead have to use a symlink for each individual system?

              ln -s /media/retropie/Passport/roms/psx /home/pi/RETROPIE/roms
              ln -s /media/retropie/Passport/roms/segacd /home/pi/RETROPIE/roms
              ln -s /media/retropie/Passport/roms/N64 /home/pi/RETROPIE/roms
              ###etc
              

              Ok, just did a test system. amigacd32When I ran this command, it created the link in the proper roms folder:

              ln -s /media/retropie/Passport/roms/amigacd32 /home/pi/RETROPIE/roms
              

              However, given the error from before about how the File exists.. how do I get around that on the PSX system where I already have a game? Would I need to create a symlink for each individual game? That sounds rediculous if true. Is there a way to do it quickly, like :

              ln -s /media/retropie/Passport/roms/psx/*.* /home/pi/RETROPIE/roms/psx
              

              Trial and error wins the day!

              I erased the symlink to amigacd32. I then created a legit folder amigacd32. I then restructured the symlink command and it worked! Opened up the amigacd32 folder and all the files therein were all symlinks!

              ln -s /media/retropie/Passport/roms/amigacd32/* home/pi/RETROPIE/roms/amigacd32
              

              Now all I have to do is wait for the dumping to finish and create the links and I'm good. Thanks @brandflake11 for your suggestion. Looks like that's exacly what I needed!

              Who's Scruffy Looking?

              brandflake11B 1 Reply Last reply Reply Quote 0
              • brandflake11B
                brandflake11 @hansolo77
                last edited by

                @hansolo77 I'm glad you got it working. You can't do a link if the file/folder exists already, but it looks like you figured that out! :)

                Are you symlinking the roms themselves? There's no need to do that, you can symlink the whole folder. If you don't want to delete files that are already in

                home/pi/RETROPIE/roms/amigacd32
                

                you could do something like:

                ln -s /media/retropie/Passport/roms/amigacd32 home/pi/RETROPIE/roms/amigacd32/external
                

                And there would be an external folder in the amigacd32 folder in emulationstation that points to your drive location. Does that make sense?

                hansolo77H 1 Reply Last reply Reply Quote 0
                • hansolo77H
                  hansolo77 @brandflake11
                  last edited by

                  @brandflake11
                  Ahh that would make sense. But since I'm using a pre-written gamelist.xml don't want to have to go in and re-make another one to support the extra folder in the path. I got it working though, that's all that's important. :)

                  Who's Scruffy Looking?

                  1 Reply Last reply Reply Quote 0
                  • hansolo77H
                    hansolo77
                    last edited by

                    Well shoot. I thought I had it. When I tested it with one folder amigacd32 it worked like it should. But then when I moved on to another, psx using the same technique failed. What I end up seeing is the entire gamelist, whether or not the files themselves exist. If I have the drive plugged in, I get the game list with all the games and their "media" like videos/etc. If I pull the drive out and restart EmulationStation, the game list still shows up, although the artwork doesn't load. I suspect it's because ES is seeing now that the roms themselves are missing, so it doesn't link to the corresponding media. I kept a few games in the correct, internal drive, and when I go to them it shows the art/videos/etc. Is there no way to accomplish what I want in this manner? Apparently all the symlinks are still in the folder, and ES is picking them up as roms but not tracking the path to verify they point to anything.

                    Uhg, so close, yet so far. D:

                    Who's Scruffy Looking?

                    brandflake11B 1 Reply Last reply Reply Quote 0
                    • brandflake11B
                      brandflake11 @hansolo77
                      last edited by brandflake11

                      @hansolo77 That is a feature of soft links. They point to other files, so they stay even when the file is not available. I recommend linking the files in an external drive folder for each emulator, so you know when to ignore them when the drive is not plugged in. Maybe actually getting retropie to look in your drive paths would be better. Did you have any luck experimenting with that?

                      You could also mount the locations of the ROMs to folders where you would want them to be located when the computer starts up. Maybe that would be an option. They wouldn't appear if you can't mount the drive that way.

                      I'm curious how to solve this kind of problem myself, so if you find a different solution, let me know!

                      hansolo77H 1 Reply Last reply Reply Quote 0
                      • hansolo77H
                        hansolo77 @brandflake11
                        last edited by

                        @brandflake11
                        I tried doing my initial plan of mounting the drive in fstab, but it didn't work either. I think What I'm going to have to do is like you suggested, using softlinks but pointing to a /external/ folder inside the rom/system folder. I did some testing last night, where I had symlinked the folder and had a few roms inside. I also have a gamelist.xml file and a /media folder where all the videos for ALL the games exist. Using the subfolder, I can see all the roms that are "internal" and a separate entry called external, when clicked on opens up all the games that are on the external drive. When I un-mount the drive and reopen ES, the "internal" roms are still there but the "external" entry is gone. This works by configuring ES to have the setting Always Parse Gamelist to NO, that causes it to scan for the files at launch. If set to YES, it will list all the games whether they exist or not. The nice thing is that ES will scan the roms and find some games with the drive disconnected and will still load the appropriate media (I think it loads them from the gamelist.xml in this case, where it sorta soft-loads the xml but isn't restricted to it). The only problem I have now is that the games loaded in the external folder (when it exists) it doesn't load the media. I think this is because it's still going to try to load the gamelist.xml and the paths no longer match. I'll just need to rescrape. That's what I'm going to try to do tonight.

                        So yeah, using a symlink like this works:

                        ln -s /media/retropie/Passport/roms/amigacd32 /home/pi/RETROPIE/roms/amigacd32/external
                        

                        You just have to live with having the external games be listed in a EXTERNAL folder in your browsing lists. When I tried to do it on the file-level, it still tried to load and display all the linked files in the gamelist.

                        Who's Scruffy Looking?

                        1 Reply Last reply Reply Quote 0
                        • 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.