Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

Maybe a solution for NES input lag.



  • Pi Model: pi3
    Power Supply used: Pi power supply
    RetroPie Version Used: 4.4
    Built From: Pre made SD Image on RetroPie
    Controller used: 8bitdo
    Emulator: lr-nestopia, lr-fceumm and lr-quicknes

    Hi!
    Please don't bash me to hard if this already here somewhere. But I´ve tried figureing out why I have input lag with my controller with Nes games. All other system works fine(knock knock on wood).

    On the wikipage it says that I must make sure to use header in the rom filename, example Mario bros 3 (E) or (U).

    I have tried this on Super mario bros 3 and super mario bros 2. Both (E) And (U) version.
    Playing SMB3(E) on lr-fceumm or lr-nestopia gives me input lag. Playing it on lr-quicknes does not. However, quickness speeds up the sound and music. Which imo sounds pretty bad.

    Playing SMB3(U) on lr-fceumm and lr-nestopia gives me input lag as well.

    Buuuuuuut! If I then instead play SMB3(U) on lr-quicknes, the sound is perfect and there is NO input lag!

    Can anyone understand why this is? xD It's very confusing. Is there a workaround for this? Or do I need to get all my Nes games with the USA version? Or can I simply just rename the files to (U)? Does the ! in the filename have anything do to with it? I know its a sign of good release. But does it make it so the emulators can't read it?



  • @lesk what do you mean by input lag? Sounds like your talking about the speed of the game vs input lag, which is the time it takes your button press to effect what’s going on on screen. (E) roms are European versions and are designed for 50hz (50 frames per second) and run 4% slower than that of a Japanese (J) or American (U) rom at 60Hz. Running a European version of most games in that era feels sluggish with the slowdown



  • @lostless

    I mean the delay between pressing a button on my controller and seeing my character move etc.

    As I mentioned above. Both the European and the USA games both have input lags on lr-fceumm and lr-nestopia. But on the lr-quicknes emulator the games dosen't have input lag. But on the European version the music and sound is going fast but on the USA version the game sounds like it should, but have no input lag.

    I will try this with other games on the NES. And I will try comparing USA and European version, and also see if renaming them do anything.



  • A lot of this has to do with the refresh on your TV.
    If it’s not set to “Game” mode and instead some other cinema preset, you can end up with some really noticable lag to the point where the games aren’t really all that playable.

    Make sure your problem isn’t that one.


  • Global Moderator

    games with (E)/(Europe) in filename are loaded as PAL (50Hz), and those with (U)/(USA)/(J)/(JAP)/etc, are NTSC (60Hz).

    now, maybe quicknes ignores the filenames and loads everything up as 60Hz (speeds up the sound, etc).

    but yeah, the other games will adjust the games speed accordingly. a 50Hz game will have ~17% more input lag than a the same game at 60Hz. welcome to the joys of NTSC gaming :/

    it's generally better to just run the PAL NTSC version of a given game.

    Buuuuuuut! If I then instead play SMB3(U) on lr-quicknes, the sound is perfect and there is NO input lag!

    i can't explain this, though. quicknes is less resource intensive but any NES emulator on a pi3 should be full speed. i suspect you have some different settings affecting things.



  • @neo-rio said in Maybe a solution for NES input lag.:

    A lot of this has to do with the refresh on your TV.
    If it’s not set to “Game” mode and instead some other cinema preset, you can end up with some really noticable lag to the point where the games aren’t really all that playable.

    Make sure your problem isn’t that one.

    Never checked! I will see if I have the option to change this.

    @dankcushions said in Maybe a solution for NES input lag.:

    games with (E)/(Europe) in filename are loaded as PAL (50Hz), and those with (U)/(USA)/(J)/(JAP)/etc, are NTSC (60Hz).

    now, maybe quicknes ignores the filenames and loads everything up as 60Hz (speeds up the sound, etc).

    but yeah, the other games will adjust the games speed accordingly. a 50Hz game will have ~17% more input lag than a the same game at 60Hz. welcome to the joys of NTSC gaming :/

    it's generally better to just run the PAL version of a given game.

    Buuuuuuut! If I then instead play SMB3(U) on lr-quicknes, the sound is perfect and there is NO input lag!

    i can't explain this, though. quicknes is less resource intensive but any NES emulator on a pi3 should be full speed. i suspect you have some different settings affecting things.

    You say that the game runs better on NTSC but then say its better to run all games on the PAL version? Why? :)

    Yeah this is what confuses me... Both PAL ant NTSC games runs at the same speed on all emulators. But on the two other emulators (fceumm and nestopia) PAL has some input lags and feel sluggish. But PAL games sounds speeded up on quicknes but NTSC games does not. So as for me now, it feels better to run NTSC games on quicknes.

    About the settings. I have just downloaded the Retropie image from this website, installed it. Added a bluetooth controller. Added few games. Changed the skin to Mini nes theme. Fixed the overscan issue. That's it. It should't affect the input lag on the Nes emulators =/ All other systems seems to work fine. Both with PAL and NTSC games.


  • Global Moderator

    @lesk said in Maybe a solution for NES input lag.:

    You say that the game runs better on NTSC but then say its better to run all games on the PAL version? Why? :)

    sorry, brain fart. i've edited my post!

    Yeah this is what confuses me... Both PAL ant NTSC games runs at the same speed on all emulators. But on the two other emulators (fceumm and nestopia) PAL has some input lags and feel sluggish.

    that's correct emulation, more than likely. see https://gamefaqs.gamespot.com/boards/525245-super-mario-bros-3/72877567 - music pitch slowing OR speeding up, and game speed/animations slowing is normal for PAL games, compared to NTSC. there were a variety of ways developers approached the different display formats.

    But PAL games sounds speeded up on quicknes but NTSC games does not. So as for me now, it feels better to run NTSC games on quicknes.

    quicknes is probably being inaccurate here. i wouldn't use it under any circumstances on a pi3. this 'better feeling' might not be accurate.

    About the settings. I have just downloaded the Retropie image from this website, installed it. Added a bluetooth controller. Added few games. Changed the skin to Mini nes theme. Fixed the overscan issue. That's it. It should't affect the input lag on the Nes emulators =/ All other systems seems to work fine. Both with PAL and NTSC games.

    i dunno, all i can say is NES NTSC is working full speed for me on fceumm/nestopia.



  • @dankcushions said in Maybe a solution for NES input lag.:

    Yeah this is what confuses me... Both PAL ant NTSC games runs at the same speed on all emulators. But on the two other emulators (fceumm and nestopia) PAL has some input lags and feel sluggish.

    that's correct emulation, more than likely. see https://gamefaqs.gamespot.com/boards/525245-super-mario-bros-3/72877567 - music pitch slowing OR speeding up, and game speed/animations slowing is normal for PAL games, compared to NTSC. there were a variety of ways developers approached the different display formats.

    Dang, I mean. Both PAL and NTSC feel sluggish and feels like it have input lags on fceumm and nestopia. But on quicknes NTSC has no input lag and no weird up speeded music.

    i dunno, all i can say is NES NTSC is working full speed for me on fceumm/nestopia.

    Maybe I should try doing a clean install again and just try NTSC. Loosing my mind a lil over this lol xD

    Have you done any settings for fceumm or nestopia? All Ive done is change overscan issue. Can you post a screenshot/pic of what your settings looks like? The one you see if you press A when launching a game? (You prob know what its called ^^)

    And also, do you use a wired or bluetooth controller?


  • Global Moderator

    @lesk i run defaults and use a wired controller.



  • @dankcushions said in Maybe a solution for NES input lag.:

    @lesk i run defaults and use a wired controller.

    So after a couple of hours(yikes!) of testing. This is what I found.
    Quick answer: lr-nestopia with NTSC version works best. At least that what I think when using 8bitdo snes controller.

    I installed a fresh installation from Retropie website. Booted it up, added my Bluetooth 8bitdo controller. Set up the wifi and added both Super mario bros 3 on PAL and NTSC.

    Tried using lr-fecumm, lr-nestopia and lr-quicknes.

    As you said @dankcushions the PAL version felt sluggish on all emulators except quicknes, but that ran way to fast.
    NTSC felt better, but a lil more sluggish on lr-fecumm. However it played pretty much normal on both nestopia and quicknes.
    But after your comments I will stick with nestopia from now on.

    So I will get rid of ny PAL library and instead get NTSC versions of the games.

    Thank you so much for the help. I hope this also help someone else that find themselves in my position ^^

    Btw, I did NOT try with a wired controller. So don't know if that will give you another result.



  • @lesk Did you try enabling the read-ahead feature in retroarch? Try 2.



  • @darksavior said in Maybe a solution for NES input lag.:

    @lesk Did you try enabling the read-ahead feature in retroarch? Try 2.

    I did not. What is the read-ahead feature? ^^ Where and how do I enabling that, and what does that do? xD


  • Global Moderator

    @darksavior said in Maybe a solution for NES input lag.:

    Try 2.

    Actually, a setting of 2 will discard one frame too many in most games and can potentially lead to adverse effects. When not testing the games individually for the proper number, setting of 1 is the only safe option. With the exception of Atari 2600 games, which have no inherent latency, all others will have at least one frame.


  • Global Moderator

    @lesk said in Maybe a solution for NES input lag.:

    Where and how do I enabling that, and what does that do?

    The Run-ahead feature gives you the option of removing inherent frames of latency that are built in to every game past the Atari 2600. Each game can have different amount, but as mentioned above, there will always be at least one frame. Removing more frames than what is required can lead to visual and game play anomalies, such as a 'Game Over' screen appearing for as little as one frame when you haven't died. Even when anomalies aren't noticed, the timing of the game's progression is being changed to be more forgiving, making it similar to cheating with a Game Genie code. If you're looking to enable it just for the NES, you can add the following lines to /opt/retropie/configs/nes/retroarch.cfg above the #include line.

    run_ahead_enabled = "true"
    run_ahead_frames = "1"
    run_ahead_secondary_instance = "true"
    


  • @mediamogul I've only noticed a jittery poor experience past 2 but yea 1 is safe. People thought I was crazy and they're setting it to 4 or 5.


  • Global Moderator

    @darksavior

    Somewhat frustrating is that a few games even have a varying amount of latency throughout different parts, making any setting inadequate. There's so many opportunities for error that I'm actually a little on the fence as to whether or not this should have been included as a feature at all. If nothing else, I personally think it should be automatically deactivated for the hardcore RetroAchievements, due to the capacity it has to be used as a cheating tool. Still, there's no denying it's a very impressive idea and what it's doing behind the scenes is an amazing feat of execution.



  • @mediamogul said in Maybe a solution for NES input lag.:

    @lesk said in Maybe a solution for NES input lag.:

    Where and how do I enabling that, and what does that do?

    The Run-ahead feature gives you the option of removing inherent frames of latency that are built in to every game past the Atari 2600. Each game can have different amount, but as mentioned above, there will always be at least one frame. Removing more frames than what is required can lead to visual and game play anomalies, such as a 'Game Over' screen appearing for as little as one frame when you haven't died. Even when anomalies aren't noticed, the timing of the game's progression is being changed to be more forgiving, making it similar to cheating with a Game Genie code. If you're looking to enable it just for the NES, you can add the following lines to /opt/retropie/configs/nes/retroarch.cfg above the #include line.

    run_ahead_enabled = "true"
    run_ahead_frames = "1"
    run_ahead_secondary_instance = "true"
    

    Thank you for the information! I'll try this when I get back from work, and only use run_ahead_frames = "1" instead of 2 ^^



Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.