Skip to content

BlueRetro - PlayStation 1 Custom Edition (v0.7.4)

Choose a tag to compare

@Schickacka Schickacka released this 28 Oct 03:01
· 22 commits to master since this release

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