@sdelfin Just to be clear, you are using frame advance to try and measure the latency for a software emulator? Your methodology is completely flawed for a real-world representation and to be completely frank, it demonstrates a real lack of understanding of both how these things work and what you are trying to measure.
By using frame advance, you are:
1. Eliminating any measure of controller input lag, including any wireless delay and USB processing.
2. Giving your software emulator essentially unlimited time to process each frame, which is the opposite of what it seems you are trying to measure which is the ability to keep pace in real-time with original hardware
3. Eliminated any measure of the latency of the particular display you are using.
What you have actually “discovered” with your result of about 1 frame of latency is in fact the latency of the original system, which for those without an OS or framebuffer will be for all intents and purposes, 1 frame, or about 16.7ms for a 60fps system. This is also coincidentally the time it takes a CRT to draw from the top left to the bottom right corners of its screen.
Rather than just be critical, I can suggest a low cost, low-tech way for you to do this properly:
1. Wire an LED into a particular controller button, such that when the button is pressed, it illuminates the LED.
2. Get a camera which has a proper slow motion ability, preferably 240fps like on modern iPhone or equivalent Android.
3. Start filming both the controller and the screen in slowmo whilst playing an emulated game running at full speed and press the button.
4. Open your video file in any software. Count the number of frames from when the LED light is first visible on the controller until the action is performed on screen (Eg Mario initiates his jump).
5. Divide the result by 4 if using 240fps for a 60hz console (or the relevant number based on your slowmo fps), and this will be the total input latency of your system, including controller, software emulator and display.
Edit: A similar result can be achieved with slightly less accuracy but more way more easily. Instead of the LED, use your finger to tap the button once as quickly as possible. Instead of measuring from when the LED comes on, time it from when your finger hits the button on the controller. This method would also be far better for handhelds.
I think if you measure this way you will be unpleasantly surprised. 😦
Comments 1
Re: Here's Another Look At Taki Udon's Game-Changing $150 Handheld MiSTer
@sdelfin Just to be clear, you are using frame advance to try and measure the latency for a software emulator? Your methodology is completely flawed for a real-world representation and to be completely frank, it demonstrates a real lack of understanding of both how these things work and what you are trying to measure.
By using frame advance, you are:
1. Eliminating any measure of controller input lag, including any wireless delay and USB processing.
2. Giving your software emulator essentially unlimited time to process each frame, which is the opposite of what it seems you are trying to measure which is the ability to keep pace in real-time with original hardware
3. Eliminated any measure of the latency of the particular display you are using.
What you have actually “discovered” with your result of about 1 frame of latency is in fact the latency of the original system, which for those without an OS or framebuffer will be for all intents and purposes, 1 frame, or about 16.7ms for a 60fps system. This is also coincidentally the time it takes a CRT to draw from the top left to the bottom right corners of its screen.
Rather than just be critical, I can suggest a low cost, low-tech way for you to do this properly:
1. Wire an LED into a particular controller button, such that when the button is pressed, it illuminates the LED.
2. Get a camera which has a proper slow motion ability, preferably 240fps like on modern iPhone or equivalent Android.
3. Start filming both the controller and the screen in slowmo whilst playing an emulated game running at full speed and press the button.
4. Open your video file in any software. Count the number of frames from when the LED light is first visible on the controller until the action is performed on screen (Eg Mario initiates his jump).
5. Divide the result by 4 if using 240fps for a 60hz console (or the relevant number based on your slowmo fps), and this will be the total input latency of your system, including controller, software emulator and display.
Edit: A similar result can be achieved with slightly less accuracy but more way more easily. Instead of the LED, use your finger to tap the button once as quickly as possible. Instead of measuring from when the LED comes on, time it from when your finger hits the button on the controller. This method would also be far better for handhelds.
I think if you measure this way you will be unpleasantly surprised. 😦