RetroPie / RetroPie-Setup

Shell script to set up a Raspberry Pi/Odroid/PC with RetroArch emulator and various cores
Other
10k stars 1.38k forks source link

Support new zip Singe ROMS #3897

Closed DirtBagXon closed 3 months ago

DirtBagXon commented 3 months ago

This will allow support for the new zipped Singe ROMs.

This has been used for a few months now without issue, but welcome feedback if you have a preferred alternative.

cmitu commented 3 months ago

hello @DirtBagXon, thanks for the changes.

I think you missed escaping the other vars:

if [[ -f "$dir/$name.singe" ]]; then
    singerom="$dir/$name.singe"
elif [[ -f "$dir/$name.zip" ]]; then
    singerom="$dir/$name.zip"
fi

should probably be:

if [[ -f "\$dir/\$name.singe" ]]; then
    singerom="\$dir/\$name.singe"
elif [[ -f "\$dir/$name.zip" ]]; then
    singerom="\$dir/\$name.zip"
fi

I also think it's better to use if [[ -n "$singerom" ]] instead of if [[ -v singerom ]] since the former checks for non-empty content, not only of the existence of the variable.

DirtBagXon commented 3 months ago

Thanks @cmitu

It's been a while since I played with scriptmodules - I forgot how this worked :)

I think that's escaped all the required var $ for the write to file.

cmitu commented 3 months ago

Yes, it works fine now. So, the change is that instead of the game.singe folder, the contents can be zipped (as game.zip) and placed in the same folder where the .singe folder was expected ?

DirtBagXon commented 3 months ago

"placed in the same folder where the .singe folder was expected ?" - Yes

This will not replace the existing folder structure, but will be an alternative, and work alongside. All the existing arguments are backwards compatible, -retropath being the obvious one, which will be ignored if a zip ROM is detected.

Some new upcoming games will likely be released in the zip format.

Documentation has started here: https://github.com/DirtBagXon/hypseus_singe_data/tree/master/00-zip-roms

It's some attempt to avoid the singe/ subfolder requirement, and subsequent fugly symlinking, that has plagued Singe from inception (and requires the -retropath hack to, on-the-fly, rewrite LUA paths currently in RetroPie and others).

It also makes the distribution of the opensource elements (LUA), and their updates, of the games easier.

Short term, and probably long term, both formats will continue to be supported in hypseus.

cmitu commented 3 months ago

@DirtBagXon ok, thanks for the explanation. My main concern was whether we should add .zip as supported extension in the daphne system, it's not needed - the .zip file goes into <game>.daphne , where the .singe file resides right now.