Jump to content
LaunchBox Community Forums

MAME Software Lists Import Tool - plugin


Recommended Posts

I want to import the AES full romset.

I got mame 0.234, the neogeo full romset folder inside mame software list 0.234 (merged) from pleasuredome, neogeo.zip (bios) inside mame 0.234 (bios-devices) from pleasuredome. I only want to import the AES full romset.

I add the files to the LB plugin folder (they don't have mess234.xml yet so i choose the newest one):

1.thumb.png.86fa387bf8111f32691db7c06c0844db.png

Press shrinkmess , press backup and shrink, edit mame.ini rompath:

rompath                   "roms;D:\Roms\MAME 0.234 ROMs (merged);D:\Roms\MAME 0.232 CHDs (merged);D:\Roms\MAME 0.234 Software List ROMs (merged);D:\Roms\MAME 0.234 ROMs (bios-devices)",

open LB, tools, import mame SL 4.03v, press next for "mame64/hash",

2.thumb.png.8cc86853fca1ef5ed295643d62665d2d.png

Add new platform "SNK Neo Geo AES", select mame, 

3.thumb.png.cc476d2bb5f2161106fd86b2bbaec864.png

4.thumb.png.f2a4f25c59a5237e124580fd93dc99e1.png

5.thumb.png.069314328e2397a3b709db3da420f322.png

Says missing for all games..., i press import only and exit.

The games won't run, how to fix? 

LB mame settings:

6.thumb.png.6dff98c60a48616e7354522d435886ee.png

7.thumb.png.902abafae6b8a90af4a7985ae9b86896.png

Link to comment
Share on other sites

28 minutes ago, vgbox said:

Says missing for all games

In your Platform "SNK Neo Geo AES", how many games does LaunchBox show that you have?  159?

You can't click "Audit" right after doing the import process.  Well, you "can". But it won't work properly [yet].  If you open the SWL Importer again, select the neogeo.xml hash file, select your "SNK Neo Geo AES" Platform, then skip to the last page and click "Audit", you should now see 114 Missing (the 114 clones you didn't import).

1 hour ago, vgbox said:

The games won't run, how to fix? 

Change the Default Command-Line Parameters to     neogeo -cart1    (just add a "1" [one] to the end of cart)

 

[a side note]  When Importing, you selected "D:\Roms\MAME 0.234 Software List ROMs (merged)" as your Destination folder.  So right now, if you edit one of your games in LB, the Launching tab is going to show the rom location as "D:\Roms\MAME 0.234 Software List ROMs (merged)\3countb.zip".  Instead of "D:\Roms\MAME 0.234 Software List ROMs (merged)\neogeo\3countb.zip".  Since you did an Import only (vs copy & import) AND your MAME emulator is properly setup to send only the filename and not the full path, this will work as is.  So you don't need to change anything with that.  Just make note for future reference. :)   Oh, and add the "1" to "cart" ;) 

  • Thanks 1
Link to comment
Share on other sites

@JoeViking245

in LB games window it shows 159.

In audit it shows now total missing: 114.

Added the 1.

I still don't understand the logic of LB showing "D:\Roms\MAME 0.234 Software List ROMs (merged)\3countb.zip" in game edit when there is no such file in that location. 

Anyway, now the games launch but in their MVS form and with cracking sound. what is next? Also, i would like mame to favor usa/europe region when loading a game if possible.

Thanks for making this plugin. 

 

Edited by vgbox
Link to comment
Share on other sites

6 minutes ago, vgbox said:

the logic

In your MAME emulator settings [in LaunchBox] you have "Don't use quotes..." and "Use file name Only..." checked.  This in turn tells LB to send only the games filename to the emulators command line.  So, in the rom path "D:\Roms\MAME 0.234 Software List ROMs (merged)\3countb.zip", LB will only look at and grab "3countb".  Nothing more. Nothing less.  When you launch 3 Count Bout from LB, it sends the command

"D:\Emulators\Mame64\mame.exe" -keyboardprovider dinput neogeo -cart1 3countb

Since you did your due diligence in setting up your mame.ini file, MAME see's that your launching the softlist "neogeo" and knows to look into the 5 directories listed in the ini file, for a subfolder named "neogeo".  And in that subfolder, it looks for 3countb[.zip].

 

28 minutes ago, vgbox said:

Anyway, now the games launch but in their MVS form and with cracking sound. what is next?

Glad they're launching for you now!  As for the rest, I personally have no idea.  Try searching the web or forums as it's more of a MAME issue.  It's probably something really simple. I'm just happy to have gotten you this far. :D  [a quick search just showed that MAME's neogeo bios is the "Neo-Geo MV-6F". a.k.a. "Neo-Geo MVS"... if that helps any]

 

39 minutes ago, vgbox said:

i would like mame to favor usa/europe region when loading a game if possible.

Since you didn't import any clones, you should only have the original (Parent) version of each game.  Whichever region that may be. 

The MAME softlist hash files, in general, don't make it easy or mostly impossible to distinguish regions.  That was looked into when designing this plugin.  But there were too many inconsistencies among the 650 +/- hash files that I wasn't about to go whittling through them all just to find maybe a couple that referenced regions.

  • Thanks 1
Link to comment
Share on other sites

Got it.

What is the point of using this plugin if its possible instead to run aes games with just importing the roms through LB "ROM files" (although with cracking sound for me in both methods)? 

I updated my audio interface drivers, directed LB to a new install of mame and the cracking sound remains. Very strange.

Added some command parameters to make mame choose AES and pick region but there is no change in the emulation: neogeo -cart1 aes %romfile% -bios usa.

I search but not much luck yet.

Btw, with "neogeo -cart1" only, every few successful runs a game will fail to run. Unstable behavior.

For you, AES (no green screen and no coins insert) runs via LB+mame with no cracking sound and with no special commands other than "neogeo -cart1"?

 

 

Edited by vgbox
Link to comment
Share on other sites

19 minutes ago, vgbox said:

What is the point of using this plugin if its possible instead to run aes games with just importing the roms through LB "ROM files"

It was a 'suggestion' to you on the other thread to the issue you were having. (tbh, I didn't read the whole other thread, so I don't know if you actually even had an issue or not. But do know it was a suggestion).  Regardless, the point of using this plugin is to be able to import MAME softlist's into LaunchBox, which currently is not an innate feature of LB.  Using MAMEs hash files, the plugin allows you to populate a Platform, giving games and software their proper, full name and [most every time] setting up the MAME emulator in LB with the necessary command line parameter to launch the respective softlist title.

 

1 hour ago, vgbox said:

runs via LB+mame

I get the green-pixel screen at the beginning but no notable crackling sound during game play.

To change the bios driver from the command line, try using numbers.  The default is 0 (zero) which is Europe MVS v.2.  The US drivers start at 4 and go through 8. But I think they still showed the green pixels.  There's a "Universal hack" at #16 that doesn't show the green stuff.  [-bios 16]

If it is a bios driver thing (vs actual different game roms [like an AES version vs a MVS version] which I obviously have no idea), it might be a lot easier for you to get it working through MAME the way you want it 1st.  You can change the bios in MAME by selecting the romset, go to Configure Machine, then switch between different drivers.  (Don't forget to Save Machine COnfiguration)  Hint: when you do it this way, you won't need to "-bios ##" in the command line.

image.thumb.png.a67f3b03d47440dd999b05e6be4f3e50.png

Beyond that, this thread isn't able to help any more. May be best to start a new topic if you're still having issues.

  • Thanks 1
Link to comment
Share on other sites

  • 4 months later...

I think the plugin is broken now with the new LB versions :(

any possibility on an update?  

I would love to be able to import the my MAME swl into LB.  I'm late to the party.

It errors when choosing the platform and then LB crashes when hitting finish.

Edited by CosmicC
Link to comment
Share on other sites

6 hours ago, CosmicC said:

It errors when choosing the platform and then LB crashes when hitting finish.

When selecting a Platform from the dropdown list (one of your existing Platforms), don't start typing a bunch of letters to find your [existing] Platform.  It's best to just click in the box, then scroll down to and click on your Platform.  Or if you click Add New, it will automatically put in the name (as defined by MAME) in the window that pops up. At this point you can modify the name and/or click OK.  If that name already exists (is an existing Platform), you'll get a message saying so.  Just click OK.

This has been an inherent problem with the plugin ever since it was 1st created and you, my friend are the lucky one to have discovered it. :) Thank you for bringing that to my attention.  I will have my team incorporate a fix for that with the next plugin update.  Until then, try not to get too happy with the keyboard and let the mouse 'do the walking'. ;) 

Link to comment
Share on other sites

5 hours ago, JoeViking245 said:

When selecting a Platform from the dropdown list (one of your existing Platforms), don't start typing a bunch of letters to find your [existing] Platform.  It's best to just click in the box, then scroll down to and click on your Platform.  Or if you click Add New, it will automatically put in the name (as defined by MAME) in the window that pops up. At this point you can modify the name and/or click OK.  If that name already exists (is an existing Platform), you'll get a message saying so.  Just click OK.

This has been an inherent problem with the plugin ever since it was 1st created and you, my friend are the lucky one to have discovered it. :) Thank you for bringing that to my attention.  I will have my team incorporate a fix for that with the next plugin update.  Until then, try not to get too happy with the keyboard and let the mouse 'do the walking'. ;) 

Thanks for the quick reply! I get the error even when I dont touch the keyboard when selecting the platform.  It doesnt seem to matter which platform I select or how i select it.  I do have a good handful of platforms in the list.  Im going to do some more troubleshooting now that i know its still active in development and it should be working, and ill see if i can find more clues on the source of the issue.  I also tried it with everything else con the computer shutdown, ie, any extra apps i had running to make sure there wasnt a conflict.  Same result.

Let me know if there is anything I can do to help test more, or anything else you would like me to try.

Here is the error:

Requested Clipboard operation did not succeed.

App:     LaunchBox
Version: 12.6
Type:    System.Runtime.InteropServices.ExternalException
Site:    Void SetDataObject(System.Object, Boolean, Int32, Int32)
Source:  System.Windows.Forms

   at System.Windows.Forms.Clipboard.SetDataObject(Object data, Boolean copy, Int32 retryTimes, Int32 retryDelay)
   at System.Windows.Forms.Clipboard.SetText(String text, TextDataFormat format)
   at System.Windows.Forms.Clipboard.SetText(String text)
   at ImportMameSoftwareLists30.ImportWizard.XmlNameToClipboard()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Threading.ThreadHelper.ThreadStart()

 

 

 

 

Edited by CosmicC
  • Like 1
Link to comment
Share on other sites

10 minutes ago, CosmicC said:

I figured it out already.

I use tightvnc to remote to my arcade cabinet in the other room to do maintenance.   Running the plugin while remoted in with tightvnc causes the error when selecting the platform, even with mouse only.

I just tried it locally with tightvnc off, and it works!

I'm guessing  when you fix the select bug, it may take care of the remote issue too (they seem related).

Thanks again! at least i found a way to get it to work!

Thanks

10 minutes ago, CosmicC said:

 

 

 

  • Thanks 1
Link to comment
Share on other sites

1 hour ago, CosmicC said:

I'm guessing  when you fix the select bug, it may take care of the remote issue too (they seem related).

Unfortunately, they're not related. lol  The error message you posted is a result of remoting into your cab (thanks for mentioning you were doing that!).  If you run the plugin locally (from the cab itself) with tightvnc turned on, does the error still occur? 

Link to comment
Share on other sites

2 hours ago, JoeViking245 said:

Unfortunately, they're not related. lol  The error message you posted is a result of remoting into your cab (thanks for mentioning you were doing that!).  If you run the plugin locally (from the cab itself) with tightvnc turned on, does the error still occur? 

It works locally even when tightvnc is running, its only when I attempt from remote.

  • Thanks 1
Link to comment
Share on other sites

a little more detailed info:

it *does not* work if remoted in, but tried locally

it *does* work if tightvnc is running, but not remoted in, and tried locally

the remote session has to be closed, even when trying it locally

Edited by CosmicC
  • Thanks 1
Link to comment
Share on other sites

here is another one:

I accidentally hit the import only button twice in a row and this popped up.  The error is understandable, but I would imagine you would want to have it ignore the second click or display a message and not throw an exception.

 

This BackgroundWorker is currently busy and cannot run multiple tasks concurrently.

App:     LaunchBox
Version: 12.6
Type:    System.InvalidOperationException
Site:    Void RunWorkerAsync(System.Object)
Source:  System.ComponentModel.EventBasedAsync

   at System.ComponentModel.BackgroundWorker.RunWorkerAsync(Object argument)
   at System.ComponentModel.BackgroundWorker.RunWorkerAsync()
   at ImportMameSoftwareLists30.ImportWizard.Button_Import_Only_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Recent Log:

   9:54:00 PM Exception

Link to comment
Share on other sites

@CosmicC

4.04-beta-1
- Removed: Copy to Clipboard Feature introduced in v3.11.3-beta-17 due to conflicts when running the plugin remotely
- Fixed: Accidental 2nd click while Importing is already in progress

ImportMameSoftwareLists v4.04-beta-1.zip

Let me know if that fixes your Remoting in issue and the coffee-jitter extra clicks. :D

Link to comment
Share on other sites

  • 4 weeks later...

Hello!

I'll preface this by stating I know this plugin's original intent isn't for updating software lists.... BUT you had previously stated it's a natural evolution for an eventual version 4 so....

I'm using the latest version of the plugin (posted above) to update my Apple II platform. My platform currently is at version 0.237 and I'm trying to import version 0.238. On importing, the plugin is renaming everything to the current 0.238 names for ALL games. With 2800+ games in the list, all of which I renamed to remove everything in parenthesis, this is causing a massive setback for my list since none of the media gets renamed accordingly (not that I want them to get renamed at all).

Example:  From list apple2_flop_clcracked, the game addfrccd is called "Addition of Fractions: Common Denominators (cleanly cracked)" but I had named it "Mathematics: Skill 4.21: Addition of Fractions: Common Denominators". When i use the plugin, the game gets renamed per the software list.

This behavior occurs regardless of whether I select to import clones separately, add clones to parents or exclude clones. 

This is happening even if I tell it to import only games in my source folder (my source folder only has 2 games: wntgames and tgwinter).

This is before importing with the plugin on the apple2_flop_clcracked:

438629758_Screenshot(876).thumb.png.f9807f7076be037986037b02f4996410.png

and my list after import:

1155348484_Screenshot(878).thumb.png.9051294c093233edccb919ce45ec6907.png

Is there a way to avoid having the plugin rename everything?

Just in case there isn't, I suggest the following:

Per MAME, a proper MAME setup should consist of "your file path"\software\softwarelistname\filename.zip

We also know that Launchbox platforms can contain games from more than one software list so...

1) scan the Platform.XML for all the ApplicationPaths
2) Get a list of filenames where it's parent directory matches the software list being imported.
3) Use this list to ignore importing those games from the software list. This will avoid renaming the games already in the platform. I assume the plugin already does some version of this but something is allowing it to rename the game in the platform even if it isn't importing the game.
4) Then import the remainder. This way only the new games carry the names from the software list.
5) Possible toggle option in the wizard so users can decide whether they want to allow renaming or not.

