Trouble Capturing Video from Emulator? Is Upscaling a Good Idea?


#1

I’m trying to capture some gameplay from Mesen, an NES emulator. I’ve recorded an episode using the in-emulator input-capture tool, so I can play back the gameplay within the emulator. However, none of the several options I have for converting this into a video file seem to be working.

  • I’ve tried using OBS to record the emulator window as it plays back the gameplay, but I always get an inexpiable slowdown inside the emulator when I do. It’s not my CPU (I think), as usage only gets to about 40% when all the programs are running. I’ve talked to the emulator’s developer and they are unable to recreate the problem on their end, and I have no idea how to diagnose the issue myself. Is this something I could solve?

  • Mesen has a built-in “converter” of sorts to produce an .avi file of the gameplay, and it does so perfectly. However, this tool can only render out at the NES’s native resolution (256x244). I know the common wisdom is to capture at the final resolution you want, but I’m wondering if there’s a good upscaler I could use to bump the video up to 1080 without losing the sharpness of the image? I’ve been trying out Avisynth and Avanti but haven’t been able to get usable results out of them.

Basically, I’m stumped and need some help! Any advice is useful.

Thank you!


#2

I’ve used VirtualDub in the past to upscale footage from its native resolution with good results. All you have to do is load up the AVI file and add a Filter for “Resize” under the Video tab. Granted, I’ve never gone up to 1080p, so your mileage may vary.

You’ll need a good codec to compress the file when rendering from there though, otherwise you’ll be dealing with some gargantuan filesizes (I use x264vfw, though there might be better options out there it’s always worked well for me).


#3

You can also get a sharp resize out of Avisynth by using PointResize to increase the resolution using nearest neighbor (e.g. use 2048x1952 [256x244 times eight] so all resized pixels are the same size) then use BicubicResize to downsize it back to the desired resolution. Note that the NES’ native resolution isn’t a 4:3 aspect ratio, so you might need to fiddle around with BicubicResize it to get it to not look stretched or squished. Then use AddBorders to fill in the space needed to make it 1440x1080 or 1920x1080.

Also, make sure the Mesen video output is using a lossless encoder. All (non-professional) forms of lossy encoding will lose a significant amount of data when the resolution is that small, even with a huge bitrate, so blowing it up won’t look as good. Read up Chroma Subsampling for why. Of course, after you resize it you can use a lossy codec like x264.