Roms are being moved to roms_backup on Restart

First of all, my box is a T95 Max+ (S905x3). I was using EE 4.3 on internal storage (via ceemmc) and it was working fine, all my roms were listed, I could save and load every game very fine.

Then I updated it to 4.4; now, everytime I restart my system, all the folders that were in the /storage/roms folder get moved to /storage/roms_backup.

If I move them back and just “Restart EmulationStation”, they show up, but if I restart the system, they all go to the backup folder. Did I do anything wrong?

init.log is short:

Cannot initialize conversion from codepage 850 to ANSI_X3.4-1968: Invalid argument
Cannot initialize conversion from ANSI_X3.4-1968 to codepage 850: Invalid argument
Using internal CP850 conversion table

Thanks!
EDIT.: wasn’t sure if this is a General topic (because it’s a question not directly related to the box) or if it is an Amlogic topic (because I have an Amlogic box)

I also have the same problem. I deleted and formatted my rom and reinstalled it. It is not recommended to upgrade directly. It will be better to rewrite.

Sorry I hadn’t updated this topic.
I found a solution for that, and also made it better with the help of a friend.

The first thing: puts a file called “emuelecroms” (no extensions) inside your roms/ folder… For some reason, on the 4.4 Emuelec, it checks for the “emuelecroms” file in the internal storage, and if there’s none, it just moves all the roms to backup and looks for roms on the external drives, so this will fix your problem.

The second thing: I always wanted to have roms in internal AND external drives at the same time, so we made a bash script that makes symbolic links in the internal storage, pointing to roms of the external storage, the script is currently inside my TV Box, but if you want I can post it here.

the same question. would you post it?THX

Very useful information here.
I had the same problem while updating a very similar box (vontar h96max x3), and following these steps made the roms/ directory stop being renamed to roms_backup/ as well.

Guess that since ceemmc software got removed, anyone wanting to install to nand will have to first install 4.3, and after that upgrade to 4.4

Hey guys, these are the .sh that I used to scan external roms. One of them creates symbollic links from the roms/ folder to the external storage’s roms/ folder; and the other one just clears the links.

Everytime it runs, it clears existing symlinks (if any) and create them again, I ran it with some hundreds of games and it took a good while to finish, but it worked:

#!/bin/bash
EXTERNAL_PATH="/var/media/*"
INTERNAL_PATH="/storage"
ROMS_SUFFIX="/roms"

# iterate through ROMS_PATH and delete symlinks
for file in "$INTERNAL_PATH"$ROMS_SUFFIX/**/*; do
    # if file contains bios, skip
    if [[ $file == *"roms/bios"* ]]; then
        continue
    fi

    if [ -L "$file" ]; then
        # if symlink exists, delete it
        echo "Deleting symlink: $file"
        rm "$file"
    fi
done

# iterate through files and create symlinks
for external_storage in $EXTERNAL_PATH; do
    echo "Checking for roms inside $external_storage"
    if [ ! -d "$external_storage$ROMS_SUFFIX" ]; then
        echo "Directory $external_storage$ROMS_SUFFIX DOES NOT exist, ignoring this external drive."
        continue
    fi
    for file in "$external_storage$ROMS_SUFFIX"/**/*; do
        if [ -f "$file" ]; then
            # replace EXTERNAL with ROMS_PATH
            link=${file/$external_storage/$INTERNAL_PATH}

            # if link doesn't exists, create it
            if [ ! -f "$link" ]; then
                echo "Creating symlink: $file -> $link"
                ln -s "$file" "$link"
            fi
        fi
    done
done

To use it, create a .sh file inside a “custom_scripts” folder inside the emuelec storage, I don’t remember well where it is. PS.: note that it iterates through all external drives recognized by the Emuelec OS.

To clear them all, use this one:

#!/bin/bash
EXTERNAL_PATH="/var/media/*"
INTERNAL_PATH="/storage"
ROMS_SUFFIX="/roms"
# iterate through ROMS_PATH and delete symlinks
for file in "$INTERNAL_PATH"$ROMS_SUFFIX/**/*; do
    # if file contains bios, skip
    if [[ $file == *"roms/bios"* ]]; then
        continue
    fi

    if [ -L "$file" ]; then
        # if symlink exists, delete it
        echo "Deleting symlink: $file"
        rm "$file"
    fi
done

NOTE: If you scrape images or stuff like that, they’ll probably be persisted in the internal storage; but it might work if you add the same files and folders in the external drive, but I never tested it.

1 Like

Oh, by the way, to make the scripts work you’ll need:

  1. a folder called “roms” on the root of the external drive, as well as subfolders similar to the Emuelec’s rom tree (feel free to edit the ROMS_SUFFIX part on the first for loop to change it);
  2. As noted on the previous message, you need to add these .sh files inside the custom_scripts folder to be able to execute them;
  3. After completing the two previous steps, boot up your Emuelec and on the “Scripts” section, find the script with the name of the .sh file and run it; it might take a while depending on how many roms you have on the external drive.

DISCLAIMER: These scripts are NOT OFFICIAL, so use them at your own risk, I recommend making a backup of your OS before running them.

Your method is very good. Does this script scan external roms every time emuelec starts, or does it only scan once and then do not need to scan.

If you create the file in the custom scripts folder, you will need to run it manually (everytime you change anything on the external drives). However, if you want it to scan everytime you boot Emuelec up (it might take some minutes depending on how many roms you’ve got on external drive), there’s a script inside Emuelec that runs everytime you boot it up, you can simply call our script there. For example, let’s say you find the script that runs everytime you boot emuelec up (I don’t remember its name), you’ll add the line:

sh /path/to/custom_scripts/script_name.sh
and it will run everytime it boots up.

PS.: You don’t have to worry about cleaning the symlinks before running because the first script I posted already does that before creating the links.

Consult, emuelec4 3 version of roms is externally installed into the mobile hard disk. The format is NTFS and the volume label EEROMS. The roms folder is established and put into various game roms. What should I do if I want to directly mount the roms in the hard disk to storage / roms.

Ohhh I think I get it, just to get it all, is your Emuelec installed on the external drive or is it installed on the internal storage (through eMMC)?

At present, it is also installed in the SD card. The game is in the mobile hard disk. The next step is to build it into the internal memory.

Ok I got it, the setup I use is:
Emuelec in TV Box internal storage
Roms in TV Box internal storage
More roms in SD Card/or external disk

I never tried using the Emuelec in an external drive; considering this, I think that your roms will be duplicated once you run the script.
Your Emuelec will read the EEROMS as it normally does
The script will scan all external drives (both the EERoms and the other drive) and you’ll have duplicated roms in your list…

HOWEVER, once you install Emuelec in your internal storage (via eMMC), you can just follow the steps on the comment with the scripts and I think it will all work fine

If you want, you can send me a DM, we could find a way to make this work (even if it means tweaking the script) and I can post the outcome here on the thread so everyone can see how it goes.

1 Like

Thank you very much. I’ll contact you

This script can be run only once to create the game roms and link to storage / roms. Am I right?

Yes, you’ll set up the external drive as described, run the big script and restart your emuelec.
After restarting it will then identify the new roms that came from the ext drive.

emuelec4. 3. Use your script and put it in emuelec / scripts / custom_ In the scripts / directory, restarting the emuelec system did not recognize the game ROMs in the hard disk. I copied the script to the built-in game and ran the script unsuccessfully. Was it something I did wrong or was the script not applicable to emuelec V4.3.

Did the script log something?
You put it in the custom_scripts, boot up emuelec, select the script inside emuelec interface to run it, and check the output, it should log something like:
Creating symlink: /path-to-external/rom-name → /storage/roms/rom-name

Just a note: If your roms folder is pointing to a FAT32 ROMS partition, you cannot create symbolic links on it. The ROMS partition would have to be ext4.

1 Like