In the case of clones, extra steps need to be incorporated to scan for additionalapps to avoid importing clones that are parented where appropriate depending on import options selected by the user.

Just throwing the idea out there just in case to avoid too much back and forth.

Edited by mcfilmmakers
Link to comment
Share on other sites

15 hours ago, mcfilmmakers said:

On importing, the plugin is renaming everything to the current 0.238 names for ALL games.

We fixed this in v3.0 to alleviate the issue of creating duplicate entries.  By "fixed" I mean it checks against four scenarios.  It compares [one by one] the game to be imported (Title and filename) against all existing Titles and Roms (filenames) in that given Platform.

               A     B      C      D
Title Exist   TRUE  FALSE  TRUE   FALSE
Rom Exist     TRUE  TRUE   FALSE  FALSE

If your situation, it found scenario B: one of your existing app paths contained the roms filename but none of your existing Titles matched the games Title (as declared by MAME).  aka: MAME (or SOMEONE!! ;)) renamed the games' Title since the last import.

This [fix] came about when we realized that not only do roms change names (as new versions of that rom/game are added) and game Titles change (i.e. Blockbuster changed to Block Buster) but also Parents become Clones and Clones become the Parent (as was the case in Milton Bradley Microvision - Connect Four).

I can add a checkbox for 'if a rom file_name already exists in this Platform, skip it altogether' (scenario A & B).  Not sure what, if any, kind of Dominoe affect this will create. Hopefully none.  But it seems like it could be fixed by simply leaving the box unchecked. :) 

 

