Emulando o Apple II no MAME e Retroarch

Tl;dr:

  1. Baixe as BIOS necessárias e coloque numa pasta junto com seus jogos
  2. Para rodar um game de Apple II no MAME, no terminal digite mame apple2p -rp "[pasta com os jogos e BIOS]" -flop1 "[caminho até o arquivo do jogo]"
  3. Para adicionar o jogo a uma playlist do Retroarch, coloque o comando (sem "mame" na frente) dentro de um arquivo .cmd na pasta do jogo e adicione a uma playlist manualmente, associando o Mame como núcleo padrão.

Tl:

Ontem simplesmente bateu uma vontade repentina organizar minha ludoteca de ROMs e games antigos, principalmente no Retroarch. No meio de minha jornada, acabei me fazendo a pergunta: "será que não consigo adicionar meus games de Apple II no Retroarch?"

Àqueles que precisam de introdução, o Retroarch é um software que agrega vários emuladores de consoles de videogame e computadores antigos, chamados dentro do programa de cores. Além da conveniência de ter toda a sua ludoteca num só lugar, o programa adiciona algumas funções bem úteis que nem sempre estão disponíveis em emuladores standalone, como shaders avançados, netplay, run-ahead, retroachievements e outras coisas. Que funcionalidades estarão disponíveis para cada emulador dependerá da integração dele com o programa, mas só os shaders, que funcionam com qualquer emulador que rode através do Retroarch, costumam ser motivo o suficiente para eu preferi-lo.

O Retroarch não tem um core para emulação de Apple II... Pelo menos não exclusivo. Mas um dos emuladores disponíveis no programa é o venerável MAME, muito conhecido para emulação de arcades. Entretanto, desde 2015 o MAME absorveu outro projeto, o MESS, que se focava na emulação de vários consoles e computadores antigos. Então, tecnicamente, é possível utilizar o MAME para se emular mais do que arcades - incluindo aí o Apple II.

Acontece que esse processo não é exatamente simples. Eu diria que as instruções oficiais para se emular Apple II através do MAME não são muito intuitivas, e a integração do MAME no Retroarch é subótima na melhor das hipóteses para emular arcades, deixando ainda mais a desejar quando o assunto são outros tipos de sistema.

Como forma de documentar o trabalheira que tive e tentar compartilhar esse conhecimento para quem estiver interessado, resolvi fazer este pequeno guia. Talvez só quem acabe usando ele seja eu mesmo no futuro, mas vai que ele seja útil pra mais alguém?

Neste guia darei instruções para:

  1. Onde baixar BIOS e jogos do Apple II
    1. BIOS (obrigatórias)
    2. Jogos (opcionais?)
  2. Como emular jogos de Apple II no MAME
    1. Preparando sua ludoteca
    2. Linha de comando
    3. Acessando o menu do MAME
      1. Trocando discos
  3. Como adicionar seus jogos de Apple II ao Retroarch

Onde baixar BIOS e jogos do Apple II

Bios (obrigatórias)

Para emular o Apple II você precisa de algumas BIOS do sistema em sua pasta de ROMs: A2DISKII.ZIP, A2DISKIING.ZIP, APPLE2.ZIP, APPLE2P.ZIP, APPLE2E.ZIP, D2FDC.ZIP e VOTRAX.ZIP. Encontrar esses arquivos na internet é relativamente fácil, mas o MAME é meio estrito e se o checksum não for exatamente o que ele espera as coisas podem não funcionar.

Neste link do Archive.org há uma coleção bem atualizada com as BIOS de vários dispositivos, incluindo o Apple II.

Jogos (opcionais?)

Sobre games, o Archive.org mais uma vez vem ao resgate. Há várias coleções de software hospedadas lá. Recomendo especialmente a TOSEC: Apple II (2012-04-23), com seus abrangentes mais de 4800 imagens de disquetes com software, utilitários e, claro, jogos.

Como emular jogos de Apple II no MAME

Preparando sua ludoteca

Coloque as BIOS necessárias na mesma pasta em que você vai colocar seus jogos.

Você pode colocar as imagens dos disquetes dos jogos direto nessa pasta. Os programas do Apple II vêm em vários formatos: 2MG, A2R, AIF, BIN, D13, DSK, EDD, FDI, NBI, PO, WAV e WOZ são os mais comuns. Dentre eles, recomendo usar apenas os formatos DSK e WOZ, por questões de compatibilidade, disponibilidade e usabilidade.

