Scrolling isn't smooth?

Hi there. I’m having an issue with a lot of games I’ve tried so far, mainly snes games actually.

The problem is that when the screen scrolls it’s just not 100% smooth like the real thing, it kind jitters or micro stutters.

Some games that I notice it in the most so far are Mario World when I’m running really fast or when there are moving objects on the screen - the objects just don’t move smooth. Like on the levels with parts of the floor or ceiling that move up and down and when the pipes move. The enemy sprites appear to be moving smooth as does Mario, it’s just the background image and the moving objects.

Also I notice it in Final Fantasy 2 and 3 ( 4 and 6) when the camera moves slowly during a scene. More noticeable in 3 (6) actually.

Also it is pretty bad in Zelda a Link to the Past also , I notice my character and also the screen kind of jitter when I run.

It’s very noticeable in Super Castevania since the background has parts that are moving most of the time.

I can notice it to some extent in all the snes games I’ve tried actually , these are just a few examples.

I tried using different cores and they all do the same thing so I just went back to snes9x since I like the option it has to reduce slowdown for the games that have the slowdown in them like Mega Man X and Super Castlevania and some others.

I’ve played a lot of the Genesis games on genesis plus gx and well there were a couple of games where it was noticeable , it was very minor compared to the snes games. I also have tried a lot of neo geo games with fb alpha and most games seem very smooth.

I have tried using open gl, direct x 11 and vulkan (vulkan gives me bsod for snes) and they all do the same thing. I have my refresh rate set to 60 most of the time but have also tried 60.002 and 60.006 since that is what the screen estimator reports usually.

I’ve tried playing with the frame delay and run ahead settings and they don’t make a difference , I guess they are only latency related settings. One setting that I found made a tiny bit of difference was turning off sync audio but it’s still pretty noticable. Hard gpu sync on or off and threaded video on or off does not seem to make a difference either. I have tried using vsync from within retroarch and also forced different kinds of vsync through nvidia control panel.

Is there some option I am missing or combination of settings that will make scrolling in games smooth like the consoles? Or perhaps could it be my monitor which has a 5ms response time instead of a 2ms?

I am really in love with retroarch and playing all my old favorite games again from when I was a kid and I’m full of nostalgia every time I try another one but this is kind of really nagging at me and I hope somebody has a solution.

Thanks for reading.

A lot of SNES scrolling wasn’t actually smooth. Super Mario World is one of the main offenders, as is the Super Metroid intro crawl.

Try going to the online updater and under Nintendo - Super Nintendo Entertainment System, you should find the 240p Test Suite. Download it and then launch it and one of its test is a smooth scrolling test. If that stutters, too, we can start troubleshooting.

I don’t have my old console anymore, I wish I did and I could test it out to see what you mean. I don’t remember games being like this though. Maybe next time I visit my mom I can test it out. She still has my old snes and a few games.

I looked in RetroArch under the online updater and could not find this test suite. I assume you mean under the content updater section. I clicked on that and scrolled down to the super nintendo section and when I click that it says no entries available. It’s strange because I thought a few weeks ago I checked to see what that section was and it showed a lot of things under each entry there…

I even just downloaded a new version of RetroArch and deleted my old one and ran all of the updates under the online updater and still nothing is showing under the content section. Well I mean there is a list of a bunch of systems and other things but when I click on the Nintendo and Super Nintendo ones, it just says no entries available. I could have swore I seen a bunch of stuff there before , almost like it looked like I could download roms there or something.

Some of the items in the content updator have things shown, but not the nintendo ones…

Yeah, something weird must be going on there. It’s doing that for me, too. Anyway, you can get it from here:

That’s a link to the updater’s web interface. Normally, you’d be able to download freeware and homebrew ROMs (mostly diagnostic utilities and minigames) for the systems listed.

1 Like

I went and found the 240psuite online while you were typing that and grabbed the snes version and ran the .sfc file through retroarch and did the 2 scroll tests as you suggested. Both appeared to be very smooth, the sonic background and the grid pattern. My eyes are still seeing spots however after looking at the grid test. lol

1 Like

Super Mario World scrolling IS smooth but they reserved that for when Mario runs at max speed. When walking around at default speed the slower scrolling goes a bit out of sync thought.

Hey there, sorry to bother you as I know this a very old thread but I was wondering if you ever managed to solve this issue?

I’m very interested in enhancing old games like this to “smooth them out” using DSP principles.

If you notice “jitter”, it means the motion wasn’t band-limited within the available full “frequency response” of 60 frames per second. “Jitter” in this case is equivalent to “motion aliasing.”

Given we currently have emulator run-ahead enhancements, I’m wondering if we could run an emulator slightly ahead of time and accept a small latency penalty, to perform “soap opera effect”-like interpolation, except hopefully we can do it better than crappy TVs.

Blur Busters man calls it “frame amplification” in contrast to the often-derided “soap opera effect.”

Are They “Fake Frames”?

Not necessarily anymore!

Just some sexy marketing-speak? You be the judge!

1 Like

With runahead-style shenanigans, you could potentially remove the latency penalty. As it is, there’s a closed-source, commercial product that only adds ~1/2 of a frame of latency:

1 Like

I wonder if there are any youtube-like captures of this applied to retro games. Also, I wonder if LSFG does any downsampling of the interpolated result to achieve true band-limited motion. Think like a hollywood movie where the wheels on cars spin the correct apparent direction, despite 24 frames per second.

Hey hunterk, I was wondering if it would be possible to integrate AMD Fluid Motion Frames (AFMF) to generate frames. This is independent from graphics card and other technologies, so it could potentially be used on its own. Just asking if it technically makes sense and if its even something that is possible. AFMF could be used to increase below 30 FPS games to play like 30 or 60 to make them look smooth (Star Fox comes to my mind), while just increasing just a little bit of latency. It would not interfere with the game logic or make it faster.

I can’t use the linked tool to test this out, as it is Windows only (plus I don’t feel comfortable to use closed source anyway). Is this tool doing what I described or do i get this totally wrong?

Yes, if they make it generalize-able, we’ll try to support it. I know it’s at least partially shader-based, so if they handle the motion vector generation with post-proc shaders, we can probably adapt it. If they require hooks in the program to create the motion vectors, we probably can’t.

Getting nice results here with the Lossless Scaling app, AFMF gives me weird glitches. This other app has less of that, and 60 fps games go up to 120 fps.

I’m sensing a similar problem in window mode.

Games that scroll smoothly in full screen do not scroll smoothly in windowed mode.

For example, it is easy to see this with MAME’s Wonder Boy and other games that scroll horizontally relatively fast.

Incidentally, Wonder Boy scrolls smoothly in both full-screen and windowed modes when played on the official MAME.

So I believe this is a problem on the RetroArch side.

I will be very happy if it is solved.