16 hours ago, mcfilmmakers said:

This is happening even if I tell it to import only games in my source folder (my source folder only has 2 games: wntgames and tgwinter).

 I can't seem to reproduce this.  That is, with this checked image.png.66138a437b4956b3748693b1847d9cc1.png it did rename the Titles that I had manually changed and the rom was in my selected Source Folder.  But it didn't rename any of the ones I changed where the roms were not in my selected Source Folder.  Not sure what to tell ya.

 

Here's some behind the scenes madness to my methods for running the scenarios if morbid curiosity gets the better of you. ;)

Spoiler


var games = PluginHelper.DataManager.GetPlatformByName(Platform).GetAllGames(true, true);

var ExistingTitles = from i in games
                        select i.Title;

var ExistRomNames = from j in games
                    select Path.GetFileNameWithoutExtension(j.ApplicationPath);

// ***** Title Renamed ***** \\  scenario B
// No Title  Yes Rom
if (!ExistingTitles.Contains(TitleToImport) && ExistRomNames.Contains(RomToImport))    //No Title && Yes Rom
{
    foreach (var r in games.Where(r => Path.GetFileNameWithoutExtension(r.ApplicationPath) == RomToImport))
    {
        r.Title = TitleToImport;
        r.Broken = broken;
        break;
    }

    ImportWorker.ReportProgress((i + 1) * 100 / dataGridView1.Rows.Count);
    continue;
}

// ***** New Rom Only ***** \\  scenario C 
// Yes Title  No Rom
if (ExistingTitles.Contains(TitleToImport) && !ExistRomNames.Contains(RomToImport))
{
    foreach (var r in games.Where(r => r.Title == TitleToImport))
    {
        r.ApplicationPath = AppPath;
        r.Broken = broken;
        break;
    }

    ImportWorker.ReportProgress((i + 1) * 100 / dataGridView1.Rows.Count);
    continue;
}

// ***** Exist OK or Title w/diff rom or Rom w/diff Title ***** \\  scenario A
// Yes Title  Yes Rom
if (ExistingTitles.Contains(TitleToImport) && ExistRomNames.Contains(RomToImport))
{
    foreach (var r in games)
    {
        // Title and Rom match
        if (r.Title == TitleToImport && Path.GetFileNameWithoutExtension(r.ApplicationPath) == RomToImport)
        {
            r.Broken = broken;
            break;
        }

        //Rom doesn't match Title
        if (r.Title == TitleToImport && !(Path.GetFileNameWithoutExtension(r.ApplicationPath) == RomToImport))
        {
            r.ApplicationPath = AppPath;
            r.Broken = broken;
            break;
        }

        //Title doesn't match Rom
        if (!(r.Title == TitleToImport) && Path.GetFileNameWithoutExtension(r.ApplicationPath) == RomToImport)
        {
            r.Title = TitleToImport;
            r.Broken = broken;
            break;
        }
    }
    ImportWorker.ReportProgress((i + 1) * 100 / dataGridView1.Rows.Count);
    continue;
}

