Thanks for reporting this, it's probably a new bug in 0.6.0 - it existed before but didn't cause any trouble with the old sound implementation. The newer one (which allows for much lower latency) doesn't play nice with it. The bug is the overclocking implementation itself, though. I'll most likely have a fix for this in the next version.
Edit: for the frame drops though, I'm not sure. That could be a completely unrelated problem. Your computer is probably powerful enough for overclocking - most computers still in use today can probably run games at 2-3x the normal speed, at the very least, so performance is rarely an issue unless you go for 10x overclocking!
Edit 2: I've fixed the sound/fps issues - they basically only occurred for some games (Contra being one) that use the DMC channel. Thanks again for taking the time to post about this issue! Let me know if you still get problems after the next Mesen release.
Hey :) The netplay itself is all coded in C++, but there's no reason you couldn't implement the same concept in C#. The concept is pretty simple: the server receives the current state of each client's controller, and applies that to the input ports ($4016/4017). The server then sends the result in the form of a "movie" stream (i.e what inputs were pressed at what moment) and the clients play that movie. The server/client never go out of sync, but it's not that great when ping is high (i.e 150+ms) - other than that it works pretty nicely (and it's certainly better than the experience I had with ZSNES 10+ years ago :p). It has a lot of other features (e.g: selecting which controller you're using, server loading games/states, server-controlled cheat codes, etc), but nothing that is all that hard to implement.
I'm not too certain on the specifics of Kaillera, but Mesen doesn't use a central server/hub. It does however uses UPnP to contact the router & add a port forwarding rule when the server is started, which means it should work out of the box with most routers and the typical LAN setup most of us have at home. Technically, you can also get around this by using UDP hole punching, but Mesen currently uses TCP, so I never looked into it much.
Thanks! :)
Ending the movie when loading a state is by design, at the moment.
I do want to add more TAS/rerecording-oriented features in the future, and reworking the movie format and such is also on my list of things to do. Unfortunately, that list is pretty large at the moment (link), so I can't say when I'll get around to it.
Thanks for making this thread! Always nice to hear what people think of Mesen.
Because my free time is (unfortunately) limited, and I only created Mesen about 2 years ago. (Compared to most NES emulators that have been around for a decade). AVI recording is on my list of things to add eventually, but there are a lot of other things on said list, too.
It looks like you might be right - I probably compared to Nestopia or other emulators and assumed it passed. It looks like the grid on TASVideos used to list other emulators as passing (with the same result as Mesen), but this was changed recently.
I don't actually have a powerpak or anything to use to test on my own NES, so it's hard to judge whether tests pass or not when they're visual tests. :(