Este documento descreve o desenvolvimento de consoles de videogame utilizando hardware livre. O autor planeja criar diferentes consoles com hardware como Raspberry Pi, Arduino e placas com microcontroladores ATmega, usando tecnologias como Linux, Android e TVs de tubo. Ele discute opções para carregar jogos através de bootloaders e armazenamento em cartão SD.
2. Quem sou eu?
● Gustavo Castro
○ Tecnólogo em sistemas para internet
● Programador
○ Atua Sistemas de Informação
■ PHP
■ JS
■ Postgresql
■ ….
● Hobbies
○ Arduino
○ Games retrô
6. I’m too young to
die
● Raspberry Pi
● Linux/Android
● Joystick USB
Hurt me plenty
● Gamebuino
● TFT
● Touchscreen
● Joystick serial
Nightmare
● ATmega”X”
● RCA (Tv de tubo)
● Botões de
pressão
12. Hardware - Controle
● “Joystick”
○ Botões de pressão em paralelo (I/O analógica)
■ Verifica o valor da corrente
Fonte:
http://rexpirando.blogspot.com.br/2011/07/controlando-multiplos-botoes-
com.html
15. Hardware/Software - Bootloader
Plano A
● BootDrive
MASTER
SLAVE
SD/ETHERNET
jogo_do_jiraya.hex
jogo_do_jiraya.hex
ENFIA NA RAM
ESSA M#!
jogo_do_jiraya.hex -> 30 KB
SRAM ATmega328P -> 2 KB
16. Hardware/Software - Bootloader
● TFTP Bootloader
○ Atualização via FTP
■ Não carregava na RAM
● Roda o comando de gravação
de forma remota
● Necessita do avrdude instalado
no servidor
■ Necessidade de um servidor
■ Crashou um arduino
jogo_do_jiraya.hex
jogo_do_jiraya.hex
Plano B
17. Hardware/Software - Bootloader
Plano C - parte 1
● avr_boot
○ bootloader
■ =~ 4 KB ROM
■ =~ 28 KB Firmware
○ “Autogravação” da firmware
BOOT
FIRMWARE.BIN
18. Hardware/Software - Bootloader
Plano C - parte 2
● avr_boot
BOOT
FIRMWARE.BIN
jogo_do_jiraya.BIN
jogo_do_jiraya.BIN -> 30 KB
ROM ATmega328P -> 28 KB
20. Software
● Dashboard
○ Firmware (principal)
○ Listar os jogos no SD;
○ Listar os jogos remotos;
■ Realizar o download dos jogos;
○ Executar os jogos no SD;
24. Jogos
Como funcionam os jogos?
while(!sair ) {
verificar entrada
usuário
realizar AI
verificar colisões
plotar imagem
tocar som
Loop Principal
25. Jogos - Plotar Imagens
● TVout
○ Plano cartesiano
○ set_pixel(x, y, color)
○ bitmap(x, y, bmp, i, width, height)
○ println(“Aqui vai uma string!”)
○ set_cursor(x, y)
● Percorrer um array de binários e plotar os pontos
○ Ex:
26.
27. Jogos
ElvetureTetris Toorum’s Quest II
Arduino Tetris: https://storage.googleapis.com/google-code-archive-
downloads/v2/code.google.com/arduino-tvout/arduinotetris.zip
Elveture: https://github.com/yyyc514/elventure
Toorums’ Quest II: https://github.com/NosDE/toorumquest2
28. Referências
TvOut: https://code.google.com/archive/p/arduino-tvout/
avr_boot: https://github.com/zevero/avr_boot
boot drive: https://github.com/osbock/Baldwisdom/tree/master/BootDrive
TFTP bootloader: https://github.com/mharizanov/TFTPBootloader_0_2
Ligando botões em série: http://rexpirando.blogspot.com/2011/07/controlando-
multiplos-botoes-com.html
Download de arquivos da web para SD usando o Ethernet Shield:
https://startingelectronics.org/software/arduino/save-web-file-to-SD-card/