EMG is a launcher for mupen64plus using Electron. For controller input, a custom build of sdl2-jstest is used.
Bundled plugins:
- GFX: Angrylion Plus, GLideN64, Parallel
- Audio: Mupen64Plus Audio SDL
- Input: GameCube Adapter, Mupen64Plus Input SDL, Raphnetraw
- RSP: Mupen64Plus HLE, Static Interpreter, Parallel RSP
Hardware requirements:
- CPU: SSE3 capable (Electron)
- GPU: OpenGL 3.3 (Angrylion Plus, GLideN64), Vulkan 1.1 (Parallel)
- OS: Linux or Windows 7+ (64-bit), CMake v3.15 or newer (Ubuntu 20.04, Debian 11 or similar) for compiliation
GameCube adapter:
Follow the instructions to set up the adapter. Third party adapters may fail to work.
Build files:
Can be found in build/EMG
after running compile.sh
. See below for more details.
Install dependencies:
sudo apt install -y build-essential cmake curl freeglut3-dev gcc git libfreetype-dev libhidapi-dev libhidapi-hidraw0 libpng-dev libsamplerate0-dev libsdl2-dev libspeexdsp-dev libvulkan-dev make nasm ninja-build p7zip-full wget zlib1g-dev
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
Clone repository, change directory and run compile.sh
:
git clone https://github.com/GhostlyDark/EMG EMG
cd EMG
chmod u+x compile.sh && ./compile.sh
Releases can be found here.
To build EMG instead, download and install MSYS2. Run MSYS2 MinGW x64
and install dependencies.
pacman -S --needed git make mingw-w64-x86_64-cmake mingw-w64-x86_64-freetype mingw-w64-x86_64-gcc 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 p7zip
Clone repository, change directory and run compile.sh
:
git clone https://github.com/GhostlyDark/EMG EMG
cd EMG
./compile.sh
The build script compile.sh
can be run with additional parameters:
./compile.sh [threads] [electron]
Limit the building process to one thread and grab Electron v26.6.9:
./compile.sh 1 v26.6.9
Plugin files are stored in resources/m64p/plugin
. EMG does allow for 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
.
By default, EMG stores its settings (userData) in %appdata%/EMG
on Windows and either $XDG_CONFIG_HOME/EMG
or ~/.config/EMG
on Linux. To override the default location, create a folder resources/data
.
If that directory exists, userData is instead stored in resources/data/user
. At the same time, resources/data/n64
(n64Data) becomes the default directory for mupen64plus configuration, save files and various plugin data (like cache and textures). While userData cannot be reconfigured by other means, the locations for each of the n64Data can still be configured individually.
Delete or rename the data
directory to restore original behavior.
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 reset
Logging happens once mupen64plus closes after pressing Launch
. To view the log, open developer tools and switch to the Console
tab. Right click on the relevant log -> Save as...
to save it as text file.