├── .gitignore
├── GP2040-CE
├── .editorconfig
├── .github
│ └── workflows
│ │ ├── cmake.yml
│ │ └── node.js.yml
├── .gitignore
├── .gitmodules
├── CMakeLists.txt
├── LICENSE
├── README.md
├── configs
│ ├── BentoBox
│ │ ├── BoardConfig.h
│ │ └── env.ini
│ ├── CMakeLists.txt
│ ├── DURAL
│ │ ├── BoardConfig.h
│ │ ├── README.md
│ │ ├── assets
│ │ │ └── DURAL.jpg
│ │ └── env.ini
│ ├── FightboardV3
│ │ ├── BoardConfig.h
│ │ ├── README.md
│ │ └── assets
│ │ │ └── FightboardV3.jpg
│ ├── FightboardV3Mirrored
│ │ ├── BoardConfig.h
│ │ ├── README.md
│ │ └── assets
│ │ │ └── FightboardV3Mirrored.jpg
│ ├── FlatboxRev4
│ │ ├── BoardConfig.h
│ │ ├── Readme.md
│ │ ├── assets
│ │ │ ├── ButtonMapping.kra
│ │ │ ├── ButtonMapping.png
│ │ │ └── Flatbox-rev2b-finished-product.jpg
│ │ ├── env.ini
│ │ └── flatboxrev4.h
│ ├── FlatboxRev5
│ │ ├── BoardConfig.h
│ │ ├── Readme.md
│ │ ├── assets
│ │ │ └── Flatbox-rev5.jpg
│ │ ├── env.ini
│ │ └── flatboxrev5.h
│ ├── MavercadeKeebfighter
│ │ ├── BoardConfig.h
│ │ ├── MavercadeKeebfighter.h
│ │ ├── Readme.md
│ │ └── assets
│ │ │ ├── Mavercade-logo.png
│ │ │ ├── keebfighter-00.png
│ │ │ ├── keebfighter-01.png
│ │ │ └── keebfighter-02.png
│ ├── Pico
│ │ ├── BoardConfig.h
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ └── assets
│ │ │ ├── PinMapping.png
│ │ │ └── PinMapping.xcf
│ ├── PicoAnn
│ │ ├── BoardConfig.h
│ │ ├── README.md
│ │ ├── assets
│ │ │ └── PinMapping_PicoAnn.png
│ │ └── env.ini
│ ├── PicoFightingBoard
│ │ ├── BoardConfig.h
│ │ ├── README.md
│ │ └── assets
│ │ │ ├── PicoFightingBoard_v1.1.jpg
│ │ │ ├── PinMapping.png
│ │ │ └── PinMapping.xcf
│ ├── RP2040AdvancedBreakoutBoard
│ │ ├── BoardConfig.h
│ │ ├── README.md
│ │ ├── RP2040AdvancedBreakoutBoard.h
│ │ ├── assets
│ │ │ ├── RP2040AdvancedBreakoutBoard.jpg
│ │ │ └── RP2040AdvancedBreakoutBoard_pinout.png
│ │ └── env.ini
│ ├── ReflexEncoder
│ │ ├── BoardConfig.h
│ │ ├── README.md
│ │ └── assets
│ │ │ └── ReflexBoard_v1.2.jpeg
│ ├── SparkFunProMicro
│ │ ├── BoardConfig.h
│ │ ├── README.md
│ │ ├── assets
│ │ │ └── SparkFunProMicroRP2040.png
│ │ └── env.ini
│ └── WaveshareZero
│ │ ├── BoardConfig.h
│ │ ├── README.md
│ │ ├── WaveshareRP2040Zero.png
│ │ ├── assets
│ │ └── WaveshareRP2040Zero.png
│ │ ├── env.ini
│ │ └── wavesharezero.h
├── docs
│ ├── .nojekyll
│ ├── CNAME
│ ├── _sidebar.md
│ ├── assets
│ │ ├── boards
│ │ │ ├── BentoBox.jpg
│ │ │ ├── DURAL.jpg
│ │ │ ├── FightboardV3.jpg
│ │ │ ├── FlatboxRev4.jpg
│ │ │ ├── FlatboxRev4.png
│ │ │ ├── FlatboxRev5.jpg
│ │ │ ├── MavercadeKeebfighter.jpg
│ │ │ ├── Pico.jpg
│ │ │ ├── PicoFightingBoard.jpg
│ │ │ ├── RP2040AdvancedBreakoutBoard.jpg
│ │ │ ├── ReflexEncoder.jpg
│ │ │ ├── SparkFunProMicro.jpg
│ │ │ └── WaveshareZero.jpg
│ │ ├── images
│ │ │ ├── GP2040-PFB-demo-1.jpg
│ │ │ ├── GP2040-PFB-demo-2.jpg
│ │ │ ├── community-splash-screens
│ │ │ │ ├── BentoBox.png
│ │ │ │ ├── Crush Counter v2.0.png
│ │ │ │ ├── GP2040-CE 1.png
│ │ │ │ ├── GP2040-CE 2.png
│ │ │ │ ├── GP2040-CE 3.png
│ │ │ │ ├── GP2040-CE 4.png
│ │ │ │ ├── GP2040-CE 5.png
│ │ │ │ ├── GP2040-CE 6.png
│ │ │ │ ├── GP2040-CE 7.png
│ │ │ │ ├── Sega Astro City.png
│ │ │ │ ├── Street Fighter.png
│ │ │ │ └── TheTrain Logo.png
│ │ │ ├── gcp-display-config.png
│ │ │ ├── github-sponsor-dark.png
│ │ │ ├── github-sponsor-dimmed.png
│ │ │ ├── github-sponsor-light.png
│ │ │ ├── gp2040-ce-logo.png
│ │ │ ├── gpc-add-ons-ads1219.png
│ │ │ ├── gpc-add-ons-analog.png
│ │ │ ├── gpc-add-ons-bootsel-button.png
│ │ │ ├── gpc-add-ons-buzzer.png
│ │ │ ├── gpc-add-ons-dual-directional.png
│ │ │ ├── gpc-add-ons-extra-button.png
│ │ │ ├── gpc-add-ons-input-reverse.png
│ │ │ ├── gpc-add-ons-joystick-slider.png
│ │ │ ├── gpc-add-ons-onboard-led.png
│ │ │ ├── gpc-add-ons-player-number.png
│ │ │ ├── gpc-add-ons-ps4-mode.png
│ │ │ ├── gpc-add-ons-socd-slider.png
│ │ │ ├── gpc-add-ons-turbo-shmup.png
│ │ │ ├── gpc-add-ons-turbo.png
│ │ │ ├── gpc-add-ons-wii-extensions.png
│ │ │ ├── gpc-backup-and-restore.png
│ │ │ ├── gpc-display-config.png
│ │ │ ├── gpc-home.png
│ │ │ ├── gpc-label-selection.png
│ │ │ ├── gpc-pin-mapping.png
│ │ │ ├── gpc-reset-settings.png
│ │ │ ├── gpc-rgb-led-config.png
│ │ │ ├── gpc-rgb-led-custom-theme.png
│ │ │ ├── gpc-settings.png
│ │ │ └── led-themes
│ │ │ │ ├── _base-template.xcf
│ │ │ │ ├── fightboard.png
│ │ │ │ ├── guilty-gear-type-a.png
│ │ │ │ ├── guilty-gear-type-b.png
│ │ │ │ ├── guilty-gear-type-c.png
│ │ │ │ ├── guilty-gear-type-d.png
│ │ │ │ ├── guilty-gear-type-e.png
│ │ │ │ ├── neogeo-curved.png
│ │ │ │ ├── neogeo-modern.png
│ │ │ │ ├── neogeo-straight.png
│ │ │ │ ├── playstation-all.png
│ │ │ │ ├── playstation.png
│ │ │ │ ├── six-button-fighter-plus.png
│ │ │ │ ├── six-button-fighter.png
│ │ │ │ ├── static-rainbow.png
│ │ │ │ ├── street-fighter-2.png
│ │ │ │ ├── super-famicom-all.png
│ │ │ │ ├── super-famicom.png
│ │ │ │ ├── tekken.png
│ │ │ │ ├── xbox-all.png
│ │ │ │ └── xbox.png
│ │ └── wiring
│ │ │ ├── RaspberryPiPico_Pinout.png
│ │ │ ├── SparkFunProMicroRP2040_Pinout.png
│ │ │ └── WaveshareRP2040Zero_Pinout.png
│ ├── community-splash-screens.md
│ ├── development.md
│ ├── download.md
│ ├── downloads
│ │ └── flash_nuke.uf2
│ ├── faq.md
│ ├── favicon.ico
│ ├── gp2040-shortcuts.md
│ ├── index.html
│ ├── installation.md
│ ├── package-lock.json
│ ├── package.json
│ ├── site.css
│ ├── usage.md
│ ├── web-configurator.md
│ └── wiring.md
├── headers
│ ├── addonmanager.h
│ ├── addons
│ │ ├── analog.h
│ │ ├── board_led.h
│ │ ├── bootsel_button.h
│ │ ├── buzzerspeaker.h
│ │ ├── dualdirectional.h
│ │ ├── extra_button.h
│ │ ├── i2canalog1219.h
│ │ ├── i2cdisplay.h
│ │ ├── jslider.h
│ │ ├── neopicoleds.h
│ │ ├── playernum.h
│ │ ├── pleds.h
│ │ ├── ps4mode.h
│ │ ├── reverse.h
│ │ ├── slider_socd.h
│ │ ├── turbo.h
│ │ └── wiiext.h
│ ├── bitmaps.h
│ ├── configmanager.h
│ ├── configs
│ │ ├── base64.h
│ │ ├── displayconfig.h
│ │ ├── serialconfig.h
│ │ └── webconfig.h
│ ├── enums.h
│ ├── gamepad.h
│ ├── gamepad
│ │ ├── GamepadConfig.h
│ │ ├── GamepadDebouncer.h
│ │ ├── GamepadDescriptors.h
│ │ ├── GamepadEnums.h
│ │ ├── GamepadOptions.h
│ │ ├── GamepadState.h
│ │ ├── GamepadStorage.h
│ │ └── descriptors
│ │ │ ├── HIDDescriptors.h
│ │ │ ├── KeyboardDescriptors.h
│ │ │ ├── MouseDescriptors.h
│ │ │ ├── PS4Descriptors.h
│ │ │ ├── SwitchDescriptors.h
│ │ │ └── XInputDescriptors.h
│ ├── gba
│ │ ├── GBAKey.h
│ │ ├── multiboot.h
│ │ └── spi32.h
│ ├── gp2040.h
│ ├── gp2040aux.h
│ ├── gpaddon.h
│ ├── gpconfig.h
│ ├── helper.h
│ ├── mbedtls_config.h
│ ├── songs.h
│ ├── storagemanager.h
│ ├── system.h
│ ├── themes.h
│ └── tusb_config.h
├── lib
│ ├── ADS1219
│ │ ├── ADS1219.cpp
│ │ ├── ADS1219.h
│ │ ├── CMakeLists.txt
│ │ └── README.md
│ ├── AnimationStation
│ │ ├── .editorconfig
│ │ ├── CMakeLists.txt
│ │ ├── library.json
│ │ └── src
│ │ │ ├── Animation.cpp
│ │ │ ├── Animation.hpp
│ │ │ ├── AnimationStation.cpp
│ │ │ ├── AnimationStation.hpp
│ │ │ ├── AnimationStorage.hpp
│ │ │ ├── Effects
│ │ │ ├── Chase.cpp
│ │ │ ├── Chase.hpp
│ │ │ ├── CustomTheme.cpp
│ │ │ ├── CustomTheme.hpp
│ │ │ ├── CustomThemePressed.cpp
│ │ │ ├── CustomThemePressed.hpp
│ │ │ ├── Rainbow.cpp
│ │ │ ├── Rainbow.hpp
│ │ │ ├── StaticColor.cpp
│ │ │ ├── StaticColor.hpp
│ │ │ ├── StaticTheme.cpp
│ │ │ └── StaticTheme.hpp
│ │ │ └── Pixel.hpp
│ ├── BitBang_I2C
│ │ ├── BitBang_I2C.c
│ │ ├── BitBang_I2C.h
│ │ ├── CMakeLists.txt
│ │ └── README.md
│ ├── CMakeLists.txt
│ ├── CRC32
│ │ ├── CMakeLists.txt
│ │ └── src
│ │ │ ├── CRC32.cpp
│ │ │ └── CRC32.h
│ ├── FlashPROM
│ │ ├── CMakeLists.txt
│ │ ├── library.json
│ │ └── src
│ │ │ ├── FlashPROM.cpp
│ │ │ └── FlashPROM.h
│ ├── NeoPico
│ │ ├── .editorconfig
│ │ ├── CMakeLists.txt
│ │ ├── library.json
│ │ └── src
│ │ │ ├── NeoPico.cpp
│ │ │ ├── NeoPico.hpp
│ │ │ ├── generated
│ │ │ └── ws2812.pio.h
│ │ │ └── ws2812.pio
│ ├── OneBitDisplay
│ │ ├── CMakeLists.txt
│ │ ├── OneBitDisplay.cpp
│ │ ├── OneBitDisplay.h
│ │ ├── README.md
│ │ ├── fonts
│ │ │ └── FreeSerif12pt7b.h
│ │ └── obd.inl
│ ├── PlayerLEDs
│ │ ├── CMakeLists.txt
│ │ └── src
│ │ │ ├── PlayerLEDs.cpp
│ │ │ └── PlayerLEDs.h
│ ├── TinyUSB_Gamepad
│ │ ├── CMakeLists.txt
│ │ ├── library.json
│ │ └── src
│ │ │ ├── hid_driver.cpp
│ │ │ ├── hid_driver.h
│ │ │ ├── net_driver.cpp
│ │ │ ├── net_driver.h
│ │ │ ├── ps4_driver.cpp
│ │ │ ├── ps4_driver.h
│ │ │ ├── tusb_driver.cpp
│ │ │ ├── usb_descriptors.cpp
│ │ │ ├── usb_driver.h
│ │ │ ├── webserver_descriptors.h
│ │ │ ├── xinput_driver.cpp
│ │ │ └── xinput_driver.h
│ ├── WiiExtension
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── WiiExtension.cpp
│ │ └── WiiExtension.h
│ ├── httpd
│ │ ├── CMakeLists.txt
│ │ ├── fs.c
│ │ ├── fs.h
│ │ ├── fscustom.h
│ │ ├── fsdata.c
│ │ └── fsdata.h
│ ├── lwip-port
│ │ ├── CMakeLists.txt
│ │ ├── arch
│ │ │ └── cc.h
│ │ └── lwipopts.h
│ └── rndis
│ │ ├── CMakeLists.txt
│ │ ├── rndis.c
│ │ └── rndis.h
├── modules
│ ├── FindNPM.cmake
│ └── FindNodeJS.cmake
├── pico_sdk_import.cmake
├── src
│ ├── addonmanager.cpp
│ ├── addons
│ │ ├── analog.cpp
│ │ ├── board_led.cpp
│ │ ├── bootsel_button.cpp
│ │ ├── buzzerspeaker.cpp
│ │ ├── dualdirectional.cpp
│ │ ├── extra_button.cpp
│ │ ├── i2canalog1219.cpp
│ │ ├── i2cdisplay.cpp
│ │ ├── jslider.cpp
│ │ ├── neopicoleds.cpp
│ │ ├── playerleds.cpp
│ │ ├── playernum.cpp
│ │ ├── ps4mode.cpp
│ │ ├── reverse.cpp
│ │ ├── slider_socd.cpp
│ │ ├── turbo.cpp
│ │ └── wiiext.cpp
│ ├── configmanager.cpp
│ ├── configs
│ │ └── webconfig.cpp
│ ├── gamepad.cpp
│ ├── gamepad
│ │ ├── GamepadDebouncer.cpp
│ │ └── GamepadDescriptors.cpp
│ ├── gba
│ │ ├── multiboot.cpp
│ │ └── spi32.cpp
│ ├── gp2040.cpp
│ ├── gp2040aux.cpp
│ ├── main.cpp
│ ├── storagemanager.cpp
│ └── system.cpp
└── tools
│ ├── linux_compile_makefsdata.sh
│ ├── makefsdata
│ ├── makefsdata.darwin
│ └── makefsdata.exe
├── README.md
├── build.sh
└── gba-link-connection
├── .gitignore
├── .licenses
├── libgba-sprite-engine.txt
├── libtonc.txt
└── libugba.txt
├── LICENSE
├── README.md
├── docs
├── gbatek.md
├── img
│ ├── 0x10.png
│ ├── 0x11.png
│ ├── 0x16.png
│ ├── 0x17.png
│ ├── 0x1d.png
│ ├── 0x1f.png
│ ├── 0x20.png
│ ├── 0x21.png
│ ├── 0x25.png
│ ├── 0x26.png
│ ├── 0x27.png
│ ├── 0x30.png
│ ├── broadcast.png
│ ├── first_nintendo_32.png
│ ├── first_single_u32.png
│ ├── full_initialisation.png
│ ├── init.png
│ ├── logic2.png
│ ├── multiboot.jpg
│ ├── wake-up.png
│ └── wirelessadapter.jpg
├── multiboot.md
├── wireless.txt
└── wireless_adapter.md
├── examples
├── LinkCableMultiboot_demo
│ ├── Makefile
│ ├── pad16.sh
│ └── src
│ │ └── main.cpp
├── LinkCable_basic
│ ├── Makefile
│ └── src
│ │ └── main.cpp
├── LinkCable_full
│ ├── Makefile
│ └── src
│ │ ├── main.cpp
│ │ ├── main.h
│ │ ├── scenes
│ │ ├── TestScene.cpp
│ │ └── TestScene.h
│ │ └── utils
│ │ ├── BackgroundUtils.h
│ │ ├── InputHandler.h
│ │ ├── SceneUtils.cpp
│ │ ├── SceneUtils.h
│ │ └── SpriteUtils.h
├── LinkCable_stress
│ ├── Makefile
│ └── src
│ │ └── main.cpp
├── LinkGPIO_demo
│ ├── Makefile
│ └── src
│ │ └── main.cpp
├── LinkSPI_demo
│ ├── Makefile
│ ├── Master.ino
│ ├── Slave.ino
│ ├── pad16.sh
│ └── src
│ │ └── main.cpp
├── LinkUniversal_basic
│ ├── Makefile
│ └── src
│ │ └── main.cpp
├── LinkUniversal_full
│ └── README.md
├── LinkWireless_demo
│ ├── Makefile
│ └── src
│ │ └── main.cpp
├── _lib
│ ├── interrupt.cpp
│ ├── interrupt.h
│ ├── libgba-sprite-engine
│ │ ├── include
│ │ │ └── libgba-sprite-engine
│ │ │ │ ├── allocator.h
│ │ │ │ ├── background
│ │ │ │ ├── background.h
│ │ │ │ ├── text.h
│ │ │ │ └── text_stream.h
│ │ │ │ ├── effects
│ │ │ │ ├── fade_out_scene.h
│ │ │ │ └── scene_effect.h
│ │ │ │ ├── gba
│ │ │ │ ├── tonc_asminc.h
│ │ │ │ ├── tonc_bios.h
│ │ │ │ ├── tonc_core.h
│ │ │ │ ├── tonc_core_stub.h
│ │ │ │ ├── tonc_math.h
│ │ │ │ ├── tonc_math_stub.h
│ │ │ │ ├── tonc_memdef.h
│ │ │ │ ├── tonc_memmap.h
│ │ │ │ ├── tonc_oam.h
│ │ │ │ └── tonc_types.h
│ │ │ │ ├── gba_engine.h
│ │ │ │ ├── gbavector.h
│ │ │ │ ├── palette
│ │ │ │ ├── combined_palette.h
│ │ │ │ └── palette_manager.h
│ │ │ │ ├── scene.h
│ │ │ │ ├── sound_control.h
│ │ │ │ ├── sprites
│ │ │ │ ├── affine_sprite.h
│ │ │ │ ├── sprite.h
│ │ │ │ ├── sprite_builder.h
│ │ │ │ └── sprite_manager.h
│ │ │ │ └── timer.h
│ │ └── lib
│ │ │ └── libgba-sprite-engine.a
│ └── libugba
│ │ ├── include
│ │ ├── background.h
│ │ ├── bios.h
│ │ ├── bios_wrappers.h
│ │ ├── console.h
│ │ ├── debug.h
│ │ ├── definitions.h
│ │ ├── display.h
│ │ ├── dma.h
│ │ ├── fp_math.h
│ │ ├── hardware.h
│ │ ├── input.h
│ │ ├── interrupts.h
│ │ ├── obj.h
│ │ ├── sound.h
│ │ ├── sram.h
│ │ ├── timer.h
│ │ ├── ugba.h
│ │ ├── version.h
│ │ └── vram.h
│ │ └── lib
│ │ └── libugba.a
└── compile.sh
└── lib
├── LinkCable.h
├── LinkCableMultiboot.h
├── LinkGPIO.h
├── LinkSPI.h
├── LinkUniversal.h
└── LinkWireless.h
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # directory
3 | .vscode/
4 | build/
5 |
6 | # gba
7 | *.gba
8 | *.elf
9 | *.sav
10 |
11 | # pico
12 | *.uf2
13 |
--------------------------------------------------------------------------------
/GP2040-CE/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig is awesome: https://EditorConfig.org
2 |
3 | # top-most EditorConfig file
4 | root = true
5 |
6 | [*]
7 | indent_style = tab
8 | indent_size = 2
9 | end_of_line = crlf
10 | charset = utf-8
11 | trim_trailing_whitespace = true
12 | insert_final_newline = true
13 |
14 | [*.md, *.yml]
15 | indent_style = space
16 | indent_size = 2
17 | trim_trailing_whitespace = false
18 |
19 | [*.scss]
20 | end_of_line = lf
21 |
--------------------------------------------------------------------------------
/GP2040-CE/.github/workflows/node.js.yml:
--------------------------------------------------------------------------------
1 | # This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
2 | # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs
3 |
4 | name: Node.js CI
5 |
6 | on:
7 | workflow_dispatch:
8 | workflow_call:
9 |
10 | jobs:
11 | build:
12 | runs-on: ubuntu-latest
13 |
14 | steps:
15 | - uses: actions/checkout@v3
16 | - name: Checkout submodules
17 | working-directory: ${{github.workspace}}
18 | run: git submodule update --init
19 | - name: Make Executable
20 | working-directory: ${{github.workspace}}/tools
21 | run: sudo chmod +x makefsdata
22 | # - name: Delete existing file
23 | # working-directory: ${{github.workspace}}/lib/httpd/
24 | # run: rm fsdata.c
25 | - name: Use Node.js
26 | uses: actions/setup-node@v3
27 | with:
28 | node-version: '18.x'
29 | - name: clean install
30 | working-directory: ${{github.workspace}}/www
31 | run: npm ci
32 | - name: Build WWW
33 | working-directory: ${{github.workspace}}/www
34 | run: CI=false npm run build --if-present
35 | - name: Upload www Artifact
36 | uses: actions/upload-artifact@v3.1.1
37 | with:
38 | name: fsData
39 | path: ${{github.workspace}}/lib/httpd/fsdata.c
40 | if-no-files-found: error
41 |
--------------------------------------------------------------------------------
/GP2040-CE/.gitignore:
--------------------------------------------------------------------------------
1 | .pio
2 | .vscode/
3 | node_modules/
4 | configs/MyBoard
5 | .DS_Store
6 | /www/package-lock.json
7 | build/
8 |
9 | modules/Custom.cmake
10 |
--------------------------------------------------------------------------------
/GP2040-CE/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "configs/PicoFightingBoard"]
2 | path = configs/PicoFightingBoard
3 | url = https://github.com/FeralAI/GP2040-Config-PicoFightingBoard.git
4 | [submodule "www"]
5 | path = www
6 | url = https://github.com/OpenStickCommunity/WebConfigurator.git
7 |
--------------------------------------------------------------------------------
/GP2040-CE/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Jason Skuby (mytechtoybox.com)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/BentoBox/env.ini:
--------------------------------------------------------------------------------
1 | [env:bentobox]
2 | build_flags =
3 | ${env.build_flags}
4 | -I configs/BentoBox/
5 | upload_port = .pio/build/bentobox/
6 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | add_subdirectory(Pico)
--------------------------------------------------------------------------------
/GP2040-CE/configs/DURAL/README.md:
--------------------------------------------------------------------------------
1 | # GP2040 Configuration for DURAL
2 |
3 | 
4 |
5 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/DURAL/assets/DURAL.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/DURAL/assets/DURAL.jpg
--------------------------------------------------------------------------------
/GP2040-CE/configs/DURAL/env.ini:
--------------------------------------------------------------------------------
1 | [env:dural]
2 | build_flags =
3 | ${env.build_flags}
4 | -I configs/DURAL/
5 | upload_port = .pio/build/dural/
--------------------------------------------------------------------------------
/GP2040-CE/configs/FightboardV3/README.md:
--------------------------------------------------------------------------------
1 | # GP2040 Configuration for the Fightboard v3
2 |
3 | 
4 |
5 | This configuration is for the Fightboard v3 using the Waveshare RP2040 Zero.
6 |
7 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/FightboardV3/assets/FightboardV3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/FightboardV3/assets/FightboardV3.jpg
--------------------------------------------------------------------------------
/GP2040-CE/configs/FightboardV3Mirrored/README.md:
--------------------------------------------------------------------------------
1 | # GP2040 Configuration for the mirrored Fightboard v3
2 |
3 | 
4 |
5 | This configuration is for the mirrored version of the Fightboard v3 using the Waveshare RP2040 Zero.
6 |
7 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/FightboardV3Mirrored/assets/FightboardV3Mirrored.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/FightboardV3Mirrored/assets/FightboardV3Mirrored.jpg
--------------------------------------------------------------------------------
/GP2040-CE/configs/FlatboxRev4/Readme.md:
--------------------------------------------------------------------------------
1 | # GP2040 Configuration for Flatbox Rev 4
2 |
3 | 
4 |
5 | Configuration for the [Flatbox Rev 4](https://github.com/jfedor2/flatbox/tree/master/hardware-rev4), one of the excellent revisions of the [Flatbox](https://github.com/jfedor2/flatbox) design by [jfedor2](https://github.com/jfedor2) powered by an RP2040 MCU.
6 |
7 | 
--------------------------------------------------------------------------------
/GP2040-CE/configs/FlatboxRev4/assets/ButtonMapping.kra:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/FlatboxRev4/assets/ButtonMapping.kra
--------------------------------------------------------------------------------
/GP2040-CE/configs/FlatboxRev4/assets/ButtonMapping.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/FlatboxRev4/assets/ButtonMapping.png
--------------------------------------------------------------------------------
/GP2040-CE/configs/FlatboxRev4/assets/Flatbox-rev2b-finished-product.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/FlatboxRev4/assets/Flatbox-rev2b-finished-product.jpg
--------------------------------------------------------------------------------
/GP2040-CE/configs/FlatboxRev4/env.ini:
--------------------------------------------------------------------------------
1 | [env:flatbox-rev-4]
2 | upload_port = .pio/build/flatbox-rev-4/
3 | build_flags =
4 | ${env.build_flags}
5 | -D PICO_XOSC_STARTUP_DELAY_MULTIPLIER=64
6 | -I configs/FlatboxRev4/
7 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/FlatboxRev4/flatboxrev4.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
3 | *
4 | * SPDX-License-Identifier: BSD-3-Clause
5 | */
6 |
7 | // -----------------------------------------------------
8 | // NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
9 | // SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
10 | // -----------------------------------------------------
11 |
12 |
13 | #ifndef _BOARDS_FLATBOXREV4_H
14 | #define _BOARDS_FLATBOXREV4_H
15 |
16 | // For board detection
17 | #define FLATBOXREV4
18 |
19 | //For crappy crystal
20 | #ifndef PICO_XOSC_STARTUP_DELAY_MULTIPLIER
21 | #define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
22 | #endif
23 |
24 | // --- UART ---
25 | #ifndef PICO_DEFAULT_UART
26 | #define PICO_DEFAULT_UART 0
27 | #endif
28 | #ifndef PICO_DEFAULT_UART_TX_PIN
29 | #define PICO_DEFAULT_UART_TX_PIN 0
30 | #endif
31 | #ifndef PICO_DEFAULT_UART_RX_PIN
32 | #define PICO_DEFAULT_UART_RX_PIN 1
33 | #endif
34 |
35 | // --- LED ---
36 | #ifndef PICO_DEFAULT_LED_PIN
37 | #define PICO_DEFAULT_LED_PIN 25
38 | #endif
39 | // no PICO_DEFAULT_WS2812_PIN
40 |
41 | // --- I2C ---
42 | #ifndef PICO_DEFAULT_I2C
43 | #define PICO_DEFAULT_I2C 0
44 | #endif
45 | #ifndef PICO_DEFAULT_I2C_SDA_PIN
46 | #define PICO_DEFAULT_I2C_SDA_PIN 4
47 | #endif
48 | #ifndef PICO_DEFAULT_I2C_SCL_PIN
49 | #define PICO_DEFAULT_I2C_SCL_PIN 5
50 | #endif
51 |
52 | // --- SPI ---
53 | #ifndef PICO_DEFAULT_SPI
54 | #define PICO_DEFAULT_SPI 0
55 | #endif
56 | #ifndef PICO_DEFAULT_SPI_SCK_PIN
57 | #define PICO_DEFAULT_SPI_SCK_PIN 18
58 | #endif
59 | #ifndef PICO_DEFAULT_SPI_TX_PIN
60 | #define PICO_DEFAULT_SPI_TX_PIN 19
61 | #endif
62 | #ifndef PICO_DEFAULT_SPI_RX_PIN
63 | #define PICO_DEFAULT_SPI_RX_PIN 16
64 | #endif
65 | #ifndef PICO_DEFAULT_SPI_CSN_PIN
66 | #define PICO_DEFAULT_SPI_CSN_PIN 17
67 | #endif
68 |
69 | // --- FLASH ---
70 |
71 | #define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
72 |
73 | #ifndef PICO_FLASH_SPI_CLKDIV
74 | #define PICO_FLASH_SPI_CLKDIV 2
75 | #endif
76 |
77 | #ifndef PICO_FLASH_SIZE_BYTES
78 | #define PICO_FLASH_SIZE_BYTES (2 * 1024 * 1024)
79 | #endif
80 |
81 | // Drive high to force power supply into PWM mode (lower ripple on 3V3 at light loads)
82 | #define PICO_SMPS_MODE_PIN 23
83 |
84 | #ifndef PICO_RP2040_B0_SUPPORTED
85 | #define PICO_RP2040_B0_SUPPORTED 1
86 | #endif
87 |
88 | #endif
--------------------------------------------------------------------------------
/GP2040-CE/configs/FlatboxRev5/Readme.md:
--------------------------------------------------------------------------------
1 | # GP2040 Configuration for Flatbox rev5
2 |
3 | 
4 |
5 | Configuration for the [Flatbox rev5](https://github.com/jfedor2/flatbox/tree/master/hardware-rev5), a variant of the [Flatbox](https://github.com/jfedor2/flatbox) design by [jfedor2](https://github.com/jfedor2). This revision uses an RP2040-Zero board.
6 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/FlatboxRev5/assets/Flatbox-rev5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/FlatboxRev5/assets/Flatbox-rev5.jpg
--------------------------------------------------------------------------------
/GP2040-CE/configs/FlatboxRev5/env.ini:
--------------------------------------------------------------------------------
1 | [env:flatbox-rev-5]
2 | upload_port = .pio/build/flatbox-rev-5/
3 | build_flags =
4 | ${env.build_flags}
5 | -D PICO_XOSC_STARTUP_DELAY_MULTIPLIER=64
6 | -I configs/FlatboxRev5/
7 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/FlatboxRev5/flatboxrev5.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
3 | *
4 | * SPDX-License-Identifier: BSD-3-Clause
5 | */
6 |
7 | // -----------------------------------------------------
8 | // NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
9 | // SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
10 | // -----------------------------------------------------
11 |
12 | #ifndef _BOARDS_FLATBOXREV5_H
13 | #define _BOARDS_FLATBOXREV5_H
14 |
15 | // For board detection
16 | #define FLATBOXREV5
17 |
18 | // For crappy crystal
19 | #ifndef PICO_XOSC_STARTUP_DELAY_MULTIPLIER
20 | #define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
21 | #endif
22 |
23 | // --- UART ---
24 | #ifndef PICO_DEFAULT_UART
25 | #define PICO_DEFAULT_UART 0
26 | #endif
27 | #ifndef PICO_DEFAULT_UART_TX_PIN
28 | #define PICO_DEFAULT_UART_TX_PIN 0
29 | #endif
30 | #ifndef PICO_DEFAULT_UART_RX_PIN
31 | #define PICO_DEFAULT_UART_RX_PIN 1
32 | #endif
33 |
34 | // --- LED ---
35 | #ifndef PICO_DEFAULT_LED_PIN
36 | #define PICO_DEFAULT_LED_PIN 25
37 | #endif
38 | // no PICO_DEFAULT_WS2812_PIN
39 |
40 | // --- I2C ---
41 | #ifndef PICO_DEFAULT_I2C
42 | #define PICO_DEFAULT_I2C 0
43 | #endif
44 | #ifndef PICO_DEFAULT_I2C_SDA_PIN
45 | #define PICO_DEFAULT_I2C_SDA_PIN 4
46 | #endif
47 | #ifndef PICO_DEFAULT_I2C_SCL_PIN
48 | #define PICO_DEFAULT_I2C_SCL_PIN 5
49 | #endif
50 |
51 | // --- SPI ---
52 | #ifndef PICO_DEFAULT_SPI
53 | #define PICO_DEFAULT_SPI 0
54 | #endif
55 | #ifndef PICO_DEFAULT_SPI_SCK_PIN
56 | #define PICO_DEFAULT_SPI_SCK_PIN 18
57 | #endif
58 | #ifndef PICO_DEFAULT_SPI_TX_PIN
59 | #define PICO_DEFAULT_SPI_TX_PIN 19
60 | #endif
61 | #ifndef PICO_DEFAULT_SPI_RX_PIN
62 | #define PICO_DEFAULT_SPI_RX_PIN 16
63 | #endif
64 | #ifndef PICO_DEFAULT_SPI_CSN_PIN
65 | #define PICO_DEFAULT_SPI_CSN_PIN 17
66 | #endif
67 |
68 | // --- FLASH ---
69 |
70 | #define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
71 |
72 | #ifndef PICO_FLASH_SPI_CLKDIV
73 | #define PICO_FLASH_SPI_CLKDIV 2
74 | #endif
75 |
76 | #ifndef PICO_FLASH_SIZE_BYTES
77 | #define PICO_FLASH_SIZE_BYTES (2 * 1024 * 1024)
78 | #endif
79 |
80 | // Drive high to force power supply into PWM mode (lower ripple on 3V3 at light loads)
81 | #define PICO_SMPS_MODE_PIN 23
82 |
83 | #ifndef PICO_RP2040_B0_SUPPORTED
84 | #define PICO_RP2040_B0_SUPPORTED 1
85 | #endif
86 |
87 | #endif
--------------------------------------------------------------------------------
/GP2040-CE/configs/MavercadeKeebfighter/Readme.md:
--------------------------------------------------------------------------------
1 | # GP2040 Configuration for the Mavercade Keebfighter
2 |
3 | 
4 |
5 | Configuration for the [Mavercade Keebfighters](https://mavercade.com/collections/mavercade-fightsticks). The Mavercade Keebfighters are based on the [Flatbox rev5](https://github.com/jfedor2/flatbox/tree/master/hardware-rev5), a variant of the [Flatbox](https://github.com/jfedor2/flatbox) design by [jfedor2](https://github.com/jfedor2). These revisions use a Waveshare RP2040-Zero board.
6 |
7 | Mavercade Keebfighter 00 - Check it out [here](https://mavercade.com/products/mavercade-keebfighter-00)
8 | 
9 |
10 | Mavercade Keebfighter 01 - Check it out [here](https://mavercade.com/products/mavercade-keebfighter-01)
11 | 
12 |
13 | Mavercade Keebfighter 02 - Check it out [here](https://mavercade.com/products/mavercade-keebfighter-02)
14 | 
--------------------------------------------------------------------------------
/GP2040-CE/configs/MavercadeKeebfighter/assets/Mavercade-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/MavercadeKeebfighter/assets/Mavercade-logo.png
--------------------------------------------------------------------------------
/GP2040-CE/configs/MavercadeKeebfighter/assets/keebfighter-00.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/MavercadeKeebfighter/assets/keebfighter-00.png
--------------------------------------------------------------------------------
/GP2040-CE/configs/MavercadeKeebfighter/assets/keebfighter-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/MavercadeKeebfighter/assets/keebfighter-01.png
--------------------------------------------------------------------------------
/GP2040-CE/configs/MavercadeKeebfighter/assets/keebfighter-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/MavercadeKeebfighter/assets/keebfighter-02.png
--------------------------------------------------------------------------------
/GP2040-CE/configs/Pico/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | #add_executable(Pico
2 | #${CMAKE_SOURCE_DIR}/src/main.cpp)
3 | #link_libraries(${PROJECT_NAME})
--------------------------------------------------------------------------------
/GP2040-CE/configs/Pico/README.md:
--------------------------------------------------------------------------------
1 | # GP2040 Configuration for Raspberry Pi Pico
2 |
3 | 
4 |
5 | Basic pin setup for a stock Raspberry Pi Pico. Combine with a simple GPIO breakout/screw terminal board for an easy DIY arcade stick.
6 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/Pico/assets/PinMapping.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/Pico/assets/PinMapping.png
--------------------------------------------------------------------------------
/GP2040-CE/configs/Pico/assets/PinMapping.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/Pico/assets/PinMapping.xcf
--------------------------------------------------------------------------------
/GP2040-CE/configs/PicoAnn/README.md:
--------------------------------------------------------------------------------
1 | # GP2040-CE Configuration for PicoAnn firmware boards
2 |
3 | 
4 |
5 | Basic pin setup for boards that were running PicoAnn firmware like the Pico Advanced Breakout Board v3.0.
6 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/PicoAnn/assets/PinMapping_PicoAnn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/PicoAnn/assets/PinMapping_PicoAnn.png
--------------------------------------------------------------------------------
/GP2040-CE/configs/PicoAnn/env.ini:
--------------------------------------------------------------------------------
1 | [env:PicoAnn]
2 | upload_port = .pio/build/PicoAnn/
3 | build_flags =
4 | ${env.build_flags}
5 | -I configs/PicoAnn/
6 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/PicoFightingBoard/README.md:
--------------------------------------------------------------------------------
1 | # GP2040-CE Configuration for Pico Fighting Board
2 |
3 | * New GP2040-CE standard layout for Pico Fighting Board.
4 |
5 | Not equipped with turbo.
6 |
7 | 
8 |
9 | Open source board based on the Brook board design: . The board labels are associated with the GP2040 generic labeling. The 20-pin connector, 4-pin connector and screw terminals are button-compatible with the Brook wiring harnesses and button mappings.
10 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/PicoFightingBoard/assets/PicoFightingBoard_v1.1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/PicoFightingBoard/assets/PicoFightingBoard_v1.1.jpg
--------------------------------------------------------------------------------
/GP2040-CE/configs/PicoFightingBoard/assets/PinMapping.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/PicoFightingBoard/assets/PinMapping.png
--------------------------------------------------------------------------------
/GP2040-CE/configs/PicoFightingBoard/assets/PinMapping.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/PicoFightingBoard/assets/PinMapping.xcf
--------------------------------------------------------------------------------
/GP2040-CE/configs/RP2040AdvancedBreakoutBoard/README.md:
--------------------------------------------------------------------------------
1 | # GP2040 Configuration for the RP2040 Advanced Breakout Board
2 |
3 | 
4 |
5 | Basic pin setup for the RP2040 Advanced Breakout Board.
6 |
7 | 
8 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/RP2040AdvancedBreakoutBoard/RP2040AdvancedBreakoutBoard.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
3 | *
4 | * SPDX-License-Identifier: BSD-3-Clause
5 | */
6 |
7 | // -----------------------------------------------------
8 | // NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
9 | // SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
10 | // -----------------------------------------------------
11 |
12 |
13 | #ifndef _BOARDS_RP2040ADVANCEDBREAKOUTBOARD_H
14 | #define _BOARDS_RP2040ADVANCEDBREAKOUTBOARD_H
15 |
16 | // For board detection
17 | #define RP2040ADVANCEDBREAKOUTBOARD
18 |
19 | //For crappy crystal
20 | #ifndef PICO_XOSC_STARTUP_DELAY_MULTIPLIER
21 | #define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
22 | #endif
23 |
24 | // --- LED ---
25 | #ifndef PICO_DEFAULT_LED_PIN
26 | #define PICO_DEFAULT_LED_PIN 25
27 | #endif
28 | // no PICO_DEFAULT_WS2812_PIN
29 |
30 | // --- FLASH ---
31 | #define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
32 |
33 | #ifndef PICO_FLASH_SPI_CLKDIV
34 | #define PICO_FLASH_SPI_CLKDIV 2
35 | #endif
36 |
37 | #ifndef PICO_FLASH_SIZE_BYTES
38 | #define PICO_FLASH_SIZE_BYTES (2 * 1024 * 1024)
39 | #endif
40 |
41 | // Drive high to force power supply into PWM mode (lower ripple on 3V3 at light loads)
42 | #define PICO_SMPS_MODE_PIN 23
43 |
44 | #ifndef PICO_RP2040_B0_SUPPORTED
45 | #define PICO_RP2040_B0_SUPPORTED 1
46 | #endif
47 |
48 | #endif
49 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/RP2040AdvancedBreakoutBoard/assets/RP2040AdvancedBreakoutBoard.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/RP2040AdvancedBreakoutBoard/assets/RP2040AdvancedBreakoutBoard.jpg
--------------------------------------------------------------------------------
/GP2040-CE/configs/RP2040AdvancedBreakoutBoard/assets/RP2040AdvancedBreakoutBoard_pinout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/RP2040AdvancedBreakoutBoard/assets/RP2040AdvancedBreakoutBoard_pinout.png
--------------------------------------------------------------------------------
/GP2040-CE/configs/RP2040AdvancedBreakoutBoard/env.ini:
--------------------------------------------------------------------------------
1 | [env:RP2040 Advanced Breakout Board]
2 | upload_port = .pio/build/RP2040AdvancedBreakoutBoard/
3 | build_flags =
4 | ${env.build_flags}
5 | -I configs/RP2040AdvancedBreakoutBoard/
6 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/ReflexEncoder/README.md:
--------------------------------------------------------------------------------
1 | # GP2040-CE Configuration for the Reflex Board by MiSTer Addons
2 |
3 |
4 | 
5 |
6 | Reflex Board
7 | Open source PCB for arcade sticks using Raspberry Pi Pico's RP2040 microcontroller.
8 |
9 | GitHub: https://github.com/misteraddons/ReflexFightingBoard
10 | Purchase from: https://misteraddons.com/collections/parts/products/reflex-encode-fighting-board
11 |
12 | MiSTer addons: https://misteraddons.com/
13 |
14 |
15 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/ReflexEncoder/assets/ReflexBoard_v1.2.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/ReflexEncoder/assets/ReflexBoard_v1.2.jpeg
--------------------------------------------------------------------------------
/GP2040-CE/configs/SparkFunProMicro/README.md:
--------------------------------------------------------------------------------
1 | # GP2040 Configuration for Sparkfun Pro Micro - RP2040
2 |
3 | 
4 |
5 | Basic pin setup for a stock [Sparkfun Pro Micro - RP2040](https://www.sparkfun.com/products/18288).
6 |
7 | The pin layout is designed to be a drop in replacement for the [Daemonbite Arcade encoder](https://github.com/MickGyver/DaemonBite-Arcade-Encoder).
8 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/SparkFunProMicro/assets/SparkFunProMicroRP2040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/SparkFunProMicro/assets/SparkFunProMicroRP2040.png
--------------------------------------------------------------------------------
/GP2040-CE/configs/SparkFunProMicro/env.ini:
--------------------------------------------------------------------------------
1 | [env:sparkfun-pro-micro]
2 | build_flags =
3 | ${env.build_flags}
4 | -D BOARD_SPARKFUN_MICRO_RP2040
5 | -I configs/SparkFunProMicro/
6 | upload_port = .pio/build/sparkfun-pro-micro/
--------------------------------------------------------------------------------
/GP2040-CE/configs/WaveshareZero/README.md:
--------------------------------------------------------------------------------
1 | # GP2040 Configuration for the Waveshare RP2040 Zero
2 |
3 | 
4 |
5 | Basic pin setup for the Waveshare RP2040 Zero.
6 |
--------------------------------------------------------------------------------
/GP2040-CE/configs/WaveshareZero/WaveshareRP2040Zero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/WaveshareZero/WaveshareRP2040Zero.png
--------------------------------------------------------------------------------
/GP2040-CE/configs/WaveshareZero/assets/WaveshareRP2040Zero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/configs/WaveshareZero/assets/WaveshareRP2040Zero.png
--------------------------------------------------------------------------------
/GP2040-CE/configs/WaveshareZero/env.ini:
--------------------------------------------------------------------------------
1 | [env:WaveshareZero]
2 | upload_port = .pio/build/WaveshareZero/
3 | build_flags =
4 | ${env.build_flags}
5 | -I configs/WaveshareZero/
6 |
--------------------------------------------------------------------------------
/GP2040-CE/docs/.nojekyll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/.nojekyll
--------------------------------------------------------------------------------
/GP2040-CE/docs/CNAME:
--------------------------------------------------------------------------------
1 | gp2040-ce.info
--------------------------------------------------------------------------------
/GP2040-CE/docs/_sidebar.md:
--------------------------------------------------------------------------------
1 | - [Home](/ "GP2040-CE | RP2040 Gamepad Firmware Documentation")
2 | - [Download](download "GP2040-CE | Download")
3 | - [Installation](installation "GP2040-CE | Installation")
4 | - [Wiring](wiring "GP2040-CE | Wiring Guide")
5 | - [Usage](usage "GP2040-CE | Usage")
6 | - [Shortcuts](gp2040-shortcuts "GP2040-CE | Shortcuts")
7 | - [Web Configurator](web-configurator "GP2040-CE | Web Configurator")
8 | - [FAQ](faq "GP2040-CE | Frequently Asked Questions (FAQ)")
9 | - [Development](development "GP2040-CE | Development")
10 |
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/boards/BentoBox.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/boards/BentoBox.jpg
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/boards/DURAL.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/boards/DURAL.jpg
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/boards/FightboardV3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/boards/FightboardV3.jpg
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/boards/FlatboxRev4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/boards/FlatboxRev4.jpg
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/boards/FlatboxRev4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/boards/FlatboxRev4.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/boards/FlatboxRev5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/boards/FlatboxRev5.jpg
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/boards/MavercadeKeebfighter.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/boards/MavercadeKeebfighter.jpg
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/boards/Pico.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/boards/Pico.jpg
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/boards/PicoFightingBoard.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/boards/PicoFightingBoard.jpg
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/boards/RP2040AdvancedBreakoutBoard.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/boards/RP2040AdvancedBreakoutBoard.jpg
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/boards/ReflexEncoder.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/boards/ReflexEncoder.jpg
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/boards/SparkFunProMicro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/boards/SparkFunProMicro.jpg
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/boards/WaveshareZero.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/boards/WaveshareZero.jpg
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/GP2040-PFB-demo-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/GP2040-PFB-demo-1.jpg
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/GP2040-PFB-demo-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/GP2040-PFB-demo-2.jpg
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/community-splash-screens/BentoBox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/community-splash-screens/BentoBox.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/community-splash-screens/Crush Counter v2.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/community-splash-screens/Crush Counter v2.0.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/community-splash-screens/GP2040-CE 1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/community-splash-screens/GP2040-CE 1.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/community-splash-screens/GP2040-CE 2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/community-splash-screens/GP2040-CE 2.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/community-splash-screens/GP2040-CE 3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/community-splash-screens/GP2040-CE 3.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/community-splash-screens/GP2040-CE 4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/community-splash-screens/GP2040-CE 4.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/community-splash-screens/GP2040-CE 5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/community-splash-screens/GP2040-CE 5.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/community-splash-screens/GP2040-CE 6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/community-splash-screens/GP2040-CE 6.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/community-splash-screens/GP2040-CE 7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/community-splash-screens/GP2040-CE 7.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/community-splash-screens/Sega Astro City.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/community-splash-screens/Sega Astro City.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/community-splash-screens/Street Fighter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/community-splash-screens/Street Fighter.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/community-splash-screens/TheTrain Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/community-splash-screens/TheTrain Logo.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gcp-display-config.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gcp-display-config.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/github-sponsor-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/github-sponsor-dark.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/github-sponsor-dimmed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/github-sponsor-dimmed.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/github-sponsor-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/github-sponsor-light.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gp2040-ce-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gp2040-ce-logo.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-ads1219.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-ads1219.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-analog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-analog.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-bootsel-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-bootsel-button.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-buzzer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-buzzer.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-dual-directional.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-dual-directional.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-extra-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-extra-button.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-input-reverse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-input-reverse.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-joystick-slider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-joystick-slider.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-onboard-led.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-onboard-led.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-player-number.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-player-number.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-ps4-mode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-ps4-mode.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-socd-slider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-socd-slider.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-turbo-shmup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-turbo-shmup.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-turbo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-turbo.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-add-ons-wii-extensions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-add-ons-wii-extensions.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-backup-and-restore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-backup-and-restore.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-display-config.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-display-config.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-home.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-label-selection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-label-selection.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-pin-mapping.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-pin-mapping.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-reset-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-reset-settings.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-rgb-led-config.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-rgb-led-config.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-rgb-led-custom-theme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-rgb-led-custom-theme.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/gpc-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/gpc-settings.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/_base-template.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/_base-template.xcf
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/fightboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/fightboard.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/guilty-gear-type-a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/guilty-gear-type-a.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/guilty-gear-type-b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/guilty-gear-type-b.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/guilty-gear-type-c.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/guilty-gear-type-c.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/guilty-gear-type-d.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/guilty-gear-type-d.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/guilty-gear-type-e.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/guilty-gear-type-e.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/neogeo-curved.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/neogeo-curved.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/neogeo-modern.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/neogeo-modern.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/neogeo-straight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/neogeo-straight.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/playstation-all.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/playstation-all.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/playstation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/playstation.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/six-button-fighter-plus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/six-button-fighter-plus.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/six-button-fighter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/six-button-fighter.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/static-rainbow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/static-rainbow.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/street-fighter-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/street-fighter-2.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/super-famicom-all.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/super-famicom-all.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/super-famicom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/super-famicom.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/tekken.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/tekken.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/xbox-all.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/xbox-all.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/images/led-themes/xbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/images/led-themes/xbox.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/wiring/RaspberryPiPico_Pinout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/wiring/RaspberryPiPico_Pinout.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/wiring/SparkFunProMicroRP2040_Pinout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/wiring/SparkFunProMicroRP2040_Pinout.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/assets/wiring/WaveshareRP2040Zero_Pinout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/assets/wiring/WaveshareRP2040Zero_Pinout.png
--------------------------------------------------------------------------------
/GP2040-CE/docs/community-splash-screens.md:
--------------------------------------------------------------------------------
1 | # Community Splash Screens
2 |
3 | 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.
4 |
5 | All images been formatted to 128x64 in black / white color.
6 |
7 | |  |  |  |  |  |
8 | |---|---|---|---|---|
9 | |  |  |  |  |  |
10 | |  |  | | | |
--------------------------------------------------------------------------------
/GP2040-CE/docs/download.md:
--------------------------------------------------------------------------------
1 | # Downloads
2 |
3 |
4 |
--------------------------------------------------------------------------------
/GP2040-CE/docs/downloads/flash_nuke.uf2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/downloads/flash_nuke.uf2
--------------------------------------------------------------------------------
/GP2040-CE/docs/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/docs/favicon.ico
--------------------------------------------------------------------------------
/GP2040-CE/docs/installation.md:
--------------------------------------------------------------------------------
1 | # Installation
2 |
3 | The instructions will slightly vary based on your device. These instructions are for a Raspberry Pi Pico.
4 |
5 | > If the device has been previously used for something other than GP2040-CE, please flash this file first to clear the on-board storage: [flash_nuke.uf2](https://raw.githubusercontent.com/OpenStickCommunity/GP2040-CE/main/docs/downloads/flash_nuke.uf2). After flashing the nuke file, wait a minute for the clear program to run and the RPI-RP2 drive to reappear.
6 |
7 | 1. Download the latest `GP2040-CE.uf2` file from the [Download](download) page for your board (e.g. `GP2040-CE_X.Y.Z_Pico.uf2` for the Raspberry Pi Pico).
8 | 2. Unplug your Pico.
9 | 3. Hold the BOOTSEL button on the Pico and plug into your computer. A new removable drive named `RPI-RP2` should appear in your file explorer.
10 | 4. Drag and drop the `GP2040-CE.uf2` file into the removable drive. This will flash the firmware file and automatically restart the Pico.
11 |
12 | 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.
13 |
14 | If you would like to customize your device, check out the built-in [Web Configurator](web-configurator).
15 |
--------------------------------------------------------------------------------
/GP2040-CE/docs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "docs",
3 | "version": "1.0.0",
4 | "description": "",
5 | "scripts": {
6 | "start": "docsify serve ./"
7 | },
8 | "keywords": [],
9 | "author": "",
10 | "license": "ISC",
11 | "devDependencies": {
12 | "docsify-cli": "^4.4.4"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/GP2040-CE/docs/site.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --mono-hue: 0;
3 | --mono-saturation : 0%;
4 | --modular-scale : 1.25;
5 | --base-font-size: 0.875rem;
6 | --theme-color : #C73C8B;
7 | --sidebar-width : 20rem;
8 | --sidebar-padding: 0 0.75rem;
9 | /* --content-max-width: 75em; */
10 | }
11 |
12 | hr {
13 | margin: 1.5em 0;
14 | }
15 |
16 | .form-dropdown label {
17 | display: none;
18 | margin-right: 4px;
19 | }
20 |
21 | .hotkey {
22 | text-transform: uppercase;
23 | }
24 |
25 | .label-select {
26 | display: inline-block;
27 | margin-left: 4px;
28 | }
29 |
30 | .sticky-label-select {
31 | /* width: 100%; */
32 | position: fixed!important;
33 | top: var(--sidebar-toggle-offset-top);
34 | height: var(--sidebar-toggle-height);
35 | right: 0px;
36 | background: var(--sidebar-toggle-background, transparent);
37 | padding: 4px;
38 | border-radius: 4px;
39 | transform: translateY(-100%);
40 | opacity: 0.8;
41 | z-index: 10;
42 | }
43 |
44 | .sticky-label-select label {
45 | display: block;
46 | text-align: center;
47 | margin-top: -4px;
48 | margin-bottom: 4px;
49 | }
50 |
51 | /*************/
52 | /* Downloads */
53 | /*************/
54 |
55 | .download-category {
56 | margin-bottom: 2rem;
57 | }
58 |
59 | .download-category h3 {
60 | margin-bottom: 1rem;
61 | }
62 |
63 | .download-category-list {
64 | display: flex;
65 | flex-wrap: wrap;
66 | align-items: start;
67 | width: 100%;
68 | padding-left: 1%;
69 | }
70 |
71 | .download-category-list a {
72 | display: flex;
73 | flex: 1 1 auto;
74 | max-width: 31%;
75 | margin: 0 1%;
76 | align-items: center;
77 | justify-content: center;
78 | }
79 |
80 | .download-category-list a > div {
81 | align-items: center;
82 | display: flex;
83 | flex-direction: column;
84 | }
85 |
86 | .download-category-list a > div span {
87 | display: inline-block;
88 | width: 100%;
89 | text-align: center;
90 | font-size: 1rem;
91 | font-weight: 600;
92 | }
--------------------------------------------------------------------------------
/GP2040-CE/docs/wiring.md:
--------------------------------------------------------------------------------
1 | # Wiring
2 |
3 | These are the default pin mappings for each GP2040-CE supported microcontroller board.
4 |
5 | ## Raspberry Pi Pico
6 |
7 | ?> 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.
8 |
9 | 
10 |
11 | ## SparkFun Pro Micro - RP2040
12 |
13 | 
14 |
15 | ## Waveshare RP2040-Zero
16 |
17 | 
18 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/addonmanager.h:
--------------------------------------------------------------------------------
1 | #ifndef _ADDONMANAGER_H_
2 | #define _ADDONMANAGER_H_
3 |
4 | #include "gpaddon.h"
5 |
6 | #include
7 | #include
8 |
9 | enum ADDON_PROCESS {
10 | CORE0_INPUT,
11 | CORE0_USBREPORT,
12 | CORE1_LOOP
13 | };
14 |
15 | struct AddonBlock {
16 | GPAddon * ptr;
17 | ADDON_PROCESS process;
18 | };
19 |
20 | class AddonManager {
21 | public:
22 | AddonManager() {}
23 | ~AddonManager() {}
24 | void LoadAddon(GPAddon*, ADDON_PROCESS);
25 | void PreprocessAddons(ADDON_PROCESS);
26 | void ProcessAddons(ADDON_PROCESS);
27 | GPAddon * GetAddon(std::string); // hack for NeoPicoLED
28 | private:
29 | std::vector addons; // addons currently loaded
30 | };
31 |
32 | #endif
33 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/addons/analog.h:
--------------------------------------------------------------------------------
1 | #ifndef _Analog_H
2 | #define _Analog_H
3 |
4 | #include "gpaddon.h"
5 |
6 | #include "GamepadEnums.h"
7 |
8 | #include "BoardConfig.h"
9 |
10 | #ifndef ANALOG_INPUT_ENABLED
11 | #define ANALOG_INPUT_ENABLED 0
12 | #endif
13 |
14 | #ifndef ANALOG_ADC_VRX
15 | #define ANALOG_ADC_VRX -1
16 | #endif
17 |
18 | #ifndef ANALOG_ADC_VRY
19 | #define ANALOG_ADC_VRY -1
20 | #endif
21 |
22 | // Analog Module Name
23 | #define AnalogName "Analog"
24 |
25 | class AnalogInput : public GPAddon {
26 | public:
27 | virtual bool available();
28 | virtual void setup(); // Analog Setup
29 | virtual void process(); // Analog Process
30 | virtual void preprocess() {}
31 | virtual std::string name() { return AnalogName; }
32 | private:
33 | uint8_t analogAdcPinX;
34 | uint8_t analogAdcPinY;
35 | };
36 |
37 | #endif // _Analog_H_
--------------------------------------------------------------------------------
/GP2040-CE/headers/addons/board_led.h:
--------------------------------------------------------------------------------
1 | #ifndef _BoardLed_H
2 | #define _BoardLed_H
3 |
4 | #include "gpaddon.h"
5 | #include "pico/stdlib.h"
6 | #include "storagemanager.h"
7 |
8 | #ifndef BOARD_LED_ENABLED
9 | #define BOARD_LED_ENABLED 0
10 | #endif
11 |
12 | #ifndef BOARD_LED_TYPE
13 | #define BOARD_LED_TYPE BOARD_LED_OFF
14 | #endif
15 |
16 | // BoardLed Module Name
17 | #define OnBoardLedName "OnBoardLed"
18 |
19 | #define BOARD_LED_PIN 25
20 | #define BLINK_INTERVAL_USB_UNMOUNTED 200
21 | #define BLINK_INTERVAL_CONFIG_MODE 1000
22 |
23 | class BoardLedAddon : public GPAddon {
24 | public:
25 | virtual bool available();
26 | virtual void setup(); // BoardLed Setup
27 | virtual void process(); // BoardLed Process
28 | virtual void preprocess() {}
29 | virtual std::string name() { return OnBoardLedName; }
30 | private:
31 | OnBoardLedMode onBoardLedMode;
32 | bool isConfigMode;
33 | bool prevState;
34 | uint32_t timeSinceBlink;
35 | };
36 |
37 | #endif // _BoardLed_H_
--------------------------------------------------------------------------------
/GP2040-CE/headers/addons/bootsel_button.h:
--------------------------------------------------------------------------------
1 | #ifndef _BootselButton_H
2 | #define _BootselButton_H
3 |
4 | #include "gpaddon.h"
5 | #include "gamepad.h"
6 |
7 | #ifndef BOOTSEL_BUTTON_ENABLED
8 | #define BOOTSEL_BUTTON_ENABLED 0
9 | #endif
10 |
11 | // BootselButton Module Name
12 | #define BootselButtonName "BootselButton"
13 |
14 | class BootselButtonAddon : public GPAddon {
15 | public:
16 | virtual bool available();
17 | virtual void setup(); // BootselButton Setup
18 | virtual void process() {} // BootselButton Process
19 | virtual void preprocess();
20 | virtual std::string name() { return BootselButtonName; }
21 | private:
22 | bool isBootselPressed();
23 | uint32_t bootselButtonMap;
24 | };
25 |
26 | #endif // _BootselButton_H_
--------------------------------------------------------------------------------
/GP2040-CE/headers/addons/extra_button.h:
--------------------------------------------------------------------------------
1 | #ifndef _ExtraButton_H
2 | #define _ExtraButton_H
3 |
4 | #include "gpaddon.h"
5 | #include "gamepad.h"
6 |
7 | #ifndef EXTRA_BUTTON_ENABLED
8 | #define EXTRA_BUTTON_ENABLED 0
9 | #endif
10 |
11 | // ExtraButton Module Name
12 | #define ExtraButtonName "ExtraButton"
13 |
14 | class ExtraButtonAddon : public GPAddon {
15 | public:
16 | virtual bool available();
17 | virtual void setup(); // ExtraButton Setup
18 | virtual void process() {} // ExtraButton Process
19 | virtual void preprocess();
20 | virtual std::string name() { return ExtraButtonName; }
21 | private:
22 | uint32_t extraButtonMap;
23 | uint8_t extraButtonPin;
24 | };
25 |
26 | #endif // _ExtraButton_H_
--------------------------------------------------------------------------------
/GP2040-CE/headers/addons/i2canalog1219.h:
--------------------------------------------------------------------------------
1 | #ifndef _I2CAnalog_H
2 | #define _I2CAnalog_H
3 |
4 | #include
5 |
6 | #include "gpaddon.h"
7 |
8 | #include "GamepadEnums.h"
9 |
10 | #ifndef I2C_ANALOG1219_ENABLED
11 | #define I2C_ANALOG1219_ENABLED 0
12 | #endif
13 |
14 | #ifndef I2C_ANALOG1219_SDA_PIN
15 | #define I2C_ANALOG1219_SDA_PIN -1
16 | #endif
17 |
18 | #ifndef I2C_ANALOG1219_SCL_PIN
19 | #define I2C_ANALOG1219_SCL_PIN -1
20 | #endif
21 |
22 | #ifndef I2C_ANALOG1219_BLOCK
23 | #define I2C_ANALOG1219_BLOCK i2c0
24 | #endif
25 |
26 | #ifndef I2C_ANALOG1219_SPEED
27 | #define I2C_ANALOG1219_SPEED 400000
28 | #endif
29 |
30 | #ifndef I2C_ANALOG1219_ADDRESS
31 | #define I2C_ANALOG1219_ADDRESS 0x40
32 | #endif
33 |
34 | // Analog Module Name
35 | #define I2CAnalog1219Name "I2CAnalog"
36 |
37 | typedef struct {
38 | float A[4];
39 | } ADS_PINS;
40 |
41 | class I2CAnalog1219Input : public GPAddon {
42 | public:
43 | virtual bool available();
44 | virtual void setup(); // Analog Setup
45 | virtual void preprocess() {}
46 | virtual void process(); // Analog Process
47 | virtual std::string name() { return I2CAnalog1219Name; }
48 | private:
49 | ADS1219 * ads;
50 | ADS_PINS pins;
51 | int channelHop;
52 | uint32_t uIntervalMS; // ADS1219 Interval
53 | uint32_t nextTimer; // Turbo Timer
54 | };
55 |
56 | #endif // _I2CAnalog_H_
57 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/addons/jslider.h:
--------------------------------------------------------------------------------
1 | #ifndef _JSlider_H
2 | #define _JSlider_H
3 |
4 | #include "gpaddon.h"
5 |
6 | #include "GamepadEnums.h"
7 |
8 | #ifndef JSLIDER_ENABLED
9 | #define JSLIDER_ENABLED 0
10 | #endif
11 |
12 | #ifndef PIN_SLIDER_LS
13 | #define PIN_SLIDER_LS -1
14 | #endif
15 |
16 | #ifndef PIN_SLIDER_RS
17 | #define PIN_SLIDER_RS -1
18 | #endif
19 |
20 | // JSlider Module Name
21 | #define JSliderName "JSlider"
22 |
23 | class JSliderInput : public GPAddon {
24 | public:
25 | virtual bool available();
26 | virtual void setup(); // JSlider Button Setup
27 | virtual void preprocess() {}
28 | virtual void process(); // JSlider process
29 | virtual std::string name() { return JSliderName; }
30 | private:
31 | DpadMode read();
32 | void debounce();
33 | DpadMode dpadState; // Saved locally for debounce
34 | DpadMode dDebState; // Debounce JSlider State
35 | uint32_t uDebTime; // Debounce JSlider Time
36 | uint8_t pinSliderLS;
37 | uint8_t pinSliderRS;
38 | };
39 |
40 | #endif // _JSlider_H_
--------------------------------------------------------------------------------
/GP2040-CE/headers/addons/playernum.h:
--------------------------------------------------------------------------------
1 | #ifndef _PlayerNum_H
2 | #define _PlayerNum_H
3 |
4 | #include "gpaddon.h"
5 |
6 | #include "GamepadEnums.h"
7 |
8 | #include "BoardConfig.h"
9 |
10 | #ifndef PLAYERNUM_ADDON_ENABLED
11 | #define PLAYERNUM_ADDON_ENABLED 0
12 | #endif
13 |
14 | #ifndef PLAYER_NUMBER
15 | #define PLAYER_NUMBER 1
16 | #endif
17 |
18 | // Analog Module Name
19 | #define PlayerNumName "PlayerNum"
20 |
21 | class PlayerNumAddon : public GPAddon {
22 | public:
23 | virtual bool available();
24 | virtual void setup(); // Analog Setup
25 | virtual void process(); // Analog Process
26 | virtual void preprocess() {}
27 | virtual std::string name() { return PlayerNumName; }
28 | private:
29 | void handleLED(int);
30 | uint8_t assigned;
31 | uint8_t playerNum;
32 | uint8_t xinputIDs[4];
33 | };
34 |
35 | #endif // _PlayerNum_H
--------------------------------------------------------------------------------
/GP2040-CE/headers/addons/pleds.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SPDX-License-Identifier: MIT
3 | * SPDX-FileCopyrightText: Copyright (c) 2021 Jason Skuby (mytechtoybox.com)
4 | */
5 |
6 | #ifndef _PLEDS_H_
7 | #define _PLEDS_H_
8 |
9 | #include "BoardConfig.h"
10 | #include
11 | #include "AnimationStation.hpp"
12 | #include "PlayerLEDs.h"
13 | #include "gpaddon.h"
14 | #include "helper.h"
15 |
16 | // This needs to be moved to storage if we're going to share between modules
17 | extern NeoPico *neopico;
18 | extern AnimationStation as;
19 |
20 | class PWMPlayerLEDs : public PlayerLEDs
21 | {
22 | public:
23 | void setup();
24 | void display();
25 | };
26 |
27 | // Player LED Module
28 | #define PLEDName "PLED"
29 |
30 | // Player LED Module
31 | class PlayerLEDAddon : public GPAddon
32 | {
33 | public:
34 | virtual bool available();
35 | virtual void setup();
36 | virtual void preprocess() {}
37 | virtual void process();
38 | virtual std::string name() { return PLEDName; }
39 | PlayerLEDAddon() : type(PLED_TYPE) {}
40 | PlayerLEDAddon(PLEDType type) : type(type) {}
41 |
42 | protected:
43 | PLEDType type;
44 | PWMPlayerLEDs *pwmLEDs = nullptr;
45 | PLEDAnimationState animationState;
46 | };
47 |
48 | #endif
49 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/addons/ps4mode.h:
--------------------------------------------------------------------------------
1 | #ifndef PS4MODE_H_
2 | #define PS4MODE_H_
3 |
4 | #include "gpaddon.h"
5 | #include "storagemanager.h"
6 |
7 | #ifndef PS4MODE_ADDON_ENABLED
8 | #define PS4MODE_ADDON_ENABLED 0
9 | #endif
10 |
11 | // Turbo Module Name
12 | #define PS4ModeName "PS4Mode"
13 |
14 | class PS4ModeAddon : public GPAddon {
15 | public:
16 | virtual bool available();
17 | virtual void setup(); // TURBO Button Setup
18 | virtual void preprocess() {}
19 | virtual void process(); // TURBO Setting of buttons (Enable/Disable)
20 | virtual std::string name() { return PS4ModeName; }
21 | private:
22 | struct mbedtls_rsa_context rsa_context;
23 | uint8_t hashed_nonce[32];
24 | PS4Options ps4Options;
25 | };
26 |
27 | #endif // PS4MODE_H_
28 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/addons/reverse.h:
--------------------------------------------------------------------------------
1 | #ifndef _Reverse_H
2 | #define _Reverse_H
3 |
4 | #include "gpaddon.h"
5 |
6 | #include "GamepadEnums.h"
7 |
8 | #ifndef REVERSE_ENABLED
9 | #define REVERSE_ENABLED 0
10 | #endif
11 |
12 | #ifndef PIN_REVERSE
13 | #define PIN_REVERSE -1
14 | #endif
15 |
16 | // Reverse Module Name
17 | #define ReverseName "Input Reverse"
18 |
19 | class ReverseInput : public GPAddon {
20 | public:
21 | virtual bool available();
22 | virtual void setup(); // Reverse Button Setup
23 | virtual void preprocess() {}
24 | virtual void process(); // Reverse process
25 | virtual std::string name() { return ReverseName; }
26 | private:
27 | void update();
28 | uint8_t input(uint8_t valueMask, uint16_t buttonMask, uint16_t buttonMaskReverse, uint8_t action, bool invertAxis);
29 |
30 | bool state;
31 |
32 | uint8_t pinLED;
33 |
34 | GamepadButtonMapping *mapDpadUp;
35 | GamepadButtonMapping *mapDpadDown;
36 | GamepadButtonMapping *mapDpadLeft;
37 | GamepadButtonMapping *mapDpadRight;
38 |
39 | bool invertXAxis;
40 | bool invertYAxis;
41 |
42 | // 0 - Ignore, 1 - Enabled, 2 - Neutral
43 | uint8_t actionUp;
44 | uint8_t actionDown;
45 | uint8_t actionLeft;
46 | uint8_t actionRight;
47 |
48 | uint8_t pinButtonReverse;
49 | };
50 |
51 | #endif // _Reverse_H_
--------------------------------------------------------------------------------
/GP2040-CE/headers/addons/slider_socd.h:
--------------------------------------------------------------------------------
1 | #ifndef _SliderSOCD_H
2 | #define _SliderSOCD_H
3 |
4 | #include "gpaddon.h"
5 |
6 | #include "GamepadEnums.h"
7 |
8 | #ifndef SLIDER_SOCD_ENABLED
9 | #define SLIDER_SOCD_ENABLED 0
10 | #endif
11 |
12 | #ifndef PIN_SLIDER_SOCD_ONE
13 | #define PIN_SLIDER_SOCD_ONE -1
14 | #endif
15 |
16 | #ifndef PIN_SLIDER_SOCD_TWO
17 | #define PIN_SLIDER_SOCD_TWO -1
18 | #endif
19 |
20 | #ifndef SLIDER_SOCD_SLOT_ONE
21 | #define SLIDER_SOCD_SLOT_ONE SOCD_MODE_UP_PRIORITY
22 | #endif
23 |
24 | #ifndef SLIDER_SOCD_SLOT_TWO
25 | #define SLIDER_SOCD_SLOT_TWO SOCD_MODE_SECOND_INPUT_PRIORITY
26 | #endif
27 |
28 | #ifndef SLIDER_SOCD_SLOT_DEFAULT
29 | #define SLIDER_SOCD_SLOT_DEFAULT SOCD_MODE_NEUTRAL
30 | #endif
31 |
32 | // Slider Module Name
33 | #define SliderSOCDName "SliderSOCD"
34 |
35 | class SliderSOCDInput : public GPAddon {
36 | public:
37 | virtual bool available();
38 | virtual void setup(); // SliderSOCD Button Setup
39 | virtual void preprocess() {}
40 | virtual void process(); // SliderSOCD process
41 | virtual std::string name() { return SliderSOCDName; }
42 | private:
43 | SOCDMode read();
44 | void debounce();
45 | SOCDMode socdState; // Saved locally for debounce
46 | SOCDMode dDebState; // Debounce SliderSOCD State
47 | uint32_t uDebTime; // Debounce SliderSOCD Time
48 | SOCDMode sliderSOCDModeOne;
49 | SOCDMode sliderSOCDModeTwo;
50 | SOCDMode sliderSOCDModeDefault;
51 | uint8_t pinSliderSOCDOne;
52 | uint8_t pinSliderSOCDTwo;
53 | };
54 |
55 | #endif // _SliderSOCD_H_
--------------------------------------------------------------------------------
/GP2040-CE/headers/addons/wiiext.h:
--------------------------------------------------------------------------------
1 | #ifndef _WIIExtensionAddon_H
2 | #define _WIIExtensionAddon_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include "BoardConfig.h"
8 | #include "gpaddon.h"
9 | #include "gamepad.h"
10 | #include "storagemanager.h"
11 | #include "WiiExtension.h"
12 |
13 | // WiiExtension Module Name
14 | #define WiiExtensionName "WiiExtension"
15 |
16 | #ifndef WII_EXTENSION_ENABLED
17 | #define WII_EXTENSION_ENABLED 0
18 | #endif
19 |
20 | #ifndef WII_EXTENSION_I2C_ADDR
21 | #define WII_EXTENSION_I2C_ADDR 0x52
22 | #endif
23 |
24 | #ifndef WII_EXTENSION_I2C_SDA_PIN
25 | #define WII_EXTENSION_I2C_SDA_PIN -1
26 | #endif
27 |
28 | #ifndef WII_EXTENSION_I2C_SCL_PIN
29 | #define WII_EXTENSION_I2C_SCL_PIN -1
30 | #endif
31 |
32 | #ifndef WII_EXTENSION_I2C_BLOCK
33 | #define WII_EXTENSION_I2C_BLOCK i2c0
34 | #endif
35 |
36 | #ifndef WII_EXTENSION_I2C_SPEED
37 | #define WII_EXTENSION_I2C_SPEED 400000
38 | #endif
39 |
40 | class WiiExtensionInput : public GPAddon {
41 | public:
42 | virtual bool available();
43 | virtual void setup(); // WiiExtension Setup
44 | virtual void process(); // WiiExtension Process
45 | virtual void preprocess() {}
46 | virtual std::string name() { return WiiExtensionName; }
47 | private:
48 | WiiExtension * wii;
49 | uint32_t uIntervalMS;
50 | uint32_t nextTimer;
51 |
52 | bool buttonC = false;
53 | bool buttonZ = false;
54 |
55 | bool buttonA = false;
56 | bool buttonB = false;
57 | bool buttonX = false;
58 | bool buttonY = false;
59 | bool buttonL = false;
60 | bool buttonZL = false;
61 | bool buttonR = false;
62 | bool buttonZR = false;
63 |
64 | bool buttonSelect = false;
65 | bool buttonStart = false;
66 | bool buttonHome = false;
67 |
68 | bool dpadUp = false;
69 | bool dpadDown = false;
70 | bool dpadLeft = false;
71 | bool dpadRight = false;
72 |
73 | uint16_t triggerLeft = 0;
74 | uint16_t triggerRight = 0;
75 | uint16_t whammyBar = 0;
76 |
77 | uint16_t leftX = 0;
78 | uint16_t leftY = 0;
79 | uint16_t rightX = 0;
80 | uint16_t rightY = 0;
81 |
82 | uint16_t map(uint16_t x, uint16_t in_min, uint16_t in_max, uint16_t out_min, uint16_t out_max);
83 | };
84 |
85 | #endif // _WIIExtensionAddon_H
86 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/configmanager.h:
--------------------------------------------------------------------------------
1 | #ifndef _CONFIG_H_
2 | #define _CONFIG_H_
3 |
4 | #include "enums.h"
5 | #include "gpconfig.h"
6 | #include "storagemanager.h"
7 |
8 | class ConfigManager {
9 | public:
10 | ConfigManager(ConfigManager const&) = delete;
11 | void operator=(ConfigManager const&) = delete;
12 | static ConfigManager& getInstance() {// Thread-safe storage ensures cross-thread talk
13 | static ConfigManager instance; // Guaranteed to be destroyed. // Instantiated on first use.
14 | return instance;
15 | }
16 | void setup(ConfigType);
17 | void loop(); // If anything needs to update in the gpconfig driver
18 | void setGamepadOptions(Gamepad*);
19 | void setBoardOptions(BoardOptions);
20 | void setPreviewBoardOptions(BoardOptions);
21 | void setLedOptions(LEDOptions);
22 | void setSplashImage(const SplashImage&);
23 | private:
24 | ConfigManager() {}
25 | void setupConfig(GPConfig*);
26 | ConfigType cType;
27 | GPConfig * config;
28 | };
29 |
30 | #endif
--------------------------------------------------------------------------------
/GP2040-CE/headers/configs/displayconfig.h:
--------------------------------------------------------------------------------
1 | #ifndef _DISPLAYCONFIG_H_
2 | #define _DISPLAYCONFIG_H_
3 |
4 | #include "gpconfig.h"
5 |
6 | #include
7 |
8 | class DisplayState {
9 | public:
10 | private:
11 | std::vector options;
12 | };
13 |
14 | class DisplayMenu {
15 | public:
16 |
17 | private:
18 | };
19 |
20 | class DisplayConfig : public GPConfig
21 | {
22 | public:
23 | virtual void setup();
24 | virtual void loop();
25 | private:
26 | std::vector menu_data;
27 | };
28 |
29 | #endif
--------------------------------------------------------------------------------
/GP2040-CE/headers/configs/serialconfig.h:
--------------------------------------------------------------------------------
1 | #ifndef _SERIALCONFIG_H_
2 | #define _SERIALCONFIG_H_
3 |
4 | #include "gpconfig.h"
5 |
6 | class SerialConfig : public GPConfig
7 | {
8 | public:
9 | virtual void setup();
10 | virtual void loop();
11 | private:
12 | };
13 |
14 | #endif
--------------------------------------------------------------------------------
/GP2040-CE/headers/configs/webconfig.h:
--------------------------------------------------------------------------------
1 | #ifndef _WEBCONFIG_H_
2 | #define _WEBCONFIG_H_
3 |
4 | #include "gpconfig.h"
5 |
6 | class WebConfig : public GPConfig
7 | {
8 | public:
9 | virtual void setup();
10 | virtual void loop();
11 |
12 | enum BootModes {
13 | GAMEPAD,
14 | WEBCONFIG,
15 | BOOTSEL
16 | };
17 | private:
18 | };
19 |
20 | #endif
--------------------------------------------------------------------------------
/GP2040-CE/headers/enums.h:
--------------------------------------------------------------------------------
1 | #ifndef _ENUMS_H_
2 | #define _ENUMS_H_
3 |
4 | typedef enum
5 | {
6 | BUTTON_LAYOUT_STICK,
7 | BUTTON_LAYOUT_STICKLESS,
8 | BUTTON_LAYOUT_BUTTONS_ANGLED,
9 | BUTTON_LAYOUT_BUTTONS_BASIC,
10 | BUTTON_LAYOUT_KEYBOARD_ANGLED,
11 | BUTTON_LAYOUT_KEYBOARDA,
12 | BUTTON_LAYOUT_DANCEPADA,
13 | BUTTON_LAYOUT_TWINSTICKA,
14 | BUTTON_LAYOUT_BLANKA,
15 | BUTTON_LAYOUT_VLXA,
16 | BUTTON_LAYOUT_FIGHTBOARD_STICK,
17 | BUTTON_LAYOUT_FIGHTBOARD_MIRRORED,
18 | BUTTON_LAYOUT_CUSTOMA,
19 | } ButtonLayout;
20 |
21 | typedef enum
22 | {
23 | BUTTON_LAYOUT_ARCADE,
24 | BUTTON_LAYOUT_STICKLESSB,
25 | BUTTON_LAYOUT_BUTTONS_ANGLEDB,
26 | BUTTON_LAYOUT_VEWLIX,
27 | BUTTON_LAYOUT_VEWLIX7,
28 | BUTTON_LAYOUT_CAPCOM,
29 | BUTTON_LAYOUT_CAPCOM6,
30 | BUTTON_LAYOUT_SEGA2P,
31 | BUTTON_LAYOUT_NOIR8,
32 | BUTTON_LAYOUT_KEYBOARDB,
33 | BUTTON_LAYOUT_DANCEPADB,
34 | BUTTON_LAYOUT_TWINSTICKB,
35 | BUTTON_LAYOUT_BLANKB,
36 | BUTTON_LAYOUT_VLXB,
37 | BUTTON_LAYOUT_FIGHTBOARD,
38 | BUTTON_LAYOUT_FIGHTBOARD_STICK_MIRRORED,
39 | BUTTON_LAYOUT_CUSTOMB,
40 | } ButtonLayoutRight;
41 |
42 | typedef enum
43 | {
44 | STATICSPLASH,
45 | CLOSEIN,
46 | CLOSEINCUSTOM,
47 | NOSPLASH,
48 | } SplashMode;
49 |
50 | typedef enum
51 | {
52 | MAIN,
53 | X,
54 | Y,
55 | Z,
56 | CUSTOM,
57 | LEGACY
58 | } SplashChoice;
59 |
60 | typedef enum
61 | {
62 | BOARD_LED_OFF,
63 | MODE_INDICATOR,
64 | INPUT_TEST
65 | } OnBoardLedMode;
66 |
67 | typedef enum
68 | {
69 | CONFIG_TYPE_WEB = 0,
70 | CONFIG_TYPE_SERIAL,
71 | CONFIG_TYPE_DISPLAY
72 | } ConfigType;
73 |
74 | #endif
75 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/gamepad/GamepadConfig.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SPDX-License-Identifier: MIT
3 | * SPDX-FileCopyrightText: Copyright (c) 2021 Jason Skuby (mytechtoybox.com)
4 | */
5 |
6 | #pragma once
7 |
8 | #ifndef DEFAULT_SOCD_MODE
9 | #define DEFAULT_SOCD_MODE SOCD_MODE_NEUTRAL
10 | #endif
11 |
12 | #ifndef DEFAULT_DPAD_MODE
13 | #define DEFAULT_DPAD_MODE DPAD_MODE_DIGITAL
14 | #endif
15 |
16 | #ifndef DEFAULT_INPUT_MODE
17 | #define DEFAULT_INPUT_MODE INPUT_MODE_XINPUT
18 | #endif
19 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/gamepad/GamepadDebouncer.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SPDX-License-Identifier: MIT
3 | * SPDX-FileCopyrightText: Copyright (c) 2021 Jason Skuby (mytechtoybox.com)
4 | */
5 |
6 | #pragma once
7 |
8 | #include
9 | #include
10 | #include "GamepadState.h"
11 |
12 | // Implement this wrapper function for your platform
13 | // TODO: Make this a pure virtual member instead.
14 | uint32_t getMillis();
15 |
16 | class GamepadDebouncer
17 | {
18 | public:
19 | GamepadDebouncer(const uint8_t debounceMS = 5) : debounceMS(debounceMS) { }
20 |
21 | void debounce(GamepadState *state);
22 |
23 | const uint8_t debounceMS;
24 | GamepadState debounceState;
25 | uint32_t dpadTime[4];
26 | uint32_t buttonTime[GAMEPAD_BUTTON_COUNT];
27 | };
28 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/gamepad/GamepadEnums.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SPDX-License-Identifier: MIT
3 | * SPDX-FileCopyrightText: Copyright (c) 2021 Jason Skuby (mytechtoybox.com)
4 | */
5 |
6 | #pragma once
7 |
8 | // The available input modes
9 | // TODO: Think about making enums "class enum" instead. This will keep them out of the global namespace
10 | // and provide strong type assurance instead of being treated as ints. Also, modern c++ would tend towards
11 | // using Pascal-case naming for the individual declarations.
12 | typedef enum
13 | {
14 | INPUT_MODE_XINPUT,
15 | INPUT_MODE_SWITCH,
16 | INPUT_MODE_HID,
17 | INPUT_MODE_KEYBOARD,
18 | INPUT_MODE_PS4,
19 | INPUT_MODE_CONFIG = 255,
20 | } InputMode;
21 |
22 | // The available stick emulation modes
23 | typedef enum
24 | {
25 | DPAD_MODE_DIGITAL,
26 | DPAD_MODE_LEFT_ANALOG,
27 | DPAD_MODE_RIGHT_ANALOG,
28 | } DpadMode;
29 |
30 | // The available SOCD cleaning methods
31 | typedef enum
32 | {
33 | SOCD_MODE_UP_PRIORITY, // U+D=U, L+R=N
34 | SOCD_MODE_NEUTRAL, // U+D=N, L+R=N
35 | SOCD_MODE_SECOND_INPUT_PRIORITY, // U>D=D, L>R=R (Last Input Priority, aka Last Win)
36 | SOCD_MODE_FIRST_INPUT_PRIORITY, // U>D=U, L>R=L (First Input Priority, aka First Win)
37 | SOCD_MODE_BYPASS, // U+D=UD, L+R=LR (No cleaning applied)
38 | } SOCDMode;
39 |
40 | // Enum for tracking last direction state of Second Input SOCD method
41 | typedef enum
42 | {
43 | DIRECTION_NONE,
44 | DIRECTION_UP,
45 | DIRECTION_DOWN,
46 | DIRECTION_LEFT,
47 | DIRECTION_RIGHT
48 | } DpadDirection;
49 |
50 | // The available hotkey actions
51 | typedef enum
52 | {
53 | HOTKEY_NONE,
54 | HOTKEY_DPAD_DIGITAL,
55 | HOTKEY_DPAD_LEFT_ANALOG,
56 | HOTKEY_DPAD_RIGHT_ANALOG,
57 | HOTKEY_HOME_BUTTON,
58 | HOTKEY_CAPTURE_BUTTON,
59 | HOTKEY_SOCD_UP_PRIORITY,
60 | HOTKEY_SOCD_NEUTRAL,
61 | HOTKEY_SOCD_LAST_INPUT,
62 | HOTKEY_INVERT_X_AXIS,
63 | HOTKEY_INVERT_Y_AXIS,
64 | HOTKEY_SOCD_FIRST_INPUT,
65 | HOTKEY_SOCD_BYPASS
66 | } GamepadHotkey;
67 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/gamepad/GamepadOptions.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SPDX-License-Identifier: MIT
3 | * SPDX-FileCopyrightText: Copyright (c) 2021 Jason Skuby (mytechtoybox.com)
4 | */
5 |
6 | #pragma once
7 |
8 | #include
9 | #include "GamepadEnums.h"
10 |
11 | typedef struct
12 | {
13 | uint8_t dpadMask;
14 | GamepadHotkey action;
15 | } GamepadHotkeyEntry;
16 |
17 | struct GamepadOptions
18 | {
19 | InputMode inputMode {InputMode::INPUT_MODE_XINPUT};
20 | DpadMode dpadMode {DpadMode::DPAD_MODE_DIGITAL};
21 | SOCDMode socdMode {SOCDMode::SOCD_MODE_NEUTRAL};
22 | bool invertXAxis;
23 | bool invertYAxis;
24 |
25 | uint8_t keyDpadUp;
26 | uint8_t keyDpadDown;
27 | uint8_t keyDpadLeft;
28 | uint8_t keyDpadRight;
29 | uint8_t keyButtonB1;
30 | uint8_t keyButtonB2;
31 | uint8_t keyButtonB3;
32 | uint8_t keyButtonB4;
33 | uint8_t keyButtonL1;
34 | uint8_t keyButtonR1;
35 | uint8_t keyButtonL2;
36 | uint8_t keyButtonR2;
37 | uint8_t keyButtonS1;
38 | uint8_t keyButtonS2;
39 | uint8_t keyButtonL3;
40 | uint8_t keyButtonR3;
41 | uint8_t keyButtonA1;
42 | uint8_t keyButtonA2;
43 |
44 | GamepadHotkeyEntry hotkeyF1Up;
45 | GamepadHotkeyEntry hotkeyF1Down;
46 | GamepadHotkeyEntry hotkeyF1Left;
47 | GamepadHotkeyEntry hotkeyF1Right;
48 | GamepadHotkeyEntry hotkeyF2Up;
49 | GamepadHotkeyEntry hotkeyF2Down;
50 | GamepadHotkeyEntry hotkeyF2Left;
51 | GamepadHotkeyEntry hotkeyF2Right;
52 |
53 | uint32_t checksum;
54 | };
55 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/gamepad/GamepadStorage.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SPDX-License-Identifier: MIT
3 | * SPDX-FileCopyrightText: Copyright (c) 2021 Jason Skuby (mytechtoybox.com)
4 | */
5 |
6 | #pragma once
7 |
8 | #include
9 |
10 | #include "GamepadOptions.h"
11 |
12 | #define STORAGE_FIRST_AVAILBLE_INDEX 2048
13 |
14 | class GamepadStorage
15 | {
16 | public:
17 | virtual void start(); // TODO: Should be pure virtual.
18 | virtual void save(); // TODO: Should be pure virtual.
19 |
20 | GamepadOptions getGamepadOptions();
21 | void setGamepadOptions(GamepadOptions options);
22 | };
23 |
24 | static GamepadStorage GamepadStore;
25 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/gamepad/descriptors/MouseDescriptors.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/copyrat90/gba-pico-gamepad/449c027bd421b1b002382246f7452691712751a1/GP2040-CE/headers/gamepad/descriptors/MouseDescriptors.h
--------------------------------------------------------------------------------
/GP2040-CE/headers/gba/GBAKey.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | enum GBAKey : uint32_t {
4 | A = 1 << 0,
5 | B = 1 << 1,
6 | SELECT = 1 << 2,
7 | START = 1 << 3,
8 | RIGHT = 1 << 4,
9 | LEFT = 1 << 5,
10 | UP = 1 << 6,
11 | DOWN = 1 << 7,
12 | R = 1 << 8,
13 | L = 1 << 9
14 | };
15 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/gba/multiboot.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SPDX-License-Identifier: CC0-1.0
3 | *
4 | * This is a port of `gba_03_multiboot` to the RPi Pico.
5 | * https://github.com/akkera102/gba_03_multiboot
6 | */
7 |
8 | #pragma once
9 |
10 | #include
11 |
12 | namespace gba
13 | {
14 |
15 | /// @return `true` if ROM is sent
16 | /// @return `false` if GBA program is already running, and only `Start` is pressed on it
17 | bool sendGBARom(const uint8_t* romAddr, uint32_t romSize);
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/gba/spi32.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SPDX-License-Identifier: CC0-1.0
3 | */
4 |
5 | #pragma once
6 |
7 | // Pico SPI
8 | #include "hardware/spi.h"
9 |
10 | namespace gba
11 | {
12 |
13 | uint32_t swapByte32(uint32_t val);
14 |
15 | void initSpi32();
16 | void deinitSpi32();
17 | uint32_t spi32(uint32_t val);
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/gp2040.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SPDX-License-Identifier: MIT
3 | * SPDX-FileCopyrightText: Copyright (c) 2021 Jason Skuby (mytechtoybox.com)
4 | */
5 |
6 | #ifndef GP2040_H_
7 | #define GP2040_H_
8 |
9 | // GP2040 Classes
10 | #include "gamepad.h"
11 | #include "addonmanager.h"
12 |
13 | #include "pico/types.h"
14 |
15 | class GP2040 {
16 | public:
17 | GP2040();
18 | ~GP2040();
19 | void setup(); // setup core0
20 | void run(); // loop core0
21 | private:
22 | uint64_t nextRuntime;
23 | Gamepad snapshot;
24 | AddonManager addons;
25 |
26 | struct WebConfigHotkey {
27 | WebConfigHotkey();
28 | void process(Gamepad* gamepad, bool configMode);
29 |
30 | bool active;
31 |
32 | absolute_time_t noButtonsPressedTimeout;
33 | uint16_t webConfigHotkeyMask;
34 | absolute_time_t webConfigHotkeyHoldTimeout;
35 | };
36 | WebConfigHotkey webConfigHotkey;
37 |
38 | enum class BootAction {
39 | NONE,
40 | ENTER_WEBCONFIG_MODE,
41 | ENTER_USB_MODE,
42 | SET_INPUT_MODE_HID,
43 | SET_INPUT_MODE_SWITCH,
44 | SET_INPUT_MODE_XINPUT,
45 | SET_INPUT_MODE_KEYBOARD,
46 | SET_INPUT_MODE_PS4
47 | };
48 | static BootAction getBootAction();
49 | };
50 |
51 | #endif
52 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/gp2040aux.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SPDX-License-Identifier: MIT
3 | * SPDX-FileCopyrightText: Copyright (c) 2021 Jason Skuby (mytechtoybox.com)
4 | */
5 |
6 | #ifndef GP2040CORE1_H_
7 | #define GP2040CORE1_H_
8 |
9 | #include
10 |
11 | #include "gpaddon.h"
12 | #include "addonmanager.h"
13 |
14 | class GP2040Aux {
15 | public:
16 | GP2040Aux();
17 | ~GP2040Aux();
18 | void setup(); // setup core1
19 | void run(); // loop core1
20 | private:
21 | uint64_t nextRuntime;
22 | AddonManager addons;
23 | };
24 |
25 | #endif
26 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/gpaddon.h:
--------------------------------------------------------------------------------
1 | #ifndef _GPAddon_H_
2 | #define _GPAddon_H_
3 |
4 | #include "gamepad.h"
5 |
6 | #include
7 |
8 | class GPAddon
9 | {
10 | public:
11 | virtual bool available() = 0;
12 | virtual void setup() = 0;
13 | virtual void process() = 0;
14 | virtual void preprocess() = 0;
15 | virtual std::string name() = 0;
16 | };
17 |
18 | #endif
--------------------------------------------------------------------------------
/GP2040-CE/headers/gpconfig.h:
--------------------------------------------------------------------------------
1 | #ifndef _GPCONFIG_H_
2 | #define _GPCONFIG_H_
3 |
4 | class GPConfig {
5 | public:
6 | virtual void setup() = 0;
7 | virtual void loop() = 0;
8 | private:
9 | };
10 |
11 | #endif
--------------------------------------------------------------------------------
/GP2040-CE/headers/helper.h:
--------------------------------------------------------------------------------
1 | #ifndef _HELPER_H_
2 | #define _HELPER_H_
3 |
4 | #include "pico/time.h"
5 | #include
6 |
7 | #include "BoardConfig.h"
8 | #include
9 | #include "AnimationStation.hpp"
10 | #include "PlayerLEDs.h"
11 | #include "xinput_driver.h"
12 |
13 | // GP2040-CE Version (32 character limit)
14 | #define GP2040VERSION "v0.7.1"
15 |
16 | const std::string BUTTON_LABEL_UP = "Up";
17 | const std::string BUTTON_LABEL_DOWN = "Down";
18 | const std::string BUTTON_LABEL_LEFT = "Left";
19 | const std::string BUTTON_LABEL_RIGHT = "Right";
20 | const std::string BUTTON_LABEL_B1 = "B1";
21 | const std::string BUTTON_LABEL_B2 = "B2";
22 | const std::string BUTTON_LABEL_B3 = "B3";
23 | const std::string BUTTON_LABEL_B4 = "B4";
24 | const std::string BUTTON_LABEL_L1 = "L1";
25 | const std::string BUTTON_LABEL_R1 = "R1";
26 | const std::string BUTTON_LABEL_L2 = "L2";
27 | const std::string BUTTON_LABEL_R2 = "R2";
28 | const std::string BUTTON_LABEL_S1 = "S1";
29 | const std::string BUTTON_LABEL_S2 = "S2";
30 | const std::string BUTTON_LABEL_L3 = "L3";
31 | const std::string BUTTON_LABEL_R3 = "R3";
32 | const std::string BUTTON_LABEL_A1 = "A1";
33 | const std::string BUTTON_LABEL_A2 = "A2";
34 |
35 | #define PLED_REPORT_SIZE 32
36 |
37 | #ifndef PLED1_PIN
38 | #define PLED1_PIN -1
39 | #endif
40 | #ifndef PLED2_PIN
41 | #define PLED2_PIN -1
42 | #endif
43 | #ifndef PLED3_PIN
44 | #define PLED3_PIN -1
45 | #endif
46 | #ifndef PLED4_PIN
47 | #define PLED4_PIN -1
48 | #endif
49 | #ifndef PLED_TYPE
50 | #define PLED_TYPE PLED_TYPE_NONE
51 | #endif
52 |
53 | #define PLED_MASK_ALL ((1U << PLED1_PIN) | (1U << PLED2_PIN) | (1U << PLED3_PIN) | (1U << PLED4_PIN))
54 |
55 | const int PLED_PINS[] = {PLED1_PIN, PLED2_PIN, PLED3_PIN, PLED4_PIN};
56 |
57 | #endif
--------------------------------------------------------------------------------
/GP2040-CE/headers/mbedtls_config.h:
--------------------------------------------------------------------------------
1 | /* This can be enabled lated when we use SNTP */
2 | #undef MBEDTLS_HAVE_TIME_DATE
3 |
4 | #define MBEDTLS_CHECK_PARAMS
5 | #define MBEDTLS_CHECK_PARAMS_ASSERT
6 | #define MBEDTLS_ENTROPY_HARDWARE_ALT
7 | #define MBEDTLS_AES_ROM_TABLES
8 | #define MBEDTLS_AES_FEWER_TABLES
9 | #define MBEDTLS_CAMELLIA_SMALL_MEMORY
10 | #define MBEDTLS_CHECK_RETURN_WARNING
11 | #undef MBEDTLS_FS_IO
12 | #define MBEDTLS_NO_PLATFORM_ENTROPY
13 | #define MBEDTLS_PSA_CRYPTO_CLIENT
14 | #define MBEDTLS_PSA_CRYPTO_DRIVERS
15 | #define MBEDTLS_SHA256_C
16 | #define MBEDTLS_RSA_C
17 | #define MBEDTLS_X509_RSASSA_PSS_SUPPORT
18 | #define MBEDTLS_PKCS1_V21
19 | #define MBEDTLS_BIGNUM_C
20 | #define MBEDTLS_MD_C
21 | #define MBEDTLS_SSL_ASYNC_PRIVATE
22 | #define MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
23 | #define MBEDTLS_USE_PSA_CRYPTO
24 | #undef MBEDTLS_NET_C
25 | #undef MBEDTLS_PSA_CRYPTO_STORAGE_C
26 | #undef MBEDTLS_PSA_ITS_FILE_C
27 | #undef MBEDTLS_TIMING_C
28 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/songs.h:
--------------------------------------------------------------------------------
1 | #ifndef SONGS_H_
2 | #define SONGS_H_
3 |
4 | #include "addons/buzzerspeaker.h"
5 |
6 | // Intro example
7 | Song introSong{
8 | 100,
9 | {
10 | D5,
11 | AS5,
12 | B5,
13 | C6,
14 | CS6,
15 | D6,
16 | DS6,
17 | E6,
18 | C7,
19 | CS7,
20 | D7,
21 | DS7,
22 | E7,
23 | F7,
24 | D8,
25 | DS8,
26 | }
27 | };
28 |
29 | Song configModeSong{
30 | 150,
31 | {
32 | E5,
33 | E5,
34 | G4,
35 | FS5,
36 | E5
37 | }
38 | };
39 |
40 | #endif
41 |
--------------------------------------------------------------------------------
/GP2040-CE/headers/system.h:
--------------------------------------------------------------------------------
1 | #ifndef SYSTEM_H_
2 | #define SYSTEM_H_
3 |
4 | #include
5 |
6 | namespace System {
7 | // Returns the size of on-board flash memory in bytes
8 | uint32_t getTotalFlash();
9 | // Returns the amount of on-board flash memory used by the firmware in bytes
10 | uint32_t getUsedFlash();
11 | // Returns the amount of memory used for static allocations in bytes
12 | uint32_t getStaticAllocs();
13 | // Returns the total size of heap memory in bytes
14 | uint32_t getTotalHeap();
15 | // Returns the about of heap memory currently allocated in bytes
16 | uint32_t getUsedHeap();
17 |
18 | enum class BootMode : uint32_t {
19 | DEFAULT = 0,
20 | GAMEPAD = 0x43d566cd,
21 | WEBCONFIG = 0xe77784a5,
22 | USB = 0xf737e4e1,
23 | };
24 |
25 | // Reboots the device and places the supplied BootMode value in a watchdog scratch register
26 | // This value can be retrieved after reboot by client code, which can then take the required actions
27 | void reboot(BootMode bootMode);
28 | // Retrieves the BootMode value from the watchdog scratch register and resets its value to BootMode::DEFAULT
29 | BootMode takeBootMode();
30 | }
31 |
32 | #endif
33 |
--------------------------------------------------------------------------------
/GP2040-CE/lib/ADS1219/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | add_library(ADS1219 ADS1219.cpp)
2 | target_link_libraries(ADS1219 PUBLIC BitBang_I2C)
3 | target_include_directories(ADS1219 INTERFACE .)
4 | target_include_directories(ADS1219 PUBLIC
5 | BitBang_I2C
6 | )
7 |
--------------------------------------------------------------------------------
/GP2040-CE/lib/ADS1219/README.md:
--------------------------------------------------------------------------------
1 | # ADS1219
2 | # Ported to BitBangI2C
3 | #
4 | # Ported/Written by:
5 | # Luke Arntson
6 | #
--------------------------------------------------------------------------------
/GP2040-CE/lib/AnimationStation/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig is awesome: https://EditorConfig.org
2 |
3 | # top-most EditorConfig file
4 | root = true
5 |
6 | [*]
7 | indent_style = space
8 | indent_size = 2
9 | end_of_line = crlf
10 | charset = utf-8
11 | trim_trailing_whitespace = true
12 | insert_final_newline = true
13 |
14 | [*.md]
15 | indent_style = space
16 | indent_size = 2
17 | trim_trailing_whitespace = false
18 |
--------------------------------------------------------------------------------
/GP2040-CE/lib/AnimationStation/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | add_library(AnimationStation
2 | src/Effects/Chase.cpp
3 | src/Effects/CustomTheme.cpp
4 | src/Effects/CustomThemePressed.cpp
5 | src/Effects/Rainbow.cpp
6 | src/Effects/StaticColor.cpp
7 | src/Effects/StaticTheme.cpp
8 | src/AnimationStation.cpp
9 | src/Animation.cpp
10 | )
11 | target_include_directories(AnimationStation PUBLIC
12 | src
13 | src/Effects
14 | )
15 | target_link_libraries(AnimationStation PUBLIC
16 | pico_stdlib
17 | hardware_clocks
18 | hardware_timer
19 | NeoPico
20 | )
21 |
--------------------------------------------------------------------------------
/GP2040-CE/lib/AnimationStation/library.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "AnimationStation",
3 | "version": "0.0.1",
4 | "description": "LED Handling for GP2040",
5 | "keywords": "c c++ baremetal neopixel led",
6 | "authors": [
7 | {
8 | "name": "Jonathan Barket",
9 | "url": "https://jonathanbarket.com"
10 | }
11 | ],
12 | "license": "MIT"
13 | }
14 |
--------------------------------------------------------------------------------
/GP2040-CE/lib/AnimationStation/src/Animation.cpp:
--------------------------------------------------------------------------------
1 | #include "Animation.hpp"
2 |
3 | LEDFormat Animation::format;
4 |
5 | Animation::Animation(PixelMatrix &matrix) : matrix(&matrix) {
6 | }
7 |
8 | void Animation::UpdatePixels(std::vector pixels) {
9 | this->pixels = pixels;
10 | }
11 |
12 | void Animation::ClearPixels() {
13 | this->pixels.clear();
14 | }
15 |
16 | /* Some of these animations are filtered to specific pixels, such as button press animations.
17 | This somewhat backwards named method determines if a specific pixel is _not_ included in the filter */
18 | bool Animation::notInFilter(Pixel pixel) {
19 | if (!this->filtered) {
20 | return false;
21 | }
22 |
23 | for (size_t i = 0; i < this->pixels.size(); i++) {
24 | if (pixel == this->pixels.at(i)) {
25 | return false;
26 | }
27 | }
28 |
29 | return true;
30 | }
31 |
--------------------------------------------------------------------------------
/GP2040-CE/lib/AnimationStation/src/AnimationStorage.hpp:
--------------------------------------------------------------------------------
1 | #ifndef _CONFIG_STORAGE_H_
2 | #define _CONFIG_STORAGE_H_
3 |
4 | #include "AnimationStation.hpp"
5 |
6 | class AnimationStorage
7 | {
8 | public:
9 | void save();
10 |
11 | AnimationOptions getAnimationOptions();
12 | void setAnimationOptions(AnimationOptions options);
13 | };
14 |
15 | static AnimationStorage AnimationStore;
16 |
17 | #endif
18 |
--------------------------------------------------------------------------------
/GP2040-CE/lib/AnimationStation/src/Effects/Chase.hpp:
--------------------------------------------------------------------------------
1 | #ifndef _CHASE_H_
2 | #define _CHASE_H_
3 |
4 | #include "../Animation.hpp"
5 | #include "hardware/clocks.h"
6 | #include
7 | #include
8 | #include
9 | #include "../AnimationStation.hpp"
10 |
11 | class Chase : public Animation {
12 | public:
13 | Chase(PixelMatrix &matrix);
14 | ~Chase() {};
15 |
16 | void Animate(RGB (&frame)[100]);
17 | void ParameterUp();
18 | void ParameterDown();
19 |
20 | protected:
21 | bool IsChasePixel(int i);
22 | int WheelFrame(int i);
23 | int currentFrame = 0;
24 | int currentPixel = 0;
25 | bool reverse = false;
26 | absolute_time_t nextRunTime = nil_time;
27 | };
28 |
29 | #endif
30 |
--------------------------------------------------------------------------------
/GP2040-CE/lib/AnimationStation/src/Effects/CustomTheme.cpp:
--------------------------------------------------------------------------------
1 | #include "CustomTheme.hpp"
2 |
3 | std::map CustomTheme::theme;
4 |
5 | CustomTheme::CustomTheme(PixelMatrix &matrix) : Animation(matrix) {
6 |
7 | }
8 |
9 | void CustomTheme::Animate(RGB (&frame)[100]) {
10 | for (size_t r = 0; r != matrix->pixels.size(); r++) {
11 | for (size_t c = 0; c != matrix->pixels[r].size(); c++) {
12 | if (matrix->pixels[r][c].index == NO_PIXEL.index)
13 | continue;
14 |
15 | auto itr = theme.find(matrix->pixels[r][c].mask);
16 | if (itr != theme.end())
17 | for (size_t p = 0; p != matrix->pixels[r][c].positions.size(); p++)
18 | frame[matrix->pixels[r][c].positions[p]] = itr->second;
19 | else
20 | for (size_t p = 0; p != matrix->pixels[r][c].positions.size(); p++)
21 | frame[matrix->pixels[r][c].positions[p]] = defaultColor;
22 | }
23 | }
24 | }
25 |
26 | bool CustomTheme::HasTheme() {
27 | return CustomTheme::theme.size() > 0;
28 | }
29 |
30 | void CustomTheme::SetCustomTheme(std::map customTheme) {
31 | CustomTheme::theme = customTheme;
32 | AnimationStation::effectCount = TOTAL_EFFECTS + 1;
33 | }
34 |
35 | void CustomTheme::ParameterUp() {
36 |
37 | }
38 |
39 | void CustomTheme::ParameterDown() {
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/GP2040-CE/lib/AnimationStation/src/Effects/CustomTheme.hpp:
--------------------------------------------------------------------------------
1 | #ifndef CUSTOM_THEME_H_
2 | #define CUSTOM_THEME_H_
3 |
4 | #include