Tabela de conteúdos

hid_devices.cfg

Neste arquivo está definido quais joysticks o console suporta e o mapeamento dos botões e eixos.

É possível editar este arquivo e adicionar novos controles. No entanto, ele é armazenado em uma pasta onde o recurso de Memory Copy do EMAPPLET não acessa, portanto é necessário acesso via USB ou usar o Zeebo Utils para copia-lo de um cartão SD.

Existe uma cópia deste arquivo dentro do próprio BREW. Caso ele não esteja presente na pasta correta (fs:/sys/), o BREW “emula” o acesso redirecionando para a cópia interna. Se colocarmos o arquivo real na pasta, ele passa a utilizá-lo.

Para referência, o arquivo original está na área de Downloads.

Joysticks suportados nativamente

Os dispositivos suportados são identificados pelos seus pares VID:PID (Vendor ID:Product ID) USB. Você pode verificar se um joystick funciona nativamente se ele tiver um VID:PID que esteja nesta tabela.

Nome VID:PID
Logitech Dual Action 0x046D:0xC216
Logitech RumblePad2 0x046D:0xC218
Logitech Cordless RumblePad2 0x046D:0xC219
XBox360 Controller 0x045E:0x028E
Zeebo Game Controller 0x1A5C:0x3033
Zeebo Accelerometer Controller 0x15A2:0x0003
Genius 0x0583:0xA009
Gamer 0x0E8F:0x0003
New Zeebo Game Controller 0x1EAA:0x0135

Joysticks extras

Estes são os joysticks/dispositivos que foram adicionados e mapeados pela comunidade:

Nome VID:PID
Sony DualShock 4 CUH-ZCT1x 0x054C:0x05C4
Sony DualShock 4 CUH-ZCT2x 0x054C:0x09CC

Observação: em alguns títulos, como nos que utilizam o emulador da Onan, alguns comandos estão incorretos para os DualShock. Provavelmente com algum ajuste fique 100%!

O arquivo atualizado com estes dispositivos extras estão na área de Downloads.

Informações de mapeamento

Extraído do SDK do Zeebo.

/*=============================================================================
    CONFIGURATION FILE EXAMPLE
===============================================================================
The configuration file, hid_devices.cfg, is responsible for giving an UID to 
each button press. I.e., whenever pressing a button, if this button has an 
hexadecimal code assigned in this file, this value will be returned as the 
button's UID. The default mapping can be seen on AEEHIDDevice_Joystick.h, 
although not every button listed on this file is available on Zeebo. The mapping 
is repeated below for easier understanding.

# Zeebo's Mapping:
#
# BUTTON 1:       0x0106C40B  (AEEUID_HIDJoystick_Button_2)
# BUTTON 2:       0x0106C40C  (AEEUID_HIDJoystick_Button_3)
# BUTTON 3:       0x0106C40D  (AEEUID_HIDJoystick_Button_4)
# BUTTON 4:       0x0106C40A  (AEEUID_HIDJoystick_Button_1)
# BUTTON ZL:      0x0106C406  (AEEUID_HIDJoystick_Left_Shoulder_Upper)
# BUTTON ZR:      0x0106C408  (AEEUID_HIDJoystick_Right_Shoulder_Upper)
# HOME:           0x0106C402  (AEEUID_HIDJoystick_Start)
# DPAD UP:        0x0106C3FE  (AEEUID_HIDJoystick_DPad_Up)
# DPAD LEFT:      0x0106C3FF  (AEEUID_HIDJoystick_DPad_Left)
# DPAD DOWN:      0x0106C400  (AEEUID_HIDJoystick_DPad_Down)
# DPAD RIGHT:     0x0106C401  (AEEUID_HIDJoystick_DPad_Right)
# LEFT ANALOG X:  0x0106C4D0  (AEEUID_HIDJoystick_LeftThumb_X)
# LEFT ANALOG Y:  0x0106C4D1  (AEEUID_HIDJoystick_LeftThumb_Y)
# RIGHT ANALOG X: 0x0106C4CE  (AEEUID_HIDJoystick_RightThumb_X)
# RIGHT ANALOG Y: 0x0106C4CF  (AEEUID_HIDJoystick_RightThumb_Y)

A real life example, using the standard joystick (Logitech Dual Action)
mapping, would be:

#Version string to indicate the format of the file
VERSION:1
# Logitech Dual Action (control name)
# (vendor id and product id)
VID:0x046D:PID:0xC216
# (button : button number : uid)
BUTTON:0:0x0106C40A
BUTTON:1:0x0106C40B
BUTTON:2:0x0106C40C
BUTTON:3:0x0106C40D
BUTTON:4:0x0106C406
BUTTON:5:0x0106C408
BUTTON:6:0x0106C407
BUTTON:7:0x0106C409
BUTTON:8:0x0106C403
BUTTON:9:0x0106C402
BUTTON:10:0x0106C404
BUTTON:11:0x0106C405
# (axis :  axis name : uid)
AXIS:X:0x0106C4D0
AXIS:Y:0x0106C4D1
AXIS:Z:0x0106C4CE
AXIS:RZ:0x0106C4CF

Note that the DPAD buttons don't need to be included in this file, as they are 
always mapped to the expected values. Also, some extra buttons are mapped here,
even though they cannot be used on Zeebo games.
===============================================================================
*/

Uma forma mais fácil de interpretar e fazer este mapeamento estará disponível no Zeebo Utils futuramente!

Observações

A capacidade total das portas USB do Zeebo é de aproximadamente 1500 mA. Ou seja, a soma do consumo de todas as 3 portas não pode ultrapassar este limite! Caso aconteça, os joysticks poderão não funcionar corretamente e/ou o Zeebo irá se comportar estranhamente ou reiniciar.

Por exemplo, um DualShock4 CUH-ZCT2x é especificado em 800 mA, portanto 2 destes com a bateria vazia em um Zeebo já ultrapassa o limite (o DualShock4 tenta carregar a bateria interna, por isso o consumo alto). É possível contornar esta limitação fazendo uma modificação na placa base do Zeebo ou utilizando um hub USB com alimentação externa (mais seguro).

No entanto, por limites de memória interna do BREW, dependendo de quais e quantos controles são ligados no console, instabilidades e reboots podem ocorrer. Por exemplo, ao ligar dois ou mais DS4, devido ao tamanho dos descritores USB/HID informados, a área na RAM reservada pelo BREW para estes fins se esgota, causando reboots. Portanto 1 DS4 + 1 Z-Dragon é seguro pois não extrapola esta memória.

Um patch está sendo desenvolvido para permitir que 2 DS4 sejam utilizados.

Instalando um hid_devices.cfg novo

Caso tenha acesso via porta USB, basta copiar o arquivo para fs:/sys/.

Já através do Zeebo Utils, copie o arquivo para a raiz de um cartão SD (o arquivo precisa se chamar hid_devices.cfg) e rode o ZeeUtils. De lá, ele te mostrará como fazer a cópia e colocará o arquivo no local correto. Basta reiniciar o console para que o novo arquivo seja utilizado pelo Zeebo.

Downloads