Main > Software Forum

MAWLER: A MAWS Recreation

(1/16) > >>

I've rewritten MAWS and extended it quite a bit, which you can find at It is a stand-alone app, written in Java, so it should run just about anywhere (windows, mac, linux, r-pi, etc).  See the readme file in the zip for how to configure.  To work, it needs to load all data files, so it needs a bit of memory.  This may result in it not running in constrained environments (e.g. older or lesser spec'd raspberry-pi, etc).  As a very rough estimate, assume you'll need about 750MB-1GB free RAM.

The coding was done largely without looking at the original MAWS code, so differences may exist.  I've attempted to recreate the GUI, based on images from the wayback machine, with some tweaks to make better use of screen real-estate.  The current feature set is largely due to BYOAC member feedback, with artwork from 8bitmonk, et al.

For background, see this thread:,129498.0.html

Please report bugs and feature requests in this thread.

fwiw, the name MAWLER was chosen by members - i think we're still trying to figure out what it stands for  ;D  We've collected a decent assortment of guesses, which will be displayed on the splash screen and title bar.

Screen shots and application details in the next few posts below.

Start-up splash screen (thx 8BitMonk):

First time in, this application will ask you to specify where to find things like "mame.xml" and other data files.  The more you have, the more it can display back to you.  The more the merrier.  It can take a few seconds to load all the data, but after this we create caches and indexes and the next startup will be really fast.  I'm working a feature that will point to URL's for download and make this even easier, but...that's down the road, for now....

The app starts with search/filter criteria displayed down the left side of the screen; results are shown when you hit the "search" button:

Some explanations:

* The "User definable search criteria" really just defines what fields will run down the left side.  Out of the box you get a minimalistic "Simple" and a big "Deluxe" option, but you can redefine these and make your own.  There are options not show in "Deluxe", so have a look at the configuration options.  I've created one call "All" which contains (almost) all fields.  Some are quasi-duplicates.  For example "name", "description" are both combined to "Name/Desc" to simplify searching, and "Resolution" is a combination of horizontal and vertical, etc.  The drop list includes "Custom..." which takes you to the dialog that lets you define your own.
* "Clear search criteria" will de-select all selected items and clear the text fields, fresh for a new search
* "Purge" will remove items from the in-memory database - a pop-up will ask if you want to purge everything shown in the list, or just those things you have selected (if any).  Your mame.xml and other files are NOT changed - your data is safe.  This just allows you to prune away things so they never come up (during this session).  You may also notice that search criteria drop-lists have fewer elements after a purge - for example, if you purge all games with a "hanafuda" control, then "hanafuda" will be removed from the list.  Another benefit of the purge - simpler UI
* Export supports CSV, Hyperspin and ".ini" formats right now - more to come possibly.  The "ini" files can be imported to Mala and maybe others?
* "Clear cache.." - this clears cache and index files created after first launch which help the startup time.  If things get weird or you update files (like mame,.xml) you should hit this one.
* Tags - the drop list is editable so you can type in a new tag name, hit the Assign and whatever is selected (or all) gets tagged.  "Remove" will erase the tag from selected (all) games.  And "Clear all" does just that, all tags are removed from selected (all) games.
 The choice between selected or all is simple - if nothing is selected, it applies to all
* "Copy ROMs" brings up a dialog that lets you select what to copy/move and to where, or to simply delete - again, selected or all
* Not well represented here is the saved search criteria (near top left you see "racing").  You can save search criteria, and create your own freehand via the "Custom search scripting" option, which allows for far greater flexibility than what appears along the left side of the screen; nesting, arbitrary logic (and/or), addiitonal comparison types like "equals" "does not equal", "greater than" etc.  Special handling added for things like Version Added, which needs special care to get "greater than" type queries to work properly.

Then, what many are looking for, the details.  Game details are shown when you double click an item from the search list:

Available images are shown in top-right of screen, and you can scroll through them all.

As you can see from the scroll bar on the right side of the screen shot, there is a lot more data not shown, such as remaining dip switch details, history.dat and mameinfo.dat entries, etc.  These latter two are nicely formatted and include hyperlinks, game links, etc.

Cheats are shown (if you specify the file in settings).  Click the blue cheat name to find other games with a cheat of the same name.  Some cheats have specific values - those are shown in the accompanying drop list. Some values have a numeric range, such as shown here, "Sound Test" support values from 1 to 17 in increments of 1.  For the dip switches, the pinkish colour highlights the default setting.  The dip switch setting title is in blue - this mean you can click it to search for other games that have a setting with that same title.

Example of a clickable link found in the info file:

and here is more formatting mameinfo, with recommended games clickable - clicking takes you to the game detail page for that game.  With this you can traverse endlessly through related games....:

The app also tries to respect your right to do things your way.  Some basic config:

The items above are:

* If checked, monitor resolutions will be shown as per monitor rotation.  The default, unchecked, leaves resolution as reported by mame.xml, which is the resolution of the monitor itself, with no rotation (e.g. horizontal style, such as would be used for watching standard def tv)
* Text searches (e.g. "name", "history") will match if any of the words entered are found, unless this is checked, then all words must be present (in any order)
* The named "ini" files may contain entries not found in the mame.xml itself, such entries can be numerous and have little info, so the default (unchecked) is to ignore those entries.
* Similarly, mameinfo.dat contains many entries about drivers - and without matching data from mame.xml and other sources, these entries are quite lean and confusing.  Leaving this unchecked will therefore remove a lot of driver entries from your in-memory database, so you can focus on games.
* The executable and rom paths should be fairly self-explanatory

As shown in the next screenshot below, you can define which search criteria fields are shown along the left side of the main window.  You can create (green plus sign) a variety of your own criteria settings, remove ones you don't like (via the red "x" which is shown disabled and grey here as you cannot delete the built-in settings, just modify them), etc:

This next screen defines what fields are shown in the search result listing.  "Name" is required by a few hard-coded bits inside the app, so you have no choice with that one (that's why it's disabled):

Here you can define what fields are included when you hit the Export toolbar button (applies to CSV, but other formats may ignore this).  For CSV, you have the option to include a header line; you can have just the data, or the first line with column headings and then the data.

Lets you define where the source input files reside.  The buttons with ellipses will show a file selection dialog:

And finally, where to find images of varying types.  You can specify more than one location (directory, zip file) using the system path separator:

When it comes to moving, or copying, or even deleting roms and maybe even images, we have this:

Note that when you select "delete" many items are disable (destination directories don't apply).  If you have selected items in the search result, you have the ability to specify if your copy/move/delete should apply to selected or all items; as this operation applies to the search results.

And finally, the custom search scripting.  This allows for arbitrarily complex search queries - if you can imagine it, you can compose it here:

You don't need to know what all the various fields are called in this scriptable language, as the Criteria drop list provides them all, pick one and insert into your growing textual query.  And when you select a Criteria, all of its known Values are shown - again, you don't have to be an expert here, this screen will help you along.  And if you get something wrong it will tell you about it.  Also shown are all your saved queries, the ability to save what you have, delete a query, and review all recent searches.  Matching multiple values is also supported with shorthand syntax, like: genre = {Driving, Fighter, Shooter}
If you're wonder what various filters may have in common, put each in (maybe surround with parenthesis) with an "and" between them.  Want everything that various filters might produce?  Put them in with an "or" between them.

Pulled the to-do list from the other thread, removed items which are done, etc:

* Improve formatting of mameinfo and history - feedback needed on this one
* Better diagnostics when things go wrong
* Start up without any files, so user can go to config dialog and specify where they are
* Provide URL's to source files (dat's, ini's, images, etc).  Add a "click to download"?  - first pass complete
* Provide a "launch" button to run currently viewed game in mame (and mess?)
* Stats/graphs
* Print - search result table prints, not sure what else has values
* More export options - will implement when asked for, so please ask
* fix scrolling speed w/ mouse wheel
* Enable mouse forward and back buttons for traversing history
* use colors.ini? - first attempt coded, need to refine
* custom meta-data
* a NOT option on search (eg exclude Fruit Machines, Mature, etc) - first cut implemented
* Tab-based details pages. Ability to open new tabs when viewing game details
* Improve default resolution for windoze
* It would be nice to support multiple snaps.  ie Snapshots, Cabinets, Control Panel, Flyers, Manuals, Marquees and PCB.  If you go here they have all of those in separate packages.  Snapshots are also broken down into different categories like snaps of the Title screen, Snaps of Gameplay, Snaps of Bosses, Snaps of Game Over, etc.  It doesn't have to display all of them at once. - first cut implemented
* Add more options (eg driver) to the search result options (config dialog).  When you change this setting the list should refresh automatically. - Added Driver - will add anything asked for - so please ask
* There are several hundred roms I see at the top of the list that have almost no information, are these from the mame xml? tecomcup, tecmocupu, tecmocups are examples. - See config dialog, first (general) tab, last two check-boxes, likely the cause before those two things were implemented
* I remember in maws a feature was that you could, through one of the filters, change the mame version of the data you were looking at. I don't find this terribly useful but if you want to fully replicate maws this is something I see missing.
* For browsing roms a hierachical listing with the clones indented and a different color would be visually useful. - Added colour coding, indenting is a to-do
* Allow the user to manually flag selections in list view, sort them, export/import list, custom meta-data assignment, etc
* Dip-switch settings can consume a lot of screen space - need to rework this
* If the window is focused on the list view (ie. a record is selected) and you start typing, it filters the list automatically based on the first few letters you type.
* save games to separate groupings instead of deleting them
*      -- and/or save the criteria? merge/join criteria?
* Command line interface which, among other possibilities, will allow filtering and creation of a CSV to be used as input into various front ends
Please let me know if I've missed something (bug or feature or other).  Since I don't really know what to focus on next - "squeaky wheel gets the oil" - I'll do random things (if anything) until I hear specific requests.

I really need to thank those who helped move this along with their ideas, testing, and encouragement!


[0] Message Index

[#] Next page

Go to full version