MAME em câmera lenta

O Slow Motion Mame ou slowmomame é uma condição em que o tempo de emulação do MAME seja atrasado de forma que este fique em câmera lenta, fazendo com que a emulação passe a trabalhar quase que quadro a quadro. A utilidade do slowmomame é voltada para exibição de jogadas mais arriscadas, tomadas de decisão rápidas uma vez que a emulação está em câmera lenta o usuário tem tempo de sobra para reagir a tiros, golpes e sistemas no estilo BEMANI da Konami.

Neste modo e dependendo do sistema, o jogador leva em média cerca de 1 hora para concluir uma única fase, no entanto, o resultado final de todo este esforço é uma jogabilidade perfeita.

Abordaremos agora como atrasar o tempo de emulação do MAME para que essa condição seja atingida, uma delas é editando o código-fonte, a segunda maneira é utilizando uma interface lenta e a última é através de configuração usando a opção -speed.

Alterando o código-fonte

Antes de prosseguir é importante que saiba como compilar o MAME, com um editor de texto abra o arquivo src/emu/sound.cpp e procure pela linha:

#define VERBOSE         (0)

Altere o valor de 0 para 1 e adicione a opção DEBUG=1 às suas opções de compilação ou ao seu arquivo useroptions.mak e inicie a compilação. Geralmente não há a necessidade de se compilar todo o código-fonte do MAME com essas alterações pois como já sabemos o MAME abrange muito mais do que sistemas arcade e consoles. Prefira usar a opção SUBTARGET=arcade para compilar apenas os sistemas arcades ou então defina apenas o driver do sistema que deseja usar com o comando SOURCES=caminho do driver.

Por exemplo, caso queira saber qual a ROM responsável pelo sistema DDR Max - Dance Dance Revolution 6th Mix use o comando:

mame "DDR Max"
ddrmax            DDR Max - Dance Dance Revolution 6th Mix (G*B19 VER. JAA)    (Konami, 2001)

Com o nome da ROM em mãos, ddrmax, podemos descobrir qual o driver responsável por ele usando o comando -listsource / -ls, exemplo:

mame -ls ddrmax
ddrmax           konami/ksys573.cpp

Com o nome do driver em mãos, use-o com a opção SOURCES, como por exemplo, SOURCES=konami/ksys573.cpp ou SOURCES=konami\ksys573.cpp caso esteja usando o Windows.

Abaixo uma sugestão de linha de comando para a compilação do MAME:

make SUBTARGET=arcade DEBUG=1 -j5

Ou usando SOURCES:

make SOURCES=konami/ksys573.cpp DEBUG=1 -j5

Ao final da compilação renomeie o executável e se for o caso, o respectivo arquivo *.syn, para um outro nome qualquer como slowmo por exemplo. Para rodar um sistema enquanto grava, use o comando:

slowmo ddrmax -aviwrite ddrmax.avi

Repare que o terminal será inundado com mensagens de depuração sempre que houver som, isso deixa o MAME tão ocupado que o sistema passa a rodar quadro a quadro na tela ao mesmo tempo que toda a ação, áudio e vídeo é gravado no arquivo ddrmax.avi dentro do diretório snap.

Usando uma interface lenta

Diferente do capítulo anterior, neste caso não há a necessidade de recompilar o MAME, abra o seu mame.ini e altere o caminho do snapshot_directory para um driver lento, como um HDD externo via USB1, um leitor de cartão lento e assim por diante. Devido a lentidão do destino, o MAME ficará ocupado esperando a gravação do arquivo *.avi resultando num gameplay em câmera lenta.

Usando a opção speed

Aqui também não há a necessidade de recompilar o MAME, porém se consegue no máximo uma redução de velocidade em torno de 10 fps e não é possível gravar um arquivo *.avi durante o gameplay sendo necessário que se jogue uma vez e só depois seja possível a gravação do *.avi.

Execute o sistema com o comando:

mame -speed 0.2 -rec dance.inp -sound none ddrmax

Neste estágio o som não é necessário pois estamos gravando apenas os comandos, ao terminar pressione ESQ para encerrar a emulação e gravar o arquivo dance.inp, agora execute o comando abaixo:

mame -pb dance.inp -aviwrite ddrmax.avi ddrmax

O MAME executará todos os comandos gravados em dance.inp ao mesmo tempo em que grava o vídeo. A jogabilidade não chega a ser tão precisa, mas nada que uma pouco de prática não resolva. Nos links abaixo é possível ver uma pequena demonstração de como fica a jogabilidade usando a opção -speed.

Para os mais interessados, recomendo a pesquisa do termo TAS no YouTube.