• Ever wanted an RSS feed of all your favorite gaming news sites? Go check out our new Gaming Headlines feed! Read more about it here.
  • We have made minor adjustments to how the search bar works on ResetEra. You can read about the changes here.

1-D_FE

Member
Oct 27, 2017
8,261
It's called "nSide Balanced" in the core downloader section.

Ah. Well that explains things. Never in a million years would I have put that together.

From what I've read on Discord it's mostly bparker and Tatsuya working on it right now.

Keep in mind the Higan cores have an extra frame of latency compared to all the other SNES cores. From what I've read it's because Brunnis' 1 frame lag fix has to be applied to core emulation code and makes it more messy or something. And it only helps latency with the libretro port. If the fix could be separated out into just the libretro port's code maybe byuu would be more into using it.

Did not know that.
 
Last edited:

Awakened

Member
Oct 27, 2017
506
Is that the one I saw Mudlord working on?
From what I've read on Discord it's mostly bparker and Tatsuya working on it right now.
Wait. How exactly do you download Higan_Balanced? I always found it strange that for download options, it only gives me Higan_accuracy as an option (if I want the newer Higan core). Those are always the two I choose from (Higan_Accuracy or BSNES balanced), but would love if Higan_Balanced was a download option. It seems like the no-brainer if given the option.
Keep in mind the Higan cores have an extra frame of latency compared to all the other SNES cores. From what I've read it's because Brunnis' 1 frame lag fix has to be applied to core emulation code and makes it more messy or something. And it only helps latency with the libretro port. If the fix could be separated out into just the libretro port's code maybe byuu would be more into using it.
 

Fularu

Member
Oct 25, 2017
10,609
What do you mean by vertical games? I've only tried it on a handful of SNES games (too many new games to play the oldies!) but CRT royale looks so good on my X800D.
Vertically displayed games. Since the screen was sideways, scanlines have to be vertical. The HLSL shaders in mame do it perfectly on their own and it looks fantastic (like say, DoDonPachi)

With the CRT-Royal filter it looks like shit so I can't use Retroarch for vertical oriented games, I use MAME instead.

Also Retroarch has very poor handling on vertical games anyway since shaders aren't "rotated" by default to match the screen orientation making the games rather weird loking with the wrong scanlines so you have to force a rotation and then rotate them again to have scanlines in the right position.

I just wish Retroarch would allow the cores to use their own shadders instead of the retroarch ones (especially since I honestly find hlsl to be a superior shader all around even for horizontal games)
 

Awakened

Member
Oct 27, 2017
506
Also Retroarch has very poor handling on vertical games anyway since shaders aren't "rotated" by default to match the screen orientation making the games rather weird loking with the wrong scanlines so you have to force a rotation and then rotate them again to have scanlines in the right position.
They actually are rotated properly by default for vert games in the FBA cores.
 

Deleted member 8752

User requested account closure
Banned
Oct 26, 2017
10,122
If you have a screen that has 2 frames of lag (~32ms), and use this trick to get rid of 2 frames of delay from the native hardware's coding, you'd end up with a total of 2 frames of input delay, which would match the native experience on CRT.

Now, if you were to then do it on a CRT, and use this trick to remove those 2 frames, you'd probably feel like super man or some shit.

Two frames faster than native hardware? Can't really picture it.
 

JershJopstin

Member
Oct 25, 2017
5,332
Running it at a higher setting than the game's input lag will lead to artifacts -- and unexpected behaviour, since e.g. when you press jump you will have jumped before you pressed it.
I'm probably just missing something - it took me several minutes to wrap my head around how this works in the first place - but why wouldn't setting the compensation for internal + display lag work? Let's say you have a game with 2 frames of lag, and you're running with 2 frames of display lag, so you set the compensation to 4 - by the time you see the frame on the display, the game itself would be polling inputs for the frame you're seeing, no?
 

dadjumper

Member
Oct 27, 2017
1,932
New Zealand
Tried this out last night with some SNES and Neo Geo stuff.
It's kinda wild. Mario World felt super responsive and fast. Super Castlevania IV wasn't sluggish like I'm used to. I felt like I was almost cheating with how easy it was to dodge fireballs and the like.
Neo Geo had some problems, at least with FBA. Lot of sound and graphical glitches, but man Garou felt good.
This is kinda making me wish I didn't just drop $200 on an SD2SNES. Almost.
 

gozu

Member
Oct 27, 2017
10,344
America
For people who are confused, my understanding is essentially:
Input lag means when you press a button, it takes a few frames before the input is registered and the resultant frames are generated. Because of this lag, the resultant frames are generated based on the state when the input was registered, not based on the state when you actually pressed the button.
This basically applies that input to actual frame it was pressed during, simulates/generates what the resultant frames would be, and shows you those instead

Thanks, this made it clearer for me. I think the reason why it's hard to wrap my head around it is because it's so crazy inefficient, cpu wise and my brain hates that.

The method is indeed brilliant.
 

Awakened

Member
Oct 27, 2017
506
I played around with run ahead tonight and tuned the settings for my humble, OCed 4.4Ghz 2500k. I'm using run ahead frames 2 with hard sync frames 0 for each of these:

Genesis Plus GX: Frame delay 6. Run ahead secondary instance needs to be enabled to fix CD audio in CD games. BootROM core option needs to be disabled or it causes freezes.
Mednafen NGP: Frame delay 6 and secondary instance enabled to fix audio.
Mednafen PCE_Fast: Frame delay 6.
Mesen: Frame delay 0.
mGBA: Frame delay 8 and secondary instance enabled to fix audio.
SameBoy: Frame delay 2.
SNES9x: Frame delay 4.

I didn't try certain cores like Desmume, Beetle PSX or Saturn since I'm pretty sure they're too heavy. Though maybe Dwedit can optimize the state code in PSX to make that feasible. Picodrive was one I found odd that didn't work at all, but I only use that for Chaotix.

I realize I might get into trouble using 2 frames for everything, but it seemed to work well without noticeable rollback effects during gameplay for the games I tested. I only really noticed a little snapback in certain platformers when pausing mid jump.

I get that feeling of having weighted training clothes taken off when comparing run ahead off to on; it's pretty nice.
 

Jazzem

Member
Feb 2, 2018
2,684
I played around with run ahead tonight and tuned the settings for my humble, OCed 4.4Ghz 2500k. I'm using run ahead frames 2 with hard sync frames 0 for each of these:

Genesis Plus GX: Frame delay 6. Run ahead secondary instance needs to be enabled to fix CD audio in CD games. BootROM core option needs to be disabled or it causes freezes.
Mednafen NGP: Frame delay 6 and secondary instance enabled to fix audio.
Mednafen PCE_Fast: Frame delay 6.
Mesen: Frame delay 0.
mGBA: Frame delay 8 and secondary instance enabled to fix audio.
SameBoy: Frame delay 2.
SNES9x: Frame delay 4.

I didn't try certain cores like Desmume, Beetle PSX or Saturn since I'm pretty sure they're too heavy. Though maybe Dwedit can optimize the state code in PSX to make that feasible. Picodrive was one I found odd that didn't work at all, but I only use that for Chaotix.

I realize I might get into trouble using 2 frames for everything, but it seemed to work well without noticeable rollback effects during gameplay for the games I tested. I only really noticed a little snapback in certain platformers when pausing mid jump.

I get that feeling of having weighted training clothes taken off when comparing run ahead off to on; it's pretty nice.

Thanks for the comprehensive results, will be using these as a guideline :)
 

Awakened

Member
Oct 27, 2017
506
Whoa! GBA games had eight frames of input lag?!?
Frame delay is a different lag reducing method separate from run ahead. It doesn't remove full frames of lag like run ahead, but a few ms for each number you increment it up. It's best to set that as high as you can without sound crackling after enabling the more effective hard sync and run ahead.
 

lake