// ***** New Game ***** \\  scenario D
// No Title  No Rom
if (!ExistingTitles.Contains(TitleToImport) && !ExistRomNames.Contains(RomToImport))
{
    var gameNew = PluginHelper.DataManager.AddNewGame(TitleToImport);
    gameNew.Platform = Platform;
    gameNew.ApplicationPath = AppPath;
    gameNew.DateAdded = DateTime.Now;
    gameNew.DateModified = DateTime.Now;
    gameNew.EmulatorId = EmuID;
    gameNew.Broken = broken;

    ImportWorker.ReportProgress((i + 1) * 100 / dataGridView1.Rows.Count);
}


 

Link to comment
Share on other sites

1 hour ago, JoeViking245 said:

 I can't seem to reproduce this.  That is, with this checked image.png.66138a437b4956b3748693b1847d9cc1.png it did rename the Titles that I had manually changed and the rom was in my selected Source Folder.  But it didn't rename any of the ones I changed where the roms were not in my selected Source Folder.  Not sure what to tell ya.

I'm not sure it this makes any difference, but what has changed on my end is that I am now running Windows 11.

Everything you described about the logic is what I recall... but it's happening in all my platforms I am testing. I did check that box you pointed out and despite the source folder having only 2 games in it, the plugin is renaming everything. All I can do is go back to testing it out again later and see if I have any new observations.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...