GithubHelp home page GithubHelp logo

ghostlydark / emg Goto Github PK

View Code? Open in Web Editor NEW
9.0 2.0 0.0 24.4 MB

Electron mupen64plus GUI

License: GNU General Public License v3.0

JavaScript 52.28% Makefile 34.87% Shell 12.85%
emulator-frontend n64 emulation electron

emg's Introduction

EMG

EMG is a launcher for mupen64plus using Electron. For controller input, a custom build of sdl2-jstest is used.

Bundled plugins:

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.

Linux

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

Windows

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

Building options

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

Adding plugins

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.

Portable mode

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.

Shortcuts

  • Ctrl + I: Toggle developer tools
  • Ctrl + L: Launch mupen64plus
  • Ctrl + N: Reset all settings
  • Ctrl + O: Open ROM
  • Ctrl + R: Reload
  • Ctrl + Numpad+: Zoom in
  • Ctrl + Numpad-: Zoom out
  • Ctrl + Numpad0: Zoom reset

Troubleshooting

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.

emg's People

Contributors

ghostlydark avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

emg's Issues

MacOS Release - x86_64/arm64

Hello, @GhostlyDark!
Firstly, id lime to thank you for this amazing project and your efforts to improve on such a gray area like mupen64 GUI.
But, since you're using Electron as a front-end, I'd like to know if it's on your plans a macOS release.
The GUI part should not be complicated, but I guess it has complications to build mupen64 and its plugin for the Apple ecosystem.
Once again, thank for such a great project!

Issues with full screen switch.

The emulator will crash when pressing the full screen button three times while the windowed resolution is set to 2240x1680 or higher. Full screen at start must be enabled or pressing the full screen button will not crash but it will also not allow the emulator to enter full screen.

As a side note, when the windowed resolution is set to 2560x1920, the screen is not properly fitted in full screen. Pressing the full screen button two times will properly scale the display.

Leaving oot in the pause screen causes heavy flashing

The screen appears dimmer with heavy rapid flashing. I can also see a faint text in the background which I believe spells kokiri forest. This may be related to my post about gsync as turning off gsync has fixed the issue currently.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.