From 49fa994d4745edecf9d36d373f2a1e5120d8b3b3 Mon Sep 17 00:00:00 2001 From: Kevin Nguyen Date: Sun, 3 Mar 2024 12:34:43 -0700 Subject: [PATCH 1/2] Add README Versioning Move README to /docs Replace home.mdx and use README directly Update remote-content to prepend front matter to README --- .gitignore | 3 +- docs/README.md | 109 ++++++++++++++++++ docs/home.mdx | 12 -- docusaurus.config.js | 30 ++++- sidebars.js | 4 - versioned_docs/version-0.7.7/README.md | 109 ++++++++++++++++++ versioned_docs/version-0.7.7/home.mdx | 12 -- .../version-0.7.7-sidebars.json | 4 - 8 files changed, 246 insertions(+), 37 deletions(-) create mode 100644 docs/README.md delete mode 100644 docs/home.mdx create mode 100644 versioned_docs/version-0.7.7/README.md delete mode 100644 versioned_docs/version-0.7.7/home.mdx diff --git a/.gitignore b/.gitignore index 60d995c..33f9be8 100644 --- a/.gitignore +++ b/.gitignore @@ -16,5 +16,4 @@ yarn-error.log build .docusaurus -.cache-loader -README.md \ No newline at end of file +.cache-loader \ No newline at end of file diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..cefaea8 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,109 @@ +--- +hide_title: true +title: "Home" +pagination_next: null +pagination_prev: null +description: "Homepage for GP2040-CE Documentation" +--- + +

+ + GP2040-CE + +

+ +

+ Multi-Platform Gamepad Firmware for RP2040 +

+ +

+ + +
+ + +

+ +

+ GP2040-CE (Community Edition) is a gamepad firmware for the Raspberry Pi Pico and other boards based on the RP2040 microcontrollers that combines multi-platform compatibility, low latency and a rich feature set to provide endless customization possibilities without sacrificing performance. +

+ +

+ GP2040-CE is compatible with PC, PS3 and PS4, Nintendo Switch, Steam Deck, MiSTer and Android. +

+ +## Links + +[Downloads](https://gp2040-ce.info/downloads/download-page) | [Installation](https://gp2040-ce.info/installation) | [Wiring](https://gp2040-ce.info/controller-build/wiring) | [Usage](https://gp2040-ce.info/usage) | [FAQ](https://gp2040-ce.info/faq/faq-general) | [GitHub](https://github.com/OpenStickCommunity/GP2040-CE) + +Full documentation can be found at [https://gp2040-ce.info](https://gp2040-ce.info) + +## Features + +- Select from 13 input modes including X-Input, Nintendo Switch, Playstation 4/5, Xbox One, D-Input, and Keyboard +- Overclocked polling rate for an average of 0.76ms of input latency in Xinput and on average 1.72 for Playstation 4/5. +- Multiple SOCD cleaning modes - Up Priority (a.k.a. Stickless), Neutral, and Second Input Priority. +- Left and Right stick emulation via D-pad inputs as well as dedicated toggle switches. +- Dual direction via D-pad + LS/RS. +- Reversed input via a button. +- [Turbo and Turbo LED](https://gp2040-ce.info/add-ons/turbo) with selectable speed +- Per-button RGB LED support. +- PWM Player indicator LED support (XInput only). +- Multiple LED profiles support. +- Support for 128x64 monochrome I2C displays - SSD1306, SH1106, and SH1107 compatible. +- Custom startup splash screen and easy image upload via web configuration. +- Support for passive buzzer speaker (3v or 5v). +- [Built-in, embedded web configuration](https://gp2040-ce.info/web-configurator) - No download required! + +Visit the [GP2040-CE Usage](https://gp2040-ce.info/usage) page for more details. + +## Performance + +Input latency is tested using the methodology outlined at [WydD's inputlag.science website](https://inputlag.science/controller/methodology), using the default 1000 Hz (1 ms) polling rate in the firmware. You can read more about the setup we use to conduct latency testing [HERE](https://github.com/OpenStickCommunity/Site/blob/main/latency_testing/README.md) if you are interested in testing for yourself or would just like to know more about the devices used to do the testing. + +| Version | Mode | Poll Rate | Min | Max | Avg | Stdev | % on time | %1f skip | %2f skip | +| ------- | ------------ | --------- | ------- | ------- | ------- | ------- | --------- | -------- | -------- | +| v0.7.7 | Xinput | 1 ms | 0.45 ms | 1.28 ms | 0.76 ms | 0.24 ms | 98.48% | 1.52% | 0% | +| v0.7.7 | Switch | 1 ms | 0.41 ms | 1.22 ms | 0.72 ms | 0.24 ms | 98.54% | 1.46% | 0% | +| v0.7.7 | Dinput (PS3) | 1 ms | 0.44 ms | 1.27 ms | 0.75 ms | 0.24 ms | 98.49% | 1.51% | 0% | +| v0.7.7 | PS4 | 1 ms | 0.55 ms | 2.17 ms | 0.86 ms | 0.24 ms | 98.30% | 1.70% | 0% | +| v0.7.7 | PS4 Hack | 1 ms | 0.55 ms | 1.38 ms | 0.86 ms | 0.24 ms | 98.32% | 1.68% | 0% | + +Full results can be found in the [GP2040-CE v0.7.7 Firmware Latency Test Results](https://github.com/OpenStickCommunity/Site/raw/main/latency_testing/GP2040-CE_Firmware_Latency_Test_Results_v0.7.7.xlsx) .xlsx Sheet. + +Results from v0.7.6 can be found [HERE](https://github.com/OpenStickCommunity/Site/raw/main/latency_testing/GP2040-CE_Firmware_Latency_Test_Results_v0.7.6.xlsx). Previous results from v0.7.5 and earlier can be found in the [GP2040-CE v0.7.5 (and before) Firmware Latency Test Results](https://github.com/OpenStickCommunity/Site/raw/main/latency_testing/GP2040-CE_Firmware_Latency_Test_Results_v0.7.5_and_before.xlsx) .xlsx Sheet. + +## Support + +If you would like to discuss features, issues or anything else related to GP2040-CE please [create an issue](https://github.com/OpenStickCommunity/GP2040-CE/issues/new) or join the [OpenStick GP2040-CE Discord](https://discord.gg/k2pxhke7q8) support channel. + +## Contributing + +Want to help improve GP2040-CE? There are a bunch of ways to contribute! + +### Community Participation + +Have an idea for a cool new feature, or just want to discuss some technical details with the developers? Join the [OpenStick GP2040-CE Discord](https://discord.gg/k2pxhke7q8) server to participate in our active and ever-growing community! + +### Pull Requests + +Pull requests are welcome and encouraged for enhancements, bug fixes and documentation updates. + +Please respect the coding style of the file(s) you are working in, and enforce the use of the `.editorconfig` file when present. + +## Acknowledgements + +- [FeralAI](https://github.com/FeralAI) for building [GP2040](https://github.com/FeralAI/GP2040) and laying the foundation for this community project +- Ha Thach's excellent [TinyUSB library](https://github.com/hathach/tinyusb) examples +- fluffymadness's [tinyusb-xinput](https://github.com/fluffymadness/tinyusb-xinput) sample +- Kevin Boone's [blog post on using RP2040 flash memory as emulated EEPROM](https://kevinboone.me/picoflash.html) +- [bitbank2](https://github.com/bitbank2) for the [OneBitDisplay](https://github.com/bitbank2/OneBitDisplay) and [BitBang_I2C](https://github.com/bitbank2/BitBang_I2C) libraries, which were ported for use with the Pico SDK +- [arntsonl](https://github.com/arntsonl) for the amazing cleanup and feature additions that brought us to v0.5.0 +- [alirin222](https://github.com/alirin222) for the awesome turbo code ([@alirin222](https://twitter.com/alirin222) on Twitter) +- [deeebug](https://github.com/deeebug) for improvements to the web-UI and fixing the PS3 home button issue +- [TheTrain](https://github.com/TheTrainGoes/GP2040-Projects) and [Fortinbra](https://github.com/Fortinbra) for helping keep our community chugging along +- [PassingLink](https://github.com/passinglink/passinglink) for the technical details and code for PS4 implementation +- [Youssef Habchi](https://youssef-habchi.com/) for allowing us to purchase a license to use Road Rage font for the project +- [tamanegitaro](https://github.com/tamanegitaro/) and [alirin222](https://github.com/alirin222) for the basis of the mini/classic controller work +- [Ryzee119](https://github.com/Ryzee119) for the wonderful [ogx360_t4](https://github.com/Ryzee119/ogx360_t4/) and xid_driver library for Original Xbox support +- [Santroller](https://github.com/Santroller/Santroller) and [GIMX](https://github.com/matlo/GIMX) for technical examples of Xbox One authentication using pass-through diff --git a/docs/home.mdx b/docs/home.mdx deleted file mode 100644 index be28e6b..0000000 --- a/docs/home.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -slug: "/" -hide_title: true -title: "Home" -pagination_next: null -pagination_prev: null -description: "Homepage for GP2040-CE" ---- - -import README from "@site/README.md"; - - diff --git a/docusaurus.config.js b/docusaurus.config.js index dba2976..916521a 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -77,11 +77,17 @@ const config = { src: "img/gp2040-ce-logo.svg", }, items: [ + { + type: "doc", + position: "left", + docId: "README", + label: "Home", + }, { type: "docSidebar", position: "left", sidebarId: "docSidebar", - label: "Home", + label: "Getting Started", }, { type: "docSidebar", @@ -137,9 +143,27 @@ const config = { name: "README", // used by CLI, must be path safe sourceBaseUrl: "https://raw.githubusercontent.com/OpenStickCommunity/GP2040-CE/main/", // the base url for the markdown (gets prepended to all of the documents when fetching) - outDir: "/", // the base directory to output to. + outDir: "/docs", // the base directory to output to. documents: ["README.md"], // the file names to download - performCleanup: true, + performCleanup: false, + modifyContent(filename, content) { + if (filename.includes("README")) { + return { + content: `--- +hide_title: true +title: "Home" +pagination_next: null +pagination_prev: null +description: "Homepage for GP2040-CE Documentation" +--- + +${content}`, // <-- this last part adds in the rest of the content, which would otherwise be discarded + }; + } + + // we don't want to modify this item, since it doesn't contain "README" in the name + return undefined; + }, }, ], [ diff --git a/sidebars.js b/sidebars.js index c4e5162..d7847ff 100644 --- a/sidebars.js +++ b/sidebars.js @@ -18,10 +18,6 @@ const sidebars = { // But you can create a sidebar manually docSidebar: [ - { - type: "doc", - id: "home", - }, { type: "category", label: "General", diff --git a/versioned_docs/version-0.7.7/README.md b/versioned_docs/version-0.7.7/README.md new file mode 100644 index 0000000..7bc9e2e --- /dev/null +++ b/versioned_docs/version-0.7.7/README.md @@ -0,0 +1,109 @@ +--- +hide_title: true +title: "Home" +pagination_next: null +pagination_prev: null +description: "Homepage for GP2040-CE Documentation" +--- + +

