RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    Development of module-script generator for lr-mess, lr-mame and mame standalone

    Scheduled Pinned Locked Moved Ideas and Development
    developmentlr-messmamelr-mamescripts
    2.2k Posts 35 Posters 6.0m 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.
    • F
      Folly
      last edited by Folly

      Post 1799 has been reserved for describing and solving the problems/issues when using RPI4/RPI5 in combination with Bookworm/Debian12 and using RetroArch 1.16.x or newer.

      A very small instruction on how to use this :

      This project has evolved in such a way that it's now possible to use a front-end module-script and this is also recommended now.

      Before you begin, you should know that backups are important.
      If you have a good working image then you should not mess with that.
      My advice is to start with a fresh image, if something goes wrong then it doesn't hurt that much and you can start all over again ;-)

      I stopped updating the generate-systems-lr-mess_mame*.sh and the add-mamedev-systems.sh scripts, my advice is not to use them anymore !
      The default script is now mamedev.sh.

      If you are able to paste a file into your /home/pi/RetroPie-Setup/scriptmodules/supplementary then you can simply copy the front-end script into the RetroPie-Setup.

      Just do these few steps :

      • Download this file and extract it :
        https://github.com/FollyMaddy/RetroPie-Share/archive/refs/heads/main.zip

      • Copy 00-scriptmodules-00/supplementary/mamedev.sh to
        ~/RetroPie-Setup/scriptmodules/supplementary/mamedev.sh
        or if you want to separate 3rd party scripts from the original scripts then copy to
        ~/RetroPie-Setup/ext/RetroPie-Share/scriptmodules/supplementary/mamedev.sh

        a quick command to download the file, without even downloading the repository, is to do :

      wget --backups=1 https://raw.githubusercontent.com/FollyMaddy/RetroPie-Share/main/00-scriptmodules-00/supplementary/mamedev.sh -x -nd -np -P ~/RetroPie-Setup/ext/RetroPie-Share/scriptmodules/supplementary
      
      • Be sure there are no other versions of mamedev.sh or the older add-mamedev-systems.sh in the same directory or in the ext directory, remove them !

      • Be sure you don't make this mistake : see link
        (You can skip this part when you never used the ext directory)

      • Run RetroPie-Setup and go to :

        • Configuration / tools
        • mamedev

      Now you can install :

      • lr-mess/mame/lr-mame <-- make sure you do this first, otherwise you can't add systems !
      • lr-mess/mame/lr-mame systems
      • the handhelds by @DTEAM
        link to the handheld and plug & play systems of @DTEAM
        link to the summarise of @bbilford83
        (after installing : go to the download section for the mame-artwork and the lr-mess overlays !)
        • Drivers (needs updating) All in one
        • Drivers (needs updating) Classic (Bambino,Bandai,Coleco,Elektronika,Entex,Epoch,Gakken,Mattel,Tomy,Vtech)
        • Drivers (needs updating) Game and Watch
        • Drivers (needs updating) JAKKS Pacific TV Games
        • Drivers (needs updating) Konami
        • Drivers (needs updating) Tiger
        • Drivers (up to date) Tiger R-Zone
      • special systems with added slot-devices
        (for example : nes_datach,famicom_disksys,famicom_famibs3)
      • Drivers for other systems that are mentioned in the forum
      • download predefined gamelists with added pictures and videos or scrape with scrape gamelists with pictures and videos with RetroScraper-remote
        (used by Emulationstation for displaying the full game names, game pictures and game videos)
      • download mame-artwork
        (to display the emulated screen inside a picture of the handheld/computer you are emulating)
      • create lr-mess overlays from mame-artwork
        (for running the handhelds with the original background pictures in lr-mess)

      Make sure you put the BIOS files in -->> ~/RetroPie/BIOS/mame <<--

      Optionally :
      It's recommended to use the cygnus-blue-flames emulationstation theme.
      This theme supports most mame systems and many categories.
      Once in a while it's updated by @DTEAM and me ( @folly ).
      It can be installed from the original RetroPie-Setup.
      ( configuration -> esthemes -> install DTEAM-1/cygnus-blue-flames and make sure you de-install the default carbon theme )

      EXTRA OPTION (by @DTEAM):
      With the mame BASENAME loader options you will be able to use the hash table
      preset from MAMEdev.org and also the cheats when using a ROM with the appropriate SOFTLIST naming.

      WIP : As a reference, @dmmarti is making a google-sheet with useful information on the tested systems.
      So after you have installed a system you can find the useful notes here :
      https://docs.google.com/spreadsheets/d/1AQ28J9OUKg55R3d-TZkWO3GH50KjC2hHteCP1Bx59Ns/edit?usp=sharing
      And perhaps also over here :
      https://docs.google.com/spreadsheets/d/1mwIjk7TFWoD--7hfiPHCYUxFtIz1yhD8BLtWdQQWwKw/edit?usp=sharing

      12-11-2022 @dmmarti took all of the work done here and in the other related posts and migrated this same logic to a Windows PC based setup.
      So windows users can have a look here for using his project on windows :
      https://github.com/dmmarti/Retroarch_Launcher

      13-12-2022 @eberhab tested the Olivetti m20 and made a thread about this system over here :
      Olivetti M20 thread

      This is a OLD DEMO on how to use the script and install "electron" without extra hardware and with extra hardware :

      Once an install is done you can choose from different runcommands when running a game.
      But what is the difference.
      The lr-runmess runcommand will work but is an en-heritage of the Valerino fork.
      It will create a temporary .cmd file and then load that file with lr-mess and after that it will the erase the .cmd file again.
      If not needed I would not recommend using this runcommand.
      From script version 258.00 creating this runcommand is off by default and can be enabled by installing the run_mess.sh script as a PATCH.

      If your software is in the mame hash table you can use :

      • mame-<driver>-basename (softload with mame standalone)
      • lr-mess-<driver>-basename (softload with lr-mess retroarch libretro core)
      • lr-mame-<driver>-basename (softload with lr-mame retroarch libretro core)

      Make sure your rom file is in roms/<driver_or_category>/<romfile>.
      You can find supported and non-supported software in the hash tables online :
      https://github.com/mamedev/mame/tree/master/hash
      Or on your image :

      • /opt/retropie/emulators/mame/hash (mame)
      • /home/pi/RetroPie/BIOS/mame/hash (lr-mess)

      If your software isn't in the mame hash table you can use, for example :
      (used for non-arcade drivers)

      • mame-<driver>-cart (load cartridge rom-file with mame standalone without sotfloading)
      • lr-mess-<driver>-cart (load cartridge rom-file with lr-mess retroarch libretro core without sotfloading)

      Your rom file can be placed in roms/<driver_or_category>/<romfile> or in a subdirectory roms/<driver_or_category>/<subdir>/<romfile>.

      For some drivers, mostly non-arcade (mess), you can also run different media like :

      • cass (cassette)
      • flop (floppy)
      • cdrm (cd-rom)
        etc.

      Depending on the mame roms and your computer some drivers are slower than others therefor you can select the runcommands with :

      • autoframeskip (skip some display frames automatically to improve the emulation speed)
      • frameskip_10 (skip the maximum 10 display frames to improve the emulation speed)

      Game specific will make separate driver configs for the individual games loaded in lr-mess or mame.
      So you can change controls or video settings for each game individually.
      Mostly used by advanced users or when you learn more about how it works.

      About this project :

      This is the link to my project .
      (beware: the README can be somewhat outdated from time to time !)

      I have created this project while I was busy with the RetroPie-Setup fork from @valerino.
      @valerino made modulescripts for systems running with lr-mess.
      Some systems were not created by @valerino so i created 2 myself.
      While doing that, creating such a script was basically the same everytime.
      This is why I made this script to automate this process.
      In later versions I also added mame and lr-mame.
      It is also possible to create the handhelds used in the handheld tutorial thread of @DTEAM.

      Above is basically the the short explanation of the script.

      This thread is created to share ideas, discuss and improve the script.

      This first post is used to summarize the discovery's and add more information about the project.

      CREDITS :
      This project contains work of :

      • @folly (https://github.com/FollyMaddy)
        ( this script / predefined gamelists / testing )
      • @DTEAM (https://github.com/DTEAM-1)
        ( help / handhelds / predefined gamelists / testing )
      • @kiro (https://github.com/zayamatias)
        ( retroscraper-remote )
      • @valerino (https://github.com/valerino)
        ( initial idea using lr-mess in a better way )
      • @RussellB
        ( improving the Valerino run_mess script )
      • @dmmarti (https://github.com/dmmarti)
        ( useful notes )
      • @JimmyFromTheBay
      • @jamrom2
      • @bbilford83
      • @Orionsangel (Realistic-arcade-overlays)
      • Matt Huisman (https://github.com/matthuisman)
        ( gdrivedl )
      • DarthMarino (handheld artwork : design and layout ) mamedev-forum-link / tigerh-link / konamih-link
      • hap (handheld artwork : design and layout ) mamedev-forum-link
      • Henrik Algestam (handheld artwork : background and case scans )
      • Lee Robson (hydef) (handheld artwork : used elements )

      Global discoveries / issues / fixes / ideas :

      👍 closed : Discovered by @DTEAM / Fixed by @folly / (game roms directory is not changed in this fix !) :
      Amiga CD32 system name in mame commandlines are not correct. 96
      The problem should be solved now for amiga and other systems. [97](/forum/post/254869

      👍 closed : Discovered by @folly / Fixed by @folly :
      In the script generator I used the path /home/pi many times.
      But if you use RetroPie with a different user this will conflict.
      So I converted /home/pi/ into $HOME/.

      👍 closed : Tested by @DTEAM / Fixed by @folly / Fix tested by @DTEAM ( it should work with a good mess game rom set ):
      (I hope this is a good solution and that there are no conflicts )
      Cheats for lr-mess in MAME UI (with hash files) work with mame_cheats_enable = "enabled" in custom-core-options.cfg. 22 etc.
      I have updated the script so the `install-<system>-cmd module-script will add mame_cheats_enable = "enabled" in retroarch-core-options.cfg when installing in RetroPie-setup.
      (09-12-2021) Fix/Restore : downloading the cheats to the correct cheatpath 917

      👍 closed : Noted by @DTEAM / Fixed by @folly / tested by @folly, @DTEAM :
      Get cheats working for MAME in MAME UI (with hash files).
      Added : 51 52
      (09-12-2021) Fix : downloading the cheats to the correct cheatpath 913 917

      👍 closed : Discovered by @DTEAM / Fixed by @folly :
      (early fix, not perfect as it uses the wrong variable) This command will work for gamate, so added these addEmulator lines in generate-systems-lr-mess_mame-1v8-alpha.sh and renamed the old ones to *-test :
      addEmulator 0 "mame-basename" "$_system" "/opt/retropie/emulators/mame/mame -v -c ${newsystems[$index]} %BASENAME%"
      addEmulator 0 "mame-basename-autoframeskip" "$_system" "/opt/retropie/emulators/mame/mame -v -c -autoframeskip ${newsystems[$index]} %BASENAME%"
      (22-02-2021) Turned off the *-test commands. 33
      (28-05-2021) Removed the test lines in version 2v2
      👍 closed : Discovered by @DTEAM :
      (not really solved, some tests were done) C64 and Atari Jaguar not working with mame basename (Hash file). 12
      Basically this comes down to the mame-basename commands.
      I Think we can only use mame basename lines for systems without media and where we have added the rompath in the commandline.
      If other lines work also, like mame-cmd, we could consider to remove the mame-baseline commands. I did some tests. 108
      Second test with mame and supracan works 317
      (solved, very good improvement) (09-12-20121) Here we found, implemented and tested a universal solution, basically adding multiple rompaths in the mame runcommands 901 - 916
      (solved, almost perfect) (12-12-20121) add system-name to the basename runcommand description lines in version 0238.
      For example, coleco and adam are both installed as coleco.
      With adding the system-name, more systems can benefit from the basename line, when installed under the same RetroPie-name. 920
      (only problem is that the games have to be in the root of the systems rompath in order to work)

      👉 open : Discovered by @folly :
      (12-12-20121) When using the the last basename options of above fix we still have one issue to solve.
      The problem is that the games have to be in the root of the systems rompath in order to work with the basename options.
      If using more systems we are not be able to separate the specific files from each other when placing them in different subdirectories.
      A solution could be to add %DIRNAME% to the runcommand-line but that solution doesn't exist. 920

      👍 closed : Discovered by @folly :
      Coleco wants the bios in /home/pi/RetroPie/roms/coleco/coleco.zip, test again. 60
      (12-12-2021) Issue was probably due to not having both rompaths in mame.ini or a combination with a not having a perfect basename loader option.
      You can read these posts to understand the issue. 901 - 916
      Tested this again with the latest basename loader option in 0237, should be ok now

      👉 open : Discovered by @folly :
      Someone else is also busy with handhelds.
      Something to check, I think :
      https://retropie.org.uk/forum/topic/30155/lcd-handhelds-mame-0-229-dat

      👍/👉 wip : by @folly :
      Improving recognition of mame descriptions and conversion of mamedev system naming to RetroPie naming, adding :
      Amiga CD32 -> cd32
      Archimedes -> archimedes
      Acorn A -> archimedes
      Bally Professional Arcade -> astrocde
      BBC A -> archimedes
      BBC Micro -> bbcmicro
      BBC Master -> bbcmicro
      Dragon 64 -> dragon64
      Dragon 64 -> dragon64
      MSX2 -> msx2
      MSX2+ -> msx2+
      MSX Turbo-R -> msxturbor
      ST (xx) -> atarist
      STE (xx) -> atarist
      MEGA STE (xx) -> atarist

      👍 closed : Discovered by @DTEAM / Fixed by @folly / (UI button does not always work, depending on the system !) :
      It would be nice if we could always use the UI-button/TAB when we are in mame / lr-mess.
      We can do this by adding -ui_active to the mame / lr-mess lines.
      That way it's always on.

      • @folly added -ui_active in the scripts 284
      • Tests show that it's working ok now

      👉 wip : Idea by @dmmarti
      Create a reference sheet with useful information on tested systems 471

      The idea of making a frond-end script :

      👉 wip : By @valerino (initial idea) / @folly (ideas/creating script) / @DTEAM (ideas/googledrive_media/testing) :
      Create a front-end module-script in RetroPie-setup for our scripts.

      • (used) Structure/plan 129 --> 136
      • (used) Schematic menu structure something like this 207
      • (done) Add a menu in RetroPie-setup using the dialog api 120
      • (done, using or creating a csv structure for every menu page) Try to use 1 existing array for the menu 125
      • (not added, but you can install mame and lr-mess from the menu) Dependencies check
      • (ok) Possibility to push the generated scripts in the normal /home/pi/RetroPie-Setup/scriptmodules/ directory ?
      • (ok) Push the generated scripts in /home/pi/RetroPie-Setup/ext/RetroPie-Share/scriptmodules/ ?
      • (ok) What about refreshing RetroPie-setup ?
        We want to install the generated module-script directly after generation ?
        We could use retropie_packages.sh for this purpose.136
      • (ok) Add download part to download, for example, gamelists, images and videos etc.
      • (possible to do manually or with a curl line or using module-script add-ext-repos.sh, but noting is included in the script though)
        Download the repository in /home/pi/RetroPie-Setup/ext/RetroPie-Share or try to run the scripts online 140 ?
      • (now that we can be copy the updated generator-script into the frond-end as a function this part is not relevant here anymore)
        Try to keep multiple emulator/lr-cores in 1 generated script module 125
      • (done) Show correctly sorted systems and descriptions in the sub-menus 290(issue) 470(fix)
      • (re-done in version test7 and version test8) Adding a submenu to install our selection of systems, described from here 524 and here link_xls_@dmmarti
      • (done in version test8) Adding a submenu to install systems with slotdevices.
        In the links you can find some examples 547,548,diff_thread_2
      • (done in version 0237) Add help-button in the menu 884
      • (wip from version 0238) Add help text for help-menu (shows up when the help-button is pressed) 897 914 -919 923
      • (done in version 0240) link_to_commit
      • (done) Separate Arcade from the rest 411
      • (--) Update mess doc when front-end module-script works 161

      Issues regarding front-end :

      • We discovered an issue with mame 430
        Temporary fix : the front-end script makes now use of our own database

      • We discovered an issue with downloading updated artwork files from google-drive. 588
        First fix : the fix is added in Matt's gdrivedl script => issue_19_fix
        and the option -m is added to our script. -> commit
        Second fix : the fix is added in Matt's gdrivedl script => issue_22_fix

      The ideas of downloading stuff and creating overlays :

      👍 closed : By @DTEAM @folly / get-cheats-artwork-overlays.sh does this trick for now / tested ok by @folly and @DTEAM :
      ( Implemented in the front-end module script )
      It would be nice if we could find a good way of automatically installing cheats, artwork, retroarch-overlays, gamelists and themes from within the module-scripts or some other way. 37 etc ---->41
      It doesn't work properly with above solutions.
      Edit : The first solution can be tested again, Matt has altered his code with my suggestions. (tested ok @folly) 63
      It seems we have a solution now. 46

      =>Add cheat file to the get script :

      • @DTEAM shared the link
      • @folly added the download part

      =>Add artwork to the get script :

      • @DTEAM shared the link
      • @folly added the download part
      • @folly added the background extraction part for lr-mess overlays 50
      • @DTEAM converted some artwork so the background extraction works 53
      • @folly added the config creation part for lr-mess overlays

      =>Add gamelists files to the get script :

      • @DTEAM shared the link
      • @folly added .7z an .zip compatibility in the gamelists 81 (link used script)
      • @folly added the download part

      =>Add theme files to the get script :
      Not done yet.

      The ideas in generate-systems-lr-mess_mame.sh version 2v1 or earlier :

      👍 closed : By @folly / fixed by @folly in 2v0 (see commit) / tested ok @folly :
      Instead of downloading the scripts, running bash scripts online could be a nice solution for the future and/or to add into the menu.
      Here it is used with the get-cheats-artwork-overlays.sh script. 66
      For the generator script I also tried this, including a solution to add the option string :
      Note : it sees the option string but the program has a grep failure, perhaps this can be solved in the future.
      Edit : OK after commit

      curl https://raw.githubusercontent.com/FollyMaddy/RetroPie-Share/main/00-scripts-00/backup/generate-systems-lr-mess_mame-2v0-alpha.sh | bash -s kgradius
      

      👍 closed : By @folly / fixed by @folly in 2v0 (see commit) / tested ok @folly :
      When you run the generate-systems-lr-mess_mame-2v0-alpha.sh it will install the @valerino run_mess.sh script if not detected.

      👍 closed : By @RussellB / Improve the run_mess.sh script / added by @folly / tested by @folly, @DTEAM and @RussellB :
      This allows us to specify custom configs, including bezels and screen locations, etc. per rom.
      Here you can read what the run_mess.sh script does 273 .

      • @RussellB added the idea 246
      • @folly tested this idea 250
      • @folly added it to github and in the scripts 267
      • @folly and @DTEAM tested the generator scripts on general issues
      • @RussellB tested it with configs and bezels 280

      The ideas in generate-systems-lr-mess_mame.sh version 2v2 or above :

      👍 closed : By @folly / added by @folly in 2v2 / tested by @folly :
      Add translation "ai" lines to retroarch.cfg when installing a module-script :

      • Using hotkey "t" will translate the picture and pause the screen and translate
      • Press "t" again to resume the game.
      • You might want to make a save-state before translating, if you experience a crash while translating.

      👍 closed : By @folly / added by @folly in 2v2 / tested by @folly :
      Add cheats to the correct mame.ini when installing a module-script :

      • version 2v1 added this in the wrong mame.ini
      • version 2v2 should be ok now

      👍 closed : Idea by @JimmyFromTheBay / added by @folly in 2v2 / tested by @folly :
      Create game specific lr-mess and mame config files so we have input configs per game thread
      This is done by adding game-specific-config runcommand lines in the emulators.cfg when installing a module-script :

      • if you load a game with the line containing "game-specific" then game-unique sub-directories are made with mame/lr-mess config files
      • now it's possible to change the input per game in the mame-UI or lr-mess-UI
      • to prevent conflicts between mame and lr-mess each get their own sub-directory , that way they don't use the same config files
      • config files for mame are save in /opt/retropie/configs/<RETROPIE-SYSTEM>/mame/<GAME>/<MAME-SYSTEM>.cfg
      • config files for lr-mess are save in /opt/retropie/configs/<RETROPIE-SYSTEM>/lr-mess/<GAME>/<MAME-SYSTEM>.cfg

      👍 closed : By @folly / added by @folly in 2v2 / tested by @folly :
      Because more starter lines are being added in the emulators.cfg's it can get bit of a mess.
      Therefor it would be nice if the starter lines in the emulators.cfg's could be sorted.
      Sorting the content of an emulators.cfg should be done after new lines have been added.
      The generator script will add the sorting part in the generated module-scripts.
      When these module-scripts are installed, sorting of the specific emulators.cfg will then take place. 332

      The ideas in generate-systems-lr-mess_mame.sh version 2v3 or above :

      👍 closed : By @folly / added by @folly in 2v3 / tested by @folly :
      Add the possibility to install systems with slotdevices and manual detected slotdevice configurations.
      In the links you can find some examples of systems 547 548 diff_thread_2
      If you want to install similar systems with this script then you have to make your own command.
      The structure is as follows :
      $1=system $2=RPsystemName $3=ExtraPredefinedDevice(s) $4=mediadescription $5=media $6=extension(s)
      $3 and $6 can take multiple options seperated by a *
      Look for example lines in generate-desired-systems.sh .

      👍 closed : By @folly / added by @folly in 2v3 / tested by @folly :
      Prevent creating the same cmd module-scripts every time.
      If a system has more media then it has more values of the same system in the array.
      That is why it normally would create more cmd module-scripts.
      To prevent this from happening, we have to use an if function to be sure it is only generated and installed once per system.
      The if function will check if the last created system is not equal to the next system in the array.
      It will speed up increasingly, now that it doesn't do the same multiple times.
      *installing only happens from within the front-end module-script
      link_to_commit_=>_lines_591-597

      👍 closed : (low priority) :** By @folly :
      The help in the created module-scripts are automatically created and not always correct.
      It would be nice if we could add a database file that can be read during generating.
      So when good information is available it could use that instead of the automatically created help.
      Edit :
      Perhaps this mame command can help to improve the help sections :
      /opt/retropie/emulators/mame/mame -listroms <system>
      Solution:
      Most people, who are using this, know which bios files they have to use.
      Therefor I didn't add more info to the help but I removed specific bios information from the help in 2v3.
      This way no incorrect information is given anymore.
      To get solutions, users can always check the /dev/runcommand.log if something isn't working.

      ⚠ closed (low priority) : By @DTEAM / @folly :
      (Closed because of too much effort versus gain, I am quite happy how it works in 2v3)
      Join all media/cmd command lines of 1 system into 1 generated script 101 102 107

      👉 open : By @folly :
      Improving the naming of the runcommand-lines to a more understandable standard.

      👍 closed : By @hhtien1408 / @folly :
      Add support for lr-mame 327 --> 329
      ( Has been added )

      Good to know :

      By @folly :
      Because mame is also added as emulator and because mame is using a different BIOS directory, $HOME/RetroPie/BIOS/mame ,
      the lr-mess command is changed to use the same BIOS directory.

      By @folly :
      lr-mess doesn't load roms if mame artwork is present in :
      /home/pi/RetroPie/BIOS/mame/artwork

      By @folly / @DTEAM :
      When there are multiple config/ini which one is used ? :

      • mame.ini --> opt/retropie/configs/mame/mame.ini 364

      By @folly :
      Here we can find autoboot lines :
      https://forums.launchbox-app.com/topic/54987-autoboot-command-script-for-mame-swl-computer-systems/
      More load commands for a few systems :
      http://www.ankman.de/load_cassette_tape_8bit_computers.html

      By @folly :
      Create mame artwork without tearing lines 1963

      MAME links :

      • whats new in mame
      • commandline options
      • default keys
      • cheats (mamecheat)
      • mame binaries (my gdrive)
      • lr-mame binaries (my drive)
      • lr-mess binaries (my drive)
      • mame binaries (stickfreaks) and how to install manually

      Other topics here and on other websites :

      Electron : load a predefined bios with plus3 slotdevice -> link
      MSX2 : basename load problem -> link
      90 degrees orientated games -> link
      Atari Portfolio -> link
      Cashflow-126 coin acceptor to RPI gpio pins guide -> link
      Syncing button leds with gameplay -> link

      DTEAMD S S 3 Replies Last reply Reply Quote 9
      • F
        Folly
        last edited by Folly

        @DTEAM

        It took me quite some time but it seems I have a working generator script.
        I tried to improve the file names and the names given to the commands.
        I also added quite some explaining in the script on how the script works.
        I still have to look out for some mistakes and I hope it still works on a fresh install.

        What it should do now is :

        • create module-scripts that work with an original RetroPie-setup (for lr-mess only the run_mess.sh from valerino is needed)
        • add all mame commands
        • add the rompaths in the commandlines (for now it was too difficult to add them in mame.ini)
        • use this BIOS directory for both lr-mess and mame : /home/pi/RetroPie/BIOS/mame
        • fix description in generated cmd module-script
        • saving generated files directly in RetroPie-setup

        This is the script so feel free to experiment :
        https://github.com/FollyMaddy/RetroPie-Share/blob/main/00-scripts-00/generate-systems-lr-mess_mame-1v8-alpha.sh

        1 Reply Last reply Reply Quote 0
        • F
          Folly
          last edited by Folly

          @dteam said in Tutorial: Handheld and Plug & Play systems with MAME:

          @folly said in Tutorial: Handheld and Plug & Play systems with MAME:

          EDIT :
          There still seems to be an issue with artwork.
          lr-mess doesn't load roms if mame artwork is present in :
          /home/pi/RetroPie/BIOS/mame/artwork
          Both emulators seem to share the same directory structure.

          Normally, games run and lr-Mess loads Artworks if you are able to go in the MAME UI menu with lr-mame and select Artwork. For some reason, I'm able to go in MAME UI when I press (select and Y) and in Retroarch UI with (select and X). With Lr-mess, you have access to Retroarch artwork and mess artwork. Maybe the problem is there?

          I'm gonna try generate-systems-lr-mess_mame-1v8-alpha.sh tomorrow. What do you prefer that I test. Handheld games above, lr-Mess systems like Vectrex, NES, Artworks?

          @dteam

          Yes, it would be nice if you could test handhelds with mame and artwork.
          Can you then try if the handheld games also run with lr-mess ?

          Also testing some lr-mess systems using media would be great.
          As you said vextrex and nes will do for now.

          I like to hear what you think of the file/module naming and the commands that are being added in the emulators.cfg.
          Perhaps we can improve it somehow if we have better ideas.

          I added the version in the desired script and above systems are uncommented.
          So if you run the desired script it will generate those directly.

          The goal is to get it running with an original RetroPie-setup and that it is backwards compatible with the Valerino fork. (edit)
          Can you try with the original setup ?
          With the next command you only download the valerino run_mess.sh in the correct place :

          wget -nv -O /home/pi/RetroPie-Setup/scriptmodules/run_mess.sh https://raw.githubusercontent.com/valerino/RetroPie-Setup/master/scriptmodules/run_mess.sh
          
          

          run_mess.sh is only used if running games with lr-mess that use the -<media> option.

          DTEAMD 1 Reply Last reply Reply Quote 0
          • DTEAMD
            DTEAM @Folly
            last edited by

            @folly
            To do that, I'm gonna start from a fresh build.

            F 1 Reply Last reply Reply Quote 0
            • F
              Folly @DTEAM
              last edited by Folly

              @dteam said in Development of module-script generator for lr-mess and mame standalone:

              @folly
              To do that, I'm gonna start from a fresh build.

              I will do the same.

              I just did some fixes (16-02-2021 17:00) :

              • fix description in generated cmd module-script
              • saving generated files directly in RetroPie-setup
                • it doesn't matter where you run it from
              1 Reply Last reply Reply Quote 0
              • F
                Folly
                last edited by Folly

                This is what I have done so far :

                • used updated fresh raspberry pi os buster on rpi-4
                • installed original RetroPie-setup
                  • version 4.7.8
                • installed the valerino run_mess.sh script
                • used the generate-desired-systems.sh to generate the modulescripts directly in the RetroPie-setup
                  • generate-systems-lr-mess_mame-1v8-alpha.sh is used in the desired script
                • installed all scripts in the RetroPie-setup
                • tested 2 all_in1 games they worked with both lr-mess-cmd and mame-cmd
                • tested 1 konamih game and it worked with both lr-mess-cmd and mame-cmd-autoframeskipping
                  • the standard mame directory's for artwork, cheat, etc. are in : /home/pi/RetroPie/roms/mame , so I used this artwork directory and placed the kgradius.zip (artwork file) in /home/pi/RetroPie/roms/mame/artwork
                  • I used my script generate-overlay-configs.sh to generate overlay config files and placed the background.png as kgradius.png in /home/pi/RetroPie/overlays/konamih/
                  • I could switch between mame+artwork and lr-mess+overlay with no problem.

                mame (+artwork+) vs lr-mess (+fullscreen+)
                (a while ago we tested artwork with lr-mess, lr-mess becomes really slow with artwork, autoframeskipping seems to work but the effect is not optimal) (adding autoframeskipping in the lr-mess command seems to be not working)(every emulator has it's own quality)

                2021-02-16-180316_800x600_scrot-resized.png 2021-02-16-180405_800x600_scrot-resized.png

                • copied the mame/mess BIOS files in /home/pi/RetroPie/BIOS/mame
                • tested a nes game and it worked with both lr-mess-system-nes-cart and mame-system-nes-cart (used no artwork for mame)

                mame vs lr-mess (lr-mess is sharper)
                2021-02-16-203329_800x600_scrot-resized.png 2021-02-16-203214_800x600_scrot-resized.png

                • tested a vectrex game and tested if the overlay would work with lr-mess just like it does with lr-vecx using mame hash naming for the game spike worked with lr-mess-cmdand overlay. lr-mess-system-vectrex-cart worked but without overlay.
                  • lr-mess-system-vectrex-cart runs trough the valerino run_mess.sh that is why I think the overlay is not added !
                  • lr-mess-system-vectrex-cart works but I did not test with artwork/overlay, but I think this can work !

                lr-vecx vs lr-mess-cmd vs lr-mess-system-vectrex-cart
                (lr-vecx looks great and has bright vector lines but speech synthesizer doesn't work yet)
                (speech synthesizer works with lr-mess and display is ok but vector lines flicker a bit)

                2021-02-16-204802_800x600_scrot-resized.png 2021-02-16-205508_800x600_scrot-resized.png 2021-02-16-205622_800x600_scrot-resized.png

                DTEAMD 2 Replies Last reply Reply Quote 1
                • DTEAMD
                  DTEAM @Folly
                  last edited by

                  @folly
                  I'm setting up a new SD card on a old Pi3 b+(not that old !!). I'll do tests on a Pi3.

                  DTEAMD 1 Reply Last reply Reply Quote 1
                  • DTEAMD
                    DTEAM @DTEAM
                    last edited by DTEAM

                    @dteam
                    In the new 4.7.8, they install Lr-mess for all systems by default if you install lr-mess. It's the setup for Hash files. Am I right?

                    F 1 Reply Last reply Reply Quote 0
                    • F
                      Folly @DTEAM
                      last edited by Folly

                      @dteam said in Development of module-script generator for lr-mess and mame standalone:

                      @dteam
                      In the new 4.7.8, they install Lr-mess for all systems by default if you install lr-mess. It's the setup for Hash files. Am I right?

                      I checked some logs, the hash files are installed with mame and not with lr-mess.
                      But I think lr-mess uses the hash files when mame is installed.

                      In the install log of lr-mess I found this error :
                      cp: cannot stat '/home/pi/RetroPie-Setup/tmp/build/lr-mess/hash': No such file or directory
                      Here it tries to copy the hash files but there are no files to copy.

                      I checked the module-script lr-mess.
                      It will only add for these systems (adding a similar command just like the lr-mess-cmd) :
                      nes gb coleco arcadia crvision

                      DTEAMD 1 Reply Last reply Reply Quote 0
                      • DTEAMD
                        DTEAM @Folly
                        last edited by

                        @folly
                        I agree, I saw the same thing. It's for some systems only. It's a step forward !

                        DTEAMD 1 Reply Last reply Reply Quote 0
                        • DTEAMD
                          DTEAM @DTEAM
                          last edited by DTEAM

                          @folly
                          This is what I gonna try today

                          bash $version vectrex
                          bash $version nes
                          bash $version coleco
                          bash $version jaguar
                          bash $version gamate
                          bash $version cdimono1
                          bash $version fmtmarty
                          bash $version scv
                          bash $version c64_cart c64

                          bash $version ablmini # creates cmd script for all_in1 # bootable
                          bash $version alnattck # creates cmd script for classich # bootable
                          bash $version gnw_ball # creates cmd script for gameandwatch # bootable
                          bash $version jak_batm # creates cmd script for jakks # bootable
                          bash $version kgradius # creates cmd script for konamih # bootable
                          bash $version taddams # creates cmd script for tigerh # bootable
                          bash $version rzbatfor # creates cmd script for tigerrz # bootable

                          bash $version hbf700p # bootable # HB-F700P / Sony (MSX2)

                          1 Reply Last reply Reply Quote 0
                          • DTEAMD
                            DTEAM @Folly
                            last edited by DTEAM

                            @folly said in Development of module-script generator for lr-mess and mame standalone:

                            I used my script generate-overlay-configs.sh to generate overlay config files and placed the background.png as kgradius.png in /home/pi/RetroPie/overlays/konamih/

                            Have you created a subfolder per games? Did you unzip the mame artwork file to extract the backgroud? For me, the easiest way to manage Artwork is with MAME UI (Select+Y), but It's great to have both options, especialy with your overlay configs generator. Good way to convert MAME artworks to retroarch.

                            Every systems working fine excepted C64. For system like FM Marty, you have 15 choices. It's realy nice to see all that.

                            The MAME Basename option never worked for me as it currently is.

                            It works if I replace (ex.: gamate) :

                            mame-basename = "/opt/retropie/emulators/mame/mame -rompath /home/pi/RetroPie/roms/gamate -v -c %BASENAME%"
                            

                            By

                            mame-basename = "/opt/retropie/emulators/mame/mame -v -c gamate %BASENAME%"
                            

                            The hash file folder for the lr-mess should be the same as the one for MAME, but I don't know if you can do that.

                            /opt/retropie/emulators/mame/hash
                            

                            It's because MAME generates it automatically during installation and updates. I am aware that if the user is only using lr-mess then there might be some issues but it avoids file duplication and the Hash files will be always updated.

                            Some MAME Basenames will never worked (like Jaguar), because we are using the names from Retropie (atarijaguar) , but I think It's a good choice to keep Retropie naming .... nothing is perfect!

                            Great job !!

                            F 1 Reply Last reply Reply Quote 0
                            • F
                              Folly @DTEAM
                              last edited by Folly

                              @dteam 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:

                              I used my script generate-overlay-configs.sh to generate overlay config files and placed the background.png as kgradius.png in /home/pi/RetroPie/overlays/konamih/

                              Have you created a subfolder per games?

                              The script creates the overlays directory and subfolders in ovelays directory (konamih, tigerh, etc).
                              There are no subfolders per game created in, for example, directory konamih.

                              Did you unzip the mame artwork file to extract the backgroud?

                              Yes I did, this background is then renamed and used as retroarch overlay with lr-mess.
                              For MAME standalone I left the artwork zipped in /home/pi/RetroPie/roms/mame/artwork/<artwork>.zip.

                              For me, the easiest way to manage Artwork is with MAME UI (Select+Y)

                              What do you manage ?, In this way artwork is automatically loaded with MAME standalone.

                              but It's great to have both options, especialy with your overlay configs generator. Good way to convert MAME artworks to retroarch.

                              Indeed, I think so too, but it can have some improvement.
                              And it would be nice if the picture were automatically installed too.
                              I have to think about that.

                              Every systems working fine excepted C64. For system like FM Marty, you have 15 choices. It's realy nice to see all that.

                              The MAME Basename option never worked for me as it currently is.

                              It works if I replace (ex.: gamate) :

                              mame-basename = "/opt/retropie/emulators/mame/mame -rompath /home/pi/RetroPie/roms/gamate -v -c %BASENAME%"
                              

                              By

                              mame-basename = "/opt/retropie/emulators/mame/mame -v -c gamate %BASENAME%"
                              

                              We can try to change that to improve, agree ?

                              The hash file folder for the lr-mess should be the same as the one for MAME, but I don't know if you can do that.

                              /opt/retropie/emulators/mame/hash
                              

                              It's because MAME generates it automatically during installation and updates. I am aware that if the user is only using lr-mess then there might be some issues but it avoids file duplication and the Hash files will be always updated.

                              I am not sure yet how the hash tables are used by lr-mess.
                              On my old install there was a mess.ini somewhere.
                              On my new install I couldn't find one.
                              So it will have to wait until we discover how this works.

                              Some MAME Basenames will never worked (like Jaguar), because we are using the names from Retropie (atarijaguar) , but I think It's a good choice to keep Retropie naming .... nothing is perfect!

                              Can you try adding a subdirectory jaguar inside atarijaguar like this :
                              /home/pi/RetroPie/roms/atarijaguar/ jaguar

                              Great job !!

                              Thanks !

                              BTW. Did you try cheats ?
                              Don't know if it works.

                              DTEAMD 2 Replies Last reply Reply Quote 0
                              • DTEAMD
                                DTEAM @Folly
                                last edited by DTEAM

                                @folly

                                I'm not able to run lr-mess-basename (doesn't work with coleco and gamate). But with coleco, lr-mess from Retropie works with BIOS in
                                /home/pi/RetroPie/roms

                                and hash files in /home/pi/RetroPie/BIOS/mame/hash

                                working

                                lr-mess = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-mess/mess_libretro.so --config /opt/retropie/configs/coleco/retroarch.cfg %ROM%"
                                

                                not working

                                lr-mess-basename = "/opt/retropie/emulators/retroarch/bin/retroarch --config /opt/retropie/configs/coleco/retroarch.cfg -v -L /opt/retropie/libretrocores/lr-mess/mess_libretro.so %BASENAME%"
                                

                                For MAME cheat code, you need to run the games with the Hash files and follow the procedure here: (SOLVED) MAME "standalone" Cheats for systems like Coleco, Arcade and more.

                                Re-edit

                                In Retroarch (lr-mess), cheatcodes from retroarch load but not working for now
                                /opt/retropie/configs/all/retroarch/cheats

                                1 Reply Last reply Reply Quote 0
                                • F
                                  Folly
                                  last edited by Folly

                                  @DTEAM

                                  I added your suggestion about :

                                  mame-basename = "/opt/retropie/emulators/mame/mame -v -c gamate %BASENAME%"
                                  

                                  I have updated the script so this can/will be generated.
                                  Kept the old commands also in for testing, perhaps they have to be deleted.

                                  1 Reply Last reply Reply Quote 0
                                  • F
                                    Folly
                                    last edited by Folly

                                    @DTEAM

                                    So I understand it works oob in lr-mess if you add the cheats in :
                                    /opt/retropie/configs/all/retroarch/cheats

                                    About the cheats in MAME standalone.
                                    I was aware of the thread and that it can work.
                                    But does it work out of the box with my module-script or do we still have to add something in the mame.ini ?

                                    DTEAMD 1 Reply Last reply Reply Quote 0
                                    • DTEAMD
                                      DTEAM @Folly
                                      last edited by DTEAM

                                      @folly
                                      Not for now, cheats from retroarch load but not working for now. I'm gonna do some tests. For your script with MAME, I have to do some test for cheatcodes before.

                                      1 Reply Last reply Reply Quote 1
                                      • F
                                        Folly
                                        last edited by

                                        @DTEAM

                                        For the lr-mess-basename command.
                                        I don't have an idea about this yet.
                                        Future work I presume.

                                        1 Reply Last reply Reply Quote 0
                                        • DTEAMD
                                          DTEAM @Folly
                                          last edited by

                                          @folly said in Development of module-script generator for lr-mess and mame standalone:

                                          By @DTEAM, C64 and Atari Jaguar not working ( https://retropie.org.uk/forum/topic/29682/development-of-module-script-generator-for-lr-mess-and-mame-standalone/12 )

                                          Only for basename (Hash file)

                                          1 Reply Last reply Reply Quote 0
                                          • DTEAMD
                                            DTEAM @Folly
                                            last edited by

                                            @folly said in Development of module-script generator for lr-mess and mame standalone:

                                            Every systems working fine excepted C64. For system like FM Marty, you have 15 choices. It's realy nice to see all that.
                                            The MAME Basename option never worked for me as it currently is.
                                            It works if I replace (ex.: gamate) :
                                            mame-basename = "/opt/retropie/emulators/mame/mame -rompath /home/pi/RetroPie/roms/gamate -v -c %BASENAME%"

                                            By
                                            mame-basename = "/opt/retropie/emulators/mame/mame -v -c gamate %BASENAME%"

                                            We can try to change that to improve, agree ?

                                            yes

                                            F 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.