GBS-8200: Configurando uma WeMos D1 para trabalhar com o firmware GBS-Control

Faz um tempinho que estou brincando com um custom firmware para a upscaler GBS-8200, que uso para ligar meus consoles e computadores clássicos à minha TV LCD. Chamado GBS-Control, esse firmware corrige algumas deficiências do original, melhora o desempenho geral da placa e adiciona alguns novos recursos interessantes. Há toda uma discussão sobre o desenvolvimento do GBS-Control no fórum Shmups.

Para usar o GBS-Control é necessário fazer algumas pequenas modificações na GBS-8200, para acoplar a ela uma Arduino ou compatível. É a Arduino que irá rodar o firmware, assumindo controle do conversor de vídeo da GBS-8200. Fiz essa minha modificação em minha placa há algum tempo atrás e documentei o processo em dois vídeos no YouTube (parte 1 e parte 2).

Mas a Arduino é apenas a ponta do Iceberg. Se no lugar dela você usar uma placa mais sofisticada, porém ainda compatível, como a WeMos D1 sua GBS-8200 ganha “superpoderes” como gerador de scanlines, controle remoto via Wi-Fi e várias opções para ajuste fino da posição e geometria da imagem. E o melhor é que a WeMos D1 é barata: comprei a minha por R$ 30 no Mercado Livre. E a instalação dela na GBS-8200 é fácil: basta tirar a Arduino e colocar a WeMos D1 no lugar.

Placa WeMos D1

Uma WeMos D1

Mas antes você precisa programar a WeMos D1 com o GBS-Control. E como sou um novato completo nesse mundo de Arduino e afins, patinei um pouquinho até encontrar o caminho das pedras. Por isso decidi compartilhar um passo-a-passo aqui neste artigo, acompanhando o vídeo que fiz sobre a modificação e postei lá no YouTube.

Estas instruções parecem complexas, mas você não vai levar mais do que 10 minutos para fazer tudo. E o resultado final vale a pena, acredite em mim. Olhe esse detalhe de Streets of Rage 2 rodando numa GBS-8200 com a WeMos D1.

Streets of Rage 2 no MegaDrive via GBS-Control

Detalhe de Streets of Rage 2 rodando em uma TV LCD de 32″ a 1280 x 960 pixels através de uma GBS-8200 modificada com o GBS-Control e WeMos D1

Passo 1: Adicionando o suporte à WeMos D1 na Arduino IDE

Antes de mais nada, assumo que você já tenha o ambiente de desenvolvimento do Arduino (Arduino IDE) instalado e funcionando em sua máquina. Estas intruções foram testadas com a versão 1.8.5. Se você usa Linux, uma dica: baixe a IDE do site oficial, e não de um repositório de sua distribuição. Em casa uso o Linux Mint, e a versão que veio via APT era pré-histórica: 1.0.5.

A Arduino IDE não sabe o que é uma WeMos D1, então precisamos baixar um pacote para adicionar suporte a esta placa. Abra a interface e clique em File / Preferences. Na janela que surge, na aba Settings, cole a seguinte URL no campo Additional Board Manager URLs:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Clique em OK.

Adicionando URLs ao Boards Manager

Adicione uma URL extra para que o Board Manager da Arduino IDE possa baixar o pacote de suporte à WeMos D1

Agora clique em Tools / Board / Boards Manager. Na janela que surge, selecione a opção esp8266 by ESP8266 Community e clique no botão Install. Agora você deve ver a opção WeMos D1 R2 & mini em Tools / Board.

Pacote de suporte à ESP8266

Este é o pacote para adicionar o suporte a WeMos D1 (e outras placas baseadas no ESP8266) à Arduino IDE.

Passo 2: habilitando o acesso à WeMos D1

Estes passos se aplicam apenas a quem usa Linux, como eu. Plugue sua WeMos D1 ao PC, abra a Arduino IDE, clique em Tools e observe a opção Ports. Se ela estiver desabilitada (acinzentada), você vai precisar fazer alguns passos extras antes de usar a WeMos D1, já que ela não foi reconhecida pelo sistema. Se a opção Ports estiver habilitada, pule para o passo 3.

Quem me deu o caminho das pedras foi o Steve Kemp. Todo dispostivo USB tem uma identidade composta pelo ID do fabricante (Vendor ID) e do produto (Product ID), e precisamos descobrir os IDs da WeMos. Para isso, antes de plugar a placa ao seu computador, digite o comando lsusb. Você vai ver algo parecido com isso:

Bus 002 Device 005: ID 1a2c:2d23 China Resource Semico Co., Ltd
Bus 002 Device 006: ID 04ca:3005 Lite-On Technology Corp.
Bus 002 Device 003: ID 046d:c52f Logitech, Inc. Unifying Receiver
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0ac8:c342 Z-Star Microelectronics Corp.
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Não se preocupe se os IDs e nomes que aparecerem em sua máquina forem diferentes, afinal a lista acima mostra o que está plugado à minha máquina. O que importa é o passo seguinte: plugue a WeMos ao PC e rode novamente o comando lsusb. Compare com o resultado anterior, e você verá uma linha extra com algo como:

Bus 001 Device 005: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

Esse é o conversor USB↔Serial integrado à WeMos. Anote o Vendor ID (no meu caso 1a86) e Product ID (7523) listados em sua máquina. Atenção: não copie simplesmente os IDs que estou mencionando aqui, pois eles podem ser diferentes em sua placa.

Agora vamos criar uma “regra” do udev (o gerenciador de dispositivos no Linux) que vai dizer ao sistema o que fazer quando a placa for plugada. Como root, digite:

cd /etc/udev/rules.d
pico 99-wemos.rules

Isso vai abrir o editor de texto Pico. Cole o conteúdo abaixo:

SUBSYSTEM=="tty", GROUP="plugdev", MODE="0660"
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="wemos"

Lembre-se de substituir os valores em idVendor e idProduct pelo Vendor ID e Product ID mostrados em sua máquina. Tecle Ctrl-X para sair do editor, e responda Y quando ele perguntar se você quer salvar o arquivo.

Recarregue as regras do udev com o comando abaixo:

# /etc/init.d/udev reload

Desplugue sua WeMos D1 do PC, plugue novamente e ela deve ser reconhecida na Arduino IDE.

Passo 3: instalando a biblioteca WebSockets

Estamos quase no final. Para compilar o GBS-Control você precisa da biblioteca WebSockets instalada na Arduino IDE. Para isso, clique em Sketch / Include Library / Manage Libraries. Na janela que surgir, clique no campo Filter your search… e digite WebSockets. O pacote que queremos é o WebSockets by Marcus Sattler, em minha máquina ele era o último da lista. Clique sobre ele e no botão Install.

Instalando a biblioteca WebSockets

Adicione a biblioteca WebSockets à Arduino IDE antes de compilar o gbs-control

Passo 4: compilando o GBS-Control

Agora sim podemos compilar o GBS-Control. Acesse a página do projeto no GitHub, clique no botão Clone or Download e selecione a opção Download ZIP. Descompacte o arquivo gbs-control-master.zip e você deve ter uma pasta chamada gbs-control-master contendo o código-fonte do GBS-Control.

Renomeie a pasta gbs-control-master para gbs-control. Este passo é importante: não sei porque motivo, mas a Arduino IDE insiste que todo sketch (programa) esteja contido em uma pasta com o mesmo nome. Como o sketch se chama gbs-control.ino, ele tem que estar dentro de uma pasta chamada gbs-control.

Abra o arquivo gbs-control.ino na Arduino IDE e clique em Sketch / Verify/Compile. Depois de alguns minutos, a mensagem Done compiling. deve aparecer acima da janela de status no rodapé da tela. Agora é só clicar em Sketch / Upload e esperar a transferência do programa para a placa.

Compilando o GBS-Control

Resultado da compilação do GBS-Control

Ufa! Sua WeMos D1 está prontinha e programada com o GBS-Control. Agora é só seguir os passos do meu vídeo no YouTube para conectá-la à sua GBS-8200 e se divertir. Até mais!

 

Consertando o som do MD Play: Parte 2

Boa notícia para os proprietários do MD Play: a dupla Neto e Rafael Muller, que está trabalhando em melhorias de som e software para o Novo Mega Drive, lançou uma versão de seu bootloader compatível como o Mega Drive portátil da TecToy. Com isso o aparelho tem uma melhoria drástica no som, que fica muito mais próximo do console original, o que torna a experiência de jogo muito melhor. A instalação é muito fácil e não modifica permanentemente o console, mas será necessário mudar a estrutura de pastas do cartão. Basta seguir os passos abaixo.

Montando o cartão

  • Baixe a versão mais recente do MDI (Mega Drive Init) na página do Neto. No momento em que escrevo isso, é a Neto_MDI_1_09a.rar.
  • Descompacte o arquivo no HD de seu computador. Você terá 8 arquivos com a extensão .bin. Descarte o MDI.bin (que é para o Novo Mega).
  • Crie as pastas TECTOY e GAME na raiz do seu cartão SD.
  • Na pasta GAME do cartão, coloque o arquivo Neto_Boot_Loader.bin
  • Dentro da pasta TECTOY crie as pastas DATA e ROM
  • Dentro de DATA, coloque os arquivos ROM1.bin a ROM6.bin.
  • Dentro de TECTOY/ROM, crie as pastas ROM1, ROM2, ROM3, ROM4, ROM5 e ROM6.
  • Coloque as suas ROMs (com extensão .bin ou .md) dentro destas pastas. Para facilitar a navegação, eu costumo colocar no máximo 30 ROMs por pasta, mas já coloquei quase 100 sem problemas.

Carregando o novo menu

Com o cartão preparado, coloque ele em seu MD Play e ligue o console. Ao ver o menu inicial, pressione Esquerda, selecione a opção SD Card e pressione Start. Você verá uma tela com apenas um “jogo” listado, o Neto_Boot_Loader. Aperte Start para carregar o novo menu.

Antes de carregar um jogo é possível definir opções como a frequência da tela para os jogos Europeus.

Surge uma tela inicial, com algumas opções de configuração. Aperte B para ativar o modo Europa 60 Hz, ou em alguns jogos o LCD pode sair de sincronia (imagem “rolando”). Em alguns segundos o menu do Novo Mega Drive apacerá na tela.

A partir daí basta selecionar a pasta ROM com seus jogos e o jogo que deseja jogar. Start inicia o jogo, como no menu original. Sempre que você apertar o botão Menu o console irá voltar para o menu de fábrica, então você terá de repetir o procedimento para carregar o novo menu do início.

O menu é o mesmo usado no Novo Mega Drive

Assim que conseguir fazer uma captura decente, posto aqui um “antes e depois”. Mas vá por mim, essa modificação é essencial para qualquer proprietário do MD Play.

Seu Nintendo DS não liga? Troque o fusível!

Mais uma peça de “sucata” caiu em minhas mãos recentemente: um Nintendo DS (o modelo original, prata, conhecido como “DS Phat”) que simplesmente se recusava a ligar ou carregar a bateria. Depois de verificar que tanto o carregador quanto a bateria estavam OK, restava abrir o console para identificar o problema. Como não vi nenhum dano óbvio apelei para “São Google”, onde encontrei em poucos cliques a possível causa para o problema: um fusível aberto.

Continue reading

Animação de boot do Android L para o Motorola RAZR MAXX

Com o lançamento do preview para desenvolvedores do Android L, não demorou para que vários componentes do sistema fossem desmembrados e espalhados pela internet. Nesta thread no XDA Developers você pode encontrar alguns dos novos apps, papéis de parede, ringtones e alarmes, fontes e até a animação de boot, que é mostrada ao ligar o smartphone, enquanto o sistema carrega.

Só por farra, adaptei a animação de boot para a tela do RAZR MAXX, e ela deve funcionar também em qualquer smartphone com uma tela da mesma resolução (540 x 960 pixels). Para usá-la você vai precisar de um smartphone com root, no caso do MAXX siga as instruções aqui.

AndroidL_Boot_Abre-500px

Continue reading

[TUTORIAL] Instalando o Android 4.4 em um Motorola RAZR MAXX

Voltei a usar um Motorola RAZR MAXX como meu smartphone no dia-a-dia há cerca de uma semana, mas o desempenho do aparelho com a última versão oficial do sistema da Motorola (Android 4.1) estava deixando a desejar. Ele estava “engasgando”, às vezes por vários segundos, mesmo em tarefas simples como abrir o Chrome ou alternar entre apps, e por duas vezes congelou completamente me obrigando a um desligamento forçado (segure Power + Diminuir Volume até o aparelho desligar).

A solução? Instalar uma versão modificada, mais ágil e não-oficial (uma “ROM”) do Android. Por sorte a equipe de desenvolvimento de uma das ROMs mais populares, a CyanogenMod, está lançando versões estáveis do CyanogenMod 11 (Android 4.4.2) para o RAZR MAXX.

KitKat_MAXX-Abre-800px

O processo de instalação é documentado, geralmente em inglês, em várias páginas na web. Mas como caí em duas ou três pegadinhas no caminho e a informação está espalhada, achei que seria interessante condensar tudo em um único artigo para ajudar quem pretende seguir na mesma direção.

São três etapas: fazer “root” no smartphone, instalar um app chamado SafeStrap que vai nos permitir instalar a ROM nova sem afetar ou apagar o sistema original da Motorola e instalar o CyanogenMod.

Mas antes, UM AVISO: este processo provavelmente invalida a garantia de seu aparelho, e se feito incorretamente pode causar danos ao sistema e transformar o smartphone em um peso de papel (o popular “brick”). Não seja apressado, leia e releia cada passo antes de prosseguir. Não me responsabilizo por danos que possam vir a ser causados caso você decida seguir estas instruções.

Dito isto, faça um backup dos arquivos em seu smartphone, separe uma hora do seu dia, contando o tempo para download dos arquivos e para ler com calma este guia, pegue uma xícara de café e mãos à obra!

Continue reading

#! [Crunchbang]

Há tempo não uso mais o Linux como sistema operacional em minhas máquinas. Em 2005 migrei para o Mac OS X em meus computadores domésticos (como fizeram muitos colegas dos tempos de Conectiva), e profissionalmente uso o Windows desde 2008.

Na verdade acredito que o “sistema operacional” é cada vez menos relevante. O que importa são os aplicativos que uso para realizar as tarefas do dia-a-dia, e no meu caso boa parte deles está na web. Pra que gastar 20 GB de espaço em disco com Windows e Office quando uma janela do Google Docs me atende da mesma forma? E uma boa experiência recente com um Chromebook em um review para a PCWorld reforçou esse ponto de vista.

Foi quando terminei o review do Chromebook e voltei a usar meu PC “velho de guerra” na redação que notei o “peso” de um sistema e apps tradicionais. O tempo de boot, a demora para abrir o Outlook 2013, os engasgos no streaming de áudio sempre que eu trocava de app ou abria uma nova aba no navegador. Isso num PC com um processador Core 2 Duo Dual Core de 1,6 GHz e 4 GB de RAM.

Daí pensei em procurar um sistema mais “leve”, que me oferecesse a agilidade do Chrome OS. Há uma versão não oficial do Chrome OS (baseada no código Open Source) distribuída por um hacker conhecido como Hexxeh, mas a última compilação foi em abril deste ano, e em testes que fiz anteriormente a compatibilidade com o hardware e a estabilidade deixaram a desejar.

Pensei em uma solução baseada em Linux e foi aí que tropecei no Crunchbang, uma distro baseada no Debian e no gerenciador de janelas OpenBox. O bichinho VOA! A imagem ISO tem cerca de 750 MB, instalei em um pendrive de 2 GB que estava no fundo da gaveta usando o Universal USB Installer e fiquei impressionado.

Continue reading

GTA III no Gametel

Estou brincando de transformar meu Motorola Atrix e um Gametel em um “console portátil” e experimentando vários jogos. Um que não funcionou “de cara”, pra minha decepção, é o GTA III. Felizmente o jogo tem suporte a teclado, e é possível configurar o Gametel para emular comandos de teclado. Basta saber a combinação certa pra cada “botão” do GTA III, que encontrei numa discussão no Orkut (quem diria, o Orkut sendo útil) e reproduzo abaixo.

Continue reading

Desbloqueando um HTC Touch Cruise

Recentemente comprei um HTC Touch Cruise (também conhecido como “Polaris” ou “Pola100”), um smartphone Windows Mobile 6.1 (sim, eu sei, “Bleargh!”), baratinho em uma venda de garagem na empresa. Não, não estou abandonando o Nexus S nem o Xperia Play. Comprei por um simples motivo: pra brincar de colocar o Android (2.2) nele.

Mas meu Cruise veio bloqueado para a operadora Vivo, então o primeiro passo é desbloquear o bichinho. Clientes da Vivo podem fazer isso online, basta entrar na área “Meu Vivo” do site e informar o IMEI, fabricante e modelo do aparelho para obter um código de desbloqueio. Mas eu não sou cliente Vivo, então não posso usar essa ferramenta. E como estou com preguiça de ir até uma loja da operadora, vou apelar para a “força bruta”.

Continue reading

Consertando um HD externo Seagate Expansion de 1.5 TB

Na noite de ontem fui assistir a um filme usando meu Media Center (atualmente uma Boxee Box) e o HD externo começou a “estalar”, do nada. Quem lida com informática sabe o que esse som significa: o disco está morrendo, ou já morreu, e o que estava nele já era. No meu caso, todos os filmes e séries da casa. Gelei.

Pluguei o HD no Mac, e ele montou normalmente. Copiei um arquivo dele pro Mac, outro do Mac pra ele, tudo parecia bem… até ele começar a estalar de novo e sumir do desktop sozinho, sem eu mandar ejetar. Tirei da tomada, coloquei de volta e “pléc, pléc, pléc, pléc…”.

Já estava conformado em perder todos os meus arquivos, mas não ia desistir sem lutar. E procurando na internet, achei duas soluções que trouxeram o HD de volta.

Continue reading

Ressuscitando um GameGear

É engraçado como as coisas funcionam. Há tempos eu tinha em uma gaveta um GameGear que “não funcionava”. Quando ligado não havia aparentemente nada na tela e um apito irritante no alto-falante, sem falar no fato de que ele se desligava sozinho após alguns minutos. Lembro que quando ele começou a dar esse problema (há alguns anos) eu cheguei a procurar ajuda na internet, mas não encontrei nada. Desisti e engavetei o GameGear como caso perdido.

Semana passada, em uma viagem a Curitiba, caiu na minha mão mais um Master System. Mas ao contrário do modelo que já tenho, com 74 jogos na memória, esse é o “modelo original”, o primeiro comercializado pela TecToy no Brasil, bem antes dela começar a lançar uma versão nova do console a cada 2 meses. O console veio “pelado”, sem controles (esses eu tenho), cartuchos (idem) ou a fonte de alimentação. A fonte é o problema.

O Master System tem um conector de força “bisonho” na traseira, um DIN-5, e eu precisava saber a pinagem daquilo pra não correr chance de torrar o console (se é que ele ainda funciona, não faço idéia porque peguei ele “no estado”). Pesquisando na internet, me lembrei do povo do projeto SMS Power, que visa catalogar jogos e hardware dos consoles de 8-Bits da Sega (SG-1000, SC-3000, Master System e GameGear). Eles tem fóruns de discussão,  informações sobre desenvolvimento, mods de hardware e afins. Infelizmente, não achei a pinagem da fonte lá, mas achei outra coisa muito interessante.

Na seção principal do fórum havia uma thread “fixa” com o título “Game Gear turns itself off/screen is unreadable/sound is gone/screen flashes“. Opa, tem alguém descrevendo exatamente o meu GameGear! Lendo a thread descubro que o problema é causado por capacitores defeituosos na placa-mãe, que “vazam” com o passar do tempo, e que há um tutorial ensinando como substituí-los.

Meu GameGear tem uma placa-mãe modelo VA1. Peguei no tutorial a lista de capacitores correspondente (são 12 na placa mãe) e dei um pulo em Sta. Ifigênia, onde encontrei todos facilmente a cerca de 20 centavos cada. Fora os valores de capacitância, minha única preocupação foi encontrar os menores capacitores possíveis, por causa do espaço limitado dentro do gabinete. Mas no final das contas ele não é tão crítico assim, e consegui soldar todos eles sem muito malabarismo. Pode ser difícil encontrar capacitores com a voltagem exata mencionada na lista (ex: 6.3V), mas componentes de voltagem maior (10v, cheguei a ter de usar um pra 35v) servem.


Placa-mãe de um GameGear “VA1” com os capacitores marcados. Crédito: smspower.org

A foto acima mostra a posição dos capacitores. A troca se resume a “descolar” eles da placa-mãe usando uma pinça, dessoldar os terminais e soldar o componente novo no lugar. Quando vaza o eletrólito deixa um resíduo sobre os terminais, que pode dificultar a soldagem dos novos componentes (a solda parece “não pegar”). Limpar o resíduo com um cotonete embebido em álcool deve resolver o problema, e usar solda com fluxo ajuda ainda mais. Não custa lembrar que capacitores tem polaridade, marcada com os símbolos + e – no corpo dos componentes e na placa mãe. Tenha cuidado para não soldar nenhum componente “invertido”.

Depois de mais ou menos uma hora dobrando perninhas, arrancando capacitores velhos e queimando os dedos no ferro de solda, meu GameGear voltou à vida e está tão bom quanto novo. Foi um reparo rápido, barato e que vale a pena.