Skip to content

Releases: Schickacka/BlueRetro

BlueRetro - PlayStation 1 Custom Edition (v0.7.5.1)

Choose a tag to compare

@Schickacka Schickacka released this 30 Oct 00:02

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):

  1. Ligue o PlayStation 1 com os controles Bluetooth desligados.
  2. Execute flash_bluetooth_ota.bat ou python ble_ota_update.py BlueRetro_hw1_playstation.bin (requer pip install bleak).
  3. Alternativa via navegador web: acesse blueretro.io/ota.html e carregue BlueRetro_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.bin

BlueRetro - PlayStation 1 Custom Edition (v0.7.5)

Choose a tag to compare

@Schickacka Schickacka released this 29 Oct 00:32

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 como BT_HID_GENERIC. O driver agora reavalia a transição de tipo para BT_PS, redefine a flag BT_DEV_HID_INIT_DONE e dispara a inicialização nativa bt_hid_ps_init().
  • Inicialização Imediata (Zero Latência Adicional): Ao receber o primeiro relatório de status completo (Report 0x11 para DualShock 4 ou Report 0x31 para DualSense), a rotina de inicialização cancela o temporizador de fallback com segurança (esp_timer_stop antes de esp_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_fetch e __atomic_store_n com 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 utiliza port->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):

  1. Ligue o PlayStation 1 com os controles Bluetooth desligados.
  2. Execute flash_bluetooth_ota.bat ou python ble_ota_update.py BlueRetro_hw1_playstation.bin (requer pip install bleak).
  3. Alternativa via navegador web: acesse blueretro.io/ota.html e carregue BlueRetro_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.bin

BlueRetro - PlayStation 1 Custom Edition (v0.7.4)

Choose a tag to compare

@Schickacka Schickacka released this 28 Oct 03:01

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_Disconnect com reason 0x15 (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),
    incrementando dev_idle_sec[BT_MAX_DEV] uma vez por segundo.
  • A versão anterior usava um timestamp int64_t compartilhado 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):

  1. Ligue o PlayStation 1 com os controles Bluetooth desligados.
  2. Execute flash_bluetooth_ota.bat ou python ble_ota_update.py BlueRetro_hw1_playstation.bin (requer pip install bleak).
  3. Alternativa via navegador web: acesse blueretro.io/ota.html e carregue BlueRetro_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.bin

BlueRetro - PlayStation 1 Custom Edition (v0.7.3)

Choose a tag to compare

@Schickacka Schickacka released this 26 Oct 18:20

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.bin

BlueRetro - PlayStation 1 Custom Edition (v0.7.2)

Choose a tag to compare

@Schickacka Schickacka released this 22 Oct 18:52

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:

  1. Preservação de Stop Real do Jogo Durante o Pulso de Conexão:

    • Implementada a verificação ps_conn_rumble_game_seen() em conjunto com ps_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.
  2. 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 real nonzero → 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.
  3. 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=y para os avisos luminosos de bateria (desativado por padrão na configuração oficial).

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)

Choose a tag to compare

@Schickacka Schickacka released this 22 Oct 17:15

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:

  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.
  2. 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.
  3. 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=y para os avisos luminosos de bateria (desativado por padrão na configuração oficial).
    • Inclusão do passo echo "v0.7.1 ps1-custom" > version.txt no guia de compilação local e nota de dependência pip install bleak para gravação sem fio.

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)

Choose a tag to compare

@Schickacka Schickacka released this 22 Oct 16:42

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:

  1. 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 tarefa bt_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.
  2. 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.
  3. Isolamento de Feedback por Dispositivo (fb_changed_mask):

    • Substituição da variável global fb_changed por 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.
  4. 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.
  5. 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.
  6. Configuração Unificada de Cores via Kconfig:

    • A opção CONFIG_BR_PS1_LED_DIGITAL_COLOR agora rege oficialmente a cor do DualShock 4 (padrão #949190).
    • Criada a opção CONFIG_BR_PS1_LED_DIGITAL_COLOR_DS5 (padrão 0x000000), permitindo personalização independente mantendo o DualSense com a barra apagada e apenas os pontos de jogador ativos.
  7. 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.
  8. 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.
  9. 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.
  10. 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.

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)

Choose a tag to compare

@Schickacka Schickacka released this 22 Oct 03:40

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 #c5c1c0 para #949190 (0x00909194 em formato little-endian 0x00BBGGRR), 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).
  • 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) em bt_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 #949190 suavemente ao entrar em operação normal.
    • Otimização de Pacotes: Removido envio duplicado desnecessário de bt_hid_cmd_ps5_set_conf após bt_hid_cmd_ps5_trigger_init.
  • 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)

Choose a tag to compare

@Schickacka Schickacka released this 22 Oct 03:08

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.

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)

Choose a tag to compare

@Schickacka Schickacka released this 22 Oct 02:53

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.
  • 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 com valid_flag2 = 0x02 (LIGHTBAR_SETUP_CONTROL_ENABLE) e lightbar_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êm valid_flag2 = 0x00 e lightbar_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.

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.