EMG is a launcher for mupen64plus and its mupen64plus-ui-console using Electron.
Bundled plugins:
Bundled tools:
System requirements:
GameCube adapter:
Follow the instructions to set up the adapter. Third party adapters may fail to work.
Shortcuts:
Ctrl
+ I
: Toggle developer toolsCtrl
+ L
: Launch mupen64plusCtrl
+ N
: Reset all settingsCtrl
+ O
: Open ROMCtrl
+ R
: ReloadCtrl
+ Numpad+
: Zoom inCtrl
+ Numpad-
: Zoom outCtrl
+ Numpad0
: Zoom resetRelease files:
[!NOTE] Prebuilt binaries can be found here. Linux users may need to install required dependencies.
Build files:
Can be found in build/EMG
after running compile.sh
. See below for more details.
Download and install MSYS2. Run MSYS2 MinGW x64
and install dependencies:
pacman -S --needed --noconfirm git make mingw-w64-x86_64-cmake mingw-w64-x86_64-freetype mingw-w64-x86_64-gcc mingw-w64-x86_64-glew mingw-w64-x86_64-hidapi mingw-w64-x86_64-libpng mingw-w64-x86_64-libsamplerate mingw-w64-x86_64-nasm mingw-w64-x86_64-ninja mingw-w64-x86_64-rust mingw-w64-x86_64-SDL2 mingw-w64-x86_64-speex mingw-w64-x86_64-vulkan-headers unzip
Clone repository:
git clone https://github.com/GhostlyDark/EMG
Change directory:
cd EMG
Run compile.sh
:
./compile.sh
Install dependencies (including rust):
Ubuntu/Debian (apt):
sudo apt install -y build-essential cmake curl freeglut3-dev gcc git libfreetype-dev libgtk-3-dev libhidapi-dev libhidapi-hidraw0 libpng-dev libsamplerate0-dev libsdl2-dev libspeexdsp-dev libvulkan-dev make nasm ninja-build pkg-config unzip wget zlib1g-dev
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
Fedora (dnf):
sudo dnf -y install cmake curl freeglut-devel freetype-devel gcc gcc-c++ git gtk3-devel hidapi-devel libpng-devel libsamplerate-devel make nasm ninja-build pkgconfig SDL2-devel speexdsp-devel unzip vulkan-devel wget zlib-ng-devel
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
Arch Linux (pacman):
sudo pacman -S --needed --noconfirm cmake freetype2 gcc git glew hidapi libpng libsamplerate make nasm ninja pkgconf rust sdl2 speex unzip vulkan-headers wget
openSUSE Tumbleweed (zypper):
sudo zypper -n install SDL2-devel cmake freeglut-devel freetype2-devel gcc gcc-c++ git gtk3-devel libhidapi-devel libhidapi-hidraw0 libpng16-devel libsamplerate-devel make nasm ninja pkgconf-pkg-config rust speex-devel unzip vulkan-devel wget zlib-devel
Clone repository:
git clone https://github.com/GhostlyDark/EMG
Change directory:
cd EMG
Make compile.sh
executable and run it:
chmod u+x compile.sh
./compile.sh
Download a compatible version of Xcode:
After downloading an .xip
archive, extract and move Xcode.app
into the /Applications
folder and run it.
[!TIP] If an older Xcode installation exists, delete
/Applications/Xcode.app
as well as the command line tools:sudo rm -rf /Library/Developer/CommandLineTools
If the installation fails, it may be caused by an expired certificate. This can be worked around by changing the system date back to a specific year in the past, when the certificate was still valid.
Install MacPorts, start a new terminal session and install dependencies:
sudo port -N install cargo cmake coreutils freeglut freetype git glew gtk3 hidapi libgcc libpng libsamplerate libsdl2 nasm ninja pkgconfig rust speex speexDSP vulkan-headers wget zlib
Reboot terminal and clone the repository:
git clone https://github.com/GhostlyDark/EMG
Change directory:
cd EMG
Make scripts executable and run them:
chmod u+x compile.sh && chmod u+x macdep.sh
./compile.sh && ./macdep.sh
The build script compile.sh
can be run with additional parameters:
./compile.sh [threads]
To limit the building process to one thread:
./compile.sh 1
Additionally, near the beginning of CMakeLists.txt
, compile options for mupen64plus-core
and settings to disable building certain plugins can be set. Activate NO_ASM
if compiling the core fails (which can happen on macOS).
Plugin files are stored in resources/m64p/plugin
.
EMG does allow for unknown plugins to be added, as long as they follow the mupen64plus-[type]-[name].[extension]
naming scheme.
Accepted plugin types are audio
, input
, rsp
and video
.
The application may not boot unless the following parameter is passed as launch option:
--no-sandbox
By default, EMG stores its settings in:
%appdata%/EMG
$XDG_CONFIG_HOME/EMG
or ~/.config/EMG
~/Library/Application Support/EMG
To override the default location, create a folder resources/data
.
If that directory exists, EMG settings are instead stored in data/user
. At the same time, data/n64
becomes the default directory for mupen64plus configuration, save files and various plugin data (like cache and textures).
The output folder for EMG settings cannot be reconfigured by other means, but the directories for mupen64plus data can still be changed individually, even if portable mode is active.
Delete or rename the data
directory to restore the original behavior.
Logging happens once a mupen64plus instance closes successfully. To view the log, open developer tools by pressing Ctrl
+ I
and switch to the Console
tab. Right click on the relevant log -> Save as...
to save it as text file.