Repository navigation
Releases: Schickacka/BlueRetro
Release list
BlueRetro - PlayStation 1 Custom Edition (v0.7.5.1)
BlueRetro — PlayStation 1 Custom Edition (v0.7.5.1)
Tag: v0.7.5.1
Esta versão implementa a elevação do piso operacional e remapeamento linear do atuador de baixa frequência (LF / motor pesado) para controles PlayStation sem fio, garantindo resposta tátil imediata, nítida e perceptível em controles paralelos/clones e motores compactos de 3.7V sem comprometer o teto máximo de impacto nem a zona morta contra ruídos de fundo residuais do PS1.
Novidades e Melhorias
1. Elevação do Piso Operacional do Motor Pesado (64..255 → 85..255)
- Desafio Eletromecânico em Controles Paralelos: Controles DualShock 4 e DualSense clones/paralelos frequentemente utilizam motores compactos de 3.7V com atrito estático e inércia mecânica significativamente maiores nos mancais. Em jogos como Resident Evil 3, comandos sutis de feedback de baixa amplitude (em torno de 64 decimal) ou pulsos de curtíssima duração (1 a 2 quadros durante rajadas de tiros pontuais, passos ou batimentos) não geravam torque suficiente para vencer o atrito estático a tempo, resultando em sensação de atenuação física ou ausência da vibração.
-
Zona Morta Preservada (< 64 → 0x00): Comandos com valores inferiores a
0x40(64 decimal) permanecem estritamente silenciados como repouso absoluto (0x00), preservando a filtragem cirúrgica contra o ruído elétrico residual de fundo emitido pelos jogos de PS1 nos registradores de feedback. -
Remapeamento Linear e Contínuo: Para qualquer comando ativo (
$\ge 64$ ), a intensidade é remapeada de forma proporcional e contínua do intervalo original$[64, 255]$ para$[85, 255]$ através da fórmula com arredondamento estático:
$$\text{Power}_{\text{LF}} = 85 + \left\lfloor \frac{(\text{raw} - 64) \times 170 + 95}{191} \right\rfloor$$ -
Comportamento Resultante:
- No limiar inicial ($ ext{raw} = 64$): o motor recebe imediatamente potência 85, fornecendo torque de partida instantâneo capaz de girar o contrapeso físico sem atraso mesmo em pulsos de 1 único quadro;
- No teto máximo ($ ext{raw} = 255$): o motor atinge rigorosamente 255 (100% de saturação física para explosões e impactos fortes);
- A faixa dinâmica intermediária cresce linearmente com taxa de transferência suave (
$�pprox 0{,}89$ ), mantendo a fidelidade sensorial de toda a biblioteca de jogos.
Arquivos e Hashes de Integridade
| Arquivo | Tamanho (bytes) | SHA-256 |
|---|---|---|
BlueRetro_hw1_playstation.bin |
558,192 | 3789773df3c000f92e2b9564f0dfeacc43bc2393b8fc98f1f4b86398c24c3749 |
BlueRetro_PS1_Custom_v0.7.5.1_Package.zip |
361,800 | e43ec7ed9688f1519d776fcc168f6f2fd1545d88ffde101907b94d0f55dedd12 |
BlueRetro_PS1_Custom_v0.7.5.1_Source.zip |
994,381 | 8ee9083132b70c04498532cebc367dc9fe2ba4fb2f9ed81245bdea09286892d9 |
Build: CI run 40976514538 (commit 13da20f), ESP-IDF v5.5-dev-698-g030c9957db. O firmware reporta v0.7.5.1 ps1-custom.
Gravação e Atualização
Bluetooth / OTA (recomendado, sem abrir o console):
- Ligue o PlayStation 1 com os controles Bluetooth desligados.
- Execute
flash_bluetooth_ota.batoupython ble_ota_update.py BlueRetro_hw1_playstation.bin(requerpip install bleak). - Alternativa via navegador web: acesse
blueretro.io/ota.htmle carregueBlueRetro_hw1_playstation.bin.
Cabo USB: Conecte a placa ESP32 ao computador e execute flash_windows.bat.
Manual (esptool):
python -m esptool --chip esp32 --port COMx -b 921600 --before default_reset \
--after hard_reset write_flash --flash_mode dio --flash_size 4MB --flash_freq 40m \
0x1000 bootloader.bin 0x8000 partition-table.bin 0xd000 ota_data_initial.bin \
0x10000 BlueRetro_hw1_playstation.binBlueRetro - PlayStation 1 Custom Edition (v0.7.5)
BlueRetro — PlayStation 1 Custom Edition (v0.7.5)
Tag: v0.7.5
Esta versão traz a correção definitiva de reconexão do DualShock 4 com inicialização instantânea (0 ms de latência adicional), refinamento da ativação do motor de alta frequência (HF) para qualquer comando diferente de zero, contador de inatividade atômico thread-safe no Core 0, normalização da detecção de atividade por amplitude de eixo e correção de indexação de acessório Memory Card no driver SPI.
Novidades e Correções
1. Reconexão Confiável do DualShock 4 e Inicialização Instantânea
- Resolução Determinística de Nome Bluetooth: Durante a reconexão por paginação (incoming page iniciada pelo controle), o canal de interrupção L2CAP conectava antes da chegada do pacote de identificação de nome (
BT_HCI_EVT_REMOTE_NAME_REQ_COMPLETE), retendo o dispositivo temporariamente comoBT_HID_GENERIC. O driver agora reavalia a transição de tipo paraBT_PS, redefine a flagBT_DEV_HID_INIT_DONEe dispara a inicialização nativabt_hid_ps_init(). - Inicialização Imediata (Zero Latência Adicional): Ao receber o primeiro relatório de status completo (Report
0x11para DualShock 4 ou Report0x31para DualSense), a rotina de inicialização cancela o temporizador de fallback com segurança (esp_timer_stopantes deesp_timer_delete), marca o dispositivo como pronto, aciona a vibração de confirmação, inicia o piscar da cor do jogador e disponibiliza a porta do console de forma instantânea. - Recuperação de Modo Boot (Report 0x01): Caso o DualShock 4 inicie a transmissão em modo boot genérico (Report
0x01), o firmware emite o comando probe de transição (0xC0,0x07) para colocá-lo imediatamente em modo nativo Bluetooth.
2. Ativação do Motor de Alta Frequência (HF) por Qualquer Byte Não Nulo
- No controle físico original DualShock 1, o motor direito (leve/alta frequência) é binário. O firmware agora aciona saturação máxima (
0xFF) para qualquer byte não nulo (raw_fb_data->data[0] ? 0xFF : 0x00), eliminando a exigência anterior restrita apenas ao bit 0 (& 0x01) e garantindo resposta tátil nítida para qualquer comando emitido pelo jogo. - O limiar do motor de baixa frequência (LF) permanece estritamente em
>= 0x40(64 decimal).
3. Contador de Inatividade Atômico Thread-Safe
- O contador de inatividade
dev_idle_sec[BT_MAX_DEV]no Core 0 agora utiliza exclusivamente primitivas atômicas GCC (__atomic_add_fetche__atomic_store_ncom semântica__ATOMIC_RELAXED), eliminando qualquer possibilidade de condição de corrida ou leituras rasgadas entre as tarefas concorrentes do FreeRTOS.
4. Detecção de Inatividade Normalizada por Amplitude de Eixo
- A detecção de atividade analógica foi normalizada para 20% do curso real com base nos metadados de amplitude (
axis->meta->abs_max / 5), garantindo precisão idêntica no desligamento de 10 minutos independentemente da escala nativa de resolução do controlador.
5. Acesso a Memory Card em Múltiplas Portas (mt_first_port)
- A verificação do modo de acessórios (
acc_mode & ACC_MEM) no driver SPI baremetal agora utilizaport->mt_first_port, garantindo que cartões de memória virtuais ou físicos operem normalmente na Porta 2 independentemente da configuração de multitap.
Arquivos e Hashes de Integridade
| Arquivo | Tamanho (bytes) | SHA-256 |
|---|---|---|
BlueRetro_hw1_playstation.bin |
558,176 | 499f2da22cf7cb974880db3499328d448670861fe1112f2ddbcd7f2ba689f62a |
BlueRetro_PS1_Custom_v0.7.5_Package.zip |
361,176 | d84c9d5187fd75ab421566445db939ced570a3dd922592c07a97eed595fcd8ec |
BlueRetro_PS1_Custom_v0.7.5_Source.zip |
992,636 | 08547c3904ea7dbde69a74932d7a6091cb8113c98b13de858ceb21dd9bcffe39 |
Build: CI run 40794334658 (commit 7b52563), ESP-IDF v5.5-dev-698-g030c9957db. O firmware reporta v0.7.5 ps1-custom.
Gravação e Atualização
Bluetooth / OTA (recomendado, sem abrir o console):
- Ligue o PlayStation 1 com os controles Bluetooth desligados.
- Execute
flash_bluetooth_ota.batoupython ble_ota_update.py BlueRetro_hw1_playstation.bin(requerpip install bleak). - Alternativa via navegador web: acesse
blueretro.io/ota.htmle carregueBlueRetro_hw1_playstation.bin.
Cabo USB: Conecte a placa ESP32 ao computador e execute flash_windows.bat.
Manual (esptool):
python -m esptool --chip esp32 --port COMx -b 921600 --before default_reset \
--after hard_reset write_flash --flash_mode dio --flash_size 4MB --flash_freq 40m \
0x1000 bootloader.bin 0x8000 partition-table.bin 0xd000 ota_data_initial.bin \
0x10000 BlueRetro_hw1_playstation.binBlueRetro - PlayStation 1 Custom Edition (v0.7.4)
BlueRetro — PlayStation 1 Custom Edition (v0.7.4)
Tag: v0.7.4
Esta versão implementa o desligamento automático de controladores por inatividade (Auto Power-Off após 10 minutos) e reforça a estabilidade concorrente do subsistema Bluetooth em arquitetura dual-core, preservando integralmente o barramento SPI/SIO0 e a compatibilidade do console.
Novidades e Aprimoramentos
1. Desligamento Automático por Inatividade (Auto Power-Off de 10 minutos)
- Introduzido o parâmetro
CONFIG_BR_INACTIVITY_TIMEOUT_MIN(padrão de 10 minutos, ajustável de 0 a 60 minutos via Kconfig, onde 0 desativa a função). - Emissão de
HCI_Disconnectcom reason0x15(BT_HCI_ERR_REMOTE_POWER_OFF).
O DualShock 4/DualSense desliga a barra e entra em standby ao perder o link;
o comportamento em clones depende do firmware do próprio controle.
2. Contador de 32 bits (1 Hz) com reset por atividade
- O watchdog de inatividade opera no loop de manutenção (
bt_host_task),
incrementandodev_idle_sec[BT_MAX_DEV]uma vez por segundo. - A versão anterior usava um timestamp
int64_tcompartilhado entre tarefas;
a leitura rasgada em arquitetura de 32 bits podia produzir um delta inválido e
desligar o controle antes do tempo. O contador de 32 bits elimina esse defeito. - A redefinição por atividade é um store de 32 bits alinhado (atômico na
prática); não há garantia de atomicidade para campos multi-byte.
3. Detecção Abrangente de Atividade em Três Níveis
- Entradas Digitais: Pressionamento de qualquer botão digital do controle zera o contador imediatamente.
- Entradas Analógicas: sticks com desvio acima de ~19% do curso (24 unidades
na escala de 8 bits) e gatilhos acima de ~14% (35 unidades na escala de 0–255)
renovam a contagem. Dados de sensores inerciais (giroscópio/acelerômetro) não
entram no cálculo. - Feedback do Console (Rumble Guard): Comandos de vibração legítimos emitidos pelo jogo para o controle contam como atividade, impedindo desligamentos espúrios em cutscenes longas.
Arquivos e Hashes de Integridade
| Arquivo | Tamanho (bytes) | SHA-256 |
|---|---|---|
BlueRetro_hw1_playstation.bin |
557.984 | d6d628d1d6dc5105994e17db0d9ae8fa4aecb25087b8100130100a94e1f7c0c0 |
BlueRetro_PS1_Custom_v0.7.4_Package.zip |
371.861 | d22a8e99abfc4b727d9ea2a70a537d6598a3e8815887424bfce857a0b12ba9bb |
BlueRetro_PS1_Custom_v0.7.4_Source.zip |
1.039.552 | 3a776bd26ed9f8e23efcffc67cae0b93377892427ab265d186fc258ecba655c2 |
Build: CI run 40620109048 (commit b37bd1f), ESP-IDF v5.5-dev-698-g030c9957db. O firmware reporta v0.7.4 ps1-custom.
Gravação e Atualização
Bluetooth / OTA (recomendado, sem abrir o console):
- Ligue o PlayStation 1 com os controles Bluetooth desligados.
- Execute
flash_bluetooth_ota.batoupython ble_ota_update.py BlueRetro_hw1_playstation.bin(requerpip install bleak). - Alternativa via navegador web: acesse
blueretro.io/ota.htmle carregueBlueRetro_hw1_playstation.bin.
Cabo USB: Conecte a placa ESP32 ao computador e execute flash_windows.bat.
Manual (esptool):
python -m esptool --chip esp32 --port COMx -b 921600 --before default_reset \
--after hard_reset write_flash --flash_mode dio --flash_size 4MB --flash_freq 40m \
0x1000 bootloader.bin 0x8000 partition-table.bin 0xd000 ota_data_initial.bin \
0x10000 BlueRetro_hw1_playstation.binBlueRetro - PlayStation 1 Custom Edition (v0.7.3)
BlueRetro — PlayStation 1 Custom Edition (v0.7.3)
Tag: v0.7.3 (o nome v0.7.3 já pertence a uma tag antiga do
upstream e não é tocado).
Esta versão tem uma correção funcional e uma refatoração sem mudança de
comportamento. Nada de clock/timing do SIO0 foi alterado.
Correção: máscara de turbo no Multitap Virtual (MT_SLOT_1)
Com o Multitap Virtual ativo na Porta 1, a Porta 2 atende o slot 4
(Jogador 5) pelo caminho direto do driver SPI. A máscara de turbo era gerada
com port->id em vez de port->mt_first_port, então era gravada no buffer do
slot 1 (Jogador 1B) — que é apenas recalculado a cada quadro — e o slot 4 nunca
recebia máscara alguma. Resultado: turbo e auto-fire não funcionavam no
Jogador 5.
- ps_gen_turbo_mask(&wired_adapter.data[port->id]);
+ ps_gen_turbo_mask(&wired_adapter.data[port->mt_first_port]);Sem multitap, mt_first_port é igual a port->id (0 e 1), então o uso normal de
1 ou 2 jogadores não muda. MT_SLOT_2 e MT_DUAL usam o laço do multitap, que
não foi tocado.
Refatoração: acesso ao LED indicador de modo
As rotinas de status analógico/digital passaram a usar port->led_pin em vez de
recalcular o índice em ps_ctrl_ports[]. O pino resolvido é o mesmo — sem
mudança de comportamento.
O que NÃO mudou
- clock/timing do SIO0;
- leitura do DTR: a dupla amostragem já existia na v0.7.2 nas duas portas;
nesta versão só foi adicionado um comentário explicativo; - rumble, Memory Card virtual, identificação de controles, modo analógico,
deadzone e saturação.
Ajustes de deadzone, saturação ou timing do SIO exigem medição em hardware e
não foram feitos aqui.
Arquivos
| arquivo | bytes | SHA-256 |
|---|---|---|
BlueRetro_hw1_playstation.bin |
557.712 | 8abb26d99b49054d6c46a24420f99a8021347247688fe55acaf1e9b6ff45ba94 |
BlueRetro_PS1_Custom_v0.7.3_Package.zip |
359.802 | 5b6f210efe7596cb8a8396ac263458ba84287d58a1197e63f9724131b58112c8 |
Build: CI run 40344034355 (commit 5e54482), ESP-IDF
v5.5-dev-698-g030c9957db. O firmware reporta v0.7.3 ps1-custom.
Gravação
Bluetooth / OTA (recomendado, sem abrir o console): ligue o PlayStation 1
com os controles Bluetooth desligados e execute flash_bluetooth_ota.bat
(requer pip install bleak). Alternativa no navegador: blueretro.io/ota.html
com o arquivo BlueRetro_hw1_playstation.bin.
Cabo USB: conecte o ESP32 e execute flash_windows.bat.
Manual (esptool):
python -m esptool --chip esp32 --port COMx -b 921600 --before default_reset \
--after hard_reset write_flash --flash_mode dio --flash_size 4MB --flash_freq 40m \
0x1000 bootloader.bin 0x8000 partition-table.bin 0xd000 ota_data_initial.bin \
0x10000 BlueRetro_hw1_playstation.binBlueRetro - PlayStation 1 Custom Edition (v0.7.2)
BlueRetro - PlayStation 1 Custom Edition (v0.7.2)
Firmware customizado de alta precisão para receptores Bluetooth baseados em ESP32 voltado ao console Sony PlayStation 1. Desenvolvido e mantido por Schickacka, baseado no projeto de Jacques Gagnon (BlueRetro).
Novidades e Refinamentos da Versão 0.7.2:
-
Preservação de Stop Real do Jogo Durante o Pulso de Conexão:
- Implementada a verificação
ps_conn_rumble_game_seen()em conjunto comps_conn_rumble_active(). - Comandos ociosos de parada (
state == 0) enviados pelo console continuam suprimidos durante os 150 ms iniciais para proteger o pulso de pareamento, mas apenas antes do primeiro rumble legítimo do jogo. - Caso o jogo envie um comando ativo de vibração seguido de desligamento dentro da janela inicial, o stop do jogo é prontamente respeitado, evitando que motores permaneçam ligados.
- Implementada a verificação
-
Rajada Finita de Stop sem Reenvio Contínuo em Repouso:
- Em
ps_spi.c, adicionada a rajada finita de 6 quadros (PS_RUMBLE_STOP_RESYNC_FRAMES, ~100 ms a 60 Hz), disparada exclusivamente após uma transição realnonzero → zero. - Recupera eventuais perdas de pacote de desligamento no enlace Bluetooth e cessa completamente as transmissões após a rajada, preservando a largura de banda e mantendo o link em repouso sem gerar tráfego ocioso a 10 Hz.
- Em
-
Revisão e Rigor Técnico na Documentação:
- Suavizadas declarações de garantia absoluta e alinhadas as notas de compilação e dependência
bleak. - Identificada a condição opcional de
CONFIG_BR_PS1_BATTERY_IND=ypara os avisos luminosos de bateria (desativado por padrão na configuração oficial).
- Suavizadas declarações de garantia absoluta e alinhadas as notas de compilação e dependência
Arquivos Anexos:
BlueRetro_hw1_playstation.bin: Binário compilado para atualização direta via OTA Bluetooth ou Web Flasher.BlueRetro_PS1_Custom_v0.7.2_Package.zip: Pacote completo de instalação e atualização para Windows com scripts USB e OTA Bluetooth atualizados.
BlueRetro - PlayStation 1 Custom Edition (v0.7.1)
BlueRetro - PlayStation 1 Custom Edition (v0.7.1)
Firmware customizado de alta precisão para receptores Bluetooth baseados em ESP32 voltado ao console Sony PlayStation 1. Desenvolvido e mantido por Schickacka, baseado no projeto de Jacques Gagnon (BlueRetro).
Novidades e Refinamentos da Versão 0.7.1:
-
Proteção Integral do Pulso de Conexão de 150 ms:
- Adicionada a função
ps_conn_rumble_active()para monitorar o ciclo de vida do feedback tátil inicial. - Em
wireless/ps.c, consultas ociosas do console (state == 0) e comandos concomitantes de LED são bloqueados de zerar prematuramente os motores durante os 150 ms de vibração inicial. - Se uma vibração legítima de jogo (
state != 0) chegar durante o pareamento, os dados reais do jogo assumem precedência imediata.
- Adicionada a função
-
Eliminação de Tráfego Ocioso de Parada a 10 Hz:
- Em
ps_spi.c, a ressincronização periódica a cada 6 frames foi restrita exclusivamente a comandos ativos (r != 0 || l != 0). - Com o console ocioso (
r == 0 && l == 0), o envio repetitivo de relatórios de desligamento foi completamente eliminado, mantendo o enlace Bluetooth em repouso.
- Em
-
Alinhamento e Rigor Técnico na Documentação:
- Esclarecido o modelo best-effort no desligamento/reset em
host.c(o relatório é inserido antes da limpeza, mas a entrega física ao rádio depende da integridade do enlace ACL no instante do evento). - Identificada a dependência de
CONFIG_BR_PS1_BATTERY_IND=ypara os avisos luminosos de bateria (desativado por padrão na configuração oficial). - Inclusão do passo
echo "v0.7.1 ps1-custom" > version.txtno guia de compilação local e nota de dependênciapip install bleakpara gravação sem fio.
- Esclarecido o modelo best-effort no desligamento/reset em
Arquivos Anexos:
BlueRetro_hw1_playstation.bin: Binário compilado para atualização direta via OTA Bluetooth ou Web Flasher.BlueRetro_PS1_Custom_v0.7.1_Package.zip: Pacote completo de instalação e atualização para Windows com scripts USB e OTA Bluetooth atualizados.
BlueRetro - PlayStation 1 Custom Edition (v0.7.0)
BlueRetro - PlayStation 1 Custom Edition (v0.7.0)
Firmware customizado de alta precisão para receptores Bluetooth baseados em ESP32 voltado ao console Sony PlayStation 1. Desenvolvido e mantido por Schickacka, baseado no projeto de Jacques Gagnon (BlueRetro).
Novidades e Correções Arquiteturais da Versão 0.7.0:
-
Garantia de Parada de Rumble sob Pressão de Fila:
- A função
adapter_q_fb()agora retorna confirmação de inserção na fila (bool). - Se a fila estiver cheia no momento em que o jogo comanda a parada dos motores, o evento de parada é retido em uma máscara atômica de fallback (
fb_rumble_stop_mask) e aplicado diretamente pela tarefabt_fb_task, garantindo que o controle nunca fique vibrando indefinidamente. - O shadow do barramento SPI (
rumble_r_val/rumble_l_val) só é atualizado após enfileiramento bem-sucedido, forçando repetição no próximo ciclo se houver descarte. - Adicionada ressincronização periódica a cada ~100 ms para recuperar estados de vibração eventualmente perdidos no ar.
- A função
-
Parada Segura de Motores no Reset ou Desconexão do Dispositivo:
- Em
bt_host_reset_dev(), um relatório explícito de parada é enviado antes da liberação de memória e encerramento do driver, evitando que motores permaneçam ligados caso o controle desconecte subitamente enquanto vibrava.
- Em
-
Isolamento de Feedback por Dispositivo (
fb_changed_mask):- Substituição da variável global
fb_changedpor uma máscara de bits por dispositivo (fb_changed_mask), evitando que comandos de LED ou rumble direcionados ao Jogador 1 forcem transmissões desnecessárias de pacotes ao Jogador 2.
- Substituição da variável global
-
Eliminação de Ambiguidade no Pulso de Conexão:
- O pulso háptico de 150 ms na conexão agora utiliza um contador de eventos reais do jogo (
game_fb_cnt). Se o jogo enviar comandos de vibração durante a inicialização, o comando do jogo prevalece e o pulso não sobrescreve os dados legítimos.
- O pulso háptico de 150 ms na conexão agora utiliza um contador de eventos reais do jogo (
-
Higienização de Motores em Comandos de LED:
- Ao processar eventos de LED (
FB_TYPE_PLAYER_LED/FB_TYPE_STATUS_LED), os motores são explicitamente zerados caso o flag de rumble esteja desligado, impedindo que dados residuais no buffer reativem a vibração.
- Ao processar eventos de LED (
-
Configuração Unificada de Cores via Kconfig:
- A opção
CONFIG_BR_PS1_LED_DIGITAL_COLORagora rege oficialmente a cor do DualShock 4 (padrão#949190). - Criada a opção
CONFIG_BR_PS1_LED_DIGITAL_COLOR_DS5(padrão0x000000), permitindo personalização independente mantendo o DualSense com a barra apagada e apenas os pontos de jogador ativos.
- A opção
-
Preservação de Rumble Durante Avisos de Bateria:
- A rotina
ps_send_led_only()agora preserva os parâmetros ativos de vibração ao invés de zerar os motores a cada pulso de notificação de bateria baixa.
- A rotina
-
Retenção de Cor de Jogador Durante Animação de Conexão:
- Se um comando de LED de jogador chegar enquanto o controle executa a respiração azul inicial, a cor solicitada é registrada como pendente (
ps4_set_pending_led) e aplicada imediatamente ao término da animação.
- Se um comando de LED de jogador chegar enquanto o controle executa a respiração azul inicial, a cor solicitada é registrada como pendente (
-
Telemetria e Diagnóstico Avançado:
- Registro detalhado e legível no log de inicialização do motivo de reset do ESP32 (
esp_reset_reason()), facilitando a identificação imediata de subtensão (brownout), panic ou watchdog. - Registro do código de motivo nos eventos de desconexão Bluetooth HCI (
reason: 0xXX). - Registro de transições de vibração e contagem de eventos descartados de fila limitados a 1 linha/segundo para não concorrer com o lock de transmissão.
- Registro detalhado e legível no log de inicialização do motivo de reset do ESP32 (
-
Proteção Contra Underflow no Parser HID:
- Validação rígida do comprimento mínimo de pacotes em
bt_hid_ps_hdlr(), descartando com segurança pacotes truncados e prevenindo corrupção de memória.
- Validação rígida do comprimento mínimo de pacotes em
Arquivos Anexos:
BlueRetro_hw1_playstation.bin: Binário compilado para atualização direta via OTA Bluetooth ou Web Flasher.BlueRetro_PS1_Custom_v0.7.0_Package.zip: Pacote completo de instalação e atualização para Windows com scripts USB e OTA Bluetooth atualizados.
BlueRetro - PlayStation 1 Custom Edition (v0.6.12)
BlueRetro - PlayStation 1 Custom Edition (v0.6.12)
Firmware customizado de alta precisão para receptores Bluetooth baseados em ESP32 voltado ao console Sony PlayStation 1. Desenvolvido e mantido por Schickacka, baseado no projeto de Jacques Gagnon (BlueRetro).
Novidades e Otimizações da Versão 0.6.12:
-
DualShock 4 com Brilho Calibrado (-25%):
- O LED cinza neutro no Modo Digital foi reduzido em 25%, passando de
#c5c1c0para#949190(0x00909194em formato little-endian0x00BBGGRR), proporcionando iluminação suave e confortável sem ofuscar a visão e com redução drástica de consumo de energia. - No Modo Analógico, transita instantaneamente para Vermelho clássico autêntico (
0x00006D).
- O LED cinza neutro no Modo Digital foi reduzido em 25%, passando de
-
Conectividade Rock-Solid e Conexão Imediata (Base v0.6.4):
- Eliminação de Quedas de Conexão e Atrasos: Restaurada a sonda inicial limpa com
leds = 0x000000(apagada) embt_hid_ps_init. Na versão anterior, o comando de LED com alto consumo era disparado antes da estabilização da conexão e do timer de 1 segundo, gerando inrush current e instabilidade no link L2CAP. - Transição Fluida: A barra de luz permanece apagada durante a sonda, executa a respiração azul de identificação de jogador e então aplica o tom
#949190suavemente ao entrar em operação normal. - Otimização de Pacotes: Removido envio duplicado desnecessário de
bt_hid_cmd_ps5_set_confapósbt_hid_cmd_ps5_trigger_init.
- Eliminação de Quedas de Conexão e Atrasos: Restaurada a sonda inicial limpa com
-
DualSense (PS5) Preservado Integralmente:
- Preserva 100% da implementação perfeita da v0.6.10/v0.6.11: lightbar desligada no Modo Digital com apenas os LEDs pontuais brancos indicadores de jogador ativos sob o touchpad (1 ponto = Jogador 1, 2 pontos = Jogador 2), acendendo em Vermelho vivo ao ativar o analógico.
Arquivos Anexos:
BlueRetro_hw1_playstation.bin: Binário compilado para atualização direta via OTA Bluetooth ou Web Flasher.BlueRetro_PS1_Custom_v0.6.12_Package.zip: Pacote completo de instalação e atualização para Windows com scripts USB e OTA Bluetooth atualizados.
BlueRetro - PlayStation 1 Custom Edition (v0.6.11)
BlueRetro - PlayStation 1 Custom Edition (v0.6.11)
Firmware customizado de alta precisão para receptores Bluetooth baseados em ESP32 voltado ao console Sony PlayStation 1. Desenvolvido e mantido por Schickacka, baseado no projeto de Jacques Gagnon (BlueRetro).
Novidades e Correções da Versão 0.6.11:
- Iluminação Especializada DualShock 4 vs DualSense (PS5):
- DualShock 4 com LED Cinza Neutro (
#c5c1c0): Como o DualShock 4 não possui indicadores luminosos discretos de jogador independentes da barra de luz, a lightbar permanece acesa em cinza neutro suave (#c5c1c0/0xC0C1C5) durante a conexão no Modo Digital, permitindo identificar visualmente que o controle está ligado e conectado ao console. No Modo Analógico, a barra transita para Vermelho autêntico (0x00006D). - DualSense (PS5) Mantido com Lightbar Desligada no Digital: O DualSense preserva a implementação perfeita da v0.6.10: lightbar 100% desligada no Modo Digital com apenas os pontos discretos de identificação de jogador acesos sob o touchpad (1 ponto = P1, 2 pontos = P2), acendendo em Vermelho no Modo Analógico.
- DualShock 4 com LED Cinza Neutro (
Arquivos Anexos:
BlueRetro_hw1_playstation.bin: Binário compilado para atualização direta via OTA Bluetooth ou Web Flasher.BlueRetro_PS1_Custom_v0.6.11_Package.zip: Pacote completo de instalação e atualização para Windows com scripts USB e OTA Bluetooth atualizados.
BlueRetro - PlayStation 1 Custom Edition (v0.6.10)
BlueRetro - PlayStation 1 Custom Edition (v0.6.10)
Firmware customizado de alta precisão para receptores Bluetooth baseados em ESP32 voltado ao console Sony PlayStation 1. Desenvolvido e mantido por Schickacka, baseado no projeto de Jacques Gagnon (BlueRetro).
Novidades e Correções da Versão 0.6.10:
-
Modo Digital Autêntico SCPH-1200 (Lightbar Desligada):
- Fidelidade Histórica ao DualShock Original: No controle SCPH-1200 do PlayStation 1, o LED vermelho só acendia quando o modo Analógico estava ativo; no modo Digital, permanecia 100% apagado. A cor padrão do modo Digital foi definida como
0x000000(desligada) para DS4 e DS5. - Indicação de Conexão e Jogador Preservadas: O DS4 executa a respiração pulsante azul indicando o número do slot e depois apaga; o DS5 exibe os pontos discretos brancos sob o touchpad (1 ponto para Player 1, 2 pontos para Player 2) sem iluminação residual na lightbar.
- Ativação Vermelha em Modo Analógico: Ao ativar o modo Analógico (seja pelo botão PS ou automaticamente por jogos como Resident Evil 3), a barra luminosa acende instantaneamente no Vermelho autêntico (
0x00006D) em ambos os controles. Ao desativar, retorna ao estado apagado.
- Fidelidade Histórica ao DualShock Original: No controle SCPH-1200 do PlayStation 1, o LED vermelho só acendia quando o modo Analógico estava ativo; no modo Digital, permanecia 100% apagado. A cor padrão do modo Digital foi definida como
-
Handshake de Reset Linux Kernel (
dualsense_reset_leds):- Cancelamento da Animação Azul de Boot do DualSense: Ao conectar via Bluetooth, o DualSense executa autonomamente uma animação de boot azul e mantém a cor se não for comandado a sair. Alinhado ao driver oficial da Sony no Linux (
hid-playstation), implementado o envio de pacote de reset de lightbar comvalid_flag2 = 0x02(LIGHTBAR_SETUP_CONTROL_ENABLE) elightbar_setup = 0x02(LIGHT_OUT) no callback de inicialização. - Isolamento de Modo Operacional: Os relatórios de feedback e atualização subsequentes (
ps5_fb_from_generic,ps_send_led_only,bt_hid_ps5_init_callback) mantêmvalid_flag2 = 0x00elightbar_setup = 0x00, permitindo que o controle aplique livremente os comandos de cor RGB e os LEDs indicadores de jogador sem conflito com o registrador de setup.
- Cancelamento da Animação Azul de Boot do DualSense: Ao conectar via Bluetooth, o DualSense executa autonomamente uma animação de boot azul e mantém a cor se não for comandado a sair. Alinhado ao driver oficial da Sony no Linux (
Arquivos Anexos:
BlueRetro_hw1_playstation.bin: Binário compilado para atualização direta via OTA Bluetooth ou Web Flasher.BlueRetro_PS1_Custom_v0.6.10_Package.zip: Pacote completo de instalação e atualização para Windows com scripts USB e OTA Bluetooth atualizados.