Ano 1 · Ano 2 · Ano 3 · Ano 4 · Ano 5 · Ano 6 · Ano 7 · Ano 8 · Ano 9
Tópicos › Quinto ano › Another World, Pense Bem e outros projetos de engenharia reversa
Felipe "Juca" Sanches retomou o AnotherWorld_VMTools e a VM do Another World no MAME e começou a examinar as versões de Mega Drive e Symbian. No Pense Bem, tentou sem sucesso extrair o firmware do Zilog Z8 e publicou o simulador com um novo desenho em SVG. Houve também propostas de disassembly e a busca de ferramentas para o TLCS900, processador do teclado Technics KN5000.
Quinto ano: novembro de 2021 a outubro de 2022
Felipe consertou as ferramentas, atualizou a VM no MAME, começou os save states, começou a extrair assets da ROM de Mega Drive, desempacotou uma demo do port para Symbian e reorganizou o toolchain com um diretório por release. Houve ainda discussões sobre os limites da VM, a ideia de um port para Vectrex, Heart of the Alien, um pedido de port para MiSTer e uma live no Python Lab do Garoa.
Felipe "Juca" Sanches indicou a Aylons Hazzud uma issue que pergunta sobre um port do AnotherWorld_FPGA para o MiSTer (placa DE-10 Nano) e uma postagem sua no fórum do MiSTer, ainda aguardando aprovação. Aylons pediu tempo para pensar.
Felipe "Juca" Sanches consertou o AnotherWorld_VMTools, que voltou a gerar o disassembly do bytecode da versão MS-DOS. Também atualizou a VM do Another World no seu branch do MAME, que ficou funcional exceto por um bug no scroll vertical, e começou a implementar save states (faltava salvar o estado do tracker de música). Compartilhou um SVG da code wheel do jogo, montado em 2017. Indicou a Toy issues em aberto, entre elas a comparação das versões Amiga e MS-DOS, e abriu novas issues no AnotherWorld_VMTools.
Felipe "Juca" Sanches refatorou o codificador/decodificador de polígonos e passou a marcar com labels JUNK as rotinas inalcançáveis do bytecode. Começou a extrair assets da ROM de Mega Drive, cujo bytecode difere do da versão MS-DOS, e desempacotou com binwalk o instalador .sis de uma demo do port para Symbian, com polígonos ligeiramente diferentes. Por fim, reorganizou o toolchain com um diretório por release, contendo labels, código vestigial, rotinas de assets e checksums.
Felipe "Juca" Sanches descreveu a VM do Another World: 256 palavras de 16 bits de RAM, 64 threads cooperativas e assets em barramentos somente leitura. Discutiu um superset com instruções para manipular os dados dos barramentos de assets, a ideia de um Tetris com símbolos da code wheel usando o assembler do AWVMTools e a viabilidade de portar a VM para o Vectrex; Erin Pinheiro sugeriu um microcontrolador no cartucho. Ismael Luceno sugeriu uma segunda VM para gerar assets, ligada por SFRs.
Shideravan sugeriu usar a VM do Another World para portar a continuação Heart of the Alien, lançada só para Sega CD nos EUA. Felipe "Juca" Sanches disse que, se fizesse um remake, preferiria recontar a história de outro jeito. Ao olhar o código da engine livre hota, com a qual havia jogado, constatou que é um disassembly do original traduzido para C.
Felipe "Juca" Sanches compartilhou a gravação de sua live no Python Lab do Garoa sobre a máquina virtual do jogo Another World, com participação de João Carlos. L. sugeriu gerar código Python a partir do bytecode, já que o jogo não tem código automodificável, e Felipe sugeriu implementar as instruções de break com yield, aproveitando a multitarefa cooperativa; L. lembrou também de funções async.
Felipe mostrou o Pense Bem 2017 e contou que queimou o Zilog Z8 ao tentar extrair seu firmware. Ele pensa em substituí-lo por um ATmega. O simulador em JavaScript ganhou um desenho em SVG do ilustrador Alekhine Z e uma correção no cálculo das respostas.
Diante da sugestão de montar um Raspberry Pi num Pense Bem quebrado, Felipe "Juca" Sanches disse que já fez algo parecido com ATmega e que o Pense Bem 2017 é justamente um "arduino" dentro da carcaça do Pense Bem; mostrou um vídeo de primeiros experimentos de programação nesse modelo.
Felipe "Juca" Sanches contou que tem 29 Pense Bems e planeja uma instalação artística com todos em rede. Explicou que o modelo dos anos 1980 usa um Zilog Z8 (não Z80) e que, ao tentar extrair seu firmware por um suposto modo de teste de fábrica, não conseguiu o dump e queimou o chip. Disse que pensa em trocar o Z8 por um ATmega numa pequena placa adaptadora e mostrou em vídeo um Pense Bem funcionando como relógio, ainda sem a lógica de despertador.
Felipe "Juca" Sanches combinou uma troca com o ilustrador Alekhine Z: um desenho em SVG do Pense Bem para o simulador em JavaScript, em troca de um timer de xadrez programado por ele (chess-timer). O ilustrador mandou prévias e depois recomeçou o desenho sob outro ponto de vista. Felipe e L. discutiram mostrar os livros de atividades ao lado do simulador e detectar automaticamente as regiões das perguntas.
Felipe "Juca" Sanches publicou o simulador do Pense Bem com o novo desenho em SVG, mantendo os ids de segmentos do simulador original, e corrigiu o algoritmo de cálculo das respostas. Ele próprio apontou problemas de áudio no navegador do celular e serrilhado na renderização do SVG; pitanga relatou que no seu navegador o áudio ficou razoável. Quando L. ofereceu acesso de escrita ao repositório, Felipe propôs migrá-lo para a organização ArqueologiaDigital. Em resposta a Toy, indicou a página labs.hardinfo.org/pb/ com detalhes sobre o simulador.
Felipe disse que pretendia retomar o port do binutils para o TLCS900 e procurou o compilador da Toshiba, que Leonardo Roman apontou no archive.org. Ismael Luceno buscou ajuda para portar o gcc-ia32 (x86 de 16 bits) para o GCC 12.
Felipe "Juca" Sanches comprou um Switch OLED e perguntou se há desenvolvimento homebrew na plataforma. Shideravan descreveu a cena: CFW instalados por meio de exploits, como o fusee-gelee, ports de jogos e emuladores, e diferenças entre revisões de hardware. Felipe mencionou que pretende retomar o port do binutils para o TLCS900, processador do teclado Technics KN5000.
Ismael Luceno procurou ajuda para portar o gcc-ia32, suporte a x86 de 16 bits no GCC, para o GCC 12, começando pelo modo standalone. Perguntado por Pedro de Medeiros sobre C++17, disse que em teoria seria possível, mas que o runtime é bem mais complexo.
Felipe "Juca" Sanches procurava o compilador proprietário da Toshiba para TLCS900, e Leonardo Roman apontou a cópia no archive.org. Felipe disse que não conseguiu rodá-lo pelo Wine e não lembrava como tinha feito isso antes. Também indicou o tópico do fórum sobre desenvolvimento homebrew para o teclado Technics KN5000.
Felipe propôs fazer o disassembly do utilitário Tecnoponta Park para MS-DOS e disse que gostaria de emular o firmware de um cartão SD com display. Ismael Luceno disse que voltaria ao projeto hexitch.
Felipe "Juca" Sanches propôs fazer o disassembly do utilitário Tecnoponta Park, para MS-DOS, para descobrir se ele realmente estacionava o cabeçote do disco rígido, e indicou o binário no Datassette. Ismael Luceno citou chamadas de interrupção relacionadas a parking (inclusive em drives ESDI), observou que o programa é um EXE grande, aparentemente escrito em assembly, e disse que tentaria analisá-lo com o r2ghidra; Augusto Almeida sugeriu IDA Pro ou Ghidra.
Felipe "Juca" Sanches compartilhou um antigo cartão SD da ADATA com display que mostra o espaço usado, e o grupo discutiu como o firmware leria o sistema FAT; ele disse que gostaria de emular esse firmware e escrever um substituto que mostre o nome do disco. A conversa passou para pendrives e cartões falsificados e perdas de dados por falta de backup.
Ismael Luceno disse que voltaria ao projeto hexitch, e Felipe "Juca" Sanches propôs uma live; Ismael acabou se dedicando a fazer o LibreOffice compilar sem hacks.