Ano 1 · Ano 2 · Ano 3 · Ano 4 · Ano 5 · Ano 6 · Ano 7 · Ano 8 · Ano 9
Tópicos › Sexto ano › Engenharia reversa do Another World
Felipe "Juca" Sanches continuou no AnotherWorld_VMTools a engenharia reversa do bytecode da máquina virtual do Another World. Ele documentou rotinas, comparou versões do jogo e reativou conteúdo removido. Felipe também comentou outras implementações da VM, e o grupo discutiu portes para outras plataformas. O trabalho foi apresentado em palestra na TOSCONF 2023.
Sexto ano: novembro de 2022 a outubro de 2023
Felipe publicou o ExecTrace no PyPI e documentou padrões do bytecode. Ao comparar versões, encontrou a proteção contra cópia desativada nas versões de Symbian e Mega Drive europeu. Também reativou por patch um NPC desativado na versão de MS-DOS, reincluiu o besouro removido, que apareceu em posição errada e travou o jogo, e criou uma pseudo-instrução para a troca de banco. Além disso, foi comentado um easter egg da versão para Mac.
Felipe "Juca" Sanches publicou o ExecTrace no PyPI, passou a usá-lo no AnotherWorld_VMTools e documentou rotinas e recursos gráficos da fase inicial do Another World. Ele descreveu padrões do bytecode: o uso de variáveis da VM para não repetir animações, o cache do cenário de fundo e o double-buffering sobre polígonos. Ao comparar versões, viu que os lançamentos para Symbian e Mega Drive europeu desativam a proteção contra cópia com um RET. Também reativou por patch um NPC que existe na versão de Amiga mas está desativado na de MS-DOS.
Felipe retomou o disassembly do bytecode do Another World. Ao revisar a issue em que havia documentado o armazenamento das strings, notou a coincidência com a data de abertura, e comentou que o projeto já dura 10 anos e que ele faz o disassembly em paralelo de 5 binários quase idênticos. Ele também criou uma pseudo-instrução bank_switch para deixar mais legível a troca de fase da VM.
A partir dos artigos de Fabien Sanglard, Felipe discordou da explicação, dada no artigo sobre a versão de Atari ST, para a remoção do besouro. Para ele, os polígonos e o código continuam dormentes na versão MS-DOS, e a remoção foi uma decisão artística, não uma questão de espaço em disco. Ele remontou o bytecode e conseguiu reincluir o besouro, que apareceu em posição errada e travou o jogo. Também notou arquivos duplicados entre os dois disquetes da versão de Atari ST.
L. compartilhou um artigo sobre um easter egg na versão para Mac do Another World. Felipe "Juca" Sanches notou que a assinatura da mensagem usa o domínio gnu.ai.mit.edu.
Felipe compartilhou a implementação da VM em FPGA feita por sylefeb. Ele também testou uma implementação em Rust, para a qual enviou uma correção, e disse querer escrever no seu fork do MAME uma versão da VM como unidade de controle microprogramável.
Felipe "Juca" Sanches compartilhou a implementação da VM do Another World em FPGA feita por sylefeb, que ele havia sugerido cerca de dois anos antes e cujo código ainda não foi publicado. Ele também indicou duas issues do AnotherWorld_VMTools para quem quiser contribuir.
Felipe testou uma implementação incompleta da VM do Another World escrita em Rust e enviou um pull request corrigindo um overflow. Também disse querer escrever no seu fork do MAME uma segunda implementação da VM como unidade de controle microprogramável, para depois fabricar a PCB no projeto CPU do Zero do Garoa.
Felipe avaliou rodar o jogo no Neo Geo Pocket Color e concluiu que a falta de framebuffer inviabilizaria a VM. Também discutiu o MSX: RicBit e Pablo Vasques Bravo-Villalba sugeriram o V9990.
Felipe fez um mockup do Another World renderizado no MAME em 160x152, a resolução do Neo Geo Pocket Color, e avaliou que o jogo caberia num cartucho de 2 MB se usasse a compressão das versões de Amiga e MS-DOS. Depois concluiu que o chip de vídeo do console não tem framebuffer, só tiles, o que inviabilizaria a VM, que exige quatro buffers de vídeo. RicBit lembrou que fez uma engine 3D baseada em tiles no MSX, Pedro citou o Elite do MSX, vetorial e baseado em tiles, e L. mencionou um ray casting com tiles para MSX. Pablo calculou quantos tiles seriam necessários para a abordagem.
Felipe publicou sua proposta de palestra sobre a VM do Another World para a TOSCONF, organizada pelo LHC, o hackerspace de Campinas. A conversa passou para a viabilidade do jogo no MSX: Felipe se preocupa com o processamento e com os quatro buffers de vídeo, e Pablo e RicBit sugeriram o V9990. Felipe também mapeou os pré-requisitos de execução de cada banco de código do bytecode da versão MS-DOS.
Felipe propôs e apresentou na TOSCONF, organizada pelo LHC de Campinas, a palestra "Engenharia Reversa do jogo Another World de Eric Chahi". Mais tarde perguntou quem teria interesse em participar de um projeto sobre o jogo.
Felipe publicou sua proposta de palestra sobre a VM do Another World para a TOSCONF, organizada pelo LHC, o hackerspace de Campinas. A conversa passou para a viabilidade do jogo no MSX: Felipe se preocupa com o processamento e com os quatro buffers de vídeo, e Pablo e RicBit sugeriram o V9990. Felipe também mapeou os pré-requisitos de execução de cada banco de código do bytecode da versão MS-DOS.
Felipe compartilhou o vídeo da transmissão ao vivo de sua palestra "Engenharia Reversa do jogo Another World de Eric Chahi" na TOSCONF 2023.
Felipe "Juca" Sanches perguntou quem teria interesse em participar de um projeto envolvendo o jogo Another World.