Uma recomendação importante para jogos que vieram em múltiplos disquetes: crie uma pasta específica para eles, com todos os disquetes/lados de disquetes dentro. Por quê? Bem, jogos muito grandes que vieram em discos múltiplos requerem que você troque o disquete em determinados momentos. Deixando todos os discos de um jogo numa pasta específica vai te poupar dores de cabeça no futuro quando chegar esse momento e tiver que trocar o disquete pela interface do MAME, vai por mim.

Linha de comando

Com as BIOS no lugar e os jogos organizados, chegou a hora de jogá-los.

Assumindo que você usa Linux, num terminal basta digitar:

mame apple2p -rp "[pasta com os jogos e BIOS]" -flop1 "[caminho até o arquivo do jogo]"

Destrinchando o comando, temos:

  • mame - invoca o programa MAME.
  • apple2p - diz ao MAME, "eu quero que você emule um Apple II+!". Em minha experiência, o Apple II+ é o modelo mais compatível com a variada gama de jogos e softwares lançados para essa plataforma. A não ser que o programa que você queira exija outro modelo específico (como o Apple 2e ou IIgs), use o driver apple2p.
  • -rp "[pasta com os jogos e BIOS]" - -rp é abreviação de -rompath. É um argumento que diz ao MAME, "é essa a pasta em que estão as ROMs e BIOS que você precisa"
  • -flop1 "[caminho até o arquivo do jogo]" - Já esse argumento diz ao MAME, "use esse arquivo aqui como o disquete no drive 1 que o Apple II vai usar". É, basicamente, o caminho até o jogo ou software que você quer rodar. No caso de jogos ou programas com múltiplos discos, normalmente é o primeiro, ou aquele intitulado "boot".

No exemplo abaixo, eu usei o comando

mame applep -rp "./" -flop1 "./Akalabeth - World of Doom (1980)(California Pacific Computer).zip"

para rodar o jogo Akalabeth. Note que o terminal já está aberto na minha pasta de jogos, então não tive que digitar todo o caminho até a pasta ou arquivo do jogo - ./ significa "a partir daqui" em terminal-ês. Perceba também que o jogo está zipado. Só recomendo fazer isso se o game usa apenas um disquete e você não precisa gravar nele.

Usando o comando mame applep -rp "./" -flop1 "./Akalabeth - World of Doom (1980)(California Pacific Computer).zip" para rodar Akalabeth, do Apple II, no MAME.
Usando o comando mame applep -rp "./" -flop1 "./Akalabeth - World of Doom (1980)(California Pacific Computer).zip" para rodar o jogo Akalabeth, do Apple II, através do MAME.

 

Akalabeth, do Apple II, rodando através do MAME.
Akalabeth, do Apple II, rodando através do MAME.

 

Como dito anteriormente, alguns jogos podem exigir um modelo específico do Apple II para poder rodar. Por exemplo, Prince of Persia exigia um Apple IIe. Nesse caso, troque o apple2p no comando por apple2e. Por exemplo, para Prince of Persia, usamos:

mame apple2e -rp "./" -flop1 "./Prince of Persia (1989)(Brøderbund)(IIE)(US).zip"

Comando para rodar Prince of Persia, do Apple II, através do MAME: mame apple2e -rp "./" -flop1 "./Prince of Persia (1989)(Brøderbund)(IIE)(US).zip"
Perceba que nesse exemplo eu uso apple2e em vez de apple2p

 

Prince of Persia, do Apple II, rodando através do MAME.
Prince of Persia em toda  a sua glória 8 bits.

 

Acessando o menu do MAME

O Apple II era um computador e, como tal, assumia que você estava usando um teclado. Para não haver conflitos entre os atalhos do MAME e os comandos de teclado do Apple II, ao iniciar um game do sistema o MAME desativará sua UI. Isso pode causar uma certa estranheza, parecendo que é impossível acessar as funções do emulador - nem a tecla ESC, para sair do programa, parece funcionar!

Mas reativar a UI do MAME é simples: basta apertar Scr Lock. Com a UI reativada, apertando TAB você tem acesso ao menu do programa, onde pode configurar controles, opções de vídeo e outras parafernálias. Apertando Scr Lock de novo você desativa a UI.