Member
Oct 27, 2017
1,289
You can already do that (but you know it :p) with some very specific (and expensive) video cards

No need for expensive. I run a GTX 1060 and Nvidia cards are super-bad for outputting low-res analog video. So I got a $50 XFX R5 200 from Best Buy, installed CRT Emudriver, used the included vmmaker.exe to install a bunch of 240p/low-res modes onto the Radeon, and got a VGA -> Component converter off eBay. (Could have also gotten a cheaper VGA -> SCART RGB converter.)

Bam: CRT output on a Win10 box for not too much money. The Nvidia and AMD GPUs coexist mostly happily, though I've taken to disabling the AMD when not using the CRT because it seems to lead to Windows desktop lagging a bit.

I'm real curious if I will have a need for the amazing lag-reduction feature covered in this thread when using the CRT. Thinking not. As a stickler for accuracy I would (probably) not want to set the input lag lower than it is on real console hardware.
 

DigitalTravis

Member
Oct 28, 2017
290
No need for expensive. I run a GTX 1060 and Nvidia cards are super-bad for outputting low-res analog video. So I got a $50 XFX R5 200 from Best Buy, installed CRT Emudriver, used the included vmmaker.exe to install a bunch of 240p/low-res modes onto the Radeon, and got a VGA -> Component converter off eBay. (Could have also gotten a cheaper VGA -> SCART RGB converter.)

Bam: CRT output on a Win10 box for not too much money. The Nvidia and AMD GPUs coexist mostly happily, though I've taken to disabling the AMD when not using the CRT because it seems to lead to Windows desktop lagging a bit.

I'm real curious if I will have a need for the amazing lag-reduction feature covered in this thread when using the CRT. Thinking not. As a stickler for accuracy I would (probably) not want to set the input lag lower than it is on real console hardware.

Depends. You have to have a pretty robust system to get near the same as original hardware input lag. The following would get you ALMOST there:

video_threaded = false
video_hard_sync=true
video_hard_sync_frames=0
video_max_swapchain_images=2
video_frame_delay= (as high as you can go, 8+ get get to same frame)

This combined with the raphnet v2 adapter for your controller of your choice only gets you "same frame" latency, which still isn't exactly perfect.

Add in this and you can get another frame or higher. So, you can reduce the requirement of having to set frame delay high and getting performance headroom. If you can knock off a frame, you get same as hardware without the frame delay, matching original hardware. If you can remove 2 frames than you can lose the requirement to use a raphnet v2 adapter.

I played around with run ahead tonight and tuned the settings for my humble, OCed 4.4Ghz 2500k. I'm using run ahead frames 2 with hard sync frames 0 for each of these:

Genesis Plus GX: Frame delay 6. Run ahead secondary instance needs to be enabled to fix CD audio in CD games. BootROM core option needs to be disabled or it causes freezes.
Mednafen NGP: Frame delay 6 and secondary instance enabled to fix audio.
Mednafen PCE_Fast: Frame delay 6.
Mesen: Frame delay 0.
mGBA: Frame delay 8 and secondary instance enabled to fix audio.
SameBoy: Frame delay 2.
SNES9x: Frame delay 4.

I didn't try certain cores like Desmume, Beetle PSX or Saturn since I'm pretty sure they're too heavy. Though maybe Dwedit can optimize the state code in PSX to make that feasible. Picodrive was one I found odd that didn't work at all, but I only use that for Chaotix.

I realize I might get into trouble using 2 frames for everything, but it seemed to work well without noticeable rollback effects during gameplay for the games I tested. I only really noticed a little snapback in certain platformers when pausing mid jump.

I get that feeling of having weighted training clothes taken off when comparing run ahead off to on; it's pretty nice.

Have you done any testing for FBA? I wonder if CPS2 or CPS3 games had any delay built in, or if any Neo Geo games did?
 
Last edited:

lake

Member
Oct 27, 2017
1,289
Interesting. Thanks for delving into those details.

I was unaware of the Raphnet products. They look great.
 

DigitalTravis

Member
Oct 28, 2017
290
Interesting. Thanks for delving into those details.

I was unaware of the Raphnet products. They look great.

Make sure to grab the v2, which allows for the low polling rates that allow additional input lag to be removed from the chain. Also be aware that this polling rate is only available with a single controller.
 

lake

Member
Oct 27, 2017
1,289
(to clarify...)
Do you mean only a single controller on the PC at any given time can enjoy the highest polling rate even if multiple adapters are in use? (Doesn't sound like a big deal if so.) Or maybe you mean if two controllers are hooked up with separate adapters, neither can have the ultra-low latency (so 2-player games can't enjoy the fastest input).

Regarding v2, there's at least one v3 already. Maybe you are specifically recommending products with the advXarch tech?
 

DigitalTravis

Member
Oct 28, 2017
290
(to clarify...)
Do you mean only a single controller on the PC at any given time can enjoy the highest polling rate even if multiple adapters are in use? (Doesn't sound like a big deal if so.) Or maybe you mean if two controllers are hooked up with separate adapters, neither can have the ultra-low latency (so 2-player games can't enjoy the fastest input).

Regarding v2, there's at least one v3 already. Maybe you are specifically recommending products with the advXarch tech?

Wow, didn't realize there was v3 stuff, to be honest I know little about it. That said, with the v2, you would be limited to 1 controller per PC at the higher polling rates, even with multiple adapters. I do not see anything indicating they resolved this issue on v3 models but you are 100% correct, advXarch is the technology that allows this.
 

Aaronmac

Member
Nov 12, 2017
554
Very creative system. I might just have to download this in order to experience how much better it feels to play!
 

Awakened

Member
Oct 27, 2017
506
Have you done any testing for FBA? I wonder if CPS2 or CPS3 games had any delay built in, or if any Neo Geo games did?
I use MAME since it supports a few games I like that FBA doesn't yet. I think run ahead doesn't work with MAME since it uses upstream's save state system instead of libretro's. I've heard run ahead works with FBA, but not sure if anyone's done frame advance testing to see the correct number of lag frames those games have.
 

DigitalTravis

Member
Oct 28, 2017
290
I use MAME since it supports a few games I like that FBA doesn't yet. I think run ahead doesn't work with MAME since it uses upstream's save state system instead of libretro's. I've heard run ahead works with FBA, but not sure if anyone's done frame advance testing to see the correct number of lag frames those games have.

How does one test for the correct lag frames? Trial and look for artifacting? I have FBA running Metal Slug 3 with a frame delay of 4 with run ahead at 3 and it is hilariously beautiful compared to even my "better than most" old settings. I am not sure what would be considered accurate. I do know with the typical lag reduction setting and that combo of 4 frames delay and 3 run ahead it feels better than I have ever had Metal Slug 3 running in emulation (and my suspicion is that it is probably better than actual hardware at those settings).
 
Last edited:
OP
OP
Durante

Durante

Dark Souls Man
Member
Oct 24, 2017
5,074
I'm probably just missing something - it took me several minutes to wrap my head around how this works in the first place - but why wouldn't setting the compensation for internal + display lag work? Let's say you have a game with 2 frames of lag, and you're running with 2 frames of display lag, so you set the compensation to 4 - by the time you see the frame on the display, the game itself would be polling inputs for the frame you're seeing, no?
To answer that question, and to also make this more clear to anyone who might still be a bit confused, I made an illustration:
retroarchr1ppd.png

What it's supposed to show is
  • A blue player, and a red enemy moving towards them. (excuse the programmer art :P)
  • Time goes from the left to the right.
  • Every rectangle is one frame.
  • The first row of rectangles is the sequence of frames produced by the game without this "trick".
    As you can see, it takes two frames after the button press for its result (a jump) actually starting to happen.
  • Every row down is one more frame of "render ahead", and compensates for one frame of added latency.
  • At 2 frames latency compensation, the response is "perfect", happening right after the button press.
  • And now to finally answer your question: at 3 frames or more of compensation with only 2 frames of latency, there will be an artifact, in this case manifesting as the character abruptly moving twice the distance of what it is supposed to be moving per frame. This could be any other more sever artifact or artifacts, like e.g. "game over"ing for a frame and it then never having happened.
Any other sources of latency, like display latency, have nothing directly to do with any of this: the display will always just be tasked with showing one row (whichever one you select) of frames from this illustration.
 
Last edited:

Awakened

Member
Oct 27, 2017
506
How does one test for the correct lag frames?
From Brunnis on the libretro forums:
Instead, I realized that this is incredibly easy to test with RetroArch. RetroArch has the ability to pause a core and advance it frame by frame. Using this feature, I made the following test:

  1. Pause emulation (press 'p' button on keyboard).
  2. Press and hold the jump button on the controller.
  3. Advance emulation frame by frame (press 'k' button on keyboard) until the character jumps.
The number of k presses before you get a reaction should be the number of lag frames you can safely remove with run ahead.
 
Last edited:
Oct 25, 2017
3,723
No, this method lets you count lag frames at the core level, so frontend settings don't effect it. Well, unless run ahead works while emulation is paused. I would assume you'd want to turn that off before figuring out the lag frames.
It would certainly be great for testing the stuff, that's for damn sure.
May be trickier for 3D games though, to tell when it accepts input.
 

DigitalTravis

Member
Oct 28, 2017
290
So is this something a raspberry pi could handle? Where in the cpu requirement range are we? Pi? Core 2 Duo? Older core series like i5 750? Newer? I'm not good at evaluating cpu requirements for this stuff, but it would be nice to know a baseline for folks looking for a dedicated box that don't want to go the 3-400$ route on something like a 2200g.
 

lake

Member
Oct 27, 2017
1,289
Negative, a Pi couldn't even come close. There is more detailed discussion of your question earlier in the thread.

In general I would never skimp on CPU in an emulator box, as single-threaded performance can be real important here.
 

Parsnip

Member
Oct 25, 2017
3,913
Finland
RetroArch 1.7.2 is out in case anyone was waiting for non-nightlies.

Spent a little time messing with this and various cores, seems pretty rad.
Only obvious issue was with Beetle PSX where the RetroArch overlay notifications wouldn't stop mentioning that "the virtual cd drive tray closed".
 

Deleted member 11018

User requested account closure
Banned
Oct 27, 2017
2,419
I am not sure i get it, tell me if i am mistaken.

let's say we live in a world when a frame rate is 1 frame per second,
[ ] is my hit box and X is a bullet alive O is a bullet killed, (sound).

Two hypothesis: restore + advance 1 frame of result and restore + advance 2 frames of result

time T 1
visual in the PC
[ ]_X
visual on laggy TV
[ ]__X
sound, direct to PC, no lag
[ ]_X (note 1)
-SAVE T1 PC-
ACTION: NONE

time T 2
visual in the PC
[ ]X
visual on laggy TV
[ ]_X
sound
[ ]X (note 2)
-SAVE T2 PC-
ACTION: NONE

