Giter Site home page Giter Site logo

darthcloud / blueretro Goto Github PK

View Code? Open in Web Editor NEW
1.2K 44.0 98.0 2.3 MB

Multiplayer Bluetooth controllers adapter for retro video game consoles

Home Page: https://blueretro.io

License: Apache License 2.0

C 85.75% Assembly 0.87% CMake 0.46% Python 12.91%
bluetooth dreamcast nintendo-64 gamecube adapter hid adaptor game-controller adaptive esp32

blueretro's People

Contributors

breademan avatar coolbho3k avatar darthcloud avatar digidwrf avatar doomydoomer avatar eolvera85 avatar grumpygopher avatar hworld avatar jpzv avatar pdaehne avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blueretro's Issues

[FR] USB HID wired connectivity option

USB HID wired connectivity usually provides lower latency than BT and better compatibility on some platforms.

Possible solutions:

  1. use another uC to handle the USB HID communication (e.g. an Arduino Micro), connected via serial to the ESP32
  2. use the ESP32S2 + TinyUSB library (or this?)
  3. via software-only USB on regular I/O pins (i've only found an ESP8266 lib for this)

Switch controller (All type) multiplayer 2nd+ heavy latency

Switch controller somehow don't play nice with eachother when used simultaneously. Mixing one with another type like PS or Xbox work fine.

When 2 or more SW are used, often the first one will be absolutely fine but the other will often have extreme latency.

Another behavior is that sometimes pressing buttons on first ctrl right after 2nd ctrl connection cause the 2nd to get in a weird state where led indicator is reset to one and no report is received.

Workaround: only use one SW controller, use other ctrl type for multiplayer.

Workaround 2: Disconnect SW controller with Boot buttons on ESP and then reconnect. Do so until all controller are responsive. It usually take less than 5 try.

First boot seems to be unsuccessfull using a custom pcb

Hello,

I'm sorry to post about my issue here as it might not be a project issue but maybe the PCB I'm using.

https://oshpark.com/shared_projects/aW1v2Ei3

I've done 5 of them today and am having issue with all of them not working.

I tried my best and was successful using a spare ESP32 without the board...

When using the board I was able to get those logs from putty :
`Brownout detector was triggered

▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒I (237) cpu_start: Pro cpu up.
I (237) cpu_start: Single core mode
I (245) cpu_start: Pro cpu start user code
I (245) cpu_start: cpu freq: 240000000
I (245) cpu_start: Application information:
I (245) cpu_start: Project name: BlueRetro
I (246) cpu_start: App version: v1.2.2 psx_ps2_spiffs
I (247) cpu_start: Compile time: Jan 19 2022 22:50:38
I (248) cpu_start: ELF file SHA256: 61344aea9b5c82db...
I (248) cpu_start: ESP-IDF: v4.4-dev-2128-gf45b60b28b
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒I (237) cpu_start: Pro cpu up.
I (237) cpu_start: Single core mode
I (245) cpu_start: Pro cpu start user code
I (245) cpu_start: cpu freq: 240000000
I (245) cpu_start: Application information:
I (245) cpu_start: Project name: BlueRetro
I (246) cpu_start: App version: v1.2.2 psx_ps2_spiffs
I (247) cpu_start: Compile time: Jan 19 2022 22:50:38
I (248) cpu_start: ELF file SHA256: 61344aea9b5c82db...
I (248) cpu_start: ESP-IDF: v4.4-dev-2128-gf45b60b28b
I (249) cpu_start: App cpu up.
I (250) heap_init: Initializing. RAM available for dynamic allocation:
I (251) heap_init: At 3FF80000 len 00002000 (8 KiB): RTCRAM
I (251) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM
I (252) heap_init: At 3FFB6388 len 00001C78 (7 KiB): DRAM
I (253) heap_init: At 3FFB9A20 len 00004108 (16 KiB): DRAM
I (254) heap_init: At 3FFD0198 len 0000FE68 (63 KiB): DRAM
I (254) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (255) heap_init: At 3FFE4350 len 00003A48 (14 KiB): D/IRAM
I (256) heap_init: At 3FFE7E28 len 000181D8 (96 KiB): D/IRAM
I (257) heap_init: At 40078000 len 00008000 (32 KiB): IRAM
I (258) heap_init: At 4009D774 len 0000288C (10 KiB): IRAM
I (259) spi_flash: detected chip: generic
I (260) spi_flash: flash io: dio
I (260) esp_core_dump_uart: Init core dump to UART
I (260) esp_core_dump_uart: Init core dump to UART
I (261) cpu_start: Starting scheduler on PRO CPU.
App main at 40082FFC

bt_host_load_bdaddr_from_file: No BDADDR on SD. Using ESP32's MAC

I (323) BTDM_INIT: BT controller compile version [d874f68]
I (323) system_api: Base MAC address is not set
I (323) system_api: read default base MAC address from EFUSE
I (323) phy_init: phy_version 4670,719f9f6,Feb 18 2021,17:07:07
W (323) phy_init: failed to load RF calibration data (0x1102), falling back to full calibration
`

I haven't tried using the kit on my console yet and wonder if the issue is not because of the power supply and added parts that might cause issue with it.

I'll probably be able to test it next week but hopefully someone will have an answer about my issue before.

Thank you !

Update wiki to include macOS build instructions

First of all, thanks for the amazing project 👏

I took a stab at adding build instructions for macOS to https://github.com/darthcloud/BlueRetro/wiki/BlueRetro-DIY-Build-Instructions

It just requires an update to the first 2 steps:

## Build instructions

1. Install [esptool](https://github.com/espressif/esptool) and prerequisites (not required for Windows):

    **Linux:** [Install prerequisites](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/linux-setup.html).
    
    **macOS:** [Install prerequisites](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/macos-setup.html) and [USB driver](https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers) (Note: You may need to Allow driver under System Preferences > Security & Privacy, and reboot).

    Then run:
    
     ```
     pip install esptool
     ```
  
2. Download latest BlueRetro binary from [GitHub](https://github.com/darthcloud/BlueRetro/releases) and flash them on your ESP32.

    **Linux/macOS:**
    [Find your device path](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/establish-serial-connection.html) which should look like `/dev/tty*` on Linux or `/dev/cu.*` on macOS. Then run the following (changing `/dev/ttyUSB0` to your actual device):
  
    ```
    esptool.py -p /dev/ttyUSB0 \
      -b 460800 --before default_reset --after hard_reset --chip esp32 \
      write_flash --flash_mode dio --flash_size detect --flash_freq 40m \
      0x1000 bootloader/bootloader.bin \
      0x8000 partition_table/partition-table.bin \
      0x10000 BlueRetro_universal_spiffs.bin
    ```
    
    **Windows:**
    [Flashing firmware Windows 10](https://github.com/darthcloud/BlueRetro/wiki/Flashing-firmware-Windows-10).

Tested on my own machine, feel free to use it!

PS1 5501 PU-18 rev. 1-644-537-52 random button inputs

Using the PSUnoRetro adapter from Will's Console Modifications. As soon as I connect the device to my PS1 it starts to spam random button inputs. I factory reset the device and that did not resolve the issue.

Reached out to Will and they said that this is a known issue with certain revisions of the 5501 / PU-18. My board is a PU-18 1-644-537-52.

Opening an issue for tracking.

PCE Controls

Unlink the gamepad & GamePadAlt default mapping, so this way 2 btns mode will have I on right face, and II on bottom face, and select/III on left face.

#167

PS2 not recognizing analog inputs

I have tried use my switch pro controller for my ps2 but for some reason It won't recognize any inputs from the analog sticks. My wiring is correct and I also noticed on the wiring diagram you have a connection to pin 8 on the db 25 connector even though pin 8 is not connected on the esp32 diagram. I have no idea if this was a mistake or not.

Two identical controllers seem to both connect to same channel

I'm not 100% certain why this is happening but I have two identical 8bitdo controllers and initially thought one must be connecting to something else, but I've been round and turned off all Bluetooth I can find and now can only assume that they are both connecting on the same channel

Any ideas why this might be?

PS2 rumble speed control on Dualshock 4

Hi!

I have built an adapter out of a devkitv1 using the 0.14 release, and it works perfectly with my DS4.
I managed to turn on the rumble through the web interface, and it works, but it seems the rumble motors don't work independently of each other, and they only work at a set value, and don't have speed control. I tested this on a PS2 with the "Pad test" homebrew app (https://www.ps2-home.com/forum/viewtopic.php?t=5483). I also have a Brook PS2 Super Converter, with it the rumble motors can work independently, and have speed control. I don't know if I am missing a config or something.

Thanks for your help.

8bitdo Gbros behaves differently to other 8bitdo controllers

I just got myself an 8bitdo Gbros GameCube to Bluetooth adapter and it seems to behave quite oddly
I'm actually connecting a GameCube pad to it and to GameCube and the mapping seems to be all over the shop. I was expecting that if I put it in switch mode it would be pretty seamless but everything seems off (even down to the analogue stick)
In X mode (windows) it's better but still a few buttons flipped - is there some way to align this to the other 8bitdo controllers so we can flip and change?

Also, I'm hoping to connect bongos using this and they seem to work but again mapping all over the shop, and not even sure where to begin mapping those

Is there an easier way to handle switching controllers, as unless I'm missing something the settings are unified for the first input irrespective of what's connected?

Xbox one view button no working like select on ps1/ps2

I have a PSUnoRetro with the latest firmware, everything works fine, but the view button doesn't work like the select button, it just doesn't do anything. My button is fine, I tested it on pc / xbox so I don't know what happened, I tried another controller (8bitdo) and this one doesn't have the problem. Do you know what is the problem?

Some Atari Jaguar games are unplayable due to button mapping issues

I have tested all 50 retail cartridge games as well as 4 CD games. The following games have a button mapping issue:

  • Atari Karts
    On PS4/5 controller Pause = A, L1 = D-Pad R, D-Pad L = 4, R Thumb = D-Pad L. D-pad R, U, D and other buttons not working
  • Breakout 2000
    Same as Atari Karts
  • Missile Command 3D
    Same as Atari Karts
  • Myst
    L1 acts like D-Pad Left and R3 acts like D-Right

My test was with a PS4 and PS5 controller. I've tried to remap these games in the advanced web config but it didn't seem to have any effect.

Request: mapping source/dest button naming

on the web interface on the button mapping page, you could have one dropdown for Source and one for destination.
user could then choose the right controller (i.e Wii u pro -> n64) and the page would rename the "blueretro" button names to the correct ones, so you don't need to sit with Reference sheet every time...

it's just for convenience, and I think it can all be done on the web page server side, no need to change in FW

If I am mistaken I am sorry.

Wired GC system - R and L trigger not working properly

Hardware : DS4\DS3 gamepads; Wii system; BlueRetroDIY (without SDCARD)
Software : GC Controller Test

R and L trigger not working properly. When pressed to maximum position BlueRetro only sends ANALOG values and digital values never passed to Wii\GameCube system. Maximum analog value is 208 (both on DS3 and DS4 gamepads) insted of 255.

is hardware universally required?

so some consoles clearly need some elaborate communication protocols, but im only ever planning to use it with an N64 and with one controller(my brother is a purist, gotta be og... idgaf). can i use any random esp32 dev board and hook up gnd, vin, and io19?

Incorrect button inputs on GC using Xbox One S controller

I am using an Xbox One S controller (on gamecube using universal fw 1.0) and some of the button inputs are mapped incorrectly even when using the Default Gamepad Only preset.

Here is a list of buttons on the Xbox One S controller and how they are registering in a controller test application:

Xbox LB = GC Y
Xbox Menu and Share = GC Z
Xbox X = nothing
Xbox B = GC X
Xbox Y = GC B

Neither Bumper register as Z as they should, and there is no start button. (You'd be surprised how many games require you to press start to begin playing.) Both sticks register correctly, the DPAD registers correctly, and the triggers register correctly.

Output config mode is set to Gamepad, though behavior is the same in GamepadAlt mode.

[SUGGESTION] Wii support

Besides ogxbox, wii is among the best retro emulators for it's 240p support, and other features.

I love to use wi to play 240p consoles, and one of them is the genesis. I have the psx only blueretro device (will consoles modification). Updated to this day firmware.

  • I have the 8bit do bluetooth m30 controller, on the ps2, it became unstable, the buttons did not work properly.
  • the m30 does not work with wii, and i tought it would work with some of the wii adapters (ps2 to gamecube, or ps2 to wiimote), but no dice either, it not even lights up in these adapters.

I want to know if its a power supply thing, or software thing, that blueretro does not work with another controller adapters like the ones I said.

Thank you very much if you read till here.

Original SIXAXIS PS3 controller disconnects after few seconds

Original sixaxis ps3 controller the one without rumble in clear case and without dualshock branding disconnect after few seconds. It workfs fine with PS3 console and other DS3 controllers working fine with BlueRetro.

# BT_HCI_EVT_INQUIRY_COMPLETE
# BT_HCI_EVT_INQUIRY_COMPLETE
# BT_HCI_EVT_CONN_REQUEST
# bt_hci_cmd_accept_conn_req
# Page dev: 0 type: 0 bdaddr: 00:19:C1:5F:71:AD
# BT_HCI_EVT_CMD_STATUS
# BT_HCI_EVT_ROLE_CHANGE
# BT_HCI_EVT_CONN_COMPLETE
# dev: 0 acl_handle: 0x0080
# bt_hci_cmd_le_set_adv_disable
# bt_hci_cmd_remote_name_request
# BT_HCI_EVT_CMD_COMPLETE
# BT_HCI_EVT_CMD_STATUS
# BT_L2CAP_CONN_REQ
# BT_HCI_EVT_REMOTE_NAME_REQ_COMPLETE:
# dev: 0 type: 1 PLAYSTATION(R)3 Controller
# BT_L2CAP_CONF_REQ
# BT_L2CAP_CONF_RSP
# BT_L2CAP_CONN_REQ
# BT_L2CAP_CONF_REQ
# BT_L2CAP_CONF_RSP
# bt_hid_ps3_init
# bt_hid_ps3_init_callback
# BT_HCI_EVT_INQUIRY_COMPLETE
# BT_L2CAP_DISCONN_REQ
# BT_L2CAP_DISCONN_REQ
# BT_HCI_EVT_DISCONN_COMPLETE
# DISCONN from dev: 0
# bt_hci_cmd_periodic_inquiry
# bt_hci_cmd_le_set_adv_enable
# BT_HCI_EVT_CMD_COMPLETE
# opcode: 0x0403 error: 0x0C retry: 0
# BT_HCI_EVT_CMD_COMPLETE
ERR
# BT_HCI_EVT_INQUIRY_COMPLETE
# BT_HCI_EVT_INQUIRY_COMPLETE
# BT_HCI_EVT_INQUIRY_COMPLETE

Can't turn on analogs

Use some strange android gamepad "flixpad" https://techbite.eu/gaming/flix-gamepad

And got a problem, pressing home on gamepad i cant turn on analogs.

On games that automaticaly turn on analogs like Crash Team Racing, analogs is working :)

Is there any way to create "analog mode on" by pressing two buttons like start + select ?

Not receiving port number indication on DS3

if the ramble feature is not enabled in BlueRetro config (Tested on nintendo GameCube) any DS3 gamepad not receiving port number indication. It Keep blinking all 4 leds as if it is not connected. But if ramble feature is enabled after first ramble executed it set port number.

analog control on PS1

I discovered a problem with the analog control on PS1.
In the game Resident Evil 3 (I tested the EU version, loaded with the xStation) the analog stick to the right sometimes does not work. Analog stick to the left, up and down works without any problems. It affects all menus: title screen menu, option menu and inventory menu. But I can control the characters in the game without any problems.
I had noticed a similar problem in the PSIO menu. Here some directions of the analog stick did not work either. So far these were the only two situations with which the analog control caused problems. Other games like Silent Hill, Metal Gear had no problems.
I tested the firmware v0.13-psx_ps2_spiffs, v0.15.1-psx_ps2_spiffs and v0.15.1-universal_spiffs each with an Xbox One S and PS4 controller.

PS1 (single motor) rumble not working, at least on PS2 console via backward compatibility

I use a PSUnoRetro device (from willsconsolemodifications.co.uk) running BlueRetro, with a PlayStation 2 console and a DualShock 4 controller. I have enabled BlueRetro rumble via the web config, and it works for PS2 games.

I have noticed that there's no rumble at all for Porsche Challenge PAL - a PS1 game working on the PS2's backwards compatibility. Using a wired DualShock 2 pad rumble does indeed work, so it might logically be expected to work with BlueRetro.

However it does feel as if only the right-hand vibration motor is used when using a real DualShock 2 pad. From memory of owning this game back in the day, and the PS1 Dual Analog controller, I believe this game was one of the first to support that type of controller.

In a somewhat strange decision by Sony, the Dual Analog controller had its rumble motor removed for the US and European markets before it launched, but it did have a single rumble motor in Japan (https://en.m.wikipedia.org/wiki/Dual_Analog_Controller). So it would make sense that this game supports only one vibration motor, even if the feature only worked with the Japanese Dual Analog pad, and later with the DualShock and DualShock 2 controllers, themselves enhancements of that original design which remain backwards compatible with it.

Supporting this theory, Porsche Challenge is described here as being a game which indeed included support for the single vibration motor of the Dual Analog controller: https://en.m.wikipedia.org/wiki/DualShock

So... is it the case that the current BlueRetro rumble implementation only activates a DualShock 4 controller's vibration motors when output for the left-hand DualShock 2 motor is requested, and perhaps ignores requests for the right-hand motor only? Or is there some other problem breaking vibration support for Porsche Challenge specifically?

I originally raised this as a query inside another issue ticket here:
#20 (comment)

I updated that I have seen the same issue in Gran Turismo PAL so it doesn't seem to be isolated to Porsche Challenge.

@darthcloud confirmed that it should be working, a single motor request should indeed trigger BlueRetro to rumble.

My PS2 is a model SCPH-90003 super slim (with built-in PSU), and I have updated to BlueRetro 1.2.2. This version remains affected by the issue.

N64 rumble does not working on Cruis'n world

Been using NSO N64 controller with an N64 and it works great. Although, noticed that rumble does not work in Cruis'n world. Is there any setting I need to change to have it working?

Thanks.

Transfer pak disabled

Is there any way to get original N64 accessories like transfer pak, memory pak to work? because with esp32 installed (in the 4 control ports) they are not detected, I regularly used the transfer pak in pokemon stadium, but it is no longer possible

GameCube Digital Triggers Analog Merge

Love the project just got a DIY unit built up and it's running great. I'm using the internal memory and the latest .19 binary universal.

I ran into what I believe is a bug when I try to select the preset profile for GameCube Analog and Digital Triggers Merge. Once I do this and power cycle the unit I can no longer access the advanced settings through the web browser and I no longer get any output to the GameCube. I also tried to use the GameCube specific binary and saw the same issue.

If I use the OTA update to re-download the main binary everything starts working like normal again. Good looking out on that too BTW because I can't access my USB port easily once my DIY unit is fully assembled.

N64 no controller detected

Many real games make very few attempt at detecting controller and do so before the ESP32 is finished booting.

This do not happen with Everdrive

Workaround#1: After powering console, press reset one second later.

Workaround#2: Power ESP32 externally prior to console power up (do not connect 3.3v from ctrl port in that case)

Variouse Issues with Xbox one to GC adapter

So few things, but first I'll go over my setup I have an ESP32 Devkitv1, a wii running homebrew, (just so I can run Super smash bros melee without having a disk, since that is what I am hoping to use this adapter for) and a esp hard wired to a single male GameCube cable. I do remember that the wiring instructions mentioned tying any unused data cables to 3.3v and wiring all of the 5v lines from the GameCube to vin, so I wouldn't be surprised if some of my issues are a result from a lack of power for the ESP.

fisrt, the default pairing is messed up. few things come to mind, the menu and select buttons (I believe that is what they are called, they are the 2 buttons under the home button) are bound to "z", Xbox b is bound to GC x or y (unsure of which), Xbox y is bound to GC b. nothing is bound to GC start, etc. That being said this part could very well be user error.

second is that inputs being registered longer than they actually are being press, I have a video showing this. in smash there is a full hop and a short hop. in the case of bowser, if you let go of jump less than 8 frames after you initially input jump, you short hop, if you are still holding jump 8 frames after you first input it, you full hop. in the video the left bowser is the Xbox controller, the right is a oem GC controller. the Xbox/esp are still registering me pressing jump when I am no longer doing so, about 1/10th of a second. This does not happen when I use tap jump (pushing the analog stick up) to short hop.

finally is an analog stick drift. if I move the control stick from neutral position to slightly down repeatedly. the game starts to register the stick as down even when the stick is actually in neutral position, same happens when doing this in other directions. I didnt notice any issues beyond all these 3 other than the controller taking a while to connect, like 30 or 40 seconds, but that's about it.

attempting to short hop with GC x or y
https://user-images.githubusercontent.com/85606597/140694499-9131d2b2-238e-46cb-8760-95f3961ffc1c.mp4

short hoping with tap jump
https://user-images.githubusercontent.com/85606597/140694513-c5bb56a1-eb46-45a9-848c-35e42656a741.mp4

the stick drift, by the very end I am crouching even when the stick is in neutral position
https://user-images.githubusercontent.com/85606597/140694699-31cde677-2329-4223-a69e-17f93f454098.mp4

XB1 inquiry connection fail

Getting an answer to the inquiry scan from the Xbox One S controller take a very long time. Following that connection always fail.

ESP32 BT controller issue??

Workaround:
Pair the XB1 controller to another device and spoof the BDADDR by writing a 6 bytes binary file with that address on the SD card with the name BDADDR.BIN. Then simply page connect by pressing Xbox button as you would do an usual reconnect. The controller is nice and will generate a new link key :) .

Integer Overflow on analog sticks

I found this out while try to trouble shoot an issue that I found when trying to reduce the sensitivity of the analog stick is the web config, but they just ended up fixing themselves somehow. regardless when I was trouble shooting I saw that if the sensitivity cranked up really high, like around 150%, something along the lines of an overflow happens with the stick values reading as just outside of the deadzone.

image
I just made a sketch is paint, inner circle is the deadzone, red is the xbox stick position, blue is what the game is reading

Wii page role switch fail

When paging (any button press reconnection) the connection will fail at the role switch step 99% of the time.

ESP32 controller side issue???

Hard limit of number of paired controllers?

Hello. Ive been testing a blueretro device with many controllers and cables/systems and its working very nicely, really like it.

One thing im having a hard time figuring out though is: is there a hard limit of number of paired controllers? i have several controllers and im able to pair many controllers, but im not sure if im doing something wrong but it seems that if i pair too many controllers, then some of the previously successfully paired controllers start to lose its pairing, so i have to pair those again (wich in consequence seems to make other controllers to lose pairing).

Ideally i want to keep as many controllers with many layouts paired as possible, and ready to use. It would be amazing to use the blueretro as my primary way of plugging controllers on all my retro systems, but im not sure if theres a limitation there.

Thanks for your time and for creating this awesome thing!

Trying to get ps2 to work with BlueRetro

I have an ps2 directly wired to a esp32 devkit v1 with wires and have tried to get paired ps4, xbox one, and wii controllers to function. They pair to the device fine but dont input. I am using the ps2 firmware and only have one set of controller wires hooked up. I have tried messing with the advanced config but to no avail. Is there anything I am doing wrong?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.