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