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/README.md b/README.md new file mode 100644 index 0000000..d30659c --- /dev/null +++ b/README.md @@ -0,0 +1,101 @@ +

+ + 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/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/development/documentation-style-guide.mdx b/docs/development/documentation-style-guide.mdx new file mode 100644 index 0000000..c158e1b --- /dev/null +++ b/docs/development/documentation-style-guide.mdx @@ -0,0 +1,576 @@ +--- +title: Style Guide +# tags: +# - +pagination_next: null +pagination_prev: null +toc_max_heading_level: 4 +description: "A style guide on how to write documentation for GP2040-CE using Docusaurus" +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; + +# Style Guide + +GP2040-CE welcomes your contribution to our documentation. This document describes the options available for creating +content for the site. along with guidelines and conventions. + +## Markdown + +This site uses Docusaurus version 2. Docusaurus uses MDX as the parsing engine. which can parse standard Markdown syntax +as well as render React Components inside the document. + +[Docusaurus Markdown](https://docusaurus.io/docs/markdown-features) supports +[Basic Markdown Syntax](https://www.markdownguide.org/basic-syntax) and most +[Extended Syntax](https://www.markdownguide.org/extended-syntax/). You can see which features are supported +[here](https://www.markdownguide.org/tools/docusaurus/). + +## Frontmatter + +At the top of each docs page, you need to include these things: + +| Variable | Description | +| :--------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `title` | The main title of the page. This value will appear in the left hand navigation tree for the page. | +| `pagination_prev` (optional) | The ID of the documentation you want the "Previous" pagination to link to. Use null to disable showing "Previous" for this page. | +| `pagination_next` (optional) | The ID of the documentation you want the "Next" pagination to link to. Use null to disable showing "Next" for this page. | +| `toc_min_heading_level` (optional) | The minimum heading level shown in the table of contents. Must be between 2 and 6 and lower or equal to the max value. | +| `toc_max_heading_level` (optional) | The max heading level shown in the table of contents. Must be between 2 and 6. | +| `description` | This is what appears when the page is referenced in a Google search result and what appears when the page is embedded elsewhere. | +| `keywords` (optional) | A list of terms that help categorize the page for SEO purposes. | + +The fields above are sufficient for most documentation pages. However,additional frontmatter fields can be found in the +Docusaurus [plugin-content-docs documentation](https://docusaurus.io/docs/2.x/api/plugins/@docusaurus/plugin-content-docs#markdown-front-matter). + +Frontmatter will look like this at the beginning of a document: + +``` +--- +title: Documentation Style Guide +pagination_next: null +pagination_prev: null +description: "A style guide on how to write documentation for GP2040-CE using Docusaurus" +--- +``` + +## Introduction + +The first paragraph of the documentation should set the user's expectations for what they will find on the page. +Describe the key benefits to the user, but do not include links. + +## Headers + +For accessibility and SEO reasons, never have an H4 header that isn't under an H3 header, or an H3 header that isn't +under an H2 header. + +- H1 headers should never be used in a document since the title is automatically generated as an H1. +- H2 headers are used for SEO, so make sure they succinctly represent what a user will find on the page in that section. +- H3 headers are included in the page's table of contents on the right, so make sure the title describes something a + user might want to directly navigate to. +- H4 headers are to emphasize things within a subsection of the page; these can be longer than the other headers if + needed because they aren't included in the Table of Contents. + +Markdown Code: + +``` +## H2 Header + +### H3 Header + +#### H4 Header +``` + +## Content + +### Line Breaks + +All words are rendered in the same paragraph even with line breaks, so long as there isn't an empty line. +As such, it is good practice for each line to be less than 120 characters long for readability, when possible. + +If the text is contained in a Markdown table cell, `
` will need to be used. + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown +This +will +all +be +on +one +line. + +The empty line above creates a new paragraph. + +This forces a soft return
+rather than creating a new paragraph + +| Column1 | Column2 | +| ------- | ------------------------------------- | +| Row 1 | - Line 1
- Line 2
- Line3 | +``` + +
+ +**Display** + + + +This +will +all +be +on +one +line. + +The empty line above creates a new paragraph. + +This forces a soft return
+rather than creating a new paragraph + +| Column1 | Column2 | +| ------- | ------------------------------------- | +| Row 1 | - Line 1
- Line 2
- Line3 | + +
+ +### Links + +#### Pages and Assets + +When linking to pages or assets, you will need to use relative links to navigate to the page and asset you need to +access. + +:::caution + +When moving files into different sub directories, make sure that you update any references to other pages/assets within +that page in addition to any other page that reference the moving page. If this is not done, this will result in broken +links and errors in the building process. + +::: + + + + + + + + + + + + + + +If Markdown syntax is insufficient, you can use either an inline CommonJS require in JSX image tag or an ES import +syntax and JSX image tag. For more information, refer to the +[Docusaurus documentations](https://docusaurus.io/docs/2.x/markdown-features/assets#images) + +#### Components + +When linking to components, you will need to use absolute links to navigate to the page and asset you need to access. +By using `@site` from any page in any subdirectory, it will locate to the root of the repo (i.e. "/"). + +:::caution + +When moving components into different sub directories, make sure that you update any pages that utilize that component. +If this is not done, this may result in either broken pages and errors in the building process or it may simply fail to +render. + +::: + +```md +import Component from "@site/src/components/ComponentName.tsx"; +``` + +### Hotkey Combinations + +When you need to present to the user a single input or input combination, you will need to include both a label selector +at the top of the screen and use the Hotkey component to display the input or input combination. By using this component, +the user will be able to choose the relevant input mode labels to present the labels. + +To use Hotkey Combinations, you need to import two components by placing these lines below the [Frontmatter](#frontmatter), +but above the [Introduction](#introduction): + +```typescript +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; +``` + +Underneath the top header for the page, include this label selector to allow users to select the input mode for Hotkey +Combination labels. + + + + + + + + + + + + + + +### Tabs + +Tabs are a great option when an example, instructions or other text would be different in different contexts. The +primary usage of tabs on this site is to illustrate the similar content in multiple context. + +:::tip +When a page includes multiple sets of tabs, use a `groupId` so when the user selects a particular tab, +all tabs with that ID will switch to the selected tab. +::: + +To use tabs, you need to import two special methods by placing these lines below the [Frontmatter](#frontmatter), +but above the [Introduction](#introduction): + +```typescript +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +``` + +and then use the tabs as follows: + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown + + + This would include information or examples for context 1. + + + This would include information or examples for context 2. + + +``` + +
+ +**Display** + + + + + + This would include information or examples for context 1. + + + This would include information or examples for context 2. + + + +
+ +### Inline Code + +To emphasize a single class, method name, variable, direction, filename, etc. in a sentence, place single backticks +around the name. + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown +This comment refers to the `GP2040-CE_X.X.X_Pico.uf2` file. +``` + +
+ +**Display** + + + +This comment refers to the `GP2040-CE_X.X.X_Pico.uf2` file. + +
+ +### Code Blocks + +The best way to display code or Markdown text to be copied is with code blocks. Markdown will highlight each language +differently, so it is helpful to specify which language you are using, and it's a good idea to include a title with the +code block as well. + + + + + + + + + + + + +
+ +**Markdown** + + + + ```md title="Example Markdown Page" + --- + title: TITLE + # tags: + # - + pagination_next: null + pagination_prev: null + description: "PAGE DESCRIPTION" + --- + + # Document Title + + CONTENT + ``` + +
+ +**Display** + + + +```md title="Example Markdown Page" +--- +title: TITLE +pagination_next: null +pagination_prev: null +description: "PAGE DESCRIPTION" +--- + +# Document Title + +CONTENT +``` + +
+ +### Admonitions + +There are four types of [Docusaurus admonitions](https://docusaurus.io/docs/markdown-features/admonitions): + +- Note - Relevant information. +- Tip - A user should do this. +- Caution - A user should pay attention to this. +- Warning - A user might do something dangerous. + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown +:::note + +Relevant information for you. + +::: + +:::tip + +You should do this. + +::: + +:::caution + +You should probably pay attention to this. + +::: + +:::warning + +You are about to do something dangerous. + +::: +``` + +
+ +**Display** + + + +:::note + +Relevant information for you. + +::: + +:::tip + +You should do this. + +::: + +:::caution + +You should probably pay attention to this. + +::: + +:::warning + +You are about to do something dangerous. + +::: + +
+ +You can also change the text of an admonition by including the test next to the admonition type. + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown +:::note This was labelled NOTE + +Relevant information for you. + +::: +``` + +
+ +**Display** + + + +:::note This was labelled NOTE + +Relevant information for you. + +::: + +
+ +## Adding Images to the Repo + +All image files should be included in `docs/assets` directory, in a subdirectory that corresponds to the type of content. + +| Subdirectory | Content | +| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `boards` | Images of RP2040 boards (commercially available or community designed) that will be referenced in `src/config/boards.tsx` to be included in Downloads page | +| `images` | General image category for documentation
- Add-ons: Start the filename with `gpc-add-ons-`
- Web Config Page: Start the filename with `gpc-`
| +| `wiring` | Images of microcontroller board pinouts to be included in `docs/controller-build/wiring.mdx` | diff --git a/docs/development/documentation-versioning.mdx b/docs/development/documentation-versioning.mdx index b828f90..cdc803d 100644 --- a/docs/development/documentation-versioning.mdx +++ b/docs/development/documentation-versioning.mdx @@ -1,5 +1,5 @@ --- -title: Documentation Versioning +title: Versioning # tags: # - pagination_next: null 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..f292c5b 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -77,17 +77,23 @@ 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: "Get Started", }, { type: "docSidebar", position: "left", sidebarId: "webConfigSidebar", - label: "Web Configurator", + label: "Web Config", }, { 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..71ce927 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", @@ -87,6 +83,7 @@ const sidebars = { label: "Documentation", collapsed: false, items: [ + "development/documentation-style-guide", "development/documentation-versioning", "development/documentation-preview", "development/documentation-update-downloads", 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; diff --git a/versioned_docs/version-0.7.5/README.md b/versioned_docs/version-0.7.5/README.md new file mode 100644 index 0000000..ecad87e --- /dev/null +++ b/versioned_docs/version-0.7.5/README.md @@ -0,0 +1,101 @@ +--- +hide_title: true +title: "Home" +pagination_next: null +pagination_prev: null +description: "Homepage for GP2040-CE Documentation" +--- + +

+ + GP2040-CE + +

+ +

+ Multiplatform 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 multiplatform 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/#/download) | [Installation](https://gp2040-ce.info/#/installation) | [Wiring](https://gp2040-ce.info/#/wiring) | [Usage](https://gp2040-ce.info/#/usage) | [FAQ](https://gp2040-ce.info/#/faq) | [GitHub](https://github.com/OpenStickCommunity/GP2040-CE) + +Full documentation can be found at + +## Features + +- Select from 5 input modes: XInput, Nintendo Switch, PS4, PS3 and Keyboard +- Overclocked polling rate for less than 1 ms of input latency in all modes. +- 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?id=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. + +| Version | Mode | Poll Rate | Min | Max | Avg | Stdev | % on time | %1f skip | %2f skip | +| ------- | ---------------------- | --------- | ------- | ------- | ------- | ------- | --------- | -------- | -------- | +| v0.7.0 | All modes (except PS4) | 1 ms | 0.53 ms | 1.36 ms | 0.86 ms | 0.25 ms | 95.91% | 4.09% | 0% | +| v0.7.0 | PS4 Mode | 1 ms | 1.45 ms | 2.14 ms | 1.86 ms | 0.16 ms | 90.26% | 9.74% | 0% | + +Full results can be found in the [GP2040-CE Firmware Latency Test Results](https://docs.google.com/spreadsheets/d/1OLmVg04e2q4aY0tqSJuaHtD8YMNCQnP-MzzSTtQLVm4) Google 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 devs? 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 homebutton 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 licence to use Road Rage font for the porject diff --git a/versioned_docs/version-0.7.5/add-ons/analog.md b/versioned_docs/version-0.7.5/add-ons/analog.md new file mode 100644 index 0000000..378d638 --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/analog.md @@ -0,0 +1,23 @@ +--- +title: Analog +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Analog + +![GP2040-CE Configurator - Add-Ons Analog](../assets/images/gpc-add-ons-analog.png) + +* `Analog Stick 1 X Pin` - The GPIO pin used for the Analog Stick 1 X value. Only ADC pins 26, 27, 28 and 29 are allowed here. +* `Analog Stick 1 Y Pin` - The GPIO pin used for the Analog Stick 1 Y value. Only ADC pins 26, 27, 28 and 29 are allowed here. +* `Analog Stick 1 Mode` - Choose if Analog Stick 1 is to be used for Left Analog or Right Analog. +* `Analog Stick 1 Invert` - Choose if you would like to flip the X or Y axis Analog Stick 1 inputs (or both). +* `Analog Stick 2 X Pin` - The GPIO pin used for the Analog Stick 2 X value. Only ADC pins 26, 27, 28 and 29 are allowed here. +* `Analog Stick 2 Y Pin` - The GPIO pin used for the Analog Stick 2 Y value. Only ADC pins 26, 27, 28 and 29 are allowed here. +* `Analog Stick 2 Mode` - Choose if Analog Stick 2 is to be used for Left Analog or Right Analog (must be different than Analog Stick 1). +* `Analog Stick 2 Invert` - Choose if you would like to flip the X or Y axis Analog Stick 2 inputs (or both). +* `Deadzone Size (%)` - Enter the % value of deadzone you would like on the analog sticks. +* `Forced Circularity` - Force the analog sticks to be bound within a perfect circle. This can be beneficial for certain games. However, be aware that this may negatively impact some games which account for sticks moving outside of a circle. +* `Auto Calibration` - Automatically centers the analog sticks. This works by reading in the offset from center during boot and then accounts for that until the next power cycle. This can be helpful for analog sticks experiencing drift. diff --git a/versioned_docs/version-0.7.5/add-ons/bootsel-button.md b/versioned_docs/version-0.7.5/add-ons/bootsel-button.md new file mode 100644 index 0000000..d7bee95 --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/bootsel-button.md @@ -0,0 +1,15 @@ +--- +title: BOOTSEL Button Configuration +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# BOOTSEL Button Configuration + +![GP2040-CE Configurator - Add-Ons BOOTSEL Button Configuration](../assets/images/gpc-add-ons-bootsel-button.png) + +* `BOOTSEL Button` - Choose an input to be mapped to the BOOTSEL button. + +Please note that this can only be used on devices that have a BOOTSEL button. Please also note that the OLED might become unresponsive if this button is set. You can unset it to restore OLED functionality. diff --git a/versioned_docs/version-0.7.5/add-ons/buzzer-speaker.md b/versioned_docs/version-0.7.5/add-ons/buzzer-speaker.md new file mode 100644 index 0000000..9ec0349 --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/buzzer-speaker.md @@ -0,0 +1,15 @@ +--- +title: Buzzer Speaker +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Buzzer Speaker + +![GP2040-CE Configurator - Add-Ons Buzzer](../assets/images/gpc-add-ons-buzzer.png) + +* `Use buzzer` - Turns on/off the buzzer module. +* `Buzzer Pin` - The GPIO pin used for the buzzer. +* `Buzzer Volume` - Audio volume of buzzer. Ranges from 0-100. \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/add-ons/dual-direction-input.md b/versioned_docs/version-0.7.5/add-ons/dual-direction-input.md new file mode 100644 index 0000000..6a97386 --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/dual-direction-input.md @@ -0,0 +1,27 @@ +--- +title: Dual Directional Input +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Dual Directional Input + +![GP2040-CE Configuration - Add-Ons Dual Directional Input](../assets/images/gpc-add-ons-dual-directional.png) + +* `Dual Up Pin` - The GPIO pin used for the secondary Up direction. +* `Dual Down Pin` - The GPIO pin used for the secondary Down direction. +* `Dual Left Pin` - The GPIO pin used for the secondary Left direction. +* `Dual Right Pin` - The GPIO pin used for the secondary Right direction. +* `Dual D-Pad Mode` - Choose if this should act as an additional instance of the D-Pad or as the Left or Right stick. +Values are: +`D-PAD` for D-PAd mode. +`Left Analog` for Left Analog stick mode. +`Right Analog` for Right Analog stick mode. +* `Combination Mode` - Choose how these inputs should be combined. +Values are: +`Mixed` - Combines both the Gamepad input and Dual Directional and allows for all 3 SOCD modes. +`Gamepad` - Gamepad always takes over when pressed, otherwise Gamepad and Dual act independently. +`Dual Directional` - Dual always takes over when pressed, otherwise Gamepad and Dual act independently. +`None` - Gamepad input and dual directional act independently of each other. diff --git a/versioned_docs/version-0.7.5/add-ons/extra-button.md b/versioned_docs/version-0.7.5/add-ons/extra-button.md new file mode 100644 index 0000000..b316c3a --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/extra-button.md @@ -0,0 +1,14 @@ +--- +title: Extra Button Configuration +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Extra Button Configuration + +![GP2040-CE Configurator - Extra Button](../assets/images/gpc-add-ons-extra-button.png) + +* `Extra Button Pin` - The GPIO pin used for the extra instance of a button. +* `Extra Button` - The button that will have an extra instance. \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/add-ons/focus-mode.md b/versioned_docs/version-0.7.5/add-ons/focus-mode.md new file mode 100644 index 0000000..d4189d6 --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/focus-mode.md @@ -0,0 +1,15 @@ +--- +title: Focus Mode Configuration +# tags: +# - +pagination_next: null +pagination_prev: null +--- +# Focus Mode Configuration + +![GP2040-CE Configurator - Focus Mode](../assets/images/gpc-add-ons-focus-mode.png) + +* `Focus Mode Pin` - The GPIO pin used to enable Focus Mode (this needs to always be held so a slider or latching switch is recommended). +* `Lock OLED Screen` - When enabled the OLED screen will not display anything during Focus Mode. +* `Lock RGB LED` - When enabled the RGB LEDs that are controlled by the RP2040 device will not display anything during Focus Mode. +* `Lock Buttons` - When enabled the You can specify specific buttons to not function during Focus Mode. You can add as many additional buttons as needed here. \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/add-ons/i2c-analog-ads1219.md b/versioned_docs/version-0.7.5/add-ons/i2c-analog-ads1219.md new file mode 100644 index 0000000..631357e --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/i2c-analog-ads1219.md @@ -0,0 +1,17 @@ +--- +title: I2C Analog ADS1219 +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# I2C Analog ADS1219 + +![GP2040-CE Configurator - Add-Ons ADS1219](../assets/images/gpc-add-ons-ads1219.png) + +* `I2C Analog ADS1219 SDA Pin` - The GPIO pin used for I2C Analog ADS1219 SDA. +* `I2C Analog ADS1219 SCL Pin` - The GPIO pin used for I2C Analog ADS1219 SCL. +* `I2C Analog ADS1219 Block` - The block of I2C to use (i2c0 or i2c1). +* `I2C Analog ADS1219 Speed` - Sets the speed of I2C communication. Common values are `100000` for standard, `400000` for fast and `800000` ludicrous speed. +* `I2C Analog ADS1219 Address` - Sets the address for the I2C Analog ADS1219. diff --git a/versioned_docs/version-0.7.5/add-ons/input-reverse.md b/versioned_docs/version-0.7.5/add-ons/input-reverse.md new file mode 100644 index 0000000..4fce5ea --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/input-reverse.md @@ -0,0 +1,18 @@ +--- +title: Input Reverse +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Input Reverse + +![GP2040-CE Configurator - Add-Ons Input Reverse](../assets/images/gpc-add-ons-input-reverse.png) + +* `Reverse Input Pin` - The GPIO pin used for the Reverse Input button. +* `Reverse Input Pin LED` - The GPIO pin used for the Reverse Input LED. +* `Reverse Up` - Enables the up direction to be reversed when the Reverse Input button is pressed or held. +* `Reverse Down` - Enables the down direction to be reversed when the Reverse Input button is pressed or held. +* `Reverse Left` - Enables the left direction to be reversed when the Reverse Input button is pressed or held. +* `Reverse Right` - Enables the right direction to be reversed when the Reverse Input button is pressed or held. \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/add-ons/joystick-selection-slider.md b/versioned_docs/version-0.7.5/add-ons/joystick-selection-slider.md new file mode 100644 index 0000000..a4e052c --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/joystick-selection-slider.md @@ -0,0 +1,14 @@ +--- +title: Joystick Selection Slider +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Joystick Selection Slider + +![GP2040-CE Configurator - Add-Ons Joystick Slider](../assets/images/gpc-add-ons-joystick-slider.png) + +* `Slider LS Pin` - The GPIO pin used to activate the Left Stick while held. +* `Slider RS Pin` - The GPIO pin used to activate the Right Stick while held. diff --git a/versioned_docs/version-0.7.5/add-ons/keyboard-host.mdx b/versioned_docs/version-0.7.5/add-ons/keyboard-host.mdx new file mode 100644 index 0000000..9ce2a1c --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/keyboard-host.mdx @@ -0,0 +1,24 @@ +--- +title: Keyboard Host Configuration +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +import PinOption from './usb-host-add-on/_pin-options.md' +import ExampleWiringDiagram from './usb-host-add-on/_example-wiring-diagram.md' + +# Keyboard Host Configuration + +![GP2040-CE Configurator - Keyboard Host Configuration](../assets/images/gpc-add-ons-keyboard-host-configuration.png) + + + +## Hardware Requirements + + This add-on requires that you have something like the ![USB Passthrough Board](https://github.com/OpenStickCommunity/Hardware/tree/main/USB%20Passthrough%20Board) or a board with a USB passthrough port on it already. + +### Example Wiring Diagram + + \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/add-ons/on-board-led.md b/versioned_docs/version-0.7.5/add-ons/on-board-led.md new file mode 100644 index 0000000..2b1ffe3 --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/on-board-led.md @@ -0,0 +1,15 @@ +--- +title: On-board LED Configuration +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# On-board LED Configuration + +![GP2040-CE Configurator - Add-Ons On-Board LED Configuration](../assets/images/gpc-add-ons-onboard-led.png) + +* `Off` - LED is off +* `Mode Indicator` - LED is solid if unit is powered with connected data, LED blinks rapidly if powered with no data, LED blinks slowly when in web-config mode. +* `Input Test` - LED is off but turns on when any input is pressed (LED turns off when button is released). \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/add-ons/player-number.md b/versioned_docs/version-0.7.5/add-ons/player-number.md new file mode 100644 index 0000000..400a539 --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/player-number.md @@ -0,0 +1,19 @@ +--- +title: Player Number +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Player Number + +:::note + +This add-on is applicable to X-Input mode only. + +::: + +![GP2040-CE Configurator - Player Number](../assets/images/gpc-add-ons-player-number.png) + +* `Player Number` - Choose what player number this RP2040 based device will be representing. \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/add-ons/ps-passthrough.md b/versioned_docs/version-0.7.5/add-ons/ps-passthrough.md new file mode 100644 index 0000000..9439864 --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/ps-passthrough.md @@ -0,0 +1,31 @@ +--- +title: PS Passthrough +tags: +- PS4 +- PS5 +pagination_next: null +pagination_prev: null +--- + +import PinOption from './usb-host-add-on/_pin-options.md' +import ExampleWiringDiagram from './usb-host-add-on/_example-wiring-diagram.md' + +# PS Passthrough + +Purpose: Enabling this add-on will allow you to use a licensed 3rd party device to authenticate off of. + +![GP2040-CE Configurator - PS Passthrough](../assets/images/gpc-add-ons-ps-passthrough.png) + + + +## Hardware Requirements + + This add-on requires that you have something like the ![USB Passthrough Board](https://github.com/OpenStickCommunity/Hardware/tree/main/USB%20Passthrough%20Board) or a board with a USB passthrough port on it already. + + ### Example Wiring Diagram + + + +## Note + + If you have passthrough enabled you can turn off the above `PS4 Mode` add-on as the two will not work together. Please also ensure that under the `Settings` section you have chosen PS4 mode and picked if you want the GP2040-CE unit to function as a controller or as a fightstick. diff --git a/versioned_docs/version-0.7.5/add-ons/ps4-mode.md b/versioned_docs/version-0.7.5/add-ons/ps4-mode.md new file mode 100644 index 0000000..7062063 --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/ps4-mode.md @@ -0,0 +1,19 @@ +--- +title: PS4 Mode +tags: +- PS4 +pagination_next: null +pagination_prev: null +--- + +# PS4 Mode + +![GP2040-CE Configurator - PS4 Mode](../assets/images/gpc-add-ons-ps4-mode.png) + +Please note that GP2040-CE will never provide these files! + +Enabling this add-on will allow you to use GP2040-CE on a PS4 with an 8 minute timeout. If you have the necessary files to upload in this section it will authenticate to a native PS4 device and not time out after 8 minutes. + +* `Private Key (PEM)` - Choose your PEM file. +* `Serial Number (16 Bytes in Hex Ascii)` - Choose your serial number file. +* `Signature (256 Bytes in Binary)` - Choose your signature file. \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/add-ons/snes-input.md b/versioned_docs/version-0.7.5/add-ons/snes-input.md new file mode 100644 index 0000000..032317b --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/snes-input.md @@ -0,0 +1,33 @@ +--- +title: SNES Input +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# SNES Input + +![GP2040-CE Configurator - SNES Input](../assets/images/gpc-add-ons-snespad-input.png) + +* `CLOCK Pin` - The GPIO pin used for SNES CLOCK. +* `LATCH Pin` - The GPIO pin used for SNES LATCH. +* `DATA Pin` - The GPIO pin used for SNES DATA. + +Supported controller types and their mapping is as follows: + +| GP2040-CE | NES | SNES | Super NES Mouse | +|-----------|----------|--------------|--------------------| +| B1 | B | B | Left Click | +| B2 | A | A | Right Click | +| B3 | | Y | | +| B4 | | X | | +| L1 | | L | | +| L2 | | | | +| R1 | | R | | +| R2 | | | | +| S1 | Select | Select | | +| S2 | Start | Start | | +| A1 | | | | +| D-Pad | D-Pad | D-Pad | | +| Analog | | | Mouse Movement | \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/add-ons/socd-selection-slider.md b/versioned_docs/version-0.7.5/add-ons/socd-selection-slider.md new file mode 100644 index 0000000..1e4236a --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/socd-selection-slider.md @@ -0,0 +1,17 @@ +--- +title: SOCD Selection Slider +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# SOCD Selection Slider + +![GP2040-CE Configurator - SOCD Selection Slider](../assets/images/gpc-add-ons-socd-slider.png) + +* `SOCD Slider Mode Default` - The default SOCD mode to be used when the slider pin is not activated. +* `SOCD Slider Mode One` - The SOCD mode you would like to have enabled for the first slider position. +* `Pin One` - The GPIO pin used for first SOCD mode slider position. +* `SOCD Slider Mode Two` - The SOCD mode you would like to have enabled for the second slider position. +* `Pin Two` - The GPIO pin used for second SOCD mode slider position. \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/add-ons/tilt-input.md b/versioned_docs/version-0.7.5/add-ons/tilt-input.md new file mode 100644 index 0000000..80c5f00 --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/tilt-input.md @@ -0,0 +1,44 @@ +--- +title: Tilt Input +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Tilt Input + +Purpose: The Tilt Input add-on allows users to send analog inputs from the Left and Right analog sticks that are some percent of the maximum directional input (e.g. send 65% of a Down-Right input on the Right analog stick). + +![GP2040-CE Configuration - Add-Ons Tilt Input](../assets/images/gpc-add-ons-tilt.png) + +* `Tilt 1 Pin` - The GPIO pin used for the Tilt 1 direction. +* `Tilt 1 Factor Left X` - The percentage of the X-axis input for the Left analog stick sent when `Tilt 1 Pin` is activated. (Min. 0, Max 100) +* `Tilt 1 Factor Left Y` - The percentage of the Y-axis input for the Left analog stick sent when `Tilt 1 Pin` is activated. (Min. 0, Max 100) +* `Tilt 1 Factor Left X` - The percentage of the X-axis input for the Right analog stick sent when `Tilt 1 Pin` is activated. (Min. 0, Max 100) +* `Tilt 1 Factor Left Y` - The percentage of the Y-axis input for the Right analog stick sent when `Tilt 1 Pin` is activated. (Min. 0, Max 100) +* `Tilt 2 Pin` - The GPIO pin used for the Tilt 2 direction. +* `Tilt 2 Factor Left X` - The percentage of the X-axis input for the Left analog stick sent when `Tilt 2 Pin` is activated. (Min. 0, Max 100) +* `Tilt 2 Factor Left Y` - The percentage of the Y-axis input for the Left analog stick sent when `Tilt 2 Pin` is activated. (Min. 0, Max 100) +* `Tilt 2 Factor Left X` - The percentage of the X-axis input for the Right analog stick sent when `Tilt 2 Pin` is activated. (Min. 0, Max 100) +* `Tilt 2 Factor Left Y` - The percentage of the Y-axis input for the Right analog stick sent when `Tilt 2 Pin` is activated. (Min. 0, Max 100) +* `Tilt Left Analog Up Pin` - The GPIO pin used for the Up direction on the Left analog stick. +* `Tilt Left Analog Down Pin` - The GPIO pin used for the Down direction on the Left analog stick. +* `Tilt Left Analog Left Pin` - The GPIO pin used for the Left direction on the Left analog stick. +* `Tilt Left Analog Right Pin` - The GPIO pin used for the Right direction on the Left analog stick. +* `Tilt Right Analog Up Pin` - The GPIO pin used for the Up direction on the Right analog stick. +* `Tilt Right Analog Down Pin` - The GPIO pin used for the Down direction on the Right analog stick. +* `Tilt Right Analog Left Pin` - The GPIO pin used for the Left direction on the Right analog stick. +* `Tilt Right Analog Right Pin` - The GPIO pin used for the Right direction on the Right analog stick. +* `Tilt SOCD Mode` - Choose the default SOCD Cleaning Mode (Neutral, Last Win, First Win). + +Hardware Requirements: + +- Additional buttons, switches, or joysticks, are recommended for this add-on as this add-on entirely prevents the primary Dpad from being set as the Left analog or Right analog stick. + +Notes + +- Because this add-on disables the Dpad from being set as Left analog and Right analog, using the hotkeys `Dpad Left Analog` and `Dpad Right Analog` deactivates the Dpad and using the `Dpad Digital` will reactivate the Dpad once more. +- Not all Tilt analog pins are required to be set, but not setting the pins will prevent you from using that input without using the Web Configurator to remap the inputs. +- Additionally, pressing Tilt 1 and Tilt 2 simultaneously while inputting Right analog stick directions allows the Right analog stick to function as the D-Pad directions. +- Pressing Tilt 1 and Tilt 2 simultaneously while inputting Left analog stick will prioritize Tilt 1 and ignore Tilt 2. \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/add-ons/turbo.md b/versioned_docs/version-0.7.5/add-ons/turbo.md new file mode 100644 index 0000000..5e82b05 --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/turbo.md @@ -0,0 +1,34 @@ +--- +title: Turbo +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Turbo + +![GP2040-CE Configurator - Add-Ons Turbo](../assets/images/gpc-add-ons-turbo.png) + +* `Turbo Pin` - The GPIO pin used for the Turbo button. +* `Turbo Pin LED` - The GPIO pin used for the Turbo LED. +* `Turbo Shot Count` - The number of of presses per second that the Turbo will activate at. +* `Turbo Dial (ADC ONLY)` - The GPIO pin used for the Turbo dial. Must be one of the ADC pins. + +## Turbo - SHMUP MODE + +![GP2040-CE Configurator - Add-Ons Turbo SHMUP MODE](../assets/images/gpc-add-ons-turbo-shmup.png) + +* `Turbo Always On 1` - The GPIO pin used for a Turbo button that will always be on. +* `Turbo Always On 2` - The GPIO pin used for a Turbo button that will always be on. +* `Turbo Always On 3` - The GPIO pin used for a Turbo button that will always be on. +* `Turbo Always On 4` - The GPIO pin used for a Turbo button that will always be on. +* `Charge Button 1 Pin` - The GPIO pin used for a button that needs to be able to do a charged shot. +* `Charge Button 2 Pin` - The GPIO pin used for a button that needs to be able to do a charged shot. +* `Charge Button 3 Pin` - The GPIO pin used for a button that needs to be able to do a charged shot. +* `Charge Button 4 Pin` - The GPIO pin used for a button that needs to be able to do a charged shot. +* `Charge Button 1 Assignment` - The button that will be able to charge shot regardless of Turbo status. +* `Charge Button 2 Assignment` - The button that will be able to charge shot regardless of Turbo status. +* `Charge Button 3 Assignment` - The button that will be able to charge shot regardless of Turbo status. +* `Charge Button 4 Assignment` - The button that will be able to charge shot regardless of Turbo status. +* `Simultaneous Priority Mode` - In the event both the Turbo and charged buttons are pressed at the time same, which should take priority. \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/add-ons/usb-host-add-on/_example-wiring-diagram.md b/versioned_docs/version-0.7.5/add-ons/usb-host-add-on/_example-wiring-diagram.md new file mode 100644 index 0000000..863f537 --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/usb-host-add-on/_example-wiring-diagram.md @@ -0,0 +1,6 @@ +![USB Host Wiring Diagram](../../assets/images/gpc-add-ons-keyboard-host-configuration-wiring-diagram.png) + +* `VCC` - Connects to 5V power (Example: VBUS on the Raspberry Pi Pico) +* `D+` - Connects to the `D+` GPIO Pin above, set in the Web Configurator. (Example: GPIO0 on the Raspberry Pi Pico) +* `D-` - Connects to the `D-` GPIO Pin above, automatically set based on D+. (Example: GPIO1 on the Raspberry Pi Pico) +* `GND` - Connects to a ground pin, any `GND` pin will work. (Example: GND on the Raspberry Pi Pico) \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/add-ons/usb-host-add-on/_pin-options.md b/versioned_docs/version-0.7.5/add-ons/usb-host-add-on/_pin-options.md new file mode 100644 index 0000000..026c5d2 --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/usb-host-add-on/_pin-options.md @@ -0,0 +1,3 @@ +* `D+` - The GPIO Pin used to carry Data Plus between the USB Host Port and RP2040 +* `D-` - The GPIO Pin used to carry Data Minus between the USB Host Port and RP2040. This cannot be set and will be automatically determined from `D+`. +* `5V Power (optional)` - The GPIO Pin used to enable 5V power to the host port on the board. This is only applicable to a small number of boards (e.g. Adafruit RP2040 Feather USB Host) and most boards do not require this to be set. \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/add-ons/wii-extensions.md b/versioned_docs/version-0.7.5/add-ons/wii-extensions.md new file mode 100644 index 0000000..41d1bc3 --- /dev/null +++ b/versioned_docs/version-0.7.5/add-ons/wii-extensions.md @@ -0,0 +1,22 @@ +--- +title: Wii Extensions +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Wii Extensions + +![GP2040-CE Configurator - Wii Extensions](../assets/images/gpc-add-ons-wii-extensions.png) + +* `I2C SDA Pin` - The GPIO pin used for Wii Extension SDA. +* `I2C SCL Pin` - The GPIO pin used for Wii Extension SCL. +* `I2C Block` - The block of I2C to use (i2c0 or i2c1). +* `I2C Speed` - Sets the speed of I2C communication. Common values are `100000` for standard, or `400000` for fast. + +Classic Controller support includes Classic, Classic Pro, and NES/SNES Mini Controllers. + +Original Classic Controller L & R triggers are analog sensitive, where Pro triggers are not. + +Due to an accessory hardware issue, Drum & DJ turntable controllers may require hot-swapping from a Nunchuk or Classic controller before being usable. \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/assets/boards/AlpacaOwO.jpg b/versioned_docs/version-0.7.5/assets/boards/AlpacaOwO.jpg new file mode 100644 index 0000000..3715c2b Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/AlpacaOwO.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/BentoBox.jpg b/versioned_docs/version-0.7.5/assets/boards/BentoBox.jpg new file mode 100644 index 0000000..689549f Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/BentoBox.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/DURAL.jpg b/versioned_docs/version-0.7.5/assets/boards/DURAL.jpg new file mode 100644 index 0000000..2877c51 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/DURAL.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/FightboardV3.jpg b/versioned_docs/version-0.7.5/assets/boards/FightboardV3.jpg new file mode 100644 index 0000000..6a2e69b Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/FightboardV3.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/FightboardV3Mirrored.jpg b/versioned_docs/version-0.7.5/assets/boards/FightboardV3Mirrored.jpg new file mode 100644 index 0000000..b0d1738 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/FightboardV3Mirrored.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/FlatboxRev4.jpg b/versioned_docs/version-0.7.5/assets/boards/FlatboxRev4.jpg new file mode 100644 index 0000000..3ede2b6 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/FlatboxRev4.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/FlatboxRev5.jpg b/versioned_docs/version-0.7.5/assets/boards/FlatboxRev5.jpg new file mode 100644 index 0000000..6a5944b Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/FlatboxRev5.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/FlatboxRev5RGB.jpg b/versioned_docs/version-0.7.5/assets/boards/FlatboxRev5RGB.jpg new file mode 100644 index 0000000..f0bd513 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/FlatboxRev5RGB.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/FlatboxRev5Southpaw.jpg b/versioned_docs/version-0.7.5/assets/boards/FlatboxRev5Southpaw.jpg new file mode 100644 index 0000000..ddef79c Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/FlatboxRev5Southpaw.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/KB2040.jpg b/versioned_docs/version-0.7.5/assets/boards/KB2040.jpg new file mode 100644 index 0000000..8545240 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/KB2040.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/KeyboardConverter.jpg b/versioned_docs/version-0.7.5/assets/boards/KeyboardConverter.jpg new file mode 100644 index 0000000..972dac1 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/KeyboardConverter.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/Liatris.jpg b/versioned_docs/version-0.7.5/assets/boards/Liatris.jpg new file mode 100644 index 0000000..39c3d9d Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/Liatris.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/MavercadeKeebfighter.jpg b/versioned_docs/version-0.7.5/assets/boards/MavercadeKeebfighter.jpg new file mode 100644 index 0000000..00321fb Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/MavercadeKeebfighter.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/OpenCore0.jpg b/versioned_docs/version-0.7.5/assets/boards/OpenCore0.jpg new file mode 100644 index 0000000..0775a1d Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/OpenCore0.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/OpenCore0WASD.jpg b/versioned_docs/version-0.7.5/assets/boards/OpenCore0WASD.jpg new file mode 100644 index 0000000..fb34d28 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/OpenCore0WASD.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/Pico.jpg b/versioned_docs/version-0.7.5/assets/boards/Pico.jpg new file mode 100644 index 0000000..9216669 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/Pico.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/PicoAnn.jpg b/versioned_docs/version-0.7.5/assets/boards/PicoAnn.jpg new file mode 100644 index 0000000..d62338e Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/PicoAnn.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/PicoFightingBoard.jpg b/versioned_docs/version-0.7.5/assets/boards/PicoFightingBoard.jpg new file mode 100644 index 0000000..2df50d5 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/PicoFightingBoard.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/PicoW.jpg b/versioned_docs/version-0.7.5/assets/boards/PicoW.jpg new file mode 100644 index 0000000..40af05b Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/PicoW.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/RP2040AdvancedBreakoutBoard.jpg b/versioned_docs/version-0.7.5/assets/boards/RP2040AdvancedBreakoutBoard.jpg new file mode 100644 index 0000000..763da96 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/RP2040AdvancedBreakoutBoard.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/RP2040AdvancedBreakoutBoardUSBPassthrough.jpg b/versioned_docs/version-0.7.5/assets/boards/RP2040AdvancedBreakoutBoardUSBPassthrough.jpg new file mode 100644 index 0000000..262ee57 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/RP2040AdvancedBreakoutBoardUSBPassthrough.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/RP2040MiniBreakoutBoard.jpg b/versioned_docs/version-0.7.5/assets/boards/RP2040MiniBreakoutBoard.jpg new file mode 100644 index 0000000..56e0b23 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/RP2040MiniBreakoutBoard.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/RanaTadpole.jpg b/versioned_docs/version-0.7.5/assets/boards/RanaTadpole.jpg new file mode 100644 index 0000000..763e5dd Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/RanaTadpole.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/ReflexCtrlSNES.jpg b/versioned_docs/version-0.7.5/assets/boards/ReflexCtrlSNES.jpg new file mode 100644 index 0000000..5b61cc5 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/ReflexCtrlSNES.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/ReflexEncodeV1.jpg b/versioned_docs/version-0.7.5/assets/boards/ReflexEncodeV1.jpg new file mode 100644 index 0000000..e0a0398 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/ReflexEncodeV1.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/ReflexEncodeV2.jpg b/versioned_docs/version-0.7.5/assets/boards/ReflexEncodeV2.jpg new file mode 100644 index 0000000..be598ce Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/ReflexEncodeV2.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/ReflexEncoder.jpg b/versioned_docs/version-0.7.5/assets/boards/ReflexEncoder.jpg new file mode 100644 index 0000000..e0a0398 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/ReflexEncoder.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/SGFDevices.jpg b/versioned_docs/version-0.7.5/assets/boards/SGFDevices.jpg new file mode 100644 index 0000000..33c6b62 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/SGFDevices.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/SparkFunProMicro.jpg b/versioned_docs/version-0.7.5/assets/boards/SparkFunProMicro.jpg new file mode 100644 index 0000000..668b29b Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/SparkFunProMicro.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/Stress.jpg b/versioned_docs/version-0.7.5/assets/boards/Stress.jpg new file mode 100644 index 0000000..a65c526 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/Stress.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/boards/WaveshareZero.jpg b/versioned_docs/version-0.7.5/assets/boards/WaveshareZero.jpg new file mode 100644 index 0000000..d94bbec Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/boards/WaveshareZero.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/images/GP2040-PFB-demo-1.jpg b/versioned_docs/version-0.7.5/assets/images/GP2040-PFB-demo-1.jpg new file mode 100644 index 0000000..9052677 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/GP2040-PFB-demo-1.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/images/GP2040-PFB-demo-2.jpg b/versioned_docs/version-0.7.5/assets/images/GP2040-PFB-demo-2.jpg new file mode 100644 index 0000000..ca2a4ec Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/GP2040-PFB-demo-2.jpg differ diff --git a/versioned_docs/version-0.7.5/assets/images/community-splash-screens/BentoBox.png b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/BentoBox.png new file mode 100644 index 0000000..9279e30 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/BentoBox.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/community-splash-screens/CrushCounter-v2-0.png b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/CrushCounter-v2-0.png new file mode 100644 index 0000000..f842153 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/CrushCounter-v2-0.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-1.png b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-1.png new file mode 100644 index 0000000..af31f29 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-1.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-2.png b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-2.png new file mode 100644 index 0000000..a733644 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-2.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-3.png b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-3.png new file mode 100644 index 0000000..9ef4247 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-3.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-4.png b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-4.png new file mode 100644 index 0000000..ad13834 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-4.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-5.png b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-5.png new file mode 100644 index 0000000..207010d Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-5.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-6.png b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-6.png new file mode 100644 index 0000000..291f43f Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-6.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-7.png b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-7.png new file mode 100644 index 0000000..bc13904 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/GP2040-CE-7.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/community-splash-screens/Sega-Astro-City.png b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/Sega-Astro-City.png new file mode 100644 index 0000000..8226e01 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/Sega-Astro-City.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/community-splash-screens/Street-Fighter.png b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/Street-Fighter.png new file mode 100644 index 0000000..716db78 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/Street-Fighter.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/community-splash-screens/TheTrain-Logo.png b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/TheTrain-Logo.png new file mode 100644 index 0000000..5795b60 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/community-splash-screens/TheTrain-Logo.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gcp-display-config.png b/versioned_docs/version-0.7.5/assets/images/gcp-display-config.png new file mode 100644 index 0000000..8187474 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gcp-display-config.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/github-sponsor-dark.png b/versioned_docs/version-0.7.5/assets/images/github-sponsor-dark.png new file mode 100644 index 0000000..3e3746e Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/github-sponsor-dark.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/github-sponsor-dimmed.png b/versioned_docs/version-0.7.5/assets/images/github-sponsor-dimmed.png new file mode 100644 index 0000000..850ebfe Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/github-sponsor-dimmed.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/github-sponsor-light.png b/versioned_docs/version-0.7.5/assets/images/github-sponsor-light.png new file mode 100644 index 0000000..1494788 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/github-sponsor-light.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gp2040-ce-logo.png b/versioned_docs/version-0.7.5/assets/images/gp2040-ce-logo.png new file mode 100644 index 0000000..5b15b2b Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gp2040-ce-logo.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-ads1219.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-ads1219.png new file mode 100644 index 0000000..81465ac Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-ads1219.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-analog.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-analog.png new file mode 100644 index 0000000..72b0d27 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-analog.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-bootsel-button.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-bootsel-button.png new file mode 100644 index 0000000..fc73cbd Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-bootsel-button.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-buzzer.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-buzzer.png new file mode 100644 index 0000000..b44fba5 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-buzzer.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-dual-directional.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-dual-directional.png new file mode 100644 index 0000000..f145dac Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-dual-directional.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-extra-button.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-extra-button.png new file mode 100644 index 0000000..7531c73 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-extra-button.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-focus-mode.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-focus-mode.png new file mode 100644 index 0000000..eabd2a7 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-focus-mode.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-input-reverse.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-input-reverse.png new file mode 100644 index 0000000..2e2d1ff Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-input-reverse.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-joystick-slider.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-joystick-slider.png new file mode 100644 index 0000000..79ce250 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-joystick-slider.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-keyboard-host-configuration-wiring-diagram.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-keyboard-host-configuration-wiring-diagram.png new file mode 100644 index 0000000..4963624 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-keyboard-host-configuration-wiring-diagram.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-keyboard-host-configuration.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-keyboard-host-configuration.png new file mode 100644 index 0000000..a9717b2 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-keyboard-host-configuration.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-onboard-led.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-onboard-led.png new file mode 100644 index 0000000..e6d6ffa Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-onboard-led.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-player-number.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-player-number.png new file mode 100644 index 0000000..a408be6 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-player-number.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-ps-passthrough.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-ps-passthrough.png new file mode 100644 index 0000000..57172d5 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-ps-passthrough.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-ps4-mode.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-ps4-mode.png new file mode 100644 index 0000000..a9ff3c9 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-ps4-mode.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-snespad-input.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-snespad-input.png new file mode 100644 index 0000000..7109db3 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-snespad-input.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-socd-slider.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-socd-slider.png new file mode 100644 index 0000000..977fda9 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-socd-slider.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-tilt.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-tilt.png new file mode 100644 index 0000000..16263f3 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-tilt.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-turbo-shmup.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-turbo-shmup.png new file mode 100644 index 0000000..2b06447 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-turbo-shmup.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-turbo.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-turbo.png new file mode 100644 index 0000000..324934f Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-turbo.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-wii-extensions.png b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-wii-extensions.png new file mode 100644 index 0000000..88313c8 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-add-ons-wii-extensions.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-backup-and-restore.png b/versioned_docs/version-0.7.5/assets/images/gpc-backup-and-restore.png new file mode 100644 index 0000000..cfaffd3 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-backup-and-restore.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-display-config.png b/versioned_docs/version-0.7.5/assets/images/gpc-display-config.png new file mode 100644 index 0000000..cda93d2 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-display-config.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-home.png b/versioned_docs/version-0.7.5/assets/images/gpc-home.png new file mode 100644 index 0000000..2296296 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-home.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-hotkey-settings.png b/versioned_docs/version-0.7.5/assets/images/gpc-hotkey-settings.png new file mode 100644 index 0000000..c7411b7 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-hotkey-settings.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-keyboard-mapping.png b/versioned_docs/version-0.7.5/assets/images/gpc-keyboard-mapping.png new file mode 100644 index 0000000..52a20cc Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-keyboard-mapping.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-label-selection.png b/versioned_docs/version-0.7.5/assets/images/gpc-label-selection.png new file mode 100644 index 0000000..aae129a Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-label-selection.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-macros-input-line.png b/versioned_docs/version-0.7.5/assets/images/gpc-macros-input-line.png new file mode 100644 index 0000000..ff1419c Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-macros-input-line.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-macros.png b/versioned_docs/version-0.7.5/assets/images/gpc-macros.png new file mode 100644 index 0000000..47a2a74 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-macros.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-pin-mapping.png b/versioned_docs/version-0.7.5/assets/images/gpc-pin-mapping.png new file mode 100644 index 0000000..f293352 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-pin-mapping.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-pled-pwm.png b/versioned_docs/version-0.7.5/assets/images/gpc-pled-pwm.png new file mode 100644 index 0000000..6dad71a Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-pled-pwm.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-pled-rgb.png b/versioned_docs/version-0.7.5/assets/images/gpc-pled-rgb.png new file mode 100644 index 0000000..81a538e Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-pled-rgb.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-profile-settings.png b/versioned_docs/version-0.7.5/assets/images/gpc-profile-settings.png new file mode 100644 index 0000000..f00bf82 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-profile-settings.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-reset-settings.png b/versioned_docs/version-0.7.5/assets/images/gpc-reset-settings.png new file mode 100644 index 0000000..e3c37f9 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-reset-settings.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-rgb-led-button-order.png b/versioned_docs/version-0.7.5/assets/images/gpc-rgb-led-button-order.png new file mode 100644 index 0000000..b8fcf5b Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-rgb-led-button-order.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-rgb-led-config.png b/versioned_docs/version-0.7.5/assets/images/gpc-rgb-led-config.png new file mode 100644 index 0000000..da29587 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-rgb-led-config.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-rgb-led-custom-theme.png b/versioned_docs/version-0.7.5/assets/images/gpc-rgb-led-custom-theme.png new file mode 100644 index 0000000..c5373ed Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-rgb-led-custom-theme.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/gpc-settings.png b/versioned_docs/version-0.7.5/assets/images/gpc-settings.png new file mode 100644 index 0000000..ad7ba6e Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/gpc-settings.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/_base-template.xcf b/versioned_docs/version-0.7.5/assets/images/led-themes/_base-template.xcf new file mode 100644 index 0000000..ec84e3e Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/_base-template.xcf differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/fightboard.png b/versioned_docs/version-0.7.5/assets/images/led-themes/fightboard.png new file mode 100644 index 0000000..26939c5 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/fightboard.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-a.png b/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-a.png new file mode 100644 index 0000000..7ee2103 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-a.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-b.png b/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-b.png new file mode 100644 index 0000000..4cf0d54 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-b.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-c.png b/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-c.png new file mode 100644 index 0000000..5ef9c76 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-c.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-d.png b/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-d.png new file mode 100644 index 0000000..4dd0ca3 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-d.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-e.png b/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-e.png new file mode 100644 index 0000000..9b737ad Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/guilty-gear-type-e.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/neogeo-curved.png b/versioned_docs/version-0.7.5/assets/images/led-themes/neogeo-curved.png new file mode 100644 index 0000000..6cc43de Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/neogeo-curved.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/neogeo-modern.png b/versioned_docs/version-0.7.5/assets/images/led-themes/neogeo-modern.png new file mode 100644 index 0000000..771577c Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/neogeo-modern.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/neogeo-straight.png b/versioned_docs/version-0.7.5/assets/images/led-themes/neogeo-straight.png new file mode 100644 index 0000000..dee2730 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/neogeo-straight.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/playstation-all.png b/versioned_docs/version-0.7.5/assets/images/led-themes/playstation-all.png new file mode 100644 index 0000000..14f6942 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/playstation-all.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/playstation.png b/versioned_docs/version-0.7.5/assets/images/led-themes/playstation.png new file mode 100644 index 0000000..ffd6492 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/playstation.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/six-button-fighter-plus.png b/versioned_docs/version-0.7.5/assets/images/led-themes/six-button-fighter-plus.png new file mode 100644 index 0000000..393fe9c Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/six-button-fighter-plus.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/six-button-fighter.png b/versioned_docs/version-0.7.5/assets/images/led-themes/six-button-fighter.png new file mode 100644 index 0000000..8ecf6e2 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/six-button-fighter.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/static-rainbow.png b/versioned_docs/version-0.7.5/assets/images/led-themes/static-rainbow.png new file mode 100644 index 0000000..9c9f2c9 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/static-rainbow.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/street-fighter-2.png b/versioned_docs/version-0.7.5/assets/images/led-themes/street-fighter-2.png new file mode 100644 index 0000000..9ae15ce Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/street-fighter-2.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/super-famicom-all.png b/versioned_docs/version-0.7.5/assets/images/led-themes/super-famicom-all.png new file mode 100644 index 0000000..0d49acb Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/super-famicom-all.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/super-famicom.png b/versioned_docs/version-0.7.5/assets/images/led-themes/super-famicom.png new file mode 100644 index 0000000..f76b0a6 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/super-famicom.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/tekken.png b/versioned_docs/version-0.7.5/assets/images/led-themes/tekken.png new file mode 100644 index 0000000..34f2467 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/tekken.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/xbox-all.png b/versioned_docs/version-0.7.5/assets/images/led-themes/xbox-all.png new file mode 100644 index 0000000..15abaa9 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/xbox-all.png differ diff --git a/versioned_docs/version-0.7.5/assets/images/led-themes/xbox.png b/versioned_docs/version-0.7.5/assets/images/led-themes/xbox.png new file mode 100644 index 0000000..7bb7442 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/images/led-themes/xbox.png differ diff --git a/versioned_docs/version-0.7.5/assets/wiring/AdafruitKB2040_Pinout.png b/versioned_docs/version-0.7.5/assets/wiring/AdafruitKB2040_Pinout.png new file mode 100644 index 0000000..b199225 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/wiring/AdafruitKB2040_Pinout.png differ diff --git a/versioned_docs/version-0.7.5/assets/wiring/RaspberryPiPico_Pinout.png b/versioned_docs/version-0.7.5/assets/wiring/RaspberryPiPico_Pinout.png new file mode 100644 index 0000000..222b103 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/wiring/RaspberryPiPico_Pinout.png differ diff --git a/versioned_docs/version-0.7.5/assets/wiring/SparkFunProMicroRP2040_Pinout.png b/versioned_docs/version-0.7.5/assets/wiring/SparkFunProMicroRP2040_Pinout.png new file mode 100644 index 0000000..8470158 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/wiring/SparkFunProMicroRP2040_Pinout.png differ diff --git a/versioned_docs/version-0.7.5/assets/wiring/WaveshareRP2040Zero_Pinout.png b/versioned_docs/version-0.7.5/assets/wiring/WaveshareRP2040Zero_Pinout.png new file mode 100644 index 0000000..3057626 Binary files /dev/null and b/versioned_docs/version-0.7.5/assets/wiring/WaveshareRP2040Zero_Pinout.png differ diff --git a/versioned_docs/version-0.7.5/community-splash-screens.md b/versioned_docs/version-0.7.5/community-splash-screens.md new file mode 100644 index 0000000..52aebec --- /dev/null +++ b/versioned_docs/version-0.7.5/community-splash-screens.md @@ -0,0 +1,18 @@ +--- +title: Community Splash Screens +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Community Splash Screens + +Here is a collection of community created splash screens that can be used with an optional OLED screen. Upload the image using the web configurator to set it up. + +All images been formatted to 128x64 in black / white color. + +| ![BentoBox](@site/docs/assets/images/community-splash-screens/BentoBox.png) | ![Crush_Counter](@site/docs/assets/images/community-splash-screens/CrushCounter-v2-0.png) | ![GP2040-CE1](@site/docs/assets/images/community-splash-screens/GP2040-CE-1.png) | ![GP2040-CE2](@site/docs/assets/images/community-splash-screens/GP2040-CE-2.png) | ![GP2040-CE3](@site/docs/assets/images/community-splash-screens/GP2040-CE-3.png) | +|---|---|---|---|---| +| ![GP2040-CE4](@site/docs/assets/images/community-splash-screens/GP2040-CE-4.png) | ![GP2040-CE5](@site/docs/assets/images/community-splash-screens/GP2040-CE-5.png) | ![Sega_Astro_City](@site/docs/assets/images/community-splash-screens/Sega-Astro-City.png) | ![Street_Fighter](@site/docs/assets/images/community-splash-screens/Street-Fighter.png) | ![TheTrain](@site/docs/assets/images/community-splash-screens/TheTrain-Logo.png) | +| ![GP2040-CE6](@site/docs/assets/images/community-splash-screens/GP2040-CE-6.png) | ![GP2040-CE7](@site/docs/assets/images/community-splash-screens/GP2040-CE-7.png) | | | | \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/controller-build/wiring.md b/versioned_docs/version-0.7.5/controller-build/wiring.md new file mode 100644 index 0000000..faed900 --- /dev/null +++ b/versioned_docs/version-0.7.5/controller-build/wiring.md @@ -0,0 +1,33 @@ +--- +title: Microcontroller Board Wiring +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Wiring + +These are the default pin mappings for each GP2040-CE supported microcontroller board. + +## Raspberry Pi Pico + +:::note + +The Raspberry Pi Pico pinout can also be used on clone boards with the same form factor and pinout, such as the Pimironi Pico LiPo and the Waveshare RP2040-Plus. + +::: + +![Raspberry Pi Pico Pinout](../assets//wiring/RaspberryPiPico_Pinout.png) + +## SparkFun Pro Micro - RP2040 + +![SparkFun Pro Micro - RP2040 Pinout](../assets/wiring/SparkFunProMicroRP2040_Pinout.png) + +## Waveshare RP2040-Zero + +![Waveshare RP2040-Zero Pinout](../assets/wiring/WaveshareRP2040Zero_Pinout.png) + +## Adafruit KB2040 + +![Adafruit KB2040 Pinout](../assets/wiring/AdafruitKB2040_Pinout.png) diff --git a/versioned_docs/version-0.7.5/development/contribution-guide.md b/versioned_docs/version-0.7.5/development/contribution-guide.md new file mode 100644 index 0000000..0377a3a --- /dev/null +++ b/versioned_docs/version-0.7.5/development/contribution-guide.md @@ -0,0 +1,65 @@ +--- +title: How to Contribute +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# How to Contribute + +Thank you for taking the time to read this and contributing to the project! + +Third-party contributions help us grow and improve GP2040-CE. We want to make the pull request and contribution process useful and easy for both contributors and maintainers. + +To this end we’ve put together some guidelines for contributors to help your pull request be accepted without major changes. + +## Project Overview + +GP2040-CE is largely written in C/C++, with a significant portion of the web configurator written in JavaScript within a React framework. + +## How do I make a contribution? + +Never made an open source contribution before? Wondering how contributions work in GP2040-CE? Here’s a quick rundown! + +1. Sign up for a GitHub account. +2. Find an issue you are interested in addressing, or a feature you would like to add. +3. Fork the repository associated with the issue to your GitHub account. This means that you will have a copy of the repository under `your-GitHub-username/GP2040-CE`. +4. Clone the repository to your local machine using `git clone https://github.com/OpenStickCommunity/GP2040-CE` +5. If you’re working on a new feature consider opening an issue to talk with us about the work you’re about to undertake. +6. Create a new branch for your fix using `git checkout -b branch-name-here`. +7. Make the appropriate changes for the issue you are trying to address or the feature that you want to add. +8. Use `git add insert-paths-of-changed-files-here` to add the file contents of the changed files to the “snapshot” git uses to manage the state of the project, also known as the index. +9. Use `git commit -m "Insert a short message of the changes made here"` to store the contents of the index with a descriptive message. +10. Push the changes to your repository on GitHub using `git push origin branch-name-here`. +11. Submit a pull request to [OpenStickCommunity/GP2040-CE](https://github.com/OpenStickCommunity/GP2040-CE). +12. Title the pull request with a short description of the changes made and the issue or bug number associated with your change. For example, you can title an issue like so “Added more log outputting to resolve #4352”. +13. In the description of the pull request explain the changes that you made, any issues you think exist with the pull request you made, and any questions you have for the maintainer. It’s OK if your pull request is not perfect (no pull request is), the reviewer will be able to help you fix any problems and improve it! +14. Wait for the pull request to be reviewed by a maintainer. +15. Make changes to the pull request if the reviewing maintainer recommends them. +16. Celebrate your success after your pull request is merged! + +## Coding Conventions + +## General Guidelines + +- **Before you contribute**: Please make sure your fork is up to date with the upstream `GP2040-CE` repo. This will help minimize CI failures that may not occur for you when compiling locally. +- Separate PRs into logical units. For example, do not submit one PR covering two separate features, instead submit a separate PR for each feature. +- Check for unnecessary whitespace with `git diff --check` before committing. +- Make sure your code change actually compiles. +- Make sure commit messages are understandable on their own. You should put a short description (no more than 70 characters) on the first line, the second line should be empty, and on the 3rd and later lines you should describe your commit in detail, if required. + +## Documentation + +Documentation is one of the easiest ways to get started contributing to GP2040-CE. Finding places where the documentation is wrong or incomplete and fixing those is easy! We also very badly need someone to edit our documentation, so if you have editing skills but aren’t sure where or how to jump in please [reach out for help](getting-help-support "GP2040-CE | Getting Help")! + +### Previewing Documentation + +1. Open a terminal in the root of the GP2040-CE project +2. Change the directory to `docs` +3. Run the following commands + ``` + npm install + npm start + ``` +4. In a web browser, go to `http://localhost:3000` diff --git a/versioned_docs/version-0.7.5/development/development.mdx b/versioned_docs/version-0.7.5/development/development.mdx new file mode 100644 index 0000000..171369d --- /dev/null +++ b/versioned_docs/version-0.7.5/development/development.mdx @@ -0,0 +1,546 @@ +--- +title: GP2040-CE Development +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# GP2040-CE Development + +GP2040-CE is written in C++ and set up as a standard Pico SDK project. +See [Getting Started with the Raspberry Pi Pico](https://rptl.io/pico-get-started). + +## Environment Setup + +Most of this will be parroting the above linked PDF from the Raspberry Pi Foundation. + +For GP2040-CE development on the Windows platform using the Pico SDK Installer, please skip ahead to the 'Windows Setup (Pico SDK Installer)' section on this page. + + + + +1. Download and install CMake from the [CMake Website](https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4-windows-x86_64.msi). +2. Download and install [pico-setup-windows-x64-standalone](https://github.com/raspberrypi/pico-setup-windows/releases/). +3. Download and install VSCode. +4. Download and install [Windows Terminal](https://github.com/microsoft/terminal/releases/tag/v1.17.11461.0). +5. Open Windows Terminal. +6. Download the GP2040-CE-main repository by running the following commands in the Windows Terminal. This will download the folder to `C:\Users\user\GP2040-CE`. + + ```console + git clone https://github.com/OpenStickCommunity/GP2040-CE.git + cd GP2040-CE + git submodule update --init + ``` + + After installing the Raspberry Pi Pico SDK, you should now have a shortcut to "Pico-Visual Studio Code" (search for it using Windows Search). + +7. Open "Pico-Visual Studio Code" via Windows search. This is a shortcut with pre-configured environment variables (this will be explained later). +8. Navigate to the Extensions window by pressing `Ctrl+Shift+X`. +9. Install "CMake Tools" by Microsoft. +10. Open the GP2040-CE folder you downloaded earlier via "File > Open Folder." + + + + +1. Install the latest ARM GNU Toolchain + - [Arm GNU Toolchain](https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads) +2. Install latest version of CMake + - [CMake](https://cmake.org/download/) +3. Install Visual Studio Build tools, or the full Visual Studio IDE + - Make sure to select the Desktop development with C++ workload + - Select the latest Windows 10 or Windows 11 SDK from the Individual Components + - [Visual Studio Build tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) + - [Visual Studio Community Edition](https://visualstudio.microsoft.com/downloads/#visual-studio-community-2022) +4. Install Python 3.10 + - At the end of the installation, there is an option to disable max file path length. You want to select this. + - [Python](https://www.python.org/downloads/windows/) +5. Install Visual Studio Code - Optional + - [Visual Studio Code](https://code.visualstudio.com/) +6. Install git + - Set default editor to anything other than VIM, such as Visual Studio Code +7. Install NodeJS and NPM + - [Download and install NodeJS](https://nodejs.org/en/download) +8. Clone the Pico SDK to your local computer + + ```console + git clone https://github.com/raspberrypi/pico-sdk.git + cd pico-sdk + git submodule update --init + cd .. + ``` + +9. From a command-prompt, Clone GP2040-CE to your local computer + + ```console + git clone https://github.com/OpenStickCommunity/GP2040-CE.git + cd GP2040-CE + ``` + + + + +#### Ubuntu + +This setup assumes an understanding of Linux terminal usage. + +1. Get the SDK + + ```bash + cd ~/ + mkdir pico + cd pico + git clone https://github.com/raspberrypi/pico-sdk.git --branch master + cd pico-sdk + git submodule update --init + cd .. + ``` + +1. Install the toolchain + + ```bash + sudo apt update + sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential + ``` + + - May additionally need to install `libstdc++-arm-none-eabi-newlib` + +1. Install NodeJS and NPM + + ```bash + curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\ + sudo apt-get install -y nodejs + ``` + +1. Get GP2040-CE + + ```bash + git clone https://github.com/OpenStickCommunity/GP2040-CE.git + cd GP2040-CE + git submodule update --init + ``` + +#### Raspberry Pi + +This setup script requires approximately 2.5GB of disk space on your SD card. + +1. Download the setup script + + ```bash + wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh + ``` + +1. Make script executable and Run it. + + ```bash + chmod +x pico_setup.sh + ``` + +1. Install NodeJS and NPM + + ```bash + curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\ + sudo apt-get install -y nodejs + ``` + +1. Reboot your Pi + + ```bash + sudo reboot + ``` + +1. Get GP2040-CE + + ```bash + git clone https://github.com/OpenStickCommunity/GP2040-CE.git + cd GP2040-CE + git submodule update --init + ``` + + + + +## Building + +### Environment Variables + +A number of new environment variables have been setup to control parts of the build flow. + +| Name | Default | Description | +| ----------- | --------- | ----------- | +|GP2040_BOARDCONFIG |Pico |The boards.h config file to use for the build.| +|SKIP_WEBBUILD|FALSE|Determines whether the web configurator is built during the cmake configuration step.| +|SKIP_SUBMODULES|FALSE|Determines whether the submodule init command is run automatically during the cmake configuration step.| + +#### SDK Variables + +There are a few SDK variables we take advantage of for our builds. + +| Name | Default | Description | +| ----------- | --------- | ----------- | +|PICO_BOARD|pico| This is the embedded board that the RP2040 chip is part of. By default, it assumes the Pico. This variable would match the `` file in the board's configs folder.| + + + + +After installing the Raspberry Pi Pico SDK, you should now have a shortcut to "Pico-Visual Studio Code" (search for it using Windows Search). This shortcut should already have everything configured, **allowing you to skip to step 7**. If you're experiencing compilation issues, consider following the manual steps outlined here. + +Ensure the `PICO_SDK_PATH` environment variable is set: + +1. Search for "Edit environment variables for your account" in Windows. +2. Under "User Variables," click "New...". +3. In the dialog that appears, enter `PICO_SDK_PATH` for the Variable Name. +4. Click "Browse Directory" and navigate to `C:\Program Files\Raspberry Pi\Pico SDK v1.5.1\pico-sdk` for the Variable Value. +5. Create another new variable. +6. Enter `GP2040_BOARDCONFIG` for the Variable Name. +7. Enter `Pico` (or the name of your edited config folder) for the Variable Value. + +You can also set the variable within VSCode: + +1. Press `Ctrl + ,` to open the settings. +2. Use the search bar to find "CMake." +3. Scroll until you see "CMake: Configure Environment." +4. Click "Add Item." +5. Key: `GP2040_BOARDCONFIG` +6. Value: `Pico` (or your working folder name). + +When prompted, choose `GCC 10.3.1 ARM NONE EABI` for "Select a kit for GP2040-CE" + +From inside VSCode: + +1. Click the CMake icon on the left sidebar of VSCode. +2. You'll see three icons at the top-right corner of the CMake project outline. Click the "Configure All Projects" icon (looks like a page with an arrow). +3. Wait for the configuration process to complete. If progress isn't visible, open a new terminal in VSCode by clicking on the "Terminal" menu, then "New Terminal". A new terminal window will open at the bottom, navigate the "Output" tab. +4. Click "Build All Projects" in the CMake project outline. +5. The files should be in a new folder named "build" inside the GP2040-CE folder + + + + +Start in the GP2040-CE folder. **From a Developer Powershell or Developer Command Command Prompt**: + +:::note + +A new Powershell or Command Prompt session will be required after setting an environment variable. + +::: + +1. Ensure you have the `PICO_SDK_PATH` environment variable set to the path to your pico-sdk folder. +2. (optional) Set the `GP2040_BOARDCONFIG` environment variable to the folder name for your board configuration. + - Default value is `Pico` + +3. Create a build directory, configure the build, and execute the build. + + ```console + mkdir build + cd build + cmake -G "NMake Makefiles" .. + nmake + ``` + +4. Your UF2 file should be in the build directory. + + + + +Start in the GP2040-CE folder + +1. Ensure you have the `PICO_SDK_PATH` environment variable set to the path to your pico-sdk folder. +2. (optional) Set the `GP2040_BOARDCONFIG` environment variable to the folder name for your board configuration. + - Default value is `Pico` +3. Create a build directory, configure the build, and execute the build. + + ```bash + mkdir build + cd build + cmake .. + make + ``` + +4. Your UF2 file should be in the build directory. + + + + +## Configuration + +:::note + +We're looking to move away from compile time configuration, in favor of runtime configuration. + +::: + +There are two simple options for building GP2040-CE for your board. You can either edit an existing board definition, or create your own. Several example configurations are located in the repository **[configs](https://github.com/OpenStickCommunity/GP2040-CE/tree/main/configs)** folder. This document will outline setting up a new build configuration. + +### Board Configuration Folder + +Each subfolder in [`configs`](https://github.com/OpenStickCommunity/GP2040-CE/tree/main/configs) contains a separate board configuration, which consists of the following: + +| Name | Required? | Description | +| ----------- | --------- | ----------- | +| `BoardConfig.h` | Yes | The configuration file used when building GP2040-CE for a specific controller/board. Contains initial pin mappings, LED configuration, etc. | +| `README.md` | No | Provides information related to this board configuration. Not required for the build process, but suggested for pull requests of new board configurations. | +| `assets/` | No | Folder for containing assets included in the `README.md`. Not required for the build process. +|'\'|No| Board definition file, named after the board itself, used by the Pico SDK for configuring board specific SDK features. [Pico Example](https://github.com/raspberrypi/pico-sdk/blob/master/src/boards/include/boards/pico.h) + +### Board Configuration (`BoardConfig.h`) + +The following board options are available in the `BoardConfig.h` file: + +| Name | Description | Required? | +| ---------------- | ---------------------------- | --------- | +| **PIN_DPAD_*X***
**PIN_BUTTON_*X*** | The GPIO pin for the button. Replace the *`X`* with GP2040-CE button or D-pad direction. | Yes | +| **DEFAULT_SOCD_MODE** | The default SOCD mode to use, defaults to `SOCD_MODE_NEUTRAL`.
Available options are:
`SOCD_MODE_NEUTRAL`
`SOCD_MODE_UP_PRIORITY`
`SOCD_MODE_SECOND_INPUT_PRIORITY` | No | +| **BUTTON_LAYOUT** | The layout of controls/buttons for use with per-button LEDs and external displays.
Available options are:
`BUTTON_LAYOUT_STICKLESS`
`BUTTON_LAYOUT_WASD` | Yes | + +Create `configs/NewBoard/BoardConfig.h` and add your pin configuration and options. An example `BoardConfig.h` file: + +```cpp +// BoardConfig.h + +#include + +#define PIN_DPAD_UP 2 +#define PIN_DPAD_DOWN 3 +#define PIN_DPAD_LEFT 4 +#define PIN_DPAD_RIGHT 5 +#define PIN_BUTTON_B1 6 +#define PIN_BUTTON_B2 7 +#define PIN_BUTTON_B3 8 +#define PIN_BUTTON_B4 9 +#define PIN_BUTTON_L1 10 +#define PIN_BUTTON_R1 11 +#define PIN_BUTTON_L2 26 +#define PIN_BUTTON_R2 27 +#define PIN_BUTTON_S1 16 +#define PIN_BUTTON_S2 17 +#define PIN_BUTTON_L3 18 +#define PIN_BUTTON_R3 19 +#define PIN_BUTTON_A1 20 +#define PIN_BUTTON_A2 21 +#define PIN_BUTTON_TURBO -1 +#define PIN_SLIDER_LS -1 +#define PIN_SLIDER_RS -1 + +#define DEFAULT_SOCD_MODE SOCD_MODE_NEUTRAL +#define BUTTON_LAYOUT BUTTON_LAYOUT_ARCADE +``` + +#### RGB LEDs + +GP2040-CE supports per-button WS2812 and similar RGB LEDs. + +The following RGB LED options are available in the `BoardConfig.h` file: + +| Name | Description | Required? | +| ---------------- | ---------------------------- | --------- | +| **BUTTON_LAYOUT** | The layout of controls/buttons for use with per-button LEDs and external displays.
Available options are:
`BUTTON_LAYOUT_STICKLESS`
`BUTTON_LAYOUT_WASD` | Yes | +| **BOARD_LEDS_PIN** | Data PIN for your LED strand | Yes | +| **LED_FORMAT** | The color data format for the LED chain.
Available options are:
`LED_FORMAT_GRB`
`LED_FORMAT_RGB`
`LED_FORMAT_GRBW`
`LED_FORMAT_RGBW` | No, default value `LED_FORMAT_GRB` | +| **LEDS_PER_PIXEL** | The number of LEDs per button. | Yes | +| **LED_BRIGHTNESS_MAXIMUM** | Max brightness value, `uint8_t` 0-255. | Yes | +| **LED_BRIGHTNESS_STEPS** | The number of brightness steps when using the up/down hotkey. | Yes | +| **LEDS_DPAD_*X***
**LEDS_BUTTON_*X*** | The index of the button on the LED chain. Replace the *`X`* with GP2040-CE button or D-pad direction. | Yes | +| **LEDS_BASE_ANIMATION_INDEX** | The default LED animation index. | No, defaults to `1` | +| **LEDS_STATIC_COLOR_INDEX** | The default color index for the static color theme | No, defaults to `2` | +| **LEDS_BUTTON_COLOR_INDEX** | The default color index for the pressed button color | No, defaults to `1` | +| **LEDS_THEME_INDEX** | The default theme index for static themes | No, defaults to `0` | +| **LEDS_RAINBOW_CYCLE_TIME** | The color cycle time for rainbow cycle theme | No, defaults to `40` | +| **LEDS_CHASE_CYCLE_TIME** | The animation speed for the rainbow chase theme | No, defaults to `85` | + +An example RGB LED setup in the `BoardConfig.h` file: + +```cpp +// BoardConfig.h + +#include "gp2040.h" +#include "NeoPico.hpp" + +#define BUTTON_LAYOUT BUTTON_LAYOUT_STICKLESS + +#define BOARD_LEDS_PIN 22 + +#define LED_BRIGHTNESS_MAXIMUM 100 +#define LED_BRIGHTNESS_STEPS 5 +#define LED_FORMAT LED_FORMAT_GRB +#define LEDS_PER_PIXEL 2 + +#define LEDS_DPAD_LEFT 0 +#define LEDS_DPAD_DOWN 1 +#define LEDS_DPAD_RIGHT 2 +#define LEDS_DPAD_UP 3 +#define LEDS_BUTTON_B3 4 +#define LEDS_BUTTON_B4 5 +#define LEDS_BUTTON_R1 6 +#define LEDS_BUTTON_L1 7 +#define LEDS_BUTTON_B1 8 +#define LEDS_BUTTON_B2 9 +#define LEDS_BUTTON_R2 10 +#define LEDS_BUTTON_L2 11 +``` + +#### Player LEDs + +GP2040-CE supports PWM and RGB player LEDs (PLEDs) and can be configured in the `BoardConfig.h` file. + +:::note + +RGB PLEDs require [RGB LEDs](#rgb-leds) to be configured. + +::: + +The following PLED options are available in the `BoardConfig.h` file: + +| Name | Description | Required? | +| ---------------- | ---------------------------- | --------- | +| **PLED_TYPE** | Configures the type of PLEDs.
Available options are: `PLED_TYPE_PWM`, `PLED_TYPE_RGB` | Yes | +| **PLED1_PIN** | (PWM) The GPIO pin for PLED #1.
(RGB) The index of PLED #1 on the LED chain. | Yes | +| **PLED2_PIN** | (PWM) The GPIO pin for PLED #2.
(RGB) The index of PLED #2 on the LED chain. | Yes | +| **PLED3_PIN** | (PWM) The GPIO pin for PLED #3.
(RGB) The index of PLED #3 on the LED chain. | Yes | +| **PLED4_PIN** | (PWM) The GPIO pin for PLED #4.
(RGB) The index of PLED #4 on the LED chain. | Yes | + +An example PLED setup in the `BoardConfig.h` file: + +```cpp +// BoardConfig.h + +#include "PlayerLEDs.h" + +#define PLED_TYPE PLED_TYPE_RGB +#define PLED1_PIN 12 +#define PLED2_PIN 13 +#define PLED3_PIN 14 +#define PLED4_PIN 15 +``` + +#### I2C Displays + +GP2040-CE supports 128x64 monochrome displays that run on the SSD1306, SH1106 or SH1107 drivers. The following options are available for displays: + +| Name | Description | Required? | +| - | - | - | +| **BUTTON_LAYOUT** | The layout of controls/buttons for use with per-button LEDs and external displays.
Available options are:
`BUTTON_LAYOUT_STICKLESS`
`BUTTON_LAYOUT_WASD` | Yes | +| **HAS_I2C_DISPLAY** | Flag to indicate the controller contains an I2C display module. | No | +| **DISPLAY_I2C_ADDR** | The I2C address of the display. | No, defaults to `0x3C` | +| **I2C_SDA_PIN** | The GPIO pin for the I2C SDA line. | If `HAS_I2C_DISPLAY` is enabled | +| **I2C_SCL_PIN** | The GPIO pin for the I2C SCL line. | If `HAS_I2C_DISPLAY` is enabled | +| **I2C_BLOCK** | The I2C block on the Pico. Refer to the [Pico Pinout Diagram](https://datasheets.raspberrypi.com/pico/Pico-R3-A4-Pinout.pdf) to identify which block is in use based on the SDA and SCL pins being used.
Available options are:
`i2c0`
`i2c1` | No, defaults to `i2c0` | +| **I2C_SPEED** | The speed of the I2C bus. `100000` is standard mode, while `400000` is used for fast mode communication. Higher values may be used but will require testing the device for support. | No, defaults to `400000` | +| **DISPLAY_FLIP** | Flag to flip the rendered display output. Set to `1` to enable. | No, defaults to `0` | +| **DISPLAY_INVERT** | Flag to invert the rendered display output. Set to `1` to enable. | No, defaults to `0` | + +An example I2C display setup in the `BoardConfig.h` file: + +```cpp +#define BUTTON_LAYOUT BUTTON_LAYOUT_WASD +#define HAS_I2C_DISPLAY 1 +#define I2C_SDA_PIN 0 +#define I2C_SCL_PIN 1 +#define I2C_BLOCK i2c0 +#define I2C_SPEED 800000 +``` + +#### I2C Display Splash + +The firmware also has a splash display feature. The default splash image has been defined in `headers/addons/i2cdisplay.h`. The data for the splash image are bytes representing the bitmap to be displayed on the OLED screen. The splash image can be set via the web-config. If you would like to change the default version of the splash image (to preserve it beyond data wipe), it can be customized with a C define named `DEFAULT_SPLASH` in the active `BoardConfig.h` file. +The instructions on how to generate those bytes are as follows: + +1. Navigate to Bitmap Converter web utility + - +2. Configure generated code + - Select Marlin 2.x and Bitmap, untick all the rest. +3. Upload the splash image file + - Set the image file after clicking on "Choose file". The image file needs to be preprocessed to your liking and cropped to 128x64. This should populate a code block below. +4. Use the generated code + - Copy the hex numbers inside the curly braces from the code block. + - Navigate to the `BoardConfig.h` of your choice and at the end of the file right before `#endif`. Create a C define like so: + + ```cpp + #define DEFAULT_SPLASH \ + ``` + + - Then paste what you copied below what you just typed. Be sure to edit the array of bytes as follows: + + ```cpp + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ // First line + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ // Second line + ... // All lines below previous ones end in \ similar to those above + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 // Last line doesn't have an \ to escape the new line + ``` + + - Here's a sample entry from Pico `BoardConfig.h`: + + ```cpp + #define DEFAULT_SPLASH \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xDF,0xC0, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xC1,0xFF,0xA0, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xCF,0xFE,0x80, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xE0,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xAB,0xC0,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x00,0x00,0xFB,0x83,0xFF,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x01,0xFF,0x00,0x01,0xF3,0x07,0xFC,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x07,0xFF,0x00,0x03,0xE0,0x3F,0xF4,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x38,0x0A,0xE7,0x80,0x03,0xC0,0x5F,0x80,0x00, \ + 0x00,0x00,0x00,0x20,0x07,0x81,0xFF,0x39,0xC3,0xC7,0x01,0xD7,0x80,0x3F,0x00,0x00, \ + 0x00,0x00,0x00,0xE0,0x1F,0xE7,0xFF,0x79,0xC7,0x87,0x9F,0xA7,0x80,0x6E,0x3C,0x00, \ + 0x00,0x00,0xA0,0xC0,0x3F,0xEA,0xE7,0xF3,0xEF,0x07,0x7F,0xC7,0x01,0xCF,0xFF,0x80, \ + 0x00,0x03,0x8F,0xFC,0x7F,0xC3,0xC7,0x7F,0xFE,0x0F,0x7E,0x8F,0x87,0xDF,0xFC,0x00, \ + 0x00,0x0F,0xFF,0xFF,0x73,0xC7,0x87,0xFF,0xDE,0x0E,0x50,0x07,0x1F,0x1F,0xD0,0x00, \ + 0x00,0x1F,0x57,0xFF,0xE7,0x8F,0x07,0xFF,0x1C,0x3E,0x00,0x0F,0xFF,0x7F,0x00,0x00, \ + 0x00,0x7E,0x0B,0x8F,0x8F,0x8E,0x0F,0xFF,0x9E,0x7C,0x00,0x07,0xFD,0xFC,0x00,0x00, \ + 0x00,0x7C,0x37,0x9F,0x1F,0x1E,0x0F,0x87,0x1E,0xF8,0x00,0x07,0xF0,0x30,0x00,0x00, \ + 0x00,0xF1,0xF7,0xFE,0x1E,0x1C,0x3E,0x0E,0x1F,0xF0,0x00,0x01,0x40,0x28,0x00,0x00, \ + 0x01,0xEF,0xE7,0xF8,0x3C,0x3E,0x7C,0x0F,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x03,0xFF,0x8F,0xF0,0x7F,0xFE,0xF8,0x0E,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x03,0xFF,0xCF,0xC0,0xFF,0xFF,0xF0,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x07,0x8B,0xFF,0x01,0xFF,0x8F,0xC0,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x07,0x87,0xFE,0x01,0xFE,0x0F,0x80,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x07,0x1F,0xDE,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x07,0xBF,0x9E,0x01,0xC0,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x07,0xFF,0x9C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x07,0xFB,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x03,0xE7,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x01,0x47,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x0E,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + ``` + +6. Test and verify + - Compile, if you did everything right, it should compile fine + - Load the UF2 after the compile. Check and verify in the web-config, if you have set a custom image before, you might need to reset data. diff --git a/versioned_docs/version-0.7.5/development/templates.md b/versioned_docs/version-0.7.5/development/templates.md new file mode 100644 index 0000000..19a25ef --- /dev/null +++ b/versioned_docs/version-0.7.5/development/templates.md @@ -0,0 +1,83 @@ +--- +title: Templates +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Templates + +## Configuration Templates + +### README Template + +```md +# Board Name + +![Image of Board](assets/board-image.jpeg) + +Basic description of the board + +(RP2040 Pinout as a markdown table) +| GPIO Pin | Input/Function | +|:--------:|:--------------:| +| 0 | | +| 1 | | +| 2 | | +| 3 | | +| 4 | | +| 5 | | +| 6 | | +| 7 | | +| 8 | | +| 9 | | +| 10 | | +| 11 | | +| 12 | | +| 13 | | +| 14 | | +| 15 | | +| 16 | | +| 17 | | +| 18 | | +| 19 | | +| 20 | | +| 21 | | +| 22 | | +| 23 | | +| 24 | | +| 25 | | +| 26 | | +| 27 | | +| 28 | | +| 29 | | + +Device Maintainer: [Name, Username, or Business Name](https://github.com/username) +Supported Hardware Variations: List versions/variations that share this configuration +Hardware Availability: List where one can purchase the boards that share this configuration +``` + +## Documentation Templates + +### Add-On Template + +```md +## Add-On Name + +Purpose: The intended function and purpose of this add-on for an end user. + +![Web Configurator Image](assets/images/gpc-add-ons-name) + +- Web Configurator Option 1 +- Web Configurator Option 2 +- Web Configurator Option 3 + +Hardware Requirements: + +List any hardware that is required for the intended functioning of this add-on. + +Notes + +Provide any miscellaneous notes that an end user may want or need to know with regard to this addon. +``` diff --git a/versioned_docs/version-0.7.5/downloads/download-page.mdx b/versioned_docs/version-0.7.5/downloads/download-page.mdx new file mode 100644 index 0000000..7a2386f --- /dev/null +++ b/versioned_docs/version-0.7.5/downloads/download-page.mdx @@ -0,0 +1,47 @@ +--- +title: Downloads +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +import { + Microcontrollers, + OfficialDevices, + OpenSourceDevices, + ClosedSourceDevices, + LegacyDevices, +} from "@site/src/components/Download.tsx"; + +# Downloads + +## Microcontroller Boards + + + +## Official Project Boards + + + +## Open Source Community Devices + + + +## Closed Source Community Devices + + + +## Legacy Devices + +GP2040-CE builds for these devices have been deprecated due to one or more of the following reasons: + +- The manufacturer already provides a custom build of GP2040-CE +- The device is no longer available for purchase +- The operation of the device running an updated GP2040-CE build cannot be verified by the development team + +These builds remain available, however legacy devices are not supported by the GP2040-CE team. + +Please ensure you have a backup of the original firmware and your settings before updating your device! + + diff --git a/versioned_docs/version-0.7.5/downloads/flash_nuke.uf2 b/versioned_docs/version-0.7.5/downloads/flash_nuke.uf2 new file mode 100644 index 0000000..31291e6 Binary files /dev/null and b/versioned_docs/version-0.7.5/downloads/flash_nuke.uf2 differ diff --git a/versioned_docs/version-0.7.5/faq/faq-general.md b/versioned_docs/version-0.7.5/faq/faq-general.md new file mode 100644 index 0000000..425564a --- /dev/null +++ b/versioned_docs/version-0.7.5/faq/faq-general.md @@ -0,0 +1,54 @@ +--- +title: GP2040-CE FAQ +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# GP2040-CE FAQ + +## General Questions + +### Which input mode should I use? + +This will depend on the platform you will be playing on: + +* Use `XInput Mode` as the preferred mode for compatibility with PC games and 3rd party console adapters +* Use `PS4 Mode` on PS4, and on PS4 games on PS5 systems +* Use `PS3 Mode` on PS3, and on PS4 with games that support legacy controllers +* Use `Switch Mode` on Nintendo Switch +* Use `Keyboard Mode` for MAME cabinets, PC rhythm games, etc. + +### Will GP2040-CE natively support PS5, Xbox One, or Xbox Series consoles? + +These consoles implement security measures that prevent unauthorized accessories from being used. The process of cracking or bypassing that security may not be legal everywhere. These consoles could be supported in the future if a user-friendly and completely legal implementation method is found, such as the implementation of [PS4 Mode](../add-ons/ps4-mode.md). + +### Can I use multiple controllers with GP2040-CE on the same system? + +Yes! Each GP2040-CE board is treated as a separate controller. Be sure to only run the embedded web configurator for each controller one at a time. + +If you're installing boards with GP2040-CE in an arcade cabinet, check out the [Player Number add-on](../add-ons/player-number.md) to force each board to a specific player number. + +### Does GP2040-CE really have less than 1 ms of input latency? + +Yes! If your platform supports 1000 Hz USB polling, input latency will be less than 1ms. GP2040-CE is configured for 1000 Hz / 1 ms polling by default in all modes, however some systems override or ignore the polling rate the controller requests. The 1000 Hz polling rate is confirmed to work on PC and MiSTer. Even if your platform doesn't support high rate USB polling, GP2040-CE is still reading and processing your inputs as fast as the target system will allow. + +### Do the additional features like RGB LEDs, Player LEDs, and OLED displays affect performance? + +Not at all! The RP2040 processor of the Pico has two cores. GP2040-CE dedicates one of these cores strictly to reading, processing and sending player inputs. All secondary functions such as LEDs and displays are run on the secondary core. No matter how crazy the feature set becomes, GP2040-CE is unlikely to introduce any additional input latency. + +### Why do the buttons have weird labels like B3, A1, S2, etc.? + +GP2040-CE uses a generic system for handling button inputs that resembles a traditional PlayStation controller layout with a few extra buttons. This means 4 face buttons (B1-B4), 4 shoulder buttons (L1, L2, R1, R2), Select and Start (S1, S2), 2 stick buttons (L3, R3) and 2 auxiliary buttons for things like Home and Capture (A1, A2) on the Switch. The GP2040-CE documentation and web configurator both provide a dropdown to change the button labels to more familiar controller layouts. You can refer to the button mapping table on the [GP2040-CE Usage](../usage.mdx#buttons) page. + +## Technical Questions + +### What kind of voodoo is that built-in web configurator? + +There's no magic here, just a few cool libraries working together: + +* Single page application using React and Bootstrap is embedded in the GP2040-CE firmware +* TinyUSB library provides virtual network connection via RNDIS +* lwIP library provides an HTTP server which serves up the embedded React app and the web configuration API +* ArduinoJson library is used for serialization and deserialization of web API requests diff --git a/versioned_docs/version-0.7.5/faq/faq-ps4-ps5-compatibility.md b/versioned_docs/version-0.7.5/faq/faq-ps4-ps5-compatibility.md new file mode 100644 index 0000000..16a8577 --- /dev/null +++ b/versioned_docs/version-0.7.5/faq/faq-ps4-ps5-compatibility.md @@ -0,0 +1,84 @@ +--- +title: PS4/PS5 Compatibility +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# FAQ: PS4/PS5 Compatibility + +## How do I get my GP2040-CE unit to work on a Playstation 4 or Playstation 5? + +For Playstation 4 compatibility, you will need to use either the PS4 Mode or the PS Passthrough add-on. + +For Playstation 5 compatibility, you will need to disable the PS4 Mode add-on and enable the PS Passthrough add-on. You will also need to ensure that under the `Settings` section you have chosen `PS4` as your input mode and picked if you want the GP2040-CE unit to function as a `controller` or as a `fightstick`. + +## What is PS4 Mode? + +PS4 mode is an add-on that grants GP2040-CE compatibility with the Playstation 4 console. It was built using the efforts of another open source firmware project named [Passing Link](https://github.com/passinglink/passinglink). + +The team behind Passing Link are in no way affiliated with the GP2040-CE project, however the work and information they've made available was greatly appreciated so we could bring this highly-requested feature to our users. + +For more information, refer to [PS4 Mode](../add-ons/ps4-mode.md) in the `Web Configurator - Add-ons` section of the documentation. + +## What is PS Passthrough? + +PS Passthrough is an add-on that grants GP2040-CE compatibility with the Playstation 4 or Playstation 5 console by using another controller or dongle to answer authentication + +Depending on the controller or dongle used, you may be limited to only Playstation 4 support. + +For more information, refer to [PS Passthrough](../add-ons/ps-passthrough) in the `Web Configurator - Add-ons` section of the documentation. + +## Why does my controller stop responding after a while on PS4 or PS5? + +PlayStation 4 and PlayStation 5 use an authentication mechanism to ensure only authorized controllers are used on the console. If a device doesn't implement this authentication mechanism the controller is subject to an 8-minute timeout. + +Using PS4 mode on a PC does not result in any timeout behavior, but note that XInput is the suggested mode on PC for best compatibility. + +## What is the 8-Minute Timeout? + +The 8-minute timeout works like this: + +1. Plug your controller into the PS4/5 +2. Press the PS button to initialize the controller +3. Play for roughly 8 minutes +4. Console rejects the controller due to failed authentication +5. User unplugs their non-functional controller +6. Go back to step 1 and repeat + +## How do I avoid the 8-Minute Timeout? + +GP2040-CE allows you to upload the files required to authenticate your device via the [PS4 Mode add-on](../add-ons/ps4-mode), which effectively removes this timeout issue. + +If you're using an OLED display, the input mode will change from `PS4` to `PS4:AS` to indicate your device has successfully authenticated with the PS4/PS5 console. + +## How do I get the necessary keys and files for the PS4 Mode add-on? + +The GP2040-CE project will not provide ***any*** files or information related to acquiring these keys and files. + +:::danger + +**Do not ask via any of communication channels (e.g. social media, direct messages, Github Issues, GP2040-CE Discord) as this will result in a permanent blacklist/ban.** + +::: + +## What controller or dongle do I use for PS Passthrough? + +This depends on whether you are aiming to avoid the 8 minute timeout on PS4 or are looking to get your controller working on PS5. + +### Playstation 4 + +For avoiding the 8 minute timeout on PS4, any PS4 controller or converter should work unless the device is not a valid and accepted as a proper controller on its own with a PS4. + +### Playstation 5 + +For PS5 compatibility, there are a number of devices that the PS5 recognizes as a "categorized" controller (e.g. arcade stick, racing wheel, flight sim joystick, etc.) where the developer of the game has supported the use of "categorized" controllers. Any USB device that works as a categorized PS4 controller (arcade stick/racing wheel/flight sim joystick) or a USB dongle that allows a controller to authenticate should work with GP2040-CE. Note that this functionality is not present in all games, but is common in fighting games and racing simulators. + +Some devices that do work for PS5 include, but are not limited to; + +- [MagicBoots FPS Adapter Joysick Converter for PS4 v1.1](https://www.mayflash.com/product/MAGPS4.html) +- [N5 for PXN Game Steering Wheel](https://pxn-game.com/products/n5-for-pxn-game-steering-wheel) +- PCBs from Licensed PS4 Arcade Sticks + +Because your experience and purchased products may vary, GP2040-CE will not provide specific recommendations beyond these known working devices. \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/getting-help-support.md b/versioned_docs/version-0.7.5/getting-help-support.md new file mode 100644 index 0000000..2454c20 --- /dev/null +++ b/versioned_docs/version-0.7.5/getting-help-support.md @@ -0,0 +1,26 @@ +--- +title: Getting Help/Support +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Getting Help/Support + +## Discord + +If you need help with something, the best place to get quick support is our [Discord Server](https://discord.gg/k2pxhke7q8). Once you've read the [pinned post](https://discord.com/channels/1049366310389289001/1132450634243772519), create a post in the [support channel](https://discord.com/channels/1049366310389289001/1132447732662018089) with the following information. + +1. What is the name of the device are you using? +2. Where did you buy it? Provide a link to sales page. +3. What version of the firmware are you currently running? Check this via the Web Configurator (e.g. 0.4.3, 0.5.0, 0.7.4, etc.) +4. Which distribution of the firmware are you currently running? Provide the exact file name (e.g. GP2040-CE_X.X.X_Pico.uf2). +5. What is the problem that you are having? +6. What troubleshooting steps have you already done? + +If this is a custom device, a hardware issue or you believe the firmware issue may be caused by hardware include any images . + +## Github Issues + +You can open an [issue on Github](https://github.com/OpenStickCommunity/GP2040-CE/issues/new/choose). \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/hotkeys.mdx b/versioned_docs/version-0.7.5/hotkeys.mdx new file mode 100644 index 0000000..7387ad3 --- /dev/null +++ b/versioned_docs/version-0.7.5/hotkeys.mdx @@ -0,0 +1,152 @@ +--- +title: Hotkeys +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +import InputLabelSelector, { Hotkey } from "@site/src/components/LabelSelector.tsx"; + + +# Hotkeys + +Select the button labels to be displayed in the usage guide: + + +
+ +:::note + +All of the following hotkey bindings can be changed or assigned to different button combinations in [Hotkeys Settings](./web-configurator.mdx#hotkey-settings) section of the Web Configurator. + +::: + +## No Action + +This hotkey does nothing. Use this hotkey to disable a specific hotkey combination. + +## DPad Digital + +This hotkey changes the DPad mode such the directions to be read as digital inputs on the DPad. + +**Default**: + +## DPad Left Analog + +This hotkey changes the DPad mode to such the directions to be read as inputs on the Left Analog Stick. The directional input is always the minimum, maximum, or zero value on that axis. + +**Default**: + +## DPad Right Analog + +This hotkey changes the DPad mode to such the directions to be read as inputs on the Right Analog Stick. The directional input is always the minimum, maximum, or zero value on that axis. + +**Default**: + +## Home Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## Capture Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## SOCD Up Priority + +This hotkey changes the SOCD cleaning method to resolve to a neutral input (no input) on the X-axis, but prioritize the `Up` input on the Y-axis when both directions are pressed simultaneously. + +| 1st Input + 2nd Input | Result | +|:---------------------:|:-------:| +| Left + Right | Neutral | +| Right + Left | Neutral | +| Up + Down | Up | +| Down + Up | Up | + +## SOCD Neutral + +This hotkey changes the SOCD cleaning method to resolve to a neutral input (no input) on both the X-axis and Y-axis when both directions are pressed simultaneously. + +| 1st Input + 2nd Input | Result | +|:---------------------:|:-------:| +| Left + Right | Neutral | +| Right + Left | Neutral | +| Up + Down | Neutral | +| Down + Up | Neutral | + +## SOCD Last Win + +This hotkey changes the SOCD cleaning method to prioritize the second directional input on both the X-axis and Y-axis when both directions are pressed simultaneously. + +| 1st Input + 2nd Input | Result | +|:---------------------:|:------:| +| Left + Right | Right | +| Right + Left | Left | +| Up + Down | Down | +| Down + Up | Up | + +## SOCD First Wins + +This hotkey changes the SOCD cleaning method to prioritize the first directional input on both the X-axis and Y-axis when both directions are pressed simultaneously. + +| 1st Input + 2nd Input | Result | +|:---------------------:|:------:| +| Left + Right | Left | +| Right + Left | Right | +| Up + Down | Up | +| Down + Up | Down | + +## SOCD Cleaning Off + +This hotkey changes the SOCD cleaning method to not resolve any directional inputs on both the X-axis and Y-axis when both directions are pressed simultaneously. The controller will send both directional inputs. + +:::note + +This cleaning mode is only available in XInput mode as PS3/DirectInput, PS4 and Nintendo Switch modes do not support setting SOCD Cleaning to Off and will default to Neutral SOCD Cleaning mode. + +::: + +| 1st Input + 2nd Input | Result | +|:---------------------:|:--------------:| +| Left + Right | Left and Right | +| Right + Left | Left and Right | +| Up + Down | Up and Down | +| Down + Up | Up and Down | + +## Invert X Axis + +This hotkey will invert the X-axis of your controller (i.e. pressing the Right button will result a Left input and vice versa). + +## Invert Y Axis + +This hotkey will invert the Y-axis of your controller (i.e. pressing the Up button will result in a Down input and vice versa). + +**Default**: + +## Toggle 4-Way Joystick Mode + +This hotkey will alter the behavior of the directional buttons such that only the cardinal directions will register as inputs and diagonal directions will be disabled and ignored. + +## Toggle DDI 4-Way Joystick Mode + +This hotkey will alter the behavior of the directional buttons mapped with the [Dual Direction Input](./add-ons/dual-direction-input) add-on such that only the cardinal directions will register as inputs and diagonal directions will be disabled and ignored. + +## Load Profile # 1-4 + +This hotkey will load various input to pin mapping profiles set in [Profile Settings](./web-configurator#profile-settings) in the Web Configurator. + +## L3 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## R3 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## Touchpad Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## Restart GP2040-CE + +This hotkey will restart the controller without pressing the hardware reset button on the board (if present) or requiring the controller to be unplugged from the PC or game console. \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/installation.md b/versioned_docs/version-0.7.5/installation.md new file mode 100644 index 0000000..c10e845 --- /dev/null +++ b/versioned_docs/version-0.7.5/installation.md @@ -0,0 +1,48 @@ +--- +title: Firmware Installation +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Firmware Installation + +## General Process + +> If the device has been previously used for something other than GP2040-CE, you will need to follow the [Flash Nuke Process](#flash-nuke-process) below first to clear the memory entirely in preparation for installing GP2040-CE. + +1. Download the compiled firmware (.uf2 file) for your device +2. Unplug your device. +3. Put your device into Bootsel/USB mode. A new removable drive named `RPI-RP2` should appear in your file explorer. +4. Drag and drop the compiled firmware (.uf2 file) downloaded in step 1 into the removable drive +5. Wait for the device to automatically disconnect. + +Congratulations! The board is now running the GP2040-CE firmware and will appear as a controller on your computer. You can test it in a game, using the website like [Gamepad Tester](https://gamepad-tester.com/), or in another application such as the Steam Input Overlay. + +If you would like to customize your device, check out the built-in [Web Configurator](./web-configurator.mdx). + +### Example Process (Raspberry Pi Pico) + +**The instructions will slightly vary based on your device. These instructions are for a Raspberry Pi Pico.** + +1. Download the latest `GP2040-CE_X.X.X_Pico.uf2` file for the Raspberry Pi Pico from the [Download](./downloads/download-page.mdx) page. +2. Unplug your Pico. +3. Hold the BOOTSEL button on the Pico and plug into your computer. +4. Drag and drop the `GP2040-CE_X.X.X_Pico.uf2` file into the removable drive. +5. Wait for the Pico to automatically disconnect. + +## Flash Nuke process + +:::caution + +*Warning* - Flash nuking your board wipes all your custom configuration for pin mappings and addons. + +::: + +1. Download the [flash_nuke.uf2 file](https://raw.githubusercontent.com/OpenStickCommunity/GP2040-CE/main/docs/downloads/flash_nuke.uf2) +2. Boot into bootsel/RPI drive (multiple methods to do so) +3. Drag [flash_nuke.uf2 file](https://raw.githubusercontent.com/OpenStickCommunity/GP2040-CE/main/docs/downloads/flash_nuke.uf2) onto the drive +4. ***Wait for the drive to disconnect and reconnect without unplugging*** +5. Drag your firmware onto the RPI drive and wait for disconnect +6. Check that the controller connects using this [gamepad tester](https://hardwaretester.com/gamepad) and pressing a button. diff --git a/versioned_docs/version-0.7.5/introduction.md b/versioned_docs/version-0.7.5/introduction.md new file mode 100644 index 0000000..b6e7a0a --- /dev/null +++ b/versioned_docs/version-0.7.5/introduction.md @@ -0,0 +1,32 @@ +--- +id: introduction +title: Introduction +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Introduction + +Your controller has a control board in it that processes your inputs and translates that to commands that your computer or game console understands. GP2040-CE is firmware that facilitates this process, providing compatibility with a number of consoles and input modes. In addition to this, there are many other useful features through the Web Configurator and the system of community developed add-ons. + +Not sure if your board can run GP2040-CE? As long as it has a RP2040 microprocessor, it's likely that it can. If your current controller board does not, there are a large number of hobbyist boards from the community that do support GP2040-CE. + +## Overview + +This section of the documentation is primarily geared towards end users who are looking to use their controllers without diving into the minutiae of configuring and customizing their device. Given a controller, how to get to using it as soon as possible. It consists of the following sections. + +- [Firmware Installation](./installation.md "GP2040-CE | Firmware Installation"): In the event that you need to install firmware (e.g. setting up a new board, updating to a new version, or as part of troubleshooting) +- [Usage](./usage.mdx "GP2040-CE | Usage"): Descriptions of the various features and functions available for use with GP2040-CE +- [Hotkeys](./hotkeys.mdx "GP2040-CE | Hotkeys"): A list of the various hotkey shortcuts available for use with GP2040-CE. + +> The actual buttons for the shortcut may differ as they are customizable and can be set by your device's vendor or seller. + +- [Getting Help/Support](./getting-help-support.md "GP2040-CE | Getting Help"): How to get help in the event of issues or malfunction + +## Additional Resources + +If you feel ready to start customizing your controller's functions or building your own device, have a look at the `Web Configurator` or `Controller Building` section in the sidebar. + +If you want to go even deeper into the firmware to compile your own configuration of the firmware or even contributing to the code, have a look at the `Developing GP2040-CE` section in the sidebar. diff --git a/versioned_docs/version-0.7.5/macros.md b/versioned_docs/version-0.7.5/macros.md new file mode 100644 index 0000000..a35fce9 --- /dev/null +++ b/versioned_docs/version-0.7.5/macros.md @@ -0,0 +1,82 @@ +--- +title: Macro Settings +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +# Macro Settings + +Purpose: Macros are a series or combination of gamepad inputs triggered with a single button or a combination of buttons. + +![GP2040-CE Configurator - Macros](./assets/images/gpc-macros.png) + +## Macro Options + +`Macro Button Pin` - The GPIO Pin used to activate macros in combination with other inputs when `Uses Button` is enabled and set. + +### Label + +This is the name of the macro and is optional. + +### Activate + +- `Off` - The macro is not available for use. +- `On` - The macro is available for use when triggered by either the GPIO pin or the combination set in [`Uses Button`](#uses-button). + +### Interruptible + +- `Off` - The macro cannot be stopped and will execute all lines until the macro is completed. +- `On` - Any input will stop the current ongoing macro or, if the input is another macro, the interrupting macro trigger will start executing instead. + +:::note Interrupting Macros + +When a macro stops for any reason and are triggered. again, the macro starts again from the beginning. + +::: + +### Exclusive + +- `Off` - Additional inputs from user will be sent as the macro continues to execute, resulting in a blend of macro and user inputs. +- `On` - Filters only the macro inputs through and excludes any additional user gamepad inputs + +?> This option is **only** available when `Interruptible` is enabled. + +### Show Frames + +- `Off` - The duration in the macro input line editor will appear in milliseconds (ms). +- `On` - The duration in the macro input line editor will appear as a number of frames, assuming 60 frames per second. + +### Uses Button + +- `Off` - This macro is assigned to a GPIO pin on the board and when pressed, the macro will be triggered. +- `On` - This macro is assigned to a button combination of `Macro Button Pin + Input` where the input can be any of the standard gamepad inputs. + +### Trigger Mode + +This describes is how the GPIO pin or the combination set in [`Uses Button`](#uses-button) triggers and repeats the macro. + +- Press - Full press of button triggers the macro once +- Hold Repeat - Holding button to repeatedly triggers macro +- Toggle - Full press of button causes the macro to repeatedly trigger, another full press of the button will stop the macro from repeatedly triggering. + +## Macro Input Line Editor + +Each individual macro has a maximum of 50 lines where each input line has a maximum of 18 gamepad inputs (using all available gamepad inputs). + +![GP2040-CE Configurator - Macro Input Line](./assets/images/gpc-macros-input-line.png) + +Each input line is composed of the following elements from left to right. + +`Input Line Duration` ms `Inputs` | `Post Input Wait Duration` ms + +- Input Line Duration - The duration that the inputs are held for. (Maximum 4,294,967ms or 268,435 frames) +- Inputs - The inputs to be held during the execution of the input line. +- Post Input Wait Duration - The duration in-between when that input line finishes executing and when the next line will start executing. (Maximum 4,294,967ms or 268,435 frames) + +:::note Deleting Input Lines + +To delete an input line, double-click the "x" button. + +::: \ No newline at end of file diff --git a/versioned_docs/version-0.7.5/rgb-leds.mdx b/versioned_docs/version-0.7.5/rgb-leds.mdx new file mode 100644 index 0000000..6de0ee4 --- /dev/null +++ b/versioned_docs/version-0.7.5/rgb-leds.mdx @@ -0,0 +1,77 @@ +--- +title: RGB LEDs +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +import InputLabelSelector, { Hotkey } from "@site/src/components/LabelSelector.tsx"; + +# RGB LEDs + +Select the button labels to be displayed in the usage guide: + + + +## Hardware Requirements + +GP2040-CE requires that addressable RGB LEDs be used for nearly all LED functions. + +The exception to this are [Player LEDs](./add-ons/player-number.md), which can use pulse width modulation (PWM) to vary the brightness of the LEDs. + +## RGB LED Hotkeys + +| Hotkey | Description | +| - | - | +| | Next Animation | +| | Previous Animation | +| | Brightness Up | +| | Brightness Down | +| | LED Parameter Up | +| | LED Parameter Down | +| | Pressed Parameter Up | +| | Pressed Parameter Down | + +:::note + +The `LED Parameter` hotkeys may affect color, speed or theme depending on the current RGB LED animation. The `Pressed Parameter` options will change the colors/effects for the on-press animations. + +::: + +## RGB LED Animations + +The following animations are available: + +| Name | Description | LED Parameter | +| - | - | - | +| Off | Turn off per-button RGB LEDs | - | +| Static Color | Sets all LEDs to the same color | Cycle through colors: *Red*, *Orange*, *Yellow*, *Lime Green*, *Green*, *Seafoam*, *Aqua*, *Sky Blue*, *Blue*, *Purple*, *Pink*, *Magenta* | +| Rainbow Cycle | All LEDs cycle through the color wheel displaying the same color | Adjust animation speed | +| Rainbow Chase | A fading, rainbow cycling lines travels across the LED chain | Adjust animation speed | +| Static Theme | Set the LEDs to a pre-defined static theme | Cycle through themes, see [RGB LED Static Themes](#rgb-led-static-themes) for details. | + +## RGB LED Static Themes + +| Name | Preview | +| - | - | +| **Static Rainbow** | ![Static Rainbow](./assets/images/led-themes/static-rainbow.png) | +| **Xbox** | ![Xbox](./assets/images/led-themes/xbox.png) | +| **Xbox (All)** | ![Xbox (All)](./assets/images/led-themes/xbox-all.png) | +| **Super Famicom** | ![Super Famicom](./assets/images/led-themes/super-famicom.png) | +| **Super Famicom (All)** | ![Super Famicom (All)](./assets/images/led-themes/super-famicom-all.png) | +| **PlayStation** | ![Xbox](./assets/images/led-themes/playstation.png) | +| **PlayStation (All)** | ![Xbox (All)](./assets/images/led-themes/playstation-all.png) | +| **Neo Geo Straight** | ![Neo Geo Classic](./assets/images/led-themes/neogeo-straight.png) | +| **Neo Geo Curved** | ![Neo Geo Curved](./assets/images/led-themes/neogeo-curved.png) | +| **Neo Geo Modern** | ![Neo Geo Modern](./assets/images/led-themes/neogeo-modern.png) | +| **Six Button Fighter** | ![Six Button Fighter](./assets/images/led-themes/six-button-fighter.png) | +| **Six Button Fighter +** | ![Six Button Fighter +](./assets/images/led-themes/six-button-fighter-plus.png) | +| **Street Fighter 2** | ![Street Fighter 2](./assets/images/led-themes/street-fighter-2.png) | +| **Tekken** | ![Tekken](./assets/images/led-themes/tekken.png) | +| **Guilty Gear Type-A** | ![Guilty Gear Type-A](./assets/images/led-themes/guilty-gear-type-a.png) | +| **Guilty Gear Type-B** | ![Guilty Gear Type-B](./assets/images/led-themes/guilty-gear-type-b.png) | +| **Guilty Gear Type-C** | ![Guilty Gear Type-C](./assets/images/led-themes/guilty-gear-type-c.png) | +| **Guilty Gear Type-D** | ![Guilty Gear Type-D](./assets/images/led-themes/guilty-gear-type-d.png) | +| **Guilty Gear Type-E** | ![Guilty Gear Type-E](./assets/images/led-themes/guilty-gear-type-e.png) | +| **Fightboard** | ![Fightboard](./assets/images/led-themes/fightboard.png) | diff --git a/versioned_docs/version-0.7.5/usage.mdx b/versioned_docs/version-0.7.5/usage.mdx new file mode 100644 index 0000000..5648b95 --- /dev/null +++ b/versioned_docs/version-0.7.5/usage.mdx @@ -0,0 +1,115 @@ +--- +title: GP2040-CE Usage +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +import InputLabelSelector, { Hotkey } from "@site/src/components/LabelSelector.tsx"; + +# GP2040-CE Usage + +Select the button labels to be displayed in the usage guide: + + +
+ +:::caution + +The v0.5+ release has some breaking changes to boards other than the Raspberry Pi Pico. If you are using such a board, do not update from an older version unless you have a backup .uf2 from a known good version, or you know what you're doing. + +::: + +## Buttons + +GP2040-CE uses generic button labeling for gamepad state, which is then converted to the appropriate input type before sending. This table provides a map of GP2040-CE buttons to the supported input types and layouts: + +| GP2040-CE | XInput | Switch | PS4 | PS3 | DirectInput | Arcade | +| --------- | ------ | ------- | -------- | -------- | ----------- | ------ | +| B1 | A | B | Cross | Cross | 2 | K1 | +| B2 | B | A | Circle | Circle | 3 | K2 | +| B3 | X | Y | Square | Square | 1 | P1 | +| B4 | Y | X | Triangle | Triangle | 4 | P2 | +| L1 | LB | L | L1 | L1 | 5 | P4 | +| R1 | RB | R | R1 | R1 | 6 | P3 | +| L2 | LT | ZL | L2 | L2 | 7 | K4 | +| R2 | RT | ZR | R2 | R2 | 8 | K3 | +| S1 | Back | Minus | Share | Select | 9 | Coin | +| S2 | Start | Plus | Options | Start | 10 | Start | +| L3 | LS | LS | L3 | L3 | 11 | LS | +| R3 | RS | RS | R3 | R3 | 12 | RS | +| A1 | Guide | Home | PS | PS | 13 | Home | +| A2 | - | Capture | Touchpad | - | 14 | - | + +If your controller is missing dedicated buttons for any specific inputs, check the [Hotkeys page](./hotkeys.mdx) on how to map a button combination that will emulate those missing inputs. + +:::note + +Unlike other controllers, Keyboard gets different keys for directional buttons. You can change the key mappings for Keyboard mode in [Webconfig mode > Configuration > Keyboard Mapping](./web-configurator.mdx#keyboard-mapping) + +::: + +| Direction | Keyboard | +| --------- | ----------- | +| Up | Up Arrow | +| Down | Down Arrow | +| Left | Left Arrow | +| Right | Right Arrow | + +## Bootsel Mode + +Bootsel Mode is the state of the board where firmware can be flashed onto the board. You will need to use this whenever there is an update or as part of the troubleshooting process. + +You can boot into Bootsel Mode by either holding buttons while plugging in the controller or by booting into the Web Configurator and then restarting in Bootsel Mode. + +## Webconfig Mode + +Webconfig Mode is the state of the board where built-in web browser-based configuration application is launched. From here, you can customize and configure your controller as needed. + +You can boot into Webconfig Mode by holding the button while plugging in the controller. + +## Input Modes + +GP2040-CE is compatible with a number of systems and input modes. To change the input mode, **hold one of the following buttons as the controller is plugged in:** + +| Input Mode | Button Held | +| :-------------- | :---------: | +| Nintendo Switch | | +| XInput | | +| DirectInput/PS3 | | +| PS4 | | +| Keyboard | | + +:::note + +Input mode is saved across power cycles. + +::: + +## Hotkeys + +A number of useful hotkeys exist that change the functionality of GP2040 without needing to access the Web Configurator. Commonly used hotkeys include changing the directions to emulate a digital DPad, Left Analog Stick, Right Analog Stick or to change [Simultaneous Opposite Cardinal Direction (SOCD)](https://glossary.infil.net/?t=SOCD) cleaning modes. Different SOCD cleaning modes will ensure the controller obeys certain directional input rules when sending inputs to the computer or game console. + +A number of hotkeys are enabled by default and if you are encountering issues with unexpected behavior on your controller, verify that you did not accidentally trigger a hotkey. + +| Hotkeys Enabled By Default | Inputs | +| :------------------------------------------------ | :-------------------- | +| [Home Button](hotkeys.mdx#home-button) | | +| [Dpad Digital](hotkeys.mdx#dpad-digital) | | +| [Dpad Left Analog](hotkeys.mdx#dpad-left-analog) | | +| [Dpad Right Analog](hotkeys.mdx#dpad-right-analog) | | +| [SOCD Up Priority](hotkeys.mdx#socd-up-priority) | | +| [SOCD Neutral](hotkeys.mdx#socd-neutral) | | +| [SOCD Last Wins](hotkeys.mdx#socd-last-win) | | +| [SOCD Invert Y Axis](hotkeys.mdx#invert-y-axis) | | + +:::note + +Selected D-Pad mode and SOCD cleaning mode are saved across power cycles. + +::: + +## Add-Ons and Additional Features + +There are a number of add-ons that expand the functionality of GP2040-CE, such as [analog stick emulation](./add-ons/analog) and [turbo functions](./add-ons/turbo). Due to the large number of add-ons created by the community, they are located in a separate documentation page. Navigate to Add-Ons page for more information on the individual add-ons. diff --git a/versioned_docs/version-0.7.5/web-configurator.mdx b/versioned_docs/version-0.7.5/web-configurator.mdx new file mode 100644 index 0000000..5d3e14a --- /dev/null +++ b/versioned_docs/version-0.7.5/web-configurator.mdx @@ -0,0 +1,218 @@ +--- +title: GP2040-CE Web Configurator +# tags: +# - +pagination_next: null +pagination_prev: null +--- + +import InputLabelSelector, { Hotkey } from "@site/src/components/LabelSelector.tsx"; + +# GP2040-CE Web Configurator + +Select the button labels to be displayed in the usage guide: + + +
+ +GP2040-CE contains a built-in web-based configuration application which can be started up by holding when plugging your controller into a PC. Then access in a web browser to begin configuration. This mode is compatible with Windows, Mac, Linux and SteamOS. When using the web-based configuration on Windows and Mac, RNDIS works on a default install. Linux distributions may need some extra steps to access the web configurator; see [Linux Setup](#linux-setup). + +## Home + +![GP2040-CE Configurator - Home](./assets/images/gpc-home.png) + +Here you can see the current version of your firmware and the latest version available on GitHub in the releases section. If a firmware update is available, a link to that release will appear. + +The options in the main menu are: + +- [Home](#home) - The start page. +- [Settings](#settings) - Adjust settings like input mode, d-pad mode, etc. +- [Configuration > Pin Mapping](#pin-mapping) - Allows for remapping of GPIO pins to different buttons. +- [Configuration > Keyboard Mapping](#keyboard-mapping) - Allows for remapping of keyboard keys to different controller inputs. +- [Configuration > Profile Settings](#profile-settings) - Allows for remapping of GPIO pins to different buttons. +- [Configuration > LED Configuration](#led-configuration) - Enable and configure RGB LEDs here. +- [Configuration > Display Configuration](#display-configuration) - Enable and configure display options. +- [Configuration > Add-Ons Configuration](#add-ons-configuration) - Enable and configure available add-ons. +- [Configuration > Data Backup and Restoration](#data-backup-and-restoration) - Backup and restore settings. +- Links - Useful links to the project and documentation +- [DANGER ZONE](#danger-zone) - Don't be afraid of the big red button. If something becomes misconfigured, you can reset your settings here. + +## Settings + +![GP2040-CE Configurator - Settings](./assets/images/gpc-settings.png) + +Here you can select the basic settings which are normally available via hotkeys. + +- `Input Mode` - Choose the main input mode (XINPUT, DINPUT, Switch, PS4, HID-Keyboard) this connected device will boot into when powered on. This selection will persist through unplug / replug. +- `D-Pad Mode` - Choose the default D-Pad mode (D-Pad, Left Stick or Right Stick). +- `SOCD Cleaning Mode` - Choose the default SOCD Cleaning Mode (Neutral, Last Win, First Win, OFF). Please note that PS4, PS3 and Nintendo Switch modes do not support setting SOCD to off and will default to Neutral SOCD. +- `Forced Setup Mode` - Allows you to lock out Input Mode, the ability to enter Web-Config or both. Enabling a web-config lockout will require you to nuke and reload the firmware if you wish to make further changes. +- `4-Way Joystick Mode` - Enables 4-Way Joystick mode which will prevent cardinal directions. + +Please note that if you choose `PS4` mode you will have an additional option to set the device as a `Controller` or a `Fightstick`. If you choose `Fightstick` and want to use this device with compatible PS5 games you will need to enable the `PS Passthrough` add-on and have a way to connect the device you with to use for passthrough authentication to the RP2040-CE based device via a USB passthrough port. + +### Hotkey Settings + +![GP2040-CE Configurator - Hotkey Settings](./assets/images/gpc-hotkey-settings.png) + +An arbitrary number of buttons and directions, plus the optional Function (Fn) button, can be used to define +desired hotkey actions. Select Fn if desired, plus one or more buttons/directions, and associate them with a +hotkey action. The default hotkeys can be modified or removed, and new ones added, up to 12 in total. + +The available hotkey actions will expand over time. We may also expand the number of hotkeys available to +configure in the future. + +## Pin Mapping + +![GP2040-CE Configurator - Pin Mapping](./assets/images/gpc-pin-mapping.png) + +Here you can remap the GP2040-CE buttons to different GPIO pins on the RP2040 chip. This can be used to simply remap buttons, or bypass a GPIO pin that may have issues on your device. + +## Keyboard Mapping + +![GP2040-CE Configurator - Keyboard Mapping](./assets/images/gpc-keyboard-mapping.png) + +Here you can remap the GP2040-CE buttons to different keyboard keycodes that will be sent to the PC or game console when pressed in Keyboard Mode. + +## Profile Settings + +![GP2040-CE Configurator - Profile Settings](./assets/images/gpc-profile-settings.png) + +Here you can set profiles that will change the GPIO to GP2040-CE button mapping based on what profile you have set. You can change the profile number either using the Web Configurator or using a hotkey shortcut. + +## LED Configuration + +If you have a setup with per-button RGB LEDs, they can be configured here. + +### RGB LED Configuration + +![GP2040-CE Configurator - LED Configuration](./assets/images/gpc-rgb-led-config.png) + +- `Data Pin` - The GPIO pin that will drive the data line for your RGB LED chain. Set to `-1` to disable RGB LEDs. +- `LED Format` - The data format used to communicate with your RGB LEDs. If unsure the default `GRB` value is usually safe. +- `LED Layout` - Select the layout for your controls/buttons. This is used for static themes and some per-button animations. +- `LEDs Per Button` - Set the number of LEDs in each button on your chain. +- `Max Brightness` - Set the maximum brightness for the LEDs. Ranges from 0-255. +- `Brightness Steps` - The number of levels of brightness to cycle through when turning brightness up and down. + +### RGB LED Button Order + +:::note + +Please note that RGB Button LEDs must be the first LEDs configured. They will start at index 0 on the RGB LED strip. + +::: + +![GP2040-CE Configurator - RGB LED Button Order](./assets/images/gpc-rgb-led-button-order.png) + +- `LED Button Order` - Configure which buttons and what order they reside on the LED chain. + +### Player LEDs (XInput) + +Available selections for `Player LED Type` are `None`, `PWM` or `RGB`. + +#### PWM Player LEDs + +![GP2040-CE Configurator - PWM Player LEDs](./assets/images/gpc-pled-pwm.png) + +- `PLED #[1-4] Pin` - The GPIO pin the standard LED is connected to. + +#### RGB Player LEDs + +:::note + +Please note that RGB Player LEDs must be located at an index after the RGB LED Buttons on the LED strip! The Web Config interface will suggest a starting index based on the number of LED buttons mapped in [RGB LED Button Order](#rgb-led-button-order) and the select `LEDs Per Button` value. We hope to remove this limitation in the future. + +::: + +![GP2040-CE Configurator - PWM Player LEDs](./assets/images/gpc-pled-rgb.png) + +- `PLED #[1-4] Index` - The index of the LED module on the RGB strip. +- `RGB PLED Color` - Click the box to reveal a color picker, or manually enter the color. + +## Custom LED Theme + +![GP2040-CE Configurator - Custom LED Theme](./assets/images/gpc-rgb-led-custom-theme.png) + +- `Enable` - Enables the use of Custom LED Theme. +- `Preview Layout` - Predefined layouts for previewing LED theme. **NOTE:** This is for preview only, does not affect controller operation. +- `Clear All` - Prompts for confirmation to reset the current theme to all buttons black (LEDs off). Make sure you have saved and have a backup if you don't want to lose your customizations. +- `Set All To Color` - Presents a color picker to set all buttons to the same normal or pressed color. +- `Set Gradient` - Sets a horizontal gradient across the action buttons according to the `Preview Layout` selection. +- `Set Pressed Gradient` - Same as `Set Gradient`, but for pressed button state. +- `Save Color` - Save a custom color to the color picker palette. +- `Delete Color` - Deletes a custom color from the color picker palette. Stock colors cannot be deleted. + +:::note + +All saved colors and gradient selections are saved to your browser's local storage. + +::: + +If enabled, the Custom LED Theme will be available as another animation mode and will cycle with the `Previous Animation` and `Next Animation` shortcuts on your controller. You can also use the [Data Backup and Restoration](#data-backup-and-restoration) feature to create and share themes! + +## Display Configuration + +![GP2040-CE Configurator - Display Configuration](./assets/images/gpc-display-config.png) + +- `Use Display` - Turns on/off the display module. +- `I2C Block` - The Pico I2C block that will be used. Set based on pins, refer to table on page. +- `SDA Pin` - The GPIO pin used for the I2C SDA channel. +- `SCL Pin` - The GPIO pin used for the I2C SCL channel. +- `I2C Address` - The I2C address of your device, defaults to the very commonly used `0x3C`. +- `I2C Speed` - Sets the speed of I2C communication. Common values are `100000` for standard, `400000` for fast and `800000` ludicrous speed. +- `Flip Display` - Allows you to flip or mirror the display in a variety of ways. +- `Invert Display` - Inverts the pixel colors, effectively giving you a negative image when enabled. +- `Button Layout (Left)` - Changes the onscreen layout for the left side of the display and stick. +- `Button Layout (Right)` - Changes the onscreen layout for the right side of the display and stick. +- `Splash Mode` - Enables or disables a splash screen displaying when the unit is turned on. +- `Splash Duration` - Sets the amount of time the splash screen displays for on boot. +- `Display Saver Timeout` - Will cause the display to turn off after the specified number of minutes. Pressing any input will cause the display to turn back on. +- `Choose File` - This will allow you to upload your own image to be used for the splash screen. It is recommend that you use a two color 128x64 image (or one that is sized appropriately for your display). Uploading any other type of image will result in a conversion and sizing of the image automatically. If the image is inverted upon upload, just check off the `Invert` box. + +Check out our collection of great custom splash screens from the community [HERE](./community-splash-screens.md) + +## Add-Ons Configuration + +This section is for custom add-ons that can be enabled to expand the functionality of GP2040-CE. Due to the large number of add-ons created by the community, they are located in a separate documentation page. Navigate to Web Configurator - Add-ons for more information. + +## Data Backup and Restoration + +![GP2040-CE Configurator - Add-Ons Backup and Restore](./assets/images/gpc-backup-and-restore.png) + +- `Backup To File` - Allows you to select what to backup to a file (default is all selected). +- `Restore From File` - Allows you to select what to restore from a file (default is all selected). + +## DANGER ZONE + +![GP2040-CE Configurator - Reset Settings](./assets/images/gpc-reset-settings.png) + +## Linux Setup + +When you plug in your controller while holding , you should see it connect in the kernel logs if you run `dmesg`: + +```sh +[ 72.291060] usb 1-3: new full-speed USB device number 12 using xhci_hcd +[ 72.450166] usb 1-3: New USB device found, idVendor=cafe, idProduct=4028, bcdDevice= 1.01 +[ 72.450172] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 +[ 72.450174] usb 1-3: Product: TinyUSB Device +[ 72.450176] usb 1-3: Manufacturer: TinyUSB +[ 72.450177] usb 1-3: SerialNumber: 123456 +[ 72.484285] rndis_host 1-3:1.0 usb0: register 'rndis_host' at usb-0000:06:00.1-3, RNDIS device, 02:02:84:6a:96:00 +[ 72.498630] rndis_host 1-3:1.0 enp6s0f1u3: renamed from usb0 +``` + +In the above example, **enp6s0f1u3** is the virtual Ethernet interface for your controller. If you don't see the first `rndis_host` line, make sure `CONFIG_USB_NET_RNDIS_HOST` is compiled in your kernel or as a module. + +The web configurator is automatically running, you just need to be able to reach it. Some configurations automatically set up the route, so try in your browser now. If it doesn't load, try configuring an IP for the interface manually via: `sudo ifconfig enp6s0f1u3 192.168.7.2`. + +Whether or not you had to add an IP manually, you should end up with a route something like this: + +```sh +% ip route +default via 10.0.5.1 dev enp5s0 proto dhcp src 10.0.5.38 metric 2 +10.0.5.0/24 dev enp5s0 proto dhcp scope link src 10.0.5.38 metric 2 +192.168.7.0/24 dev enp6s0f1u3 proto kernel scope link src 192.168.7.2 <--- +``` + +Then the configurator should be reachable in your browser. diff --git a/versioned_docs/version-0.7.6/README.md b/versioned_docs/version-0.7.6/README.md new file mode 100644 index 0000000..13d2037 --- /dev/null +++ b/versioned_docs/version-0.7.6/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.6 | Xinput | 1 ms | 0.45 ms | 1.28 ms | 0.76 ms | 0.24 ms | 98.48% | 1.52% | 0% | +| v0.7.6 | Switch | 1 ms | 0.41 ms | 1.23 ms | 0.72 ms | 0.24 ms | 98.53% | 1.47% | 0% | +| v0.7.6 | Dinput (PS3) | 1 ms | 0.44 ms | 1.27 ms | 0.75 ms | 0.24 ms | 98.48% | 1.52% | 0% | +| v0.7.6 | PS4 | 1 ms | 1.33 ms | 2.02 ms | 1.72 ms | 0.16 ms | 96.10% | 3.90% | 0% | +| v0.7.6 | PS4 Hack | 1 ms | 0.55 ms | 1.39 ms | 0.86 ms | 0.24 ms | 98.32% | 1.68% | 0% | + +Full results can be found in the [GP2040-CE v0.7.6 Firmware Latency Test Results](https://raw.githubusercontent.com/OpenStickCommunity/GP2040-CE/main/site/latency_tests/GP2040-CE_Firmware_Latency_Test_Results_v0.7.6.xlsx) .xlsx Sheet. + +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://raw.githubusercontent.com/OpenStickCommunity/GP2040-CE/main/site/latency_tests/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.6/add-ons/analog.mdx b/versioned_docs/version-0.7.6/add-ons/analog.mdx new file mode 100644 index 0000000..11456b1 --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/analog.mdx @@ -0,0 +1,67 @@ +--- +title: Analog +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use hardware analog joysticks with GP2040-CE" +--- + +# Analog + +Purpose: This add-on is intended for the use of an hardware analog joystick with GP2040-CE for the left and right analog sticks of the gamepad. + +![GP2040-CE Configurator - Add-Ons Analog](../assets/images/gpc-add-ons-analog.png) + +## Web Configurator Options + +- `Analog Stick 1 X Pin` - The GPIO pin used for the Analog joystick 1 X value. Only ADC pins 26, 27, 28 and 29 are allowed here. +- `Analog Stick 1 Y Pin` - The GPIO pin used for the Analog joystick 1 Y value. Only ADC pins 26, 27, 28 and 29 are allowed here. +- `Analog Stick 1 Mode` - Choose if Analog joystick 1 is to be used for Left Analog or Right Analog. +- `Analog joystick 1 Invert` - Choose if you would like to flip the X or Y axis Analog Stick 1 inputs (or both). +- `Analog joystick 2 X Pin` - The GPIO pin used for the Analog Stick 2 X value. Only ADC pins 26, 27, 28 and 29 are allowed here. +- `Analog joystick 2 Y Pin` - The GPIO pin used for the Analog Stick 2 Y value. Only ADC pins 26, 27, 28 and 29 are allowed here. +- `Analog joystick 2 Mode` - Choose if Analog Stick 2 is to be used for Left Analog or Right Analog (must be different than Analog Stick 1). +- `Analog joystick 2 Invert` - Choose if you would like to flip the X or Y axis Analog joystick 2 inputs (or both). +- `Deadzone Size (%)` - Enter the % value of dead zone you would like on the analog joysticks. +- `Forced Circularity` - Force the analog joysticks to be bound within a perfect circle. This can be beneficial for certain games. However, be aware that this may negatively impact some games which account for sticks moving outside of a circle. +- `Auto Calibration` - Automatically centers the analog joysticks. This works by reading in the offset from center during boot and then accounts for that until the next power cycle. This can be helpful for analog joysticks experiencing drift. + +## Hardware + +### Requirements + +A minimum of one hardware analog joystick is required for the use of this add-on. Each joystick will have at least 4 pins, one for each of the following. + +- Reference Voltage (ADC_VREF/3.3V) +- X-Axis Input Voltage (Vx) +- Y-Axis Input Voltage (Vy) +- Ground (GND) + +Each axis input voltage pin requires an Analog to Digital Converter (ADC) pin to operate. As such, some boards may have a limit on the maximum number of possible joysticks that can be used (e.g. the Raspberry Pi Pico only has 3 ADC pins available so only 1 joystick can be used). + +:::note Joystick Buttons + +The analog joystick may have an additional pin for the joystick button. This can be connected to any GPIO pin and used as a regular button. + +::: + +### Installation + +Connect the pins of the analog joystick to the board as follows and then set the GPIO pin values in `Web Configurator > Configurations > Add-Ons > Analog`. + +- Reference Voltage (ADC_VREF/3.3V) -> ADC_VREF/3.3V Pin +- X-Axis Input Voltage (Vx) -> Any ADC GPIO Pin +- Y-Axis Input Voltage (Vy) -> Any ADC GPIO Pin +- Ground (GND) -> Any GND Pin + +The specific location of the ADC pins on your board will vary depending on the design and manufacturer, but they will always be one of the following GPIO pins on the RP2040 + +- GPIO 26 +- GPIO 27 +- GPIO 28 +- GPIO 29 + +## Miscellaneous Notes + +Both potentiometer and Hall Effect based joysticks are supported, provided that they use a 3.0-3.3V reference voltage and output voltages in the range of 0-3.3V as an input for the RP2040. This is because the GPIO pins for the RP2040 utilize 3.3V logic and are not 5V-safe. diff --git a/versioned_docs/version-0.7.6/add-ons/bootsel-button.mdx b/versioned_docs/version-0.7.6/add-ons/bootsel-button.mdx new file mode 100644 index 0000000..afebaad --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/bootsel-button.mdx @@ -0,0 +1,32 @@ +--- +title: BOOTSEL Button Configuration +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use the BOOTSEL button as an additional button input" +--- + +# BOOTSEL Button Configuration + +Purpose: This add-on is mean to allow for the use of a BOOTSEL button to be used as an additional button input. + +![GP2040-CE Configurator - Add-Ons BOOTSEL Button Configuration](../assets/images/gpc-add-ons-bootsel-button.png) + +## Web Configurator Options + +- `BOOTSEL Button` - Choose an input to be mapped to the BOOTSEL button. + +## Hardware + +### Requirements + +This add-on can only be used on devices that have a BOOTSEL button. + +### Installation + +There are no installation instructions for this add-on. + +## Miscellaneous Notes + +The OLED might become unresponsive if this button is set. You can unset it to restore OLED functionality. diff --git a/versioned_docs/version-0.7.6/add-ons/buzzer-speaker.mdx b/versioned_docs/version-0.7.6/add-ons/buzzer-speaker.mdx new file mode 100644 index 0000000..c89acef --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/buzzer-speaker.mdx @@ -0,0 +1,37 @@ +--- +title: Buzzer Speaker +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to add a buzzer to your controller" +--- + +# Buzzer Speaker + +Purpose: This add-on is intended to allow you to add a buzzer to your GP2040-CE device and play sounds. + +![GP2040-CE Configurator - Add-Ons Buzzer](../assets/images/gpc-add-ons-buzzer.png) + +## Web Configurator Options + +- `Use buzzer` - Turns on/off the buzzer module. +- `Buzzer Pin` - The GPIO pin used for the buzzer. +- `Buzzer Volume` - Audio volume of buzzer. Ranges from 0-100. + +## Hardware + +### Requirements + +- 3-3.3V Piezo speaker + +The speaker only needs to have pins for power (VCC) and ground (GND). If there is an I/O pin on speaker, you can jump the pins and use only the VCC connected to RP2040 GPIO pin. + +### Installation + +- Plug into GPIO pin on board to VCC on speaker +- Enter GPIO pin into web config + +## Miscellaneous Notes + +None diff --git a/versioned_docs/version-0.7.6/add-ons/dual-direction-input.mdx b/versioned_docs/version-0.7.6/add-ons/dual-direction-input.mdx new file mode 100644 index 0000000..52af695 --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/dual-direction-input.mdx @@ -0,0 +1,58 @@ +--- +title: Dual Directional Input +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to add additional directional inputs to your controller" +--- + +# Dual Directional Input + +Purpose: This add-on is intended to allow additional digital buttons to be used for directional inputs with either the D-Pad, or the cardinal directions of the Left and Right analog joystick at maximum magnitude. + +![GP2040-CE Configuration - Add-Ons Dual Directional Input](../assets/images/gpc-add-ons-dual-directional.png) + +## Web Configurator Options + +:::info GPIO Pin Mapping Moved + +The pin(s) are now configured on the [Pin Mapping page](../web-configurator/menu-pages/02-pin-mapping.mdx) by choosing the correct option for the selected pin. + +- DDI Up +- DDI Down +- DDI Left +- DDI Right + +::: + +- `Dual D-Pad Mode` - Choose if this should act as an additional instance of a D-Pad, Left analog joystick, or Right analog joystick. +- `Combination Mode` - Choose how these direction inputs should be combined with gamepad directions. +- `Dual Directional 4-Way Joystick Mode` - Prevents diagonal inputs from being sent when enabled. + +### Dual D-Pad Mode Values + +- `D-PAD` for D-Pad mode. +- `Left Analog` for Left analog joystick mode. +- `Right Analog` for Right analog joystick mode. + +### Combination Mode + +- `Mixed` - Combines both the Gamepad directions and Dual Direction Input directions and allows for all 3 SOCD modes. +- `Gamepad` - Gamepad always takes over when pressed, otherwise Gamepad and Dual act independently. +- `Dual Directional` - Dual always takes over when pressed, otherwise Gamepad and Dual act independently. +- `None` - Gamepad input and dual directional act independently of each other. + +## Hardware + +### Requirements + +Additional buttons are required for each of the additional directions desired. + +### Installation + +For each button, connect one side of the button to their respective GPIO pin as assigned in the Web Configurator. Connect the other side of the buttons to GND. + +## Miscellaneous Notes + +"Gamepad direction" refers to the core directions ("Up"), whereas "Dual Direction Input directions" refers to the directions used by this add-on ("DDI Up"). diff --git a/versioned_docs/version-0.7.6/add-ons/focus-mode.mdx b/versioned_docs/version-0.7.6/add-ons/focus-mode.mdx new file mode 100644 index 0000000..b1cd36d --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/focus-mode.mdx @@ -0,0 +1,34 @@ +--- +title: Focus Mode Configuration +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to disable functions and inputs while Focus Mode is enabled" +--- + +# Focus Mode Configuration + +Purpose: This add-on is intended to allow you to disable a number of functions or inputs while Focus Mode is enabled, but otherwise still retain access to them. + +![GP2040-CE Configurator - Focus Mode](../assets/images/gpc-add-ons-focus-mode.png) + +## Web Configurator Options + +- `Focus Mode Pin` - The GPIO pin used to enable Focus Mode +- `Lock Macro` - When enabled, macro triggers will not activate macro sequences during Focus Mode +- `Lock Buttons` - When enabled, listed inputs will not be sent during Focus Mode. As inputs are added, new dropdowns will appear for additional inputs. + +## Hardware + +### Requirements + +The GPIO pin set in `Focus Mode Pin` needs to be brought and kept low to remain active. A toggle switch, slide toggle, or latching switch is necessary for proper use of this add-on. + +### Installation + +Installation will depend on whether a toggle switch, slide toggle, or latching switch is used. In general, on one side of the switch, connect the pin to the GPIO pin set in `Focus Mode Pin`. On the other side of the switch or the center if there are 3 contacts, connect it to any GND pin. + +## Miscellaneous Notes + +None. diff --git a/versioned_docs/version-0.7.6/add-ons/i2c-analog-ads1219.mdx b/versioned_docs/version-0.7.6/add-ons/i2c-analog-ads1219.mdx new file mode 100644 index 0000000..6fdcd9b --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/i2c-analog-ads1219.mdx @@ -0,0 +1,68 @@ +--- +title: I2C Analog ADS1219 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use an ADS1219 ADC for Left and Right analog joysticks on your controller" +--- + +import I2CTable from "../snippets/_i2c-block-table.mdx"; + +# I2C Analog ADS1219 + +Purpose: This add-on is intended to allow you to add Left and Right analog joystick functionality using the ADS1219 24-bit, analog-to-digital +converter (ADC). + +![GP2040-CE Configurator - Add-Ons ADS1219](../assets/images/gpc-add-ons-ads1219.png) + +## Web Configurator Options + +:::info GPIO Pin Assignment + +The SDA and SCL pins for I2C and speed are now configured in [`Configuration > Peripheral Mapping - I2C`](../web-configurator/menu-pages/03-peripheral-mapping.mdx#i2c). + +::: + +- `I2C Analog ADS1219 Block` - The block of I2C to use (i2c0 or i2c1). +- `I2C Analog ADS1219 Address` - Sets the address for the I2C Analog ADS1219 based on the pins used for SDA and SCL according to the table below. + +| A0 | A1 | I2C Address | +| :-: | --- | :---------: | +| SDA | SCL | 1001110 | +| SCL | SDA | 1001011 | + +## Hardware + +### Requirements + +This add-on requires an ADS1219 analog-to-digital converter (ADC) to function properly. + +### Installation + +Connect the pins on the ADS1219 according to the table below + +| ADS1219 Pin | Function | +| :---------: | ---------------------------- | +| A0 | SDA or SCL | +| A1 | SDA or SCL | +| AIN0 | Left analog joystick X-Axis | +| AIN1 | Left analog joystick Y-Axis | +| AIN2 | Right analog joystick X-Axis | +| AIN3 | Right analog joystick Y-Axis | + +
+ +:::info A0/A1 GPIO Assignment + +These pins will need to be wired to the appropriate SDA/SCL pins on the RP2040 and set the correct I2C block in Web Configurator. + +See [Peripheral Mapping](../web-configurator/menu-pages/03-peripheral-mapping.mdx#i2c) for more information on setting up I2C. + +::: + +## Miscellaneous Notes + +These installation instructions do not cover the additional circuitry required for the use of the ADS1219 ADC, only the wiring to the RP2040. + +[ADS1219 Product Sheet](https://www.ti.com/lit/ds/symlink/ads1219.pdf) diff --git a/versioned_docs/version-0.7.6/add-ons/input-history.mdx b/versioned_docs/version-0.7.6/add-ons/input-history.mdx new file mode 100644 index 0000000..b593fa1 --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/input-history.mdx @@ -0,0 +1,55 @@ +--- +title: Input History +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to show input history" +--- + +# Input History + +Purpose: This add-on is intended to allow you to display input history + +![GP2040-CE Configurator - Add-Ons Input History](../assets/images/gpc-add-ons-input-history.png) + +## Web Configurator Options + +- `History Length` - Set the max character length of the history. +- `Column` - Specify the column at which the history begins on the display. ( 0 - left, 20 - right ) +- `Row` - Specify the row on which the history appears on the display. ( 0 - top, 7 - bottom ) + +## Hardware + +### Requirements + +An already configured [monochrome display](../web-configurator/menu-pages/07-display-configuration.mdx). + +### Installation + +None. + +## Miscellaneous Notes + +Input - Symbol mapping: + +| GP2040-CE | PS3 | Switch | XINPUT | KEYBOARD | PS4 | CONFIG | +|-----------|:---:|:------:|:------:|:--------:|:---:|:------:| +| Up | U | U | U | U | U | U | +| Down | D | D | D | D | D | D | +| Left | L | L | L | L | L | L | +| Right | R | R | R | R | R | R | +| B1 | X | B | A | B1 | X | B1 | +| B2 | O | A | B | B2 | O | B2 | +| B3 | # | Y | X | B3 | # | B3 | +| B4 | ^ | X | Y | B4 | ^ | B4 | +| L1 | L1 | L | LB | L1 | L1 | L1 | +| R1 | R1 | R | RB | R1 | R1 | R1 | +| L2 | L2 | ZL | LT | L2 | L2 | L2 | +| R2 | R2 | ZR | RT | R2 | R2 | R2 | +| S1 | SL | - | BK | S1 | SH | S1 | +| S2 | ST | + | ST | S2 | OP | S2 | +| L3 | L3 | LS | LS | L3 | L3 | L3 | +| R3 | R3 | RS | RS | R3 | R3 | R3 | +| A1 | PS | H | G | A1 | PS | A1 | +| A2 | A2 | C | A2 | A2 | T | A2 | diff --git a/versioned_docs/version-0.7.6/add-ons/input-reverse.mdx b/versioned_docs/version-0.7.6/add-ons/input-reverse.mdx new file mode 100644 index 0000000..5b9ebf0 --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/input-reverse.mdx @@ -0,0 +1,37 @@ +--- +title: Input Reverse +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use a button to reverse cardinal directions of the DPad of your controller" +--- + +# Input Reverse + +Purpose: This add-on is intended to allow the user to press or hold an additional button to granularly reverse cardinal directions on the gamepad and input this new direction instead. + +![GP2040-CE Configurator - Add-Ons Input Reverse](../assets/images/gpc-add-ons-input-reverse.png) + +## Web Configurator Options + +- `Reverse Input Pin` - The GPIO pin used for the Reverse Input button. +- `Reverse Input Pin LED` - The GPIO pin used for the Reverse Input LED. +- `Reverse Up` - Enables the up direction to be reversed when the Reverse Input button is pressed or held. +- `Reverse Down` - Enables the down direction to be reversed when the Reverse Input button is pressed or held. +- `Reverse Left` - Enables the left direction to be reversed when the Reverse Input button is pressed or held. +- `Reverse Right` - Enables the right direction to be reversed when the Reverse Input button is pressed or held. + +## Hardware + +### Requirements + +This add-on requires an additional button to be mapped to a GPIO pin. + +### Installation + +For both arcade buttons and keyboard switches, one side of the contacts needs to be connected to the GPIO pin (i.e. by wire or trace on a PCB) and the other connected to ground (i.e. by wire or trace on a PCB). + +## Miscellaneous Notes + +None. diff --git a/versioned_docs/version-0.7.6/add-ons/joystick-selection-slider.mdx b/versioned_docs/version-0.7.6/add-ons/joystick-selection-slider.mdx new file mode 100644 index 0000000..726f24a --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/joystick-selection-slider.mdx @@ -0,0 +1,45 @@ +--- +title: Joystick Selection Slider +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to change input mode of the DPad on your controller" +--- + +# Joystick Selection Slider + +Purpose: This add-on is intended to allow users change the input mode of the primary gamepad directional inputs between D-Pad, Left analog joystick, and Right analog joystick using a two/three position toggle switch or slide toggle. + +![GP2040-CE Configurator - Add-Ons Joystick Slider](../assets/images/gpc-add-ons-joystick-slider.png) + +## Web Configurator Options + +:::info GPIO Pin Mapping Moved + +The pin(s) are now configured on the [Pin Mapping page](../web-configurator/menu-pages/02-pin-mapping.mdx) by choosing the correct option for the selected pin. + +- D-Pad Mode: D-Pad +- D-Pad Mode: Left Stick +- D-Pad Mode: Right Stick + +::: + +- `Slider Pin Mode Default` - The directional input mode that is active when no `D-Pad Mode` pins are held. + - `Digital` - D-Pad directional inputs + - `Left Analog` - Cardinal directions on the Left Analog joystick at maximum magnitude. + - `Right Analog` - Cardinal directions on the Right Analog joystick at maximum magnitude. + +## Hardware + +### Requirements + +The GPIO pins set on the Pin Mappings page will each need to be brought and kept low to remain active to use that mode, and when using the default mode, none of the pins can be brought low. Therefore, a 2 or 3 position toggle switch or slide toggle is necessary for proper use of this add-on. + +### Installation + +Installation will depend on whether a toggle switch or slide toggle is used. In general, on one side of the switch, connect the selection pin(s) to the GPIO pin(s) set. On the center pin, connect it to any GND pin. + +## Miscellaneous Notes + +Enabling this add-on will disable the use of the DPad [Hotkey Shortcuts](../hotkeys.mdx), resulting in the toggle switch or slide toggle set up with this add-on being the only method to set the DPad mode. diff --git a/versioned_docs/version-0.7.6/add-ons/keyboard-host.mdx b/versioned_docs/version-0.7.6/add-ons/keyboard-host.mdx new file mode 100644 index 0000000..a9912f4 --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/keyboard-host.mdx @@ -0,0 +1,76 @@ +--- +title: Keyboard Host Configuration +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use a USB keyboard in conjunction with GP2040-CE to send inputs to supported systems" +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; +import InstallUSBHostPort from "../snippets/_add-usb-host-port.mdx"; + +Select the button labels to be displayed in the usage guide: + + +
+ +Purpose: This add-on is intended to allow you to use a keyboard with GP2040-CE to be used with GP2040-CE supported systems. + +![GP2040-CE Configurator - Keyboard Host Configuration](../assets/images/gpc-add-ons-keyboard-host-configuration.png) + +## Web Configurator Options + +:::info GPIO Pin Assignment + +The Data, 5V Enable, and Pin Orientation options for USB host ports are now configured in [`Configuration > Peripheral Mapping - USB Host`](../web-configurator/menu-pages/03-peripheral-mapping.mdx#usb-host). + +::: + +### Default Keybindings + +| GP2040 | Key | +| -------------------------------- | ------------ | +| | Arrow Up | +| | Arrow Down | +| | Arrow Left | +| | Arrow Right | +| | Shift Left | +| | Z | +| | Control Left | +| | Alt Left | +| | C | +| | Space | +| | V | +| | X | +| | 5 | +| | 1 | +| | Equal | +| | Minus | +| | 9 | +| | F2 | +| | None | + +## Hardware + +### Requirements + +This add-on requires that you have a USB host port available on your device connected to GPIO pins on the RP2040 board. There are a number of methods to do so. + +See [USB Host Port Installation](../controller-build/usb-host.mdx) for more information on the requirements for adding a USB host port to your controller. + +### Installation + + + +## Miscellaneous Notes + +As long as the keyboard has a USB plug, any keyboard should work with this addon, including wireless USB keyboards. + +Due to current implementation of Pico-PIO-USB and the add-on system, the following limitations are present. + +- The keyboard is limited to only as many inputs as listed above. All other keys on the keyboard will not function and will send no inputs to the system reading inputs. +- The keyboard is limited to 6 key rollover, meaning that a maximum of 6 keyboard keys can be activated at a time. This is the case regardless if the keyboard being used normally has N key rollover (NKRO). +- The keyboard is unable to affect the Input Mode on boot. The Input Mode must either be set using `Web Configurator > Settings` or an additional switch on the GP2040-CE device using the add-on. diff --git a/versioned_docs/version-0.7.6/add-ons/on-board-led.mdx b/versioned_docs/version-0.7.6/add-ons/on-board-led.mdx new file mode 100644 index 0000000..9c7cf0c --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/on-board-led.mdx @@ -0,0 +1,38 @@ +--- +title: On-board LED Configuration +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use the on-board LED as an mode, input, or PS4/5 authentication status indicator" +--- + +# On-board LED Configuration + +Purpose: This add-on is intended to allow you to use the onboard LED of a board to act as either a Mode, Input Test or PS4/5 Authentication indicator. + +![GP2040-CE Configurator - Add-Ons On-Board LED Configuration](../assets/images/gpc-add-ons-onboard-led.png) + +## Web Configurator Options + +- `Off` - LED is off +- `Mode Indicator` + - LED is solid if device is powered with connected data + - LED blinks rapidly if powered with no data + - LED blinks slowly when in web-config mode +- `Input Test` - LED is off but turns on when any input is pressed (LED turns off when button is released). +- `PS4/5 Authentication` - LED is solid is when the authentication call has been triggered and is successful + +## Hardware + +### Requirements + +This add-on requires that the RP2040 board being used already has a LED onboard. + +### Installation + +None. + +## Miscellaneous Notes + +None. diff --git a/versioned_docs/version-0.7.6/add-ons/player-number.mdx b/versioned_docs/version-0.7.6/add-ons/player-number.mdx new file mode 100644 index 0000000..a01e402 --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/player-number.mdx @@ -0,0 +1,32 @@ +--- +title: Player Number +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to set a static XInput player number" +--- + +# Player Number + +Purpose: This add-on is intended to allow you to set a static Player Number while using XInput mode. + +![GP2040-CE Configurator - Player Number](../assets/images/gpc-add-ons-player-number.png) + +## Web Configurator Options + +- `Player Number` - Choose what player number this RP2040 based device will be representing. + +## Hardware + +### Requirements + +This add-on is requires the controller input mode to be set to XInput mode. + +### Installation + +None + +## Miscellaneous Notes + +None diff --git a/versioned_docs/version-0.7.6/add-ons/ps-passthrough.mdx b/versioned_docs/version-0.7.6/add-ons/ps-passthrough.mdx new file mode 100644 index 0000000..a0d8c6d --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/ps-passthrough.mdx @@ -0,0 +1,51 @@ +--- +title: PS Passthrough +tags: + - PS4 + - PS5 +pagination_next: null +pagination_prev: null +description: "Add-on to provide Playstation 4 and select Playstation 5 games on a GP2040 controller through the use of a passthrough authentication device attached to a USB host port" +--- + +import InstallUSBHostPort from "../snippets/_add-usb-host-port.mdx"; + +# PS Passthrough + +Purpose: This add-on is intended to allow you to use a licensed 3rd party, "categorized" device to authenticate with a Playstation 4 or Playstation 5. + +![GP2040-CE Configurator - PS Passthrough](../assets/images/gpc-add-ons-ps-passthrough.png) + +## Web Configurator Options + +:::info GPIO Pin Assignment + +The Data, 5V Enable, and Pin Orientation options for USB host ports are now configured in [`Configuration > Peripheral Mapping - USB Host`](../web-configurator/menu-pages/03-peripheral-mapping.mdx#usb-host). + +::: + +:::caution + +If you have PS Passthrough enabled, you must turn off the `PS4 Mode` add-on as the two will not work together. + +Ensure that, under the `Settings` section, you have set the input mode as `PS4` and the `Controller Mode` as `Arcade Stick`. The PS Passthrough add-on will not work otherwise. + +::: + +## Hardware + +### Requirements + +This add-on requires that you have a USB host port available on your device connected to GPIO pins on the RP2040 board. There are a number of methods to do so. + +See [USB Host Port Installation](../controller-build/usb-host.mdx) for more information on the requirements for adding a USB host port to your controller. + +A passthrough authentication device is also required for authentication of the controller by the console. See [FAQ: Console Compatibility](../faq/faq-console-compatibility.mdx#what-controller-or-dongle-do-i-use-for-ps-passthrough) for more information on which passthrough authentication devices will work for this add-on. + +### Installation + + + +## Miscellaneous Notes + +This add-on is not compatible with the [PS4 Mode](./ps-passthrough.mdx) add-on. In order to use one, the other must be disabled. diff --git a/versioned_docs/version-0.7.6/add-ons/ps4-mode.mdx b/versioned_docs/version-0.7.6/add-ons/ps4-mode.mdx new file mode 100644 index 0000000..17b7e1e --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/ps4-mode.mdx @@ -0,0 +1,44 @@ +--- +title: PS4 Mode +tags: + - PS4 +pagination_next: null +pagination_prev: null +description: "Add-on to use GP2040-CE as native PS4 device" +--- + +# PS4 Mode + +Purpose: This add-on is intended to allow you to use your GP2040 device on a Playstation 4 and avoid the 8 minute timeout without the need for converters or passthrough authentication. + +![GP2040-CE Configurator - PS4 Mode](../assets/images/gpc-add-ons-ps4-mode.png) + +## Web Configurator Options + +- `Private Key (PEM)` - Choose your PEM file. +- `Serial Number (16 Bytes in Hex Ascii)` - Choose your serial number file. +- `Signature (256 Bytes in Binary)` - Choose your signature file. + +:::danger Warning + +The GP2040-CE project will not provide any files or information related to acquiring these keys and files under any circumstances. + +Do not ask via any of communication channels (e.g. social media, direct messages, Github Issues, GP2040-CE Discord) as this will result in a permanent blacklist/ban. + +::: + +## Hardware + +### Requirements + +None. + +### Installation + +None. + +## Miscellaneous Notes + +This add-on is not compatible with the [PS Passthrough](./ps-passthrough.mdx) add-on. In order to use one, the other must be disabled. + +When using the device in PS4 mode with this PS4 Mode add-on to avoid the 8 minute timeout on PS4, the authentication process on Core 1 will result in occasional freezing of the OLED screen or the RGB LEDs. diff --git a/versioned_docs/version-0.7.6/add-ons/snes-input.mdx b/versioned_docs/version-0.7.6/add-ons/snes-input.mdx new file mode 100644 index 0000000..5454d1a --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/snes-input.mdx @@ -0,0 +1,84 @@ +--- +title: SNES Input +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use various NES and SNES controllers/peripherals in conjunction with GP2040-CE to send inputs to supported systems" +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; + +# SNES Input + +Select the button labels to be displayed in the usage guide: + + +
+ +Purpose: This add-on is intended to allow you to use a GP2040-CE as an adapter to connect an NES controller, SNES controller, or a Super NES Mouse to supported systems. + +![GP2040-CE Configurator - SNES Input](../assets/images/gpc-add-ons-snespad-input.png) + +## Web Configurator Options + +- `CLOCK Pin` - The GPIO pin used for SNES CLOCK. +- `LATCH Pin` - The GPIO pin used for SNES LATCH. +- `DATA Pin` - The GPIO pin used for SNES DATA. + +Supported controller types and their mapping is as follows: + +| GP2040 | NES | SNES | Super NES Mouse | +| ----------------------------- | ------ | ------ | --------------- | +| | Up | Up | | +| | Down | Down | | +| | Left | Left | | +| | Right | Right | | +| | B | B | Left Click | +| | A | A | Right Click | +| | | Y | | +| | | X | | +| | | L | | +| | | R | | +| | | | | +| | | | | +| | Select | Select | | +| | Start | Start | | +| | | | | +| `Analog` | | | Mouse Movement | + +## Hardware + +### Requirements + +SNES extension cable with individual wires, or just directly wire from the controller. + +### Installation + +![GP2040-CE Configurator - SNES Controller Cable Connector Pinout](../assets/images/gpc-add-ons-snespad-input-pinout.svg) + +Please refer to the SNES Controller cable connector pinout found on [Super Nintendo Entertainment System: pinouts & protocol](https://www.repairfaq.org/REPAIR/F_SNES.html). The orientation of this pinout is looking back "into" the connector on the CABLE. + +:::caution + +Extension wire colors are inconsistent, so it's best to test continuity. + +::: + +Connect the SNES pins to the GPIO pins on the RP2040 board following this table. + +| SNES Pin | Pin on RP2040 Board | +| :------: | ---------------------------- | +| 1 | 3V3 Out | +| 2 | `CLOCK Pin` in web interface | +| 3 | `LATCH Pin` in web interface | +| 4 | `DATA Pin` in web interface | +| 5 | No connection | +| 6 | No connection | +| 7 | Ground | + +## Miscellaneous Notes + +None. diff --git a/versioned_docs/version-0.7.6/add-ons/socd-selection-slider.mdx b/versioned_docs/version-0.7.6/add-ons/socd-selection-slider.mdx new file mode 100644 index 0000000..9776b53 --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/socd-selection-slider.mdx @@ -0,0 +1,51 @@ +--- +title: SOCD Selection Slider +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to select SOCD cleaning modes with toggle or slide switch" +--- + +# SOCD Selection Slider + +Purpose: This add-on is intended to allow users change the method of SOCD cleaning using a two/three position toggle switch or slide toggle. + +![GP2040-CE Configurator - SOCD Selection Slider](../assets/images/gpc-add-ons-socd-slider.png) + +## Web Configurator Options + +- `SOCD Slider Mode Default` - The default SOCD mode to be used when the slider pin is not activated. + +:::info GPIO Pin Mapping Moved + +The pin(s) are now configured on the [Pin Mapping page](../web-configurator/menu-pages/02-pin-mapping.mdx) by choosing the correct option for the selected pin. + +- [Up Priority SOCD Cleaning](../hotkeys.mdx#socd-up-priority) +- [Neutral SOCD Cleaning](../hotkeys.mdx#socd-neutral) +- [Last Win SOCD Cleaning](../hotkeys.mdx#socd-last-win) +- [First Wins SOCD Cleaning](../hotkeys.mdx#socd-first-wins) +- [SOCD Cleaning Off](../hotkeys.mdx#socd-cleaning-off) + +::: + +- `SOCD Slider Mode Default` - The SOCD cleaning mode that is active when no `SOCD Cleaning Mode` pins are held. + - [Up Priority](../hotkeys.mdx#socd-up-priority) + - [Neutral](../hotkeys.mdx#socd-neutral) + - [Last Win](../hotkeys.mdx#socd-last-win) + - [First Wins](../hotkeys.mdx#socd-first-wins) + - [SOCD Cleaning Off](../hotkeys.mdx#socd-cleaning-off) + +## Hardware + +### Requirements + +The GPIO pins set on the Pin Mappings page will each need to be brought and kept low to remain active to use that mode and when using the default mode, none of the pins can be brought low. Therefore, a 2 or 3 position toggle switch or slide toggle is necessary for proper use of this add-on. + +### Installation + +Installation will depend on whether a toggle switch or slide toggle is used. In general, on one side of the switch, connect the selection pin(s) to the GPIO pin(s) set. On the center pin, connect it to any GND pin. + +## Miscellaneous Notes + +Enabling this add-on will disable the use of the SOCD cleaning [Hotkey Shortcuts](../hotkeys.mdx), resulting in the toggle switch or slide toggle set up with this add-on being the only method to set the SOCD cleaning mode. diff --git a/versioned_docs/version-0.7.6/add-ons/tilt-input.mdx b/versioned_docs/version-0.7.6/add-ons/tilt-input.mdx new file mode 100644 index 0000000..2798ed9 --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/tilt-input.mdx @@ -0,0 +1,53 @@ +--- +title: Tilt Input +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to allow analog directional inputs on Left and Right analog joystick at a percentage of maximum magnitude" +--- + +# Tilt Input + +Purpose: The Tilt Input add-on allows users to send analog inputs from the Left and Right analog joysticks that are some percent of the maximum directional input (e.g. send 65% of a Down-Right input on the Right analog joystick). + +![GP2040-CE Configuration - Add-Ons Tilt Input](../assets/images/gpc-add-ons-tilt.png) + +## Web Configurator Options + +- `Tilt 1 Pin` - The GPIO pin used for the Tilt 1 direction. +- `Tilt 1 Factor Left X` - The percentage of the X-axis input for the Left analog joystick sent when `Tilt 1 Pin` is activated. (Min. 0, Max 100) +- `Tilt 1 Factor Left Y` - The percentage of the Y-axis input for the Left analog joystick sent when `Tilt 1 Pin` is activated. (Min. 0, Max 100) +- `Tilt 1 Factor Left X` - The percentage of the X-axis input for the Right analog joystick sent when `Tilt 1 Pin` is activated. (Min. 0, Max 100) +- `Tilt 1 Factor Left Y` - The percentage of the Y-axis input for the Right analog joystick sent when `Tilt 1 Pin` is activated. (Min. 0, Max 100) +- `Tilt 2 Pin` - The GPIO pin used for the Tilt 2 direction. +- `Tilt 2 Factor Left X` - The percentage of the X-axis input for the Left analog joystick sent when `Tilt 2 Pin` is activated. (Min. 0, Max 100) +- `Tilt 2 Factor Left Y` - The percentage of the Y-axis input for the Left analog joystick sent when `Tilt 2 Pin` is activated. (Min. 0, Max 100) +- `Tilt 2 Factor Left X` - The percentage of the X-axis input for the Right analog joystick sent when `Tilt 2 Pin` is activated. (Min. 0, Max 100) +- `Tilt 2 Factor Left Y` - The percentage of the Y-axis input for the Right analog joystick sent when `Tilt 2 Pin` is activated. (Min. 0, Max 100) +- `Tilt Left Analog Up Pin` - The GPIO pin used for the Up direction on the Left analog joystick. +- `Tilt Left Analog Down Pin` - The GPIO pin used for the Down direction on the Left analog joystick. +- `Tilt Left Analog Left Pin` - The GPIO pin used for the Left direction on the Left analog joystick. +- `Tilt Left Analog Right Pin` - The GPIO pin used for the Right direction on the Left analog joystick. +- `Tilt Right Analog Up Pin` - The GPIO pin used for the Up direction on the Right analog joystick. +- `Tilt Right Analog Down Pin` - The GPIO pin used for the Down direction on the Right analog joystick. +- `Tilt Right Analog Left Pin` - The GPIO pin used for the Left direction on the Right analog joystick. +- `Tilt Right Analog Right Pin` - The GPIO pin used for the Right direction on the Right analog joystick. +- `Tilt SOCD Mode` - Choose the default SOCD Cleaning Mode (Neutral, Last Win, First Win). + +## Hardware + +### Requirements + +This add-on requires additional buttons or switches as this add-on entirely prevents the primary DPad from being set as the Left analog or Right analog joystick. + +### Installation + +For each button, connect one side of the button to their respective GPIO pin as assigned in the Web Configurator. Connect the other side of the buttons to GND. + +## Miscellaneous Notes + +- Because this add-on disables the DPad from being set as Left analog and Right analog, using the hotkeys `DPad Left Analog` and `DPad Right Analog` deactivates the DPad and using the `DPad Digital` will reactivate the DPad once more. +- Not all Tilt analog pins are required to be set, but not setting the pins will prevent you from using that input without using the Web Configurator to remap the inputs. +- Additionally, pressing Tilt 1 and Tilt 2 simultaneously while inputting Right analog joystick directions allows the Right analog joystick to function as the D-Pad directions. +- Pressing Tilt 1 and Tilt 2 simultaneously while inputting Left analog joystick will prioritize Tilt 1 and ignore Tilt 2. diff --git a/versioned_docs/version-0.7.6/add-ons/turbo.mdx b/versioned_docs/version-0.7.6/add-ons/turbo.mdx new file mode 100644 index 0000000..19cba39 --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/turbo.mdx @@ -0,0 +1,77 @@ +--- +title: Turbo +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to allow hold a button to be held and fast series of button presses and inputs to be sent." +--- + +import InputTable from "../snippets/_input-table.mdx"; + +# Turbo + +Purpose: This add-on is intended for you to change the behavior of controls so that holding a button triggers a fast series of separate button presses. + +Turbo Mode is enabled/disabled on individual buttons by holding an input and then pressing the Turbo Button. This results in the input being repeatedly sent in rapid succession (according to the `Turbo Shot Count` set in the Web Configurator). + +:::note + +Turbo Mode is limited to non-directional inputs on the game pad. + +::: + +![GP2040-CE Configurator - Add-Ons Turbo](../assets/images/gpc-add-ons-turbo.png) + +## Web Configurator Options + +### General Options + +- `Turbo Pin` - The GPIO pin used for the Turbo button, which toggles Turbo Mode on a button. +- `Turbo Pin LED` - The GPIO pin used for the Turbo LED. +- `Turbo Shot Count` - The number of of presses per second that the Turbo will activate at. (Range: 0-30) +- `Turbo Dial (ADC ONLY)` - The GPIO pin used for the Turbo dial. + +:::caution + +`Turbo Dial (ADC ONLY)` must be set as one of the ADC pins (GPIO 26-29) on the RP2040 board. + +::: + +### Turbo - SHMUP MODE + +![GP2040-CE Configurator - Add-Ons Turbo SHMUP MODE](../assets/images/gpc-add-ons-turbo-shmup.png) + +- `Turbo Always On 1-4` - These gamepad inputs will always send Turbo inputs (rapid, distinct button presses) even when Turbo mode is not enabled. +- `Charge Button 1-4 Pin` - These GPIO pins used for an additional button that can be held down and send one sustained input regardless of Turbo status. +- `Charge Button 1-4 Assignment` - These inputs that are associated with their respective`Charge Button 1-4` buttons. +- `Simultaneous Priority Mode` - Which of the two modes below should take priority. + - `Turbo Priority` - When a Charge Button and a gamepad input with Turbo Mode are pressed simultaneously, apply Turbo Mode behavior. + - `Charge Priority` - When a Charge Button and a gamepad input with Turbo Mode are pressed simultaneously, only send the input being held as a Charge Shot. + +:::note + +- In order for these options to work, the `Turbo Pin` must be set to some GPIO pin and not disabled (-1). +- `Charge Button 1-4 Pin` must be set to GPIO pins that are not currently assigned to any other inputs. + +::: + +Some of the options above uses the following GP2040 input labels for input mapping from controller to GP2040-CE. + + + +### Requirements + +Additional buttons are required for the Turbo Button as well as each of the additional Charge Buttons desired for a minimum of one button and a maximum of 4 buttons. + +If a Turbo LED is desired, an 3.3V non-addressable non-RGB LED is required. This type of LED should only have 2 conductors, power and ground. Because this is using power from + +### Installation + +For each button, connect one side of the button to their respective GPIO pin as assigned in the Web Configurator. Connect the other side of the buttons to GND. + +For the Turbo LED, connect one side of the LED to the GPIO pin assigned in the Web Configurator. Connect the other side of the LED to GND. + +## Miscellaneous Notes + +None. diff --git a/versioned_docs/version-0.7.6/add-ons/wii-extensions.mdx b/versioned_docs/version-0.7.6/add-ons/wii-extensions.mdx new file mode 100644 index 0000000..c97d7cf --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/wii-extensions.mdx @@ -0,0 +1,128 @@ +--- +title: Wii Extensions +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use various Wii controllers in conjunction with GP2040-CE to send inputs to supported systems" +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import InputTable from "../snippets/_input-table.mdx"; + +# Wii Extensions + +Purpose: This add-on is intended to allow you to use various Wii controllers (e.g. Nunchuck, Classic Wii Controller, Guitar, Drums, Turntable, and Taiko) with GP2040-CE to be used with GP2040-CE supported systems. + +:::note + +The Wii Extensions add-on is not meant to work with Wii consoles. + +::: + +![GP2040-CE Configurator - Wii Extensions](../assets/images/gpc-add-ons-wii-extensions.png) + +## Web Configurator Options + +:::info GPIO Pin Assignment + +The SDA and SCL pins for I2C and speed are now configured in [`Configuration > Peripheral Mapping - I2C`](../web-configurator/menu-pages/03-peripheral-mapping.mdx#i2c). + +::: + +- `I2C Block` - The block of I2C to use (i2c0 or i2c1). + +### Controller Specific Options + + + + +![GP2040-CE Configurator - Wii Nunchuck Settings](../assets/images/gpc-add-ons-wii-extensions-nunchuck.png) + +![GP2040-CE Configurator - Wii Nunchuck Controller](../assets/images/wii-extension-controllers/nunchuck.svg) + + + + +:::note + +- Classic Controller support includes Classic, Classic Pro, and NES/SNES Mini Controllers. +- Original Classic Controller L & R triggers are analog sensitive, where Pro triggers are not. + +::: + +![GP2040-CE Configurator - Wii Classic Controller Settings](../assets/images/gpc-add-ons-wii-extensions-classic.png) + +![GP2040-CE Configurator - Wii Classic Controller](../assets/images/wii-extension-controllers/classic.svg) + + + + +![GP2040-CE Configurator - Wii Guitar Settings](../assets/images/gpc-add-ons-wii-extensions-guitar.png) + +![GP2040-CE Configurator - Wii Guitar](../assets/images/wii-extension-controllers/guitar.svg) + + + + +:::note + +Due to an accessory hardware issue, Drum & DJ turntable controllers may require hot-swapping from a Nunchuk or Classic controller before being usable. + +::: + +![GP2040-CE Configurator - Wii Drums Settings](../assets/images/gpc-add-ons-wii-extensions-drums.png) + +![GP2040-CE Configurator - Wii Drums](../assets/images/wii-extension-controllers/drums.svg) + + + + +![GP2040-CE Configurator - Wii Turntable Settings](../assets/images/gpc-add-ons-wii-extensions-turntable.png) + +![GP2040-CE Configurator - Wii Turntable](../assets/images/wii-extension-controllers/turntable.svg) + + + + +![GP2040-CE Configurator - Wii Taiko Settings](../assets/images/gpc-add-ons-wii-extensions-taiko.png) + +![GP2040-CE Configurator - Wii Taiko](../assets/images/wii-extension-controllers/taiko.svg) + + + + +Each of the options above uses the following GP2040 input labels for input mapping from controller to GP2040-CE. + + + +### Requirements + +This add-on requires some way to connect to the following pins as needed from the controller to the GP2040-CE device. + +- `PWR` - 3.3V to power the device (May also be labeled `+` or `VIN`) +- `GND` - Ground (May also be labeled `-`) +- `SDA` - Serial Data Line (May also be labeled `C`) +- `SCL` - Serial Clock Line (May also be labeled `D`) + +:::note + +Breakout boards are commercially available and searching online for "Wiichuck Adapter" will produce a number of options. + +Some boards will include a 3.3V output that is not necessary for this add-on to function. + +::: + +### Installation + +Connect from Wii controller/adapter to the GP2040-CE board according to GPIO pins set in the Web Configurator. + +- `PWR` - 3.3V to power the device (May also be labeled `+` or `VIN`) +- `GND` - Ground (May also be labeled `-`) +- `SDA` - Serial Data Line (May also be labeled `C`) +- `SCL` - Serial Clock Line (May also be labeled `D`) + +## Miscellaneous Notes + +None. diff --git a/versioned_docs/version-0.7.6/add-ons/xbox-one-passthrough.mdx b/versioned_docs/version-0.7.6/add-ons/xbox-one-passthrough.mdx new file mode 100644 index 0000000..ae247b0 --- /dev/null +++ b/versioned_docs/version-0.7.6/add-ons/xbox-one-passthrough.mdx @@ -0,0 +1,46 @@ +--- +title: Xbox One Passthrough +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to provide support for Xbox One and Xbox Series consoles on a GP2040 controller through the use of a passthrough authentication device attached to a USB host port" +--- + +import InstallUSBHostPort from "../snippets/_add-usb-host-port.mdx"; + +# Xbox One Passthrough + +Purpose: This add-on is intended to provide support for Xbox One and Xbox Series consoles on a GP2040 controller through the use of a passthrough authentication device attached to a USB host port. + +![GP2040-CE Configurator - PS Passthrough](../assets/images/gpc-add-ons-xbox-one-passthrough.png) + +## Web Configurator Options + +:::info GPIO Pin Assignment + +The Data, 5V Enable, and Pin Orientation options for USB host ports are now configured in [`Configuration > Peripheral Mapping - USB Host`](../web-configurator/menu-pages/03-peripheral-mapping.mdx#usb-host). + +::: + +:::caution + +If you have Xbox One Passthrough enabled, you use the [`Xbox One`](../usage.mdx#input-modes) input mode in order to utilize this add-on. + +::: + +## Hardware + +### Requirements + +This add-on requires that you have a USB host port available on your device connected to GPIO pins on the RP2040 board. There are a number of methods to do so. + +See [USB Host Port Installation](../controller-build/usb-host.mdx) for more information on the requirements for adding a USB host port to your controller. + +### Installation + + + +## Miscellaneous Notes + +This add-on is not compatible with the [PS4 Mode](./ps-passthrough.mdx) add-on. In order to use one, the other must be disabled. diff --git a/versioned_docs/version-0.7.6/assets/boards/BentoBox.jpg b/versioned_docs/version-0.7.6/assets/boards/BentoBox.jpg new file mode 100644 index 0000000..689549f Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/BentoBox.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/FightboardV3.jpg b/versioned_docs/version-0.7.6/assets/boards/FightboardV3.jpg new file mode 100644 index 0000000..6a2e69b Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/FightboardV3.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/FightboardV3Mirrored.jpg b/versioned_docs/version-0.7.6/assets/boards/FightboardV3Mirrored.jpg new file mode 100644 index 0000000..b0d1738 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/FightboardV3Mirrored.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/FlatboxRev4.jpg b/versioned_docs/version-0.7.6/assets/boards/FlatboxRev4.jpg new file mode 100644 index 0000000..3ede2b6 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/FlatboxRev4.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/FlatboxRev5.jpg b/versioned_docs/version-0.7.6/assets/boards/FlatboxRev5.jpg new file mode 100644 index 0000000..6a5944b Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/FlatboxRev5.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/FlatboxRev5RGB.jpg b/versioned_docs/version-0.7.6/assets/boards/FlatboxRev5RGB.jpg new file mode 100644 index 0000000..f0bd513 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/FlatboxRev5RGB.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/FlatboxRev5Southpaw.jpg b/versioned_docs/version-0.7.6/assets/boards/FlatboxRev5Southpaw.jpg new file mode 100644 index 0000000..be4a234 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/FlatboxRev5Southpaw.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/Haute42.jpg b/versioned_docs/version-0.7.6/assets/boards/Haute42.jpg new file mode 100644 index 0000000..4780c83 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/Haute42.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/KB2040.jpg b/versioned_docs/version-0.7.6/assets/boards/KB2040.jpg new file mode 100644 index 0000000..8545240 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/KB2040.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/KeyboardConverter.jpg b/versioned_docs/version-0.7.6/assets/boards/KeyboardConverter.jpg new file mode 100644 index 0000000..936480f Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/KeyboardConverter.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/Liatris.jpg b/versioned_docs/version-0.7.6/assets/boards/Liatris.jpg new file mode 100644 index 0000000..fe47c72 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/Liatris.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/MavercadeKeebfighter.jpg b/versioned_docs/version-0.7.6/assets/boards/MavercadeKeebfighter.jpg new file mode 100644 index 0000000..00321fb Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/MavercadeKeebfighter.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/OpenCore0.jpg b/versioned_docs/version-0.7.6/assets/boards/OpenCore0.jpg new file mode 100644 index 0000000..a0fa41e Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/OpenCore0.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/OpenCore0WASD.jpg b/versioned_docs/version-0.7.6/assets/boards/OpenCore0WASD.jpg new file mode 100644 index 0000000..56768fc Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/OpenCore0WASD.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/Pico.jpg b/versioned_docs/version-0.7.6/assets/boards/Pico.jpg new file mode 100644 index 0000000..9216669 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/Pico.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/PicoFightingBoard.jpg b/versioned_docs/version-0.7.6/assets/boards/PicoFightingBoard.jpg new file mode 100644 index 0000000..2df50d5 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/PicoFightingBoard.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/PicoW.jpg b/versioned_docs/version-0.7.6/assets/boards/PicoW.jpg new file mode 100644 index 0000000..a7ffc1e Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/PicoW.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/RP2040AdvancedBreakoutBoard.jpg b/versioned_docs/version-0.7.6/assets/boards/RP2040AdvancedBreakoutBoard.jpg new file mode 100644 index 0000000..763da96 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/RP2040AdvancedBreakoutBoard.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/RP2040AdvancedBreakoutBoardUSBPassthrough.jpg b/versioned_docs/version-0.7.6/assets/boards/RP2040AdvancedBreakoutBoardUSBPassthrough.jpg new file mode 100644 index 0000000..28cbcfa Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/RP2040AdvancedBreakoutBoardUSBPassthrough.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/RP2040MiniBreakoutBoard.jpg b/versioned_docs/version-0.7.6/assets/boards/RP2040MiniBreakoutBoard.jpg new file mode 100644 index 0000000..56e0b23 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/RP2040MiniBreakoutBoard.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/RanaTadpole.jpg b/versioned_docs/version-0.7.6/assets/boards/RanaTadpole.jpg new file mode 100644 index 0000000..763e5dd Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/RanaTadpole.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/ReflexCtrlSNES.jpg b/versioned_docs/version-0.7.6/assets/boards/ReflexCtrlSNES.jpg new file mode 100644 index 0000000..148a4f9 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/ReflexCtrlSNES.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/ReflexEncode_v1.2.jpg b/versioned_docs/version-0.7.6/assets/boards/ReflexEncode_v1.2.jpg new file mode 100644 index 0000000..e0a0398 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/ReflexEncode_v1.2.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/ReflexEncode_v2.0.jpg b/versioned_docs/version-0.7.6/assets/boards/ReflexEncode_v2.0.jpg new file mode 100644 index 0000000..6baea2e Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/ReflexEncode_v2.0.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/SGFBridget.jpg b/versioned_docs/version-0.7.6/assets/boards/SGFBridget.jpg new file mode 100644 index 0000000..6d17cc4 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/SGFBridget.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/SGFFaust.jpg b/versioned_docs/version-0.7.6/assets/boards/SGFFaust.jpg new file mode 100644 index 0000000..bddd288 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/SGFFaust.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/SparkFunProMicro.jpg b/versioned_docs/version-0.7.6/assets/boards/SparkFunProMicro.jpg new file mode 100644 index 0000000..668b29b Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/SparkFunProMicro.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/Stress.jpg b/versioned_docs/version-0.7.6/assets/boards/Stress.jpg new file mode 100644 index 0000000..a65c526 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/Stress.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/boards/WaveshareZero.jpg b/versioned_docs/version-0.7.6/assets/boards/WaveshareZero.jpg new file mode 100644 index 0000000..d94bbec Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/boards/WaveshareZero.jpg differ diff --git a/versioned_docs/version-0.7.6/assets/gp2040-ce-placeholder.png b/versioned_docs/version-0.7.6/assets/gp2040-ce-placeholder.png new file mode 100644 index 0000000..1a737ba Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/gp2040-ce-placeholder.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/Alpha3_DC.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/Alpha3_DC.png new file mode 100644 index 0000000..956c21b Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/Alpha3_DC.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/BentoBox.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/BentoBox.png new file mode 100644 index 0000000..9279e30 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/BentoBox.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/CVS2_DC.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/CVS2_DC.png new file mode 100644 index 0000000..9191b73 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/CVS2_DC.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/CrushCounter-v2-0.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/CrushCounter-v2-0.png new file mode 100644 index 0000000..f842153 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/CrushCounter-v2-0.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-1.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-1.png new file mode 100644 index 0000000..af31f29 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-1.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-2.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-2.png new file mode 100644 index 0000000..a733644 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-2.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-3.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-3.png new file mode 100644 index 0000000..9ef4247 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-3.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-4.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-4.png new file mode 100644 index 0000000..ad13834 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-4.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-5.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-5.png new file mode 100644 index 0000000..207010d Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-5.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-6.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-6.png new file mode 100644 index 0000000..291f43f Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-6.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-7.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-7.png new file mode 100644 index 0000000..bc13904 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/GP2040-CE-7.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/MVC1_DC.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/MVC1_DC.png new file mode 100644 index 0000000..dd9cc42 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/MVC1_DC.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/NewChallenger-1.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/NewChallenger-1.png new file mode 100644 index 0000000..1c934e2 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/NewChallenger-1.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/PlasmaSword_DC.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/PlasmaSword_DC.png new file mode 100644 index 0000000..fa4f950 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/PlasmaSword_DC.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/ProjectJustice_DC.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/ProjectJustice_DC.png new file mode 100644 index 0000000..4d44190 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/ProjectJustice_DC.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/Sega-Astro-City.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/Sega-Astro-City.png new file mode 100644 index 0000000..8226e01 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/Sega-Astro-City.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/Street-Fighter.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/Street-Fighter.png new file mode 100644 index 0000000..716db78 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/Street-Fighter.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/community-splash-screens/TheTrain-Logo.png b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/TheTrain-Logo.png new file mode 100644 index 0000000..5795b60 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/community-splash-screens/TheTrain-Logo.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/github-sponsor-dark.png b/versioned_docs/version-0.7.6/assets/images/github-sponsor-dark.png new file mode 100644 index 0000000..3e3746e Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/github-sponsor-dark.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/github-sponsor-dimmed.png b/versioned_docs/version-0.7.6/assets/images/github-sponsor-dimmed.png new file mode 100644 index 0000000..850ebfe Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/github-sponsor-dimmed.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/github-sponsor-light.png b/versioned_docs/version-0.7.6/assets/images/github-sponsor-light.png new file mode 100644 index 0000000..1494788 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/github-sponsor-light.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gp2040-ce-logo.png b/versioned_docs/version-0.7.6/assets/images/gp2040-ce-logo.png new file mode 100644 index 0000000..5b15b2b Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gp2040-ce-logo.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-ads1219.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-ads1219.png new file mode 100644 index 0000000..748fbda Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-ads1219.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-analog.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-analog.png new file mode 100644 index 0000000..72b0d27 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-analog.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-bootsel-button.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-bootsel-button.png new file mode 100644 index 0000000..fc73cbd Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-bootsel-button.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-buzzer.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-buzzer.png new file mode 100644 index 0000000..b44fba5 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-buzzer.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-dual-directional.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-dual-directional.png new file mode 100644 index 0000000..1b0778c Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-dual-directional.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-example-wiring-diagram-usb-host-port.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-example-wiring-diagram-usb-host-port.png new file mode 100644 index 0000000..4963624 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-example-wiring-diagram-usb-host-port.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-extra-button.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-extra-button.png new file mode 100644 index 0000000..7531c73 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-extra-button.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-focus-mode.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-focus-mode.png new file mode 100644 index 0000000..751ebd2 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-focus-mode.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-input-history.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-input-history.png new file mode 100644 index 0000000..456be34 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-input-history.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-input-reverse.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-input-reverse.png new file mode 100644 index 0000000..2e2d1ff Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-input-reverse.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-joystick-slider-pin-example.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-joystick-slider-pin-example.png new file mode 100644 index 0000000..7c200bd Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-joystick-slider-pin-example.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-joystick-slider.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-joystick-slider.png new file mode 100644 index 0000000..c8f0ae6 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-joystick-slider.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-keyboard-host-configuration-wiring-diagram.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-keyboard-host-configuration-wiring-diagram.png new file mode 100644 index 0000000..4963624 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-keyboard-host-configuration-wiring-diagram.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-keyboard-host-configuration.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-keyboard-host-configuration.png new file mode 100644 index 0000000..4df53f0 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-keyboard-host-configuration.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-onboard-led.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-onboard-led.png new file mode 100644 index 0000000..e6d6ffa Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-onboard-led.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-player-number.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-player-number.png new file mode 100644 index 0000000..1c223bd Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-player-number.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-ps-passthrough.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-ps-passthrough.png new file mode 100644 index 0000000..d46151f Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-ps-passthrough.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-ps4-mode.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-ps4-mode.png new file mode 100644 index 0000000..2eaff48 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-ps4-mode.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-snespad-input-pinout.svg b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-snespad-input-pinout.svg new file mode 100644 index 0000000..8b4d7a6 --- /dev/null +++ b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-snespad-input-pinout.svg @@ -0,0 +1 @@ +1234567 \ No newline at end of file diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-snespad-input.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-snespad-input.png new file mode 100644 index 0000000..7109db3 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-snespad-input.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-socd-slider-pin-example.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-socd-slider-pin-example.png new file mode 100644 index 0000000..6adf1e7 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-socd-slider-pin-example.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-socd-slider.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-socd-slider.png new file mode 100644 index 0000000..9632a81 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-socd-slider.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-tilt.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-tilt.png new file mode 100644 index 0000000..6f448b8 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-tilt.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-turbo-shmup.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-turbo-shmup.png new file mode 100644 index 0000000..2b06447 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-turbo-shmup.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-turbo.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-turbo.png new file mode 100644 index 0000000..324934f Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-turbo.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-classic.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-classic.png new file mode 100644 index 0000000..1a0e3b8 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-classic.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-drums.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-drums.png new file mode 100644 index 0000000..55d92f9 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-drums.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-guitar.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-guitar.png new file mode 100644 index 0000000..33fb4a5 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-guitar.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-nunchuck.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-nunchuck.png new file mode 100644 index 0000000..c1ee46e Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-nunchuck.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-taiko.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-taiko.png new file mode 100644 index 0000000..a5ace21 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-taiko.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-turntable.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-turntable.png new file mode 100644 index 0000000..8191957 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions-turntable.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions.png new file mode 100644 index 0000000..dc7b60e Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-wii-extensions.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-xbox-one-passthrough.png b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-xbox-one-passthrough.png new file mode 100644 index 0000000..5ecc156 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-add-ons-xbox-one-passthrough.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-backup-and-restore.png b/versioned_docs/version-0.7.6/assets/images/gpc-backup-and-restore.png new file mode 100644 index 0000000..86ebcc1 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-backup-and-restore.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-backup.png b/versioned_docs/version-0.7.6/assets/images/gpc-backup.png new file mode 100644 index 0000000..1c24cb1 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-backup.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-display-config.png b/versioned_docs/version-0.7.6/assets/images/gpc-display-config.png new file mode 100644 index 0000000..3d2a2ae Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-display-config.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-documentation-current-version.png b/versioned_docs/version-0.7.6/assets/images/gpc-documentation-current-version.png new file mode 100644 index 0000000..94a2c61 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-documentation-current-version.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-documentation-next-version.png b/versioned_docs/version-0.7.6/assets/images/gpc-documentation-next-version.png new file mode 100644 index 0000000..f5bdffd Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-documentation-next-version.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-home.png b/versioned_docs/version-0.7.6/assets/images/gpc-home.png new file mode 100644 index 0000000..f936508 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-home.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-hotkey-settings.png b/versioned_docs/version-0.7.6/assets/images/gpc-hotkey-settings.png new file mode 100644 index 0000000..1c942b8 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-hotkey-settings.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-input-boot-modes.png b/versioned_docs/version-0.7.6/assets/images/gpc-input-boot-modes.png new file mode 100644 index 0000000..06c9935 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-input-boot-modes.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-keyboard-mapping.png b/versioned_docs/version-0.7.6/assets/images/gpc-keyboard-mapping.png new file mode 100644 index 0000000..621387a Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-keyboard-mapping.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-label-selection.png b/versioned_docs/version-0.7.6/assets/images/gpc-label-selection.png new file mode 100644 index 0000000..aae129a Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-label-selection.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-macros-input-line.png b/versioned_docs/version-0.7.6/assets/images/gpc-macros-input-line.png new file mode 100644 index 0000000..95ce288 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-macros-input-line.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-macros.png b/versioned_docs/version-0.7.6/assets/images/gpc-macros.png new file mode 100644 index 0000000..56a5fec Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-macros.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-peripheral-mapping.png b/versioned_docs/version-0.7.6/assets/images/gpc-peripheral-mapping.png new file mode 100644 index 0000000..3ebbbf1 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-peripheral-mapping.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-pin-mapping-map-buttons-prompt.png b/versioned_docs/version-0.7.6/assets/images/gpc-pin-mapping-map-buttons-prompt.png new file mode 100644 index 0000000..a915620 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-pin-mapping-map-buttons-prompt.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-pin-mapping-map-buttons.png b/versioned_docs/version-0.7.6/assets/images/gpc-pin-mapping-map-buttons.png new file mode 100644 index 0000000..e1941cd Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-pin-mapping-map-buttons.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-pin-mapping.png b/versioned_docs/version-0.7.6/assets/images/gpc-pin-mapping.png new file mode 100644 index 0000000..df34502 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-pin-mapping.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-pled-pwm.png b/versioned_docs/version-0.7.6/assets/images/gpc-pled-pwm.png new file mode 100644 index 0000000..ded005f Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-pled-pwm.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-pled-rgb.png b/versioned_docs/version-0.7.6/assets/images/gpc-pled-rgb.png new file mode 100644 index 0000000..d1ef6bf Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-pled-rgb.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-reset-settings.png b/versioned_docs/version-0.7.6/assets/images/gpc-reset-settings.png new file mode 100644 index 0000000..e3c37f9 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-reset-settings.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-restore.png b/versioned_docs/version-0.7.6/assets/images/gpc-restore.png new file mode 100644 index 0000000..d4781ec Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-restore.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-rgb-led-button-order.png b/versioned_docs/version-0.7.6/assets/images/gpc-rgb-led-button-order.png new file mode 100644 index 0000000..17a18bf Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-rgb-led-button-order.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-rgb-led-config.png b/versioned_docs/version-0.7.6/assets/images/gpc-rgb-led-config.png new file mode 100644 index 0000000..1c2ed3f Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-rgb-led-config.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-rgb-led-custom-theme.png b/versioned_docs/version-0.7.6/assets/images/gpc-rgb-led-custom-theme.png new file mode 100644 index 0000000..c5373ed Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-rgb-led-custom-theme.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-settings-ps4.png b/versioned_docs/version-0.7.6/assets/images/gpc-settings-ps4.png new file mode 100644 index 0000000..5e3a7a3 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-settings-ps4.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/gpc-settings.png b/versioned_docs/version-0.7.6/assets/images/gpc-settings.png new file mode 100644 index 0000000..9793dc3 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/gpc-settings.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/_base-template.xcf b/versioned_docs/version-0.7.6/assets/images/led-themes/_base-template.xcf new file mode 100644 index 0000000..ec84e3e Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/_base-template.xcf differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/fightboard.png b/versioned_docs/version-0.7.6/assets/images/led-themes/fightboard.png new file mode 100644 index 0000000..26939c5 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/fightboard.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-a.png b/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-a.png new file mode 100644 index 0000000..7ee2103 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-a.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-b.png b/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-b.png new file mode 100644 index 0000000..4cf0d54 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-b.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-c.png b/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-c.png new file mode 100644 index 0000000..5ef9c76 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-c.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-d.png b/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-d.png new file mode 100644 index 0000000..4dd0ca3 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-d.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-e.png b/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-e.png new file mode 100644 index 0000000..9b737ad Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/guilty-gear-type-e.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/neogeo-curved.png b/versioned_docs/version-0.7.6/assets/images/led-themes/neogeo-curved.png new file mode 100644 index 0000000..6cc43de Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/neogeo-curved.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/neogeo-modern.png b/versioned_docs/version-0.7.6/assets/images/led-themes/neogeo-modern.png new file mode 100644 index 0000000..771577c Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/neogeo-modern.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/neogeo-straight.png b/versioned_docs/version-0.7.6/assets/images/led-themes/neogeo-straight.png new file mode 100644 index 0000000..dee2730 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/neogeo-straight.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/playstation-all.png b/versioned_docs/version-0.7.6/assets/images/led-themes/playstation-all.png new file mode 100644 index 0000000..14f6942 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/playstation-all.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/playstation.png b/versioned_docs/version-0.7.6/assets/images/led-themes/playstation.png new file mode 100644 index 0000000..ffd6492 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/playstation.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/six-button-fighter-plus.png b/versioned_docs/version-0.7.6/assets/images/led-themes/six-button-fighter-plus.png new file mode 100644 index 0000000..393fe9c Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/six-button-fighter-plus.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/six-button-fighter.png b/versioned_docs/version-0.7.6/assets/images/led-themes/six-button-fighter.png new file mode 100644 index 0000000..8ecf6e2 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/six-button-fighter.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/static-rainbow.png b/versioned_docs/version-0.7.6/assets/images/led-themes/static-rainbow.png new file mode 100644 index 0000000..9c9f2c9 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/static-rainbow.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/street-fighter-2.png b/versioned_docs/version-0.7.6/assets/images/led-themes/street-fighter-2.png new file mode 100644 index 0000000..9ae15ce Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/street-fighter-2.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/super-famicom-all.png b/versioned_docs/version-0.7.6/assets/images/led-themes/super-famicom-all.png new file mode 100644 index 0000000..0d49acb Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/super-famicom-all.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/super-famicom.png b/versioned_docs/version-0.7.6/assets/images/led-themes/super-famicom.png new file mode 100644 index 0000000..f76b0a6 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/super-famicom.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/tekken.png b/versioned_docs/version-0.7.6/assets/images/led-themes/tekken.png new file mode 100644 index 0000000..34f2467 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/tekken.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/xbox-all.png b/versioned_docs/version-0.7.6/assets/images/led-themes/xbox-all.png new file mode 100644 index 0000000..15abaa9 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/xbox-all.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/led-themes/xbox.png b/versioned_docs/version-0.7.6/assets/images/led-themes/xbox.png new file mode 100644 index 0000000..7bb7442 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/images/led-themes/xbox.png differ diff --git a/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/classic.svg b/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/classic.svg new file mode 100644 index 0000000..9258e70 --- /dev/null +++ b/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/classic.svg @@ -0,0 +1 @@ +LSRSURDYXB+Home-RZRZLLRZRZLL \ No newline at end of file diff --git a/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/drums.svg b/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/drums.svg new file mode 100644 index 0000000..bc7c755 --- /dev/null +++ b/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/drums.svg @@ -0,0 +1 @@ +JSJS--++PedalPedal \ No newline at end of file diff --git a/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/guitar.svg b/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/guitar.svg new file mode 100644 index 0000000..1e05670 --- /dev/null +++ b/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/guitar.svg @@ -0,0 +1 @@ ++-JSWhammyBarWhammyBarPedalPedal \ No newline at end of file diff --git a/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/nunchuck.svg b/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/nunchuck.svg new file mode 100644 index 0000000..dcca5db --- /dev/null +++ b/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/nunchuck.svg @@ -0,0 +1 @@ +ZCAnalogStickZCAnalogStick \ No newline at end of file diff --git a/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/taiko.svg b/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/taiko.svg new file mode 100644 index 0000000..0a6eaf1 --- /dev/null +++ b/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/taiko.svg @@ -0,0 +1 @@ +DONKATDONKAT \ No newline at end of file diff --git a/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/turntable.svg b/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/turntable.svg new file mode 100644 index 0000000..6944226 --- /dev/null +++ b/versioned_docs/version-0.7.6/assets/images/wii-extension-controllers/turntable.svg @@ -0,0 +1 @@ +-+EUEFFECTJSFADER \ No newline at end of file diff --git a/versioned_docs/version-0.7.6/assets/wiring/AdafruitKB2040_Pinout.png b/versioned_docs/version-0.7.6/assets/wiring/AdafruitKB2040_Pinout.png new file mode 100644 index 0000000..b199225 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/wiring/AdafruitKB2040_Pinout.png differ diff --git a/versioned_docs/version-0.7.6/assets/wiring/RaspberryPiPico_Pinout.png b/versioned_docs/version-0.7.6/assets/wiring/RaspberryPiPico_Pinout.png new file mode 100644 index 0000000..222b103 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/wiring/RaspberryPiPico_Pinout.png differ diff --git a/versioned_docs/version-0.7.6/assets/wiring/SparkFunProMicroRP2040_Pinout.png b/versioned_docs/version-0.7.6/assets/wiring/SparkFunProMicroRP2040_Pinout.png new file mode 100644 index 0000000..8470158 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/wiring/SparkFunProMicroRP2040_Pinout.png differ diff --git a/versioned_docs/version-0.7.6/assets/wiring/WaveshareRP2040Zero_Pinout.png b/versioned_docs/version-0.7.6/assets/wiring/WaveshareRP2040Zero_Pinout.png new file mode 100644 index 0000000..3057626 Binary files /dev/null and b/versioned_docs/version-0.7.6/assets/wiring/WaveshareRP2040Zero_Pinout.png differ diff --git a/versioned_docs/version-0.7.6/controller-build/rgb-led-wiring.mdx b/versioned_docs/version-0.7.6/controller-build/rgb-led-wiring.mdx new file mode 100644 index 0000000..4572d12 --- /dev/null +++ b/versioned_docs/version-0.7.6/controller-build/rgb-led-wiring.mdx @@ -0,0 +1,12 @@ +--- +title: RGB LED Wiring +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Instructions on installing RGB LEDs onto your GP2040-CE controllers. May require additional wiring, connectors, solder, or circuit boards." +--- + +# Document Title + +CONTENT diff --git a/versioned_docs/version-0.7.6/controller-build/usb-host.mdx b/versioned_docs/version-0.7.6/controller-build/usb-host.mdx new file mode 100644 index 0000000..a6e5239 --- /dev/null +++ b/versioned_docs/version-0.7.6/controller-build/usb-host.mdx @@ -0,0 +1,33 @@ +--- +title: USB Host Port Installation +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Instructions on installing a USB Host port onto your GP2040-CE controllers. May require additional wiring, connectors, solder, or circuit boards." +--- + +import InstallUSBHostPort from "../snippets/_add-usb-host-port.mdx"; + +# USB Host Port Installation + +:::info + +The steps you will need to complete will be based on what RP2040 board you are using and they may differ immensely. Some boards will require you to solder additional wires and connect peripheral boards onto your board. Others will have the host port already installed and no additional hardware steps will be required. + +::: + +At the minimum, the following requirements are true for all RP2040 boards. + +- 2 GPIO pins that are sequential (i.e. `GPIO Pin X` and `GPIO Pin X+1`) and **NOT** in series/parallel with any capacitors or large, non-termination resistors +- A 5V pin (i.e. `VBUS`, `VCC`, `+5V`, etc.) +- A ground pin (i.e. `GND`) + +You may need the following additional hardware to complete the installation. What you will need specifically will depend on your specific board configuration. + +- Solder and Soldering Iron +- Wires to connect to the USB A port +- Wire terminators to connect to your GP2040-CE Board +- A USB Host board breakout board or an extra USB Cable + + diff --git a/versioned_docs/version-0.7.6/controller-build/wiring.mdx b/versioned_docs/version-0.7.6/controller-build/wiring.mdx new file mode 100644 index 0000000..b0d07f8 --- /dev/null +++ b/versioned_docs/version-0.7.6/controller-build/wiring.mdx @@ -0,0 +1,34 @@ +--- +title: Microcontroller Board Wiring +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Default pinouts for common, commercially available microcontroller boards" +--- + +# Wiring + +These are the default pin mappings for each GP2040-CE supported microcontroller board. + +## Raspberry Pi Pico + +:::note + +The Raspberry Pi Pico pinout can also be used on clone boards with the same form factor and pinout, such as the Pimironi Pico LiPo and the Waveshare RP2040-Plus. + +::: + +![Raspberry Pi Pico Pinout](../assets//wiring/RaspberryPiPico_Pinout.png) + +## SparkFun Pro Micro - RP2040 + +![SparkFun Pro Micro - RP2040 Pinout](../assets/wiring/SparkFunProMicroRP2040_Pinout.png) + +## Waveshare RP2040-Zero + +![Waveshare RP2040-Zero Pinout](../assets/wiring/WaveshareRP2040Zero_Pinout.png) + +## Adafruit KB2040 + +![Adafruit KB2040 Pinout](../assets/wiring/AdafruitKB2040_Pinout.png) diff --git a/versioned_docs/version-0.7.6/development/contribution-guide.mdx b/versioned_docs/version-0.7.6/development/contribution-guide.mdx new file mode 100644 index 0000000..8e2dd2f --- /dev/null +++ b/versioned_docs/version-0.7.6/development/contribution-guide.mdx @@ -0,0 +1,55 @@ +--- +title: How to Contribute +# tags: +# - +pagination_next: null +pagination_prev: null +description: "How to contribute to the GP2040-CE Project" +--- + +# How to Contribute + +Thank you for taking the time to read this and contributing to the project! + +Third-party contributions help us grow and improve GP2040-CE. We want to make the pull request and contribution process useful and easy for both contributors and maintainers. + +To this end we’ve put together some guidelines for contributors to help your pull request be accepted without major changes. + +## Project Overview + +GP2040-CE is largely written in C/C++, with a significant portion of the web configurator written in JavaScript within a React framework. + +## How do I make a contribution? + +Never made an open source contribution before? Wondering how contributions work in GP2040-CE? Here’s a quick rundown! + +1. Sign up for a GitHub account. +2. Find an issue you are interested in addressing, or a feature you would like to add. +3. Fork the repository associated with the issue to your GitHub account. This means that you will have a copy of the repository under `your-GitHub-username/GP2040-CE`. +4. Clone the repository to your local machine using `git clone https://github.com/OpenStickCommunity/GP2040-CE` +5. If you’re working on a new feature consider opening an issue to talk with us about the work you’re about to undertake. +6. Create a new branch for your fix using `git checkout -b branch-name-here`. +7. Make the appropriate changes for the issue you are trying to address or the feature that you want to add. +8. Use `git add insert-paths-of-changed-files-here` to add the file contents of the changed files to the “snapshot” git uses to manage the state of the project, also known as the index. +9. Use `git commit -m "Insert a short message of the changes made here"` to store the contents of the index with a descriptive message. +10. Push the changes to your repository on GitHub using `git push origin branch-name-here`. +11. Submit a pull request to [OpenStickCommunity/GP2040-CE](https://github.com/OpenStickCommunity/GP2040-CE). +12. Title the pull request with a short description of the changes made and the issue or bug number associated with your change. For example, you can title an issue like so “Added more log outputting to resolve #4352”. +13. In the description of the pull request explain the changes that you made, any issues you think exist with the pull request you made, and any questions you have for the maintainer. It’s OK if your pull request is not perfect (no pull request is), the reviewer will be able to help you fix any problems and improve it! +14. Wait for the pull request to be reviewed by a maintainer. +15. Make changes to the pull request if the reviewing maintainer recommends them. +16. Celebrate your success after your pull request is merged! + +## Coding Conventions + +## General Guidelines + +- **Before you contribute**: Please make sure your fork is up to date with the upstream `GP2040-CE` repo. This will help minimize CI failures that may not occur for you when compiling locally. +- Separate PRs into logical units. For example, do not submit one PR covering two separate features, instead submit a separate PR for each feature. +- Check for unnecessary whitespace with `git diff --check` before committing. +- Make sure your code change actually compiles. +- Make sure commit messages are understandable on their own. You should put a short description (no more than 70 characters) on the first line, the second line should be empty, and on the 3rd and later lines you should describe your commit in detail, if required. + +## Documentation + +Documentation is one of the easiest ways to get started contributing to GP2040-CE. Finding places where the documentation is wrong or incomplete and fixing those is easy! We also very badly need someone to edit our documentation, so if you have editing skills but aren’t sure where or how to jump in please [reach out for help](../getting-help-support.mdx)! diff --git a/versioned_docs/version-0.7.6/development/documentation-preview.mdx b/versioned_docs/version-0.7.6/development/documentation-preview.mdx new file mode 100644 index 0000000..b3adf0f --- /dev/null +++ b/versioned_docs/version-0.7.6/development/documentation-preview.mdx @@ -0,0 +1,67 @@ +--- +title: Documentation Preview +# tags: +# - +pagination_next: null +pagination_prev: null +description: "How to preview documentation locally" +--- + +# Documentation Preview + +While writing and developing the documentation, you will want to build locally so you can see changes without making updates to the main repository. However, when you are ready to test for a pull request, compile for production as this will build the files that would be used for a live site and will reveal issues that may not be present when building locally. + +## Clear Local Build + +This process will clear generated assets, caches, build artifacts from your docs folder. It's recommended to do so anytime there are issues with the Docusaurus site when building locally or compiling for production. + +1. Open a terminal in the root of the GP2040-CE project +2. Run the following commands + +```shell +cd site/ +npm run docusaurus clear +``` + +## Build Locally + +This will build and serve your site locally with [Webpack Dev Server](https://webpack.js.org/configuration/dev-server/). + +:::note + +Changes made to documents while the dev server is running will update the live site on save. + +::: + +1. Open a terminal in the root of the GP2040-CE project +2. Run the following commands + +```shell +cd site/ +npm install +npm start +``` + +3. In the default web browser, `http://localhost:port` should automatically open and allow you to preview the site. + +## Production Preview + +This will compile your site for production, creating a build folder that would be used as a static site. + +:::note + +Changes made to documents while the dev server is running will **not** update the live site on save. + +::: + +1. Open a terminal in the root of the GP2040-CE project +2. Run the following commands + +```shell +cd site/ +npm install +npm run build +npm run serve +``` + +3. In the default web browser, `http://localhost:port` should automatically open and allow you to preview the site. diff --git a/versioned_docs/version-0.7.6/development/documentation-update-downloads.mdx b/versioned_docs/version-0.7.6/development/documentation-update-downloads.mdx new file mode 100644 index 0000000..090faa2 --- /dev/null +++ b/versioned_docs/version-0.7.6/development/documentation-update-downloads.mdx @@ -0,0 +1,46 @@ +--- +title: Update Downloads Page +# tags: +# - +pagination_next: null +pagination_prev: null +description: "How to update the Downloads Page to add a new microcontroller board or controller" +--- + +# Update Downloads Page + +Adding a microcontroller board or device to the [Downloads](../downloads/download-page.mdx) page requires an update to the `docs/src/config/boards.tsx` file. The information required will depend on whether you are adding a microcontroller board or a controller. + +| Key | Value | +| ------------ | ---------------------------------------------------------------------------------------------------------------- | +| `name` | The name of the device what will be listed on the Downloads page | +| `configName` | The name of the device that will be used to generate the .uf2 file and used to generate link to release firmware | +| `pinout` | Link to the devices pinout diagram | +| `website` | Link to the website containing device information | +| `image` | Absolute link to the asset used for device, change only `BoardName` to match file name in `docs/docs/assets/` | +| `supported` | (Microcontroller Board Only) Whether the device is currently supported by the project | +| `category` | (Controller Only) The category classification following convention listed below | +| `desc` | Short description of the device and manufacturer to be displayed on Downloads page | + +## Microcontroller Board + +The template for microcontroller boards can be found in [Templates - Microcontroller Boards](..//development/templates.mdx#microcontroller-boards). + +To add a microcontroller board to the download list, fill out the template with all of the information and add it to the array `boards['Microcontroller Boards']`. The order that the boards are listed determine the order that they appear on the page so note the following order of boards. + +- Raspberry Pi Pico +- Raspberry Pi Pico W +- The rest of the microcontroller boards in alphabetical order + +## Controllers + +The template for controllers can be found in [Templates - Controllers](..//development/templates.mdx#controllers). + +To add a controller to the download list, fill out the template with all of the information and add it to the array `boards['Controllers']`. The order of the controllers in this array should be alphabetical. + +For categories, the convention is as follows. + +- `official` - Official boards of the project +- `open` - Open source devices +- `closed` - Closed source devices +- `legacy` - Devices that are not or are no longer supported by the project diff --git a/versioned_docs/version-0.7.6/development/documentation-versioning.mdx b/versioned_docs/version-0.7.6/development/documentation-versioning.mdx new file mode 100644 index 0000000..1eb9300 --- /dev/null +++ b/versioned_docs/version-0.7.6/development/documentation-versioning.mdx @@ -0,0 +1,57 @@ +--- +title: Documentation Versioning +# tags: +# - +pagination_next: null +pagination_prev: null +description: "How to version documents for a new release" +--- + +# Versioning + +Versioning is used so that the documentation for features currently in development can be updated without affecting user documentation, which should remain fairly static and only updated with a new release version. There should only ever be **one** versioned copy of the documentation that matches to latest release version number of firmware. + +The result is a default versions copy for the latest release that is served to the user when visiting https://gp2040-ce.info and another "Next" version that reflects unfinished documentation for the next release. + +## On New Release + +When a new release is ready, first delete the prior version. Then tag a new version with a name that matches the release number (i.e. X.X.X). Once that has been completed, commit the changes and make a pull request to update the site documentation. + +### Delete Prior Version + +At the root of the GP2040-CE folder, run the following command to delete the versioned folders and files entirely as they will be recreated in when a new version is tagged. + +```shell +rm -rf docs/versioned_docs +rm -rf docs/versioned_sidebars +rm -rf docs/versions.json +``` + +### Tag New Version + +```shell +cd docs/ +npm run docusaurus docs:version X.X.X +``` + +When tagging a new version, the document versioning mechanism will: + +- Copy the full docs/ folder contents into a new versioned_docs/version-\{versionName\}/ folder. +- Create a versioned sidebars file based from your current sidebar configuration (if it exists) - saved as versioned_sidebars/version-\{versionName\}-sidebars.json. +- Append the new version number to versions.json. + +## Updating Documentation + +### Update Future Release Documentation + +Updates can be made directly in the `docs/docs/` folder or `sidebars.js` as these changes are not reflected in the default versioned documents users will see on the site. Any changes to the `docs/docs/` folder or `sidebars.js` are made to the `Next` version. + +![GP2040-CE | Next Version](../assets/images/gpc-documentation-next-version.png) + +### Update Current Release Documentation + +This process is different from updating documentation for future releases as changes need to be made with the versioned documents. Changes to the current release version of documentation will need to be made to the files in `docs/versioned_docs/version-X.X.X` and `docs/versioned_sidebars/version-X.X.X-sidebars.json`. + +These changes will be reflected in the default user facing documentation that appears when users go to https://gp2040-ce.info and do not specifically select the `Next` version of documentation. + +![GP2040-CE | Current Version](../assets/images/gpc-documentation-current-version.png) diff --git a/versioned_docs/version-0.7.6/development/firmware-development.mdx b/versioned_docs/version-0.7.6/development/firmware-development.mdx new file mode 100644 index 0000000..dc3dc82 --- /dev/null +++ b/versioned_docs/version-0.7.6/development/firmware-development.mdx @@ -0,0 +1,542 @@ +--- +title: Firmware Development +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Documentation on building and developing for GP2040-CE Firmware" +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +# Firmware Development + +GP2040-CE is written in C++ and set up as a standard Pico SDK project. + +See [Getting Started with the Raspberry Pi Pico](https://rptl.io/pico-get-started). + +## Environment Setup + +Most of this will be parroting the above linked PDF from the Raspberry Pi Foundation. + + + + +1. Download and install [CMake](https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4-windows-x86_64.msi). +2. Install [NodeJS](https://nodejs.org/en/download) +3. Install [NPM](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) +4. Download and install [pico-setup-windows-x64-standalone](https://github.com/raspberrypi/pico-setup-windows/releases/). +5. Download and install VSCode. +6. Download and install [Windows Terminal](https://github.com/microsoft/terminal/releases/tag/v1.17.11461.0). +7. Open Windows Terminal. +8. Download the GP2040-CE-main repository by running the following commands in the Windows Terminal. This will download the folder to `C:\Users\user\GP2040-CE`. + + ```console + git clone https://github.com/OpenStickCommunity/GP2040-CE.git + cd GP2040-CE + git submodule update --init + ``` + +After installing the Raspberry Pi Pico SDK, you should now have a shortcut to "Pico-Visual Studio Code" (search for it using Windows Search). + +8. Open "Pico-Visual Studio Code" via Windows search. This is a shortcut with pre-configured environment variables (this will be explained later). +9. Navigate to the Extensions window by pressing `Ctrl+Shift+X`. +10. Install "CMake Tools" by Microsoft. +11. Open the GP2040-CE folder you downloaded earlier via "File > Open Folder." + + + + +1. Install the latest[Arm GNU Toolchain](https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads) +2. Install latest version of [CMake](https://cmake.org/download/) +3. Install [Visual Studio Build tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022), or the full [Visual Studio Community Edition IDE](https://visualstudio.microsoft.com/downloads/#visual-studio-community-2022) + - Make sure to select the Desktop development with C++ workload + - Select the latest Windows 10 or Windows 11 SDK from the Individual Components +4. Install [Python 3.10](https://www.python.org/downloads/windows/) + - At the end of the installation, there is an option to disable max file path length. You want to select this. +5. Install [Visual Studio Code](https://code.visualstudio.com/) - Optional +6. Install git + - Set default editor to anything other than VIM, such as Visual Studio Code +7. Install [NodeJS](https://nodejs.org/en/download) and NPM +8. Clone the Pico SDK to your local computer + + ```console + git clone https://github.com/raspberrypi/pico-sdk.git + cd pico-sdk + git submodule update --init + cd .. + ``` + +9. From a command-prompt, Clone GP2040-CE to your local computer + + ```console + git clone https://github.com/OpenStickCommunity/GP2040-CE.git + cd GP2040-CE + ``` + + + + +#### Ubuntu + +This setup assumes an understanding of Linux terminal usage. + +1. Get the SDK + + ```bash + cd ~/ + mkdir pico + cd pico + git clone https://github.com/raspberrypi/pico-sdk.git --branch master + cd pico-sdk + git submodule update --init + cd .. + ``` + +2. Install the toolchain + + ```bash + sudo apt update + sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential + ``` + + - May additionally need to install `libstdc++-arm-none-eabi-newlib` + +3. Install NodeJS and NPM + + ```bash + curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\ + sudo apt-get install -y nodejs + ``` + +4. Get GP2040-CE + + ```bash + git clone https://github.com/OpenStickCommunity/GP2040-CE.git + cd GP2040-CE + git submodule update --init + ``` + +#### Raspberry Pi + +This setup script requires approximately 2.5GB of disk space on your SD card. + +1. Download the setup script + + ```bash + wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh + ``` + +2. Make script executable and Run it. + + ```bash + chmod +x pico_setup.sh + ``` + +3. Install NodeJS and NPM + + ```bash + curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\ + sudo apt-get install -y nodejs + ``` + +4. Reboot your Pi + + ```bash + sudo reboot + ``` + +5. Get GP2040-CE + + ```bash + git clone https://github.com/OpenStickCommunity/GP2040-CE.git + cd GP2040-CE + git submodule update --init + ``` + + + + +## Building + +### Environment Variables + +A number of new environment variables have been setup to control parts of the build flow. + +| Name | Default | Description | +| ------------------ | ------- | ------------------------------------------------------------------------------------------------------- | +| GP2040_BOARDCONFIG | Pico | The boards.h config file to use for the build. | +| SKIP_WEBBUILD | FALSE | Determines whether the web configurator is built during the cmake configuration step. | +| SKIP_SUBMODULES | FALSE | Determines whether the submodule init command is run automatically during the cmake configuration step. | + +#### SDK Variables + +There are a few SDK variables we take advantage of for our builds. + +| Name | Default | Description | +| ---------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| PICO_BOARD | pico | This is the embedded board that the RP2040 chip is part of. By default, it assumes the Pico. This variable would match the `` file in the board's configs folder. | + + + + +After installing the Raspberry Pi Pico SDK, you should now have a shortcut to "Pico-Visual Studio Code" (search for it using Windows Search). This shortcut should already have everything configured, **allowing you to skip to step 7**. If you're experiencing compilation issues, consider following the manual steps outlined here. + +Ensure the `PICO_SDK_PATH` environment variable is set: + +1. Search for "Edit environment variables for your account" in Windows. +2. Under "User Variables," click "New...". +3. In the dialog that appears, enter `PICO_SDK_PATH` for the Variable Name. +4. Click "Browse Directory" and navigate to `C:\Program Files\Raspberry Pi\Pico SDK v1.5.1\pico-sdk` for the Variable Value. +5. Create another new variable. +6. Enter `GP2040_BOARDCONFIG` for the Variable Name. +7. Enter `Pico` (or the name of your edited config folder) for the Variable Value. + +You can also set the variable within VSCode: + +1. Press `Ctrl + ,` to open the settings. +2. Use the search bar to find "CMake." +3. Scroll until you see "CMake: Configure Environment." +4. Click "Add Item." +5. Key: `GP2040_BOARDCONFIG` +6. Value: `Pico` (or your working folder name). + +When prompted, choose `GCC 10.3.1 ARM NONE EABI` for "Select a kit for GP2040-CE" + +From inside VSCode: + +1. Click the CMake icon on the left sidebar of VSCode. +2. You'll see three icons at the top-right corner of the CMake project outline. Click the "Configure All Projects" icon (looks like a page with an arrow). +3. Wait for the configuration process to complete. If progress isn't visible, open a new terminal in VSCode by clicking on the "Terminal" menu, then "New Terminal". A new terminal window will open at the bottom, navigate the "Output" tab. +4. Click "Build All Projects" in the CMake project outline. +5. The files should be in a new folder named "build" inside the GP2040-CE folder + + + + +Start in the GP2040-CE folder. **From a Developer Powershell or Developer Command Command Prompt**: + +:::note + +A new Powershell or Command Prompt session will be required after setting an environment variable. + +::: + +1. Ensure you have the `PICO_SDK_PATH` environment variable set to the path to your pico-sdk folder. +2. (optional) Set the `GP2040_BOARDCONFIG` environment variable to the folder name for your board configuration. + + - Default value is `Pico` + +3. Create a build directory, configure the build, and execute the build. + + ```console + mkdir build + cd build + cmake -G "NMake Makefiles" .. + nmake + ``` + +4. Your UF2 file should be in the build directory. + + + + +Start in the GP2040-CE folder + +1. Ensure you have the `PICO_SDK_PATH` environment variable set to the path to your pico-sdk folder. +2. (optional) Set the `GP2040_BOARDCONFIG` environment variable to the folder name for your board configuration. + - Default value is `Pico` +3. Create a build directory, configure the build, and execute the build. + + ```bash + mkdir build + cd build + cmake .. + make + ``` + +4. Your UF2 file should be in the build directory. + + + + +## Configuration + +:::note + +We're looking to move away from compile time configuration, in favor of runtime configuration. + +::: + +There are two simple options for building GP2040-CE for your board. You can either edit an existing board definition, or create your own. Several example configurations are located in the repository **[configs](https://github.com/OpenStickCommunity/GP2040-CE/tree/main/configs)** folder. This document will outline setting up a new build configuration. + +### Board Configuration Folder + +Each subfolder in [`configs`](https://github.com/OpenStickCommunity/GP2040-CE/tree/main/configs) contains a separate board configuration, which consists of the following: + +| Name | Required? | Description | +| ----------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `BoardConfig.h` | Yes | The configuration file used when building GP2040-CE for a specific controller/board. Contains initial pin mappings, LED configuration, etc. | +| `README.mdx` | No | Provides information related to this board configuration. Not required for the build process, but suggested for pull requests of new board configurations. | +| `assets/` | No | Folder for containing assets included in the `README.mdx`. Not required for the build process. | +| '\' | No | Board definition file, named after the board itself, used by the Pico SDK for configuring board specific SDK features. [Pico Example](https://github.com/raspberrypi/pico-sdk/blob/master/src/boards/include/boards/pico.h) | + +### Board Configuration (`BoardConfig.h`) + +The following board options are available in the `BoardConfig.h` file: + +| Name | Description | Required? | +| ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | +| **PIN*DPAD*_X_**
**PIN*BUTTON*_X_** | The GPIO pin for the button. Replace the _`X`_ with GP2040-CE button or DPad direction. | Yes | +| **DEFAULT_SOCD_MODE** | The default SOCD mode to use, defaults to `SOCD_MODE_NEUTRAL`.
Available options are:
`SOCD_MODE_NEUTRAL`
`SOCD_MODE_UP_PRIORITY`
`SOCD_MODE_SECOND_INPUT_PRIORITY` | No | +| **BUTTON_LAYOUT** | The layout of controls/buttons for use with per-button LEDs and external displays.
Available options are:
`BUTTON_LAYOUT_STICKLESS`
`BUTTON_LAYOUT_WASD` | Yes | + +Create `configs/NewBoard/BoardConfig.h` and add your pin configuration and options. An example `BoardConfig.h` file: + +```cpp +// BoardConfig.h + +#include + +#define PIN_DPAD_UP 2 +#define PIN_DPAD_DOWN 3 +#define PIN_DPAD_LEFT 4 +#define PIN_DPAD_RIGHT 5 +#define PIN_BUTTON_B1 6 +#define PIN_BUTTON_B2 7 +#define PIN_BUTTON_B3 8 +#define PIN_BUTTON_B4 9 +#define PIN_BUTTON_L1 10 +#define PIN_BUTTON_R1 11 +#define PIN_BUTTON_L2 26 +#define PIN_BUTTON_R2 27 +#define PIN_BUTTON_S1 16 +#define PIN_BUTTON_S2 17 +#define PIN_BUTTON_L3 18 +#define PIN_BUTTON_R3 19 +#define PIN_BUTTON_A1 20 +#define PIN_BUTTON_A2 21 +#define PIN_BUTTON_TURBO -1 +#define PIN_SLIDER_LS -1 +#define PIN_SLIDER_RS -1 + +#define DEFAULT_SOCD_MODE SOCD_MODE_NEUTRAL +#define BUTTON_LAYOUT BUTTON_LAYOUT_ARCADE +``` + +#### RGB LEDs + +GP2040-CE supports per-button WS2812 and similar RGB LEDs. + +The following RGB LED options are available in the `BoardConfig.h` file: + +| Name | Description | Required? | +| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | +| **BUTTON_LAYOUT** | The layout of controls/buttons for use with per-button LEDs and external displays.
Available options are:
`BUTTON_LAYOUT_STICKLESS`
`BUTTON_LAYOUT_WASD` | Yes | +| **BOARD_LEDS_PIN** | Data PIN for your LED strand | Yes | +| **LED_FORMAT** | The color data format for the LED chain.
Available options are:
`LED_FORMAT_GRB`
`LED_FORMAT_RGB`
`LED_FORMAT_GRBW`
`LED_FORMAT_RGBW` | No, default value `LED_FORMAT_GRB` | +| **LEDS_PER_PIXEL** | The number of LEDs per button. | Yes | +| **LED_BRIGHTNESS_MAXIMUM** | Max brightness value, `uint8_t` 0-255. | Yes | +| **LED_BRIGHTNESS_STEPS** | The number of brightness steps when using the up/down hotkey. | Yes | +| **LEDS*DPAD*_X_**
**LEDS*BUTTON*_X_** | The index of the button on the LED chain. Replace the _`X`_ with GP2040-CE button or DPad direction. | Yes | +| **LEDS_BASE_ANIMATION_INDEX** | The default LED animation index. | No, defaults to `1` | +| **LEDS_STATIC_COLOR_INDEX** | The default color index for the static color theme | No, defaults to `2` | +| **LEDS_BUTTON_COLOR_INDEX** | The default color index for the pressed button color | No, defaults to `1` | +| **LEDS_THEME_INDEX** | The default theme index for static themes | No, defaults to `0` | +| **LEDS_RAINBOW_CYCLE_TIME** | The color cycle time for rainbow cycle theme | No, defaults to `40` | +| **LEDS_CHASE_CYCLE_TIME** | The animation speed for the rainbow chase theme | No, defaults to `85` | + +An example RGB LED setup in the `BoardConfig.h` file: + +```cpp +// BoardConfig.h + +#include "gp2040.h" +#include "NeoPico.hpp" + +#define BUTTON_LAYOUT BUTTON_LAYOUT_STICKLESS + +#define BOARD_LEDS_PIN 22 + +#define LED_BRIGHTNESS_MAXIMUM 100 +#define LED_BRIGHTNESS_STEPS 5 +#define LED_FORMAT LED_FORMAT_GRB +#define LEDS_PER_PIXEL 2 + +#define LEDS_DPAD_LEFT 0 +#define LEDS_DPAD_DOWN 1 +#define LEDS_DPAD_RIGHT 2 +#define LEDS_DPAD_UP 3 +#define LEDS_BUTTON_B3 4 +#define LEDS_BUTTON_B4 5 +#define LEDS_BUTTON_R1 6 +#define LEDS_BUTTON_L1 7 +#define LEDS_BUTTON_B1 8 +#define LEDS_BUTTON_B2 9 +#define LEDS_BUTTON_R2 10 +#define LEDS_BUTTON_L2 11 +``` + +#### Player LEDs + +GP2040-CE supports PWM and RGB player LEDs (PLEDs) and can be configured in the `BoardConfig.h` file. + +:::note + +RGB PLEDs require [RGB LEDs](#rgb-leds) to be configured. + +::: + +The following PLED options are available in the `BoardConfig.h` file: + +| Name | Description | Required? | +| ------------- | ------------------------------------------------------------------------------------------ | --------- | +| **PLED_TYPE** | Configures the type of PLEDs.
Available options are: `PLED_TYPE_PWM`, `PLED_TYPE_RGB` | Yes | +| **PLED1_PIN** | (PWM) The GPIO pin for PLED #1.
(RGB) The index of PLED #1 on the LED chain. | Yes | +| **PLED2_PIN** | (PWM) The GPIO pin for PLED #2.
(RGB) The index of PLED #2 on the LED chain. | Yes | +| **PLED3_PIN** | (PWM) The GPIO pin for PLED #3.
(RGB) The index of PLED #3 on the LED chain. | Yes | +| **PLED4_PIN** | (PWM) The GPIO pin for PLED #4.
(RGB) The index of PLED #4 on the LED chain. | Yes | + +An example PLED setup in the `BoardConfig.h` file: + +```cpp +// BoardConfig.h + +#include "PlayerLEDs.h" + +#define PLED_TYPE PLED_TYPE_RGB +#define PLED1_PIN 12 +#define PLED2_PIN 13 +#define PLED3_PIN 14 +#define PLED4_PIN 15 +``` + +#### I2C Displays + +GP2040-CE supports 128x64 monochrome displays that run on the SSD1306, SH1106 or SH1107 drivers. The following options are available for displays: + +| Name | Description | Required? | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------- | +| **BUTTON_LAYOUT** | The layout of controls/buttons for use with per-button LEDs and external displays.
Available options are:
`BUTTON_LAYOUT_STICKLESS`
`BUTTON_LAYOUT_WASD` | Yes | +| **HAS_I2C_DISPLAY** | Flag to indicate the controller contains an I2C display module. | No | +| **DISPLAY_I2C_ADDR** | The I2C address of the display. | No, defaults to `0x3C` | +| **I2C_SDA_PIN** | The GPIO pin for the I2C SDA line. | If `HAS_I2C_DISPLAY` is enabled | +| **I2C_SCL_PIN** | The GPIO pin for the I2C SCL line. | If `HAS_I2C_DISPLAY` is enabled | +| **I2C_BLOCK** | The I2C block on the Pico. Refer to the [Pico Pinout Diagram](https://datasheets.raspberrypi.com/pico/Pico-R3-A4-Pinout.pdf) to identify which block is in use based on the SDA and SCL pins being used.
Available options are:
`i2c0`
`i2c1` | No, defaults to `i2c0` | +| **I2C_SPEED** | The speed of the I2C bus. `100000` is standard mode, while `400000` is used for fast mode communication. Higher values may be used but will require testing the device for support. | No, defaults to `400000` | +| **DISPLAY_FLIP** | Flag to flip the rendered display output. Set to `1` to enable. | No, defaults to `0` | +| **DISPLAY_INVERT** | Flag to invert the rendered display output. Set to `1` to enable. | No, defaults to `0` | + +An example I2C display setup in the `BoardConfig.h` file: + +```cpp +#define BUTTON_LAYOUT BUTTON_LAYOUT_WASD +#define HAS_I2C_DISPLAY 1 +#define I2C_SDA_PIN 0 +#define I2C_SCL_PIN 1 +#define I2C_BLOCK i2c0 +#define I2C_SPEED 800000 +``` + +#### I2C Display Splash + +The firmware also has a splash display feature. The default splash image has been defined in `headers/add-ons/i2cdisplay.h`. The data for the splash image are bytes representing the bitmap to be displayed on the OLED screen. The splash image can be set via the web-config. If you would like to change the default version of the splash image (to preserve it beyond data wipe), it can be customized with a C define named `DEFAULT_SPLASH` in the active `BoardConfig.h` file. +The instructions on how to generate those bytes are as follows: + +1. Navigate to [Bitmap Converter web utility](https://marlinfw.org/tools/u8glib/converter.html) +2. Configure generated code + - Select Marlin 2.x and Bitmap, untick all the rest. +3. Upload the splash image file + - Set the image file after clicking on "Choose file". The image file needs to be preprocessed to your liking and cropped to 128x64. This should populate a code block below. +4. Use the generated code + + - Copy the hex numbers inside the curly braces from the code block. + - Navigate to the `BoardConfig.h` of your choice and at the end of the file right before `#endif`. Create a C define like so: + + ```cpp + #define DEFAULT_SPLASH \ + ``` + + - Then paste what you copied below what you just typed. Be sure to edit the array of bytes as follows: + + ```cpp + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ // First line + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ // Second line + ... // All lines below previous ones end in \ similar to those above + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 // Last line doesn't have an \ to escape the new line + ``` + + - Here's a sample entry from Pico `BoardConfig.h`: + + ```cpp + #define DEFAULT_SPLASH \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xDF,0xC0, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xC1,0xFF,0xA0, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xCF,0xFE,0x80, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xE0,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xAB,0xC0,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x00,0x00,0xFB,0x83,0xFF,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x01,0xFF,0x00,0x01,0xF3,0x07,0xFC,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x07,0xFF,0x00,0x03,0xE0,0x3F,0xF4,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x38,0x0A,0xE7,0x80,0x03,0xC0,0x5F,0x80,0x00, \ + 0x00,0x00,0x00,0x20,0x07,0x81,0xFF,0x39,0xC3,0xC7,0x01,0xD7,0x80,0x3F,0x00,0x00, \ + 0x00,0x00,0x00,0xE0,0x1F,0xE7,0xFF,0x79,0xC7,0x87,0x9F,0xA7,0x80,0x6E,0x3C,0x00, \ + 0x00,0x00,0xA0,0xC0,0x3F,0xEA,0xE7,0xF3,0xEF,0x07,0x7F,0xC7,0x01,0xCF,0xFF,0x80, \ + 0x00,0x03,0x8F,0xFC,0x7F,0xC3,0xC7,0x7F,0xFE,0x0F,0x7E,0x8F,0x87,0xDF,0xFC,0x00, \ + 0x00,0x0F,0xFF,0xFF,0x73,0xC7,0x87,0xFF,0xDE,0x0E,0x50,0x07,0x1F,0x1F,0xD0,0x00, \ + 0x00,0x1F,0x57,0xFF,0xE7,0x8F,0x07,0xFF,0x1C,0x3E,0x00,0x0F,0xFF,0x7F,0x00,0x00, \ + 0x00,0x7E,0x0B,0x8F,0x8F,0x8E,0x0F,0xFF,0x9E,0x7C,0x00,0x07,0xFD,0xFC,0x00,0x00, \ + 0x00,0x7C,0x37,0x9F,0x1F,0x1E,0x0F,0x87,0x1E,0xF8,0x00,0x07,0xF0,0x30,0x00,0x00, \ + 0x00,0xF1,0xF7,0xFE,0x1E,0x1C,0x3E,0x0E,0x1F,0xF0,0x00,0x01,0x40,0x28,0x00,0x00, \ + 0x01,0xEF,0xE7,0xF8,0x3C,0x3E,0x7C,0x0F,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x03,0xFF,0x8F,0xF0,0x7F,0xFE,0xF8,0x0E,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x03,0xFF,0xCF,0xC0,0xFF,0xFF,0xF0,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x07,0x8B,0xFF,0x01,0xFF,0x8F,0xC0,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x07,0x87,0xFE,0x01,0xFE,0x0F,0x80,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x07,0x1F,0xDE,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x07,0xBF,0x9E,0x01,0xC0,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x07,0xFF,0x9C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x07,0xFB,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x03,0xE7,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x01,0x47,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x0E,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + ``` + +5. Test and verify + - Compile, if you did everything right, it should compile fine + - Load the UF2 after the compile. Check and verify in the web-config, if you have set a custom image before, you might need to reset data. diff --git a/versioned_docs/version-0.7.6/development/templates.mdx b/versioned_docs/version-0.7.6/development/templates.mdx new file mode 100644 index 0000000..7663adb --- /dev/null +++ b/versioned_docs/version-0.7.6/development/templates.mdx @@ -0,0 +1,156 @@ +--- +title: Templates +# tags: +# - +pagination_next: null +pagination_prev: null +description: "PAGE DESCRIPTION" +--- + +# Templates + +## Configuration Templates + +### README Template + +```md +# Board Name + +![Image of Board](site/docs/assets/gp2040-ce-placeholder.png) + +Basic description of the board + +(RP2040 Pinout as a markdown table) +| GPIO Pin | Input/Function | +|:--------:|:--------------:| +| 0 | | +| 1 | | +| 2 | | +| 3 | | +| 4 | | +| 5 | | +| 6 | | +| 7 | | +| 8 | | +| 9 | | +| 10 | | +| 11 | | +| 12 | | +| 13 | | +| 14 | | +| 15 | | +| 16 | | +| 17 | | +| 18 | | +| 19 | | +| 20 | | +| 21 | | +| 22 | | +| 23 | | +| 24 | | +| 25 | | +| 26 | | +| 27 | | +| 28 | | +| 29 | | + +Device Maintainer: [Name, Username, or Business Name](https://github.com/username) +Supported Hardware Variations: List versions/variations that share this configuration +Hardware Availability: List where one can purchase the boards that share this configuration +``` + +## Documentation Templates + +### Page Template + +```md +--- +title: TITLE +# tags: +# - +pagination_next: null +pagination_prev: null +description: "PAGE DESCRIPTION" +--- + +# Document Title + +CONTENT +``` + +### Add-On Template + +```md +--- +title: ADD-ON NAME +# tags: +# - +pagination_next: null +pagination_prev: null +description: "PAGE DESCRIPTION" +--- + +# Add-On Name + +Purpose: The intended function and purpose of this add-on for an end user. + +![Web Configurator Image](../assets/gp2040-ce-placeholder.png) + +## Web Configurator Options + +- Web Configurator Option 1 +- Web Configurator Option 2 +- Web Configurator Option 3 + +## Hardware + +### Requirements + +TODO: List any hardware that is required for the intended functioning of this add-on. + +### Installation + +TODO: List instructions on how to install the hardware for use with this add-on. + +## Miscellaneous Notes + +TODO: Provide any miscellaneous notes that an end user may want or need to know with regard to this add-on. +``` + +### Downloads Page Configurations + +#### Microcontroller Boards + +```tsx +{ + name: 'Microcontroller Board Name', + configName: 'ConfigName', + pinout: null, + website: 'http://www.example.com/index.html', + image: require('@site/docs/assets/gp2040-ce-placeholder.png').default, + supported: true, + desc: () => ( +

+ Description of Microcontroller board and manufacturer +

+ ), +}, + +``` + +#### Controllers + +```tsx +{ + name: 'Controller Name', + configName: 'ConfigName', + pinout: null, + website: 'http://www.example.com/index.html', + image: require('@site/docs/gp2040-ce-placeholder.png').default, + category: 'official/open/closed/legacy', + desc: () => +

+ Description of the device and maker. +

, +}, +``` diff --git a/versioned_docs/version-0.7.6/downloads/download-page.mdx b/versioned_docs/version-0.7.6/downloads/download-page.mdx new file mode 100644 index 0000000..bf7bfdf --- /dev/null +++ b/versioned_docs/version-0.7.6/downloads/download-page.mdx @@ -0,0 +1,48 @@ +--- +title: Downloads +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Pre-compiled firmware builds for supported devices. Verify that a firmware build (.uf2) is compatible with your device before flashing." +--- + +import { + Microcontrollers, + OfficialDevices, + OpenSourceDevices, + ClosedSourceDevices, + LegacyDevices, +} from "@site/src/components/Download.tsx"; + +# Downloads + +## Microcontroller Boards + + + +## Official Project Boards + + + +## Open Source Community Devices + + + +## Closed Source Community Devices + + + +## Legacy Devices + +GP2040-CE builds for these devices have been deprecated due to one or more of the following reasons: + +- The manufacturer already provides a custom build of GP2040-CE +- The device is no longer available for purchase +- The operation of the device running an updated GP2040-CE build cannot be verified by the development team + +These builds remain available, however legacy devices are not supported by the GP2040-CE team. + +Please ensure you have a backup of the original firmware and your settings before updating your device! + + diff --git a/versioned_docs/version-0.7.6/downloads/flash_nuke.uf2 b/versioned_docs/version-0.7.6/downloads/flash_nuke.uf2 new file mode 100644 index 0000000..31291e6 Binary files /dev/null and b/versioned_docs/version-0.7.6/downloads/flash_nuke.uf2 differ diff --git a/versioned_docs/version-0.7.6/downloads/force_webconfig.uf2 b/versioned_docs/version-0.7.6/downloads/force_webconfig.uf2 new file mode 100644 index 0000000..8a0f40e Binary files /dev/null and b/versioned_docs/version-0.7.6/downloads/force_webconfig.uf2 differ diff --git a/versioned_docs/version-0.7.6/faq/faq-console-compatibility.mdx b/versioned_docs/version-0.7.6/faq/faq-console-compatibility.mdx new file mode 100644 index 0000000..245bc95 --- /dev/null +++ b/versioned_docs/version-0.7.6/faq/faq-console-compatibility.mdx @@ -0,0 +1,211 @@ +--- +title: Console Compatibility +# tags: +# - +pagination_next: null +pagination_prev: null +toc_min_heading_level: 2 +toc_max_heading_level: 4 +description: "FAQ related to Console Compatibility. Now supports Playstation 4, Playstation 5, Xbox One, Xbox Series S, and Xbox Series S" +--- + +# FAQ: Console Compatibility + +GP2040-CE supports a wide variety of consoles and the most common questions regarding console compatibility are listed below. + +## General + +### Is there additional latency when using the PS Passthrough or Xbox One Passthrough add-ons? + +As long as PS/Xbox One Passthrough is configured correctly and the passthrough authentication device is properly plugged into the controller, there should be no additional latency. The passthrough authentication device is used solely for authentication without processing inputs and inputs come directly from the GP2040-CE firmware. + +### How do I plug in my passthrough authentication device for PS/Xbox One Passthrough? + +When using converters and adapters with PS/Xbox One Passthrough add-ons, you plug the device directly into the controller through a USB host port. You do not plug anything else into the converter/adapter. + +```mermaid +graph LR +Converter/Adapter/Dongle --> Controller --> Console +``` + +
+ +:::caution Incorrect Usage of Converters/Adapters with Passthrough Add-ons + +Many users incorrectly plug their controllers into the converters/adapters and then plug the converter/adapter into the console. This is not how Passthrough is intended to be used and will result in additional latency as inputs are processed by the converter/adapter. + +Do not plug the converter/adapter as shown below. + +```mermaid +graph LR +Controller --> Converter/Adapter/Dongle --> Console +``` + +::: + +## Playstation + +### Why does my controller stop responding after a while on PS4 or PS5? + +PlayStation 4 and PlayStation 5 use an authentication mechanism to ensure only authorized controllers are used on the console. If a device doesn't implement this authentication mechanism the controller is subject to an 8-minute timeout. + +Using PS4 mode on a PC does not result in any timeout behavior, but note that XInput is the suggested mode on PC for best compatibility. + +### What is the 8-Minute Timeout? + +The 8-minute timeout works like this: + +1. Plug your controller into the PS4/5 +2. Press the PS button to initialize the controller +3. Play for roughly 8 minutes +4. Console rejects the controller due to failed authentication +5. User unplugs their non-functional controller +6. Go back to step 1 and repeat + +### How do I avoid the 8-Minute Timeout? + +GP2040-CE provides multiple methods for you to avoid the 8-Minute Timeout. The recommended method will depend on whether you are using your controller on Playstation 4 or Playstation 5. + +For PS4, you can either use the [PS4 Mode add-on](../add-ons/ps4-mode.mdx) or the [PS Passthrough add-on](../add-ons/ps-passthrough.mdx). + +For PS5 you can **only** use the [PS Passthrough add-on](../add-ons/ps-passthrough.mdx). + +### How do I get my GP2040-CE unit to work on a Playstation 4 or Playstation 5? + +For Playstation 4 compatibility, you will need to use either the [PS4 Mode add-on](../add-ons/ps4-mode.mdx) or the [PS Passthrough add-on](../add-ons/ps-passthrough.mdx). If you use PS Passthrough, you will need to disable the PS4 Mode add-on and enable the PS Passthrough add-on. You will also need to ensure that under the `Settings` section you have chosen `PS4` as your input mode and either `Controller` or `Arcade Stick`. + +For Playstation 5 compatibility, you **cannot** use the PS4 Mode add-on. You will need to disable the PS4 Mode add-on and then enable the PS Passthrough add-on. You will also need to ensure that under the `Settings` section you have chosen `PS4` as your input mode and picked if you want the GP2040-CE unit to function as a `Arcade Stick`. + +:::note + +Setting it as `Controller` will not work on Playstation 5 using the PS Passthrough add-on. + +::: + +### What is PS4 Mode? + +PS4 mode is an add-on that grants GP2040-CE compatibility with the Playstation 4 console. Using this add-on requires a few files that can be acquired from a legitimate DualShock 4 controller. + +- Private Key +- Serial Number +- Signature + +It was built using the efforts of another open source firmware project named [Passing Link](https://github.com/passinglink/passinglink). The team behind Passing Link are in no way affiliated with the GP2040-CE project, however the work and information they've made available was greatly appreciated so we could bring this highly-requested feature to our users. + +For more information, refer to [PS4 Mode](../add-ons/ps4-mode.mdx) in the `Web Configurator - Add-ons` section of the documentation. + +#### How do I get the necessary keys and files for the PS4 Mode add-on? + +The GP2040-CE project will not provide **_any_** files or information related to acquiring these keys and files. + +:::danger + +**Do not ask via any of communication channels (e.g. social media, direct messages, Github Issues, GP2040-CE Discord) as this will result in a permanent blacklist/ban.** + +::: + +#### How do I know the PS4 Mode add-on is working? + +If you're using an OLED display, the input mode will change from `PS4` to `PS4:AS` to indicate your device has successfully authenticated with the PS4/PS5 console. Otherwise the only way to tell is to plug the controller into a PS4 and wait 8 minutes to verify that the controller is still responding afterwards. + +### What is PS Passthrough? + +:::note Additional Hardware Required + +- [USB Host Port](../controller-build/usb-host.mdx) +- PS4/PS5 Authentication Device + +::: + +PS Passthrough is an add-on that grants GP2040-CE compatibility with the Playstation 4 or Playstation 5 console by using another controller or dongle to answer authentication + +Depending on the controller or dongle used, you may be limited to only Playstation 4 support. + +For more information, refer to [PS Passthrough](../add-ons/ps-passthrough.mdx) in the `Web Configurator - Add-ons` section of the documentation. + +#### What controller or dongle do I use for PS Passthrough? + +:::note + +The list of devices is shared between PS4 and PS5 as the controller is authenticating as a licensed, "categorized" PS4 controller. If it works for PS5, it will work for PS4 as well. + +::: + +There are a number of devices that the PS5 recognizes as a "categorized" controller (e.g. arcade stick, racing wheel, flight sim joystick, etc.) where the developer of the game has supported the use of "categorized" controllers. These devices have the `NXP7105` chips that allow them to authenticate with PS5 consoles. + +Any USB device that works as a categorized PS4 controller (arcade stick/racing wheel/flight sim joystick) or a USB dongle that allows a controller to authenticate should work with PS Passthrough. Note that this functionality is not present in all games, but is common in fighting games and racing simulators. + +Some devices that do work for PS5 include, but are not limited to; + +- [MagicBoots FPS Adapter Joystick Converter for PS4 v1.1](https://www.mayflash.com/product/MAGPS4.html) +- [N5 for PXN Game Steering Wheel](https://pxn-game.com/products/n5-for-pxn-game-steering-wheel) +- PCBs from Licensed PS4 Arcade Sticks + +Because your experience and purchased products may vary, GP2040-CE will not provide additional specific recommendations beyond these known working devices. + +:::caution Incompatible Controllers + +The following controllers are not supported at all with the PS Passthrough add-on + +- DualShock 4 +- DualSense +- DualSense Edge +- Other licensed PS5 controllers + +::: + +#### How do I know the PS Passthrough add-on is working? + +Because of the numerous devices to be used for passthrough authentication, there is not just one way to verify that the add-on is working without plugging the controller into a PS4 or PS5 and waiting 8 minutes to verify that the controller is still responding afterwards. + +For the MagicBoots Adapter and N5 listed above, there is an indicator light on the dongle that should flash on boot and then become solid after a moment. If the indicator light is on and solid, your controllers _should_ be compatible with PS5 at that point and not time out. + +#### Can I remove the PS Passthrough authentication device once I have plugged in my controller? + +Playstation consoles repeatedly send authorization requests every 30 seconds or so. If the request fails (i.e. there is no passthrough authentication device plugged in), in about 8 minutes, the controller will stop responding. Once this happens, the only option is to either reset the controller or unplug and then plug the controller back into the console. + +## Xbox + +### How do I get my GP2040-CE unit to work on a Xbox One, Xbox Series S, or Xbox Series X? + +For Xbox One, Xbox Series S, or Xbox Series X compatibility, you will need to use the [Xbox One Passthrough add-on](../add-ons/xbox-one-passthrough.mdx). + +### What is Xbox One Passthrough? + +:::caution Additional Hardware Required + +- [USB Host Port](../controller-build/usb-host.mdx) +- Xbox One Authentication Device + +::: + +Xbox One Passthrough is an add-on that grants GP2040-CE compatibility with the Xbox One, Xbox Series S, or Xbox Series X by using another controller or dongle to answer authentication + +For more information, refer to [Xbox One add-on](../add-ons/xbox-one-passthrough.mdx) in the `Web Configurator - Add-ons` section of the documentation. + +### What controller or dongle do I use for Xbox One Passthrough? + +Some devices that do work for Xbox One Passthrough are currently limited to the following; + +- [MagicBoots FPS Adapter Joystick Converter for Xbox One](https://www.mayflash.com/product/MAGONE.html) +- [Magic-X Wireless Bluetooth USB Adapter](https://www.mayflash.com/product/magic_x.html) + +Because your experience and purchased products may vary, GP2040-CE will not provide additional specific recommendations beyond these known working devices. + +:::caution Xbox One Controllers + +Xbox Wireless Controllers, Xbox One Elite Controllers, and other licensed Xbox One controllers will not work with this add-on. + +::: + +### How do I know the Xbox One Passthrough add-on is working? + +Because of the numerous devices to be used for passthrough authentication, there is not just one way to verify that the add-on is working without plugging the controller into a console and attempting to use it. + +For the MagicBoots Adapter listed above, there is an indicator light on the dongle that should flash on boot and then become solid after a moment. If the indicator light is on and solid, your controllers _should_ be compatible and you may use your controller as intended. + +For the Magic-X Adapter listed above, there is an indicator light on the dongle that will continue flashing after the controller boots, unlike the MagicBoots Adapter. + +### Can I remove the Xbox One Passthrough authentication device once I have plugged in my controller? + +Xbox One, Xbox Series S, and Xbox Series X consoles only perform the authentication process once when the controller is plugged into the console. Once this occurs, the passthrough authentication device can be removed. However, it is still recommended to keep the device plugged in. diff --git a/versioned_docs/version-0.7.6/faq/faq-general.mdx b/versioned_docs/version-0.7.6/faq/faq-general.mdx new file mode 100644 index 0000000..ee63d37 --- /dev/null +++ b/versioned_docs/version-0.7.6/faq/faq-general.mdx @@ -0,0 +1,81 @@ +--- +title: General FAQ +# tags: +# - +pagination_next: null +pagination_prev: null +description: "General FAQ related to the GP2040-CE project" +--- + +# General FAQ + +## General Questions + +### Which input mode should I use? + +This will depend on the platform you will be playing on: + +- Use `XInput Mode` as the preferred mode for compatibility with PC games and 3rd party console adapters +- Use `PS4 Mode` on PS4, and on PS4 games on PS5 systems +- Use `PS3 Mode` on PS3, and on PS4 with games that support legacy controllers +- Use `Switch Mode` on Nintendo Switch +- Use `Keyboard Mode` for MAME cabinets, PC rhythm games, etc. + +If you have a configured USB Host port, Passthrough enabled, and an appropriate authentication device, you can use a GP2040-CE controller in the following situations. + +- Use `PS4 Mode` with [PS Passthrough](../add-ons/ps-passthrough.mdx) on PS5 games on PS5 systems that support "categorized" controller (e.g. arcade stick, racing wheel, flight sim joystick, etc.) +- Use `Xbox One Mode` with [Xbox One Passthrough](../add-ons/xbox-one-passthrough.mdx) on Xbox One, Xbox Series X, and Xbox Series S. + +If you are using a Classic or Mini console, there are additional USB input modes to use with these emulated consoles. + +- `Sega Genesis/MegaDrive Mini` +- `NEOGEO Mini` +- `PC Engine/Turbografx 16 Mini` +- `EGRET II Mini` +- `ASTROCITY Mini` +- `Playstation Classic` + +### Does GP2040-CE natively support PS5, Xbox One, or Xbox Series consoles? + +These consoles implement security measures that prevent unauthorized accessories from being used. The process of cracking or bypassing that security may not be legal everywhere. These consoles are supported in the future if a user-friendly and completely legal implementation method is found, such as the implementation of [PS4 Mode](../add-ons/ps4-mode.mdx). + +Currently PS5, Xbox One, and Xbox Series consoles are supported through passthrough authentication + +- PS5 is at present supported using passthrough authentication only; see [PS Passthrough](../add-ons/ps-passthrough.mdx). +- Xbox One, and Xbox Series consoles are supported using passthrough authentication only; see [Xbox One Passthrough](../add-ons/xbox-one-passthrough.mdx) + +### Can I use multiple controllers with GP2040-CE on the same system? + +Yes! Each GP2040-CE board is treated as a separate controller. Be sure to only run the embedded web configurator for each controller one at a time. + +If you're installing boards with GP2040-CE in an arcade cabinet, check out the [Player Number add-on](../add-ons/player-number.mdx) to force each board to a specific player number. + +### Does GP2040-CE really have less than 1 ms of input latency? + +Yes! If your platform supports 1000 Hz USB polling, input latency will be less than 1ms. GP2040-CE is configured for 1000 Hz / 1 ms polling by default in all modes, however some systems override or ignore the polling rate the controller requests. The 1000 Hz polling rate is confirmed to work on PC and MiSTer. Even if your platform doesn't support high rate USB polling, GP2040-CE is still reading and processing your inputs as fast as the target system will allow. + +### Do the additional features like RGB LEDs, Player LEDs, and OLED displays affect performance? + +Not at all! The RP2040 processor of the Pico has two cores. GP2040-CE dedicates one of these cores strictly to reading, processing and sending player inputs. All secondary functions such as LEDs and displays are run on the secondary core. No matter how crazy the feature set becomes, GP2040-CE is unlikely to introduce any additional input latency. + +### Why do the buttons have weird labels like B3, A1, S2, etc.? + +GP2040-CE uses a generic system for handling button inputs that resembles a traditional PlayStation controller layout with a few extra buttons. + +- 4 face buttons (B1-B4) +- 4 shoulder buttons (L1, L2, R1, R2) +- Select and Start (S1, S2), 2 stick buttons (L3, R3) +- 2 auxiliary buttons (A1, A2) for things like Guide, PS and Touchpad, or Home and Capture. + +The GP2040-CE documentation and web configurator both provide a dropdown to change the button labels to more familiar controller layouts. You can refer to the button mapping table on the [GP2040-CE Usage](../usage.mdx#buttons) page. + +## Technical Questions + +### What kind of voodoo is that built-in web configurator? + +There's no magic here, just a few cool libraries working together: + +- Single page application using React and Bootstrap is embedded in the GP2040-CE firmware +- TinyUSB library provides virtual network connection via RNDIS +- lwIP library provides an HTTP server which serves up the embedded React app and the web configuration API +- ArduinoJson library is used for serialization and deserialization of web API requests diff --git a/versioned_docs/version-0.7.6/faq/faq-troubleshooting.mdx b/versioned_docs/version-0.7.6/faq/faq-troubleshooting.mdx new file mode 100644 index 0000000..a928360 --- /dev/null +++ b/versioned_docs/version-0.7.6/faq/faq-troubleshooting.mdx @@ -0,0 +1,159 @@ +--- +title: Troubleshooting +# tags: +# - +pagination_next: null +pagination_prev: null +description: "FAQ related to user-side troubleshooting of common issues" +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; +import HotkeyNote from "../snippets/_hotkey-note.mdx"; + +Select the button labels to be displayed in the usage guide: + + + +## Input Issues + +### Why are my buttons out of order? + +There are many different reasons why this could be the case. + +#### Incorrect Mapping in Steam + +Verify that your controller settings in Steam are correctly set, both global settings and the per-game settings. See [Steam Support](https://partner.steamgames.com/doc/features/steam_controller/getting_started_for_players) for more information on how to resolve this issue. + +#### Incorrect Input Mode + +Verify that you are using the correct input mode as different modes may swap the mapping of inputs (e.g. Switch vs XInput, PS3/PS4, etc). See [GP2040-CE Usage](../usage.mdx#input-modes) for more information on how to change input modes. + +#### Incorrect Button Wiring + +Verify that your buttons are correctly connected to the controller board according to the GPIO pin mapping provided by the vendor of your controller board. + +#### Incorrect Firmware + +Firmware is built to assume a specific GPIO pin out and there may be a mismatch between what the firmware expects and what you expect the controls to be. You can either update the GPIO pin mappings in the [Web Configurator](../web-configurator/menu-pages/02-pin-mapping.mdx) or install the correct firmware onto this device. + +See [Incorrect Firmware](#incorrect-firmware-for-a-supported-device) below for more information on how to resolve this issue. + +### Why does my button not register when I press it? + +Check your wiring. The button should have two terminals where one side goes to the GPIO pin and the other to ground. Test whether wiring is working properly by touching the wires together and verifying that an input is received. + +There might also be an issue with your button. Try using different buttons. + +### Why do I keep getting an input even though the button is not being pressed? + +Check your wiring. There may be an unintended short where the signal wire is in contact with ground (GND) or a wire connected to GND. + +There might also be an issue with your button. Try using different buttons. + +### Up/Down or Left/Right have been swapped. How do I fix this? + +You've likely activated [Invert Y-Axis](../hotkeys.mdx#invert-y-axis) or [Invert X-Axis](../hotkeys.mdx#invert-x-axis) hotkey on your controller. Activate the hotkey again to disable the feature. + + + +### My SOCD cleaning changed. How do I get it back to X cleaning mode? + +You've likely activated one of the following SOCD cleaning mode hotkeys on your controller. Activate the hotkey again to disable the feature. + +- [SOCD Up Priority](../hotkeys.mdx#socd-up-priority) +- [SOCD Neutral](../hotkeys.mdx#socd-neutral) +- [SOCD Last Win](../hotkeys.mdx#socd-last-win) +- [SOCD First Wins](../hotkeys.mdx#socd-first-wins) +- [SOCD Cleaning Off](../hotkeys.mdx#socd-cleaning-off) + + + +### Why is my DPad stuck outputting directions on the Left/Right Analog Joystick? + +You've likely activated [DPad Left Analog](../hotkeys.mdx#dpad-left-analog) or [DPad Right Analog](../hotkeys.mdx#dpad-right-analog) hotkey on your controller. Activate the hotkey again to disable the feature. + + + +## Connection Issues + +### Why is the controller connected to the PC/Console not being recognized? + +There are a number of reasons this could be happening. Check for the following issues. + +#### Keyboard Mode + +Check that the input mode of the device is not in keyboard mode. This will cause your computer to only recognize your controller as a keyboard and not as a gamepad. + +#### Web Configurator + +When booting into the Web Configurator, the controller initializes as a RNDIS device and will not be recognized by the PC/Console as a controller. Check that the controller is not booting into the Web Configurator and is not being activated while booting. + +### Why does my controller not connect to the PC/console when using a USB Type C-C? + +Depending on how your device hardware is designed, it may not be set up to use a reversible USB Type C. Try reversing the cable. If that does not work, try using a USB 2.0 Type C-C cable or a USB 2.0 Type C-A cable with an adapter. + +### Why does my controller stop responding on Playstation 4 or Playstation 5? + +Regarding PS4 disconnection issues, verify that you have the [PS4 Mode](../add-ons/ps4-mode.mdx) add-on is enabled with valid authentication files or the [PS Passthrough](../add-ons/ps-passthrough.mdx) add-on is enabled with a valid passthrough authentication device. + +Regarding PS5 disconnection issues. [PS Passthrough](../add-ons/ps-passthrough.mdx) add-on is enabled with a valid passthrough authentication device. + +For more information, refer to the [PS4/PS5 Compatibility FAQ](../faq/faq-console-compatibility.mdx). + +## Configuration Issues + +### Why can't I access the Web Configurator? + +If the Web Configurator page is timing out, verify that the controller is booting into Web Configurator Mode. + +Test that you are holding when booting, using a using the website like [Gamepad Tester](https://gamepad-tester.com/), or in another application such as the Steam Input Overlay. to verify that you are pressing the correct button. + +### Why does PS Passthrough not work on my device? + +#### USB Host Port not configured correctly + +Verify that your USB host port is correctly configured in the Web Configurator. The specific pins for Data+ and Data- may differ between devices and device manufacturers so check with the documentation provided by the vendor. + +For more information, refer to the [PS Passthrough](../add-ons/ps-passthrough.mdx) add-on documentation. + +#### Incompatible Controller/Dongle is being used + +Only compatible devices will allow the use of a GP2040-CE controller with PS Passthrough to work on PS4 and not all devices will work with PS5. + +For more information, refer to the [PS4/PS5 Compatibility FAQ](../faq/faq-console-compatibility.mdx). + +### Why are my RGB LEDs the wrong color? + +Verify that the `LED Format` is correctly set as different LEDs may have a different order to the Red, Green, and Blue data being sent. + +For more information, refer to the [RGB LED Button Order](../web-configurator/menu-pages/05-led-configuration.mdx#rgb-led-button-order) section of the Web Configurator menu. + +### Why are my RGB LEDs out of order? + +The order of RGB LEDs can be set in the Web Configurator and the correct configuration is determined by the hardware, how the user wires up the LED chain or the device designer set the LED chain on the board. + +For more information, refer to the [RGB LED Button Order](../web-configurator/menu-pages/05-led-configuration.mdx#rgb-led-button-order) section of the Web Configurator menu. + +### When I updated my device, why did my controller stop working? + +If you updated your device and suddenly your inputs aren't correct and your OLED Display or RGB LED stopped working, it's likely that the incorrect compiled firmware was flashed onto your device or your device is not supported and thus the precompiled builds on the [Downloads](../downloads/download-page.mdx) page may not work for your device. + +#### Incorrect Firmware for a Supported Device + +If your device is supported and the incorrect firmware was flashed, follow the [firmware installation](../installation.mdx) instructions and reflash the correct firmware, verifying that the name of the firmware file matches your device. + +#### Unsupported Devices + +If your device is not supported, please speak with the vendor you purchased the device from for the proper firmware file to flash onto your device using the [firmware installation](../installation.mdx) instructions. + +If your vendor is incapable of supporting their device, you will need to perform some investigative work to properly set up your device. + +1. Flash the compiled **Pico** GP2040 firmware from the downloads page using the [firmware installation](../installation.mdx) instructions. +2. Repeat those steps **_without flash nuking your device_**, flashing this [firmware file](../downloads/force_webconfig.uf2). This will force your device to boot into Web Configurator mode on boot. +3. Go to Configuration>Pin Mapping +4. For each gamepad input, use the “Press Button to Map” feature to map the input to a GPIO Pin connected to that button. Repeat for all inputs +5. For any additional features (e.g. RGB LED, OLED display, USB Host Port, etc.), you will need to determine what GPIO pin is associated. This can be done by tracing physical copper paths on the PCB to the button/component. + +No further assistance can be supplied as this last step is entirely determined by the manufacturer and how they designed the PCB, which is unsupported. diff --git a/versioned_docs/version-0.7.6/getting-help-support.mdx b/versioned_docs/version-0.7.6/getting-help-support.mdx new file mode 100644 index 0000000..4d5648e --- /dev/null +++ b/versioned_docs/version-0.7.6/getting-help-support.mdx @@ -0,0 +1,27 @@ +--- +title: Getting Help/Support +# tags: +# - +pagination_next: null +pagination_prev: null +description: "How to get help on issues with GP2040-CE" +--- + +# Getting Help/Support + +## Discord + +If you need help with something, the best place to get quick support is our [Discord Server](https://discord.gg/k2pxhke7q8). Once you've read the [pinned post](https://discord.com/channels/1049366310389289001/1132450634243772519), create a post in the [support channel](https://discord.com/channels/1049366310389289001/1132447732662018089) with the following information. + +1. What is the name of the device are you using? +2. Where did you buy it? Provide a link to sales page. +3. What version of the firmware are you currently running? Check this via the Web Configurator (e.g. 0.4.3, 0.5.0, 0.7.4, etc.) +4. Which distribution of the firmware are you currently running? Provide the exact file name (e.g. GP2040-CE_X.X.X_Pico.uf2). +5. What is the problem that you are having? +6. What troubleshooting steps have you already done? + +If this is a custom device, a hardware issue or you believe the firmware issue may be caused by hardware include any images . + +## Github Issues + +You can open an [issue on Github](https://github.com/OpenStickCommunity/GP2040-CE/issues/new/choose). diff --git a/versioned_docs/version-0.7.6/hotkeys.mdx b/versioned_docs/version-0.7.6/hotkeys.mdx new file mode 100644 index 0000000..940a474 --- /dev/null +++ b/versioned_docs/version-0.7.6/hotkeys.mdx @@ -0,0 +1,220 @@ +--- +title: Hotkeys +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Hotkey descriptions available for use with GP2040-CE" +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; + +# Hotkeys + +Select the button labels to be displayed in the usage guide: + + +
+ +:::note + +All of the following hotkey bindings can be changed or assigned to different button combinations in [Hotkeys Settings](./web-configurator/menu-pages/01-settings.mdx#hotkey-settings) section of the Web Configurator. + +::: + +## No Action + +This hotkey does nothing. Use this hotkey to disable a specific hotkey combination. + +## DPad Digital + +This hotkey changes the DPad mode such the directions to be read as digital inputs on the DPad. + +**Default**: + +## DPad Left Analog + +This hotkey changes the DPad mode to such the directions to be read as inputs on the Left analog joystick. The directional input is always the minimum, maximum, or zero value on that axis. + +**Default**: + +## DPad Right Analog + +This hotkey changes the DPad mode to such the directions to be read as inputs on the Right analog joystick. The directional input is always the minimum, maximum, or zero value on that axis. + +**Default**: + +## Home Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +**Default**: + +## Capture Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## SOCD Up Priority + +This hotkey changes the SOCD cleaning method to resolve to a neutral input (no input) on the X-axis, but prioritize the `Up` input on the Y-axis when both directions are pressed simultaneously. + +**Default**: + +| 1st Input + 2nd Input | Result | +| :-------------------: | :-----: | +| Left + Right | Neutral | +| Right + Left | Neutral | +| Up + Down | Up | +| Down + Up | Up | + +## SOCD Neutral + +This hotkey changes the SOCD cleaning method to resolve to a neutral input (no input) on both the X-axis and Y-axis when both directions are pressed simultaneously. + +**Default**: + +| 1st Input + 2nd Input | Result | +| :-------------------: | :-----: | +| Left + Right | Neutral | +| Right + Left | Neutral | +| Up + Down | Neutral | +| Down + Up | Neutral | + +## SOCD Last Win + +This hotkey changes the SOCD cleaning method to prioritize the second directional input on both the X-axis and Y-axis when both directions are pressed simultaneously. + +**Default**: + +| 1st Input + 2nd Input | Result | +| :-------------------: | :----: | +| Left + Right | Right | +| Right + Left | Left | +| Up + Down | Down | +| Down + Up | Up | + +## SOCD First Wins + +This hotkey changes the SOCD cleaning method to prioritize the first directional input on both the X-axis and Y-axis when both directions are pressed simultaneously. + +| 1st Input + 2nd Input | Result | +| :-------------------: | :----: | +| Left + Right | Left | +| Right + Left | Right | +| Up + Down | Up | +| Down + Up | Down | + +## SOCD Cleaning Off + +This hotkey changes the SOCD cleaning method to not resolve any directional inputs on both the X-axis and Y-axis when both directions are pressed simultaneously. The controller will send both directional inputs. + +:::note + +This cleaning mode is only available in XInput mode as PS3/DirectInput, PS4 and Nintendo Switch modes do not support setting SOCD Cleaning to Off and will default to Neutral SOCD Cleaning mode. + +::: + +| 1st Input + 2nd Input | Result | +| :-------------------: | :------------: | +| Left + Right | Left and Right | +| Right + Left | Left and Right | +| Up + Down | Up and Down | +| Down + Up | Up and Down | + +## Invert X Axis + +This hotkey will invert the X-axis of your controller (i.e. pressing the Right button will result a Left input and vice versa). + +## Invert Y Axis + +This hotkey will invert the Y-axis of your controller (i.e. pressing the Up button will result in a Down input and vice versa). + +## Toggle 4-Way Joystick Mode + +This hotkey will alter the behavior of the directional buttons such that only the cardinal directions will register as inputs and diagonal directions will be disabled and ignored. + +## Toggle DDI 4-Way Joystick Mode + +This hotkey will alter the behavior of the directional buttons mapped with the [Dual Direction Input](./add-ons/dual-direction-input.mdx) add-on such that only the cardinal directions will register as inputs and diagonal directions will be disabled and ignored. + +## Load Profile # 1-4 + +This hotkey will load various input to pin mapping profiles set in [Profile Settings](./web-configurator/menu-pages/02-pin-mapping.mdx#profile-settings) in the Web Configurator. + +## L3 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## R3 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## Touchpad Button + +This hotkey emulates a press of the Touchpad button as not all controllers may have this button natively on the controller. + +:::note + +The Touchpad Button is distinct from the [A1 Button](#a1-button) hotkey as this hotkey will trigger the Touchpad button regardless of whether the toggle for `Switch Touchpad and Share` is on or off. + +::: + +## Restart GP2040-CE + +This hotkey will restart the controller without pressing the hardware reset button on the board (if present) or requiring the controller to be unplugged from the PC or game console. + +## B1 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## B2 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## B3 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## B4 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## L1 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## R1 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## L2 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## R2 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## S1 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## S2 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +## A1 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. + +:::note + +The A1 Button hotkey is distinct from the [Touchpad Button](#touchpad-button) hotkey as this hotkey will trigger either the Touchpad button or Share button depending on whether the toggle for [`Switch Touchpad and Share`](./web-configurator/menu-pages/01-settings.mdx#additional-ps4-settings) is on or off. + +::: + +## A2 Button + +This hotkey emulates a press of the button as not all controllers may have this button natively on the controller. diff --git a/versioned_docs/version-0.7.6/installation.mdx b/versioned_docs/version-0.7.6/installation.mdx new file mode 100644 index 0000000..2f3c2a3 --- /dev/null +++ b/versioned_docs/version-0.7.6/installation.mdx @@ -0,0 +1,49 @@ +--- +title: Firmware Installation +# tags: +# - +pagination_next: null +pagination_prev: null +description: "How to install firmware onto devices" +--- + +# Firmware Installation + +## General Process + +> If the device has been previously used for something other than GP2040-CE, you will need to follow the [Flash Nuke Process](#flash-nuke-process) below first to clear the memory entirely in preparation for installing GP2040-CE. + +1. Download the compiled firmware (.uf2 file) for your device +2. Unplug your device. +3. Put your device into Bootsel/USB mode. A new removable drive named `RPI-RP2` should appear in your file explorer. +4. Drag and drop the compiled firmware (.uf2 file) downloaded in step 1 into the removable drive +5. Wait for the device to automatically disconnect. + +Congratulations! The board is now running the GP2040-CE firmware and will appear as a controller on your computer. You can test it in a game, using the website like [Gamepad Tester](https://gamepad-tester.com/), or in another application such as the Steam Input Overlay. + +If you would like to customize your device, check out the built-in [Web Configurator](./web-configurator/web-configurator.mdx). + +### Example Process (Raspberry Pi Pico) + +**The instructions will slightly vary based on your device. These instructions are for a Raspberry Pi Pico.** + +1. Download the latest `GP2040-CE_X.X.X_Pico.uf2` file for the Raspberry Pi Pico from the [Download](./downloads/download-page.mdx) page. +2. Unplug your Pico. +3. Hold the BOOTSEL button on the Pico and plug into your computer. +4. Drag and drop the `GP2040-CE_X.X.X_Pico.uf2` file into the removable drive. +5. Wait for the Pico to automatically disconnect. + +## Flash Nuke process + +:::caution + +_Warning_ - Flash nuking your board wipes all your custom configuration for pin mappings and add-ons. + +::: + +1. Download the [flash_nuke.uf2 file](./downloads/flash_nuke.uf2) +2. Boot into bootsel/RPI drive (multiple methods to do so) +3. Drag [flash_nuke.uf2 file](./downloads/flash_nuke.uf2) onto the drive +4. **_Wait for the drive to disconnect and reconnect without unplugging_** +5. Drag your firmware onto the RPI drive and wait for disconnect +6. Check that the controller connects using this [gamepad tester](https://hardwaretester.com/gamepad) and pressing a button. diff --git a/versioned_docs/version-0.7.6/introduction.mdx b/versioned_docs/version-0.7.6/introduction.mdx new file mode 100644 index 0000000..d7d2be3 --- /dev/null +++ b/versioned_docs/version-0.7.6/introduction.mdx @@ -0,0 +1,41 @@ +--- +id: introduction +title: Introduction +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Introduction to GP2040-CE" +--- + +# Introduction + +Your controller has a board in it that processes your inputs and translates that to commands that your computer or game console understands. GP2040-CE is firmware that facilitates this process, providing compatibility with a number of consoles and input modes. In addition to this, there are many other useful features through the Web Configurator and the system of community developed add-ons. + +Not sure if your board can run GP2040-CE? As long as it has a RP2040 microprocessor, it's likely that it can. If your current controller board does not, there are a large number of hobbyist boards from the community that do support GP2040-CE. + +## Overview + +This section of the documentation is primarily geared towards end users who are looking to use their controllers without diving into the minutiae of configuring and customizing their device. Given a controller, how to get to using it as soon as possible. It consists of the following sections. + +- [Firmware Installation](./installation.mdx "GP2040-CE | Firmware Installation"): In the event that you need to install firmware (e.g. setting up a new board, updating to a new version, or as part of troubleshooting) +- [Usage](./usage.mdx "GP2040-CE | Usage"): Descriptions of the various features and functions available for use with GP2040-CE +- [Hotkeys](./hotkeys.mdx "GP2040-CE | Hotkeys"): A list of the various hotkey shortcuts available for use with GP2040-CE. + +:::note + +The actual buttons for the shortcut may differ as they are customizable and can be set by your device's vendor or seller. + +::: + +- [Web Configurator](./web-configurator/web-configurator.mdx): The built-in web-based configuration application to changes various settings related to firmware operations and features. +- [RGB LED](./rgb-leds.mdx): A list of the various hotkey shortcuts to control RGB LED animations, color patterns, and behaviors. +- [Getting Help/Support](./getting-help-support.mdx "GP2040-CE | Getting Help"): How to get help in the event of issues or malfunction + +## Additional Resources + +If you feel ready to start customizing your controller's functions, have a look at the [`Web Configurator`](./web-configurator/web-configurator.mdx) section of documentation. + +If you want to build your own device, check out the `Controller Building` section in the sidebar. + +If you want to go even deeper into the firmware to compile your own configuration of the firmware or even contributing to the code, have a look at the [`Contribute`](./development/contribution-guide.mdx) section of the documentation. diff --git a/versioned_docs/version-0.7.6/rgb-leds.mdx b/versioned_docs/version-0.7.6/rgb-leds.mdx new file mode 100644 index 0000000..271cb0b --- /dev/null +++ b/versioned_docs/version-0.7.6/rgb-leds.mdx @@ -0,0 +1,80 @@ +--- +title: RGB LEDs +# tags: +# - +pagination_next: null +pagination_prev: null +description: "How to use addressable RGB LEDs to your controller. Hotkeys and animation themes." +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; + +# RGB LEDs + +Select the button labels to be displayed in the usage guide: + + + +## Hardware Requirements + +GP2040-CE requires that addressable RGB LEDs be used for nearly all LED functions. + +The exception to this are [Player LEDs](./add-ons/player-number.mdx), which can use pulse width modulation (PWM) to vary the brightness of the LEDs. + +## RGB LED Hotkeys + +| Hotkey | Description | +| -------------------------------------- | ---------------------- | +| | Next Animation | +| | Previous Animation | +| | Brightness Up | +| | Brightness Down | +| | LED Parameter Up | +| | LED Parameter Down | +| | Pressed Parameter Up | +| | Pressed Parameter Down | + +:::note + +The `LED Parameter` hotkeys may affect color, speed or theme depending on the current RGB LED animation. The `Pressed Parameter` options will change the colors/effects for the on-press animations. + +::: + +## RGB LED Animations + +The following animations are available: + +| Name | Description | LED Parameter | +| ------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| Off | Turn off per-button RGB LEDs | - | +| Static Color | Sets all LEDs to the same color | Cycle through colors: _Red_, _Orange_, _Yellow_, _Lime Green_, _Green_, _Seafoam_, _Aqua_, _Sky Blue_, _Blue_, _Purple_, _Pink_, _Magenta_ | +| Rainbow Cycle | All LEDs cycle through the color wheel displaying the same color | Adjust animation speed | +| Rainbow Chase | A fading, rainbow cycling lines travels across the LED chain | Adjust animation speed | +| Static Theme | Set the LEDs to a pre-defined static theme | Cycle through themes, see [RGB LED Static Themes](#rgb-led-static-themes) for details. | + +## RGB LED Static Themes + +| Name | Preview | +| ------------------------ | ------------------------------------------------------------------------------- | +| **Static Rainbow** | ![Static Rainbow](./assets/images/led-themes/static-rainbow.png) | +| **Xbox** | ![Xbox](./assets/images/led-themes/xbox.png) | +| **Xbox (All)** | ![Xbox (All)](./assets/images/led-themes/xbox-all.png) | +| **Super Famicom** | ![Super Famicom](./assets/images/led-themes/super-famicom.png) | +| **Super Famicom (All)** | ![Super Famicom (All)](./assets/images/led-themes/super-famicom-all.png) | +| **PlayStation** | ![Xbox](./assets/images/led-themes/playstation.png) | +| **PlayStation (All)** | ![Xbox (All)](./assets/images/led-themes/playstation-all.png) | +| **Neo Geo Straight** | ![Neo Geo Classic](./assets/images/led-themes/neogeo-straight.png) | +| **Neo Geo Curved** | ![Neo Geo Curved](./assets/images/led-themes/neogeo-curved.png) | +| **Neo Geo Modern** | ![Neo Geo Modern](./assets/images/led-themes/neogeo-modern.png) | +| **Six Button Fighter** | ![Six Button Fighter](./assets/images/led-themes/six-button-fighter.png) | +| **Six Button Fighter +** | ![Six Button Fighter +](./assets/images/led-themes/six-button-fighter-plus.png) | +| **Street Fighter 2** | ![Street Fighter 2](./assets/images/led-themes/street-fighter-2.png) | +| **Tekken** | ![Tekken](./assets/images/led-themes/tekken.png) | +| **Guilty Gear Type-A** | ![Guilty Gear Type-A](./assets/images/led-themes/guilty-gear-type-a.png) | +| **Guilty Gear Type-B** | ![Guilty Gear Type-B](./assets/images/led-themes/guilty-gear-type-b.png) | +| **Guilty Gear Type-C** | ![Guilty Gear Type-C](./assets/images/led-themes/guilty-gear-type-c.png) | +| **Guilty Gear Type-D** | ![Guilty Gear Type-D](./assets/images/led-themes/guilty-gear-type-d.png) | +| **Guilty Gear Type-E** | ![Guilty Gear Type-E](./assets/images/led-themes/guilty-gear-type-e.png) | +| **Fightboard** | ![Fightboard](./assets/images/led-themes/fightboard.png) | diff --git a/versioned_docs/version-0.7.6/snippets/_add-usb-host-port.mdx b/versioned_docs/version-0.7.6/snippets/_add-usb-host-port.mdx new file mode 100644 index 0000000..ae80f4e --- /dev/null +++ b/versioned_docs/version-0.7.6/snippets/_add-usb-host-port.mdx @@ -0,0 +1,84 @@ +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + + + + +### Example Wiring + +:::note + +While this example wiring guide uses a Raspberry Pi Pico, the general principle applies to **ALL** RP2040 based boards. + +::: + +![USB Host Wiring Diagram](../assets/images/gpc-add-ons-example-wiring-diagram-usb-host-port.png) + +- `VCC` - Connects to 5V power (Example: VBUS on the Raspberry Pi Pico) +- `D+` - Connects to the `D+` GPIO Pin above, set in the Web Configurator. (Example: GPIO0 on the Raspberry Pi Pico) +- `D-` - Connects to the `D-` GPIO Pin above, automatically set based on D+. (Example: GPIO1 on the Raspberry Pi Pico) +- `GND` - Connects to a ground pin, any `GND` pin will work. (Example: GND on the Raspberry Pi Pico) + +
+ +:::note + +For `D+` and `D-`, any set of GPIO pins can be used from the RP2040. However, there is a requirement that `D-` GPIO must immediately precede or follow `D+` (i.e. `D+` = GPIO Pin X -> `D-` must be X+1 or X-1). + +::: + +
+ + +### Example Wiring + +Step 1: Take the USB passthrough board and place it on a clean surface. + +--- + +Step 2: Take one of the cables and place it on a clean surface. + +:::note + +The cables are JST 2.00mm 2pin same direction cables that are 10cm (100mm) in length. They can be made by hand or purchased directly from a variety of sellers on AliExpress. If you plan on installing the USB passthrough board somewhere else in your case you may want to get longer cables. For this install guide you will need three of the cables. + +::: + +--- + +Step 3: Connect one end of the first JST 2.00mm 2pin cable into the socket labeled 5V IN on the USB passthrough board. + +:::note + +The direction of the cable does not matter as they are all same direction cables. + +::: + +--- + +Step 4: Connect the other end of the first JST 2.00mm 2pin cable to the socket labeled 5v OUT on the RP2040 Advanced Breakout Board. + +--- + +Step 5: Connect one end of the second JST 2.00mm 2pin cable into the socket labeled D+ OUT on the USB passthrough board. + +--- + +Step 6: Connect the other end of the second JST 2.00mm 2pin cable to the socket labeled OPTION 5 on the RP2040 Advanced Breakout Board. + +:::note + +You can use other option sockets for this as well, but for the sake of this installation guide we will be using Option 5 and Option 6. + +::: + +--- + +Step 7: Connect one end of the third JST 2.00mm 2pin cable into the socket labeled D- OUT on the USB passthrough board. + +--- + +Step 8: Connect the other end of the third JST 2.00mm 2pin cable to the socket labeled OPTION 6 on the RP2040 Advanced Breakout Board. + + +
diff --git a/versioned_docs/version-0.7.6/snippets/_deprecated-add-on.mdx b/versioned_docs/version-0.7.6/snippets/_deprecated-add-on.mdx new file mode 100644 index 0000000..d96f7e1 --- /dev/null +++ b/versioned_docs/version-0.7.6/snippets/_deprecated-add-on.mdx @@ -0,0 +1,5 @@ +:::warning + +This add-on will soon be deprecated and will be removed in the next version release. Once that occurs, this page will be removed and the add-on added to the [list of deprecated add-ons](../web-configurator/menu-pages/08-add-ons-configuration.mdx#deprecated-add-ons). + +::: diff --git a/versioned_docs/version-0.7.6/snippets/_hotkey-note.mdx b/versioned_docs/version-0.7.6/snippets/_hotkey-note.mdx new file mode 100644 index 0000000..8ec79c6 --- /dev/null +++ b/versioned_docs/version-0.7.6/snippets/_hotkey-note.mdx @@ -0,0 +1,5 @@ +:::note Configurable Hotkeys + +If the hotkey combination is not present in or differs from the documentation, please refer to the Web Configurator on your device to verify which input combinations are assigned to each hotkey. + +::: diff --git a/versioned_docs/version-0.7.6/snippets/_i2c-block-table.mdx b/versioned_docs/version-0.7.6/snippets/_i2c-block-table.mdx new file mode 100644 index 0000000..9ad93b2 --- /dev/null +++ b/versioned_docs/version-0.7.6/snippets/_i2c-block-table.mdx @@ -0,0 +1,10 @@ +| SDA | SCL | I2C Block | SDA | SCL | I2C Block | +| :--: | :--: | :-------- | :--: | :--: | :-------- | +| GP00 | GP01 | **I2C0** | GP02 | GP03 | **I2C1** | +| GP04 | GP05 | **I2C0** | GP06 | GP07 | **I2C1** | +| GP08 | GP09 | **I2C0** | GP10 | GP11 | **I2C1** | +| GP12 | GP13 | **I2C0** | GP14 | GP15 | **I2C1** | +| GP16 | GP17 | **I2C0** | GP18 | GP19 | **I2C1** | +| GP20 | GP21 | **I2C0** | GP22 | GP23 | **I2C1** | +| GP24 | GP25 | **I2C0** | GP26 | GP27 | **I2C1** | +| GP28 | GP29 | **I2C0** | ---- | ---- | ---- | diff --git a/versioned_docs/version-0.7.6/snippets/_input-table-mini-classic.mdx b/versioned_docs/version-0.7.6/snippets/_input-table-mini-classic.mdx new file mode 100644 index 0000000..f21b23c --- /dev/null +++ b/versioned_docs/version-0.7.6/snippets/_input-table-mini-classic.mdx @@ -0,0 +1,16 @@ +| GP2040-CE | Sega Genesis
MegaDrive Mini | NEOGEO mini | PC Engine
Turbografx 16 Mini | EGRET II Mini | ASTROCITY Mini | Playstation Classic | +| --------- | ---------------------------------- | ----------- | ----------------------------------- | ------------- | -------------- | ------------------- | +| B1 | A | B | 1 | A | A | Cross | +| B2 | B | D | 2 | B | B | Circle | +| B3 | X | A | - | D | D | Square | +| B4 | Y | C | - | E | E | Triangle | +| L1 | - | - | - | - | - | L1 | +| R1 | Z | - | - | F | F | R1 | +| L2 | - | - | - | - | - | L2 | +| R2 | C | - | - | C | C | R2 | +| S1 | Mode | Select | Start | Start | Credit | Start | +| S2 | Start | Start | Run | Credit | Start | Select | +| L3 | - | - | - | - | - | - | +| R3 | - | - | - | - | - | - | +| A1 | - | - | - | Menu | - | - | +| A2 | - | - | - | - | - | - | diff --git a/versioned_docs/version-0.7.6/snippets/_input-table.mdx b/versioned_docs/version-0.7.6/snippets/_input-table.mdx new file mode 100644 index 0000000..2d69a66 --- /dev/null +++ b/versioned_docs/version-0.7.6/snippets/_input-table.mdx @@ -0,0 +1,16 @@ +| GP2040-CE | XInput
Xbox One | Switch | PS4 | PS3 | DirectInput | Arcade | +| --------- | --------------------- | ------- | -------- | -------- | ----------- | ------ | +| B1 | A | B | Cross | Cross | 2 | K1 | +| B2 | B | A | Circle | Circle | 3 | K2 | +| B3 | X | Y | Square | Square | 1 | P1 | +| B4 | Y | X | Triangle | Triangle | 4 | P2 | +| L1 | LB | L | L1 | L1 | 5 | P4 | +| R1 | RB | R | R1 | R1 | 6 | P3 | +| L2 | LT | ZL | L2 | L2 | 7 | K4 | +| R2 | RT | ZR | R2 | R2 | 8 | K3 | +| S1 | Back | Minus | Share | Select | 9 | Coin | +| S2 | Start | Plus | Options | Start | 10 | Start | +| L3 | LS | LS | L3 | L3 | 11 | LS | +| R3 | RS | RS | R3 | R3 | 12 | RS | +| A1 | Guide | Home | PS | PS | 13 | Home | +| A2 | - | Capture | Touchpad | - | 14 | - | diff --git a/versioned_docs/version-0.7.6/snippets/_pin-options-USB-Host.mdx b/versioned_docs/version-0.7.6/snippets/_pin-options-USB-Host.mdx new file mode 100644 index 0000000..f98df5b --- /dev/null +++ b/versioned_docs/version-0.7.6/snippets/_pin-options-USB-Host.mdx @@ -0,0 +1,9 @@ +- `D+` - The GPIO Pin used to carry Data Plus between the USB Host Port and RP2040 +- `D-` - The GPIO Pin used to carry Data Minus between the USB Host Port and RP2040. This cannot be set and will be automatically determined from `D+`. +- `5V Power (optional)` - The GPIO Pin used to enable 5V power to the host port on the board. + +:::note 5V Power + +This is only applicable to a small number of boards (e.g. Adafruit RP2040 Feather USB Host) and most boards do not require this to be set. + +::: diff --git a/versioned_docs/version-0.7.6/snippets/_spi-block-table.mdx b/versioned_docs/version-0.7.6/snippets/_spi-block-table.mdx new file mode 100644 index 0000000..cd6a835 --- /dev/null +++ b/versioned_docs/version-0.7.6/snippets/_spi-block-table.mdx @@ -0,0 +1,10 @@ +| RX | CS | CLK | TX | SPI Block | +| :--: | :--: | :--: | :--: | :-------: | +| GP00 | GP01 | GP02 | GP03 | **SPI0** | +| GP04 | GP05 | GP06 | GP08 | **SPI0** | +| GP08 | GP09 | GP10 | GP11 | **SPI1** | +| GP12 | GP13 | GP14 | GP15 | **SPI1** | +| GP16 | GP17 | GP18 | GP19 | **SPI0** | +| GP20 | GP21 | GP22 | GP23 | **SPI0** | +| GP24 | GP25 | GP26 | GP27 | **SPI1** | +| GP28 | GP29 | ---- | ---- | **SPI1** | diff --git a/versioned_docs/version-0.7.6/usage.mdx b/versioned_docs/version-0.7.6/usage.mdx new file mode 100644 index 0000000..eea7114 --- /dev/null +++ b/versioned_docs/version-0.7.6/usage.mdx @@ -0,0 +1,141 @@ +--- +title: GP2040-CE Usage +# tags: +# - +pagination_next: null +pagination_prev: null +description: "General How-To on using GP2040-CE" +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import InputTable from "./snippets/_input-table.mdx"; +import InputTableMiniClassic from "./snippets/_input-table-mini-classic.mdx"; + +# GP2040-CE Usage + +Select the button labels to be displayed in the usage guide: + + +
+ +:::caution + +The v0.5+ release has some breaking changes to boards other than the Raspberry Pi Pico. If you are using such a board, do not update from an older version unless you have a backup .uf2 from a known good version, or you know what you're doing. + +::: + +## Buttons + +GP2040-CE uses generic button labeling for gamepad state, which is then converted to the appropriate input type before sending. This table provides a map of GP2040-CE buttons to the supported input types and layouts: + + + + + + + + + + + + + + + + + +If your controller is missing dedicated buttons for any specific inputs, check the [Hotkeys page](./hotkeys.mdx) on how to map a button combination that will emulate those missing inputs. + +:::note + +Unlike other controllers, Keyboard gets different keys for directional buttons. You can change the key mappings for Keyboard mode in [Webconfig mode > Configuration > Keyboard Mapping](./web-configurator/menu-pages/04-keyboard-mapping.mdx) + +::: + +| Direction | Keyboard | +| --------- | ----------- | +| Up | Up Arrow | +| Down | Down Arrow | +| Left | Left Arrow | +| Right | Right Arrow | + +## Bootsel Mode + +Bootsel Mode is the state of the board where firmware can be flashed onto the board. You will need to use this whenever there is an update or as part of the troubleshooting process. + +You can boot into Bootsel Mode by either holding buttons while plugging in the controller, by booting into the Web Configurator and then restarting in Bootsel Mode, or by holding together for five seconds while the controller is plugged in. There is no way to leave Bootsel mode once activated other than by flashing new firmware or by unplugging the device. + +Generally, there is a Bootsel button somewhere on the board. This is often an exposed button on the PCB or a button inside the controller that requires either a pin to press or disassembly of the controller. + +:::note + +There are a number of controllers that elect not to include the Bootsel button. In these instances, you will need to locate the placement of the button and use conductor to connect the 2 sides of the contacts or pads together while plugging in or booting the controller. + +::: + +## WebConfig Mode + +WebConfig Mode is the state of the board where built-in web browser-based configuration application is launched. From here, you can customize and configure your controller as needed. For more information, click [here](./web-configurator/web-configurator.mdx) for more information. + +You can boot into WebConfig Mode by holding the button while plugging in the controller or by holding for five seconds while the controller is plugged in. Holding this same combination again for five seconds while in webconfig mode will swap the device back to the previously used controller mode. + +## Input Modes + +GP2040-CE is compatible with a number of systems and input modes. The specific input modes assigned to 8 buttons when held is configurable in the [Web Configurator](./web-configurator/menu-pages/01-settings.mdx#boot-input-modes). + +However, there are default input modes assigned in precompiled firmware. To change input modes, **hold one of the following buttons as the controller is plugged in:** + +| Primary Input Mode | Button Held | +| :----------------- | :------------------------: | +| Nintendo Switch | | +| XInput | | +| PS3/DirectInput | | +| PS4 | | +| Xbox One | | +| Keyboard | | +| Original XBox | `Unassigned` | + +| Mini/Classic Consoles | Button Held | +| :--------------------------- | :----------: | +| Sega Genesis/MegaDrive Mini | `Unassigned` | +| NEOGEO mini | `Unassigned` | +| PC Engine/Turbografx 16 Mini | `Unassigned` | +| EGRET II Mini | `Unassigned` | +| ASTROCITY Mini | `Unassigned` | +| Playstation Classic | `Unassigned` | + +:::note + +Input mode is saved across power cycles. + +::: + +## Hotkeys + +A number of useful hotkeys exist that change the functionality of GP2040 without needing to access the Web Configurator. Commonly used hotkeys include changing the directions to emulate a digital DPad, Left analog joystick, Right analog joystick or to change [Simultaneous Opposite Cardinal Direction (SOCD)](https://glossary.infil.net/?t=SOCD) cleaning modes. Different SOCD cleaning modes will ensure the controller obeys certain directional input rules when sending inputs to the computer or game console. + +A number of hotkeys are enabled by default and if you are encountering issues with unexpected behavior on your controller, verify that you did not accidentally trigger a hotkey. + +| Hotkeys Enabled By Default | Inputs | +| :------------------------------------------------- | :-------------------------------------- | +| [Home Button](hotkeys.mdx#home-button) | | +| [Dpad Digital](hotkeys.mdx#dpad-digital) | | +| [Dpad Left Analog](hotkeys.mdx#dpad-left-analog) | | +| [Dpad Right Analog](hotkeys.mdx#dpad-right-analog) | | +| [SOCD Up Priority](hotkeys.mdx#socd-up-priority) | | +| [SOCD Neutral](hotkeys.mdx#socd-neutral) | | +| [SOCD Last Wins](hotkeys.mdx#socd-last-win) | | + +:::note + +Selected D-Pad mode and SOCD cleaning mode are saved across power cycles. + +::: + +## Add-Ons and Additional Features + +There are a number of add-ons that expand the functionality of GP2040-CE, such as [analog joystick emulation](./add-ons/analog.mdx) and [turbo functions](./add-ons/turbo.mdx). Due to the large number of add-ons created by the community, they are located in a separate documentation page. Navigate to Add-Ons page for more information on the individual add-ons. diff --git a/versioned_docs/version-0.7.6/web-configurator/community-splash-screens.mdx b/versioned_docs/version-0.7.6/web-configurator/community-splash-screens.mdx new file mode 100644 index 0000000..b1bac58 --- /dev/null +++ b/versioned_docs/version-0.7.6/web-configurator/community-splash-screens.mdx @@ -0,0 +1,160 @@ +--- +title: Community Splash Screens +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Community created splash screens for use with an OLED screen" +--- + +export const Image = ({ name, path }) => { + return ( +
+ {name} +
{name}
+
+ ); +}; + +# Community Splash Screens + +Here is a collection of community created splash screens that can be used with an optional OLED screen. Upload the image using the web configurator to set it up. + +All images been formatted to 128x64 in black / white color. + +## GP2040-CE + +
+ + + + + + + +
+ +## Vendors + +
+ + + +
+ +## Video Games + +
+ + + + + + + + +
diff --git a/versioned_docs/version-0.7.6/web-configurator/menu-pages/00-home.mdx b/versioned_docs/version-0.7.6/web-configurator/menu-pages/00-home.mdx new file mode 100644 index 0000000..4389ff6 --- /dev/null +++ b/versioned_docs/version-0.7.6/web-configurator/menu-pages/00-home.mdx @@ -0,0 +1,14 @@ +--- +title: Home +# tags: +# - +# pagination_next: null +pagination_prev: null +description: "Home page for the GP2040-CE Web Configurator" +--- + +# Web Configurator - Home + +![GP2040-CE Configurator - Home](../../assets/images/gpc-home.png) + +Here you can see the current version of your firmware and the latest version available on GitHub in the releases section. If a firmware update is available, a link to that release will appear. diff --git a/versioned_docs/version-0.7.6/web-configurator/menu-pages/01-settings.mdx b/versioned_docs/version-0.7.6/web-configurator/menu-pages/01-settings.mdx new file mode 100644 index 0000000..fb481c7 --- /dev/null +++ b/versioned_docs/version-0.7.6/web-configurator/menu-pages/01-settings.mdx @@ -0,0 +1,57 @@ +--- +title: Settings +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Select the input mode, DPad Mode, SOCD Cleaning Mode, etc. and configure Hotkey Shortcuts" +--- + +# Settings + +![GP2040-CE Configurator - Settings](../../assets/images/gpc-settings.png) + +Here you can select the basic settings which are normally available via hotkeys. + +- `Input Mode` - Choose the main input mode (XINPUT, DINPUT, Switch, PS4, HID-Keyboard) this connected device will boot into when powered on. This selection will persist through unplug and plugging back in the controller. +- `D-Pad Mode` - Choose the default D-Pad mode (D-Pad, Left Stick or Right Stick). +- `SOCD Cleaning Mode` - Choose the default SOCD Cleaning Mode (Neutral, Last Win, First Win, OFF). Please note that PS4, PS3 and Nintendo Switch modes do not support setting SOCD to off and will default to Neutral SOCD. +- `Forced Setup Mode` - Allows you to lock out Input Mode, the ability to enter Web-Config or both. Enabling a web-config lockout will require you to nuke and reload the firmware if you wish to make further changes. +- `4-Way Joystick Mode` - Enables 4-Way Joystick mode which will prevent cardinal directions. When a second cardinal direction input is received, the gamepad direction will change, similar to [SOCD Last Win](../../hotkeys.mdx#socd-last-win). +- `Profile Number` - Enables different GPIO pin mappings per profile. Changeable through the Web-Config or hotkeys. +- `Debounce Delay in milliseconds` - Timeframe where the firmware will ignore additional inputs to prevent switch noise from accidentally triggering unintended inputs. + +## Additional PS4 Settings + +![GP2040-CE Configurator - Additional PS4 Settings](../../assets/images/gpc-settings-ps4.png) + +- `Switch Touchpad and Share` - Share will now be mapped to A2 rather than S1, Touchpad will be now mapped to S1 rather than A2 +- `PS4 Report Speed Hack` - Disables report counters in the PS4/PS5 reports. This decreases PS4/PS5 latency, but is known to have instability in small number of games. Disable this setting if you are encountering stuck inputs. +- ` Controller Mode` - Choose what PS4 mode the device will use, either `Controller` or `Arcade Stick`. + - `Controller` - The device will function as a native PS4 controller. Primarily intended for use with the [PS4 Mode](../../add-ons/ps4-mode.mdx) add-on and will require the various files be uploaded onto the controller to properly function and avoid the [8-Minute Timeout](../../faq/faq-console-compatibility.mdx#what-is-the-8-minute-timeout). + - `Arcade Stick` - The device will function as a licensed PS4 arcade stick, provided that an authentication device is connected and the PS Passthrough add-on is enabled and properly configured. It will also work for the PS5 UI, any PS4 games on the PS5 as well as PS5 titles that support legacy controllers. + +:::info + +If you wish to play compatible PS5 games, you will need to choose `Arcade Stick` and thus have an authentication device connected and the PS Passthrough add-on enabled and properly configured via a USB passthrough port. + +::: + +## Boot Input Modes + +![GP2040-CE Configurator - Input Boot Modes](../../assets/images/gpc-input-boot-modes.png) + +For each of the buttons listed in the menu, you can assign a different input mode to enter while holding that button during boot (e.g. when plugging in the controller or immediately after resetting the controller). + +For the list of input modes to select from, see [Input Modes](../../usage.mdx#input-modes). + +## Hotkey Settings + +![GP2040-CE Configurator - Hotkey Settings](../../assets/images/gpc-hotkey-settings.png) + +An arbitrary number of buttons and directions, plus the optional Function (Fn) button, can be used to define +desired hotkey actions. Select `Fn` if desired, plus one or more buttons/directions, and associate them with a +hotkey action. The default hotkeys can be modified or removed, and new ones added, up to 12 in total. + +The available hotkey actions will expand over time. We may also expand the number of hotkeys available to +configure in the future. For a list of the available hotkey actions, see [Hotkeys](../../hotkeys.mdx). diff --git a/versioned_docs/version-0.7.6/web-configurator/menu-pages/02-pin-mapping.mdx b/versioned_docs/version-0.7.6/web-configurator/menu-pages/02-pin-mapping.mdx new file mode 100644 index 0000000..43ff11e --- /dev/null +++ b/versioned_docs/version-0.7.6/web-configurator/menu-pages/02-pin-mapping.mdx @@ -0,0 +1,59 @@ +--- +title: Pin Mapping +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Map GPIO pins from RP2040 to gamepad inputs in GP2040-CE" +--- + +# Pin Mapping + +![GP2040-CE Configurator - Pin Mapping](../../assets/images/gpc-pin-mapping.png) + +Here you can remap the GP2040-CE buttons to different GPIO pins on the RP2040 chip. This can be used to simply remap buttons or bypass a GPIO pin that may have issues on your device. + +The following options are available for assignment to each GPIO Pin. + +- Standard Gamepad inputs found in [Buttons](../../usage.mdx#buttons) +- [Dual Direction Input](../../add-ons/dual-direction-input.mdx) Up, Down, Left and Right +- [D-Pad Mode](../../add-ons/joystick-selection-slider.mdx): Digital, Left Stick, and Right Stick +- [Up Priority SOCD Cleaning](../../hotkeys.mdx#socd-up-priority) +- [Neutral SOCD Cleaning](../../hotkeys.mdx#socd-neutral) +- [Last Win SOCD Cleaning](../../hotkeys.mdx#socd-last-win) +- [First Wins SOCD Cleaning](../../hotkeys.mdx#socd-first-wins) +- [SOCD Cleaning Off](../../hotkeys.mdx#socd-cleaning-off) + +:::note + +Options are not limited to a single GPIO pin assignment and can be assigned multiple times (e.g. GPIO pins 0-29 can all be assigned to Up, if desired). + +::: + +## Mapping Buttons With :video_game: + +![GP2040-CE Configurator - Pin Mapping - "Map buttons with..." ](../../assets/images/gpc-pin-mapping-map-buttons.png) + +If you do not know what pins are mapped to which button on your device, there is a tool available to help. Click on the button shown above and follow the prompt. It will ask you to press each standard gamepad input found in [Buttons](../../usage.mdx#buttons) one at a time. + +![GP2040-CE Configurator - Pin Mapping - Prompt](../../assets/images/gpc-pin-mapping-map-buttons-prompt.png) + +- If you do not wish to map a specific input, you can click `Skip Button` and proceed. +- If you do not need to map any more inputs, click `Stop Capture`. + +## Profiles + +You can configure profiles that will change the GPIO to GP2040-CE button mappings based on what profile number you have set. This means that you can have button layouts for different use cases and change between them without the need to enter the Web Configurator and remap GPIO pins. + +The profile number either using the Web Configurator or using a [hotkey shortcut](../../hotkeys.mdx#load-profile--1-4). + +:::info + +At this time, profiles are limited to changing GPIO pin assignment can cannot be used to change other settings and add-ons that are not directly related to GPIO pin assignment and available to set. This includes, but is not limited to, settings and add-ons such as + +- Keyboard Mapping Assignments +- Tilt Input +- Wii Extension +- SNES Extension +- Focus Mode +- Keyboard Host Button-to-Key mapping diff --git a/versioned_docs/version-0.7.6/web-configurator/menu-pages/03-peripheral-mapping.mdx b/versioned_docs/version-0.7.6/web-configurator/menu-pages/03-peripheral-mapping.mdx new file mode 100644 index 0000000..c707641 --- /dev/null +++ b/versioned_docs/version-0.7.6/web-configurator/menu-pages/03-peripheral-mapping.mdx @@ -0,0 +1,74 @@ +--- +title: Peripheral Mapping +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Map GPIO pins from RP2040 and configure settings for peripherals in GP2040-CE such as I2C and USB Host Ports" +--- + +import I2CTable from "../../snippets/_i2c-block-table.mdx"; +import SPITable from "../../snippets/_spi-block-table.mdx"; + +# Peripheral Mapping + +![GP2040-CE Configurator - Peripheral Mapping](../../assets/images/gpc-peripheral-mapping.png) + +Here you can assign the GPIO pins necessary for using peripherals and add-ons that require I2C and a USB host port. These include, but are not limited to + +- [OLED Display](./07-display-configuration.mdx) +- [I2C Analog ADS1219](../../add-ons/i2c-analog-ads1219.mdx) +- [PS Passthrough Add-on](../../add-ons/ps-passthrough.mdx) +- [Xbox One Passthrough Add-on](../../add-ons/xbox-one-passthrough.mdx) +- [Keyboard Host Add-on](../../add-ons/keyboard-host.mdx) + +:::info + +Click on the (i) tool tip in the Web Configurator for more information on the various settings + +::: + +## I2C + +Each I2C block, `I2C0` and `I2C1`, has separate settings and each must be configured before using the respective I2C block. These must be configured properly before any feature or add-on that uses I2C can be used. + +- `Toggle` - This will toggle a specific I2C block on and off +- `SDA` - The GPIO pin used for Serial Data (SDA). +- `SCL` - The GPIO pin used for Serial clock (SCL). +- `Speed` - Sets the speed of I2C communication. + - `Normal - 100000` + - `Fast - 400000` + - `Fast Plus - 800000` + +The SDA and SCL pins must match a pair found on the table below for each I2C block. If this is not configured correctly, your I2C devices will not function properly. + + + +## SPI + +Each SPI block, SPI0 and SPI1, has separate settings and must be configured before using the respective SPI block. These must be configured properly before any feature or add-on that uses SPI can be used. + +- `Toggle` - This will toggle a specific SPI block on and off +- `RX` - The GPIO pin used for MISO, to receive data. +- `CS` - The GPIO pin used for Chip Select (CS). +- `SCK` - The GPIO pin used for Serial Clock (SCK). +- `TX` - The GPIO pin used for MOSI, to send data. + +The pins must match a set found on the table below for each SPI block. If this is not configured correctly, your SPI devices will not function properly. + + + +## USB Host + +- `Toggle` - This will toggle the USB Host Port on and off +- `D+` - The GPIO Pin used to carry Data Plus between the USB Host Port and RP2040 +- `Enable 5V` - The GPIO Pin used to enable 5V power to the host port on the board. +- `Pin Order` - This setting is based on the order that the Data pins are connected to sequential GPIO pins + - `D+/D-` - The GPIO pins is such that, sequentially, `D+` is immediately followed by `D-` + - `D-/D+` -The GPIO pins is such that, sequentially, `D-` is immediately followed by `D+` + +:::note Enable 5V + +This is only applicable to a small number of boards (e.g. Adafruit RP2040 Feather USB Host) as they possess pins for enabling and disabling 5V port on the USB host port. Most boards do not require this to be set. + +::: diff --git a/versioned_docs/version-0.7.6/web-configurator/menu-pages/04-keyboard-mapping.mdx b/versioned_docs/version-0.7.6/web-configurator/menu-pages/04-keyboard-mapping.mdx new file mode 100644 index 0000000..2ad03c8 --- /dev/null +++ b/versioned_docs/version-0.7.6/web-configurator/menu-pages/04-keyboard-mapping.mdx @@ -0,0 +1,14 @@ +--- +title: Keyboard Mapping +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Map gamepad inputs in GP2040-CE to keyboard keycodes for use in Keyboard Input Mode" +--- + +# Keyboard Mapping + +![GP2040-CE Configurator - Keyboard Mapping](../../assets/images/gpc-keyboard-mapping.png) + +Here you can remap the GP2040-CE buttons to different keyboard keycodes that will be sent to the PC or game console when pressed in Keyboard Mode. diff --git a/versioned_docs/version-0.7.6/web-configurator/menu-pages/05-led-configuration.mdx b/versioned_docs/version-0.7.6/web-configurator/menu-pages/05-led-configuration.mdx new file mode 100644 index 0000000..1a7f99a --- /dev/null +++ b/versioned_docs/version-0.7.6/web-configurator/menu-pages/05-led-configuration.mdx @@ -0,0 +1,60 @@ +--- +title: LED Configuration +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Configure settings for addressable RGB LEDs on your controller" +--- + +# LED Configuration + +If you have a setup with per-button RGB LEDs, they can be configured here. + +## RGB LED Configuration + +![GP2040-CE Configurator - LED Configuration](../../assets/images/gpc-rgb-led-config.png) + +- `Data Pin` - The GPIO pin that will drive the data line for your RGB LED chain. Set to `-1` to disable RGB LEDs. +- `LED Format` - The data format used to communicate with your RGB LEDs. If unsure the default `GRB` value is usually safe. +- `LED Layout` - Select the layout for your controls/buttons. This is used for static themes and some per-button animations. +- `LEDs Per Button` - Set the number of LEDs in each button on your chain. +- `Max Brightness` - Set the maximum brightness for the LEDs. Ranges from 0-255. +- `Brightness Steps` - The number of levels of brightness to cycle through when turning brightness up and down. + +## RGB LED Button Order + +:::note + +Please note that RGB Button LEDs must be the first LEDs configured. They will start at index 0 on the RGB LED strip. + +Also, at the current time, each button can only have one instance in the LED chain. This is the case even if multiple LEDs are assigned per button and multiple buttons are assigned to different GPIO pins. + +::: + +![GP2040-CE Configurator - RGB LED Button Order](../../assets/images/gpc-rgb-led-button-order.png) + +Rearrange the Buttons in the order of the LED Chain. This is different between devices and is determined by manufacturer of the board and LEDs. + +## Player LEDs (XInput) + +Available selections for `Player LED Type` are `None`, `PWM` or `RGB`. + +### PWM Player LEDs + +![GP2040-CE Configurator - PWM Player LEDs](../../assets/images/gpc-pled-pwm.png) + +- `PLED #[1-4] Pin` - The GPIO pin the standard LED is connected to. + +### RGB Player LEDs + +:::note + +Please note that RGB Player LEDs must be located at an index after the RGB LED Buttons on the LED strip! The Web Config interface will suggest a starting index based on the number of LED buttons mapped in [RGB LED Button Order](#rgb-led-button-order) and the select `LEDs Per Button` value. We hope to remove this limitation in the future. + +::: + +![GP2040-CE Configurator - PWM Player LEDs](../../assets/images/gpc-pled-rgb.png) + +- `PLED #[1-4] Index` - The index of the LED module on the RGB strip. +- `RGB PLED Color` - Click the box to reveal a color picker, or manually enter the color. diff --git a/versioned_docs/version-0.7.6/web-configurator/menu-pages/06-custom-led-theme.mdx b/versioned_docs/version-0.7.6/web-configurator/menu-pages/06-custom-led-theme.mdx new file mode 100644 index 0000000..7f1fea9 --- /dev/null +++ b/versioned_docs/version-0.7.6/web-configurator/menu-pages/06-custom-led-theme.mdx @@ -0,0 +1,29 @@ +--- +title: Custom LED Theme +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Create a custom RGB LED theme for your controller with different colors on rest and when pressed" +--- + +# Custom LED Theme + +![GP2040-CE Configurator - Custom LED Theme](../../assets/images/gpc-rgb-led-custom-theme.png) + +- `Enable` - Enables the use of Custom LED Theme. +- `Preview Layout` - Predefined layouts for previewing LED theme. **NOTE:** This is for preview only, does not affect controller operation. +- `Clear All` - Prompts for confirmation to reset the current theme to all buttons black (LEDs off). Make sure you have saved and have a backup if you don't want to lose your customizations. +- `Set All To Color` - Presents a color picker to set all buttons to the same normal or pressed color. +- `Set Gradient` - Sets a horizontal gradient across the action buttons according to the `Preview Layout` selection. +- `Set Pressed Gradient` - Same as `Set Gradient`, but for pressed button state. +- `Save Color` - Save a custom color to the color picker palette. +- `Delete Color` - Deletes a custom color from the color picker palette. Stock colors cannot be deleted. + +:::note + +All saved colors and gradient selections are saved to your browser's local storage. + +::: + +If enabled, the Custom LED Theme will be available as another animation mode and will cycle with the `Previous Animation` and `Next Animation` shortcuts on your controller. You can also use the [Data Backup and Restoration](#data-backup-and-restoration) feature to create and share themes! diff --git a/versioned_docs/version-0.7.6/web-configurator/menu-pages/07-display-configuration.mdx b/versioned_docs/version-0.7.6/web-configurator/menu-pages/07-display-configuration.mdx new file mode 100644 index 0000000..435d2a9 --- /dev/null +++ b/versioned_docs/version-0.7.6/web-configurator/menu-pages/07-display-configuration.mdx @@ -0,0 +1,42 @@ +--- +title: Display Configuration +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Configure settings for an optional OLED display on your controller" +--- + +# Display Configuration + +GP2040-CE supports the use of a display module such as an OLED with a SSD1306, SH1106, or SH1107 display IC. + +![GP2040-CE Configurator - Display Configuration](../../assets/images/gpc-display-config.png) + +## Hardware Options + +- `Enabled` - Turns on/off the display module. +- `I2C Block` - The Pico I2C block that will be used. Set based on pins, refer to table on page. +- `I2C Address` - The I2C address of your device, defaults to the very commonly used `0x3C`. + +## Screen Options + +- `Flip Display` - Allows you to flip or mirror the display in a variety of ways. +- `Invert Display` - Inverts the pixel colors, effectively giving you a negative image when enabled. + +## Layout Options + +:::note Button Layout Combinations + +Be sure to pick left and right layouts that match. Some layout combinations result in overlapping buttons on the screen. + +::: + +- `Button Layout (Left)` - Changes the onscreen layout for the left side of the display and stick. +- `Button Layout (Right)` - Changes the onscreen layout for the right side of the display and stick. +- `Splash Mode` - Enables or disables a splash screen displaying when the unit is turned on. +- `Splash Duration` - Sets the amount of time the splash screen displays for on boot. +- `Display Saver Timeout` - Will cause the display to turn off after the specified number of minutes. Pressing any input will cause the display to turn back on. +- `Choose File` - This will allow you to upload your own image to be used for the splash screen. It is recommend that you use a two color 128x64 image (or one that is sized appropriately for your display). Uploading any other type of image will result in a conversion and sizing of the image automatically. If the image is inverted upon upload, just check off the `Invert` box. + +Check out our collection of great custom splash screens from the community [HERE](../community-splash-screens.mdx) diff --git a/versioned_docs/version-0.7.6/web-configurator/menu-pages/08-add-ons-configuration.mdx b/versioned_docs/version-0.7.6/web-configurator/menu-pages/08-add-ons-configuration.mdx new file mode 100644 index 0000000..6e13cd6 --- /dev/null +++ b/versioned_docs/version-0.7.6/web-configurator/menu-pages/08-add-ons-configuration.mdx @@ -0,0 +1,45 @@ +--- +title: Add-Ons Configuration +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "General overview for community created add-ons that extend functionality on the GP2040-CE feature set" +--- + +# Add-Ons Configuration + +This section is for custom add-ons that can be enabled to expand the functionality of GP2040-CE. Due to the large number of add-ons created by the community, each add-on has its own separate documentation page. + +:::caution + +Some of these add-ons are experimental and not all add-ons are interoperable with all other add-ons. + +::: + +## Available Add-ons + +- [Analog](../../add-ons/analog.mdx) +- [BOOTSEL Button Configuration](../../add-ons/bootsel-button.mdx) +- [Buzzer Speaker](../../add-ons/buzzer-speaker.mdx) +- [Dual Directional Input](../../add-ons/dual-direction-input.mdx) +- [Focus Mode Configuration](../../add-ons/focus-mode.mdx) +- [I2C Analog ADS1219](../../add-ons/i2c-analog-ads1219.mdx) +- [Input History](../../add-ons/input-history.mdx) +- [Input Reverse](../../add-ons/input-reverse.mdx) +- [Joystick Selection Slider](../../add-ons/joystick-selection-slider.mdx) +- [Keyboard Host Configuration](../../add-ons/keyboard-host.mdx) +- [On-board LED Configuration](../../add-ons/on-board-led.mdx) +- [Player Number (X-INPUT ONLY)](../../add-ons/player-number.mdx) +- [PS Passthrough](../../add-ons/ps-passthrough.mdx) +- [PS4 Mode](../../add-ons/ps4-mode.mdx) +- [SNES Input](../../add-ons/snes-input.mdx) +- [SOCD Selection Slider](../../add-ons/socd-selection-slider.mdx) +- [Tilt Input](../../add-ons/tilt-input.mdx) +- [Turbo](../../add-ons/turbo.mdx) +- [Wii Extensions](../../add-ons/wii-extensions.mdx) +- [Xbox One Passthrough](../../add-ons/xbox-one-passthrough.mdx) + +## Deprecated Add-ons + +- Extra Button Configuration diff --git a/versioned_docs/version-0.7.6/web-configurator/menu-pages/09-macros.mdx b/versioned_docs/version-0.7.6/web-configurator/menu-pages/09-macros.mdx new file mode 100644 index 0000000..7019a76 --- /dev/null +++ b/versioned_docs/version-0.7.6/web-configurator/menu-pages/09-macros.mdx @@ -0,0 +1,87 @@ +--- +title: Macro Settings +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Macro settings and how to create input macros" +--- + +# Macro Settings + +Macros are a series or combination of gamepad inputs triggered with a single button or a combination of buttons. + +![GP2040-CE Configurator - Macros](../../assets/images/gpc-macros.png) + +## Macro Options + +`Macro Button Pin` - The GPIO Pin used to activate macros in combination with other inputs when `Uses Button` is enabled and set. + +### Label + +This is the name of the macro and is optional. + +### Activate + +- `Off` - The macro is not available for use. +- `On` - The macro is available for use when triggered by either the GPIO pin or the combination set in [`Uses Button`](#uses-button). + +### Interruptible + +- `Off` - The macro cannot be stopped and will execute all lines until the macro is completed. +- `On` - Any input will stop the current ongoing macro or, if the input is another macro, the interrupting macro trigger will start executing instead. + +:::note Interrupting Macros + +When a macro stops for any reason and are triggered. again, the macro starts again from the beginning. + +::: + +### Exclusive + +- `Off` - Additional inputs from user will be sent as the macro continues to execute, resulting in a blend of macro and user inputs. +- `On` - Filters only the macro inputs through and excludes any additional user gamepad inputs + +:::note + +This option is **only** available when `Interruptible` is enabled. + +::: + +### Show Frames + +- `Off` - The duration in the macro input line editor will appear in milliseconds (ms). +- `On` - The duration in the macro input line editor will appear as a number of frames, assuming 60 frames per second. + +### Uses Button + +- `Off` - This macro is assigned to a GPIO pin on the board and when pressed, the macro will be triggered. +- `On` - This macro is assigned to a button combination of `Macro Button Pin + Input` where the input can be any of the standard gamepad inputs. + +### Trigger Mode + +This describes is how the GPIO pin or the combination set in [`Uses Button`](#uses-button) triggers and repeats the macro. + +- Press - Full press of button triggers the macro once +- Hold Repeat - Holding button to repeatedly triggers macro +- Toggle - Full press of button causes the macro to repeatedly trigger, another full press of the button will stop the macro from repeatedly triggering. + +## Macro Input Line Editor + +Each individual macro has a maximum of 50 lines where each input line has a maximum of 18 gamepad inputs (using all available gamepad inputs). + +![GP2040-CE Configurator - Macro Input Line](../../assets/images/gpc-macros-input-line.png) + +Each input line is composed of the following elements from left to right. + +`Input Line Duration` ms `Inputs` | `Post Input Wait Duration` ms + +- Input Line Duration - The duration that the inputs are held for. (Maximum 4,294,967ms or 268,435 frames) +- Inputs - The inputs to be held during the execution of the input line. +- Post Input Wait Duration - The duration in-between when that input line finishes executing and when the next line will start executing. (Maximum 4,294,967ms or 268,435 frames) + +:::note Deleting Input Lines + +To delete an input line, double-click the "x" button. + +::: diff --git a/versioned_docs/version-0.7.6/web-configurator/menu-pages/10-data-backup-restoration.mdx b/versioned_docs/version-0.7.6/web-configurator/menu-pages/10-data-backup-restoration.mdx new file mode 100644 index 0000000..8276c5c --- /dev/null +++ b/versioned_docs/version-0.7.6/web-configurator/menu-pages/10-data-backup-restoration.mdx @@ -0,0 +1,23 @@ +--- +title: Data Backup and Restoration +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Backup and Restore your controller settings to an external configuration JSON file" +--- + +# Data Backup and Restoration + +![GP2040-CE Configurator - Add-Ons Backup and Restore](../../assets/images/gpc-backup-and-restore.png) + +- `Backup To File` - Allows you to select what to backup to a file (default is all selected). +- `Restore From File` - Allows you to select what to restore from a file (default is all selected). + +:::warning + +As of GP2040-CE version 0.7.6, importing pin mappings from backups made in prior versions will have no effect. If the firmware file for your controller is available, it is recommended to [flash nuke](../../installation.mdx#flash-nuke-process) your controller and flash the GP2040-CE v0.7.6 onto your controllers. + +Do note that this will wipe any and all data your controller had prior to the flash nuke process. + +::: diff --git a/versioned_docs/version-0.7.6/web-configurator/menu-pages/11-danger-zone.mdx b/versioned_docs/version-0.7.6/web-configurator/menu-pages/11-danger-zone.mdx new file mode 100644 index 0000000..9e0f616 --- /dev/null +++ b/versioned_docs/version-0.7.6/web-configurator/menu-pages/11-danger-zone.mdx @@ -0,0 +1,12 @@ +--- +title: DANGER ZONE +# tags: +# - +# pagination_next: null +pagination_prev: null +description: "Perform a firmware reset on your controller" +--- + +# ## DANGER ZONE + +![GP2040-CE Configurator - Reset Settings](../../assets/images/gpc-reset-settings.png) diff --git a/versioned_docs/version-0.7.6/web-configurator/web-configurator.mdx b/versioned_docs/version-0.7.6/web-configurator/web-configurator.mdx new file mode 100644 index 0000000..f6bfb3e --- /dev/null +++ b/versioned_docs/version-0.7.6/web-configurator/web-configurator.mdx @@ -0,0 +1,59 @@ +--- +title: GP2040-CE Web Configurator +# tags: +# - +pagination_next: null +pagination_prev: null +description: "GP2040-CE's Web-Based Configuration Application: Just press S2 on boot and go to http://192.168.7.1" +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; + +# GP2040-CE Web Configurator + +Select the button labels to be displayed in the usage guide: + + +
+ +GP2040-CE contains a built-in web-based configuration application which can be started by holding when plugging your controller into a PC or by holding for five seconds while the controller is plugged in. Then access [http://192.168.7.1](http://192.168.7.1) in a web browser to begin configuration. + +This mode is compatible with Windows, Mac, Linux and SteamOS. Android and iOS devices are not supported at this time. + +:::note + +Linux distributions may need some extra steps to access the web configurator; see [Linux Setup](#linux-setup). + +::: + +## Linux Setup + +When you plug in your controller while holding , you should see it connect in the kernel logs if you run `dmesg`: + +```sh +[ 72.291060] usb 1-3: new full-speed USB device number 12 using xhci_hcd +[ 72.450166] usb 1-3: New USB device found, idVendor=cafe, idProduct=4028, bcdDevice= 1.01 +[ 72.450172] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 +[ 72.450174] usb 1-3: Product: TinyUSB Device +[ 72.450176] usb 1-3: Manufacturer: TinyUSB +[ 72.450177] usb 1-3: SerialNumber: 123456 +[ 72.484285] rndis_host 1-3:1.0 usb0: register 'rndis_host' at usb-0000:06:00.1-3, RNDIS device, 02:02:84:6a:96:00 +[ 72.498630] rndis_host 1-3:1.0 enp6s0f1u3: renamed from usb0 +``` + +In the above example, **enp6s0f1u3** is the virtual Ethernet interface for your controller. If you don't see the first `rndis_host` line, make sure `CONFIG_USB_NET_RNDIS_HOST` is compiled in your kernel or as a module. + +The web configurator is automatically running, you just need to be able to reach it. Some configurations automatically set up the route, so try [http://192.168.7.1](http://192.168.7.1) in your browser now. If it doesn't load, try configuring an IP for the interface manually via: `sudo ifconfig enp6s0f1u3 192.168.7.2`. + +Whether or not you had to add an IP manually, you should end up with a route something like this: + +```sh +% ip route +default via 10.0.5.1 dev enp5s0 proto dhcp src 10.0.5.38 metric 2 +10.0.5.0/24 dev enp5s0 proto dhcp scope link src 10.0.5.38 metric 2 +192.168.7.0/24 dev enp6s0f1u3 proto kernel scope link src 192.168.7.2 <--- +``` + +Then the configurator should be reachable in your browser. 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/development/documentation-style-guide.mdx b/versioned_docs/version-0.7.7/development/documentation-style-guide.mdx new file mode 100644 index 0000000..c158e1b --- /dev/null +++ b/versioned_docs/version-0.7.7/development/documentation-style-guide.mdx @@ -0,0 +1,576 @@ +--- +title: Style Guide +# tags: +# - +pagination_next: null +pagination_prev: null +toc_max_heading_level: 4 +description: "A style guide on how to write documentation for GP2040-CE using Docusaurus" +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; + +# Style Guide + +GP2040-CE welcomes your contribution to our documentation. This document describes the options available for creating +content for the site. along with guidelines and conventions. + +## Markdown + +This site uses Docusaurus version 2. Docusaurus uses MDX as the parsing engine. which can parse standard Markdown syntax +as well as render React Components inside the document. + +[Docusaurus Markdown](https://docusaurus.io/docs/markdown-features) supports +[Basic Markdown Syntax](https://www.markdownguide.org/basic-syntax) and most +[Extended Syntax](https://www.markdownguide.org/extended-syntax/). You can see which features are supported +[here](https://www.markdownguide.org/tools/docusaurus/). + +## Frontmatter + +At the top of each docs page, you need to include these things: + +| Variable | Description | +| :--------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `title` | The main title of the page. This value will appear in the left hand navigation tree for the page. | +| `pagination_prev` (optional) | The ID of the documentation you want the "Previous" pagination to link to. Use null to disable showing "Previous" for this page. | +| `pagination_next` (optional) | The ID of the documentation you want the "Next" pagination to link to. Use null to disable showing "Next" for this page. | +| `toc_min_heading_level` (optional) | The minimum heading level shown in the table of contents. Must be between 2 and 6 and lower or equal to the max value. | +| `toc_max_heading_level` (optional) | The max heading level shown in the table of contents. Must be between 2 and 6. | +| `description` | This is what appears when the page is referenced in a Google search result and what appears when the page is embedded elsewhere. | +| `keywords` (optional) | A list of terms that help categorize the page for SEO purposes. | + +The fields above are sufficient for most documentation pages. However,additional frontmatter fields can be found in the +Docusaurus [plugin-content-docs documentation](https://docusaurus.io/docs/2.x/api/plugins/@docusaurus/plugin-content-docs#markdown-front-matter). + +Frontmatter will look like this at the beginning of a document: + +``` +--- +title: Documentation Style Guide +pagination_next: null +pagination_prev: null +description: "A style guide on how to write documentation for GP2040-CE using Docusaurus" +--- +``` + +## Introduction + +The first paragraph of the documentation should set the user's expectations for what they will find on the page. +Describe the key benefits to the user, but do not include links. + +## Headers + +For accessibility and SEO reasons, never have an H4 header that isn't under an H3 header, or an H3 header that isn't +under an H2 header. + +- H1 headers should never be used in a document since the title is automatically generated as an H1. +- H2 headers are used for SEO, so make sure they succinctly represent what a user will find on the page in that section. +- H3 headers are included in the page's table of contents on the right, so make sure the title describes something a + user might want to directly navigate to. +- H4 headers are to emphasize things within a subsection of the page; these can be longer than the other headers if + needed because they aren't included in the Table of Contents. + +Markdown Code: + +``` +## H2 Header + +### H3 Header + +#### H4 Header +``` + +## Content + +### Line Breaks + +All words are rendered in the same paragraph even with line breaks, so long as there isn't an empty line. +As such, it is good practice for each line to be less than 120 characters long for readability, when possible. + +If the text is contained in a Markdown table cell, `
` will need to be used. + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown +This +will +all +be +on +one +line. + +The empty line above creates a new paragraph. + +This forces a soft return
+rather than creating a new paragraph + +| Column1 | Column2 | +| ------- | ------------------------------------- | +| Row 1 | - Line 1
- Line 2
- Line3 | +``` + +
+ +**Display** + + + +This +will +all +be +on +one +line. + +The empty line above creates a new paragraph. + +This forces a soft return
+rather than creating a new paragraph + +| Column1 | Column2 | +| ------- | ------------------------------------- | +| Row 1 | - Line 1
- Line 2
- Line3 | + +
+ +### Links + +#### Pages and Assets + +When linking to pages or assets, you will need to use relative links to navigate to the page and asset you need to +access. + +:::caution + +When moving files into different sub directories, make sure that you update any references to other pages/assets within +that page in addition to any other page that reference the moving page. If this is not done, this will result in broken +links and errors in the building process. + +::: + + + + + + + + + + + + + + +If Markdown syntax is insufficient, you can use either an inline CommonJS require in JSX image tag or an ES import +syntax and JSX image tag. For more information, refer to the +[Docusaurus documentations](https://docusaurus.io/docs/2.x/markdown-features/assets#images) + +#### Components + +When linking to components, you will need to use absolute links to navigate to the page and asset you need to access. +By using `@site` from any page in any subdirectory, it will locate to the root of the repo (i.e. "/"). + +:::caution + +When moving components into different sub directories, make sure that you update any pages that utilize that component. +If this is not done, this may result in either broken pages and errors in the building process or it may simply fail to +render. + +::: + +```md +import Component from "@site/src/components/ComponentName.tsx"; +``` + +### Hotkey Combinations + +When you need to present to the user a single input or input combination, you will need to include both a label selector +at the top of the screen and use the Hotkey component to display the input or input combination. By using this component, +the user will be able to choose the relevant input mode labels to present the labels. + +To use Hotkey Combinations, you need to import two components by placing these lines below the [Frontmatter](#frontmatter), +but above the [Introduction](#introduction): + +```typescript +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; +``` + +Underneath the top header for the page, include this label selector to allow users to select the input mode for Hotkey +Combination labels. + + + + + + + + + + + + + + +### Tabs + +Tabs are a great option when an example, instructions or other text would be different in different contexts. The +primary usage of tabs on this site is to illustrate the similar content in multiple context. + +:::tip +When a page includes multiple sets of tabs, use a `groupId` so when the user selects a particular tab, +all tabs with that ID will switch to the selected tab. +::: + +To use tabs, you need to import two special methods by placing these lines below the [Frontmatter](#frontmatter), +but above the [Introduction](#introduction): + +```typescript +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +``` + +and then use the tabs as follows: + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown + + + This would include information or examples for context 1. + + + This would include information or examples for context 2. + + +``` + +
+ +**Display** + + + + + + This would include information or examples for context 1. + + + This would include information or examples for context 2. + + + +
+ +### Inline Code + +To emphasize a single class, method name, variable, direction, filename, etc. in a sentence, place single backticks +around the name. + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown +This comment refers to the `GP2040-CE_X.X.X_Pico.uf2` file. +``` + +
+ +**Display** + + + +This comment refers to the `GP2040-CE_X.X.X_Pico.uf2` file. + +
+ +### Code Blocks + +The best way to display code or Markdown text to be copied is with code blocks. Markdown will highlight each language +differently, so it is helpful to specify which language you are using, and it's a good idea to include a title with the +code block as well. + + + + + + + + + + + + +
+ +**Markdown** + + + + ```md title="Example Markdown Page" + --- + title: TITLE + # tags: + # - + pagination_next: null + pagination_prev: null + description: "PAGE DESCRIPTION" + --- + + # Document Title + + CONTENT + ``` + +
+ +**Display** + + + +```md title="Example Markdown Page" +--- +title: TITLE +pagination_next: null +pagination_prev: null +description: "PAGE DESCRIPTION" +--- + +# Document Title + +CONTENT +``` + +
+ +### Admonitions + +There are four types of [Docusaurus admonitions](https://docusaurus.io/docs/markdown-features/admonitions): + +- Note - Relevant information. +- Tip - A user should do this. +- Caution - A user should pay attention to this. +- Warning - A user might do something dangerous. + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown +:::note + +Relevant information for you. + +::: + +:::tip + +You should do this. + +::: + +:::caution + +You should probably pay attention to this. + +::: + +:::warning + +You are about to do something dangerous. + +::: +``` + +
+ +**Display** + + + +:::note + +Relevant information for you. + +::: + +:::tip + +You should do this. + +::: + +:::caution + +You should probably pay attention to this. + +::: + +:::warning + +You are about to do something dangerous. + +::: + +
+ +You can also change the text of an admonition by including the test next to the admonition type. + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown +:::note This was labelled NOTE + +Relevant information for you. + +::: +``` + +
+ +**Display** + + + +:::note This was labelled NOTE + +Relevant information for you. + +::: + +
+ +## Adding Images to the Repo + +All image files should be included in `docs/assets` directory, in a subdirectory that corresponds to the type of content. + +| Subdirectory | Content | +| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `boards` | Images of RP2040 boards (commercially available or community designed) that will be referenced in `src/config/boards.tsx` to be included in Downloads page | +| `images` | General image category for documentation
- Add-ons: Start the filename with `gpc-add-ons-`
- Web Config Page: Start the filename with `gpc-`
| +| `wiring` | Images of microcontroller board pinouts to be included in `docs/controller-build/wiring.mdx` | diff --git a/versioned_docs/version-0.7.7/development/documentation-versioning.mdx b/versioned_docs/version-0.7.7/development/documentation-versioning.mdx index bb35d16..7863544 100644 --- a/versioned_docs/version-0.7.7/development/documentation-versioning.mdx +++ b/versioned_docs/version-0.7.7/development/documentation-versioning.mdx @@ -1,5 +1,5 @@ --- -title: Documentation Versioning +title: Versioning # tags: # - pagination_next: null 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.5-sidebars.json b/versioned_sidebars/version-0.7.5-sidebars.json new file mode 100644 index 0000000..f99cbd9 --- /dev/null +++ b/versioned_sidebars/version-0.7.5-sidebars.json @@ -0,0 +1,49 @@ +{ + "docSidebar": [ + { + "type": "category", + "label": "General", + "collapsed": false, + "items": [ + "introduction", + "installation", + "usage", + "hotkeys", + "rgb-leds", + "getting-help-support" + ] + }, + { + "type": "category", + "label": "FAQ", + "collapsed": false, + "items": ["faq/faq-general", "faq/faq-ps4-ps5-compatibility"] + }, + { + "type": "category", + "label": "Controller Building", + "collapsed": true, + "items": ["controller-build/wiring"] + } + ], + "webConfigSidebar": [ + "web-configurator", + "macros", + { + "type": "category", + "label": "Add-Ons", + "collapsed": false, + "items": [ + { + "type": "autogenerated", + "dirName": "add-ons" + } + ] + } + ], + "devSidebar": [ + "development/development", + "development/contribution-guide", + "development/templates" + ] +} diff --git a/versioned_sidebars/version-0.7.6-sidebars.json b/versioned_sidebars/version-0.7.6-sidebars.json new file mode 100644 index 0000000..61d8fac --- /dev/null +++ b/versioned_sidebars/version-0.7.6-sidebars.json @@ -0,0 +1,74 @@ +{ + "docSidebar": [ + { + "type": "category", + "label": "General", + "collapsed": false, + "items": [ + "introduction", + "installation", + "usage", + "hotkeys", + { + "type": "ref", + "label": "Web Configurator", + "id": "web-configurator/web-configurator" + }, + "rgb-leds", + "getting-help-support" + ] + }, + { + "type": "category", + "label": "FAQ", + "collapsed": false, + "items": [ + "faq/faq-general", + "faq/faq-console-compatibility", + "faq/faq-troubleshooting" + ] + }, + { + "type": "category", + "label": "Controller Building", + "collapsed": true, + "items": ["controller-build/wiring", "controller-build/usb-host"] + } + ], + "webConfigSidebar": [ + "web-configurator/web-configurator", + { + "type": "category", + "label": "Web Configurator Menu", + "collapsed": false, + "items": [ + { "type": "autogenerated", "dirName": "web-configurator/menu-pages" } + ] + }, + { + "type": "category", + "label": "Add-Ons", + "collapsed": false, + "items": [{ "type": "autogenerated", "dirName": "add-ons" }] + } + ], + "contributeSidebar": [ + "development/contribution-guide", + { + "type": "category", + "label": "Firmware", + "collapsed": false, + "items": ["development/firmware-development"] + }, + { + "type": "category", + "label": "Documentation", + "collapsed": false, + "items": [ + "development/documentation-preview", + "development/documentation-update-downloads" + ] + }, + "development/templates" + ] +} diff --git a/versioned_sidebars/version-0.7.7-sidebars.json b/versioned_sidebars/version-0.7.7-sidebars.json index 98a2538..7feeec4 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", @@ -36,10 +32,7 @@ "type": "category", "label": "Controller Building", "collapsed": false, - "items": [ - "controller-build/wiring", - "controller-build/usb-host" - ] + "items": ["controller-build/wiring", "controller-build/usb-host"] } ], "webConfigSidebar": [ @@ -73,15 +66,14 @@ "type": "category", "label": "Firmware", "collapsed": false, - "items": [ - "development/firmware-development" - ] + "items": ["development/firmware-development"] }, { "type": "category", "label": "Documentation", "collapsed": false, "items": [ + "development/documentation-style-guide", "development/documentation-versioning", "development/documentation-preview", "development/documentation-update-downloads" diff --git a/versions.json b/versions.json index dd86bef..bce4d36 100644 --- a/versions.json +++ b/versions.json @@ -1,3 +1 @@ -[ - "0.7.7" -] +["0.7.7", "0.7.6", "0.7.5"]