+ + GP2040-CE + +

+ +

+ Multi-Platform Gamepad Firmware for RP2040 +

+ +

+ + +
+ + +

+ +

+ GP2040-CE (Community Edition) is a gamepad firmware for the Raspberry Pi Pico and other boards based on the RP2040 microcontrollers that combines multi-platform compatibility, low latency and a rich feature set to provide endless customization possibilities without sacrificing performance. +

+ +

+ GP2040-CE is compatible with PC, PS3 and PS4, Nintendo Switch, Steam Deck, MiSTer and Android. +

+ +## Links + +[Downloads](https://gp2040-ce.info/downloads/download-page) | [Installation](https://gp2040-ce.info/installation) | [Wiring](https://gp2040-ce.info/controller-build/wiring) | [Usage](https://gp2040-ce.info/usage) | [FAQ](https://gp2040-ce.info/faq/faq-general) | [GitHub](https://github.com/OpenStickCommunity/GP2040-CE) + +Full documentation can be found at [https://gp2040-ce.info](https://gp2040-ce.info) + +## Features + +- Select from 13 input modes including X-Input, Nintendo Switch, Playstation 4/5, Xbox One, D-Input, and Keyboard +- Overclocked polling rate for an average of 0.76ms of input latency in Xinput and on average 1.72 for Playstation 4/5. +- Multiple SOCD cleaning modes - Up Priority (a.k.a. Stickless), Neutral, and Second Input Priority. +- Left and Right stick emulation via D-pad inputs as well as dedicated toggle switches. +- Dual direction via D-pad + LS/RS. +- Reversed input via a button. +- [Turbo and Turbo LED](https://gp2040-ce.info/add-ons/turbo) with selectable speed +- Per-button RGB LED support. +- PWM Player indicator LED support (XInput only). +- Multiple LED profiles support. +- Support for 128x64 monochrome I2C displays - SSD1306, SH1106, and SH1107 compatible. +- Custom startup splash screen and easy image upload via web configuration. +- Support for passive buzzer speaker (3v or 5v). +- [Built-in, embedded web configuration](https://gp2040-ce.info/web-configurator) - No download required! + +Visit the [GP2040-CE Usage](https://gp2040-ce.info/usage) page for more details. + +## Performance + +Input latency is tested using the methodology outlined at [WydD's inputlag.science website](https://inputlag.science/controller/methodology), using the default 1000 Hz (1 ms) polling rate in the firmware. You can read more about the setup we use to conduct latency testing [HERE](https://github.com/OpenStickCommunity/Site/blob/main/latency_testing/README.md) if you are interested in testing for yourself or would just like to know more about the devices used to do the testing. + +| Version | Mode | Poll Rate | Min | Max | Avg | Stdev | % on time | %1f skip | %2f skip | +| ------- | ------------ | --------- | ------- | ------- | ------- | ------- | --------- | -------- | -------- | +| v0.7.7 | Xinput | 1 ms | 0.45 ms | 1.28 ms | 0.76 ms | 0.24 ms | 98.48% | 1.52% | 0% | +| v0.7.7 | Switch | 1 ms | 0.41 ms | 1.22 ms | 0.72 ms | 0.24 ms | 98.54% | 1.46% | 0% | +| v0.7.7 | Dinput (PS3) | 1 ms | 0.44 ms | 1.27 ms | 0.75 ms | 0.24 ms | 98.49% | 1.51% | 0% | +| v0.7.7 | PS4 | 1 ms | 0.55 ms | 2.17 ms | 0.86 ms | 0.24 ms | 98.30% | 1.70% | 0% | +| v0.7.7 | PS4 Hack | 1 ms | 0.55 ms | 1.38 ms | 0.86 ms | 0.24 ms | 98.32% | 1.68% | 0% | + +Full results can be found in the [GP2040-CE v0.7.7 Firmware Latency Test Results](https://github.com/OpenStickCommunity/Site/raw/main/latency_testing/GP2040-CE_Firmware_Latency_Test_Results_v0.7.7.xlsx) .xlsx Sheet. + +Results from v0.7.6 can be found [HERE](https://github.com/OpenStickCommunity/Site/raw/main/latency_testing/GP2040-CE_Firmware_Latency_Test_Results_v0.7.6.xlsx). Previous results from v0.7.5 and earlier can be found in the [GP2040-CE v0.7.5 (and before) Firmware Latency Test Results](https://github.com/OpenStickCommunity/Site/raw/main/latency_testing/GP2040-CE_Firmware_Latency_Test_Results_v0.7.5_and_before.xlsx) .xlsx Sheet. + +## Support + +If you would like to discuss features, issues or anything else related to GP2040-CE please [create an issue](https://github.com/OpenStickCommunity/GP2040-CE/issues/new) or join the [OpenStick GP2040-CE Discord](https://discord.gg/k2pxhke7q8) support channel. + +## Contributing + +Want to help improve GP2040-CE? There are a bunch of ways to contribute! + +### Community Participation + +Have an idea for a cool new feature, or just want to discuss some technical details with the developers? Join the [OpenStick GP2040-CE Discord](https://discord.gg/k2pxhke7q8) server to participate in our active and ever-growing community! + +### Pull Requests + +Pull requests are welcome and encouraged for enhancements, bug fixes and documentation updates. + +Please respect the coding style of the file(s) you are working in, and enforce the use of the `.editorconfig` file when present. + +## Acknowledgements + +- [FeralAI](https://github.com/FeralAI) for building [GP2040](https://github.com/FeralAI/GP2040) and laying the foundation for this community project +- Ha Thach's excellent [TinyUSB library](https://github.com/hathach/tinyusb) examples +- fluffymadness's [tinyusb-xinput](https://github.com/fluffymadness/tinyusb-xinput) sample +- Kevin Boone's [blog post on using RP2040 flash memory as emulated EEPROM](https://kevinboone.me/picoflash.html) +- [bitbank2](https://github.com/bitbank2) for the [OneBitDisplay](https://github.com/bitbank2/OneBitDisplay) and [BitBang_I2C](https://github.com/bitbank2/BitBang_I2C) libraries, which were ported for use with the Pico SDK +- [arntsonl](https://github.com/arntsonl) for the amazing cleanup and feature additions that brought us to v0.5.0 +- [alirin222](https://github.com/alirin222) for the awesome turbo code ([@alirin222](https://twitter.com/alirin222) on Twitter) +- [deeebug](https://github.com/deeebug) for improvements to the web-UI and fixing the PS3 home button issue +- [TheTrain](https://github.com/TheTrainGoes/GP2040-Projects) and [Fortinbra](https://github.com/Fortinbra) for helping keep our community chugging along +- [PassingLink](https://github.com/passinglink/passinglink) for the technical details and code for PS4 implementation +- [Youssef Habchi](https://youssef-habchi.com/) for allowing us to purchase a license to use Road Rage font for the project +- [tamanegitaro](https://github.com/tamanegitaro/) and [alirin222](https://github.com/alirin222) for the basis of the mini/classic controller work +- [Ryzee119](https://github.com/Ryzee119) for the wonderful [ogx360_t4](https://github.com/Ryzee119/ogx360_t4/) and xid_driver library for Original Xbox support +- [Santroller](https://github.com/Santroller/Santroller) and [GIMX](https://github.com/matlo/GIMX) for technical examples of Xbox One authentication using pass-through diff --git a/versioned_docs/version-0.7.7/home.mdx b/versioned_docs/version-0.7.7/home.mdx deleted file mode 100644 index 9909c1f..0000000 --- a/versioned_docs/version-0.7.7/home.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -slug: "/" -hide_title: true -title: "Home" -pagination_next: null -pagination_prev: null -description: "Homepage for GP2040-CE" ---- - -import README from "@site/README.md"; - - diff --git a/versioned_sidebars/version-0.7.7-sidebars.json b/versioned_sidebars/version-0.7.7-sidebars.json index 98a2538..316d3e8 100644 --- a/versioned_sidebars/version-0.7.7-sidebars.json +++ b/versioned_sidebars/version-0.7.7-sidebars.json @@ -1,9 +1,5 @@ { "docSidebar": [ - { - "type": "doc", - "id": "home" - }, { "type": "category", "label": "General", From d8717f1e2d82a1d495bb944f80d79d21070b000e Mon Sep 17 00:00:00 2001 From: Kevin Nguyen Date: Sun, 3 Mar 2024 17:30:06 -0700 Subject: [PATCH 2/2] Shorten Navbar labels --- docusaurus.config.js | 4 ++-- src/css/custom.css | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 916521a..f292c5b 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -87,13 +87,13 @@ const config = { type: "docSidebar", position: "left", sidebarId: "docSidebar", - label: "Getting Started", + label: "Get Started", }, { type: "docSidebar", position: "left", sidebarId: "webConfigSidebar", - label: "Web Configurator", + label: "Web Config", }, { type: "docSidebar", diff --git a/src/css/custom.css b/src/css/custom.css index 81e1183..c3b7d91 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -54,6 +54,10 @@ img { text-align: center; } +nav.navbar { + white-space: nowrap; +} + @media only screen and (min-width: 600px) { #img-wrapper { text-align: center;