Repository navigation
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.