reduce text size of "footnotes"
All checks were successful
Deploy Website / build (push) Successful in 58s
Deploy Website / deploy (push) Successful in 39s

This commit is contained in:
Naxdy 2024-04-09 19:56:44 +02:00
parent 1b26eecae7
commit 20886038f0
Signed by: Naxdy
GPG key ID: CC15075846BCE91B
2 changed files with 4 additions and 4 deletions

View file

@ -14,7 +14,7 @@ The Nintendo Switch supports polling USB devices at up to $125\mathrm{Hz}$, or o
The reason it's "up to 3 times" and not "3 times, period" is because the USB polling and the game's frame draws are not in sync. Otherwise, a polling interval of $\approx16.66\mathrm{ms}$ would be perfectly sufficient, provided the host polls the adapter right before the frame is supposed to be drawn$^1$. Due to technical reasons, this is not possible however, so we are stuck with two asynchronous intervals: Polling & frame draws. The reason it's "up to 3 times" and not "3 times, period" is because the USB polling and the game's frame draws are not in sync. Otherwise, a polling interval of $\approx16.66\mathrm{ms}$ would be perfectly sufficient, provided the host polls the adapter right before the frame is supposed to be drawn$^1$. Due to technical reasons, this is not possible however, so we are stuck with two asynchronous intervals: Polling & frame draws.
$^1$even if the host didn't poll the adapter right before the frame is drawn, it would still be fine, because as long as the polling interval is a divisor of the frame draw time, at least input _integrity_ would be guaranteed, even if _latency_ could still be variable depending on when your device was plugged in $^1$<small>even if the host didn't poll the adapter right before the frame is drawn, it would still be fine, because as long as the polling interval is a divisor of the frame draw time, at least input _integrity_ would be guaranteed, even if _latency_ could still be variable depending on when your device was plugged in</small>
## Input Integrity ## Input Integrity
@ -48,7 +48,7 @@ Since the NaxGCC connects directly to the console and eliminates the joybus prot
This isn't the end of it though. NaxGCC connecting directly to the console brings another advantage with it, namely we can "trick" the console into sampling the controller at a different interval altogether, one that works to our advantage. We can actually pretend to be a "laggy" USB device, by artificially introducing a variable delay in order to ensure the controller actually sends its button state to the console every $\approx8.33\mathrm{ms}$ instead of every $8\mathrm{ms}$. Why $\approx8.33$? Because $\approx8.33$ is a divisor of $\approx16.66$ (the game's frame draw time), meaning the controller will be polled exactly twice as often as the game updates, and eliminating the chance of the polling intervals and the game's frame draw cycles offsetting to your disadvantage. This ensures that if you press and hold a button for $100\mathrm{ms}$ (exactly 6 frames), it will _always_$^1$ translate to 6 frames in-game (with polling at $8\mathrm{ms}$, there is a $\approx 24.01\%$ chance of it registering as 5 or 7 frames instead, as we established above). This isn't the end of it though. NaxGCC connecting directly to the console brings another advantage with it, namely we can "trick" the console into sampling the controller at a different interval altogether, one that works to our advantage. We can actually pretend to be a "laggy" USB device, by artificially introducing a variable delay in order to ensure the controller actually sends its button state to the console every $\approx8.33\mathrm{ms}$ instead of every $8\mathrm{ms}$. Why $\approx8.33$? Because $\approx8.33$ is a divisor of $\approx16.66$ (the game's frame draw time), meaning the controller will be polled exactly twice as often as the game updates, and eliminating the chance of the polling intervals and the game's frame draw cycles offsetting to your disadvantage. This ensures that if you press and hold a button for $100\mathrm{ms}$ (exactly 6 frames), it will _always_$^1$ translate to 6 frames in-game (with polling at $8\mathrm{ms}$, there is a $\approx 24.01\%$ chance of it registering as 5 or 7 frames instead, as we established above).
$^1$unfortunately, due to real world limitations like timing jitter, this is not _always_ the case, but it is the case $\gt 98\%$ of the time, see below for more info $^1$<small>unfortunately, due to real world limitations like timing jitter, this is not _always_ the case, but it is the case $\gt 98\%$ of the time, see below for more info</small>
## The Experiment ## The Experiment

View file

@ -32,9 +32,9 @@ The following parts usually have low stock and pre-ordering them is advised:
- [2x MCP2302 ADC](https://jlcpcb.com/partdetail/MicrochipTech-MCP3202_CISN/C56997) - [2x MCP2302 ADC](https://jlcpcb.com/partdetail/MicrochipTech-MCP3202_CISN/C56997)
- [1x Crystal Oscillator](https://jlcpcb.com/partdetail/390662-TAXM12M4RKDCDT2T/C403945)$^2$ - [1x Crystal Oscillator](https://jlcpcb.com/partdetail/390662-TAXM12M4RKDCDT2T/C403945)$^2$
$^1$if you're planning on swapping out the Winbond chip for a different one, note that the serial number reported by the NaxGCC upon plug-in may no longer be unique $^1$<small>if you're planning on swapping out the Winbond chip for a different one, note that the serial number reported by the NaxGCC upon plug-in may no longer be unique</small>
$^2$you need 1 more cystal oscillator per order you plan to place regardless of how many boards are in the order $^2$<small>you need 1 more cystal oscillator per order you plan to place regardless of how many boards are in the order</small>
Once you've clicked on each link and added the quantities you need into your cart, click the cart icon in the top right, go to the "Parts Manager Tab", to the "Order Parts" subtab, to the "Cart" subtab as follows: Once you've clicked on each link and added the quantities you need into your cart, click the cart icon in the top right, go to the "Parts Manager Tab", to the "Order Parts" subtab, to the "Cart" subtab as follows: