24 March 2024

Welcome back, QMC2!

Update March 2024 - in (far too late) Memory of Rene Reucher

Only these days, far too late, I learnt that Rene Reucher, the creator of the QMC2 frontend, passed away in spring 2023. Back in 2022, when I wrote the first version of this post, Rene has restarted his work on this quite unique MAME frontend, and it was a pleasure for me to help him out on some minor things in relation to Macs, albeit nothing crucial. From two phone calls, I remember him as a very reasonable and pleasant person. This is my very late "Sorry, and all the best, Rene."

At the same time, as fellow developers have now resumed work, it is nice to see that Rene's work will be continued. So I am happy to present new QMC2 v244 builds - and I am quite confident that Rene would accept that I link these two messages together:

AppleSilicon: https://drive.google.com/file/d/15lX5UOpHGFxHPkLojg0vGYSZ8rX-0b5W/view?usp=drive_link

MacIntel: https://drive.google.com/file/d/1tI12260ce9ijJKJ7R5F0nvvJuK_1CyB9/view?usp=drive_link

This time, also the MacIntel build should have proper code signatures and should even run on Apple Silicon - though there is really no need to do this.

So far it's the best version I've ever tested. History.xml is now supported, so you can update to the latest history.xml file to have great machine information. The Silicon Mac version is blazingly fast, and further bugfixing is never a bad thing. On top, the latest libraries are bundled, including the latest QT5 version. That's why I found it worth to provide new builds.

As always, please care for the instructions in the ReadMe and do report any problems back, many thanks.

I started MAME with the help of QMC2, and it is still a classic frontend experience

Original post in the following (no longer relevant and rather outdated, as it builds nicely now with Homebrew):

One of the first MAME frontends - QMC2 of Rene Reucher - is back! 

Rene has a new repository on Github: https://github.com/qmc2/qmc2-mame-fe

So let's fire up our Terminal and let us compile it!

The largest hurdle: You need MacPorts (instead of Homebrew) because only MacPorts still provides the required Qt5 packages. The good news: On my X64 and Silicon Macs, uninstalling Homebrew and installing MacPorts was no problem at all. I got used to MacPorts rather swiftly, as it is very well documented.

MacPorts packages needed:

  • qt5 (@5.15.6, including dependencies)
  • qt5-qtwebkit (@5.9.2_2, including dependencies)
  • *new* qt5-qtwebengine (v5.15.10, takes a very long compile with further dependencies)

You need to set the path to the qmake binary of MacPorts (only once) as follows:

export PATH=/opt/local/libexec/qt5/bin/:$PATH

Be sure to have a recent MAME and the latest version of the SDL2 Framework installed (for basic setup instructions - please see this post).

With these prerequisites, the app compiles below one minute on my M1 Mac Mini:

In the Terminal, move into a directory of your choice, then:

git clone --recursive https://github.com/qmc2/qmc2-mame-fe

cd qmc2-mame-fe

make -j8

sudo make install

The install command copies the completed App Binaries into a folder qmc2 in Applications (stupid me, I forgot about the subdirectory and looked for it in the Applications directory without success).

The arcade app currently does not work, though.

Please also remember that QMC2, quite different to other MacOS apps, places the main system files in /Library/Application Support/qmc2 (root folder - for all users), 

This directory is for all MacOS users.

while only the user-specific cache files and the user-specific qmc2.ini is placed in ~/Library/Application Support/qmc2

This is the directory for the single user.

As always, QMC2 sets up the system at first start and checks all roms. After this, the app launches very fast.

17 comments:

  1. Any chance of linking this line to the install instructions for MAME & SDL2?
    "Be sure to have a recent MAME and the latest version of the SDL2 Framework installed."

    ReplyDelete
    Replies
    1. Hi, thanks for your feedback! I was thinking about this, but already MAME requires the SDL2 Framework to be installed, so if you have a proper MAME setup, QMC2 will work as well!

      Delete
    2. Ok, I did a link to my related post :-).

      Delete
  2. Hello! As of June 25, the QT installer moves some files around for 5.15 ... because of this, the path is now incorrect...

    I had to use "export PATH=/Users/(your user directory here)/Qt/5.15.2/clang_64/bin/:$PATH" (without the quotes at the beginning and end)

    I am on a 2019 MBP with an Intel Processor running MacOS 12.4

    Anyway - Enjoy!

    ReplyDelete
    Replies
    1. Many thanks! I do not use the QT installer, but the MacPorts versions, and I think that MacPorts uses a very different Path environment. I failed with the QT installer on all of my Macs, that's why I moved to MacPorts (and I actually like it :-). So if there is another way with the QT installer, even better! Cheers!

      Delete
    2. Hi, Is there any chance of getting the already built version from you? Don't really want to undo all the brew stuff etc.

      Delete
    3. Hello, I am sorry, I wanted to help out Rene in providing builds, but the MacOS notarization system drives me crazy. While I couuld provide binaries via Google Drive, this would not create the required directories in Application Support. Would blank binaries be sufficient?

      Delete
  3. Many thanx for the update! The previous version was rather old. Only one thing: the MAME options are not shown and can therefore not be adjusted (options/emulator/global configuration). Have to edit the mame.ini manually.

    ReplyDelete
  4. Another small problem: when the ROMs folder is on a different harddisk, nor adding the correct ROMs path to the mame.ini nor creating a symblic link from the real location to the mame folder works. Starting a ROM always results in a crash of MAME. Starting ROMs directly with MAME works perfect, so it must be QMC2.

    ReplyDelete
  5. Hi, looking forward to the intel build :-)

    ReplyDelete
  6. Welp, I was about to post about the application crashing for me on startup but then I realized that the SDL2 I have installed via brew isn't the SDL2 that MAME and QMC2 are looking for. I got the .DMG for that and I'm all good now. Thanks for creating the binary!

    ReplyDelete
  7. Thank you! The apple silicon version (Update November 2022 file from your google drive link) saved me the hustle of compiling with Homebrew.
    - I placed the build file in the Applications folder,
    - and the qmc2 folder from the google drive link in root of the `Library/Application Support/`

    and it is working like a charm. :)

    ReplyDelete
  8. Hi, I have a strange problem with with the intel version it appears to be picking up the wrong version for a library. Top 3 lines if I try to run it. In googling around a problem I find out about otool that tells you the libs used, but they look ok. I do have one other app installed that uses QT but it appears to get the QT libs it uses from within the app too. Where else could it be pickup QT lib from?

    % ./qmc2-sdlmame
    17:13:04.660: QtWarningMsg: QFont::fromString: Invalid description '(empty)'
    17:13:04.660: QtWarningMsg: QFont::fromString: Invalid description '(empty)'
    17:13:04.766: QtFatalMsg: Cannot mix incompatible Qt library (5.15.3) with this library (5.15.6)
    zsh: abort ./qmc2-sdlmame
    bnice@Benjamins-MBP MacOS % otool -L qmc2-sdlmame
    qmc2-sdlmame:
    @rpath/SDL2.framework/Versions/A/SDL2 (compatibility version 1.0.0, current version 19.2.0)
    /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 23.0.0)
    @executable_path/../Frameworks/QtSvg.framework/Versions/5/QtSvg (compatibility version 5.15.0, current version 5.15.6)
    @executable_path/../Frameworks/QtWebEngineWidgets.framework/Versions/5/QtWebEngineWidgets (compatibility version 5.15.0, current version 5.15.11)
    @executable_path/../Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport (compatibility version 5.15.0, current version 5.15.6)
    @executable_path/../Frameworks/QtMultimediaWidgets.framework/Versions/5/QtMultimediaWidgets (compatibility version 5.15.0, current version 5.15.6)
    @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.15.0, current version 5.15.6)
    @executable_path/../Frameworks/QtWebEngineCore.framework/Versions/5/QtWebEngineCore (compatibility version 5.15.0, current version 5.15.11)
    @executable_path/../Frameworks/QtQuick.framework/Versions/5/QtQuick (compatibility version 5.15.0, current version 5.15.6)
    @executable_path/../Frameworks/QtMultimedia.framework/Versions/5/QtMultimedia (compatibility version 5.15.0, current version 5.15.6)
    @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui (compatibility version 5.15.0, current version 5.15.6)
    /System/Library/Frameworks/Metal.framework/Versions/A/Metal (compatibility version 1.0.0, current version 261.13.0)
    @executable_path/../Frameworks/QtXml.framework/Versions/5/QtXml (compatibility version 5.15.0, current version 5.15.6)
    @executable_path/../Frameworks/QtXmlPatterns.framework/Versions/5/QtXmlPatterns (compatibility version 5.15.0, current version 5.15.6)
    @executable_path/../Frameworks/QtQmlModels.framework/Versions/5/QtQmlModels (compatibility version 5.15.0, current version 5.15.6)
    @executable_path/../Frameworks/QtWebChannel.framework/Versions/5/QtWebChannel (compatibility version 5.15.0, current version 5.15.6)
    @executable_path/../Frameworks/QtQml.framework/Versions/5/QtQml (compatibility version 5.15.0, current version 5.15.6)
    @executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.15.0, current version 5.15.6)
    @executable_path/../Frameworks/QtSql.framework/Versions/5/QtSql (compatibility version 5.15.0, current version 5.15.6)
    @executable_path/../Frameworks/QtTest.framework/Versions/5/QtTest (compatibility version 5.15.0, current version 5.15.6)

    ReplyDelete
    Replies
    1. Hi, again I think it maybe you compiled with a different QT version to what you bundled?

      Delete
    2. Oh, that's strange. I need to test, but basically the bundling process happens automatically, so I cannot bundle a wrong qt version. I need to check this, sorry and thanks for the feedback!

      Delete
    3. I do not know what happened, but this new January 2023 build should now work fine. Sorry for the confusion, Mr. Anonymous :-)

      Delete
  9. Hi estefan,
    Ben here aka Mr. Anonymous. Pleased to say the latest Intel version works like a charm thanks for fixing it.

    ReplyDelete

Any comments are welcome!