Development of module-script generator for lr-mess, lr-mame and mame standalone
-
-
I added some category names.
This is a nice example on how it's working.
https://retropie.org.uk/forum/topic/31820/how-to-convert-twin-qix-to-the-japanese-version/4Later I can just add the category installs just like we did with the handheld.
The handheld names are now matched from the database and not anymore from adding system-names to the array in the script.This is the last commit :
https://github.com/FollyMaddy/RetroPie-Share/commit/050706076c04461e595bee5cb2166539c4af9b70 -
-
-
-
-
With our project we now inject the default rompaths in the mame basename loaders.
This way, we don't need to add all the rompaths to the mame.ini anymore.
But still we want it to be more flexible .
So I have made a solution that will add the %DIRNAME% to the runcommand.sh.
The advantage is that if we use this in the mame basename loaders, the rompath of the game-rom can be injected.
This make it far more flexible in to where we are putting the game-roms, because we then can also use sub-directories.And I think more loader commands can benefit from this improvement.
I would like to know what you both think of it.
Is there some interest in doing a PR for this solution ?
Thanks for replying.Here is the change :
IS_SYS=1 SYSTEM="$3" ROM="$4" ROM_BN_EXT="${ROM##*/}" ROM_BN="${ROM_BN_EXT%.*}" + ROM_DN="${ROM%/*}" . . # replace tokens COMMAND="${COMMAND//\%ROM\%/\"$ROM\"}" COMMAND="${COMMAND//\%BASENAME\%/\"$ROM_BN\"}" + COMMAND="${COMMAND//\%DIRNAME\%/\"$ROM_DN\"}"
-
@folly Do you have an example when this is strictly needed and can't be accomplished otherwise ?
-
Take for instance the system Coleco Adam (adam).
Just like the normal colecovision it's using the coleco roms directory.We have the next collections of adam and coleco :
adam_cart.zip
adam_cass.zip
adam_flop.zip
coleco.zipNormally we would use ~/retropie/roms/coleco as rompath in the basename loader command.
Using this means we can't run games from sub-directories.Unzipping all in the root of coleco roms directory we get all files mixed there.
The problem now is that the games of coleco and adam are mixed and also that cartridge, cassette and floppy games are mixed in the root.
The mame adam basename loader is different as that of coleco.
So we need to know what rom with what mame basename loader has to be loaded.The dirname solution would make it possible to sort the games in directories and still use the basename loader.
I don't think there is another good solution for this problem, I can't think of any.
First I was thinking of adding more rompaths to the mame.ini, but in time you get so much rompaths in there and also you have to put all those rompaths in there manually or automatic.
The %DIRNAME% solution would take care of all.I hope I explained it better for you to understand.
-
OK, I see the challenge here, the
adam
system is split in sub-folders undercoleco
.
One solution is to configure an$HOME/.mame/adam.ini
file instead of setting the ROM path on the command line:rompath /home/pi/RetroPie/BIOS/mame/adam;/home/pi/RetroPie/roms/coleco;/home/pi/RetroPie/roms/coleco/adam_flop;/home/pi/RetroPie/roms/coleco/adam_cass;etc.
This works for any system/driver when you don't want to stuff the main
mame.ini
with all the ROM paths. Set the BIOS path tomame/<system>
and add all the ROM folders needed to<system>.ini
.Now, leaving aside the configuration through config files, I can see %DIRNAME% being useful in this context, not sure if this kind of configuration is an exception (since you didn't run into this issue so far) or other similar systems in Mame may benefit from it. I think %BASENAME% has a similar origin, to support Mame's calling convention.
-
Thanks for bringing up the solution of
$HOME/.mame/adam.ini
.If it was for coleco/adam only it was convenient enough.
Downside is still, it has to be created somehow.
I can't directly give you examples on more similar system than with adam and coleco but there are definitely much more.As you know the advantage of the basename loader is that the files are hooked to the mame database, so the loading procedure is more precise, adding sometimes extra hardware, also cheats can be used if available and if we have multiple disks the are also loaded in a better way.
So that's why we wanted the mame basename loaders to work.
But basically we struggled with the mame basename loaders, running the mess systems, for quite a while.
All the time the basename loaders didn't correctly work we just use the predefined media loader lines in order to run the games.I found that in order to run I had to add the systemname and basename to the basename loarder in order to run correctly.
Of-course with the added rompaths to the mame.ini it will work.
Considering we have about 4000 mess systems, so we don't want to add all these rompaths to a mame.ini, it's better to add it in the loader command.
Basically the adam/coleco issue is no exception.
Also, many systems are re-grouped under another name.
Take for instance all msx 20-30 msx types they will all be installed under msx.Well I didn't want to add so much rompaths in a mame.ini.
Here is where the trouble started, when adding 1 rompath to the loader command, it will not load the rompaths from the mame.ini anymore.
So it took me quite some time to figure out, how, and that I to add multiple rompaths to the loader command.
Well, It had to be escaped so it could be added like this :mame-adam-basename = "/opt/retropie/emulators/mame/mame -v -c -rompath /home/pi/RetroPie/BIOS/mame\;/home/pi/RetroPie/roms/coleco adam %BASENAME%"
So now we had some properly working line.
But only running the game-roms if they are in the root of the specific rom directory.Making it like the next one will improve the loading flexibility much more.
mame-adam-basename = "/opt/retropie/emulators/mame/mame -v -c -rompath /home/pi/RetroPie/BIOS/mame\;%DIRNAME% adam %BASENAME%"
I am sure it would be an improvement in the runcommand.sh.
Are you convinced ?
-
@folly said in Development of module-script generator for lr-mess and mame standalone:
But basically we struggled with the mame basename loaders, running the mess systems, for quite a while.
Doesn't
mame
load a ROM/game with arbitrary names, as long as you give it the full path and specify the system ? Or is it just alr-mess
feature ?Are you convinced ?
I already said in my previous reply that I think it would be a useful addition.
-
@mitu said in Development of module-script generator for lr-mess and mame standalone:
Are you convinced ?
I already said in my previous reply that I think it would be a useful addition.
Nice to hear, if I have some time to do so then I will look at making a PR with a proper description.
-
@mitu said in Development of module-script generator for lr-mess and mame standalone:
@folly said in Development of module-script generator for lr-mess and mame standalone:
But basically we struggled with the mame basename loaders, running the mess systems, for quite a while.
Doesn't
mame
load a ROM/game with arbitrary names, as long as you give it the full path and specify the system ? Or is it just alr-mess
feature ?Not sure what you exactly mean.
Some examples would help, if we want to discuss it further. -
@folly said in Development of module-script generator for lr-mess and mame standalone:
Not sure what you exactly mean.
I'm referring to Mame's documentation:
The basic usage, from command line, is
mame.exe <system> <media> <software> <options>
where
- <system> is the short name of the system you want to emulate (e.g. nes, c64, etc.)
- <media> is the switch for the media you want to load (if it's a cartridge, try -cart or -cart1; if it's a floppy disk, try -flop or -flop1; if it's a CD-ROM, try -cdrom)
- <software> is the program / game you want to load (and it can be given either as the fullpath to the file to load, or as the shortname of the file in our software lists)
- <options> is any additional command line option for controllers, video, sound, etc.
-
Thanks for the better explanation.
Yes, indeed that works beautifully with both mame and lr-mess.
-
@folly said in Development of module-script generator for lr-mess and mame standalone:
Yes, indeed that works beautifully with both mame and lr-mess.
If it works, then why would you need to set the
rompath
via CLI/conf for each system? Mame would find the ROM without adding its folder to therompath
. -
I meant it works ok using the normal softwarename, not the shortname.
Indeed, I was to quick with my answer.
I re-read your post again, the bold part referring to the shortname part.
That's indeed something to experiment with. -
-
-
-
I created a "cheap branch" with a commit for the
runcommand.sh
.
This way I can redo the commit easily, if this has to be done.Can you check for me if the commit is good enough for a Pull Request ?
https://github.com/FollyMaddy/RetroPie-Setup/commit/250dab960834ad7fd27fa2f81e77fb6c6708315f
-
@folly The commit looks ok, though I'd use
ROM_DIR
instead ofROM_DN
. -
-
-
-
-
-
I have been quite busy with work and other things in december and januari.
So it can take a while before I get started again with our project.
Hopefully I will have more time soon.Meanwhile I will build up a new image, because my old image recently crashed.
I have made some progress with how to deal with lr-mess and appending options (trying to make it just as flexible as mame).
For that we have to use single-quotes or double-quotes in the runcommand line.
But there are a lot of issues and challenges with lr-mess.
So I hope I can crack them. -
Hiya,
Hope your holidays were good. Mine were spent isolated in a tent with covid... lol. I was in a tent because the house was full with family and I was the only one with it!! Weather was great, so I didn't mind it.
At any rate...
I'm looking to get the ti99/4a running. I have the BIOS file in /BIOS/mame as a zipped file and all the roms in the new file created by your script /roms/ti99_4a
So far it hasn't been recognized as an active system in ES. Do I need additional files placed anywhere?
-
Glad to hear you had good holidays seen the circumstances.
I was only free from work with Christmas and New-years day.
But the 2nd Christmas day was quite special because we had some frost in the night before.
The ice wasn't that thick but I was able to skate on the very small ditches for a few hours ;-)
But they always say, don't skate on one night's ice.
The proverb was correct, I sunk through the ice and had the mud all over me ;-)Looks like we had very different holidays.
(later I will do the ti99_4a part)
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.