MAMEIronXP is a cross-platform MAME front-end built in C#/AvaloniaUI.
This is a Work In Progress in the beginning stages of development. Ideally it will scale across different sized-screens, and function the same across operating systems.
- Download the MAME binary and extract it to a directory of your choice (e.g. C:\MAME). You'll want to download a version of MAME that matches the version of your roms. I'm using version .258 https://github.com/mamedev/mame/releases/download/mame0258/mame0258b_64bit.exe
- Download a full set of Snapshots and extract them (just the .png files) to your MAME "snap" directory (e.g. C:\MAME\snap). https://www.progettosnaps.net/snapshots/
- Download & install the .NET 8 SDK (not runtime): https://dotnet.microsoft.com/en-us/download/dotnet/8.0
- Download MAMEIronXP and extract it to a directory of your choice (e.g. C:\MAMEIronXP).
- Edit the App.config file and tell it where you extracted MAME.
- To build MAMEIronXP, open a command prompt/terminal and navigate to your MAMEIronXP directory (C:\MAMEIronXP). Type:
dotnet build
- To run MAMEIronXP, navigate to the output directory (C:\MAMEIronXP\bin\Debug\net8.0) and double-click one MAMEIronXP executable, or at a command prompt/terminal type:
dotnet run
**.NET 8 is a pain to install on older Ubuntu distributions because .NET 8 isn't in Ubuntu's package management system (apt). The "snap" install is quirky and doesn't install all the necessary dependencies. Therefore I'd recommend using Ubuntu 23.10 - that version does include .NET 8 in the apt repositories.
- Download the MAME source code and extract it to a directory of your choice (e.g. ~/MAME). You'll want to use a version of MAME that matches the version of your roms. I'm using version .258 https://github.com/mamedev/mame/archive/refs/tags/mame0258.zip
- Compile MAME. Follow the directions here: https://docs.mamedev.org/initialsetup/compilingmame.html
In short, change to your ~/MAME directory and run the following commands:
sudo apt-get install git build-essential python3 libsdl2-dev libsdl2-ttf-dev libfontconfig-dev libpulse-dev qtbase5-dev qtbase5-dev-tools qtchooser qt5-qmake
make -j 5
(you should set this value to the number of CPU cores you have + 1)
If everything goes well, you'll have a working "mame" executable
- Download a full set of Snapshots and extract them (just the .png files) to your MAME "snap" directory (e.g. C:\MAME\snap). https://www.progettosnaps.net/snapshots/
- Install .NET 8
sudo apt update && sudo apt install dotnet-sdk-8.0
- Download MAMEIronXP and extract it to a directory of your choice (e.g. ~/MAMEIronXP)
git clone https://github.com/MrChrisWeinert/MAMEIronXP.git
- Overwrite the default "App.config" file with a version suitable for Linux:
cp App.config.Linux App.config
- Edit the new App.config file and tell it where you extracted MAME.
- To build MAMEIronXP, open a terminal and navigate to your MAMEIronXP directory (~/MAMEIronXP). Type:
dotnet build
- To run MAMEIronXP after building, you run it like any other executable
~/MAMEIronXP/bin/Debut/net8.0/MAMEIronXP
"C" on the keyboard will mark a game as a Favorite and a little Pac-Man icon will show up to the left of a game. The game will show up at the top of the Games list so it's easily accessible. The game will still show up in the list in alphabetic order. Pressing C again will unfavorite a game. TODO: make this into a long-press to prevent accidental favorite/unfavorites.
"1" on the keyboard will make a selection (start a game, or make a selection on the Exit menu)
"ESC" on the keyboard will bring up the Exit menu. Pressing it again will exit out of the Exit menu.
"Up/Down" on the keyboard will scroll the games list. TODO: Implement "acceleration" so you can navigate the list VERY fast when holding down the Up/Down button.
Currently limited to the following resolutions with more on the way:
- 2560x1440
- 1920x1080
- 1600x900
Games list items have a fixed font size and Favorite icon size.
MAME = Multiple Arcade Machine Emulator
Iron = This is a MAME Front-End ("Fe") and Fe is the chemical elemental symbol for Iron.
XP = X-Platform, or cross-platform