Name: | Tolerance Timer (aka Input Buffering & "Coyote Time") |
Author: | RPG Hacker |
Added: | |
Version History: | View |
Tool: | Asar |
Requires Free Space: | Yes |
Bug Fix: | No |
Featured: | No |
Description: | (2021-05-05: made the patch less unwieldy, single-file, and compatible with newer Asar versions.) --- This patch aims at making the game's controls more responsive while also lessening the impact of input lag (such as in BSNES or Higan). So far, two different tricks are supported in the patch and both of them are based on simple timers that add some kind of tolerance window to the game. The first trick (aka "Coyote Time") allows Mario to perform late jumps. This means that if Mario is about to fall down a platform, as long as a certain amount of time hasn't passed yet, Mario can still perform a jump. The second trick (aka "Input buffering") basically does the exact opposite to this, as it allows Mario to perform early jumps. This means that if Mario is currently still in the air and pressing a jump button, if he lands on a platform within the next few frames, he will immediately jump off that platform, as if the jump button was pressed the exact moment he landed on it. By default, both hacks are set to use a frame count of 3 frames (which is equal to about 50 ms of time), but this can be adjusted in the patch. I personally think that 3 frames is a great starting point, but depending on your hack's design, other settings might work even better for you. You can also activate and deactivate both hacks independently from each other. Just take a look at ttconfig.cfg for details on each setting. Please play around with the patch for yourself to see how much of a difference it makes, espcially in hacks with tight and precise (single block to single block) jumps. Requires up to 5 bytes of free RAM, depending on which features you enable (3 for late jumps and 2 for early jumps). Feel free to contribute to this and other patches via my GitHub repository. |
Tags: | bsnes delay early early jump early jumps emulator enhancement gameplay higan input delay input lag input latency jump lag late late jump late jumps latency lorom physics sa-1 timer tolerance |
Comments: | 22 (jump to comments) |
Download
1.90 KiB | 241 downloads
Comments (22)
Well, I tried messing around with it some, and it looks like clearing it on level load works, but not with a retry system rom. I'll try using a RAM timer ($7E188A) that auto resets upon hurt or death, but if that doesn't work, is there any way I could insert some code into retry_extra.asm to manually reset the timer upon death? What would that code be exactly? Thanks!
edit: the death-reset free ram timer worked! Thanks for the help!
edit: I tested it on a completely clean rom without a retry system, and the problem still occurred. Seems that the timer and late-jump-allowed trigger stay active through death, and can even be carried over to completely different levels after going through the overworld.
If you wanna do me a solid, please also add "coyote time" and "input buffering" somewhere to the title or description, because that's what these things are officially known as.
for example:
function greater_or_equal_to_zero(value) = 1-(value>>31)
In my opinion, it's these little details that make the difference between an "A" hack and an "A+" hack.
Since the page is still accessable you can add it yourself with some extension or w/e (I edited smwc+ for that)
(I'm really missing the Recent Comments sections, I never see comments on my submissions until days later)
I haven't uploaded a patch in years and wasn't sure how SMW Central handles the tags, so I just applied my YouTube strategy of adding as many tags as possible. Will try to stick to just the most important tags next time.
But I seem to get input lag on ZSNES/ZMZ as well. 2-3 frames. It doesn't happen on real hardware.