Frodo nasceu em 1994 com um propósito bem prático: ouvir músicas do Commodore 64 enquanto se trabalhava em um Amiga 4000. Christian Bauer montou uma placa Zorro II com um chip SID real para gerar o áudio; o que faltava era convencer as rotinas musicais de que havia um processador 6510 à disposição — tarefa cumprida pelo emulador Frodo.

Dos primeiros passos no Amiga à emulação de som

As versões iniciais para Amiga (até a série 2.x) não tinham emulação de SID embutida e dependiam do chip físico ou de bibliotecas externas, como o A64 ou o PlaySID. Frodo só ganhou emulação interna de som a partir da versão 3.0 para BeOS. Um detalhe documentado posteriormente por Bauer é que a primeira versão pública identificada nos seus registros foi a V0.4, lançada em 5 de janeiro de 1995.

Desafios gráficos: raster, VIC-II e o 1541

Enquanto a reprodução de áudio era já um desafio técnico, a emulação do vídeo do C64 exigiu mais investigação. O chip de vídeo VIC-II podia ter seus registradores alterados enquanto estava desenhando a tela — técnica usada por demos e jogos para truques visuais. Mudar um registrador na linha errada quebrava o efeito mesmo que o código da CPU estivesse correto. Para reproduzir esses comportamentos foi preciso entender o processamento do hardware original e, em alguns casos, adotar uma emulação “cycle-by-cycle” (ciclo a ciclo) para obter compatibilidade exata.

Outro componente que complicava a vida do emulador era o drive Commodore 1541, que trazia seu próprio processador. Jogos que dependiam de fastloaders específicos podiam falhar se um atalho de emulação — que funcionava com cargas convencionais — não reproduzisse exatamente o comportamento do 1541.

Portabilidade e linguagens

O código original do Frodo no Amiga era em 68k assembly, mas partes ficaram grandes demais para manter só em assembly, especialmente a manipulação do sistema de arquivos virtual do 1541. Bauer passou a usar C com o compilador DICE de Matt Dillon para essas partes, e as séries 3.x/4.x evoluíram para C++ — uma mudança que tornou possíveis ports para outras plataformas.

Um BeBox em exposição
Um BeBox na VCFE em 2014, o tipo de máquina que Bauer adotou como estação de trabalho (não é o computador dele). Foto: Wolfgang Stief (CC0), via Retro Replay

Ao longo dos anos surgiram ports para BeOS, Mac, Win32, RISC OS e, na década de 2000, para dispositivos menores e consoles: EPOC (2000), Sharp Zaurus e PocketPC (2002), GamePark32 e Dreamcast (2003). Em 4.2 o projeto migrou para a GPL, permitindo que outros desenvolvedores adaptassem o código.

Retorno ao banco de testes em 2024

Em 2024, o demo Edge of Disgrace revelou uma limitação de Frodo relacionada aos filtros SID configuráveis: trocá-los rapidamente gerava cliques audíveis. Bauer mediu chips SID reais com equipamento superior e reimplementou o trecho para reproduzir filtros ativos simultaneamente — uma tentativa de aproximar o som do original sem reproduzir todos os detalhes de tempo do hardware. As versões 4.3, 4.4 e 4.5 (outubro a dezembro de 2024) também trouxeram mudanças práticas, como migração para SDL2/GTK3, emulação de cassete e suporte a mais tipos de cartuchos. Em março de 2024 o projeto foi usado em parte para os jogos C64 presentes na coletânea Llamasoft: The Jeff Minter Story.

O que está disponível hoje

Frodo segue disponível com opções que priorizam compatibilidade ou velocidade (a versão “SC” faz emulação ciclo a ciclo mais precisa). Bauer lembra com carinho dos jogos que mais jogou no C64 — Elite, Archon, Paradroid e Spindizzy — e mantém documentação técnica detalhada sobre o comportamento do VIC-II e outras partes do sistema.

Tela de título de Elite no Commodore 64
Tela de título de Elite no C64, o jogo que Bauer lembra de ter jogado mais. Imagem: Retro Replay

Para quem quiser experimentar, a página oficial do projeto continua sendo o ponto de partida, com versões que fazem tradeoffs diferentes entre compatibilidade exata e desempenho.

Fonte: Retro Replay

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *