Mudanças entre as edições de "Retroprogramação"
(Criou página com 'center Neste evento semanal estudamos programação por meio da engenharia reversa de jogos clássicos ou pela análise do código fonte, em ...') |
|||
(61 revisões intermediárias por 5 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
[[Image:Retroprogramação.png|center]] |
[[Image:Retroprogramação.png|center]] |
||
+ | == 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, em casos em que os autores tenha publicado tais códigos. |
||
+ | 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 == |
== Temas dos eventos == |
||
+ | === 23/Maio/2024 === |
||
− | Atualmente estamos estudando o bytecode e uma implementação livre da máquina virtual do game [https://github.com/felipesanches/Another-World-Bytecode-Interpreter Another World]. |
||
+ | |||
+ | '''Atividade:''' Desvendando as entranhas do '''Pense Bem''' da TecToy. |
||
+ | '''Local:''' [https://garoa.net.br/wiki/Sede Sede] do Garoa Hacker Clube, sala multi-uso. |
||
+ | '''Horário:''' A partir das 19h30 |
||
+ | '''Organizado por:''' [https://garoa.net.br/wiki/Usu%C3%A1rio:Juca Juca] |
||
+ | |||
+ | '''Descrição:''' |
||
+ | Vamos levantar o esquemático da PCB do Pense Bem |
||
+ | e ler os códigos em assembly executador pelo micro-controlador |
||
+ | Zilog Z8 (que é diferente do famoso Z80!) usado no brinquedo. |
||
+ | |||
+ | O objetivo é avançar nos esforços de implementação de um |
||
+ | emulador do Pense Bem no [https://www.mamedev.org/ Projeto MAME]. |
||
+ | |||
+ | '''Como participar:''' |
||
+ | - Todos eventos no Garoa Hacker Clube são abertos ao público geral. |
||
+ | - Basta aparecer. |
||
+ | - Não precisa de inscrição. |
||
+ | |||
+ | === 02/Agosto/2018 === |
||
+ | |||
+ | Na próxima atividade, na 5a feira, vamos revisar o código de configuração da paleta de cores e em seguida vamos discutir sobre como se fazem desenhos na tela. |
||
+ | |||
+ | === 27/Julho/2018 === |
||
+ | |||
+ | '''O que:''' Desenvolvimento de jogos para SEGA Genesis (Mega Drive) |
||
+ | '''Quando:''' Sexta-feira, 27 de Julho de 2018, a partir das 19h30 |
||
+ | '''Onde:''' [[Sede]] do Garoa Hacker Clube |
||
+ | '''Associado responsável:''' [[User:Juca|Juca]] |
||
+ | '''Descrição:''' Hoje demos continuidade aos estudos sobre técnicas de programação para o Mega Drive. |
||
+ | |||
+ | - Foram apresentadas as instruções gerais de setup do toolchain |
||
+ | do GCC para compilar código para a CPU Motorola 68K, e como gerar arquivos válidos |
||
+ | de ROMs e rodá-las em um emulador. |
||
+ | - Limos alguns trechos do código de um port do jogo Wumpus Hunt escrito pelo Affonso Amendola |
||
+ | originalmente para VGA/MSDOS e em seguida adaptado para o Mega Drive. |
||
+ | - Começamos a implementação de carga de paleta de cores para melhorar os gráficos do jogo |
||
+ | reutilizando os gráficos da versão de MSDOS. |
||
+ | |||
+ | '''Nota:''' - Todos eventos no Garoa Hacker Clube são abertos ao público geral. |
||
+ | - Basta aparecer. |
||
+ | - Não precisa de inscrição. |
||
+ | - [[Blog:An%C3%BAncios/Be_Excellent_to_Each_Other|Be excellent to each other!]] |
||
+ | |||
+ | === 19/Julho/2018 === |
||
+ | |||
+ | '''O que:''' Desenvolvimento de jogos para SEGA Genesis (Mega Drive) |
||
+ | '''Quando:''' 19 de Julho de 2018, a partir das 19h30 |
||
+ | '''Onde:''' [[Sede]] do Garoa Hacker Clube |
||
+ | '''Associado responsável:''' [[User:Juca|Juca]] |
||
+ | |||
+ | '''Nota:''' - Todos eventos no Garoa Hacker Clube são abertos ao público geral. |
||
+ | - Basta aparecer. |
||
+ | - Não precisa de inscrição. |
||
+ | - [[Blog:An%C3%BAncios/Be_Excellent_to_Each_Other|Be excellent to each other!]] |
||
+ | |||
+ | Alguém aqui se interessa em aprender sobre desenvolvimento de jogos para o Mega Drive (também conhecido como SEGA Genesis)? |
||
+ | |||
+ | Eu tenho um pouco de conhecimento sobre o assunto, mas nunca cheguei a programar um jogo para esse console. Conheço um pouco a arquitetura de hardware do console e tenho interesse em me aprofundar. Nessa atividade vou contar tudo o que eu sei e, daí em diante, seguirmos juntos descobrindo mais coisas sobre esse console da SEGA. |
||
+ | |||
+ | Tem alguns assuntos importantes que podemos conversar sobre esse tema: |
||
+ | |||
+ | * a arquitetura de hardware do console. Entender o que cada um dos processadores (Motorola 68000 e Z80) fazem. E o que os chips auxiliares fazem. Por exemplo o chip de som da Yamaha. |
||
+ | * a burocracia do código mínimo de inicialização do sistema |
||
+ | * o setup de um ambiente de desenvolvimento (basicamente um GCC recompilado para gerar código de motorola 68000). |
||
+ | * rotinas de áudio (temporizar envios de comandos para o chip de som, ler e interpretar estruturas de dados da "partitura" da música ou efeitos sonoroes, etc...) |
||
+ | * comunicação entre os 2 processadores |
||
+ | * rotinas gráficas (estrutura da memória de vídeo e formas otimizadas de gerar tanto imagens estáticas quanto animações) |
||
+ | * leitura de inputs dos joystics |
||
+ | * configuração de um emulador para testar as ROMs geradas pelos nossos códigos. (Durante a atividade vou descrever as instruções de compilação do [https://github.com/mamedev/mame MAME] pra trabalhar com Mega Drive) |
||
+ | |||
+ | ...e provavelmente conversaremos também sobre vários outros assuntos correlatos. |
||
+ | |||
+ | Happy Hacking, |
||
+ | |||
+ | Felipe "Juca" Sanches |
||
+ | |||
+ | '''P.S.:''' Curiosamente já fizemos uma atividade similar em 10/Fevereiro/2014. Vejam os detalhes abaixo nesta página :-) |
||
+ | |||
+ | === 25/Junho/2016 === |
||
+ | '''tema:''' Estudo dos esquemáticos da CPU discreta do computador [https://github.com/felipesanches/PatinhoFeio Patinho Feio] |
||
+ | '''horário:''' Ao longo do Sábado todo. |
||
+ | |||
+ | === 23/Março/2014 === |
||
+ | [[Arquivo:logo-matehackers.jpg|200px|thumb|right]] |
||
+ | Edição Especial das Oficinas de Retroprogramação |
||
+ | |||
+ | '''local:''' MateHackers - hackerspace de Porto Alegre - RS |
||
+ | '''horário:''' A partir das 15h do domingo |
||
+ | '''website:''' http://www.matehackers.org/ |
||
+ | |||
+ | === 17/Março/2014 === |
||
+ | |||
+ | Trabalhamos na engenharia reversa do [[Painel_Banctec_91690]]. |
||
+ | |||
+ | === 03/Março/2014 === |
||
+ | |||
+ | Achei a ferramenta ideal para as oficinas de Retroprogramação! |
||
+ | |||
+ | * [[TL866|Gravador Universal MiniPro TL866]] |
||
+ | |||
+ | === 10/Fevereiro/2014 === |
||
+ | |||
+ | '''Programando o SEGA Genesis/MegaDrive''' |
||
+ | |||
+ | Hoje, na Oficina de Retroprogramação iremos estudar detalhes técnicos de desenvolvimento de software para o video-game SEGA Genesis/MegaDrive. |
||
+ | |||
+ | Usaremos o MESS para testar a emulação do MegaDrive e experimentaremos o projeto Echo (https://github.com/sikthehedgehog/Echo), que é uma engine livre de som para o Zilog Z80 e o Yamaha YM2612. |
||
+ | |||
+ | Para montagem dos programas para Motorola 68000 utilizaremos um build do GNU Assembler (GAS) com suporte a m86k (http://darkdust.net/writings/megadrive/crosscompiler). |
||
+ | |||
+ | Para montagem dos programas para Z80 usaremos um software livre chamado z80asm (http://www.nongnu.org/z80asm/). |
||
+ | |||
+ | horário: a partir das 19h |
||
+ | local: [[Garoa_Hacker_Clube:Sede#Como_chegar|Sede do Garoa Hacker Clube]] |
||
+ | |||
+ | === 27/Janeiro/2014 === |
||
+ | |||
+ | '''Desenvolvimento de emuladores com MAME/MESS''' |
||
+ | |||
+ | Continuamos o trabalho de implementaçãa de um emulador para o PVE-500, focados agora em emular o chip TLCS-Z80 (que é usado como CPU e SUBCPU do PVE-500). Trata-se de um chip contendo uma CPU Z80 e alguns periféricos como watchdog, CTC, SIO e PIO. |
||
+ | |||
+ | === 20/Janeiro/2014 === |
||
+ | |||
+ | '''Desenvolvimento de emuladores com MAME/MESS''' |
||
+ | |||
+ | Trabalhamos na implementação inicial de um emulador para o PVE-500 utilizando a infraestrutura do MESS. |
||
+ | |||
+ | === 13/Janeiro/2014 === |
||
+ | |||
+ | '''Desenvolvimento de emuladores com MAME/MESS''' |
||
+ | |||
+ | Estudamos o mapeamento de memória das CPU e da SUBCPU do equipamento PVE-500, com base nos esquemáticos disponíveis no manual de serviço. |
||
+ | |||
+ | === 06/Janeiro/2014 === |
||
+ | |||
+ | '''Desenvolvimento de emuladores com MAME/MESS''' |
||
+ | |||
+ | Hoje vou apresentar lá no Garoa pra quem quiser aprender, algumas técnicas de desenvolvimento de emuladores utlizando o framework dos projetos MAME e MESS. |
||
+ | |||
+ | Estou emulando a placa-mãe de uma impressora 3D e também algumas tranqueiras eletrônicas que achei no lixo. |
||
+ | |||
+ | É só chegar. |
||
+ | Hoje. Das 19h às 22h |
||
+ | [[Garoa_Hacker_Clube:Sede#Como_chegar|Na sede do Garoa.]] |
||
+ | |||
+ | === 28/Outubro/2013 === |
||
+ | |||
+ | '''Dump e gravação de EPROMs''' |
||
+ | |||
+ | Na semana passada conseguimos compreender o funcionamento básico do gravador/leitor de EEPROMs [[MTE-271]]. Nessa atividade vamos escrever um código de Arduino para fazer o dump de uma EPROM com esse equipamento e talvez tentar escrever uma EPROM também :-) Se não der tempo, o procedimento de escrita fica para as semanas seguintes. |
||
+ | |||
+ | 28/Outubro/2013 |
||
+ | A partir das 19h30 |
||
+ | Na sede do Garoa Hacker Clube |
||
+ | |||
+ | === 21/Outubro/2013 === |
||
+ | |||
+ | '''Dump e gravação de EPROMs''' |
||
+ | |||
+ | Daremos continuidade ao estudo de técnicas de dump de EEPROMs, com o intuito de rodar programas homebrew na placa do arcade GunSmoke ou do [[PVE-500]]. |
||
+ | |||
+ | 21/Outubro/2013 |
||
+ | A partir das 19h30 |
||
+ | Na sede do Garoa Hacker Clube |
||
+ | |||
+ | === 14/Outubro/2013 === |
||
+ | |||
+ | Tivemos uma apresentação do projeto Pinball Fantasies Remake, sobre os hacks e engenharia reversa do game Pinball Fantasies de MSDOS. |
||
+ | |||
+ | === 30/Setembro/2013 === |
||
+ | |||
+ | '''Dump e gravação de EPROMs''' |
||
+ | |||
+ | O tema dessa segunda feira é o dump e a gravação de EPROMs. Vamos tentar montar um dumper de EPROM usando o Arduino e fazer o dump de algumas memórias de dispositivos como o [[PVE-500]]. Vamos também tentar entender o funcionamento do circuito do gravador de EPROMs MTE-271 fabricado pela MACSYM e escrever software para interfacear com este equipamento. |
||
+ | |||
+ | Mais detalhes em [[Retroprogramação/EPROM]] |
||
+ | |||
+ | 30/Setembro/2013 |
||
+ | A partir das 19h30 |
||
+ | Na sede do Garoa Hacker Clube |
||
+ | |||
+ | === 23/Setembro/2013 === |
||
+ | |||
+ | Hoje o tema é livre! Vamos decidir na hora o que será feito na atividade. |
||
+ | |||
+ | 23/Setembro/2013 |
||
+ | A partir das 19h30 |
||
+ | Na sede do Garoa Hacker Clube |
||
+ | |||
+ | |||
+ | === 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 [http://en.wikipedia.org/wiki/Gun.Smoke GunSmoke]. |
||
+ | |||
+ | Estou levantando o esquemático do circuito e [https://github.com/GaroaHC/GunSmoke 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 [https://github.com/felipesanches/Another-World-Bytecode-Interpreter Another World]. |
||
+ | |||
+ | Daremos uma pausa no estudo desse game, mas podemos retomar o assunto mais pra frente. |
||
+ | |||
+ | [[Image:Lba1title.gif|thumb|center|300px|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 [http://twin-e.googlecode.com/ 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 == |
== Temas para eventos futuros == |
||
+ | * Construção de um setup para [[Retroprogramação/JAMMA|placas JAMMA]] |
||
* Pinball Fantasies |
* Pinball Fantasies |
||
− | * [https://github.com/jmechner/Prince-of-Persia-Apple-II Prince of Persia (Apple II)] |
+ | * [https://github.com/jmechner/Prince-of-Persia-Apple-II Prince of Persia (Apple II)] [https://github.com/adamgreen/Prince-of-Persia-Apple-II/blob/build/Notes/pop-build.creole#quick-start How to Build!] |
* Lemmings |
* Lemmings |
||
* [http://sourceforge.net/projects/jedioutcast/ Jedi Outcast] |
* [http://sourceforge.net/projects/jedioutcast/ Jedi Outcast] |
||
* [http://sourceforge.net/u/masadow/jediacademy/ci/8456bd67c3747ee3b5d5b3d31827d47180ee9ef4/tree/ Jedi Academy] |
* [http://sourceforge.net/u/masadow/jediacademy/ci/8456bd67c3747ee3b5d5b3d31827d47180ee9ef4/tree/ Jedi Academy] |
||
+ | * Little Big Adventure e LBA2 (Twinsen's Odyssey) / [http://twin-e.googlecode.com/ TwinEngine] |
||
+ | * Cartucho TeleBradesco para MegaDrive |
||
+ | * [https://github.com/mtuomi/SecondReality Demo Second Reality] |
||
+ | |||
+ | == anotações == |
||
+ | |||
+ | * [[Retroprogramação/dicas]] |
||
+ | * [http://www.floodgap.com/] site pessoal com várias referências sobre hardware antigo |
||
+ | |||
+ | [[Categoria:Eventos]] |
Edição atual tal como às 16h17min de 20 de maio de 2024
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
23/Maio/2024
Atividade: Desvendando as entranhas do Pense Bem da TecToy. Local: Sede do Garoa Hacker Clube, sala multi-uso. Horário: A partir das 19h30 Organizado por: Juca Descrição: Vamos levantar o esquemático da PCB do Pense Bem e ler os códigos em assembly executador pelo micro-controlador Zilog Z8 (que é diferente do famoso Z80!) usado no brinquedo. O objetivo é avançar nos esforços de implementação de um emulador do Pense Bem no Projeto MAME. Como participar: - Todos eventos no Garoa Hacker Clube são abertos ao público geral. - Basta aparecer. - Não precisa de inscrição.
02/Agosto/2018
Na próxima atividade, na 5a feira, vamos revisar o código de configuração da paleta de cores e em seguida vamos discutir sobre como se fazem desenhos na tela.
27/Julho/2018
O que: Desenvolvimento de jogos para SEGA Genesis (Mega Drive) Quando: Sexta-feira, 27 de Julho de 2018, a partir das 19h30 Onde: Sede do Garoa Hacker Clube Associado responsável: Juca Descrição: Hoje demos continuidade aos estudos sobre técnicas de programação para o Mega Drive. - Foram apresentadas as instruções gerais de setup do toolchain do GCC para compilar código para a CPU Motorola 68K, e como gerar arquivos válidos de ROMs e rodá-las em um emulador. - Limos alguns trechos do código de um port do jogo Wumpus Hunt escrito pelo Affonso Amendola originalmente para VGA/MSDOS e em seguida adaptado para o Mega Drive. - Começamos a implementação de carga de paleta de cores para melhorar os gráficos do jogo reutilizando os gráficos da versão de MSDOS. Nota: - Todos eventos no Garoa Hacker Clube são abertos ao público geral. - Basta aparecer. - Não precisa de inscrição. - Be excellent to each other!
19/Julho/2018
O que: Desenvolvimento de jogos para SEGA Genesis (Mega Drive) Quando: 19 de Julho de 2018, a partir das 19h30 Onde: Sede do Garoa Hacker Clube Associado responsável: Juca Nota: - Todos eventos no Garoa Hacker Clube são abertos ao público geral. - Basta aparecer. - Não precisa de inscrição. - Be excellent to each other!
Alguém aqui se interessa em aprender sobre desenvolvimento de jogos para o Mega Drive (também conhecido como SEGA Genesis)?
Eu tenho um pouco de conhecimento sobre o assunto, mas nunca cheguei a programar um jogo para esse console. Conheço um pouco a arquitetura de hardware do console e tenho interesse em me aprofundar. Nessa atividade vou contar tudo o que eu sei e, daí em diante, seguirmos juntos descobrindo mais coisas sobre esse console da SEGA.
Tem alguns assuntos importantes que podemos conversar sobre esse tema:
- a arquitetura de hardware do console. Entender o que cada um dos processadores (Motorola 68000 e Z80) fazem. E o que os chips auxiliares fazem. Por exemplo o chip de som da Yamaha.
- a burocracia do código mínimo de inicialização do sistema
- o setup de um ambiente de desenvolvimento (basicamente um GCC recompilado para gerar código de motorola 68000).
- rotinas de áudio (temporizar envios de comandos para o chip de som, ler e interpretar estruturas de dados da "partitura" da música ou efeitos sonoroes, etc...)
- comunicação entre os 2 processadores
- rotinas gráficas (estrutura da memória de vídeo e formas otimizadas de gerar tanto imagens estáticas quanto animações)
- leitura de inputs dos joystics
- configuração de um emulador para testar as ROMs geradas pelos nossos códigos. (Durante a atividade vou descrever as instruções de compilação do MAME pra trabalhar com Mega Drive)
...e provavelmente conversaremos também sobre vários outros assuntos correlatos.
Happy Hacking,
Felipe "Juca" Sanches
P.S.: Curiosamente já fizemos uma atividade similar em 10/Fevereiro/2014. Vejam os detalhes abaixo nesta página :-)
25/Junho/2016
tema: Estudo dos esquemáticos da CPU discreta do computador Patinho Feio horário: Ao longo do Sábado todo.
23/Março/2014
Edição Especial das Oficinas de Retroprogramação local: MateHackers - hackerspace de Porto Alegre - RS horário: A partir das 15h do domingo website: http://www.matehackers.org/
17/Março/2014
Trabalhamos na engenharia reversa do Painel_Banctec_91690.
03/Março/2014
Achei a ferramenta ideal para as oficinas de Retroprogramação!
10/Fevereiro/2014
Programando o SEGA Genesis/MegaDrive
Hoje, na Oficina de Retroprogramação iremos estudar detalhes técnicos de desenvolvimento de software para o video-game SEGA Genesis/MegaDrive.
Usaremos o MESS para testar a emulação do MegaDrive e experimentaremos o projeto Echo (https://github.com/sikthehedgehog/Echo), que é uma engine livre de som para o Zilog Z80 e o Yamaha YM2612.
Para montagem dos programas para Motorola 68000 utilizaremos um build do GNU Assembler (GAS) com suporte a m86k (http://darkdust.net/writings/megadrive/crosscompiler).
Para montagem dos programas para Z80 usaremos um software livre chamado z80asm (http://www.nongnu.org/z80asm/).
horário: a partir das 19h local: Sede do Garoa Hacker Clube
27/Janeiro/2014
Desenvolvimento de emuladores com MAME/MESS
Continuamos o trabalho de implementaçãa de um emulador para o PVE-500, focados agora em emular o chip TLCS-Z80 (que é usado como CPU e SUBCPU do PVE-500). Trata-se de um chip contendo uma CPU Z80 e alguns periféricos como watchdog, CTC, SIO e PIO.
20/Janeiro/2014
Desenvolvimento de emuladores com MAME/MESS
Trabalhamos na implementação inicial de um emulador para o PVE-500 utilizando a infraestrutura do MESS.
13/Janeiro/2014
Desenvolvimento de emuladores com MAME/MESS
Estudamos o mapeamento de memória das CPU e da SUBCPU do equipamento PVE-500, com base nos esquemáticos disponíveis no manual de serviço.
06/Janeiro/2014
Desenvolvimento de emuladores com MAME/MESS
Hoje vou apresentar lá no Garoa pra quem quiser aprender, algumas técnicas de desenvolvimento de emuladores utlizando o framework dos projetos MAME e MESS.
Estou emulando a placa-mãe de uma impressora 3D e também algumas tranqueiras eletrônicas que achei no lixo.
É só chegar. Hoje. Das 19h às 22h Na sede do Garoa.
28/Outubro/2013
Dump e gravação de EPROMs
Na semana passada conseguimos compreender o funcionamento básico do gravador/leitor de EEPROMs MTE-271. Nessa atividade vamos escrever um código de Arduino para fazer o dump de uma EPROM com esse equipamento e talvez tentar escrever uma EPROM também :-) Se não der tempo, o procedimento de escrita fica para as semanas seguintes.
28/Outubro/2013 A partir das 19h30 Na sede do Garoa Hacker Clube
21/Outubro/2013
Dump e gravação de EPROMs
Daremos continuidade ao estudo de técnicas de dump de EEPROMs, com o intuito de rodar programas homebrew na placa do arcade GunSmoke ou do PVE-500.
21/Outubro/2013 A partir das 19h30 Na sede do Garoa Hacker Clube
14/Outubro/2013
Tivemos uma apresentação do projeto Pinball Fantasies Remake, sobre os hacks e engenharia reversa do game Pinball Fantasies de MSDOS.
30/Setembro/2013
Dump e gravação de EPROMs
O tema dessa segunda feira é o dump e a gravação de EPROMs. Vamos tentar montar um dumper de EPROM usando o Arduino e fazer o dump de algumas memórias de dispositivos como o PVE-500. Vamos também tentar entender o funcionamento do circuito do gravador de EPROMs MTE-271 fabricado pela MACSYM e escrever software para interfacear com este equipamento.
Mais detalhes em Retroprogramação/EPROM
30/Setembro/2013 A partir das 19h30 Na sede do Garoa Hacker Clube
23/Setembro/2013
Hoje o tema é livre! Vamos decidir na hora o que será feito na atividade.
23/Setembro/2013 A partir das 19h30 Na sede do Garoa Hacker Clube
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.
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
- Construção de um setup para placas JAMMA
- Pinball Fantasies
- Prince of Persia (Apple II) How to Build!
- Lemmings
- Jedi Outcast
- Jedi Academy
- Little Big Adventure e LBA2 (Twinsen's Odyssey) / TwinEngine
- Cartucho TeleBradesco para MegaDrive
- Demo Second Reality
anotações
- Retroprogramação/dicas
- [1] site pessoal com várias referências sobre hardware antigo