Tópicos › Another World
32 conversas · anos 2 a 9 do grupo

O Another World aparece no grupo como um projeto de longa duração de Felipe "Juca" Sanches, que no ano 6 (2022-2023) disse que o trabalho já durava 10 anos. Nos anos 2 a 4 do grupo (2018 a 2021), ele andou devagar. No ano 2, Felipe contou a Ismael Luceno que o port estava parado e que pretendia retomar o desenho da PCB de uma placa JAMMA para o jogo, talvez prototipando primeiro só o estágio de saída gráfica. No ano 3, Felipe contou que fez uma chamada de vídeo com Fabien Sanglard sobre a VM do jogo e que Sanglard o incentivou a retomar a placa. L. compartilhou os artigos de Sanglard sobre a renderização de polígonos nas versões original, PC DOS, SNES e Jaguar. Felipe divulgou os episódios 10 ("JAMMA Arcade") e 11 da série de vídeos "Another World VM" e disse que o projeto em FPGA avançava devagar. Ele e L. compararam as placas OrangeCrab e ULX3S. No ano 4, Felipe pediu a Toy que examinasse um bug no AnotherWorld_VMTools e descreveu o AnotherWorld_JAMMA, uma CPU que executaria o bytecode da VM. O projeto tinha duas abordagens: uma CPU microprogramada desenhada em KiCad e uma versão com três Z80, com um esboço de driver de MAME.
No ano 5 (2021-2022), Felipe consertou o AnotherWorld_VMTools, que voltou a gerar o disassembly do bytecode da versão MS-DOS. No seu branch do MAME, atualizou a VM do jogo, que passou a funcionar exceto por um bug no scroll vertical, e começou a implementar save states. Ele refatorou o codificador/decodificador de polígonos e passou a marcar com labels JUNK as rotinas inalcançáveis. Também começou a extrair assets da ROM de Mega Drive, cujo bytecode difere do da versão MS-DOS, e desempacotou com binwalk uma demo do port para Symbian. Por fim, reorganizou o toolchain com um diretório por release. Felipe ainda descreveu os limites da VM (256 palavras de RAM e 64 threads cooperativas) e discutiu com L., RicBit, Erin Pinheiro e Ismael Luceno a ideia de homebrews e de um port para Vectrex. Felipe indicou a Aylons Hazzud uma issue que pergunta sobre um port do AnotherWorld_FPGA para o MiSTer. Felipe também apresentou uma live sobre a VM no Python Lab do Garoa.
O ano 6 (2022-2023) concentrou o maior número de conversas sobre o tema. Felipe publicou o ExecTrace no PyPI e passou a usá-lo no VMTools. Documentou padrões do bytecode e criou a pseudo-instrução bank_switch. Ao comparar versões, viu que as de Symbian e de Mega Drive europeu desativam a proteção contra cópia com um RET. Por patch, reativou um NPC que existe na versão de Amiga mas está desativado na de MS-DOS. Ele discordou da explicação de Sanglard para a remoção do besouro: para Felipe, o código continua dormente e a remoção foi uma decisão artística. Ao reincluir o besouro, o inseto apareceu em posição errada e travou o jogo. Felipe divulgou a implementação da VM em FPGA feita por sylefeb e enviou uma correção de overflow para uma implementação em Rust. Disse também querer escrever no seu fork do MAME uma versão da VM como unidade de controle microprogramável. Ele avaliou portes para o Neo Geo Pocket Color, concluindo que a falta de framebuffer no console inviabilizaria a VM, e para o MSX, para o qual RicBit e Pablo Vasques Bravo-Villalba sugeriram o V9990. Também apresentou na TOSCONF 2023, do LHC de Campinas, a palestra "Engenharia Reversa do jogo Another World de Eric Chahi".
No ano 7 (2023-2024), Felipe mostrou um protótipo do port da VM para o teclado Technics KN5000. O port foi escrito em assembly TLCS-900, porque não havia compilador C para essa CPU, e publicado no repositório kn5000_homebrew. Ainda entrava em loop infinito na troca de threads. No ano 9 (2025-2026), com o Claude Code, ele completou o port partindo da sua implementação HLE no MAME. A demo passou a rodar inteira sem glitches no KN5000 emulado, e o código foi publicado com um site do projeto. Ainda faltavam o som, o arquivo de instalação em LZSS e o teste no hardware real. No mesmo ano, Felipe criou com IA um backend TLCS-900 para o LLVM, com o qual o jogo Mines deu os primeiros sinais de vida no teclado. Ele também publicou um mapa do jogo e, a partir do bytecode, reativou o comportamento do besouro da primeira fase, montou polígonos não utilizados de forma especulativa e extraiu um trecho de música removido por um JMP.
Ano a ano: Ano 2 · Ano 3 · Ano 4 · Ano 5 · Ano 6 · Ano 7 · Ano 9
Felipe "Juca" Sanches disse que o port do Another World estava parado e que planejava retomar o desenho da PCB da placa JAMMA, talvez prototipando primeiro só o estágio de saída gráfica.
Felipe informou que o port do Another World estava parado e que planejava retomar o desenho da PCB da placa JAMMA.
Perguntado por Ismael Luceno sobre o port do Another World, Felipe disse que está parado. Ele contou que planejava retomar o desenho da PCB da placa JAMMA e que talvez prototipasse primeiro apenas o estágio de saída gráfica.
Felipe contou que fez uma chamada de vídeo com Fabien Sanglard, que o incentivou a retomar o projeto de placa, e L. compartilhou os artigos de Sanglard sobre os polígonos do jogo. Felipe divulgou os episódios 10 e 11 da série "Another World VM", disse que o projeto em FPGA avançava devagar e comparou com L. as placas OrangeCrab e ULX3S.
Felipe "Juca" Sanches contou que Fabien Sanglard o incentivou a retomar o projeto de placa, e L. compartilhou os artigos de Sanglard sobre a renderização de polígonos do jogo.
Felipe "Juca" Sanches contou que fez uma chamada de vídeo com Fabien Sanglard sobre a VM do jogo Another World. Perguntado por Ismael Luceno sobre a parte de vídeo do projeto de placa para o jogo, disse que Fabien o incentivou a retomá-lo, que ainda não tinha avanços e que tinha uma nova placa FPGA para experimentar com saída VGA.
L. compartilhou os artigos de Fabien Sanglard sobre a renderização de polígonos do Another World nas versões original, PC DOS, SNES e Jaguar.
Foram compartilhados os episódios 10 ("JAMMA Arcade") e 11 da série, e Felipe "Juca" Sanches disse que o projeto em FPGA avançava devagar.
Felipe "Juca" Sanches compartilhou os episódios 10 ("JAMMA Arcade") e 11 da série de vídeos "Another World VM". Quando Hugo (Agaelebê) perguntou pelo projeto em FPGA, respondeu que estava avançando devagar.
L. e Felipe "Juca" Sanches compararam as placas OrangeCrab e ULX3S, e L. comprou as duas.
L. e Felipe "Juca" Sanches compararam as placas FPGA OrangeCrab e ULX3S, e Felipe destacou a saída HDMI da ULX3S. L. comprou as duas.
Felipe pediu a Toy que examinasse um bug (IndexError) no AnotherWorld_VMTools. Também descreveu o AnotherWorld_JAMMA, uma CPU para executar o bytecode da VM, com duas abordagens: microprogramada em KiCad ou com três Z80 e um esboço de driver de MAME.
Felipe pediu a Toy que examinasse um bug nas ferramentas de disassembly do jogo e descreveu o projeto AnotherWorld_JAMMA, uma CPU que executaria o bytecode da VM do jogo.
Felipe "Juca" Sanches pediu a Toy que examinasse uma issue (IndexError) nas ferramentas de disassembly do jogo Another World, reportada por um usuário. Toy aceitou verificar.
Partindo do 68000 e das máquinas Lisp, discutiu-se arquiteturas de computador de linguagem de alto nível e se é viável fazer análise sintática em hardware. RicBit contou ter feito um analisador sintático em FPGA no chip de som do Dona Barata e citou as máquinas de Mealy. Juca descreveu o projeto AnotherWorld_JAMMA, uma CPU que executaria o bytecode da VM do Another World, com duas abordagens. A primeira usa esquemáticos em KiCad de uma CPU microprogramada; a segunda, três Z80 e um esboço de driver de MAME.
Felipe consertou o AnotherWorld_VMTools, atualizou a VM no seu branch do MAME e começou os save states. Começou a extrair assets da versão de Mega Drive, desempacotou uma demo para Symbian e reorganizou o toolchain por release. Houve ainda discussões sobre os limites da VM, um port para Vectrex e um pedido de port para o MiSTer, além de uma live no Python Lab do Garoa.
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 publicou o ExecTrace no PyPI e documentou padrões do bytecode. Achou a proteção contra cópia desativada nas versões de Symbian e Mega Drive europeu, reativou um NPC e reincluiu o besouro removido, que apareceu em posição errada e travou o jogo. Também avaliou portes para Neo Geo Pocket Color e MSX, divulgou a implementação da VM em FPGA de sylefeb, enviou uma correção para uma implementação em Rust e apresentou uma palestra sobre o jogo na TOSCONF 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.
Felipe mostrou um protótipo do port da VM para o Technics KN5000, escrito em assembly TLCS-900 e publicado no repositório kn5000_homebrew. O port ainda entrava em loop infinito na troca de threads.
Felipe rodou um programa próprio que desenha na VGA a partir da ROM da placa de extensão. Depois mostrou um protótipo do port da VM do Another World em assembly TLCS-900 (repositório kn5000_homebrew), que ainda entrava em loop infinito na troca de threads. Leonardo Roman perguntou sobre portar jogos de Neo Geo Pocket para o teclado.
Felipe "Juca" Sanches rodou um pequeno programa, montado à mão, que desenha na VGA do KN5000 a partir da ROM da placa de extensão. Sobre a imagem resultante, disse depois que a paleta de cores estava errada. Ele indicou um assembler para a CPU e, no dia seguinte, contou que já o usava com sucesso. Planejou uma PCB com RAM e EPROM ou flash para carregar programas, regravar a flash do sistema e rodar um monitor serial. Também procurou identificar o conector da placa HD-AE5000: L. indicou um guia de identificação, Pablo Vasques Bravo-Villalba sugeriu um VHDCI e Felipe concluiu que parecia ser um Molex EBBI 50D. Hugo perguntou se Felipe tinha um emulador USB de disquete para o KN5000, e Ramiro Polla brincou que Felipe já tinha comprado todos os KN5000 do Brasil.
Felipe mostrou um protótipo do port da VM do Another World para o KN5000, escrito em assembly TLCS-900 por falta de compilador C para essa CPU e ainda dependente de hacks no firmware. Corrigiu a rasterização de polígonos, a paleta e a renderização de strings, publicou o código no repositório kn5000_homebrew (demos/anotherworld) e encontrou um bug na exibição do disassembly TLCS-900 no debugger do MAME. Em 18/abril relatou um loop infinito na troca de threads da VM e planejou comparar a sequência de task switching com a implementação HLE no MAME para achar o ponto em que o port diverge.
Felipe "Juca" Sanches enviou um vídeo gravado em três partes, e Pablo Vasques Bravo-Villalba comentou o conteúdo em áudio. Clemar Folly Jr sugeriu divulgar os avanços do projeto Technics em blogs, no Hackaday ou no YouTube. A partir de um vídeo compartilhado por L., Clemar comentou que os chips custom impedem reproduzir o Mac SE/30 sem placa doadora. Pablo sugeriu reimplementá-los em FPGA ou CPLD. Leonardo Roman perguntou sobre portar jogos de Neo Geo Pocket para o KN5000. Felipe avaliou que traduzir assembly x86 seria mais fácil do que emular o vídeo do Neo Geo Pocket, apesar de este usar a mesma CPU do KN5000.
Com o Claude Code, Felipe completou o port da VM para o KN5000, que roda a demo inteira no MAME. Faltavam o som, o arquivo de instalação em LZSS e o teste no hardware real. Ele também criou um backend TLCS-900 para o LLVM, usado no Mines, e publicou análises de conteúdo abandonado no bytecode, com o besouro reativado, polígonos não usados e um trecho de música removido.
A VM de Another World foi portada para TLCS-900 e roda a demo inteira no KN5000 emulado. Um backend TLCS-900 para o LLVM, criado com IA, permitiu os primeiros sinais de vida do Mines no teclado. Felipe também analisou conteúdo abandonado no bytecode do Another World.
Depois de um vídeo com a abertura de Another World no MSX, L. sugeriu compilar a VM do jogo para Z80. Felipe mostrou que já havia portado grande parte da VM para assembly de TLCS-900, a fim de rodá-la no teclado KN5000, e disse que o emulador do KN5000 no MAME já pode ajudar a concluir o port.
Com o Claude Code, Felipe completou o port da VM de Another World para o KN5000, partindo da sua implementação HLE do MAME e de uma tentativa incompleta em assembly TLCS-900. A demo passou a rodar inteira sem glitches no MAME, e o código foi publicado com um site do projeto. O código compila como ROM principal ou como extensão da HDAE5000, mas só a primeira opção foi testada. Dois dias depois, Felipe disse que faltavam apenas o som e o arquivo de instalação em LZSS, além do teste no hardware real.
Felipe criou com IA, em um único dia de vibe-coding, um backend TLCS-900 para o LLVM, o que dá um compilador C para o KN5000. Ele planejou usar o port do jogo Mines como primeiro homebrew rodando junto do firmware original na HDAE5000. Os passos seguintes seriam um loader pelo disco rígido com FAT e o upload de binários pela porta serial. Macabeus recomendou revisar o código gerado e testar cenários reais em vez de mocks.
Felipe adicionou um ícone num menu do KN5000 para lançar o jogo Mines e organizou o trabalho com o issue tracker Beads. Os primeiros sinais de vida do Mines no KN5000, ainda com paleta errada e flickering mas já reagindo aos botões, vieram de código C compilado com o port do LLVM.
Respondendo a uma imagem de Felipe "Juca" Sanches, Pedro de Medeiros perguntou se o assembler de TLCS-900 poderia servir para desenvolver para o Neo Geo Pocket. Felipe disse que está funcional, que trocou o ASL pelo seu backend de TLCS-900 para LLVM e que o MAME emula o Neo Geo Pocket.
Felipe "Juca" Sanches publicou um mapa do Another World e, a partir da análise do bytecode, reativou com um patch o comportamento do besouro da primeira fase, montou de forma especulativa polígonos não utilizados e extraiu um trecho de música removido por um JMP. Também mostrou uma arte de cenário abandonada com uma escadaria que não existe no jogo final.
Índice escrito por agentes Claude que leram o log completo de cada período. Um segundo agente conferiu cada conversa contra as mensagens, e um terceiro conferiu os resumos do ano e dos temas contra as conversas. Pode conter imprecisões: cada item leva às mensagens originais. Para procurar palavras específicas, use a busca.