🎮 GBS-Control PT-BR
Versão brasileira e aprimorada do firmware do upscaler Tvia Trueview5725 (ESP8266 / Wemos D1 mini)
Mantida por Willian Nascimento (Maniaco Game Room)
Tradução completa para PT-BR, sistema de perfis com automações avançadas, novos ícones para o display OLED e correções profundas no sistema de arquivos. Desenvolvido para a comunidade de hardware retro no Brasil.
📊 Números da Versão
- Firmware Otimizado: ~898 KB (86% do limite de 1.044.464 bytes)
- Customização: 56 ícones de console, 51 animações de protetor de tela
- Capacidade: 72 slots de perfil
- Visual: 6 temas de cor, 2 idiomas integrados na WebUI
🌍 Tradução e Redesign da Interface (WebUI)
Todo o ecossistema do firmware foi localizado e redesenhado, entregando uma experiência 100% nativa e agradável:
- Tradução e Seletor de Idioma: WebUI (abas, textos de ajuda, alertas e erros) e menu OLED traduzidos. O seletor (Português/English) aplica o inglês sobre o texto em português via dicionário exato (~110 entradas).
- Boot Logo Customizado: Arte própria do projeto no lugar da tela de inicialização padrão.
- Design Aprimorado: Cabeçalho novo, painéis escuros com títulos em barra metálica e botões com LED que acendem na cor do tema. Paginação adaptativa com base na altura da tela, facilitando o uso no celular.
- Temas de Cor: 6 opções baseadas em variáveis CSS (Padrão, Verde Fósforo, Synthwave, Âmbar CRT, Rubi Famicom, Roxo GameCube).
- Cards de Perfil: Arte do console ao fundo com contorno neon no perfil selecionado, sistema de busca inteligente (ignora acentos e maiúsculas) e contador de perfis.
⚙️ Base Técnica & Sistema de Arquivos
- Migração de SPIFFS para LittleFS: O sistema de arquivos foi modernizado para o formato atual do ESP8266, garantindo maior confiabilidade. Atenção: A primeira inicialização formata a área de dados (é necessário backup prévio).
- Persistência Segura: O arquivo
/preferencesv2.txté sequencial. Novos campos foram acrescentados com valores padrão seguros para não quebrar backups existentes. Arquivos auxiliares por slot mantêm o mesmo padrão.
💾 Sistema de Perfis (Presets) e Automações
O gerenciamento foi reescrito para suportar até 72 slots (A-Z, a-z, 0-9 e símbolos), ordenados alfabeticamente tanto na WebUI quanto no OLED.
| Recurso | Como Funciona |
|---|---|
| Origem de Vídeo por Preset | Ao salvar, você escolhe a entrada (SCART / VGA / Componente / RGBS). É uma etiqueta informativa exibida no card (o chip não distingue eletricamente). |
| Perfil de Inicialização | Força um slot específico a ser carregado sempre que o aparelho liga, ignorando o "último usado". |
| Aviso de Mudança | O display OLED exibe "Formato mudou" seguido da nova resolução por 3 segundos ao alternar presets. |
📺 Menu OLED & Ícones de Console
Nova funcionalidade criada, seletor de icone para presets, ideal para quem gerencia coleções grandes com switches de vídeo.
- Diponiveis 56 ícones: O seletor permite escolher entre (controles, logos e gabinetes) de sistemas Nintendo, Sega, NEC, SNK, Sony, Microsoft, Atari, Panasonic 3DO, entre outros.
- Processamento de Imagem: Cada arte teve recorte de bordas, fundo transparente e redimensionamento exato (40x40px). Na WebUI, um fundo claro atrás do ícone garante contraste no tema escuro.
- Protetor de Tela Inteligente:
- Modo Nome: O nome do preset passeia pela tela. A fonte diminui dinamicamente (URW Gothic 20/14, DejaVu Mono 12/10) usando a largura do texto para evitar cortes (ex: "Super Nintendo").
- Modo Ícone (Bounce): 51 dos 56 ícones ganharam animação de "quicar" de 4 quadros (32x32px, 1-bit). Conversão feita com threshold adaptativo (método de Otsu) e contorno automático de silhueta para não sumir no fundo preto. (5 ícones complexos usam o Modo Nome como fallback).
- Status Ativo: Nome e ícone do preset ativo ficam fixos na tela principal, com rolagem alinhada à esquerda para nomes longos.
🛠️ Correções de Bugs (Bugfixes)
Clique para expandir as correções técnicas aplicadas
| Bug Original | Causa Raiz | Solução Aplicada |
|---|---|---|
| OLED não achava presets | Dessincronia de sistema de arquivos (OLED lia SPIFFS, WebUI lia LittleFS). | Unificação total no LittleFS. |
| Slot quebrava no 27º perfil | Código calculava slot por 'A' + índice (limitado a 26 posições). | Implementada tabela estática de 72 caracteres (slotIndexMap) no firmware inteiro. |
| Origem de vídeo falhava no card | 3 requisições paralelas excediam o limite de conexões do ESP8266. | Requisições sequenciadas com rotina de retry. |
| Ganho ADC "sem efeito" | O resync restaurava o padrão de fábrica se não houvesse preset carregado. | Valores ajustados de ganho agora sobrevivem e são restaurados após o reset. |
| Overflow horizontal mobile | A tag <fieldset> ignorava propriedades grid/flex e passava da tela. |
CSS ajustado na interface (min-width: 0 + grid minmax). |
💻 Ferramentas e Documentação
- GBSC Updater: Programa próprio para Windows (ou Python em qualquer OS). Atualiza via Wi-Fi (OTA) informando apenas o IP, ou grava via USB na primeira instalação. Lida automaticamente com o serviço OTA do ESP8266 e contorna o Firewall do Windows.
- Pipeline de Mídia: Script
make_icon_animation.pyque gera automaticamente o código em C++ (OLEDIconAnimations.cpp) a partir dos assets. - Documentação Inclusa: Manual de Uso, Tutorial de Instalação passo a passo (Wi-Fi/USB) e este descritivo técnico.
📌 Pendências Conhecidas (Roadmap)
- Offset por Canal (Nível de Preto): A ideia de ajustar o offset por canal ADC está mapeada (registradores já existem no código), mas a interação com a rotina de auto-calibração precisa de mais testes.
- Automação para Switches SCART / Componente: Em fase de mapeamento/desenvolvimento.
- Menu OLED: Atualmente restrito ao PT-BR (textos baseados em bitmaps pré-desenhados).