Multi-system emulator (NES, SNES, GB, PCE, SMS/GG) for Windows, Linux and macOS
Go to file
Sour d9f1d486a3 Debugger: SNES - Fixed palette display for mode 0 layers in tilemap viewer 2024-04-27 12:14:45 +09:00
.github/workflows macOS: Fixed readme link, remove macos 11 build (#46) 2024-03-14 15:45:52 +09:00
Core Debugger: SNES - Fixed palette display for mode 0 layers in tilemap viewer 2024-04-27 12:14:45 +09:00
InteropDLL Added GBA support 2024-03-30 11:42:31 +09:00
Linux Linux: Fixed video freezing after power cycle/reload rom 2024-01-11 17:51:28 +09:00
Lua Debugger: Lua - Fixed rare crash when loading script due to uninitialized memory when Lua io/os access is enabled 2023-12-23 12:07:34 +09:00
MacOS MacOS: Handle keyboard outside of Avalonia (#38) 2024-01-16 20:45:00 +09:00
PGOHelper Added GBA support 2024-03-30 11:42:31 +09:00
SevenZip macOS: Fix compilation scripts/errors for macOS 2023-02-01 21:10:53 -05:00
UI Debugger: SNES - Fixed palette display for mode 0 layers in tilemap viewer 2024-04-27 12:14:45 +09:00
Utilities Added GBA support 2024-03-30 11:42:31 +09:00
Windows MacOS: Handle keyboard outside of Avalonia (#38) 2024-01-16 20:45:00 +09:00
linux-debugging Linux: Fix building without LTO (#9) 2023-02-18 19:19:10 -05:00
.editorconfig Hex Editor: Implement some of the highlighting features 2021-12-19 18:41:20 -05:00
.gitattributes 65816 core working in 6502 emulation mode 2019-02-11 19:18:47 -05:00
.gitignore Build: Use sdl2-config for SDL2 includes (#5) 2023-02-05 11:01:20 -05:00
COMPILING.md Updated README/COMPILING 2023-02-05 12:02:18 -05:00
LICENSE Add readme/license 2019-03-31 15:15:18 -04:00
Mesen.sln UI: Rename NewUI to UI 2023-01-25 16:03:56 -05:00
NuGet.Config UI: Removed nightly/CI nuget repositories (no longer used) 2023-08-17 18:24:43 +09:00
README.md macOS: Fixed readme link, remove macos 11 build (#46) 2024-03-14 15:45:52 +09:00
buildPGO.sh macOS: Fix compilation scripts/errors for macOS 2023-02-01 21:10:53 -05:00
makefile MacOS: Handle keyboard outside of Avalonia (#38) 2024-01-16 20:45:00 +09:00

README.md

Mesen

Mesen is a multi-system emulator (NES, SNES, Game Boy, PC Engine, Master System/Game Gear) for Windows, Linux and macOS built in C++ and C#.

Development Builds

Mesen

Latest development builds:

macOS: The macOS build still has a number of limitations (e.g no gamepad support).

SteamOS: Running Mesen through the Steam Deck's Game Mode is possible with some caveats regarding rendering the UI.

SteamOS instructions and caveats
Due to Gamescope (SteamOS' compositor) not handling Avalonia UI's popups very well (a solution is available but has been reverted due to other issues), Mesen's menus for settings are not working through Gamescope unless running Mesen through running KDE Plasma's Desktop through a script.

Installation instructions:

  • Download the Linux - AppImage nightly build.
  • Mark the AppImage as executable. (right click > Properties > Permissions > Is executable)
  • Add the application as a non-Steam shortcut to be able to run it through Steam on both Desktop Mode and Game Mode. (right click > Add to Steam)
  • Customise the non-Steam shortcut through Steam to your desire. (in Steam: search the AppImage's filename, right click > Properties; from there you can change the icon, shortcut name and launch options)
  • Create a folder called Mesen.AppImage.Config in the same directory where the AppImage is stored.
  • Run it the first time. When asking where to store the settings, choose the Store the data in my user profile option. 254295455-88c1942d-b81f-48ee-a3a3-74b9f3ecd9b7-1
  • Set up the controls as asked by Mesen.

Due to Gamescope not rendering the UI menus, it is recommended to bind some keyboard shortcuts to L4/R4/L5/R5 (the Back Grip Buttons). You can rebind controls in Game Mode by clicking the Controller icon. You can save the layout by clicking the Cog icon (next to Edit Layout) > Export Layout > select New Template as the Export Type to use it across multiple shortcuts. It is recommended to:

  • Bind Control Key + O Key to open the file picker for opening a game file.
  • Bind Escape Key to pause emulation.
  • Bind F11 to enter in or out of fullscreen.

If sound does not work, check if an audio device is chosen by Mesen. (in Mesen: Settings > Audio > General (Device))

To make game-specific shortcuts: Repeat the non-Steam shortcut step on the Mesen AppImage. Customise the new shortcut with a Launch Option (in Steam: right click > Properties; Launch Options). To find possible Launch Options, check the Command-line options menu (in Mesen: Help > Command-line options). When you want to supply a game with the shortcut, put the entire file location of the game in double quotes ("game-filepath") as the first part of the launch options. Add additional options (--fullscreen for example) after the file location.

Requirements

To run Mesen, the following prerequisites must be installed:

Windows: .NET 6 Runtime
Linux: .NET 6 Runtime, SDL2
macOS: .NET 6 Runtime, SDL2

Compiling

See COMPILING.md

License

Mesen is available under the GPL V3 license. Full text here: http://www.gnu.org/licenses/gpl-3.0.en.html

Copyright (C) 2023 Sour

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.