Contents

Uma entrevista com MacDu, criador de um emulador de PS Vita

Os emuladores tiveram um aumento na popularidade ao longo do tempo, mas também são frequentemente submetidos a inúmeras tentativas maliciosas. Para compreender o raciocínio da criação de um emulador, tivemos a oportunidade de conversar com MacDu, que faz parte da equipe Vita3K.

/images/vita3k-interview.jpg

Os emuladores são há muito tempo um elemento básico no cenário de jogos para PC, permitindo aos usuários jogar jogos de vários sistemas de console desatualizados ou contemporâneos em várias plataformas. Embora a sua prevalência seja bem conhecida, pode ser menos claro como estes programas funcionam e o que motiva o seu desenvolvimento.

É importante notar que a Nintendo desmantelou com sucesso o Yuzu, um software de emulação projetado para o console Switch. No entanto, durante o nosso encontro com MacDu, um desenvolvedor talentoso e membro da equipe Vita3K, obtivemos informações valiosas sobre as motivações por trás do desenvolvimento deste emulador de PlayStation Vita, bem como sobre os formidáveis ​​obstáculos tecnológicos que devem ser superados para atingir seus objetivos.

Como você aprendeu a programar?

Nos meus anos de faculdade, embarquei em minha jornada como programador utilizando Le Site du Zéro, uma plataforma online onde me dediquei exclusivamente ao auto-estudo. Inicialmente, me familiarizei com a linguagem de programação C++ através de um extenso tutorial e posteriormente desenvolvi dois terços dos meus projetos utilizando esta linguagem. Além disso, explorei várias outras linguagens de programação, como Java e outras.

/images/site-du-zero-v3-1200x573.png The Zero Site, que hoje se tornou OpenClassrooms

Qual é a sua experiência no mundo da emulação?

Inicialmente, como atividade de lazer, desenvolvi um emulador de Nintendo Entertainment System (NES) utilizando a linguagem de programação Dart. Embora pudesse executar funções básicas, seu desempenho era bastante lento. A principal motivação por trás deste esforço foi assumir o desafio de criar o próprio emulador, em vez de qualquer propósito utilitário específico. Além disso, explorei brevemente a possibilidade de desenvolver um emulador de PlayStation 1 (PS1); entretanto, meus esforços foram insuficientes e o produto resultante funcionou mal antes de eu ingressar na equipe de desenvolvimento do Vita3K.

O que motivou você a entrar no desenvolvimento de emuladores?

Um aspecto da emulação que considero particularmente atraente é a necessidade de programar todas as facetas do sistema. Isso inclui compreender o funcionamento dos registros, criar uma representação precisa do hardware, implementar a unidade central de processamento (CPU), renderizar gráficos com a unidade de processamento gráfico (GPU) e estabelecer comunicação entre os controles e o emulador. Cada etapa deste processo é altamente intrigante e a satisfação derivada da resolução de problemas e da introdução de melhorias é quase instantânea. Quando um elemento anteriormente defeituoso começa a funcionar corretamente, ou quando são realizadas melhorias visuais, os resultados são tangíveis e imediatamente aparentes.

/images/capture-decran-2024-03-18-115333-1200x675.png MacDu’s Github, onde você pode encontrar seu emulador NES no Dart

Como você programa um emulador?

Emular várias máquinas antigas envolve várias camadas de complexidade, que vão desde a codificação da unidade central de processamento (CPU) e a tradução de suas instruções em um formato interpretável para sistemas contemporâneos, até a reconstrução do comportamento de componentes de hardware específicos, como registros, que armazenam dados essenciais relativos à entrada. dispositivos como botões. Além disso, requer interação com a unidade de processamento gráfico (GPU), onde o emulador deve decifrar os comandos recebidos do jogo e convertê-los em um padrão reconhecível compatível com a plataforma alvo. O processo de obtenção de uma emulação precisa pode ser caracterizado como engenharia reversa, em que se começa com o resultado final e se descobre progressivamente o código-fonte subjacente por meio de análise e reconstrução meticulosas.

Quais são as maiores dificuldades que encontramos no desenvolvimento?

O desempenho de dispositivos de jogos mais antigos, como o PlayStation Vita, normalmente não é prejudicado pela velocidade de processamento. No entanto, um desafio comum é que seus processadores diferem daqueles encontrados em computadores pessoais típicos, com o Vita utilizando um processador ARM enquanto os computadores empregam arquitetura x86-64. Para superar essa discrepância, a programação Just-In-Time (JiT) é empregada, permitindo a tradução dinâmica e a conversão de código ARM em conjuntos de instruções x86-64 em tempo real. Esta abordagem provou ser altamente eficiente para facilitar a compatibilidade entre essas arquiteturas distintas.

Um dos principais desafios associados à emulação de jogos do PlayStation Vita no PC decorre das limitações de sua unidade de processamento gráfico (GPU). Ao contrário das placas gráficas tradicionais usadas em computadores, os consoles de jogos empregam chips gráficos dedicados que aproveitam recursos exclusivos nem sempre encontrados em outros sistemas. Como resultado, replicar com precisão essas funções avançadas pode ser altamente complexo e consumir muitos recursos, muitas vezes exigindo recursos computacionais significativos.

/images/vita3k-1200x675.png Vita3K está disponível em muitas plataformas

Como você gerencia o desenvolvimento multiplataforma?

O emulador Vita3K foi projetado principalmente para sistemas operacionais Windows e Linux, com disparidades mínimas afetando o desenvolvimento da GPU. Porém, quando a versão macOS surgiu, apresentou uma complicação adicional devido à sua incompatibilidade com OpenGL ou Vulkan, as interfaces GPU padrão. Em vez disso, o macOS utiliza Metal, o que requer modificações para garantir uma integração perfeita e, ao mesmo tempo, aproveitar a camada de tradução entre os recursos exclusivos do Vulkan e do Metal.

O Windows e o Linux alocam memória em blocos de 4 kilobytes, enquanto o Mac e o ARM alocam memória em blocos de 16 kilobytes.

Para abordar eficazmente a questão das diferentes plataformas e dos seus respetivos requisitos, é importante considerar vários fatores, como capacidades de hardware, compatibilidade de software e restrições de desempenho. Por exemplo, os dispositivos móveis apresentam desafios únicos devido ao seu poder de processamento e memória limitados em comparação com os sistemas desktop. Como resultado, estratégias alternativas de otimização devem ser empregadas para garantir um desempenho ideal sem comprometer os recursos do sistema. Além disso, a disponibilidade e a eficácia das ferramentas de depuração podem variar significativamente entre diferentes sistemas operacionais, com o Windows e o Linux normalmente oferecendo opções mais robustas do que o Android. Portanto, os desenvolvedores devem adaptar a sua abordagem com base nas características específicas de cada plataforma que desejam suportar.

Não é tentador “melhorar” o console que você está tentando emular?

Emular um sistema de jogo nem sempre pode resultar em desempenho superior ao de seu equivalente nativo devido ao fato de que os jogos geralmente dependem de comportamentos específicos exibidos pelo hardware. Em alguns casos, como quando o SEGA Master System atualizou seu firmware para resolver um problema de processador, um emulador deve replicar o comportamento exato do hardware original para garantir a compatibilidade com todos os jogos.

Melhorias pós-lançamento são frequentemente implementadas para otimizar ainda mais as experiências de jogo. Isso pode incluir atualizações de textura e utilização de pacotes 4K criados pela comunidade. O PlayStation Vita oferece uma variedade de títulos japoneses não localizados, que grupos de fãs entusiasmados trabalham diligentemente para traduzir, permitindo aos jogadores acesso a essas joias escondidas. Isso adiciona uma dimensão emocionante ao mundo do entretenimento de videogame.

/images/xenogears-field-map-1200x600.jpg Xenogears, um jogo tristemente esquecido

Qual é o seu objetivo ao desenvolver um emulador?

Na verdade, existe um duplo desafio no domínio da programação de videojogos-não só é preciso enfrentar as complexidades da codificação, mas também a preservação destes artefactos digitais para as gerações futuras. Muitos títulos excepcionais, infelizmente, perdem sua funcionalidade à medida que a tecnologia avança, tornando-os impossíveis de jogar sem a ajuda de emuladores. Um excelente exemplo é o meu favorito, Xenogears, que agora só pode ser experimentado através da emulação de um console PlayStation One.

Vimos a posição da Nintendo em relação à emulação… É arriscado desenvolver um emulador?

A legalidade da emulação de consoles de videogame pode variar dependendo de fatores como jurisdição e circunstâncias específicas. Em França, por exemplo, o software emulador está abrangido pela protecção das leis de propriedade intelectual relativas à engenharia inversa (L 112-6-1). No entanto, a resposta a um potencial aviso legal ou outro assunto relacionado permanece incerta devido à complexidade da questão.

Embora existam vários cenários a considerar, no que diz respeito à PS Vita, a Sony parece ter renunciado em grande parte ao seu apoio, pelo que qualquer reacção a este efeito pareceria incongruente. No entanto, em termos de tecnologia de emulador perpetuamente conectado, parece apresentar um cenário um tanto divergente.

/images/totk-qcom-android-yuzu-1200x540.jpg The Legend of Zelda: Tears of the Kingdom no Android//Fonte: Yuzu

Você teria consciência de desenvolver um emulador para uma máquina que ainda não foi abandonada?

Breath of the Wild para Nintendo Switch, pode-se argumentar que o uso de um emulador afetou negativamente os ganhos do jogo e, em última análise, reduziu a compensação recebida por seus criadores. Como indivíduo, estou inclinado a abster-me de me envolver em atividades que possam prejudicar o sucesso financeiro dos videogames e de seus respectivos desenvolvedores.

A preservação de videogames é um tema de grande importância para mim. É crucial que os emuladores sejam utilizados somente depois que os jogos em questão atingirem o fim de sua vida útil natural.

Comunidades em torno de emuladores, especialmente aquelas que exigem tudo e qualquer coisa, podem ser difíceis de gerenciar. Como você experimenta isso?

Quanto ao desenvolvimento de emuladores como um interesse pessoal perseguido nas horas de lazer, mantenho uma perspectiva equânime em relação à crítica. Aqueles cujas opiniões são conflitantes ou hostis, escolho desconsiderar. No entanto, dado que o meu nível de indiferença não suscita reações semelhantes nos outros, pode-se compreender por que alguns indivíduos experimentam fortes emoções em relação a este assunto. Envolvendo-se em tais esforços sem compensação monetária e dentro de uma estrutura de código aberto, não é surpreendente que o feedback que abrange várias queixas, particularmente relativas à plataforma Android, possa ser um desafio.

Por que você escolheu Vita3K?

Como um jogador ávido, mergulhei no trabalho de emulação apenas para satisfazer minha paixão pelo jogo “Tales of Hearts R”, que sempre travava no lançamento. Ao identificar e resolver o problema, enviei o código corrigido e continuei com meus esforços, tornando-me eventualmente o desenvolvedor principal do emulador. Embora o console em si, o PlayStation Vita, tenha sido lançado há mais de uma década, seu apelo duradouro tornou-o uma plataforma cativante para codificar. Além disso, fazer parte de um projeto de código aberto nos dá autonomia para resolver problemas em primeira mão, sem restrições externas.

Qual é o seu próximo grande desafio no desenvolvimento?

Parece que você forneceu um texto em francês que precisa ser traduzido para o inglês. Aqui está a minha tradução: “Acho um tanto desconcertante que a maioria dos problemas pendentes do Vita3K digam respeito aos seus gráficos, uma área que não me interessa particularmente. Apesar disso, estou a explorar opções alternativas, embora nenhum progresso tenha sido feito até agora. Além disso, prefiro não desenvolver para consoles de jogos que continuam em uso ativo.

*️⃣ Link da fonte: