Skip to content

BlueRetro - PlayStation 1 Custom Edition (v0.7.5.1)

Latest

Choose a tag to compare

@Schickacka Schickacka released this 30 Oct 00:02
· 1 commit to master since this release

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 ($\text{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 ($\text{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 ($\approx 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