Mesen Core


@casdevel Yes, you’re right on that - should have used that function instead. When I read the documentation originally I had assumed this was meant for cores that called it a single time per frame, so I used the other function instead. Slightly related, I noticed you forked and changed this on your end (to test if it helps, I imagine), but saw that you forked libretro/Mesen. You should probably fork SourMesen/Mesen, since Mesen is meant to be an upstream core (I still don’t understand why libretro/Mesen exists, and why the Android builds point to it).

@butanebob I won’t say outright “no”, but the last time I checked, I got the impression that this would involve a lot more changes than I feel is worth (I don’t want to have to rewrite a ton of filesystem-related code that’s been in use & tested for a while, just for the libretro core). So it may happen eventually, but probably not soon.


@Sour I’ve already made a pull request (although I didn’t noticed any difference). Anyway, it shouldn’t do any harm and can be easily reverted on any regressions.

Regarding forked repository, I’m not sure but I think that I forked the right one (Libretro owners should know that). If not, there are only few lines of code changed so it shouldn’t be a problem applying those changes to repository that you mentioned.


Since we support a bunch of platforms that upstream authors don’t usually care much/any about (weird consoles, super-old Windows, DOS, etc), we usually use shallow forks for the buildbot so we can look after those obscure targets without bothering upstream too much. If you’d rather us point at your repo, though, we can certainly make it happen.


That fork is currently only used for the Android builds (and I don’t know why, since I had originally merged the PR for android support when it was done), and afaik only contains one minor makefile change dating a couple of months ago.

IMO, the existence of the libretro/Mesen repo just makes it harder for everyone involved and causes confusion as to where to make changes - e.g even if casdevel’s PR is merged to that repo, it will only affect the android core, since all the other build targets are using the main repo. And in the end, this just ends up preventing me from fixing/improving the Android builds the buildbot produces (e.g the libretro/Mesen repo doesn’t have the raw palette option I added last month, and is missing a number of emulation fixes, too).

Obviously, if you guys were to try to heavily rework the code to make it build in e.g C++98, then that would definitely warrant a fork, but at the moment, it just seems to be unused, and slowly becoming out-of-date vs upstream.

@casdevel If you want to try increasing the size of the packets of samples Mesen sends, you can try increasing this constant: e.g setting it to 10000 will send samples 3x per frame instead of 30x. If you set it over 50000, you’ll probably want to increase “MaxSamplesPerFrame” a few lines below, otherwise it might end up crashing. I still want to give WASAPI a shot on my end when I get a chance, but haven’t had the time to do so yet.


Oh, just being used for Android? Yeah, we should see about getting rid of that, then. I’ll see what I can do.


FYI, someone else requested this on GitHub just now, so I took another look. Turns out enabling softpatching support was actually very easy, whoops!

The next build the buildbot makes should have softpatching available - let me know if there are issues with it.


Hi, I’d like to request a Mesen core for Retroarch Wii U if possible and thank you.


Awesome thank you mate


Why? you have nestopia and mesen is not likely gonna be fullspeed on WiiU. It’s very accurate, it’s very nice, it’s just not suited to slower platforms.

I could try to get it to build but IIRC it requires C++11 not sure we have that available on WiiU.


Why? Just because of all the features that other NES emulators lack. I’m not aware of the requirements or how fast a Mesen core would run on WiiU but I would definitely be willing to test a build and report back.


Yea, C++11 is required, no way around it except rewriting a ton of code. The makefiles specify C++14 though, which is probably needed for a smaller number of things, so it might be feasible to make it compile on C++11, unsure.

Like you said though, I’m not sure the Wii U’s CPU is fast enough to run Mesen at full speed… (no way to know for sure without trying, but the odds are probably not good)


So I had a play around and it seems to work fine with NES roms but not with Disk System roms.


I just tested it with this Zelda 1 translation patch and it seems to be working on my end. I can’t really see any reason why it would work with .nes files and not .fds files, too, since the softpatching is completely done by Retroarch itself.

There are headerless and headered versions of .fds files, IPS patches will only work on one of them but not both - maybe that’s what’s happening on your end?


Good thinkin’ - yeah i bet it’s a problem with the header on the rom I tried. Thanks.


I am running Retroarch 1.74. Mesen core is not available in the online updater in Retroarch. I checked out the cores on buildbot and Mesen was not there. Am I missing something or did it get removed ?


It should be there. You can download it manually here:

Are you missing a lot of cores? If so, you may be using the MSVC build, which is intended for Windows XP (though it will work with WinXP and up) and lacks a lot of cores.


Thanks for the direct download. I noticed Nightly. Thats why I could not find it lol. Do you have to have the nightly retroarch build to use it ? I know the stable version of Retroarch quite well. The only thing I have not figured out is how to add cores that are not available with the online updater in retroarch. For some reason mesen is not showing up in there. Is there a link you can send me or tell me how to do it ?


The core does work good. There is a bug though. Like you I was thinking it might b Retrarch itself but it is not. The controller configuration for Retroarch itself does not work with Mesen core. I had to go into options with Mesen loaded and I had to configure it. It had B button as a button and A button as A Button. I tried another core Nestopia UE and the controller configuration worked by default. I did not have to go into and set it up For the core itself. Other then that the core works great


I got smart. I finally found the core in Retroarch. For some reason when I updated retroarch it changed to the latest build 1.74 x64 for windows 10/8 etc. But no files actually updated. I Downloaded a fresh full version Then just copied all my settings over from my old one. Then mesen showed up under Nintendo - NES/Famicom (Mesen)


i am confused why the dreamcast core didn’t because when run the core it crashes retroarch!