About QMC2

From BATCOM-IT Services Wiki
Jump to: navigation, search

Project details about QMC2 - M.A.M.E. Catalog / Launcher II


QMC2 is the successor of one of the first UNIX M.A.M.E. GUI front ends available on this planet called QMamecat (derived from MAMECAT, which was text-only). QMamecat was based upon Qt 2; its development was frozen in 2003.

By the beginning of March 2006, we started to build QMC2 from scratch as a Qt 4 project. Parts of the design and code were inspired by its predecessor, but it's not just a remake. We tried to make the new design as flexible as possible to minimize dependencies from front end and CLI related MAME changes, which was a major deficiency of QMamecat. QMC2 now uses a template based emulator configuration scheme, which can easily be enhanced with additional command line options (defined in an XML template file).


As a result of this flexible design and countless hours of work, QMC2 today is not only a stable, feature-rich and fast multi-platform GUI front-end for M.A.M.E. (Multiple Arcade Machine Emulator) but also a fully-featured ROM manager for this emulator (and its derivatives, older versions of MAME or even foreign emulators when they use the same/similar XML syntax) through the built-in ROMAlyzer.

QMC2 is known to work on any modern Linux/UNIX distribution, on Mac OS X and Windows (XP, Vista, 7, 8, 8.1 and 10).


As of version 0.183, QMC2's major features include:

  • Extremely fast drawing of machine/software images, optionally smoothly scaled (PNG images, buffered in a resizable LRU-cache)
  • Support for machine icons -- any image format that Qt supports can be used (including ICO format)
  • Icons and all machine/software images can either be stored as individual files in respective folders or they can be combined/compressed in archives (ZIP, 7-zip, ...)
  • Easily extensible template-based emulator configuration scheme (defined through an external XML file)
  • Cool editor for configuration of global and machine-specific emulator options, including a search function
  • Support for all emulation-related extra information available through the emulator (displayed in a tree)
  • Fast search function with automatic wildcard pattern matching
  • All emulator targets: selectable sort criteria and order for machine lists (description, name/ID, ROM state, year, manufacturer and ROM types)
  • Straightforward process management to control emulator processes
  • Clear and full logging (separate front end and emulator logs)
  • Cached ROM state verification, indicated as colored spheres in front of each machine description
  • Verification of sample sets
  • Multi-threaded image checker
  • Online display of current machine list and search result statistics
  • Four different views of the machine list: full detail, hierarchical, by category or by version
  • Optional additional category-oriented and version-oriented views when catver.ini and/or category.ini support is enabled
  • The GUI will always remain interactive even if heavy background processing is running
  • Time-consuming background tasks can be stopped on demand at (nearly) any time
  • Auto-save/restore of window layout, current machine selection and numerous implicit settings
  • Multi-platform support (Linux/UNIX, Mac OS X and Windows)
  • Fully multi-language capable -- right now, translations exist (or are being worked on) for English (us), French (fr), German (de), Greek (el), Italian (it), Polish (pl), Portuguese (pt), Romanian (ro), Spanish (es) and Swedish (sv)
  • Machine/software favorites management and play-history
  • Online HTML documentation and browser
  • Designed to be used for multiple emulators: SDLMAME on UNIX and Mac OS X, MAME on Windows -- plus support for additional foreign emulators on all platforms
  • Built-in support for GUI styles and Qt style sheets (.qss)
  • Automatic caching of parsed/analyzed machine data to speed up initial loading
  • Import & export of emulator configuration files (i. e. mame.ini)
  • All short cuts and GUI control keys can be remapped
  • Removal of obsolete samples and image files (stored in folders or archives)
  • Automatic caching of XML output from the emulator
  • Built-in ROMAlyzer to deeply analyze a machine's ROMs (including repair- and rewrite-functionality for zipped sets) and CHDs -- inspired by Carsten Engel's ROMAlyzer script (see scripts/romalyzer.pl in source distribution)
  • Support for direct GUI control via analog and digital joysticks through SDL (Simple Directmedia Layer)
  • Detailed machine information from MAME's history.dat game information database and MESS's sysinfo.dat machine information database
  • Basically the same for mameinfo.dat as MAME's emulator information database and messinfo.dat for MESS sets
  • Support for output notifications via a named pipe on UNIX and Mac OS X (see emulator control panel)
  • Built-in audio- and (YouTube-)video-players based on the Phonon API
  • ROM status export to clipboard or file as ASCII, CSV or HTML
  • Integrated device configuration with support for mapping of files to device instances & machine slots, as well as an easy-to-use file chooser for simple file-to-device mapping
  • Freely adjustable order and visibility of all sub-features in the available main widget components
  • ProjectMESS system/software look-up feature
  • X11 and Windows platforms: optional / on-demand embedding of emulator windows
  • Freely adjustable layout of the main widget's major components
  • Demo mode to run random games for a specific period of time (in a mode suitable for demo purposes)
  • Support for software-lists, including favorites management, search feature and sneak previews in-game/run-time snap-shots, plus an extra software-detail widget with a scaling preview image, a ProjectMESS software look-up and a WYSIWIG editor for personal rich-text notes
  • Dock-able/floating software-detail widget with a separate snapshot-browser, a ProjectMESS software-lookup feature, and an HTML editor/viewer for personal rich-text software-notes
  • Item tagging and related 'batch-mode' operations
  • A QML based standalone graphical arcade mode binary (QMC2 Arcade) which utilizes the cached data of its bigger brothers to quickly display and launch emulators and get you "straight into the games" :)
  • An easy to use ranking system to set personal ranks for machines and sort by them
  • Optional support for libarchive

Contact and contributions

You can reach us in a number of ways:


You can also support this project by contributing a donation. Any amount of money will be greatly appreciated! But no matter if you do or not, due to the personal interest of its authors, the project will live on anyway.


Hardware donations are also welcome. We could need any sort of state-of-the-art equipment, ranging from PCs to arcade cabinets. If you don't want to donate money but this sort of goods instead, here's your opportunity to support us. Please contact us, and consider to send us your local beer because we also need some software Smile!!