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