I spent another week working on metrics and integration. Some time was also spent on building the final presentation that Alton will be giving on Monday.

I made some small iterations on the latency counter. I decided to keep the counter pessimistic, in that the counter goes until the next relevant VSYNC pulse to stop counting the latency of a particular user input. This is pessimistic because the screen is rendered row-major pixel-by-pixel, so theoretically a user could see the information before the VSYNC pulse. To handle the situation that the user has an input past the rendering of the playfield and needs to see the next frame to see the result of their change, I created an additional delay parameter that accounts for this margin. If the counter is greater than the total delay when the VSYNC pulse is detected, then the playfield was being rendered when then input hit and the VSYNC pulse stops the counter, otherwise the input latency is measured to the next VSYNC pulse.

Integration is tricky as expected.

This week we ran into a few issues with crosstalk. First, in the controllers we had an issue where releasing any button could cause any combination of the other buttons to pulse and detect and input. To determine this, we created a to latch inputs to LEDs to see if other buttons were being detected when we press one button specifically. Further work determined that a 63-cycle continuous input was long enough to accurately differentiate a user input and a crosstalk signal and only introduces 0.000000126 seconds of latency. This is less than a hundred-thousandth of a frame, so we deemed this an acceptable loss in latency to handle the crosstalk in the controller.

In the network stacks we saw a similar issue where crosstalk causes our packet’s sequence numbers to bitflip. Instead of receiving “1111” it seems we sometimes get a “0” in the bits, or vice versa: a “1” in a “0000”. This we’re handling by using a summation of the bits in the field and rounding off the sum.

There’s still more work to do in the integration since Eric is still wrapping up a couple modules. I’ve started integrating the modules in their current state since they’re almost finalized, but some real-world bugs are hard to find. I’m planning to finish up integration as soon as the modules are finalized and then we’ll be working on the demo video after that.

 

Deanyone’s Status Update for April 25

Leave a Reply

Your email address will not be published. Required fields are marked *