Retroprogramação

De Garoa Hacker Clube
Revisão de 15h37min de 22 de setembro de 2013 por Juca (discussão | contribs) (→‎Descrição)
Ir para navegação Ir para pesquisar
Retroprogramação.png

Descrição

Neste evento semanal estudamos programação por meio da engenharia reversa de jogos clássicos ou pela análise do código fonte, nos casos em que os autores tenham publicado tais códigos. Temos feito também muitas atividades relacionadas a emulação envolvendo dispositivos não necessariamente diretamente ligados a games. Veja: Emuladores

Temas dos eventos

16/Setembro/2013

ChipTunes !

Hoje vamos brincar de tocar música com hardware das antigas!

Programação em assembly para controlar um chip de som de arcade (AY-3-8910)

16/Setembro/2013
Das 19h00 às 21h
Na sede do Garoa Hacker Clube

09/Setembro/2013

Nas atividades anteriores nós estudamos o funcionamento do MAME (framework de emulação) e mapeamos parcialmente os circuitos do arcade GunSmoke e do Relógio Protocolador HENRY Prot 1. O arcade já era emulado no MAME e nos serviu de base para os estudos. Já no caso do relógio protocolador, foi nossa primeira tentativa de escrever um emulador do zero, o que deu alguns bons resultados. Conseguimos emular parcialmente o dispositivo a ponto de ver a imagem da tela LCD exibindo as mensagens do procedimento de boot do dispositivo.

Hoje, retomando o tema de games, vamos usar os conhecimentos de emulação adquiridos até então para tentar emular um dos brinquedos clássicos dos anos 80, o Pense Bem.

Já existe um simulador de Pense Bem, feito por mim e pelo Leandro Pereira, do Laboratório Hacker de Campinas. http://labs.hardinfo.org/pb/ A idéia é partir para a emulação de verdade. E o passo inicial para isso é levantar o circuito da eletrônica do brinquedo.

PenseBem
09/Setembro/2013
Das 19h30 às 21h
Na sede do Garoa Hacker Clube

happy hacking, Felipe "Juca" Sanches

02/Setembro/2013

Na atividade de hoje iremos dar continuidade ao estudo de emulação com MAME/MESS.

O objeto de estudo dessa vez é um relógio protocolador da empresa HENRY (Pinhais/Paraná).

http://www.dataponto.com.br/protocoladores-prot1.html

https://garoa.net.br/wiki/HENRY

Hoje, 2 de Setembro de 2013
das 19h às 21h30
no Garoa Hacker Clube

27/Agosto/2013 (Em Brasília-DF)

Hoje, a partir das 15h e sem hora determinada pra acabar, farei a atividade "Retroprogamação" sobre emuladores, MAME, e engenharia reversa de eletrônica digital nas mesas do Café Sebinho.

Darei uma visão geral do projeto MAME e levarei um múltímetro e uma placa-mãe de um arcade que já é emulado pelo MAME (CAPCOM GunSmoke 1985). Analisaremos o código da emulação desta placa e o esquemático eletrônico que já foi parcialmente levantado no KiCAD. Também podemos ler/escrever código em assembly de Z80 para o processador principal e para o secundário (controlador de audio). Essas rotinas podem ser testados no próprio MAME.

endereço: Café Sebinho 406 norte, atrás da própria livraria Sebinho. Brasilia-DF

26/Agosto/2013

Bate-papo sobre o painel da classificadora de cheques Banctec: Painel_Banctec_91690

19/Agosto/2013

Hoje vamos continuar trabalhando no levantamento do esquemático do arcade GunSmoke.

Das 19h30 às 22h no Garoa

12/Agosto/2013

Hoje de noite tem o evento Retroprogramação e estaremos trabalhando no estudo do circuito de eletrônica digital do arcade GunSmoke.

Estou levantando o esquemático do circuito e documentando no KiCAD. Quem quiser ajudar no processo será bem-vindo.

Das 19h às 21h30 no Garoa

05/Agosto/2013

O tema de hoje será MAME (desenvolvimento!) :-D

Das 19h às 21h30 no Garoa

29/Julho/2013

O tema de hoje será MSX / Z80 :-D

O Garoa tem 4 computadores MSX. Essa semana um deles foi ligado. No evento de hoje pretendemos ligá-lo novamente e fazer alguns experimentos de programação, por meio do estudo dos esquemáticos da placa mãe e experimentação direto no interpretador BASIC.

Das 19h às 21h30 no Garoa, hoje 29/Julho/2013

29/Abril/2013

Continuaremos hoje explorando o game Twinsen's Odyssey, Little Big Adventure 1 e a reimplementação livre da engine do Game, chamada Twin-E. No encontro da semana passada estudamos o algoritmo de cálculo de arco-tangente escrito em C com base no disassembly do game original. Ele usava uma lookup table para otimizar o código. O resultado é um código grande e difícil de ler. Nós substituimos esse código por uma rotina simples usando a função atan2 do math.h O resultado é um código bem mais limpo, jogando fora a otimização que hoje em dia já não é mais necessária, dado o poder computacional atual em comparação com o dos 486/Pentium1 de 1994...

Hoje tentaremos farer algo similar com a última rotina que ainda resta na máquina virtual livre que lida com lookup table para cálculo de cossenos.

Hoje, 29 de abril de 2013, no Garoa Hacker Clube, com início às 20h e previsão de término para as 22h.

22/Abril/2013

Durante as últimas semanas estivemos estudando o bytecode e uma implementação livre da máquina virtual do game Another World.

Daremos uma pausa no estudo desse game, mas podemos retomar o assunto mais pra frente.

O tema de 22/Abril/2013 será o game Twinsen's Odyssey, Little Big Adventure 1 e a reimplementação livre da engine do Game, chamada Twin-E.

Hoje, 22 de abril.

A partir de 20h00min no Garoa Hacker Clube

Previsão de término às 22h.

08/Abril/2013

Hoje, das 20h às 22h no Garoa, mais um RETROPROGRAMAÇÃO. Continuaremos nossa análise do game Another World.

https://www.garoa.net.br/wiki/Retroprograma%C3%A7%C3%A3o

A meta do encontro de hoje é regenerar os arquivos de bancos de recursos do game removendo a compressão de dados de modo a torná-los mais facilmente hackeáveis. A idéia é descomprimir tudo em memória e depois escrever os dados de volta pros arquivos de bancos de recursos sem usar compressão e então atualizar o índice de bancos com os novos ponteiros de início e fim de cada recurso e com os metadados atualizados para informar que tá tudo sem compressão.

Se der certo, seremos capazes de executar corretamente o game regenerado na máquina virtual.

Quando falo dados, na verdade é qualquer coisa: polígonos, sons, músicas e até mesmo bytecode executável.

Então os passos para as aulas seguintes envolverão escrever um assembler para o bytecode do game e depois usar nosso disassembler (que discutimos no primeiro encontro) para ler códigos, alterá-los, re-montá-los, carregá-los em bancos de recursos e como resultado termos uma versão hackeada do game.

Tudo isso com o propósito de aprender por meio da engenharia reversa de games clássicos, que é a linha principal do evento semanal RETROPROGRAMAÇÃO:

Todas segundas-feiras, das 20h às 22h no Garoa Hacker Clube.

happy hacking, Felipe "Juca" Sanches

Temas para eventos futuros

anotações