Jump to content
LaunchBox Community Forums
JoeViking245

MAME Software Lists Import Tool - plugin

Recommended Posts

@johnsanc Done.   

1)   During the Import process (by either Copy AND Import or Import Only), all games (new and existing) will be set as "Broken" [Broken=true] in LaunchBox if the game status of "Supported" is "no".
      If the supported status is "partial" or blank, then Broken=false.

2) - When Copying & Importing, files copied will overwrite existing files with the same name.  (told you I had to cover all aspects. :) )
    - During the Import process (by either Copy AND Import or Import Only), if the game already exists in LB (for the given Platform), it will not be added again.  ...and it's supported status will be set accordingly.

So for #2, there's no 'added button'.  Just click Import Only and it will add any new games to LB and update the supported status for all games in that Platform.

And of course, all this, making sure the hash files match the ROM set [which matches the MAME revision]

Oh, and "Broken" is not an available option for "Additional Apps", so no worries there.

 

**** Import Mame Software Lists 1.32  updates **** 
- Clarification: When copying files, existing files with the same name will be overwritten.
    (useful when updating Software Lists)
- Fixed: Tools menu icon.
- Fixed: Will no longer Import games that already exist.
- Fixed: If Platform already exists as an 'Additional Platform' for the MAME emulator, it won't add it again.
- New Feature: If a newly imported game is tagged as not supported by MAME, it will be marked as "Broken".
    Will also check existing games in the Platform being imported to (in case MAME updated its' status)
    (Not applicable to clones when imported as additional apps)
- Changed:  Made changes and reduced the dll file size by about 75%

  • Like 2
  • Thanks 1
  • Unusual Gem 1

Share this post


Link to post
Share on other sites

AWESOME! That enhancement just made this tool an absolute must-have for anyone trying to work with software lists. Well... I guess it was already but now its even better ;)

  • Thanks 1

Share this post


Link to post
Share on other sites

lol yeah basically if you want to use SWL in LB its either have this tool or don't bother.

  • Thanks 1

Share this post


Link to post
Share on other sites

I vote for this plugin to be integrated into LB entirely, author willing of course. There's no reason LB shouldn't handle this out of the box, even if it may be as a premium feature.

Share this post


Link to post
Share on other sites
55 minutes ago, mcfilmmakers said:

I vote for this plugin to be integrated into LB entirely, author willing of course. There's no reason LB shouldn't handle this out of the box, even if it may be as a premium feature.

Why?

 

Share this post


Link to post
Share on other sites
Just now, rexryan said:

Why?

 

why not? If it supports MAME for arcade, why wouldn't it support MAME for Computers and Consoles?

Share this post


Link to post
Share on other sites
10 hours ago, mcfilmmakers said:

why wouldn't it support MAME for Computers and Consoles?

The main reason is that the Community voted for other features over this suggestion during the last poll(s?).

But I can guarantee you that that the author would have no issue with Jason incorporating it into LaunchBox.  Though I highly doubt the author even has any rights to it.  But that's neither here nor there.  I'm sure it will show up on the next poll but as you know, majority rule (and of course if Jason feels like it ;)).  Until then, a 35KB download, place the folder/file in Plugins and (as Emeril would say) "BAM!", you're in business!  (actually that last part was me :D)

Share this post


Link to post
Share on other sites

Oh I never questioned that. Naturally majority rule. All I’m saying is there is no technical reason for it not to and it’s not that the community doesn’t want it, it’s simply overlooked. If Jason wanted to do it, it would be done - community poll or not.

my point is simply that the question isn’t “why should it be supported?”. It’s “why shouldn’t it be?”. I can’t think of a reason.

Share this post


Link to post
Share on other sites

Well I've asked for it multiple times and got it on the poll it didn't do well and Jason has shown little interest in adding it. Luckily @JoeViking245made it happen for us so it is possible whether or not its ever integrated (which would still be nice) is sort of a moot point though as its already been made possible.

  • Like 1

Share this post


Link to post
Share on other sites

Aside from a few obscure systems that only MAME emulates there are better emulator options. This means fewer people need the feature if they only care about the popular systems. That leads to fewer votes. Either way, I'm just glad the plugin exists. Frankly I'd be more inclined to vote for other features simply because there's already a solution to this problem... with the plugin hah!

Share this post


Link to post
Share on other sites

Just tried adding this to my Launchbox; the option shows up in my tools menu but nothing happens when I click it. Is this only for premium users, or am I missing something, or ? I allowed the DLL, I got the XML, and it shows up fine in the Tools menu...

Share this post


Link to post
Share on other sites

@monkneys  This plugin as written is for everyone.  Not just Premium users.

When you click Tools and then hover the mouse over "Import MAME Software Lists", does its' background color change to blue (just like it does with all the other menu items)?

What version of LaunchBox are you using?

Did you download the latest version (2.0) of the plugin?

(this may be a stretch, but...) When you click "Import MAME Software Lists v2.0", the plugin window may have opened up in the background or possibly on a 2nd monitor.  Hover the mouse over the LaunchBox icon in the taskbar.  Does it show 2 instances of LaunchBox, 1 being the Import tool? 

Share this post


Link to post
Share on other sites

c64_flop_clcracked.xml always gives me an error when i select it:
 

just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
   at System.Collections.ArrayList.get_Item(Int32 index)
   at System.Windows.Forms.DataGridViewRowCollection.SharedRow(Int32 rowIndex)
   at System.Windows.Forms.DataGridViewRowCollection.get_Item(Int32 index)
   at ImportMameSoftwareLists2.ImportWizard.Console_Refresh_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.ListBox.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4180.0 built by: NET48REL1LAST_B
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
LaunchBox
    Assembly Version: 10.15.0.0
    Win32 Version: 10.15.0.0
    CodeBase: file:///H:/LaunchBox/LaunchBox.exe
----------------------------------------
Protect
    Assembly Version: 2.0.22.14
    Win32 Version: 10.15.0.0
    CodeBase: file:///H:/LaunchBox/LaunchBox.exe
----------------------------------------
PresentationFramework
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4180.0
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/PresentationFramework/v4.0_4.0.0.0__31bf3856ad364e35/PresentationFramework.dll
----------------------------------------
WindowsBase
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4180.0 built by: NET48REL1LAST_B
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/WindowsBase/v4.0_4.0.0.0__31bf3856ad364e35/WindowsBase.dll
----------------------------------------
System.Core
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4180.0 built by: NET48REL1LAST_B
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4001.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
PresentationCore
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4180.0 built by: NET48REL1LAST_B
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_64/PresentationCore/v4.0_4.0.0.0__31bf3856ad364e35/PresentationCore.dll
----------------------------------------
System.Xaml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4180.0 built by: NET48REL1LAST_B
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xaml/v4.0_4.0.0.0__b77a5c561934e089/System.Xaml.dll
----------------------------------------
System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4150.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.3752.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Unbroken.LaunchBox
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///H:/LaunchBox/Metadata/Unbroken.LaunchBox.DLL
----------------------------------------
netstandard
    Assembly Version: 2.0.0.0
    Win32 Version: 4.8.3752.0
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/netstandard/v4.0_2.0.0.0__cc7b13ffcd2ddd51/netstandard.dll
----------------------------------------
Unbroken.LaunchBox.Windows
    Assembly Version: 10.15.0.0
    Win32 Version: 10.15.0.0
    CodeBase: file:///H:/LaunchBox/Metadata/Unbroken.LaunchBox.Windows.DLL
----------------------------------------
Unbroken.LaunchBox.Plugins
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///H:/LaunchBox/Metadata/Unbroken.LaunchBox.Plugins.DLL
----------------------------------------
Unbroken
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///H:/LaunchBox/Metadata/Unbroken.DLL

 

Share this post


Link to post
Share on other sites

Basically, the error message is saying "Dude! there ain't no games listed in this file!"

[for now] When that Error window pops up, click "Close" and don't click on, or arrow up/down to "c64_flop_clcracked.xml" again.  :D

I would not have expected MAME to include an empty softlist file in the hash folder. 

<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<!--
license:CC0
-->
<softwarelist name="c64_flop_clcracked" description="Commodore 64 cleanly cracked disks">

</softwarelist>

So I'm assuming they plan to add [something??] to it in the future.

Thanks for letting me know.  I will add "if there ain't no games in the hash file, don't freak out. Just politely let the user know." in the next release.

  • Like 2

Share this post


Link to post
Share on other sites
Posted (edited)

Awesome. I didn't think it was anything serious. Just wanted to point out the error since it's a scary looking popup, lol.

Feature request: auto populate the Launchbox application path based on either the location of the hash file (which is remembered), or setting a manual fixed root path which can be saved... it'll save quite a few clicks. 99% of users will be keeping their roms in the same basic directory as the hash file anyway and since we have to import each xml list individually, thats a lot of clicks to navigate to the same root directory.

For example:
Hash location: F:\Launchbox\Emulators\MAME 220\hash
Software roms location: F:\Launchbox\Emulators\MAME 220\software
(most other users might keep roms here): F:\Launchbox\Emulators\MAME 220\roms

So based on the hash file, the file browser for the application path (select where to copy your roms to) should default to F:\Launchbox\Emulators\MAME 220\ rather than the C:\ drive. The difference means only needing to select  the folder containing the roms and then scroll down to find the folder of the platform (two clicks), rather than select the correct drive and then the correct subfolders (6 clicks total) for each and every platform

Ideally, and this would also encompass the minority of users who store their roms elsewhere entirely, they could store a manual root path to have an even better end result of having to simply select the one folder rather than click through their file tree every time (one click total).

It's definitely a QOL thing, but when importing hundreds of platforms... those clicks add up fast.

Edited by mcfilmmakers

Share this post


Link to post
Share on other sites

I like clicking.  And besides, I was pretty dang excited just to figure out where your hash files are! lol

Actually, when I 1st started the project, I did have it "remember" the hash folder and source folder locations.  But later learned that it puts a 'marker' file in the ../Users/../../temp folder and didn't want to be 'invasive' like that.  It now 'searches' for the hash folder using [more of] the LaunchBox API awesomeness.

Here's my thought...  I'll have the plugin create an xml (or txt or something like that) to store the rom softlist [Source] folder.  And attempt the same for the destination folder.  Saving "last used folder" isn't going to work, but grabbing the folder above that should.

So for Source, if the last system imported came from   

d:\roms\MAME current Software List ROMs (split)\a2600\

I can grab...
D:\roms\MAME current Software List ROMs (split)\

And for Destination,

F:\Emulators\MAME\software\a2600\
I'd grab
F:\Emulators\MAME\software\

As you can see, my rom locations are [probably] atypical.  But you get the point.  And probably TMI, but I need to think out loud so I can improve your quality of life.  ;)

Hopefully that all makes sense.  Though my box does have some peep holes in it, it's still sometimes difficult to see outside of it.  So let me know if I'm missing something.

Awesome request, and a feature that's long overdue!  Thank you!   Added to my list.

 

  • Like 3

Share this post


Link to post
Share on other sites

v2.01 released

- Improvement: Last used rom Source and Destination parent folder locations are now stored.  (Creates a new file in this plugins folder.)
- Improvement: Added PgUp, PgDn, Home and End when navigating through console/computer list.
- Bug Fixed: "Select a Computer/Console to Import" screen. Fixed error when pressing a key and not inside the files list.
- Fixed: Error if xml file contains no game info  (i.e. c64_flop_clcracked.xml)
- Bug Attended to: (Again.) When executing "Import Only", would sometimes not work the 1st time.

  • Like 2

Share this post


Link to post
Share on other sites
On 5/28/2020 at 6:15 PM, JoeViking245 said:

v2.01 released

- Improvement: Last used rom Source and Destination parent folder locations are now stored.  (Creates a new file in this plugins folder.)
- Improvement: Added PgUp, PgDn, Home and End when navigating through console/computer list.
- Bug Fixed: "Select a Computer/Console to Import" screen. Fixed error when pressing a key and not inside the files list.
- Fixed: Error if xml file contains no game info  (i.e. c64_flop_clcracked.xml)
- Bug Attended to: (Again.) When executing "Import Only", would sometimes not work the 1st time.

You are amazing!

Curious, I've come across tc4.xml for Coleco Total Control 4 cartridges, however no such folder exists in the software list... am I missing something? (Mame 220)

Share this post


Link to post
Share on other sites

tc4.zip in with your regular MAME rom set. 

It works but you need the stencil your own playing field and score board on your monitor. :D

Share this post


Link to post
Share on other sites
15 minutes ago, JoeViking245 said:

tc4.zip in with your regular MAME rom set. 

It works but you need the stencil your own playing field and score board on your monitor. :D

lmao. sometimes I wish MAME would get over it's high horse and simulate those elements which cannot be emulated for obvious reasons... at least optionally. I mean, all they really need to do is allow for Overlays...

Share this post


Link to post
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
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...