Navigation

    RetroPie forum home
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    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

    Help and Support
    drives rom location
    3
    11
    374
    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.
    • hansolo77
      hansolo77 last edited by

      Hey guys, long time!

      I backed the ATARI VCS console a few years ago and over this past week I received it! My first instinct was "I'm gonna put RetroPie on it!" As it turns out, you can add an m.2 ssd to the console, but it's limited to SATA instead of NVMe. The problem with that, I've not found anything that is over 2tb for m.2 SATA. My current RetroPie build, with the roms and video snaps, exceeds 3tb. So I had a thought. Why don't I put all the roms that are cartridge based on the m.2, and then have all my CD based games on an external. The idea would be simple. When the drive is connected, I could access my ENTIRE library. When the drive is NOT connected, I could only access the stuff stored locally. Given how RetroPie is setup, I didn't know if such a thing were feasible, hence the start of this thread.

      One thing I thought I could do is edit the es_systems.cfg file, which RetroPie and EmulationStation uses to load the paths to all the roms. In theory, I would just create a new /etc/fstab entry to mount the external drive to a folder like /home/pi/RetroPie/roms2 and make the appropriate changes in the config file to load certain systems from the alternate location.

      Would something like that work, or would it just completely kill the whole system? Looking for some feedback please!

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

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

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

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

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

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

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

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

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

                          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.