Code Monkey home page Code Monkey logo

novasquirrel / mesen-x Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sourmesen/mesen

161.0 11.0 27.0 106.17 MB

Mesen X is a cross-platform (Windows & Linux) NES/Famicom emulator built in C++ and C#. This fork is meant to gather development efforts from different forks. Deprecated; see https://github.com/SourMesen/Mesen2/

Home Page: https://www.mesen.ca

License: GNU General Public License v3.0

C++ 48.35% C 20.82% C# 30.26% Makefile 0.28% Shell 0.03% Lua 0.26% Perl 0.01%

mesen-x's Introduction

Mesen-X

Mesen-X is a fork of Mesen, which is a cross-platform NES/Famicom emulator for Windows & Linux built in C++ and C#. The original Mesen project has paused development, and this fork is meant to collect patches contributed by the community.

Changes include:

  • Support for newer versions of Mono, for running Mesen on Linux
  • ESPM homebrew expansion audio support
  • HD Pack improvements
  • Replaced VRC7 synth code with Nuked-OPLL
  • Debugger improvements, for Alchemy65

Original website (https://www.mesen.ca)
Documentation

You should probably use Mesen2 instead if you are able to.

Development Builds

Development builds of the latest commit are available from GitHub actions. For stable release builds, see the Releases section below.

Warning: These are development builds and may be unstable. Using them may also increase the chances of your settings being corrupted, or having issues when upgrading to the next official release. Additionally, these builds are currently not optimized via PGO and will typically run 20-30% slower than the official release builds.

Follow either of these, select the top-most entry in the list, and then click the link under "Artifacts" near the bottom.

Windows: Build status

Linux: Build status

Releases

Windows

The latest versions can be found on the releases tab

Ubuntu

There's a separate Linux release available on each release in the releases tab. You should be able to use that in most cases if you are using Ubuntu.

The Linux version is a standard .NET executable file and requires Mono to run - you may need to configure your environment to allow it to automatically run .exe files through Mono, or manually run Mesen by using mono (e.g: "mono Mesen.exe").

The following packages need to be installed to run Mesen:

  • mono-complete
  • libsdl2-2.0
  • gnome-themes-standard

Note: Mono 5.18 or higher is recommended, some older versions of Mono (e.g 4.2.2) have some stability and performance issues which can cause crashes and slow down the UI. The default Mono version in Ubuntu 18.04 is 4.6.2 (which also causes some layout issues in Mesen). To install the latest version of Mono, follow the instructions here: https://www.mono-project.com/download/stable/#download-lin

Roadmap

Things that may or may not be added in the future, in no particular order:

  • Support for more UNIF boards and more NES/Famicom input devices
  • Shaders
  • TAS editor
  • Support for new homebrew mappers
  • More Lua features

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) 2014-2019 M. Bibaud

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/.

mesen-x's People

Contributors

alchemicraker avatar altiereslima avatar arcus87 avatar darkaiser0 avatar davi92 avatar ds22x avatar dwedit avatar empathicqubit avatar fr500 avatar gumball2415 avatar inactive123 avatar juanramonmartinez avatar koitsu avatar l1cardo avatar lapinozz avatar mcgrew avatar mkwong98 avatar negativeexponent avatar norill avatar novasquirrel avatar owomomo avatar perkka2 avatar puigru avatar rokkumanx avatar sourmesen avatar superusercode avatar trevormerritt avatar veremenko-y avatar webgeek1234 avatar zorchenhimer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mesen-x's Issues

Ability to set custom display refresh rate depending of Region (like mkwong98 fork)

Original Mesen have a nice option to force user-specified refresh rate in fullscreen mode.
User can select it from drop-down list of refresh rates that your GPU/Dispaly support:

mesen

Nestopia had "auto" refresh rate function in fullscreen depending of region.
For NTSC emulator try to set 60 or 120 Hz, prefer higher value, if hardware supported it.
For PAL/Dendy emulator try to set 50 or 100 Hz, prefer higher value, if hardware supported it.
It was really nice when i had CRT, which supported 60-75-85-100-120Hz

nestopia

I guess nice idea is combine this methods.
To make an separate "fullscreen preferred refresh rate" option.
Two drop-down menus where user can set prefferred hardware refresh rate:
one for NTSC, second for PAL (for PAL/Dendy if system=NES)

This feature was added to Mesen fork by mkwong98:
mkwong98@708a13b

mkw98

It works very well.

True reason of this topic/request - ability to smooth (no-tearing) scroll, which is avaliable ONLY
when physical refresh rate corresponding with emulator output.

When emulating NTSC 60Hz mode - preferred physical refresh rate = 60Hz or multiple value (e.g. 120Hz)
When emulating PAL/Dendy 50Hz mode - preferred physical refresh rate = 50Hz or multiple value (e.g. 100Hz)
This settings + vsync gives true smooth scrolling.

Most of PC-hardware runs at default 60Hz refresh rate, so it's good for NTSC but cause jerky scroll on PAL.
Not so much emulators have ability to switch between refresh rates separately depending of region.
Of course, i mean fullscreen mode.

P.S:
Feature similar Nestopia was added to puNES/QT (linux and winD3D/OpenGL) in lastest commits.
It have "Adapt Refresh Rate to the Region" checkbox:
For NTSC emulator try to set 60 or 120 Hz, prefer lower value, if hardware supported it.
For PAL/Dendy emulator try to set 50 or 100 Hz, prefer lower value, if hardware supported it.

punes

macOS port possible?

Hey Guys!

So Most emulators, like iNES and higan have macOS versions. (and FreeBSD Versions)

I'm wondering if a macOS port is possible.

Is it possible? ๐Ÿค”

Mesen crashes during Netplay on Host with Error 0x80004005

hi,

i did some more netplay testing and i noticed that sometimes the host will crash with a runtime error. here is a screenshot with the error message. the crashes happen randomly and they're not very often but they do happen once or twice per play session.
it's also worth mentioning that when the host gets the error the client app goes into not responding until the host clicks ok, then the client disconnects and the game runs in offline mode.

i made a post on nesdev a while back with some of the troubleshooting i did, you can find it here. someone suggested this might be an engine code issue and not .net but i couldn't replicate the crash consistently.

both the host and the client are using the latest build from commit 86326e8 on windows 10 and the game played is battletoads (usa).
i haven't tested any of the other builds from the other forks but i'm assuming it's still there since no changes to the netplay modules were made.

thank you

AVI desync issue when rewind is used

From the original Mesen's issue list:

"Hello. So it seems as though the more that rewind is used while recording to AVI the more that the sound becomes out of sync with the video. Looking at the file information from Virtualdub confirms this with the sound length trailing behind the video length. Additional testing shows that it's not the duration of the rewind, but how many times it's done."

VRC5 Mapper support

VRC5 is a mapper used in Konami's "Space School" series of games. Emulator "FCEUX" already has support for this mapper. Not sure if this mapper already exists in Mesen, but if not, please add this mapper.

I can't save settings

When I try to save any settings,then it jsut doesn't work,when I display the settings again,then I see that nothing got saved.

Crash when loading previous 'auto saved' state

I'm not sure what it's called, but when you open up Mesen without loading a ROM you are presented with a grid screenshots of the last games played. When you click on one it is supposed to load that ROM.

In Mesen-X it crashes shortly after clicking any game. I've tried a few different games, all with the same issue.

Here's a video. Note that the video ends at the moment Mesen crashes.

Mesen.2021-11-26.21-23-09.mp4

Emulator Mesen(NES) setup problem "SteamDeck"

Hello people... I'm angry and I don't know why it's not working for me..... I wanted to set for example up, down, left... It keeps flashing and I can't set... Interesting that it works Duckstation, SNES, Nintendo switch, etc.... I only have one problem because of the NES.. Don't know why? Thank you and I will show the video..

I think the problem will probably be the program or the driver? Have you also tried or not?

Video
https://emalm.com/?v=QWrfY

SteamDeck 512GB
Windows 10 Pro 21H2
SWICD + ViGEm Bus driver + HIDHIDE

Taskbar not being hidden in fullscreen mode

Hello,
I run Mesen onto my Cinnamon desktop environment. By switching to fullscreen mode, the Cinnamon taskbar is always visible, unless I configure auto hide in the Cinnamon panel settings, which I don't want as I need it to be fixed. Never tried with different desktop environments, but I believe the same will happen. Is there any way to have a proper fullscreen, and keep the taskbar fixed?
Thank you

ROM's autoplay

Hi I installed Mesen on Windows 11 and went to play ROMs, each ROM I played it would only go into Demo view. The ROM would not run the game.

Is there a known issue?

[Libretro] Build errors on Windows with Mingw64

Hi, thank you first and foremost for continuing to work on this emulator. I am currently trying to compile a libretro core of the latest code from this repository as well as the one created by @mkwong98, using the makefile contained in the libretro folder with Mingw64 on Windows 10 x64.

Unfortunately, when attempting to build the libretro version in either repo, the compiler throws out several errors and ultimately aborts the process. A few examples of the errors I am getting:

In file included from ../Core/APU.h:7,
                 from ../Core/APU.cpp:2:
../Core/EmulationSettings.h: In member function 'uint32_t EmulationSettings::GetExclusiveRefreshRateByModel(NesModel)':
../Core/EmulationSettings.h:1332:10: warning: enumeration value 'Auto' not handled in switch [-Wswitch]
 1332 |   switch (m) {
      |          ^
In file included from ../Core/EPSMAudio.h:6,
                 from ../Core/BaseMapper.h:13,
                 from ../Core/FDS.h:4,
                 from ../Core/FdsSystemActionManager.h:5,
                 from LibretroKeyManager.h:5,
                 from libretro.cpp:7:
../Core/SSGAudio.h: In member function 'void SSGAudio<channels>::UpdateOutputLevel()':
../Core/SSGAudio.h:29:88: warning: fold-expressions only available with '-std=c++17' or '-std=gnu++17'
   29 |   (_console->GetApu()->AddExpansionAudioDelta(channels, _currentOutput - _lastOutput), ...);
      |    
In file included from ../Core/DebuggerTypes.h:3,
                 from ../Core/BaseMapper.h:6,
                 from ../Core/ControlManager.cpp:3:
../Core/EmulationSettings.h: In member function 'uint32_t EmulationSettings::GetExclusiveRefreshRateByModel(NesModel)':
../Core/EmulationSettings.h:1332:10: warning: enumeration value 'Auto' not handled in switch [-Wswitch]
 1332 |   switch (m) {
      |          ^

To the best of my knowledge, most errors seem to be related to either the audio updates that have been implemented recently or something to do with the system model identification, but unfortunately I lack the expertise needed to resolve this issue. Any help or suggestion in this regard will be much appreciated!

For further reference, the same build process works fine by either using SourMesen's original repo, or the libretro version (which is essentially a mirror of Sour's work) found here: https://github.com/libretro/Mesen

[Feature Request] RetroAchievements implementation

Well, as all knowing, The Mesen-X is as far most precisely emulator disponible currently and it would be extremely useful for RetroAchievements players who looks for precision, it's would very nice if the Mesen-X integrate achievements in your system, like other emulators doing as exemple the Duckstation.

image

[Libretro] build failes with numerous "error: undefined reference to xyz"

Building the libretro core failes on Linux for multiple targets (x86/arm) with e.g. error: undefined reference to 'OPN2_Reset'

I use the LibreELEC toolchain, my package file: https://github.com/SupervisedThinking/LibreELEC-RR/blob/master-rr/packages/supervisedthinking/emulation/libretro/mesen/package.mk & currently https://github.com/NovaSquirrel/Mesen-X/releases/tag/0.9.9 builds fine.

This is the last proper building master commit 3e1b195

/mnt/dev/LibreELEC-RR/build.LibreELEC-AMLG12B.arm-11.0-devel/toolchain/bin/armv8a-libreelec-linux-gnueabihf-g++ -fPIC -pthread -shared -Wl,--version-script=./link.T -Wl,--no-undefined  -omesen_libretro.so ../SevenZip/7zAlloc.o ../SevenZip/7zArcIn.o ../SevenZip/7zBuf.o ../SevenZip/7zCrc.o ../SevenZip/7zCrcOpt.o ../SevenZip/7zDec.o ../SevenZip/7zFile.o ../SevenZip/7zMemBuffer.o ../SevenZip/7zStream.o ../SevenZip/Bcj2.o ../SevenZip/Bra.o ../SevenZip/Bra86.o ../SevenZip/BraIA64.o ../SevenZip/CpuArch.o ../SevenZip/Delta.o ../SevenZip/Lzma2Dec.o ../SevenZip/LzmaDec.o ../SevenZip/Ppmd7.o ../SevenZip/Ppmd7Dec.o ../SevenZip/Precomp.o ./libretro.o ../Core/APU.o ../Core/Assembler.o ../Core/AutomaticRomTest.o ../Core/AutoSaveManager.o ../Core/BaseControlDevice.o ../Core/BaseExpansionAudio.o ../Core/BaseMapper.o ../Core/BaseRenderer.o ../Core/BaseVideoFilter.o ../Core/BatteryManager.o ../Core/BisqwitNtscFilter.o ../Core/BizhawkMovie.o ../Core/Breakpoint.o ../Core/CheatManager.o ../Core/CodeDataLogger.o ../Core/CodeRunner.o ../Core/Console.o ../Core/ControlManager.o ../Core/CPU.o ../Core/CrossFeedFilter.o ../Core/Debugger.o ../Core/DebugHud.o ../Core/DefaultVideoFilter.o ../Core/RawVideoFilter.o ../Core/DeltaModulationChannel.o ../Core/Disassembler.o ../Core/DisassemblyInfo.o ../Core/EmulationSettings.o ../Core/EventManager.o ../Core/ExpressionEvaluator.o ../Core/FceuxMovie.o ../Core/FDS.o ../Core/FdsLoader.o ../Core/GameClient.o ../Core/GameClientConnection.o ../Core/GameConnection.o ../Core/GameDatabase.o ../Core/GameServer.o ../Core/GameServerConnection.o ../Core/HdAudioDevice.o ../Core/HdNesPack.o ../Core/HdPackBuilder.o ../Core/HdPackLoader.o ../Core/HdPpu.o ../Core/HdVideoFilter.o ../Core/HistoryViewer.o ../Core/iNesLoader.o ../Core/KeyManager.o ../Core/LabelManager.o ../Core/MapperFactory.o ../Core/MemoryAccessCounter.o ../Core/MemoryDumper.o ../Core/MemoryManager.o ../Core/MesenMovie.o ../Core/MessageManager.o ../Core/MovieManager.o ../Core/MovieRecorder.o ../Core/NESHeader.o ../Core/NotificationManager.o ../Core/NsfLoader.o ../Core/NsfMapper.o ../Core/NsfPpu.o ../Core/NtscFilter.o ../Core/OggMixer.o ../Core/OggReader.o ../Core/PPU.o ../Core/PerformanceTracker.o ../Core/PgoUtilities.o ../Core/Profiler.o ../Core/RecordedRomTest.o ../Core/ReverbFilter.o ../Core/RewindData.o ../Core/RewindManager.o ../Core/RomLoader.o ../Core/RotateFilter.o ../Core/SaveStateManager.o ../Core/ScaleFilter.o ../Core/ScriptHost.o ../Core/ScriptingContext.o ../Core/ShortcutKeyHandler.o ../Core/Snapshotable.o ../Core/SoundMixer.o ../Core/stdafx.o ../Core/StereoCombFilter.o ../Core/StereoDelayFilter.o ../Core/StereoPanningFilter.o ../Core/StudyBoxLoader.o ../Core/TraceLogger.o ../Core/UnifLoader.o ../Core/VideoDecoder.o ../Core/VideoHud.o ../Core/VideoRenderer.o ../Core/VirtualFile.o ../Core/VsControlManager.o ../Core/WaveRecorder.o ../Utilities/ArchiveReader.o ../Utilities/AutoResetEvent.o ../Utilities/AviRecorder.o ../Utilities/AviWriter.o ../Utilities/blip_buf.o ../Utilities/BpsPatcher.o ../Utilities/CamstudioCodec.o ../Utilities/CRC32.o ../Utilities/FolderUtilities.o ../Utilities/GifRecorder.o ../Utilities/HexUtilities.o ../Utilities/IpsPatcher.o ../Utilities/md5.o ../Utilities/miniz.o ../Utilities/nes_ntsc.o ../Utilities/PlatformUtilities.o ../Utilities/PNGHelper.o ../Utilities/sha1.o ../Utilities/SimpleLock.o ../Utilities/Socket.o ../Utilities/stb_vorbis.o ../Utilities/stdafx.o ../Utilities/SZReader.o ../Utilities/Timer.o ../Utilities/UpsPatcher.o ../Utilities/UTF8Util.o ../Utilities/WavReader.o ../Utilities/ZipReader.o ../Utilities/ZipWriter.o ../Utilities/ZmbvCodec.o ../Utilities/HQX/hq2x.o ../Utilities/HQX/hq3x.o ../Utilities/HQX/hq4x.o ../Utilities/HQX/init.o ../Utilities/KreedSaiEagle/2xSai.o ../Utilities/KreedSaiEagle/Super2xSai.o ../Utilities/KreedSaiEagle/SuperEagle.o ../Utilities/Scale2x/scale2x.o ../Utilities/Scale2x/scale3x.o ../Utilities/Scale2x/scalebit.o ../Utilities/xBRZ/xbrz.o -march=armv8-a+crc -mtune=cortex-a73.cortex-a53 -Wl,--as-needed -fuse-ld=gold -lm
make: Leaving directory '/mnt/dev/LibreELEC-RR/build.LibreELEC-AMLG12B.arm-11.0-devel/build/mesen-3e1b19507e159f69964d4c62daad972a8aafe911/Libretro'
'Libretro/mesen_libretro.so' -> '/mnt/dev/LibreELEC-RR/build.LibreELEC-AMLG12B.arm-11.0-devel/install_pkg/mesen-3e1b19507e159f69964d4c62daad972a8aafe911/usr/lib/libretro/mesen_libretro.so'

It's broken after edd8106

/mnt/dev/LibreELEC-RR/build.LibreELEC-AMLG12B.arm-11.0-devel/toolchain/bin/armv8a-libreelec-linux-gnueabihf-g++ -fPIC -pthread -shared -Wl,--version-script=./link.T -Wl,--no-undefined  -omesen_libretro.so ../SevenZip/7zAlloc.o ../SevenZip/7zArcIn.o ../SevenZip/7zBuf.o ../SevenZip/7zCrc.o ../SevenZip/7zCrcOpt.o ../SevenZip/7zDec.o ../SevenZip/7zFile.o ../SevenZip/7zMemBuffer.o ../SevenZip/7zStream.o ../SevenZip/Bcj2.o ../SevenZip/Bra.o ../SevenZip/Bra86.o ../SevenZip/BraIA64.o ../SevenZip/CpuArch.o ../SevenZip/Delta.o ../SevenZip/Lzma2Dec.o ../SevenZip/LzmaDec.o ../SevenZip/Ppmd7.o ../SevenZip/Ppmd7Dec.o ../SevenZip/Precomp.o ./libretro.o ../Core/APU.o ../Core/Assembler.o ../Core/AutomaticRomTest.o ../Core/AutoSaveManager.o ../Core/BaseControlDevice.o ../Core/BaseExpansionAudio.o ../Core/BaseMapper.o ../Core/BaseRenderer.o ../Core/BaseVideoFilter.o ../Core/BatteryManager.o ../Core/BisqwitNtscFilter.o ../Core/BizhawkMovie.o ../Core/Breakpoint.o ../Core/CheatManager.o ../Core/CodeDataLogger.o ../Core/CodeRunner.o ../Core/Console.o ../Core/ControlManager.o ../Core/CPU.o ../Core/CrossFeedFilter.o ../Core/Debugger.o ../Core/DebugHud.o ../Core/DefaultVideoFilter.o ../Core/RawVideoFilter.o ../Core/DeltaModulationChannel.o ../Core/Disassembler.o ../Core/DisassemblyInfo.o ../Core/EmulationSettings.o ../Core/EventManager.o ../Core/ExpressionEvaluator.o ../Core/FceuxMovie.o ../Core/FDS.o ../Core/FdsLoader.o ../Core/GameClient.o ../Core/GameClientConnection.o ../Core/GameConnection.o ../Core/GameDatabase.o ../Core/GameServer.o ../Core/GameServerConnection.o ../Core/HdAudioDevice.o ../Core/HdNesPack.o ../Core/HdPackBuilder.o ../Core/HdPackLoader.o ../Core/HdPpu.o ../Core/HdVideoFilter.o ../Core/HistoryViewer.o ../Core/iNesLoader.o ../Core/KeyManager.o ../Core/LabelManager.o ../Core/MapperFactory.o ../Core/MemoryAccessCounter.o ../Core/MemoryDumper.o ../Core/MemoryManager.o ../Core/MesenMovie.o ../Core/MessageManager.o ../Core/MovieManager.o ../Core/MovieRecorder.o ../Core/NESHeader.o ../Core/NotificationManager.o ../Core/NsfLoader.o ../Core/NsfMapper.o ../Core/NsfPpu.o ../Core/NtscFilter.o ../Core/OggMixer.o ../Core/OggReader.o ../Core/PPU.o ../Core/PerformanceTracker.o ../Core/PgoUtilities.o ../Core/Profiler.o ../Core/RecordedRomTest.o ../Core/ReverbFilter.o ../Core/RewindData.o ../Core/RewindManager.o ../Core/RomLoader.o ../Core/RotateFilter.o ../Core/SaveStateManager.o ../Core/ScaleFilter.o ../Core/ScriptHost.o ../Core/ScriptingContext.o ../Core/ShortcutKeyHandler.o ../Core/Snapshotable.o ../Core/SoundMixer.o ../Core/stdafx.o ../Core/StereoCombFilter.o ../Core/StereoDelayFilter.o ../Core/StereoPanningFilter.o ../Core/StudyBoxLoader.o ../Core/TraceLogger.o ../Core/UnifLoader.o ../Core/VideoDecoder.o ../Core/VideoHud.o ../Core/VideoRenderer.o ../Core/VirtualFile.o ../Core/VsControlManager.o ../Core/WaveRecorder.o ../Utilities/ArchiveReader.o ../Utilities/AutoResetEvent.o ../Utilities/AviRecorder.o ../Utilities/AviWriter.o ../Utilities/blip_buf.o ../Utilities/BpsPatcher.o ../Utilities/CamstudioCodec.o ../Utilities/CRC32.o ../Utilities/FolderUtilities.o ../Utilities/GifRecorder.o ../Utilities/HexUtilities.o ../Utilities/IpsPatcher.o ../Utilities/md5.o ../Utilities/miniz.o ../Utilities/nes_ntsc.o ../Utilities/PlatformUtilities.o ../Utilities/PNGHelper.o ../Utilities/sha1.o ../Utilities/SimpleLock.o ../Utilities/Socket.o ../Utilities/stb_vorbis.o ../Utilities/stdafx.o ../Utilities/SZReader.o ../Utilities/Timer.o ../Utilities/UpsPatcher.o ../Utilities/UTF8Util.o ../Utilities/WavReader.o ../Utilities/ZipReader.o ../Utilities/ZipWriter.o ../Utilities/ZmbvCodec.o ../Utilities/HQX/hq2x.o ../Utilities/HQX/hq3x.o ../Utilities/HQX/hq4x.o ../Utilities/HQX/init.o ../Utilities/KreedSaiEagle/2xSai.o ../Utilities/KreedSaiEagle/Super2xSai.o ../Utilities/KreedSaiEagle/SuperEagle.o ../Utilities/Scale2x/scale2x.o ../Utilities/Scale2x/scale3x.o ../Utilities/Scale2x/scalebit.o ../Utilities/xBRZ/xbrz.o -march=armv8-a+crc -mtune=cortex-a73.cortex-a53 -Wl,--as-needed -fuse-ld=gold -lm
../Core/BaseMapper.o:BaseMapper.cpp:function BaseMapper::Initialize(RomData&): error: undefined reference to 'OPN2_Reset'
../Core/BaseMapper.o:BaseMapper.cpp:function BaseMapper::Initialize(RomData&): error: undefined reference to 'OPN2_SetChipType'
../Core/BaseMapper.o:BaseMapper.cpp:function EPSGAudio::ClockAudio(): error: undefined reference to 'OPN2_Clock'
../Core/BaseMapper.o:BaseMapper.cpp:function EPSGAudio::ClockAudio(): error: undefined reference to 'OPN2_Write'
../Core/MapperFactory.o:MapperFactory.cpp:function Vrc7Audio::ClockAudio(): error: undefined reference to 'OPLL_Clock(opll_t*, int*)'
../Core/MapperFactory.o:MapperFactory.cpp:function Vrc7Audio::ClockAudio(): error: undefined reference to 'OPLL_Write(opll_t*, unsigned int, unsigned char)'
../Core/MapperFactory.o:MapperFactory.cpp:function VRC7::InitMapper(): error: undefined reference to 'OPLL_Reset(opll_t*, unsigned int)'
../Core/NsfMapper.o:NsfMapper.cpp:function NsfMapper::InitMapper(): error: undefined reference to 'OPLL_Reset(opll_t*, unsigned int)'
../Core/NsfMapper.o:NsfMapper.cpp:function NsfMapper::InitMapper(): error: undefined reference to 'OPN2_Reset'
../Core/NsfMapper.o:NsfMapper.cpp:function NsfMapper::InitMapper(): error: undefined reference to 'OPN2_SetChipType'
collect2: error: ld returned 1 exit status
make: *** [Makefile:340: mesen_libretro.so] Error 1
make: Leaving directory '/mnt/dev/LibreELEC-RR/build.LibreELEC-AMLG12B.arm-11.0-devel/build/mesen-edd8106a5a56d5ac07c3a1e54f58ce5b71103d1f/Libretro'

A couple of name suggestions for Mesen and Mesen-S

I don't know if this fork and the Mesen-S fork are active, but I already have some name suggestions for these forks, if y'all are interested: Mesen++ for Mesen, and the same thing for Mesen-S, which would Mesen-S++.

What do you think?

Running Mesen-X headlessly with xvfb-run

Hello there. I'm trying to run Mesen-X inside my build process, which worked before with SourMesen 0.9.9. I've run this test code locally and it works correctly, so I assume there's some new problem with running with a headless X server. Any pointers for getting it working would be helpful. Version details of the container:

root@d5f640aa1abd:/# mono --version
Mono JIT compiler version 4.6.2 (Debian 4.6.2.7+dfsg-1ubuntu1)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
	TLS:           __thread
	SIGSEGV:       altstack
	Notifications: epoll
	Architecture:  amd64
	Disabled:      none
	Misc:          softdebug 
	LLVM:          supported, not enabled.
	GC:            sgen
root@d5f640aa1abd:/# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.6 LTS
Release:	18.04
Codename:	bionic
root@d5f640aa1abd:/# 

I would prefer not to update these because I need to support older environments.

The Mesen output:

xvfb-run ["-a","mono","/__w/vscode-cc65-debugger/vscode-cc65-debugger/src/__tests__/mesendir/Mesen.exe","--testrunner","/__w/vscode-cc65-debugger/vscode-cc65-debugger/src/../dist/mesen/mesen_binary_monitor.lua","/__w/vscode-cc65-debugger/vscode-cc65-debugger/src/__tests__/simple-project/program.nes"]
  
        at MesenGrip.autostart (src/dbg/mesen-grip.ts:44:21)
            at runMicrotasks (<anonymous>)
  
      console.log
        Stacktrace:
  
        at Socket.<anonymous> (src/__tests__/test-shared.ts:79:80)
  
      console.log
          at <unknown> <0xffffffff>
  
        at Socket.<anonymous> (src/__tests__/test-shared.ts:79:80)
  
      console.log
          at (wrapper managed-to-native) System.Windows.Forms.XplatUIX11.XCreateFontCursor (intptr,System.Windows.Forms.CursorFontShape) <0x00065>
  
        at Socket.<anonymous> (src/__tests__/test-shared.ts:79:80)
  
      console.log
          at System.Windows.Forms.XplatUIX11.DefineStdCursor (System.Windows.Forms.StdCursor) <0x0006b>
  
        at Socket.<anonymous> (src/__tests__/test-shared.ts:79:80)
  
      console.log
          at System.Windows.Forms.XplatUI.DefineStdCursor (System.Windows.Forms.StdCursor) <0x00024>
  
        at Socket.<anonymous> (src/__tests__/test-shared.ts:79:80)
  
      console.log
          at System.Windows.Forms.Cursor..ctor (System.Windows.Forms.StdCursor) <0x0001b>
  
        at Socket.<anonymous> (src/__tests__/test-shared.ts:79:80)
  
      console.log
          at System.Windows.Forms.Cursors.get_Default () <0x0003f>
  
        at Socket.<anonymous> (src/__tests__/test-shared.ts:79:80)
  
      console.log
          at System.Windows.Forms.ScrollBar..ctor () <0x0066f>
          at System.Windows.Forms.HScrollBar..ctor () <0x0000f>
          at System.Windows.Forms.ImplicitHScrollBar..ctor () <0x0000f>
          at (wrapper remoting-invoke-with-check) System.Windows.Forms.ImplicitHScrollBar..ctor () <0x00033>
          at System.Windows.Forms.ScrollableControl.CreateScrollbars () <0x0003b>
          at System.Windows.Forms.ScrollableControl..ctor () <0x003eb>
          at System.Windows.Forms.ContainerControl..ctor () <0x00027>
  
        at Socket.<anonymous> (src/__tests__/test-shared.ts:79:80)
  
      console.log
          at System.Windows.Forms.Form..ctor () <0x000f3>
          at System.Windows.Forms.MessageBox/MessageBoxForm..ctor (System.Windows.Forms.IWin32Window,string,string,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon,bool) <0x00093>
          at System.Windows.Forms.MessageBox/MessageBoxForm..ctor (System.Windows.Forms.IWin32Window,string,string,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon) <0x00047>
          at (wrapper remoting-invoke-with-check) System.Windows.Forms.MessageBox/MessageBoxForm..ctor (System.Windows.Forms.IWin32Window,string,string,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon) <0x0007b>
          at System.Windows.Forms.MessageBox.Show (string,string,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon) <0x0004f>
          at Mesen.GUI.Forms.MesenMsgBox.Show (string,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon,string[]) <0x001e3>
          at Mesen.GUI.RuntimeChecker.TestDll () <0x00147>
          at Mesen.GUI.Program.Main (string[]) <0x00757>
          at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <0x000d1>
        
        Native stacktrace:
  
        at Socket.<anonymous> (src/__tests__/test-shared.ts:79:80)
  
      console.log
        Segmentation fault (core dumped)
  
        at Socket.<anonymous> (src/__tests__/test-shared.ts:79:80)

Save state Error

When I closed program and load to last state, program crashed.

[Bug] Fast Forwarding doesn't work on Version 1.01

I put my usual settings for my shortcut keys on fast forwarding and rewind, but when I started a game, the rewind feature works but the fast forwarding feature doesn't work.

Steps I did:

1: Set up shortcut keys for my Fast Forwarding (Hold Button) and Rewind (Hold Button)
2: Started up the game "Star Tropics"
3: Pressed the key for fast forwarding, nothing happens.
4: Pressed the key for rewind, and it does rewind.

Is possible to add RAM search feature?

Current Mesen has memory viewer, but it's not so convenience to find specific address, so if RAM search feature be added, it will more convenience!
Also I think current turbo setting is kindly...stupid, two slow levels are actually slow as turtle, so I think this solution would more better:
Fastest: 1 on 1 off (No change)
Fast: 2 on 2 off (No change)
Slow: 3 on 3 off (Change from original 4 on 4 off)
Slowest: 4 on 4 off (Change from original 8 on 8 off)

[Feature Request] Dark Theme

I believe that if there was an option for a dark theme or even a QT interface the project would look more professional and pleasing to the eye, Mesen-X is without a doubt the most accurate NES emulation project currently, but it needs improvement your interface to be more organized and efficient.

[Libretro] MinGW64 build failing

Traced it down to 27a1b21. cbf67e7 builds perfectly fine.

make
g++ -O3 -Wall -D LIBRETRO  -std=c++17  -c libretro.cpp -olibretro.o
libretro.cpp: In function 'void update_settings()':
libretro.cpp:387:97: error: no matching function for call to 'EmulationSettings::SetNtscFilterSettings(int, int, int, int, int, int, bool, int, int, int, bool, bool)'
  387 |     _console->GetSettings()->SetNtscFilterSettings(0, 0, 0, 0, 0, 0, false, 0, 0, 0, false, true);
      |                                                                                                 ^
In file included from LibretroRenderer.h:5,
                 from libretro.cpp:5:
../Core/EmulationSettings.h:1227:7: note: candidate: 'void EmulationSettings::SetNtscFilterSettings(double, double, double, double, double, double, bool, double, double, double, bool, bool, bool)'
 1227 |  void SetNtscFilterSettings(double artifacts, double bleed, double fringing, double gamma, double resolution, double sharpness, bool mergeFields, double yFilterLength, double iFilterLength, double qFilterLength, bool verticalBlend, bool keepVerticalResolution, bool colorimetryCorrection)
      |       ^~~~~~~~~~~~~~~~~~~~~
../Core/EmulationSettings.h:1227:7: note:   candidate expects 13 arguments, 12 provided
libretro.cpp:390:107: error: no matching function for call to 'EmulationSettings::SetNtscFilterSettings(double, int, double, int, double, double, bool, int, int, int, bool, bool)'
  390 |     _console->GetSettings()->SetNtscFilterSettings(-1.0, 0, -1.0, 0, 0.2, 0.2, false, 0, 0, 0, false, true);
      |                                                                                                           ^
In file included from LibretroRenderer.h:5,
                 from libretro.cpp:5:
../Core/EmulationSettings.h:1227:7: note: candidate: 'void EmulationSettings::SetNtscFilterSettings(double, double, double, double, double, double, bool, double, double, double, bool, bool, bool)'
 1227 |  void SetNtscFilterSettings(double artifacts, double bleed, double fringing, double gamma, double resolution, double sharpness, bool mergeFields, double yFilterLength, double iFilterLength, double qFilterLength, bool verticalBlend, bool keepVerticalResolution, bool colorimetryCorrection)
      |       ^~~~~~~~~~~~~~~~~~~~~
../Core/EmulationSettings.h:1227:7: note:   candidate expects 13 arguments, 12 provided
libretro.cpp:394:110: error: no matching function for call to 'EmulationSettings::SetNtscFilterSettings(double, double, double, int, double, double, bool, int, int, int, bool, bool)'
  394 |     _console->GetSettings()->SetNtscFilterSettings(-1.0, -1.0, -1.0, 0, 0.7, 0.2, false, 0, 0, 0, false, true);
      |                                                                                                              ^
In file included from LibretroRenderer.h:5,
                 from libretro.cpp:5:
../Core/EmulationSettings.h:1227:7: note: candidate: 'void EmulationSettings::SetNtscFilterSettings(double, double, double, double, double, double, bool, double, double, double, bool, bool, bool)'
 1227 |  void SetNtscFilterSettings(double artifacts, double bleed, double fringing, double gamma, double resolution, double sharpness, bool mergeFields, double yFilterLength, double iFilterLength, double qFilterLength, bool verticalBlend, bool keepVerticalResolution, bool colorimetryCorrection)
      |       ^~~~~~~~~~~~~~~~~~~~~
../Core/EmulationSettings.h:1227:7: note:   candidate expects 13 arguments, 12 provided
libretro.cpp:398:110: error: no matching function for call to 'EmulationSettings::SetNtscFilterSettings(double, double, double, int, double, double, bool, int, int, int, bool, bool)'
  398 |     _console->GetSettings()->SetNtscFilterSettings(-0.2, -0.1, -0.2, 0, 0.7, 0.2, false, 0, 0, 0, false, true);
      |                                                                                                              ^
In file included from LibretroRenderer.h:5,
                 from libretro.cpp:5:
../Core/EmulationSettings.h:1227:7: note: candidate: 'void EmulationSettings::SetNtscFilterSettings(double, double, double, double, double, double, bool, double, double, double, bool, bool, bool)'
 1227 |  void SetNtscFilterSettings(double artifacts, double bleed, double fringing, double gamma, double resolution, double sharpness, bool mergeFields, double yFilterLength, double iFilterLength, double qFilterLength, bool verticalBlend, bool keepVerticalResolution, bool colorimetryCorrection)
      |       ^~~~~~~~~~~~~~~~~~~~~
../Core/EmulationSettings.h:1227:7: note:   candidate expects 13 arguments, 12 provided
libretro.cpp:401:97: error: no matching function for call to 'EmulationSettings::SetNtscFilterSettings(int, int, int, int, int, int, bool, int, int, int, bool, bool)'
  401 |     _console->GetSettings()->SetNtscFilterSettings(0, 0, 0, 0, 0, 0, false, 0, 0, 0, false, true);
      |                                                                                                 ^
In file included from LibretroRenderer.h:5,
                 from libretro.cpp:5:
../Core/EmulationSettings.h:1227:7: note: candidate: 'void EmulationSettings::SetNtscFilterSettings(double, double, double, double, double, double, bool, double, double, double, bool, bool, bool)'
 1227 |  void SetNtscFilterSettings(double artifacts, double bleed, double fringing, double gamma, double resolution, double sharpness, bool mergeFields, double yFilterLength, double iFilterLength, double qFilterLength, bool verticalBlend, bool keepVerticalResolution, bool colorimetryCorrection)
      |       ^~~~~~~~~~~~~~~~~~~~~
../Core/EmulationSettings.h:1227:7: note:   candidate expects 13 arguments, 12 provided
libretro.cpp:404:97: error: no matching function for call to 'EmulationSettings::SetNtscFilterSettings(int, int, int, int, int, int, bool, int, int, int, bool, bool)'
  404 |     _console->GetSettings()->SetNtscFilterSettings(0, 0, 0, 0, 0, 0, false, 0, 0, 0, false, true);
      |                                                                                                 ^
In file included from LibretroRenderer.h:5,
                 from libretro.cpp:5:
../Core/EmulationSettings.h:1227:7: note: candidate: 'void EmulationSettings::SetNtscFilterSettings(double, double, double, double, double, double, bool, double, double, double, bool, bool, bool)'
 1227 |  void SetNtscFilterSettings(double artifacts, double bleed, double fringing, double gamma, double resolution, double sharpness, bool mergeFields, double yFilterLength, double iFilterLength, double qFilterLength, bool verticalBlend, bool keepVerticalResolution, bool colorimetryCorrection)
      |       ^~~~~~~~~~~~~~~~~~~~~
../Core/EmulationSettings.h:1227:7: note:   candidate expects 13 arguments, 12 provided
libretro.cpp:407:97: error: no matching function for call to 'EmulationSettings::SetNtscFilterSettings(int, int, int, int, int, int, bool, int, int, int, bool, bool)'
  407 |     _console->GetSettings()->SetNtscFilterSettings(0, 0, 0, 0, 0, 0, false, 0, 0, 0, false, true);
      |                                                                                                 ^
In file included from LibretroRenderer.h:5,
                 from libretro.cpp:5:
../Core/EmulationSettings.h:1227:7: note: candidate: 'void EmulationSettings::SetNtscFilterSettings(double, double, double, double, double, double, bool, double, double, double, bool, bool, bool)'
 1227 |  void SetNtscFilterSettings(double artifacts, double bleed, double fringing, double gamma, double resolution, double sharpness, bool mergeFields, double yFilterLength, double iFilterLength, double qFilterLength, bool verticalBlend, bool keepVerticalResolution, bool colorimetryCorrection)
      |       ^~~~~~~~~~~~~~~~~~~~~
../Core/EmulationSettings.h:1227:7: note:   candidate expects 13 arguments, 12 provided
make: *** [Makefile:382: libretro.o] Error 1

Hello Issue / TAS

Hi,
I would like to thank Sour for everything he did to bring Mesen and Mesen-S to us.
I can't imagine the amount of work he put in , and how patient he was with all the issues submitted,
I will never forget this in my life, Thank you very much Sour M.Bibaud.

Nova Thank u for forking Mesen and willing to work on it.
I would start by suggesting a tas implementation , that deals with fceux format too.
Take care :)

Windows build doesn't work

I followed the instructions in COMPILING.md, and I got these errors when launching the built Mesen.exe
error 1
error 2

[Feature Request] Add a script event that is called regularly, even while the emulator is "paused"

Currently scripts cannot continue running while the emulator is paused, as they have no way to resume while paused. All of the currently available events hook to things like end of frame and sprite0 hits, none of which occur while paused. I'd like an event that runs on a regular basis (~30 fps would be plenty) that would allow the script to manage LuaSocket connections even while execution is paused.

I have a partial implementation of this in a PR. This PR goes into much more detail and includes a simplified script for testing the desired effect: AlchemicRaker#1

Issue with Dualshock 4

I tried to use Dualshock 4 for Mesen, and it worked in a first try. But when I tried another one it didn't work at all. I don't know what is happening. And no is not the controller, because it worked on others emulators.

Mapper 28 (Action 53) seems to initialize wrong

Action 53's mapper should power up with $c000-$ffff mapped to the last 16KB of the ROM. However, Mesen initializes all mapper registers to zero, so as soon as UpdateState() gets called, the first 16KB is put in $c000-$ffff because of a zero outer bank.

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.