time T 3
visual in the PC
[ X HIT !
visual on laggy TV
[ ]X
sound
[ X HIT (YOU ARE DEAD Note 3)
-SAVE T3 PC-
ACTION: BUTTON PRESS


time T 4
RESTORE PC-T2, apply press, display first frame of result
visual in the PC
[ ]O
visual on laggy TV
[ X HIT!
sound
[ ]O + (bullet killed note 3)

time T 5
visual in the PC
[ ] alone
visual on laggy TV
[ ]O
sound
[ ] alone (note 4)

time T6
visual in the PC
You WIN !
visual on laggy TV
[ ] alone
sound
You WIN ! (note 5)

Time T7
visual on laggy TV
You WIN !
sound
(no sound)

It would mean you would experience on laggy TV,
[ ]__X (note 1)
[ ]_X (note 2)
[ ]X (YOU ARE DEAD Note 3) *BUTTON PRESS*
[ X HIT! (bullet killed + note 3)
[ ]O (note 4)
[ ] alone (note 5)
You WIN ! (no sound)
artifact of hearing your death when you press the button, seeing a hit and hearing the bullet being cancelled, repetition of sound note 3, pacing damaged

if you restore T2 + apply button+let go 2 frames

time T 4
RESTORE PC-T2, apply press, skip first frame of result (bullet cancel), display second frame of result
visual in the PC
[ ] alone
visual on laggy TV
[ X HIT!
sound
[ ] alone (note 4)

time T 5
visual in the PC
You WIN !
visual on laggy TV
[ ] alone
sound
You WIN ! (note 5)

time T6
visual on laggy TV
You WIN !
(no sound)

It would mean you would experience on laggy TV,
[ ]__X (note 1)
[ ]_X (note 2)
[ ]X (YOU ARE DEAD Note 3) *BUTTON PRESS*
[ X HIT! (note 4)
[ ] alone (You win note 5)
You WIN ! (no sound)

artifact of hearing your death, seing a hit, not seeing the immediate result of your bullet cancel, however sound continuity and pacing is maintained (no note 3 repetition)


...
yeah if i am not mistaken
... i don't want audiovisual artifacts... sure with shorter frame times sound will just pop and visual artefacts will be subliminal but it's still not quite what i need.
I really need lagless things xD
 
OP
OP
Durante

Durante

Dark Souls Man
Member
Oct 24, 2017
5,074
MikeNeko
It is artifact-less as long as you are only cancelling out internal game lag.
If you were to run ahead for more frames than the internal game lag, then you would get artifacts.
(See the image I posted above)
 

Deleted member 11018

User requested account closure
Banned
Oct 27, 2017
2,419
MikeNeko
It is artifact-less as long as you are only cancelling out internal game lag.
If you were to run ahead for more frames than the internal game lag, then you would get artifacts.
(See the image I posted above)

Oooki doki, i bet i am confused because i put my real experience of TV lag to picture it in my mind (when picture and sound are already out of sync by a wide margin).
Would make much more sense if i picture it as rewinding a few HBlanks.
Anyway thanks for taking the time to illustrate it for us, i ll have to code a slowed down example to better integrate the tech in my brain (it managed to digest special relativity and path integrals, no reason it shouldn't be able to digest that).
 
Oct 25, 2017
3,723
Oooki doki, i bet i am confused because i put my real experience of TV lag to picture it in my mind (when picture and sound are already out of sync by a wide margin).
Would make much more sense if i picture it as rewinding a few HBlanks.
Anyway thanks for taking the time to illustrate it for us, i ll have to code a slowed down example to better integrate the tech in my brain (it managed to digest special relativity and path integrals, no reason it shouldn't be able to digest that).
You aren't cancelling TV lag, you are cancelling the lag caused by the actual code of the game itself.
 

Lylo

Member
Oct 25, 2017
3,174
This is really cool! I'm talking with no technical knowledge here, but couldn't something similar to this technique be implemented to reduce input lag in streaming apps/services like Moonlight?
 
OP
OP
Durante

Durante

Dark Souls Man
Member
Oct 24, 2017
5,074
This is really cool! I'm talking with no technical knowledge here, but couldn't something similar to this technique be implemented to reduce input lag in streaming apps/services like Moonlight?
In theory, as long as the game being streamed has internal lag, yes.

In practice, there are several reasons it doesn't really work, the two I can think of immediately are:
  • Checkpointing/restarting a modern game with an external program is difficult, and performance prohibitive
  • And the same goes for running multiple frames per frame
 

RowdyReverb

Member
Oct 25, 2017
5,934
Austin, TX
It would be really cool if something like this could be applied as we age and our reaction times slow down. Like if games started with a "reaction speed" calibration test
 

RowdyReverb

Member
Oct 25, 2017
5,934
Austin, TX
This doesn't sound useful at all. Everyone benefits from low input latency, even people with super fast reaction speed.
I know it benefits everybody by virtually eliminating latency, but this tech works by in effect sending your input back in time from the game's perspective. If your baseline reaction speed was 300ms slower than your peers, maybe sending it a few frames further back could make games feel more fair
 

Wowfunhappy

Member
Oct 27, 2017
3,102
I know it benefits everybody by virtually eliminating latency, but this tech works by in effect sending your input back in time from the game's perspective. If your baseline reaction speed was 300ms slower than your peers, maybe sending it a few frames further back could make games feel more fair

So you're making the game feel worse overall for people with fast reaction times?
 

RowdyReverb

Member
Oct 25, 2017
5,934
Austin, TX
So you're making the game feel worse overall for people with fast reaction times?
No, no. I'm suggesting a system where you could modify the latency correction, just like Guitar Hero games do. I'm saying that while this feature is awesome, I'm wondering if they could take it further to help enable more people to enjoy older games that are more demanding of quick reflexes
 

Wowfunhappy

Member
Oct 27, 2017
3,102
No, no. I'm suggesting a system where you could modify the latency correction, just like Guitar Hero games do. I'm saying that while this feature is awesome, I'm wondering if they could take it further to help enable more people to enjoy older games that are more demanding of quick reflexes

It makes much more sense IMO to just give everyone the lowest latency that is possible given the game and the user's hardware. All games feel subtly better with latency reduced, to basically everyone.

Rhythm game latency correction is different because the exact time you should press is known in advance, and you're trying to be on beat to the music rather than reacting to specific situations.
 

RowdyReverb

Member
Oct 25, 2017
5,934
Austin, TX
It makes much more sense IMO to just give everyone the lowest latency that is possible given the game and the user's hardware. All games feel subtly better with latency reduced, to basically everyone.

Rhythm game latency correction is different because the exact time you should press is known in advance, and you're trying to be on beat to the music rather than reacting to specific situations.
Right, but theoretically with this method you could achieve not only zero, but negative latency by applying the input to a slightly earlier save state.
So, when I'm old and slow and swear that I pressed jump when Mario was at the edge of a pit, even though I was truly slightly late, I could still make the jump.
 

Custódio

Member
Oct 25, 2017
1,901
Brazil, Unaí/MG
Right, but theoretically with this method you could achieve not only zero, but negative latency by applying the input to a slightly earlier save state.
So, when I'm old and slow and swear that I pressed jump when Mario was at the edge of a pit, even though I was truly slightly late, I could still make the jump.

This method is only for zero. See below:

No, you cannot set this higher than the native game input lag frames. As in, if a game's input lag on real hardware is 1 frame, then you can only remove 1 frame of lag with this, if it has 2 frames then you can remove 2 frames and so on.
Running it at a higher setting than the game's input lag will lead to artifacts -- and unexpected behaviour, since e.g. when you press jump you will have jumped before you pressed it.
 

Awakened

Member
Oct 27, 2017
506
I did some frame advance testing and I think the default 1 frame of run ahead is appropriate for the majority of games. And I found out you need to subtract the last K press to get the actual number of frames to set per game. (Edit: Read my last post again and I said K presses before the reaction, so I guess I was right before. Still, maybe this further clarification can be useful.) So for example (Run Ahead is disabled for these tests):

Chrono Trigger: During gameplay press P to pause, hold a direction, press K twice and Crono should switch to a walking sprite on the second K press. CT has one lag frame for movement.
Sonic 3 Complete: Same as CT but with jump.
Super Mario World: Press P to pause, hold jump, press K three times and Mario should switch to a jumping sprite on the third K press. SMW has two frames of lag for jumping.

You can check if you set it right by enabling Run Ahead and if you get a reaction in only one K press, you've set the amount of Run Ahead frames correctly. SNES9x sometimes gives me a black screen when pressing P with Run Ahead enabled, but you can press K once to get rid of that, then hold your input and test.
 
Last edited: