Jogando Super Nintendo no Android com controle original

Jogando SNES com controle original via bluetooth Logo que comprei meu HTC Desire HD (sistema operacional Android) instalei um emulador de Super Nintendo (SNES), este foi um dos poucos videogames que tive, e era viciado (quando tinha 10 / 11 anos) em Super Mario World, assim que instalei o Mario me veio aquela nostalgia! Mas jogar com o controle touch screen é péssimo, não tem experiência tátil e o seu dedo fica encima do jogo.
Então pensei, é claro que alguém já ligou o controle original no celular, e estava certo,  encontrei este vídeo: “http://www.youtube.com/watch?v=_FZTz2KO9vU“. Mas tem um detalhe muito importante este projeto, é para NES e não o SNES (mais novo), ou seja, sabia que era possível fazer e tinha os materiais para isto, então só esperei sobrar um tempo para fazer (o único componente que não tinha era o controle, mas consegui um paralelo por R$ 8,00 no Mercado Livre).


vimeo.com/bsoares/snes-on-android-with-controller-and-bluesmirf

Como funciona:
O controle do SNES esta ligado a Arduino, é bem fácil obter as teclas pressionadas, mas existe uma biblioteca para tornar esta tarefa ainda mais simples (NESpad/SNESpad). Cada tecla pressionada liga um bit dentro do número que representa o estado das teclas do controle, e este estado (número) é enviado via Bluetooth (uso o BlueSMiRF) para o Android.
No Android, quem recebe este número é o Amarino, mas ele apenas recebe o número, ainda é necessário um App (que foi modificado a partir deste exemplo “SoftKeyboard“) para converter este número em teclas pressionadas (uso Bitwise) como um teclado do Android.
Por fim é só configurar o emulador para entender as teclas pressionadas como os comandos dentro do mesmo (pular, andar, girar, etc…)

Desta forma o controle pode ser usado como o teclado do seu Android, e ainda ser configurado como o controle de outros emuladores.

Sobre o módulo bluetooth BlueSMiRF:
Depois de configurado ele será o seu “cabo USB virtual” pois da mesma forma que usamos o comando Serial.print(“…”) para enviar dados via porta serial, o mesmo dado será enviado via bluetooth.
A App Amarino utiliza 57.600 de baudrate, e os módulos BlueSMiRF normalmente vem com 9.600.
Para configurar o blueSMiRF utilizei alguns tutoriais:
- http://todbot.com/blog/2006/02/23/howto-mac-os-x-bluetooth-serial-port/
- http://www.sparkfun.com/tutorials/67

Sobre o Soft Keyboard (App para Android):
Modifiquei o exemplo de Keyboard App disponível no Android Developers para obter os dados via Amarino e agir como teclado. Me baseei neste projeto criado para NES, porém criei outro código para a Arduino e alterei 95% do código para o Android.

O código fonte do projeto para Androi, Arduino e as versões das bibliotecas que foram utilizadas, podem ser baixadas do meu Github:
https://github.com/BSoares/SNES-on-Android-with-original-controller

Conteúdo Relacionado:
Código fonte
Arduino UNO
BlueSMiRF
Amarino
Android Sample Soft Keyboard
NESpad/SNESpad
Vídeo no Youtube

Enjoy :-)


Posts relacionados:

  1. Operações binárias
  2. Classe C++ para controlar Display de 7 seguimentos
  3. Ping Pong com Matriz de Leds 8×8
  4. Funções do C++ úteis para Arduino
  5. PianoDuino (Arduino + Processing + SoundCipher)

  1. Olá Bruno! Que bacana sua invenção cara!! Parabéns!! Já pensou em comercializar num kit, pois acredito que em breve o Android será uma boa plataforma de jogos!

    Sua invenção já é uma notícia internacional!!! Parabéns novamente!!!

    Irei postar no meu blog!

    Abraço!

    • Bruno Soares disse:

      :-) vlw, parece que esta se espalhando bem rápido!
      Só não posso dizer é que uma invenção minha, pois quando comecei a fazer já tinha um projeto para o NES, que é bem parecido.

      Vlw!

  2. FabioTNT disse:

    Pô Brunão, mandou super bem no projeto hein! Parabéns cara e sucesso na vida. ;)

  3. Muito bom cara parabens pelo desenvolvimento ae ficou muito bom mesmo !

  4. Opaa cara que isso não fiz mais que obrigação, mais uma vez parabéns ae

  5. Raphael disse:

    Parabéns, Cara! Vi seu post no hackaday e realmente é muito interessante. Também sou hobbysta e gosto de ficar fuçando nas coisas. Também não gosto de ficar fazendo propaganda, não acho que esse seja o ponto… Mas devo te dizer que uma das minhas maiores motivações pra um projeto meu foi justamente o Super Mario World! Hahaha, sério! Se tiver curiosidade, o link do blog desse projeto é http://PSPEWC.blogspot.com. É basicamente um par cliente-servidor pra usar o PSP como joystick sem fio em Windows e agora Unix também.
    Também tenho um android e depois de ver seu projeto comecei a pensar em um jeito de usar o PSP como joystick pra ele. Já cheguei a instalar o SDK há algum tempo, mas não me aprofundei muito. Dei uma olhada na documentação e acho que dá pra simular eventos de teclado no android sim. Quem sabe daqui algum tempo…
    Parabéns de novo!

  6. Otavio Vasques disse:

    Muito bom o projeto cara, tá de parabéns. Agora só precisa atualizar o blog com mais frequencia.

  7. My spouse and I stumbled over here different page and thought I might as well check things out. I like what I see so now i’m following you. Look forward to checking out your web page for a second time.

  1. [...] Playing Super Nintendo via emulator on Android with the original controller. Integration made ​​with Arduino, Amarino and BlueSMiRF (Bluetooth module). For more informations: blog.bsoares.com.br/arduino/snes-android-amarino-original… [...]

  2. [...] Spo&#116&#116&#101d &#105n &#116h&#101 &#77&#65KE &#70l&#105&#99k&#114 Pool: Bruno So&#97re&#115 w&#97nted to p&#108&#97y &#97 c&#108&#97&#115&#115ic Super Nintendo &#103&#97me on hi&#115 ce&#108&#108 phone, but it’&#115 touch &#115creen w&#97&#115 unre&#115pon&#115ive &#97nd ju&#115t w&#97&#115n’t cuttin&#103 it &#97&#115 &#97 contro&#108&#108er. In&#115te&#97d of ju&#115t &#103ivin&#103 up, he devi&#115ed &#97 Rube Go&#108dber&#103-e&#115que &#115y&#115tem to connect an actual &#83N&#69&#83 cont&#114olle&#114 to h&#105s phone. [...]

  3. [...] Spotted in the MAKE Flickr Pool: Bruno Soares wanted to play a classic Super Nintendo game on his cell phone, but it’s touch screen was unresponsive and just wasn’t cutting it as a controller. Instead of just giving up, he devised a Rube Goldberg-esque system to connect an actual SNES controller to his phone. [...]

  4. [...] Spotted in the MAKE Flickr Pool: Bruno Soares wanted to play a classic Super Nintendo game on his cell phone, but it’s touch screen was unresponsive and just wasn’t cutting it as a controller. Instead of just giving up, he devised a Rube Goldberg-esque system to connect an actual SNES controller to his phone. [...]

  5. [...] knowledge doing such mods before, and if you’re meddlesome in giving it a shot, conduct over to Bruno Soares’ blog where he lists out all a stairs he [...]

  6. [...] Spotted in a MAKE Flickr Pool: Bruno Soares wanted to play a classical Super Nintendo diversion on his dungeon phone, though it’s hold shade was nonchalant and only wasn’t slicing it as a controller. Instead of only giving up, he devised a Rube Goldberg-esque complement to connect an tangible SNES controller to his phone. [...]

  7. [...] Worth Reading? It’s not quite a Nintendo Wii 2 with a touchscreen controller, but Bruno Soares hack to control retro Super Nintendo games on his Android smartphone with a classic SNES controller [...]

  8. [...] not quite a Nintendo Wii 2 with a touchscreen controller, but Bruno Soares hack to control retro Super Nintendo games on his Android smartphone with a classic SNES controller [...]

  9. [...] not quite a Nintendo Wii 2 with a touchscreen controller, but Bruno Soares hack to control retro Super Nintendo games on his Android smartphone with a classic SNES controller [...]

  10. [...] n&#959t quite a Nintendo Wii 2 w&#1110th a touchscreen controller, but Bruno Soares hack t&#959 control retro Super Nintendo games &#959n h&#1110&#1109 Android smartphone w&#1110th a [...]

  11. [...] knowledge doing such mods before, and if you’re meddlesome in giving it a shot, conduct over to Bruno Soares’ blog where he lists out all a stairs he [...]

  12. [...] not quite a Nintendo Wii 2 with a touchscreen controller, but Bruno Soares hack to control retro Super Nintendo games on his Android smartphone with a classic SNES controller [...]

  13. [...] not quite a Nintendo Wii 2 with a touchscreen controller, but Bruno Soares hack to control retro Super Nintendo games on his Android smartphone with a classic SNES controller [...]

  14. [...] not quite a Nintendo Wii 2 with a touchscreen controller, but Bruno Soares hack to control retro Super Nintendo games on his Android smartphone with a classic SNES controller [...]

  15. [...] то, мы думаем, проблем возникнуть не должно. Бруно на своем блоге описал все шаги и привел некоторые фото сборки [...]

  16. [...] Spotted in the MAKE Flickr Pool: Bruno Soares wanted to play a classic Super Nintendo game on his cell phone, but it’s touch screen was unresponsive and just wasn’t cutting it as a controller. Instead of just giving up, he devised a Rube Goldberg-esque system to connect an actual SNES controller to his phone. [...]

  17. [...] tienes conocimientos de portugués puedes seguir las instrucciones del usuario para crearte tu propia versión. Y si de paso consigues conectarlo todo a un televisor [...]

  18. [...] Spotted in the MAKE Flickr Pool: Bruno Soares wanted to play a classic Super Nintendo game on his cell phone, but it’s touch screen was unresponsive and just wasn’t cutting it as a controller. Instead of just giving up, he devised a Rube Goldberg-esque system to connect an actual SNES controller to his phone. [...]

  19. [...] retro ROMs [Video] It’s not quite a Nintendo Wii 2 with a touchscreen controller, but Bruno Soares hack to control retro Super Nintendo games on his Android smartphone with a classic SNES controller [...]

  20. [...] not quite a Nintendo Wii 2 with a touchscreen controller, but Bruno Soares hack to control retro Super Nintendo games on his Android smartphone with a classic SNES controller [...]

  21. [...] not quite a Nintendo Wii 2 with a touchscreen controller, but Bruno Soares hack to control retro Super Nintendo games on his Android smartphone with a classic SNES controller [...]

  22. [...] Jogando Super Nintendo no Android com controle original [...]

  23. [...] wanted to be able to use a real SNES controller with the emulator on his HTC Android phone, packing in an Arduino, 6 AA batteries, and a breadboard and mission accomplished! Hardly as [...]

  24. [...] wanted to be able to use a real SNES controller with the emulator on his HTC Android phone, packing in an Arduino, 6 AA batteries, and a breadboard and mission accomplished! Hardly as [...]

  25. [...] wanted to be able to use a real SNES controller with the emulator on his HTC Android phone, packing in an Arduino, 6 AA batteries, and a breadboard and mission accomplished! Hardly as [...]

  26. [...] Super Nintendo no Android com controle origin&#97&#108&#32via Arduino e … [...]

  27. [...] οδηγίες για το πώς να το κάνετε μπείτε στο blog του δημιουργού, αρκεί να μιλάτε Πορτογαλικά!» [...]

  28. internet games…

    [...]Super Nintendo no Android com controle original via Arduino e BlueSMiRF | Bruno Soares[...]…

Leave a Reply