Se você está num notebook sem o botão Scr Lock, tente usar o atalho Fn + S.

UI do MAME.
UI do MAME

 

Trocando discos

Um elemento crucial da UI para alguns games é a opção File Manager. É nela que você pode mudar o disquete que está no Driver 1, ou adicionar algo em outros drivers.

Usando a UI do MAME para trocar o disquete do jogo.
Usando a UI do MAME para trocar o disquete do jogo.

 

Ao inserir um novo disco, o MAME vai perguntar se você quer que ele seja somente leitura, gravável, ou criar uma cópia para um novo disco. Cuidado! Jogos diferentes salvavam seu progresso de formas diferentes! Por exemplo, Ultima IV salvava seu progresso direto no disco intitulado "Britannia", então espera que, ao inserí-lo, ele seja gravável. Outros games, como Bard's Tale, presumiam que você copiaria seu progresso para um disco em branco. Leia o manual dos jogos para saber como ele salvava o progresso!

Alguns jogos esperam que o disquete inserido esteja no modo de leitura e escrita para poder salvar seu progresso.
Alguns jogos esperam que o disquete inserido esteja no modo de leitura e escrita para poder salvar seu progresso.

 

Como adicionar seus jogos de Apple II ao Retroarch

Agora que você sabe como usar o MAME para jogar games de Apple II, vamos tentar responder a pergunta que me fiz originalmente: "será que não consigo adicionar meus games de Apple II no Retroarch?" A resposta é, felizmente, sim.

Na pasta em que você colocou os games, crie um arquivo [Nome do Jogo].cmd. Abra o arquivo e coloque o comando que usamos para rodar os games, suprimindo apenas a parte mame. Por exemplo, no arquivo Crisis Mountain (1982)(Synergistic Software).cmd, eu coloquei:

apple2p -rp "./" -flop1 "./Crisis Mountain (1982)(Synergistic Software).zip"

Na pasta em que estão os jogos do Apple II, está presente também um arquivo .cmd com o mesmo nome do jogo. Dentro do arquivo .cmd, o comando usando para se rodar jogos de Apple II através do MAME, suprimindo apenas o início, "MAME".
Na pasta em que estão os jogos do Apple II, está presente também um arquivo .cmd com o mesmo nome do jogo. Dentro do arquivo .cmd, o comando usando para se rodar jogos de Apple II através do MAME, suprimindo apenas o início, "MAME".

 

Agora no Retroarch basta rodar esse arquivo .cmd e escolher o MAME como seu núcleo.

Selecionando o arquivo .cmd e o núcleo MAME no Retroarch.
Selecionando o arquivo .cmd e o núcleo MAME no Retroarch.

 

Uma observação: assim como o MAME, o Retroarch desativa a UI quando detecta que o sistema que está emulando esperava o uso de um teclado. Similarmente, você pode reativar a UI usando o mesmo atalho, Scr Lock. Eu recomendo você mudar o atalho do Retroarch para outro botão (eu uso asterisco), para não haver conflitos entre a UI do MAME e do Retroarch.

Para inserir os jogos numa playlist de fácil acesso, basta você ir em "Importar Conteúdo > Análise Manual". O processo é bem autoexplicativo, apenas lembre-se de na opção "Extensão de arquivo" colocar "cmd".

Configurando o Retroarch para analisar manualmente um diretório, escanenando os arquivos com extensão .cmd, inserindo-os numa playlist chamada "Apple II" e associando o MAME como núcleo.
Configurando o Retroarch para analisar manualmente um diretório, escanenando os arquivos com extensão .cmd, inserindo-os numa playlist chamada "Apple II" e associando o MAME como núcleo.

 

O resultado final: uma playlist intitulada "Apple II" com todos os seus jogos, prontinhos para rodar direto do Retroarch.
O resultado final: uma playlist intitulada "Apple II" com todos os seus jogos, prontinhos para rodar direto do Retroarch.

 

Depois de tudo isso, não se esqueça de colocar um shader maneiro. Eu recomendo o pacote de shaders do Sonkun.

 

Prince of Persia com um shader CRT
Sério, pra mim um bom shader faz uma diferença enorme.